Как переместить клиента из макетов пользовательского интерфейса в набор реальных требований?

17

Скажем, у вас есть макет из 25 экранов визуальных состояний вашего приложения. Ожидается, что этого будет достаточно, чтобы мы были уверены, что сможем разработать и передать его первоначальному заинтересованному лицу или клиенту в виде готового приложения, и они будут удовлетворены. Естественно, в конечном итоге вы снова и снова будете задавать заинтересованным сторонам много вопросов, которые использовались для создания пользовательского интерфейса, что расточительно.

Тем не менее, я много раз обнаруживал, что этого очень мало, в процессе разработки приложения требования размываются из-за того, что мы копируем интерфейс, и в итоге клиент не так счастлив, как им показалось на первый взгляд. когда мы попросили их всю информацию для создания пользовательского интерфейса.

Я просто не знаю, о чем еще просить, я пытался быть конкретным, спрашивать о требованиях и понимании общей цели, но я не знаю, что мне следует просить. Если я только начну сейчас, много времени будет потрачено впустую, повторно хэшируя всю информацию, которая приводит к пользовательскому интерфейсу, и на этом этапе многие важные причины, по которым изначально клиент был потерян.

Как я могу заставить людей понять, что мы не можем заблокировать требования, основанные на макетах пользовательского интерфейса, попросив что-то действенное, что они могут создать для меня?

С чего бы вы в идеале начали, чтобы правильно выполнить задачу разработки приложения для конечных пользователей?

MetaGuru
источник
Как вы спрашиваете о требованиях? Вы просто идете к клиенту / пользователю и говорите: «Могу ли я иметь требования?» или вы используете какой-либо из различных методов для выявления, сбора, проверки и подтверждения требований?
Томас Оуэнс
2
Это не легко иметь дело с не разработчиками для этого. Экраны просто не описывают приложение. Мой нынешний работодатель этого не понимает. Мои усилия, как правило, направлены на то, чтобы пройти через каждый экран и задать много вопросов о поведении каждого элемента и «что, если». Таким образом, у вас есть надежда изолировать функции и иметь возможность создавать то, что идет под глянец.
Рог
2
Я думаю, что это лучше, чем спецификация с 25 вкладками, которая слишком распространена.
Морган Херлокер
1
Из вашего вопроса неясно, является ли это просто тем, что дал вам ваш клиент, ИЛИ если это было то, что кто-то еще в вашей команде произвел в результате попытки захвата требований. Если это последнее, то у вас есть проблема в вашей организации, которая может быть достаточно глубокой. Если это первое, то вам нужно будет практиковать некоторые методы сбора требований, как рекомендуют другие.
Анджело
1
@ Райан, в таком случае, я надеюсь, что парень, отвечающий за требования, сможет ответить на все вопросы, которые у тебя будут для него! Может быть, он просто ожидает, что вы будете неофициально согласовывать с ним все требования в интерактивном режиме? Это оптимистичный сценарий.
Анджело

Ответы:

19

Некоторые другие вещи, которые вам могут понадобиться:

  • Примеры использования или описания рабочих процессов: только потому, что вы знаете, как выглядит экран, вы знаете, как обрабатывается неверный ввод? Знаете ли вы, как переходить между экранами во всех случаях? Вы также можете включить обработку ошибок здесь.

  • Описание системы высокого уровня: что-то объясняет, для чего вся система, для которой предназначены эти 25 экранов, и что они делают.

  • Модель данных: можно ли вывести модель данных из этих экранов? Есть ли модель данных, которую нужно использовать, или вы можете самостоятельно разработать свою модель, чтобы выполнить работу?

  • Технические требования: являются ли конкретные технологии, которые должны использоваться, из-за лицензирования или по причинам интеграции?

  • Требования к производительности: если есть экран поиска, есть ли ожидание того, что можно искать, и насколько быстрым должен быть ответ? Как насчет ответов на другие виды действий? Могут ли некоторые из них быть асинхронными (пользователь отправляет задание и возвращается позже)?

  • Требования безопасности: хранит ли приложение потенциально конфиденциальные / личные данные и, если да, то какие данные и что необходимо сделать, чтобы обеспечить их безопасность? Нужно ли вам соблюдать какой-либо уровень соответствия (например, соответствие PCI для осуществления платежей по кредитным картам)?

Кроме того, есть ли какие-либо специальные знания в области бизнеса, которые могут вам понадобиться, чтобы помочь вам? В некоторых отраслях, таких как страхование, банковское дело, медицинские карты и т. Д., Есть все виды сложной бизнес-логики. Такие проекты не должны быть предприняты без помощи бизнес-аналитика, который знает эту область. Но если это просто сайт с корзиной покупок / информацией для общих виджетов, то вам может не понадобиться такой член команды.

FrustratedWithFormsDesigner
источник
1
Я не знаю, делали ли вы это нарочно, но этот список даже в порядке важности, с примерами использования и высокоуровневым описанием системы (они хотя бы пометили экраны макета?), Которые являются безусловно самыми важными вещами. Я не знаю, имеет ли смысл требования безопасности о том, чтобы спросить об этом. Мне кажется, что вы, как разработчик, должны лучше понимать, какая безопасность необходима для поддержки их вариантов использования, поэтому вам следует определиться с требованиями безопасности из вариантов использования и затем сообщить об этом клиенту.
Джоккинг
10

Как заставить людей понять, что имитации пользовательского интерфейса недостаточно для создания работающей программы:

Я бы справился с этим по аналогии. Поскольку я немного болван, я иду по этому пути.

«Представьте, что я ничего не знаю об автомобилях. Вы передаете мне несколько фотографий Ferrari. Пара снаружи и одна изнутри автомобиля (взяты с места водителя, чтобы я мог видеть элементы управления для машины). Теперь вы спрашиваете меня чтобы построить вам Ferrari. Я возвращаюсь с вещью, которая похожа на картинки и имеет все элементы управления. К сожалению, эти элементы управления не подключены ни к чему, потому что (так как я ничего не знаю об автомобилях), я не знаю, что это контроль должен делать. Я даже не могу сделать предположение, потому что я даже не знаю, что машины должны делать. Итак, у нас есть такой разговор:

"Так что же делает Ferrari?" «Это позволяет мне быстро перемещаться из одной точки в другую». "Хорошо. Так что же делает этот круг?" «О, это рулевое колесо. Поворачивая его, вы можете изменить направление вращения колес снаружи автомобиля. Это изменит направление движения автомобиля». "Хорошо, а как насчет этой педали?" «Это педаль газа. Она заставляет двигатель работать быстрее, а машина - быстрее». ... несколько минут спустя ... "Хорошо, так какой тип двигателя ему нужен? Я провел некоторые исследования и нашел двигатели для тележек для гольфа и некоторые для спортивных автомобилей. Какой мне использовать?" ... и т.д. ..."

Тогда вы можете объяснить аналогию. Передача разработчикам макетов экранов только говорит им, как это выглядит, а не как. Разработчики должны знать, какую проблему решает программа или как она будет использоваться (например, знание того, что делает автомобиль, облегчает проектирование автомобиля и дает обоснованные предположения о том, что нужно делать). Они должны знать, какие вещи они будут использовать (например, двигатель гольф-кары против двигателя спортивного автомобиля) и какие существуют другие требования, не связанные с пользовательским интерфейсом (автомобиль должен двигаться быстро).

Вещи, которые я бы попросил:

Общее / Описание проблемы высокого уровня

Примеры использования / истории пользователей

Требования к производительности

Требуемые технологии / платформа (Windows, Linux, Web)

Все, что FrustratedWithForms имеет в своем ответе

Becuzz
источник
1
+1 за отличную аналогию, хотя я не уверен, что это действительно лучший способ общения с клиентом. Я расскажу это своим нетехническим друзьям, чтобы помочь объяснить, что я делаю, но для клиента это может быть немного покровительственно.
Джоккинг
@jhocking Я полностью согласен, что использование этой аналогии не способ общения с клиентом. Я сделал предположение, что издевательства пришли от кого-то в вашей компании, который уже говорил с клиентом. Если вам нужно сообщить об этом клиенту, просто объясните, что макеты показывают вам, как он выглядит, но очень мало говорят о том, что он делает (любая информация, которую вы получаете из макета, в лучшем случае является предположением). Они должны рассказать вам больше о том, что вы делаете. Вам просто нужно найти хороший способ спросить и сообщить об этом.
Becuzz
5

Что-то с эффектом 80% усилий по разработке направлено на 20% случаев ограниченного использования. Снимки экрана не расскажут вам о случаях использования, поэтому вы будете в неведении в течение 80% вашего активного развития.

Хорошо, что вы пытаетесь понять больше и пытаетесь сообщить, насколько важно для клиента быть более вовлеченным в требования проекта, однако, если они этого не делают, они настраивают проект на неудачу, и это не твоя вина

Большинство программных проектов терпят неудачу, потому что клиент недостаточно вовлечен в процесс разработки программного обеспечения. Это не новая проблема, и, конечно же, не является загадкой, почему программные проекты терпят неудачу, но это постоянно происходит в отрасли снова и снова из-за подобных ситуаций.

Вы не можете просто бросить струйку информации через стену и рассчитывать на то, чтобы вернуть все свои надежды и мечты в виде программного пакета. Разработка программного обеспечения просто не работает таким образом. Независимо от того, являетесь ли вы магазином Agile или Waterfall, для успеха или провала проекта необходимо четкое руководство клиента.

maple_shaft
источник
2
«Вы не можете просто бросить струйку информации через стену и рассчитывать на то, чтобы вернуть все свои надежды и мечты в виде программного пакета». Мне нравится это предложение, и я так его краду.
HLGEM
@HLGEM, возьми, это твое!
maple_shaft
4

Одна вещь, которую люди, кажется, забывают спросить: для чего будут использоваться данные после их ввода? Вам нужны отчеты? Вам нужно сгенерировать упаковочный лист и отправить на склад для отправки и т. Д. Если данные используются для принятия управленческого решения и необходимы отчеты, это может изменить структуру базы данных. Это также может значительно увеличить время разработки в зависимости от сложности отчетов.

Вы также должны убедиться, что есть путь для каждого возможного решения. Так что, если что-то требует одобрения руководства - что вы делаете, если не одобряете, а также что вы делаете, если это одобрено. Если это не будет одобрено или не одобрено в течение X времени, то что с ним будет? Если они выбирают товар, а его нет в наличии, что происходит с заказом? Такие вопросы.

Вам также необходимо знать, существуют ли конкретные ограничения на то, какие данные следует вводить в каждое поле. Есть ли обязательные значения. Где ты идешь, чтобы получить их? Как они будут обновляться? Вы должны знать, как обрабатывать ошибки. Вы должны знать, должен ли база данных иметь аудит или вам нужно иметь возможность воссоздать данные с исторической точки зрения (обратно к этим надоедливым отчетам).

Еще одна вещь, которую я вижу, это то, что приложения могут быть разработаны просто до выпуска, без учета того, как будут обрабатываться данные впоследствии. Вам нужна страница администратора, чтобы убедиться, что они могут обновить свои списки необходимых значений? Вам нужно отправлять данные туда и обратно в другие системы. Как вы собираетесь получить исходные данные в базу данных?

HLGEM
источник
3

Лично я бы попросил полдня на целый день встретиться с клиентом, чтобы разобраться в дизайне его интерфейса и его целях и убедиться, что все выровнено.

Уайетт Барнетт
источник
2

Начните просто. Пусть они поймут, что с информацией, которую вы получили, ни один из этих экранов ничего не сделает . Нет подробностей о случаях использования, плохом поведении ввода и так далее. Это просто не сработает. Объяснить тупое обобщение легче, чем объяснить детали, потому что суть не может быть потеряна. Попытка дать им более сложное обоснование того, почему макетов экрана недостаточно, дает им возможность приглушить ваши определения вместо того, чтобы признать проблему. Попросите их представить, что бэкэнд-разработчик не говорит по-английски (или на любом другом языке, на котором представлены экраны). Затем спросите, насколько отличается эта ситуация от разработчика, который вообще ничего не знаетих бизнес-процессов. Затем создайте более реалистичный пример для себя, у которого есть некоторые знания, но они оправданы, полагая, что для них неуместно решать их бизнес-логику.

Том W
источник
2

Люди, которые не разрабатывали программное обеспечение, не знают, что нужно знать разработчикам программного обеспечения. Нельзя ожидать, что они будут самостоятельно разрабатывать спецификации требований и варианты использования. Вам необходимо применять методы выявления требований , чтобы получить информацию, которую вам нужно знать. Работайте с клиентом (и, надеюсь, с выборкой пользователей из разных ролей), чтобы определить, что им нужно или что они хотят. Обычными методами для этого являются интервью и / или наблюдение за пользователями, выявление вариантов использования и пользовательских историй, а также создание прототипов.

В этом случае я настоятельно рекомендую применять методы итеративной и инкрементальной разработки, поскольку у вас есть смутные, неполные или плохо понятые требования. Посмотрите на различные гибкие методологии и спиральную модель для планирования жизненного цикла.

Начните с получения бизнес-цели, стимулирующей разработку этого программного обеспечения. Интервью клиента и пользователей, и, если вы можете, смотреть их на работе. Попробуйте определить, какую проблему они пытаются решить. Посмотрите, какие инструменты они используют в настоящее время и как они их используют, чтобы вы могли улучшить свои нынешние методы работы. Используйте эту возможность для изучения домена и его языка - общаться станет намного легче, если разработчики программного обеспечения и все клиенты / пользователи будут говорить на одном языке (и не ожидать, что клиент / пользователи будут говорить в терминах программного обеспечения).

Как только вы поймете, каковы цели, вы можете приступить к работе с имеющимися у вас макетами дизайна пользовательского интерфейса и «реинжинирингом» сценариев использования и пользовательских историй из них на основе того, как различные экраны сочетаются друг с другом. Формат пользовательской истории, вероятно, будет хорошо работать с нетехнической аудиторией. Формат As a <user type>, I want to <action> so that <reason>работает с точки зрения привлечения разработчиков и клиентов / пользователей, говорящих на одном языке. Как только вы сможете начать работу с пользовательскими историями, я приму опытный подход к разработке.

Я думаю, что я бы подошел к этому с использованием прототипов. Вы можете подойти к этому как с точки зрения эволюционного прототипирования, так и с точки зрения одноразового прототипирования , но я бы сначала рассмотрел подход эволюционного прототипирования. Начните с пользовательских историй, которые вам наиболее удобны и проверены, и начните их реализовывать. По мере их реализации получайте отзывы от клиентов и разрабатывайте новые пользовательские истории, используйте варианты и устраняйте недоразумения.

Кроме того, не думайте об этом как о «реализации пользовательского интерфейса с функциями под ним». Вместо этого думайте об этом как о тонких вертикальных ломтиках. Не реализуйте весь пользовательский интерфейс сразу, а затем беспокойтесь о функциях. Вместо этого используйте макеты пользовательского интерфейса для определения функций и других требований, а затем реализуйте вертикальный фрагмент от пользовательского интерфейса до бизнес-логики и хранилища данных. Повторите это для каждого вертикального среза. Вы также можете свободно вносить предложения по улучшению пользовательского интерфейса на основе требований и принципов юзабилити.

Я бы порекомендовал прочитать две книги Карла Вигерса - Требования к программному обеспечению и Подробнее о требованиях к программному обеспечению . Я думаю, что они помогут вам с разработкой требований и передовым опытом в этой области.

Томас Оуэнс
источник
4
Просто помните, что если вы создаете прототип, никогда не заставляете пользовательский интерфейс выглядеть отточенным и законченным, они будут думать, что вы закончили с кодированием, если экран выглядит законченным.
HLGEM
@HLGEM Очень верно, очень верно. На самом деле, я почти уверен, что давал этот совет на этом сайте раньше.
Томас Оуэнс
1

Ну, это смущающе очевидная начальная ссылка, но Википедия может быть местом для вас и пользователей, чтобы начать. Факт, что есть запись об этом материале, мог бы помочь убедить их, что это реальная проблема, а не то, что вы - боль.

Точнее говоря, вы просто озадачены тем, что делает приложение, даже после просмотра макетов? Если это так, признайте это и попытайтесь объяснить, что вы понятия не имеете, какие данные должна отображать каждая форма или откуда она поступила, с других экранов или внешних данных?

Если у вас есть какая-то идея, попробуйте найти примеры вещей, которые вы не знаете, как это сделать («Будет ли список шаблонов для выбора одним глобальным списком или какой-либо из них пользователем, или что-то еще? не Пользователем, я должен позволять двум людям редактировать это сразу? Что должен показать пользовательский интерфейс, если кто-то еще редактирует это? Есть ли экран для этого? Как только кто-то использовал шаблон для любых шаблонов, а затем шаблон редактируется должно ли это изменение быть распространено на то, что они сделали с шаблоном? ").

Дайте понять, что при вашем нынешнем уровне знаний вам нужно будет отвечать на вопросы примерно каждые 90 секунд в течение оставшейся части цикла разработки, и большую часть времени вы не сможете продолжать работать, пока не получите ответ. Цель должна состоять в том, чтобы прояснить, почему какой-то процесс облегчит все это. Также отметим, что QA будет нужна та же информация, что и вам, поэтому вам будет проще записать все, чтобы она была доступна всем, и никто ничего не забудет.

Может быть полезно упомянуть, что часть написанного вами кода влияет на более чем один экран за раз, поэтому, если вы получили как можно больше ответов заранее, это может упростить написание этого кода надлежащим образом и не придется изменять его позже.

Если вы по- прежнему не можете получить требования и действительно не знаете, как действовать, отправляйте электронные письма каждый раз, когда вам нужна дополнительная информация (например, требования), и если вы не можете продолжать работать без этой информации, четко заявите, что вы К сожалению, мы не можем продолжать работать, потому что код, который вам нужно написать, будет сильно отличаться в зависимости от ответа на ваши вопросы. Не жалуйтесь, просто очень профессионально сообщите им, что вы не можете написать программу, пока не знаете, что она должна делать.

PSR
источник
0

Вам необходимо знать пределы и диапазоны для каждого поля в приложении. Например, если в поле указан номер телефона, ожидают ли вы, что вы обработаете +1? Какие поля обязательны для заполнения? Что они хотят, чтобы приложение делало, если пользователь вводит «abc» в поле phone #? Все 25 экранов в том порядке, в котором все пользователи должны продолжить?

В противном случае, просто создайте все как текстовые поля, и все готово! Хочешь поспорить, что он переместится как свинцовый воздушный шар?

SnoopDougieDoug
источник