Последовательность работы с требованиями. Анализ проблемы
У пользователя есть технические или бизнес-задачи, для решения которых им нужны программисты. Задача последних состоит в том, чтобы понять проблемы пользователей в их собственной проблемной плоскости и на их языке и построить системы, удовлетворяющие их требованиям. Для понимания проблемы пользователей существует ряд профессиональных приемов, о которых пойдет речь ниже [3|.
Программисты должны понять потребности пользователей и других заинтересованных лиц, на чью жизнь повлияет создание программы.
Следующим шагом осуществляется переход в область решения — непосредственно к программированию. Однако для начала будет полезно сформулировать знания о предметной области. На данном этапе составляется список функций, которые должна реализовывать система.
Для того чтобы провести анализ, полезно определить, что же собственно представляет собой проблема. По определению Гаусса и Вайнберга [И], проблема — это разница между желаемым и воспринимаемым.
Иногда самым простым решением является изменение бизнес-процесса, а не создание новой системы. Как всегда, начинать следует с определения цели. Цель анализа состоит в том, чтобы добиться лучшего понимания решаемой проблемы до начала разработки. Для этого необходимо осуществить следующие пять этапов.
1. Достигнуть соглашения об определении проблемы.
2. Выделить основные причины — вопросы, стоящие за проблемой.
3. Выявить заинтересованных лиц и пользователей.
4. Определить границу системы решения.
5. Выявить ограничения, которые необходимо наложить на решение.
Этап 1. Достижение соглашения об определении проблемы.
Первый шаг состоит в достижении соглашения об определении проблемы, которую необходимо решить. Один из простейших способов заключается в том, чтобы просто записать проблему и выяснить, все ли согласны с такой постановкой.
В рамках этого процесса зачастую полезно рассмотреть преимущества предлагаемого решения, причем их следует описывать на языке клиентов/пользователей. Это обеспечивает дополнительную содержательную основу для понимания реальной проблемы. Рассматривая эти преимущества с точки зрения клиента, программисты также достигают лучшего понимания их взгляда на проблему в целом.
Часто бывает полезно записать проблему в стандартной форме (таблица 2.1). Создание подобной таблицы является простым, но действенным средством, чтобы удостовериться в том, что все участники проекта работают вместе над осуществлением общей цели.
Таблица 2.1- Структурирование проблемы
Элемент | Описание |
Проблема | Описание проблемы |
Воздействует на что (кого) и результатом чего является | Указание лиц, на которых оказывает влияние данная проблема. Описание воздействия данной проблемы на заинтересованных лиц и бизнес-деятельность. |
Выигрыш от решения может состоять в следующем | Указание предлагаемого решения. Список основных предоставляемых решением преимуществ. |
Этап 2. Выявление основных причин — вопросов, стоящих за проблемой.
На данном этапе важно понять корневые причины, лежащие в основе проблемы, и ее проявления.
Например, электронный магазин решил бороться с проблемой недостаточной прибыльности. Для этого был проведен анализ причин плохих продаж. Получено, что следующие причины ведут к слишком большим остаткам продукции на складе:
1) устаревшие готовые изделия;
2) неправильные заказы на покупку;
3) повреждения при доставке;
4) производственные дефекты;
5) возвраты клиентами;
6) прочее.
Однако нужно ли устранять все эти причины? Зачастую нет. Некоторые корневые причины просто не стоят того, чтобы их устранять. Нужно определить влияние каждой корневой причины и устранять только тс, которые наиболее серьезно влияют на саму проблему. В примере, допустим, наибольшее влияние оказывает корневая причина «Неправильные заказы на покупку».
Этап 3. Выявление заинтересованных лиц и пользователей.
В этом процессе могут помочь ответы на следующие вопросы:
· Кто является пользователем системы?
· Кто является заказчиком (экономическим покупателем) системы?
· На кого еще окажут влияние результаты работы системы?
· Кто будет оценивать и принимать систему, когда она будет представлена и развернута?
· Существуют ли другие внешние или внутренние пользователи системы, чьи потребности следует учесть?
· Кто будет заниматься сопровождением новой системы?
· Не забыли ли мы кого-нибудь?
Этап 4. Определение границ системы.
· Мир делится на две части (рисунок 2.2):
· создаваемая система;
· то, что взаимодействует с системой, — фактор.

Рисунок 2.2 – Границы системы
Очень важно правильно определить факторы. Для этого следует ответить на приводимые ниже вопросы.
· Кто будет управлять системой?
· Кто будет осуществлять сопровождение системы?
· Откуда система получает информацию?
· Какие внешние системы будут взаимодействовать с системой?
Этап 5. Выявление ограничений, налагаемых на решение.
Ограничения уменьшают степень свободы, которой располагают разработчики при реализации решения. Каждое ограничение может существенно сузить возможность создания предполагаемого решения. Следовательно, в процессе планирования необходимо тщательно изучить все ограничения (таблица 2.2).
Таблица 2.2 - Возможные источники ограничений системы

Преграды на пути выявления требований
Синдром «да. но...
Одну из самых неприятных проблем, с которыми сталкиваются разработчики, можно назвать синдромом «да, но...» [3]. Это первичная наблюдаемая реакция пользователя на каждый разработанный фрагмент программного обеспечения, которая могла бы быть выражена следующими словами:
• «О, это действительно здорово! Можем реально использовать это, классная работа, молодцы, мальчики!» и т. д.
• «Да, но как насчет?.. Нельзя ли было?.. А что, если?.. Причина синдрома «да, но...» кроется глубоко в природе проектирования программного обеспечения как интеллектуального неосязаемого процесса. Проблема усугубляется тем, что команда разработчиков крайне редко предоставляет что-либо пользователям для обсуждения до окончания разработки (создания программного кода).
Реакция пользователей является следствием человеческой природы. Подобную реакцию можно часто наблюдать и при других повседневных обстоятельствах. Пользователи никогда ранее не видели новую систему или что-либо подобное; они не понимают, что программисты подразумевают, когда описывают ее. И вот теперь она перед ними — впервые после стольких месяцев (или лет) ожидания они имеют возможность взаимодействовать с системой. И оказывается, что это не совсем то, чего они ожидали!
Как это ни грустно, но нужно принять факт существования синдрома «да, но...» в качестве объективной реальности и сделать некоторые выводы, которые помогут членам команды смягчить влияние этого синдрома в будущих проектах:
• синдром «да, но...» является следствием человеческой природы и неотъемлемой частью разработки любого приложения;
• разработчики могут существенно уменьшить воздействие этого синдрома путем применения методов, которые выявят эти «но» как можно раньше. Выявив их на более ранних этапах, можно направить большую часть усилий на разработку программ, которые уже прошли тест на «да, но...Синдром "пользователь и разработчик».
Синдром «пользователь и разработчик» является следствием расхождения взглядов пользователей и разработчиков. Пользователи и разработчики, как правило, принадлежат к различным мирам, говорят на разных языках и имеют различный опыт, мотивацию и цели. Предлагаются рекомендации по смягчению данной ситуации (таблица 2.3).
Таблица 2.3 - Рекомендации решения проблемы

Функции
Использование функций — удобный способ описания возможностей без лишних подробностей.
Такой подход имеет недостаток. Если команда при обсуждении не поймет, какая потребность стоит за функцией, это может привести к неприятным последствиям. Тем не менее это высокий уровень абстракции, удобный для описания возможностей системы.
Рекомендуемое количество функций, которое дает полное представление о разрабатываемой системе, — 25—99, однако желательно, чтобы их число не превышало 50.
После того как все функции перечислены, можно приступить к принятию решения вида «отложить до следующей версии», «реализовать немедленно», «полностью отвергнуть» или «исследовать дополнительно». Это процесс корректировки маештаба лучше проводить на уровне функций, а не на уровне требований, иначе можно увязнуть в деталях.
Чтобы лучше работать с этой информацией, введем понятие атрибутов функций — элементов данных, которые обеспечат дополнительную информацию о каждой функции (табл. 2.4).
Таблица 2.4 - Атрибуты функций

Методы выявления требований:
· интервьюирование и анкетирование;
· совещания, посвященные требованиям;
· мозговой штурм и отбор идей;
· раскадровки;
· прецеденты;
· обыгрывание ролей;
· создание прототипов.
Интервьюирование и анкетирование. Интервью помогает понять проблему, не оказывая влияния на ответы пользователя. Ниже приведены примеры контекстно-свободных вопросов:
· почему существует проблема?
· как она решается в настоящее время?
· как заказчик хотел бы ее решать?
· кто такие пользователи?
· каковы их навыки в компьютерной области?
После этого интервьюер перечисляет основные пункты, чтобы проверить, все ли было правильно понято: «Итак, вы сказали мне...» (перечисляются описанные заказчиком проблемы своими словами). «Какие еще проблемы вы испытываете?»
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |


