WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 | 2 || 4 | 5 |   ...   | 9 |

«Разработка требований к программному обеспечению Практические приемы сбора требований и управления ими при разработке программного продукта Карл И. Вигерс Дважды ...»

-- [ Страница 3 ] --

примерно оцените усилия и время на выявление требова ний};

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

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

Мастерство управления дискуссией по выявлению требований при ходит с опытом, очень помогают в таком деле тренинги, где слушатели учатся брать интервью, общаться в группах, разрешать конфликтные ситуации и т.д. Как аналитику, вам придется «нырнуть» в поток требо ваний клиента и, «опустившись поглубже», разобраться в его истинных потребностях. Просто задав несколько раз вопрос типа «Почему?», вы 116 Часть II. Разработка требований к ПО сможете перейти от обсуждения уже существующего решения к выяв лению проблемы. Вопросы, допускающие несколько вариантов отвв' та, помогут вам разобраться в бизнес-процессах и понять, как новая система повысит их эффективность. Поинтересуйтесь, какие задачи собираются выполнять пользователи и как они будут работать с систе мой. Вообразите, что вы обучаетесь служебным обязанностям пользо вателя или непосредственно выполняете их под его руководством. Ка кие задачи вам придется решить? Какие вопросы у вас возникают"' Другой подход — влезть в «шкуру» новичка, которого обучает опытный пользователь. Вы задаете массу вопросов, а он управляет беседой, выбирая важную, с его/ее точки зрения, тему для обсуждения.

Попробуйте метод исключений. Что мешает пользователю успешно выполнить задачу? Как система должна реагировать на различные;

ошибочные условия? Задавайте вопросы, начинающиеся со слов: «Л что еще могло бы...», «Что произойдет, когда...», «Вам когда-нибудь требовались...», «Где вы получаете...», «Почему вы делаете (или не де лаете}...» и «А кто-нибудь когда-либо...». Задокументируйте источник каждого требования, чтобы, если потребуется, понять их причину и проследить, на каких же потребностях клиентов основываются те или иные направления разработки.

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

Попытайтесь вытащить на «свет божий» все предположения клиен тов и разрешить конфликты. Читайте между строк, чтобы определить те возможности или характеристики, которые клиенты полагают само собой разумеющимися и даже не считают нужным обрисовать. Gause и Weinberg (1989) предлагают использовать бесконтекстные вопросы (context-free questions), узкоспециализированные вопросы и вопросы, допускающие разные толкования, чтобы выявить информацию о биз нес-проблемах и их возможных решениях. Реакция клиентов на такие вопросы, как «Какой уровень точности необходим в продукте?» или «Почему вы не согласны с ответом Мигеля?», иногда более действен ны, чем вопросы с ответами типа «да/нет» или «А/В/С».

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

они Глава 7. Как услышать голос клиента страшно обрадуются, если вы предложите функциональность, которая сделает систему особенно удобной. В тех случаях, когда пользователи не способны ясно выразить свои потребности, аналитику стоит пона блюдать за их работой, чтобы самому разобраться, какие операции следует автоматизировать. Отлично, когда аналитикам удается выйти за рамки, ограничивающие мышление людей слишком тесно связан ных с конкретной предметной областью. Ищите удобные случаи по вторно использовать функциональность, которая уже реализована в другой системе, Интервью с отдельными потенциальными пользователями или с группами — традиционный источник информации при сборе требова ний, касающихся как коммерческих продуктов, так и информационных систем. [О проведении интервью с пользователями см. Beyer и Holtzb latt (1998), Wood и Silver (1995), а также McGraw и Harbison (1997).] Во влечение пользователей в процесс сбора информации — это способ получить поддержку: в том числе и финансовую, проекта. Попытайтесь понять, из чего следуют конкретные требования пользователей. По этапно рассмотрите работу пользователей и постарайтесь понять ее логику. Блок-схемы и деревья решений позволяют отобразить логиче ские пути принятия решений. Убедитесь, что все понимают, почему система должна выполнять конкретные функции. Иногда предложен ные требования отражают устаревшие или неэффективные бизнес процессы, которые не следует встраивать в новую систему, После каждого интервью документируйте элементы, обсуждавшие ся группой, и попросите интервьюируемых просмотреть список и вне сти исправления. Просмотр на ранних стадиях.необходим для успеш ного сбора требований, поскольку только те люди, которые эти требо вания предоставили, могут судить, правильно ли они зафиксированы.

В дальнейшем также не отказывайтесь от обсуждений — это позволит разрешить все противоречия и заполнить пробелы.

Польза семинаров Аналитики требований часто проводят совместные семинары, упро щающие сбор информации о требованиях. Это позволяет весьма эф фективно наладить связи между пользователями и разработчиками (Keil и Carmel, 1995). Основная задача ответственного за мероприятие сотрудника — создать условия для успешного выполнения задачи;

именно он планирует семинар, выбирает участников и следит, чтобы обсуждение проводилось продуктивно. Если вы собираетесь приме 118 Часть II. Разработка требований к ПО нять новые технологии сбора требований, ответственным за первый семинар следует назначить стороннего сотрудника — не из вашей ко манды. В этом случае аналитик сможет полностью сосредоточиться нп обсуждении. Пригласите также секретаря, чтобы он фиксировал вес;

идеи, возникающие в ходе обсуждения.

Согласно одному из источников, "Организация какого-либо меро приятия — искусство управления людьми в ходе этого мероприятия, которое позволяет достичь согласованных решений в атмосфер*.:

сотрудничества, высокопроизводительного труда и заинтересованно сти в результатах своей работы» (Sibbet, 1994). О семинарах, упро щающих сбор требований, подробно рассказано в труде Ellen Gottesdi ener (2002) «Requirements by Collaboration» (Выявление требований •;

;

помощью сотрудничества). Gottesdiener описывает спектр приемов средств для облегчения семинаров. Вот некоторые из них.

Определите основные правила. Участники должны договориться об основных правилах проведения семинаров (Gottesdiener, 2002). На пример, таких:

i своевременно начинать и заканчивать семинар;

I не опаздывать после перерывов;

I не проводить несколько обсуждений одновременно;

I следить, чтобы каждый принимал участие в работе;

I комментировать и критиковать решение, а не личность.

Придерживайтесь границ проекта. Чтобы удостовериться, что предлагаемые пользовательские требования не выходят за текущие границы проекта, используйте документ об образе и границах проек та. Следите, чтоб на каждом семинаре уровень обобщения соответст вовал выбранным целям. Периодически участники могут углубляться в обсуждения несущественных деталей. На это уходит масса времени, которое на начальном этапе работы следует потратить на прояснение пользовательских требований — время деталей наступит позже. Зада ча организатора — по мере необходимости возвращать участников к теме обсуждения, Ловушка Избегайте преждевременного углубления в детали. Фиксируя мель чайшие подробности того, что люди уже понимают, вы не снизите риски, остаю щиеся из-за размытости требований, Пользователи легко переходят к обсуждению того, где в отчете или диалоговом окне следует разместить элементы, даже еще до того, как разработчики согласятся с поставленными задачами. Если вы включите Глава 7. Как услышать голос клиента данные детали в требования, то в некоторой степени ограничите про цесс разработки. К разработке пользовательского интерфейса следует приступать позднее, хотя предварительные наброски интерфейса по лезны на любом этапе при иллюстрации возможных способов реализа ции требований. Проверка осуществимости на ранних стадиях, требую щая определенной разработки, значительно снижает риски.

Фиксируйте темы для дальнейшего обсуждения. На семинаре всплывает масса случайных, но важных сведений: атрибуты качества, бизнес-правила, идеи по разработке пользовательского интерфейса, ограничения и т.п. Запишите их на плакатах простейшим способом, — так вы не потеряете их и продемонстрируете уважение участнику, высказавшему их, Не отвлекайтесь на обсуждение деталей, не относящихся к теме дискуссии, если только они не окажутся важны ми, например бизнес-правилом, которое ограничивает варианты ис пользования.

Ограничивайте некоторые дискуссии по времени. Организатор семинара имеет право ограничить время обсуждения каждой темы, скажем, первоначально — 30 минут на каждый вариант использова ния. Возможно, некоторые дискуссии придется завершить позднее, но жесткие временные рамки помогают не тратить времени больше, чем запланировано, на первые обсуждения темы, в результате чего может не хватить времени для обсуждения остальных тем, Не увеличивайте размер команды и тщательно отбирайте участ ников. Небольшие группы работают намного быстрее. Семинары, чис ло активных участников которых превышает пять или шесть человек, могут забуксовать, вылиться в отвлеченные разговоры и даже ссоры.

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

Ловушка Не допускайте в процессе сбора информации обсуждения посторон них тем, например подробностей дизайна.

Вовлекайте в обсуждение каждого. Иногда участники самоустраня ются от обсуждения, например, расстроившись из-за того, что не представляют себе ценность системы. Возможно, их идеи не воспри 120 Часть II. Разработка требований к ПО нимают серьезно, поскольку другим участникам их концепции кажутся неинтересными или группа не хочет отвлекаться от текущей дискус сии. Возможно, аутсайдер не уверен в себе и уступил право голоса бо лее активным сотрудникам или главному аналитику. Организатору се минара необходимо следить за языком телодвижений, чтобы разо браться в причинах замкнутости того или иного участника, и попытаться снова вовлечь его в работу. Ведь интуитивное представле ние каждого может оказаться очень ценным.

У семи нянек...

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

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

Некоторая информация не попадает ни в одну из этих категорий, в том числе:

I требования, не относящиеся к разработке ПО, например необходи мость обучения пользователей работе с новой системой;

I ограничения проекта, например затраты или ограничения, налагае мые графиком (в отличие от ограничений, касающихся дизайна или реализации);

R предположения;

1 требования, касающиеся данных, которые зачастую связаны с оп ределенной функциональностью системы (вы сохраняете данные на компьютере только для того, чтобы позднее извлечь их);

I дополнительная информация хронологического или описательно! о характера, а также относящаяся к управлению контекстом.

Глава?. Как услышать голос клиента Бизнес-требования Идеи, ^ Варианты использования касающиеся решений или сценарии Определения «,. _—у Бизнес-правила данных Ограничения *^ ^ Функциональные требования Требования к интерфейсу Атрибуты качества Рис. 7-1. Классификация требований клиента Далее в этом разделе я привожу некоторые типичные для дискус сий фразы, по которым вам будет легче выполнить классификацию данных.

Бизнес-требования. Вся информация, описывающая финансовые, рыночные или другие отношения коммерческого характера, которые клиенты или разработчики собираются получить от использования продукта, относится к бизнес-требованиям. Обращайте внимание в разговоре на такие высказывания о преимуществах, которые покупа тели или пользователи ПО хотят получить:

1 «Увеличить рыночную долю наХ%»;

I «Сэкономить Y$ в год за счет сокращения использования электро энергии, которая сейчас расходуется неэффективно»;

i «Сэкономить Z$ за счет сокращения расходов на поддержание ус таревшей системы W».

Варианты использования или сценарии. Основные утверждения пользователей о преследуемых ими целях или задачах бизнеса (ком мерческих задачах) называются вариантами использования;

единст венный задокументированный вариант называется сценарием. Рабо тайте с пользователями, чтобы свести сценарии в более общие вари анты использования. Часто удается выявить варианты использования, попросив клиентов описать их рабочий процесс. Другой способ — вы яснить у заказчиков, какие цели они ставят перед собой, усаживаясь 122 Часть II. Разработка требований к ПО за работу. Сотрудник, который скажет: «Мне нужно сделать то-то и то то», вероятнее всего опишет конкретный вариант использования, на пример:

I «Мне нужно напечатать почтовую этикетку для пакета»;

1 «Мне нужно управлять очередью образцов химических веществ отобранных для анализа»;

I «Мне необходимо откалибровать контроллер насоса».

Бизнес-правила. Если клиент заявляет, что только определенные классы пользователей могут выполнять определенные действия при определенных условиях, он, возможно, описывает бизнес-правило. В случае с Chemical Tracking System такое бизнес-правило может зву чать следующим образом: «Химик может заказать вещество из списка опасных химикатов уровня 1 только при условии, что в настоящее вре мя действует его допуск на работу с опасными соединениями». Вы мо жете сформулировать некие функциональные требования к ПО, чтобы определить конкретное правило, например запись в БД о допуске со трудника должна быть доступной Chemical Tracking System. Как уже го ворилось, бизнес-правила и бизнес-требования — не одно и то же.

Вот несколько фраз, по которым вы можете догадаться, что пользова тель описывает именно бизнес-правила:

1 «Должны совпадать с таким-то постановлением или корпоративной политикой»;

I «Должны соответствовать некоему стандарту»;

I «Если выполняется такое-то условие, то происходит то-то и то-то»;

I «Расчеты производятся по следующей формуле».

Развернутые примеры бизнес-правил Дополнительная информация в главе 9.

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

1 «Если давление превышает 40,0 фунтов на квадратный дюйм, дол жен загореться предупредительный световой сигнал»;

Глава?. Как услышать голос клиента I «У пользователя должна быть возможность сортировать список проекта в прямом и обратном алфавитном порядке»;

1 «Когда кто-либо представляет на рассмотрение новую идею, систе ма отправляет сообщение по электронной почте Idea Coordinator».

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

Советы тем, кто хочет написать хорошие Дополнительная информация функциональные требования - в главе 10.

Атрибуты качества. Утверждения, насколько хорошо система соот ветствует определенному режиму работы или позволяет пользовате лям выполнять конкретные действия, называются атрибутами качест ва. Обращайте внимание на слова, которыми пользователи описывают желаемые характеристики системы: быстрая, легкая, интуитивно по нятная, удобная для пользователя, устойчивая к сбоям, надежная и эффективная. Вам придется поработать с пользователями, чтобы по нять, что именно они имеют в виду под этими неясными и субъектив ными терминами, и зафиксировать четкие, поддающиеся проверке ат рибуты качества, как описано в главе 12.

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

I «Должны распознавать сигналы от определенного устройства»;

1 «Должна отправлять сообщение такой-то системе»;

1 «Должны быть в состоянии читать (или записывать) файлы в опре деленном формате»;

I «Должна контролировать такой-то элемент оборудования»;

I «Пользовательский интерфейс должен соответствовать определен ному стандарту».

124 Часть II. Разработка требований к ПО Ограничения. Ограничения, касающиеся дизайна и реализации, офи циально ограничивают возможности, доступные разработчику. Для устройств со встроенным ПО часто необходимо учитывать физические ограничения, такие, как размер, вес и сквозные соединения в плате, Записывайте разумное обоснование для каждого ограничения, чтобы все участники проекта знали его источник и понимали его обоснован ность. Действительно ли ограничением является требование размес тить устройство в определенном пространстве? Или это желание, на пример, просто получить портативный компьютер с минимальным ве сом?

Введение излишних ограничений препятствует выработке лучшего решения. Из-за ограничений также не всегда удается использовать стандартные компоненты, доступные в продаже. Требование приме нять определенную технологию также не всегда достижимо — зачас тую технология устарела или недоступна в результате прогресса. Од нако некоторые ограничения могут оказаться полезными при достиже нии целей, связанных с атрибутами качества. Например, удается улучшить переносимость ПО путем использования только стандартны* команд языка программирования и запрета на использование расши рений, присущих только определенным производителям. Вот какие ог раничения может выдвинуть клиент:

I «Размер файлов, представленных в электронном виде, не должен превышать 10 Мб»;

I «В браузере для всех безопасных транзакций следует использовать 128-битную кодировку»;

i «В БД необходимо применять механизм периода выполнения Fra malam».

А это примеры других фраз, указывающих на то, что клиент описы вает ограничения дизайна или реализации:

I «Должна быть написана на определенном языке программиро вания»;

1 «Не может требовать более такого-то объема памяти»;

1 «Должна функционировать согласованно (или быть совместима) с такой-то системой»;

I «Должна использовать определенный элемент управления пользо вательского интерфейса».

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

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

Дополнительная информация Подробнее о словарях данных - в главе 10.

Определения данных иногда становятся источниками функциональ ных требований, которые пользователи не запросили напрямую. Что произойдет, когда номер заказа, состоящий из шести цифр, превысит 999999? Разработчикам необходимо знать, как поведет себя система в таких случаях. Откладывая проблемы, касающиеся данных, вы только усложняете их решение в будущем. (Помните проблему 2000 г.?) Идеи, касающиеся решений. Большинство информации, которую пользователи представляют как требования, подпадает под определе ние идей о решении. Те, кто описывают определенный способ взаимо действия с системой для выполнения определенного действия, пред ставляют допустимое решение. Аналитику необходимо научиться пре одолевать поверхностные формулировки и докапываться до сути идеи, которая и представляет собой требование. Например, функцио нальные требования, касающиеся паролей, — лишь одно из возмож ных решений требования к безопас-ности, Предположим, пользователь говорит: «Затем в раскрывающемся списке я выбираю штат, куда я хочу отправить посылку». Фрагмент «в раскрывающемся списке" тянет на решение. В этом случае благора зумный аналитик задаст вопрос: «Почему в раскрывающемся списке?" Если пользователь ответит: «Мне просто кажется, так удобно», то не посредственно требование можно сформулировать примерно так:

«Система позволит пользователю выбрать штат, куда он хочет отпра вить посылку». Однако пользователь может сказать: «Я предложил раскрывающийся список, потому что мы применяем этот элемент в других областях, и я хочу согласованности. Кроме того, так пользова 126 Часть II. Разработка требований к ПО тель не сможет ввести непроверенные данные, и я думаю, что в этом случае удастся применить уже написанный код». Это отличные причи ны для выбора определенного решения. Однако следует помнить, что, записывая идею о решении в требование, вы тем самым налагаете ог раничение по дизайну на это самое требование. Таким образом, реа лизация требования становится возможной только в одном варианте.

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

В процессе сбора информации иногда выясняется, что границы проекта определены неправильно — они либо слишком широкие, либо слишком узкие (Christel и Kang, 1992). В первом случае вам придется собрать дополнительные данные, чтобы сформулировать адекватные коммерческие и клиентские понятия, при этом процесс неизбежно за тянется. Во втором случае высказанные пользователями важные по требности выходят за границы текущего проекта. Это означает, что оп ределенные границы, возможно, слишком малы для получения удов летворительных результатов. Таким образом, сбор информации иногда влечет за собой изменение образа или границ проекта.

Часто говорят, что суть требований заключается в том, что система должны делать, а то, как решение будет реализовано, относится к об ласти дизайна. Хотя эта формулировка заманчиво кратка, по сути она примитивна. Сбор информации должен быть сосредоточен на этом '-ITQ.

но области анализа и дизайна разделяет размытая линия, а не че кая Глава?. Как услышать голос клиента граница. Гипотетические как помогают уточнить и детализировать по нимание потребностей пользователей. Модели анализа, наброски того, что видно на экране, и прототипы помогают в ходе сбора информации более осязаемо выразить потребности и избежать ошибок и упущений, Воспринимайте модели и дизайнерские решения, выработанные в про цессе формулирования требований, как концептуальные предложения, упрощающие эффективное взаимодействие, а не как ограничение воз можностей, доступных разработчику. Объясните пользователям, что эти средства — только для иллюстрации идей и необязательно попадут в окончательные решения, Увлечение исследованиями иногда приводит к проблемам. Выска зана прекрасная идея или предложение, но для ее оценки необходима обстоятельная проверка. Выяснение ее осуществимости или ценности следует воспринимать как самостоятельную задачу внутри проекта, характеризующуюся собственными целями и требованиями. И в этом случае неоценима роль прототипов. Если для вашего проекта необхо димо провести обширные исследования, выполняйте их постепенно, небольшими, безопасными частями, Поиск упущенных требований Пропуск каких-либо важных данных — самый распространенный не достаток требований (Jones, 1997). Обнаружить их в процессе повтор ного просмотра требований очень трудно, поскольку они просто неви димы! Предлагаемые далее приемы позволяют выявить упущенные требования.

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

I Раскладывайте требования высокого уровня на простейшие составляющие — это позволит понять, чего же именно просят поль зователи. Из-за неясности требований высокого уровня, предос тавляющих клиентам свободу интерпретации, возможно несовпа дение представлений клиента о продукте и тем, что создает разра ботчик. Вот некоторые неточные и расплывчатые термины, которых следует избегать: обеспечивать поддержку, предоставлять возмож ность, разрешать, обрабатывать и управлять.

128 Часть II. Разработка требований к ПО 1 Убедитесь, что все классы пользователей предоставили вам ин формацию и для каждого варианта использования определена по крайней мере одна роль.

I Подробно документируйте, на каких функциональных требованиях основаны требования к системе, варианты использования, списки откликов на события и бизнес-правила. Это позволит вам быть уве ренным, что аналитик описал всю необходимую функциональность I Для выявления недостающих требований проверяйте пограничные значения. Предположим, в одном требовании указано: «Если стои мость заказа меньше $100, стоимость доставки будет равна $5,95", а в другом — «Если стоимость заказа превышает $100, стоимость доставки составляет 5% от общей стоимости заказа». А как быть, ес ли стоимость заказа составляет ровно $100? Это не оговорено, зна чит, отсутствует соответствующее требование.

I Используйте разнообразные формы представления информации о требованиях. Трудно прочитать большой объем текста и заметить, что чего-то не хватает. Модели анализа визуально представляют требования высокого уровня абстракции — лес, а не отдельные де ревья. Рассматривая модель, вы можете заметить, что от одною блока к другому должна идти стрелка;

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

Подробнее о моделях анализа — в главе 11.

Один из точных способов поиска недостающих требований — соз дать матрицу CRUD (Create, Read, Update, Delete — создание, чтение, обновление, удаление). Она позволяет соотнести действия системы с элементами данных (отдельными или их совокупностями), в результа те вы получаете представление о том, где и как каждый элемент дан ных создается, считывается, обновляется и удаляется. Некоторые до бавляют к названию матрицы букву L, указывая, что элемент данных является списком (List) (Ferdinand!, 2002). В зависимости от способов анализа требований, которые вы используете, удается исследовать различные типы соответствий, в том числе:

1 элементы данных и системные события (Robertson и Robertson, 1999);

I элементы данных и задачи пользователей или варианты использо вания (Lauesen, 2002);

I классы объектов и системные события (Ferdinand!, 2002);

1 классы объектов и варианты использования (Armour и Miller, 2001).

Наборы требований со сложной булевой логикой (несколько опе раторов «И», «ИЛИ» и «НЕ») часто оказываются неполными, Если для Глава 7. Как услышать голос клиента комбинации логических условий не определено соответствующее функ циональное требование, разработчику приходится догадываться, как же должна действовать система, или искать ответ на этот вопрос. Что бы убедиться, что вы рассмотрели все возможные ситуации, пред ставляйте сложную логику с помощью таблиц и деревьев решений (подробнее — в главе 11).

Элемент данных *"* использования шненки «Сотрудник, разместивший заказ на химикат» Рис. 7-2. Пример матрицы CRUDI-для Chemical Tracking System На рис. 7-2 показана матрица CRUDL для элементов данных и вари антов использования определенной области Chemical Tracking System.

Каждая ячейка указывает, как вариант использования, определенный в крайнем левом столбце, взаимодействует с каждым элементом дан ных. Вариант использования может Создать (Create), Читать (Read), Обновить (Update), Удалить (Delete) или Указать в виде списка (List) элемент данных. После создания матрицы посмотрите, не появилась ли одна из этих букв в какой-либо ячейке столбца. Если коммерческий объект обновлен, но до этого его не создали, откуда он взялся? Обра тите внимание, что ни одна ячейка в колонке с именем «Сотрудник, разместивший заказ на химикат») не содержит «Уд». То есть, ни в од ном из случаев использования на рис. 7-2 нельзя удалить сотрудника из списка людей, заказывавших химикаты. Интерпретировать это мож но тремя способами:

I удаление сотрудника, разместившего заказ на химикат, не является ожидаемой функцией Chemical Tracking System;

I мы пропустили вариант использования, который удаляет сотрудни ка, разместившего заказ на химикат;

1 вариант использования «Редактировать данные колонки «Сотруд ник, разместивший заказ на химикат»» некорректный. Предполага 130 Часть II. Разработка требований к ПО ется, что пользователь может удалить из списка сотрудника, раз местившего заказ на химикат, но в настоящее время эта функцио нальность не указана в вариантах использования.

Мы не знаем, какая интерпретация правильна, но CRUDL — это на дежный способ для обнаружения недостающих требований.

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

1 пользователи уже не могут придумать каких-либо еще вариантов использования. Обычно они описывают их в порядке убывания зна чимости последних;

1 пользователи предлагают новые варианты использования, однако вы уже вывели соответствующие функциональные требования из других вариантов использования. Эти «новые" предложения могут оказаться случаями других вариантов использования, которые вы уже рассмотрели;

I пользователи повторно описывают уже обсуждавшиеся проблемы;

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

I вновь предлагаемые требования имеют низкий приоритет;

I пользователи предлагают возможности, которые имеет смысл реа лизовать «когда-то позже», а не включить «в конкретный продукт, ко торый мы сейчас обсуждаем».

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

Глава 7. Как услышать голос клиента Невзирая на все ваши усилия, выявить все требования вы не смо жете, так что готовьтесь вносить изменения по мере работы над проек том. Помните: ваша цель — сформулировать требования, достаточные для того, чтобы обеспечить при разработке приемлемый уровень риска.

Что теперь?

1 Вспомните недостающие требования, которые были выявлены на поздних стади ях проекта. Почему они были упущены из виду в процессе сбора информации?

Как вы могли бы выявить их раньше?

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

I Перечислите все методы выявления требований, использовавшиеся вами для те кущего проекта. Какие методы себя хорошо зарекомендовали, а какие - нет и по чему? Определите способы выявления требований, которые, по-вашему, дадут лучший результат, и решите, как вы будете применять их в следующий раз. Поду майте, какие препятствия могут помешать вам применить эти способы на практи ке, и определите, как их преодолеть.

Часть II, Разработка требований к ПО 8 Как понять требования пользователей Участники проекта Chemical Tracking System проводили свой первый семинар, посвященный требованиям, чтобы выяснить.

как химики будут использовать новую систему. На него былм приглашены аналитик требований Лори, которая также выпол няла функции ответственного за семинар, сторонник продукт* от химиков Тим, еще два представителей химиков Сэнди и Пи • тер, а также ведущий разработчик Элен. Лори открыла семм нар, поблагодарив присутствующих за участие, и сразу при ступила к делу.

"Тим, Сэнди и Питер определили приблизительно 15 вариан тов использования Chemical Tracking System, — сообщила она группе. — На этих семинарах мы рассмотрим их, чтобы выяс нить, какую функциональность необходимо встроить в систе му. Вы присвоили высший приоритет варианту использования «Запрос химиката", и Тим уже составил его краткое описание, поэтому с него и начнем. Тим, как ты представляешь себе за прос химиката с помощью системы?» «Прежде всего, — сказал Тим, — вам следует знать, что только те люди, у которых есть разрешение руководителей лаборато рий, могут запрашивать химикаты».

"Ладно, это похоже на бизнес-правило, — ответила Лори. Я начну составлять список бизнес-правил, поскольку, вероят но, будут и другие. Видимо, нам придется проверять, включен ли пользователь в утвержденный список лиц». Она также напи сала «пользователь идентифицирован» и «пользователю пре доставлено право запрашивать химикаты» в разделе «Предва рительные условия» списка, который она уже подготовила для варианта использования «Запрос химиката». "Есть еще какие • нибудь предварительные условия, которые должны быть вы полнены до того, как пользователь получит возможность соз дать запрос?" "Прежде чем запрашивать химикат у поставщика, я должна проверить, нет ли его на складке, — сказала Сэнди. — Когда я начну составлять запрос, текущая БД складских запасов долж на быть подключена в онлайновом режиме, чтобы я не теряла времени попусту».

Лори добавила этот элемент в список предварительных усло вий. В течение следующих 30 минут она управляла обсуждени ем того, как участники семинара представляют себе процесс формирования запроса нового химиката. Ей понадобилось не сколько списков, чтобы свести вместе информацию о предва рительных условиях, выходных условиях, а также этапах взаи модействия пользователя и Chemical Tracking System. Лори поинтересовалась, чем будет отличаться вариант использова ния, когда пользователь запрашивает химикат у продавца, от того, когда он запрашивается на складе. А кроме того, какие проблемы при этом могут возникнуть и как система должна обрабатывать каждую ошибку? По истечении получаса уда лось выработать четкое представление о том, как пользова тель будет запрашивать химикат. Участники семинара были го товы обсуждать следующий вариант использования.

Люди используют системы ПО для выполнения необходимых задач, и в индустрии ПО наблюдается устойчивая тенденция к разработке ПО с повышенной практичностью (Constantine и Lockwood, 1999;

Nielsent, 2000). При этом существует обязательное предварительное условие — необходимо знать, как клиенты планируют использовать продукт, В течение многих лет аналитики извлекали информацию о требова ниях пользователей из сценариев использования (McGraw и Harbisont, 1997). Сценарием (scenario) называется описание одного варианта ис пользования системы. Ivar Jacobson с коллегами (1992), Larry Constan tine и Lucy Lockwood (1999), Alistair Cockburn (2001) и многие другие преобразовали этот подход в методику, где для сбора информации и моделирования требований применяются варианты использования.

Последние прекрасно себя зарекомендовали при разработке требова ний для бизнес-приложений, Web-сайтов, служб, предоставляемых одной системой другой, и систем, позволяющим пользователям управлять определенным оборудованием. У таких продуктов, как про Часть II. Разработка требований к ПО цессы пакетной обработки, системы для интенсивных вычислений и приложения для хранения данных, может оказаться всего несколько простых вариантов использования. Сложность их работы заключаете;

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

Ловушка Не пытайтесь включить в вариант использования каждое появившееся требование. С помощью вариантов использования удается выявить большинство, но никак не все функциональные требования.

Подход с применением варианта использования продукта Вариант использования (use casej продукта описывает последов<1 тельность взаимодействия системы и внешнего действующего лица.

Действующим лицом (actor) может быть человек, другая система ПО или аппаратное устройство, взаимодействующее с системой для доп тижения некой цели (Cockburn, 2001). Еще одно название действую щего лица — роль пользователя, поскольку это роль, которую члены одного или нескольких классов пользователей могут выполнять по от ношению к системе (Constantine и Lockwood, 1999). Например, в вари анте использования Chemical Tracking System «Запрос химиката» уча ствует действующее лицо — Сотрудник, разместивший заказ на хими кат. Класса пользователей Chemical Tracking System с таким именем не существует. И химики, и специалисты, работающие на складе химика тов, могут запрашивать химикаты, поэтому члены любого из этих клас сов могут играть роль Сотрудника, разместившего заказ на химикат.

Понятие «вариант использования» пришло из мира объектно ориентированного программирования. Тем не менее они годятся и д;

1я проектов, где применяются любые приемы разработки, поскольку пользователям безразлично, как именно создается ПО. Варианты ис пользования лежат в основе широко применяемого Унифицированно го процесса разработки ПО (Jacobson, Booch и Rumbaugh, 1999).

Глава 8. Как понять требования пользователей Варианты использования меняют традиционный подход к сбору ин формации;

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

Получить данные по безопасному хранению материала База данных для обучения персонала «расширение f Выполнить поиск Запросить Л.

химикат ft ~ йзаи««»я|>>~\по KSJanorau поставщика Сотрудник, Сотрудники разместивший заказ склада химикатов на химикат Отдел охраны труда Покупатель и техники безопасности Рис. 8-1. Фрагмент диаграммы варианта использования Chemical Tracking System Диаграммы вариантов использования (use-case diagrams,) позволя ют получить отличное визуальное представление о требованиях поль зователей. На рис. 8-1 показан фрагмент диаграммы варианта исполь зования Chemical Tracking System, где применяются нотации UML (Uni 136 Часть II. Разработка требований к ПО tied Modeling Language — унифицированный язык моделирования) (Booch, Rumbaugh и Jacobson, 1999;

Armour и Miller, 2001). Прямо угольник показывает границы системы. Линии соединяют каждое дей ствующее лицо (нарисованный человечек) с вариантами использова' ния (эллипсами), с которыми это лицо взаимодействует. Обратите внимание на сходство этой диаграммы варианта использования с кон текстной диаграммой на рис. 5-3. Здесь прямоугольник отделяет не которые внутренние элементы высокого уровня системы — варианты использования — от внешних действующих лиц. Контекстная диаграм ма также отображает объекты, расположенные вне системы, но на ней не видны внутренние части системы, Варианты использования и сценарии использования Вариант использования (use case) — это отдельное, независимое дей ствие, которое действующее лицо может выполнить для получения оп ределенного значимого результата. Один вариант использования мо жет охватывать несколько схожих задач с одинаковыми целями. Сле довательно, он представляет собой набор связанных между собой сценариев использования, где сценарий — это отдельный пример ва рианта использования. Вы можете начать разработку требований с аб страктных вариантов использования, а затем на их основе создать конкретные сценарии использования или, наоборот, перейти от некое го сценария к более широкому варианту использования. Далее в этой главе показан подробный шаблон для документирования вариантов использования. К важным элементам описания варианта использова ния относятся:

I уникальный идентификатор;

I имя, кратко описывающее задачи пользователи в формате «глагол + объект», например «разместить заказ»;

I краткое текстовое описание на естественном языке;

I список предварительных условий, которые должны быть удовлетво рены до начала разработки варианта использования;

1 выходные условия, описывающие состояние системы после успеш ного завершения разработки варианта использования;

I пронумерованный список действий, иллюстрирующий последова тельность этапов взаимодействия лица и системы от предваритель ных условий до выходных условий.

Один сценарий считается нормальным направлением развития (normal course} варианта использования, его также называют основ ным направлением, базовым направлением, нормальным потоком, Глава 8. Как понять требования пользователей основным сценарием, главным успешным сценарием и благоприят ным путем. Нормальное направление для варианта использования «Запрос химиката» — запрос химиката, который есть на складе.

Альтернативное направление Нормальное направление (предварительные условия варианта использования) (условие ответвления) (условие продолжения) Этап (выходные условия варианта использования] Рис. 8-2. UML-диаграмма, иллюстрирующая диалоговый поток при нормальном и альтернативном развитии варианта использования Другие допустимые сценарии из варианта использования, называ ются альтернативными направлениями (alternative courses) или вто ричными сценариями (secondary scenarios) (Schneider и Winters, 1998).

Они также могут привести к успешному выполнению задания и удовле творяют выходным условиям варианта использования. Однако они представляют вариации решения задачи или диалоговой последова тельности, необходимой для выполнения задачи. В определенной точ ке принятия решений в диалоговой последовательности нормальное направление может перейти в альтернативное, а затем вернуться об ратно в нормальное. Хотя большинство вариантов использования можно описать простым языком, блок-схема или UML-диаграмма по зволяют визуально представить логическое развитие сложного вари анта использования, как показано на рис. 8-2. Блок-схема и диаграм 138 Часть II. Разработка требований к ПО мы взаимодействия показывают точку принятия решений и условия при которых основное направление развития событий переходит в альтернативное.

Альтернативное направление для варианта использования «Зака зать химикат» — это «Заказать химикат у поставщика». В обеих ситуа циях конечная цель действующего лица одна и та же — запрос химика та, поэтому оба сценария входят в один вариант использования. Неко торые этапы альтернативного направления аналогичны этапам нормального направления, но для завершения альтернативного на правления необходимо выполнить особые действия. В нашем случае пользователь может искать необходимый химикат по каталогам по ставщиков. Если альтернативное направление само по себе является автономным вариантом использования, вы можете расширить нор мальное направление, включив этот отдельный вариант использования в нормальный поток (Armour и Miller, 2001). Диаграмма на рис. 8-1 ил люстрирует подобную расширенную взаимосвязь. Вариант использс вания «Запросить химикат» был расширен вариантом использования «Выполнить поиск по каталогам поставщика». Кроме того, сотрудники склада химикатов используют «Поиск по каталогам поставщиков» как отдельный вариант.

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

В качестве примера рассмотрим работу ПО для бухгалтерии. Воз можны два варианта использования — «Оплатить счет» и «Подтвердить кредитную карту", причем в обоих, чтобы выполнить платеж, пользова тель должен подписать чек. Вы можете создать отдельный вариант ис пользования «Подписать чек», который содержит набор действий, не обходимых для подписи чека. Этот вариант будет включен в обе тран закции, как показано на рис. 8-3.

Ловушка Не затягивайте обсуждение того, когда, как и стоит ли вообще исполь зовать взаимоотношения типа расширить и включить. Чаще всего применяется сле дующий прием - указать общие действия во включенном варианте использования.

Глава 8. Как понять требования пользователей Подтвердить кредитную карту «ч «включить» «включить» ^f^^~^~~~~~^~^Ljf Подписать ] J Ч, чек Рис. 8-3. Пример того, как вариант использования связан с бухгалтерским приложением Условия, препятствующие успешному завершению задания, назы ваются исключениями (exceptions). Для варианта использования «За просить химикат» существует одно исключение — «Химиката нет в про даже». Если в процессе сбора информации вы не укажете, как обраба тывать исключение, то возможны два пути:

1. разработчики предложат лучший по их мнению способ обработки исключений;

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

Бьюсь об заклад, что сбои системы не входят в список требований пользователей.

Иногда исключения рассматриваются как тип альтернативного на правления (Cockburn, 2001), однако эти понятия следует разделять. Не обязательно реализовывать каждое альтернативное направление, ко торое вы определили для варианта использования;

кроме того, вы мо жете отложить его реализацию до следующего выпуска. Однако вы обязаны реализовать исключения, из-за которых завершение сцена риев может оказаться неуспешным. Любой, кто когда-либо занимался программированием, знает, что часто именно на работу над исключе ниями приходится большая часть программирования. Многие недос татки конечного продукта присущи именно обработчикам исключений (или происходят из-за их отсутствия!). Указать условия исключений в ходе сбора информации по требованиям — верный способ создать ус тойчивые к сбоям продукты!

Для многих систем пользователь может связать последователь ность вариантов использование в «макровариант использования», описывающий объемную задачу. Для коммерческого Web-сайта пред лагаются, например, такие варианты использования;

«Поиск по ката логу», «Добавить товар в корзину» и «Оплатить товары в корзине». Если вы можете выполнить все эти действия по отдельности, то все они Часть II. Разработка требований к ПО считаются независимыми вариантами использования. Кроме того, вы вправе выполнить все три указанные операции подряд, назвав этот один большой вариант использования «Приобрести товар», как пока зано на рис. 8-4. Причем после каждого варианта использования сис тема должна быть в таком состоянии, чтобы пользователь мог при ступить к следующему варианту использования немедленно. То есть выходные условия одного варианта использования должны удовлетво рять предварительным условиям следующего за ним варианта. Подоб ным же образом в приложении обработки транзакций, например ATM, каждый вариант использования должен оставлять систему в состоянии готовности к следующей транзакции. Предварительные условия и вы ходные условия каждой транзакции варианта использования должны вставать в один ряд.

Приобрести товар Выполнить поиск Добавить товар Оплатить по каталогам в корзину товары в корзине предварительные выходные условия условия Рис. 8-4. Предварительные условия и выходные условия определяют границы отдельных вариантов использования, которые можно связать в цепочку для выполнения объемной задачи Определение вариантов использования Вы можете определить варианты использования несколькими спосо бами {Ham, 1998;

Larman, 1998):

i сначала определить действующие лица, а затем бизнес-процессы, в которых каждое лицо участвует;

I выразить бизнес-процессы в терминах определенных сценариев, обобщить сценарии в варианты использования и определить дейст вующие лица для каждого варианта;

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

Глава 8. Как понять требования пользователей I определить вероятные варианты использования на основе функ циональных требований, Если какие-либо требования невозможна проследить до какого-либо варианта использования, подумайте нужны ли они.

В Chemical Tracking System применен первый подход. Аналитик про вел несколько семинаров по вариантам использования, примерно два раза в неделю, по два-три часа каждый. Члены различных классов пользователей участвовали в параллельных семинарах, так как лишь несколько вариантов использования были общими для нескольких классов пользователей. На каждом семинаре присутствовали сторон ник продукта от класса пользователей, другие выбранные представи тели пользователей, а также разработчик. Участие в семинарах позво лило разработчикам еще на ранней стадии получить представление о создаваемом продукте. Кроме того, они возвращали собравшихся к реальности, когда те предлагали невыполнимые требования.

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

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

Что клиент хочет: просмотреть, напечатать, заказать, отправить по электронной почте, исправить, удалить или создать данные по безо пасному хранению материала? Иногда предложенный вариант исполь зования — это всего лишь одно действие, которое выполняется как часть варианта использования, например «сканировать штрих-код».

Аналитик должен выяснить, какую цель подразумевал пользователь, когда предлагал это. Он может задать такой вопрос: «Сканируя штрих код на контейнере с химикатами, что вы пытаетесь сделать?» Предпо ложим, в ответ он услышит: «Это необходимо для того, чтобы я мог от править этот химикат в свою лабораторию». Следовательно, настоя щий вариант использования выглядит как-то так — «Отправить хими кат в лабораторию». Сканирование штрих-кода -- только один из Часть II. Разработка требований к ПО этапов взаимодействия действующего лица и системы, передающей химикат в лабораторию.

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

Документирование вариантов использования На этой стадии обсуждения участники должны обдумать важнейшие;

варианты использования. Constantine и Lockwood (1999) дают следуку щее определение важнейших вариантов использования (essential use.

cases): «... упрощенное, обобщенное, абстрактное, не зависящее от технологии и реализации описание одной задачи или взаимодейсТ' вия... в котором воплощена цель или намерения, лежащие в основе!

взаимодействия». То есть следует сосредоточиться на задаче, которую пользователю необходимо выполнить, и возможностях системы для выполнения этой задачи. Важнейшие варианты использования харак теризуются более высоким уровнем абстракции, чем конкретные вари анты использования (concrete use cases), которые описывают опреде ленные действия, предпринимаемые пользователем для взаимодейст вия с системой. Чтобы проиллюстрировать различие, рассмотрим дв.д способа начала реализации пользователем варианта использования «Запросить химикат».

Конкретный вариант использования. Введите номер ID химиката Важнейший вариант использования. Укажите необходимый химика г.

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

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

Глава 8. Как понять требования пользователей 6- Участники семинара, посвященного Chemical Tracking System, начи нали каждое обсуждение с определения действующего лица, которое получит преимущество отданного варианта использования, и краткого описания этого варианта. Затем они указывали предварительные ус ловия и выходные условия, ограничивающие вариант использования, а также все этапы внутри этих границ. Выяснив частоту использования, вы на ранних стадиях получите представление о необходимости и важ ности требования. Далее аналитики спрашивали участников, как те се бе представляют взаимодействие с системой для выполнения задачи, Установленная последовательность действий лиц и реакции системы определялась, как нормальное направление. Нумерация этапов по следовательности окончательно проясняла ситуацию. Хотя у каждого участника было свое представление об интерфейсе и специальных ме ханизмах взаимодействия, группа смогла выработать общее понима ние важнейших этапов диалога системы и пользователя, Придерживаясь границ Изучая вариант использования из восьми этапов, я понял, что выходные условий удовлетворены уже после пятого этапа. Следовательно, этапы 6, 7 и 8 были излиш ними, так как выходили за границы варианта использования. Точно так же предвари тельные условия варианта использования должны быть удовлетворены до начала первого этапа. Изучая описание варианта использования, убедитесь, что предвари тельные и выходные условия ограничивают его соответствующим образом.

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

Команда, занимающаяся сбором информации, разработала анало гичные диалоги для определения альтернативных направлений и ис ключений. Если пользователь говорит: «По умолчание это должно быть...», значит, он описывает нормальное направление развития ва рианта использования. Такая фраза, как: «Необходимо, чтобы пользо ватель также смог..» предполагает обсуждение альтернативное на правление. Многие условия исключений удавалось выяснились, когда аналитик задавал примерно такие вопросы: «Что должно произойти, если в текущий момент БД отключена?» или «Что, если этого химиката нет в продаже?». На семинаре также удобно обсудить ожидания поль зователей, касающиеся качества продукта, например времени реак Часть II. Разработка требований к ПО ции, доступности и надежности системы, ограничений дизайна поль зовательского интерфейса и требований по безопасности.

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

Они запланировали изучение вариантов использования по возрастаю щей и их последующее многократное рассмотрение и уточнение, На рис. 8-5 показана последовательность этапов разработки вари антов использования. После семинара аналитик детально фиксирова i каждый вариант использования, как на рис. 8-6, Существует два спо соба представить этапы взаимодействия пользователя и системы, ко торые и составляют основу варианта использования. На рис. 8-6 диа лог представлен в виде пронумерованного списка этапов с указанием того, какой элемент (система или определенное действующее лицо) выполняет каждый шаг. Так же описываются и альтернативные направ ления и исключения, для которых показан этап нормального направле ния развития, на котором появляется ответвление, или этап, где воз можно исключение. Существует еще один прием — описать процесс средствами таблицы из двух столбцов, как показано на рис. 8-7 (Wirfs Brock, 1993}. Действия лица показаны в левом столбце, а реакция сис темы — в правом. Цифры указывают на последовательность этапов диалога. Эта схема отлично работает, когда с системой взаимодейст вует только один пользователь. Чтобы сделать эту таблицу более по нятной, вы можете записать каждое действие или реакцию системы в отдельной строке, чтобы альтернативная последовательность стала очевидной, как показано на рис, 8-8.

Часто варианты использования содержат дополнительную инфор мацию или требования, которые не годятся ни для одного из разделов шаблона. Для таких данных предусмотрен раздел «Специальные тре бования»: сюда записывают соответствующие атрибуты качества, тре бования к производительности и др. Также зафиксируйте любую ин формацию, которая может быть.неочевидна пользователям, например необходимое для завершения варианта использования неявное взаи модействие одной системы с другой.

Глава 8. Как понять требования пользователей Рис. 8-5. Сбор информации для варианта использования Идентификатор вари- Название варианта использования Вариант ис- Запросить пользования- анта использования Автор последнего обновления Дженис ИИ 04.12.02 Дата последнего обновления 27.12. Дата созданий Действующее лиио Сотрудник, разместивший заказ на химикат Описание Сотрудник, разместивший заказ на химикат, указывает в запросе необходимый химикат, вводя его название или номер идентификатора химиката или импорти руя его структуру из соответствующего графического средства. Система выполня ет запрос, предлагая новый или использованный контейнер с химикатом со скла да или позволяя создать запрос на заказ у стороннего поставщика.

Предварительные 1. Личность пользователя аутентифицированэ.

2. Пользователь имеет право запрашивать химикаты.

условия 3. База данных по запасам химикатов в данный момент подключена.

Выходные условия 1. Запрос сохраняется в Chemical Tracking System.

2. Запрос был отправлен по электронной почте на склад химикатов или поставщику, Рис. 8-6. Фрагмент описание варианта использования «Запросить химикат» 146 Часть II. Разработка требований к ПО Нормальное направ- 1.0 Запросить химикат со склада ление развития вари- 1. Сотрудник указывает требуемый химикат.

2. Система подтверждает, что такой химикат доступен, анта использования 3. Система перечисляет контейнеры с необходимым химикатом, имеющиеся на складе.

4. Сотрудник может просмотреть историю любого контейнера.

5. Сотрудник выбирает определенный контейнер или просит отправить запрос поставщику (альтернативное направление 1.1}.

Б. Сотрудник вводит остальную информацию, чтобы завершить запрос.

7. Система сохраняет запрос и отправляет его по электронной почте на склад химикатов.

Альтернативное на- 1.1 Запросить химикат у поставщика (ответвление после этапа 5) 1. Сотрудник ищет химикат по каталогам поставщика.

правление развития 2. Система отображает список поставщиков, где также указаны размеры, класс варианта использо и цена контейнеров.

вания 3. Сотрудник выбирает поставщика, размер, класс и количество контейнеров.

4. Сотрудник вводит остальную информацию, чтобы завершить запрос.

5. Система сохраняет запрос и отправляет его по электронной почте поставщику, Исключения 1.0.И. 1. Химикат не доступен (на этапе 2).

1. Система отображает сообщение «Химикат не существует".

2. Система спрашивает сотрудника, хочет ли он запросить другой химикат или выйти из программы.

За. Сотрудник просит запросить другой химикат.

4а. Система заново начинает нормальное направление развития варианта ис пользования.

36. Сотрудник решает выйти из системы.

46. Система завершает вариант использования.

1.0.И.2. Химиката нет в продаже (на этапе 5).

1. Система отображает сообщение «Нет поставщика этого химиката».

2. Система спрашивает сотрудника, хочет ли он запросить другой химикат или выйти из программы.

За. Сотрудник запрашивает другой химикат.

4а. Система заново начинает нормальное направление развития варианта ис пользования, 36. Сотрудник решает выйти из системы.

46. Система завершает вариант использования.

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

Бизнес-правила Бизнес-правило-28 Только сотрудник, получивший разрешение заведующе го лаборатории, может запрашивать химикаты.

Рис. 8-6. Фрагмент описание варианта использования «Запросить химикат» (продолжение) Глава 8. Как понять требования пользователей Специальные 1. Система должна импортировать химические структуры в ставдаргной зашиф требования рованной форме из любых средств, поддерживающих рисование химических структур.

1. Импортированные химические структуры должны быть достоверными, Предположения Замечания и вопросы 1. Тим выяснит, нужно ли одобрение руководства для запроса химиката, относя щегося к уровню 1 списка опасных химикатов. Дата выполнения: 04.01.03.

Рис. 8-6. Фрагмент описание варианта использования «Запросить химикат» (продолжение).действия лица Реакция системы 1, Укажите необходимый химикат, 2. Убедится, что такой химикат существует.

4. или нужне, запросите историю любого контейнера, 3- Отобразит список контейнеров с необходимым 5. Выберите определенный контейнер (выполнено) \»т химикатом, в данный МОМЕНТ числящихся на складе.

попросите отправить заказ поставщику {альтернативное направление 1.1).

Рис. 8-7. Описание этапов варианта использования в двухстолбцовом формате Реакция системы Действия лица 1. Укажите необходимый химикат. 1. Убедатся, что такой химикат существует, 4. Если нужно, ззпросиш историю любого контейнера. 3. Отобразит спигаж контейнеров с необходимым химикатом, в данный момент числящихся на складе.

5. Выберите опредепенньй контейнер (выполнено) или попросите отправить заказ поставщику (альтернативное направление 1.1).

Рис. 8-8. Альтернативный макет для описания этапов варианта использования в двухстолбцовом формате Вам не всегда необходимо полное описание варианта использова ния. Alistair Cockburn (2001) описывает рабочий (casual) и полный (fully dressed) шаблоны вариантов использования (последний показан на рис. 8-6). Рабочий вариант использования — это просто текстовое из ложение целей пользователя и взаимодействий с системой;

что-то вроде раздела «Описание» на рис. 8-6. Рассказы пользователей, кото рые рассматриваются как требования в экстремальном программиро вании, представляют собой, по существу, рабочие версии варианта ис пользования, как правило, написанные на учетных карточках (Jeffries, Anderson и Hendrickson, 2001). Полные описания вариантов использо вания необходимы, если:

148 Часть II. Разработка требований к ПО I в работе над проектом представители пользователей действуют не в тесной связи с разработчиками;

I приложение сложное, и высок риск сбоев системы;

I описания вариантов использования — это самый низкий уровень детализации требований, предназначенный для разработчиков;

i вы планируете разработать подробные варианты тестирования на основании пользовательских требований;

I для совместной работы территориально удаленных друг от друга команд необходимо детальные общие данные.

Ловушка Не пытайтесь догматически определять количество деталей, которые необходимо включить в вариант использования;

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

На рис. 8-5 показано, что после каждого семинара аналитики Chem ical Tracking System выявляли функциональные требования к ПО на ос нове описаний вариантов использования (подробнее об этих темах — в следующем разделе главы). Они также создали модели анализа для некоторых сложных вариантов использования, например диаграмму перехода состояний, показывающую все возможные состояния запро са химиката и все допустимые изменения состояний.

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

Они прокручивали в уме дискуссии, которые только что завершились, и не замечали ошибок, Глава 8. Как понять требования пользователей В главе 11 описано несколько моделей анали Дополнительная информация за для Chemical Tracking System, Не ждите окончания сбора информации по требованиям, чтобы про Ловушка сить пользователей заняться просмотром собранного материала.

На ранних стадиях разработки Chemical Tracking System руководи тель тестирования создал концептуальные варианты тестирования, не зависящие от специфики реализации, на основе вариантов использо вания (Collard, 1999). Эти варианты тестирования помогли прийти ко манде к общему четкому пониманию того, как система должна функ ционировать при реализации определенных сценариев использова ния. Эти варианты тестирования позволили аналитикам проверить, действительно ли выявлены все функциональные требования, необхо димые для выполнения пользователями каждого варианта использо вания. На заключительном семинаре, участники вместе провели кри тический анализ вариантов тестирования, чтобы убедиться, что одина ково понимают, как должны работать варианты использования. Как и при любом контроле качества, они нашли ошибки и в требованиях, и в вариантах тестирования.

Дополнительная информация В главе 15 детально обсуждается, как соста вить варианты тестирования на основании требований.

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

Некоторые практики считают, что варианты использования это и есть функциональные требования. Однако мне случалось видеть, как возникали проблемы из-за того, что варианты использования просто 150 Часть II. Разработка требований к ПО передавались разработчикам для реализации. Варианты использова ния описывают точку зрения пользователя, его взгляд на внешнее, видимое поведение системы. В них не содержится всей информации, которая необходима разработчику для написания ПО, Так, человек1,,-, использующему банковский автомат, не важно, какие неочевидные действия этот автомат должен выполнить, например взаимодейство вать с компьютером банка. Эти детали невидимы для пользователя, однако разработчик должен о них знать. Естественно, в описания ва риантов использования могут входить такие детали подобных неоче видных процессов, однако, как правило, в ходе дискуссий с пользова телями такие вопросы не поднимаются. Даже у разработчиков, кото рым передали полные варианты использования, часто возникает много вопросов. Чтобы уменьшить эту неопределенность, я рекомен дую аналитикам требований ясно расписывать детали функциональ ных требований, необходимых для реализации каждого варианта ис пользования (Arlow, 1998).

Многие функциональные требования не записаны в последователь ности диалогов действующего лица и системы. Некоторые из них оче видны, например: «Система назначит уникальный порядковый номер каждому запросу» Нет смысла повторять эти детали в спецификации требований к ПО, если они совершенно ясно указаны в варианте ис пользования. Другие функциональные требования не входят в описа ние варианта использования. Их выявляет аналитик на основании о>> щего представления о варианте использования и операционной среды системы. Преобразование требований, как их видит пользователь, в форму, полезную разработчикам, — задача аналитика, один из многих способов, позволяющих ему обогатить проект.

В Chemical Tracking System варианты использования в основном применялись в качестве механизма для определения необходимых функциональных требований. Аналитики составляли только рабочие описания наименее сложных вариантов использования. Затем они вы являли все функциональные требования, которые после реализации позволяли выполнять все варианты использования, в том числе аль тернативные направления и обработчики исключений. И далее доку ментировали эти функциональные требования в спецификации требо ваний к ПО, сформированной с учетом особенностей продукта.

Задокументировать функциональные требования, связанные с ва риантом использованием, можно несколькими способами. Выбор способа зависит от того, как ваша команда будет выполнять дизайн, сборку и тестирование — на основе документации о вариантах исполь зования, спецификации требований к ПО или применяя оба этих доку Глава 8. Как понять требования пользователей мента. Ни один из этих методов нельзя назвать идеальным, поэтому выберите тот, что лучше позволит вам документировать и управлять требования к ПО вашего проекта.

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

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

Подробнее о средствах управления требова Дополнительная информация ниями - в главе 21.

Только спецификация требований к ПО Третий способ — упорядочить спецификацию требований к ПО по ва риантам использования или функциям и включить последние в специ фикацию. Именно его и применяли специалисты, работавшие над Chemical Tracking System. В этой схеме нет отдельных документов для вариантов использования. Вы определяете повторяющиеся функцио нальные требования или указываете каждое функциональное требова 152 Часть II. Разработка требований к ПО ние только один раз и ссылаетесь на него при каждом появлении его в другом варианте использования.

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

Очень расточительно и болезненно для разработчиков писать код, которым никогда не удастся воспользоваться. Если вы будете заблаго временно определять требования и включать в них все мыслимые функции, то рискуете создать избыточные требования. Способ с при менением вариантов использования позволяет выявить функциональ ные требования, с помощью которых пользователи будут выполнять конкретные задачи. Так вы предотвратите появление «функций-си рот», тех, что в ходе сбора информации казались весьма полезными, однако которыми никто че будет пользоваться из-за того, что они не связаны напрямую с решением рабочих задач, Способ с применением вариантов использования облегчает расста новку приоритетов требований. Высшим приоритетом обладают те функциональные требования, которые созданы на основе вариантов использования с высшим приоритетом. Высший приоритет назначавг ся по следующим причинам:

§ варианты импользования описывают один из основных бизнес-про цессов, активизируемых системой;

I многие пользователи часто обращаются к ним;

их запросил привилегированный класс пользователей;

i они предоставляют возможности, необходимые для соответствия требованиям;

$ функции других систем зависят от их наличия.

Глава 8. Как понять требования пользователей Ловушка Не тратьте много времени на обсуждение деталей вариантов исполь зования, которые не будут реализованы в ближайшие месяцы или годы. Вероятнее всего, они изменятся еще до начала сборки.

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

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

Каких ловушек следует опасаться при способе с применением вариантов использования Как и любой другой способ разработки ПО, применение вариантов ис пользования чревато возникновением множества проблем (Kulak и Guiney, 2000;

Lilly, 2000).

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

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

Вам не дано контролировать сложность бизнес-задач, но вы можете выбрать способ их представления в вариантах использования. Вы 154 Часть II. Разработка требований к ПО берите один успешный способ выполнения варианта использова ния, с одной комбинацией значений правильных и ложных значении для различных логических решений и назовите его нормальным на правлением. Другие успешные логические ответвления определите как альтернативные направления и назначьте исключения для обра ботки неудачных ответвлений. Альтернативных направлений может быть множество, однако каждое должно быть кратким и понятным, Чтобы не усложнять эту схему, записывайте варианты использова ния в терминах, основных для взаимодействий пользователя и сис темы, без особой детализации.

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

i Включения определения данных в варианты использования.

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

i Варианты использования, которые непонятны пользователям.

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

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

i Слишком частое упоминание слов расширить и включить. На чиная работу с вариантами использования, необходимо изменить отношение аналитиков, пользователей и разработчиков к требова ниям. Тонкости взаимоотношений, определяемых словами расши рить и включить, могут запутать кого угодно. Лучше избегать их, по ка вы не освоите способ с применением вариантов использования.

Таблицы «событие - реакция» Есть еще один способ систематизации и документации пользователь ских требований: определить внешние события, на которые система должна реагировать. Событием (event) называется какое-либо измене ние или действие в среде пользователя, вызывающее реакцию систе мы ПО (McMenamin и Palmer, 1984;

Wiley, 2000). В таблице «событие — реакция» (event-response table) [ее также называют таблицей событий (event table) или списком событий (event list)] перечислены все такие события и ожидаемое поведение системы, которое должно последо вать, как реакция на каждое событие. Существует несколько типов сис темных событий, они показаны на рис. 8-9 и описаны далее:

I взаимодействие пользователя с ПО, как когда он, например, вызы вает вариант использования [иногда называется бизнес-событием (business event)]. Последовательность событий и реакций соответ ствует этапам взаимодействия для этого варианта использования, В отличие от вариантов использования, в таблице «событие — реак ция» не описываются цели пользователя при работе с системой и не приводятся причины, по которым эта последовательность событий и реакций имеет значение для пользователя;

I контрольный сигнал, чтение данных или прерывание, полученное от внешнего аппаратного устройства, например при изменении поло жения выключателя, изменении напряжения или перемещении мы ши пользователем;

156 Часть II. Разработка требований к ПО событие инициируется в определенный момент времени (скажем, автоматический запуск экспорта данных в полночь) или когда исте кает предварительно заданный период времени с момента опреде ленного события (например, система фиксирует температуру, счи тываемую сенсором каждые 10 секунд).

предварительно определенное время Рис, 8-9. Примеры системных событий и реакций Таблицы «событие — реакция» особенно хороши для управления системами, работающими в режиме реального времени. Табл. 8- представляет собой простую таблицу «событие — реакция», в которой частично описано поведение очистителей ветрового стекла автомоби ля. Обратите внимание, что ожидаемая реакция зависит не только от события, но и от состояния, в котором находится система во время со бытия. Например, результаты событий 4 и 5.1 в табл. 8-1 различаются из-за того, были ли включены «дворники» в момент, когда пользова тель настроил управление «дворниками» на периодический режим. Ре акция может просто изменить некоторую внутреннюю системную ин формацию (события 4 и 7.1 в таблице) или привести к результату, за метному извне (большинство других событий).

Информация в таблице «событие — реакция» фиксируется на уровне пользовательских требований. Если в таблице определены и названы все возможные комбинации событий, состояний и реакций (включая условия исключений), таблица также может служить частью функцио нальных требований для этого фрагмента системы. Однако аналитик должен добавить дополнительные функциональные и нефункциональ ные требования в спецификацию требований к ПО. Например, сколько Глава 8. Как понять требования пользователей «взмахов» в минуту делают «дворники» в быстром и медленном режиме очищения? В быстром или медленном режиме выполняется периоди ческая очистка? Является ли периодический режим непрерывно изме няющимся или он работает дискретно? Каковы максимальный и мини мальный интервал времени при работе в периодическом режиме? Если вы закончите работу на уровне пользовательских требований, разра ботчику самому придется выяснять эту информацию. Помните, ваша цель — сформулировать требования настолько точно, чтобы разработ чик знал, что строить.

Обратите внимание, что события, перечисленные в табл. 8-1 запи саны на важнейшем уровне (описывается суть события), а не на уров не реализации (описываются особенности реализации). В табл. 8- ничего не говорится о том, как выглядит элемент управления «дворни ками» или о том, как пользователь управляет ими. Дизайнер может реализовать эти требования как угодно — от традиционных элементов управления «дворниками», как в современных автомобилях, до систе мы распознавания голоса, реагирующей на произносимые команды:

«включить дворники», «выключить дворники», «быстрая очистка», «очи стить один раз» и т.д. Записывая пользовательские требования на важ нейшем уровне, вы избежите введения ненужных ограничений дизай на. Однако следует фиксировать все известные ограничения по дизай ну, чтобы заставить разработчика думать.

Таблица 8-1. Таблица «событие - реакция» для автомобильных «дворников» ID Событие Состояние системы Реакция системы 1.1 установка системы улравле- «дворники» отключены установка механизма ния «дворниками» в режим «дворников» в режим мед медленной очистки ленной очистки 1.2 установка системы управле- быстрая очистка установка механизма ния «дворниками» в режим «дворников» в режим мед медленной очистки ленной очистки 1.3 установка системы управле- периодическая очистка установка механизма ния «дворниками» в режим «дворников» в режим мед медленной очистки ленной очистки 2.1 установка системы управле- «дворники» отключены установка механизма «дворников» г режим быст кия ^дворниками» в режим быстрой очистки рой очистки 158 Часть II. Разработка требований к ПО Таблица 8-1. Таблица «событие - реакция» для автомобильных «дворников» (продолжение) ID Событие Состояние системы Реакция системы установка системы управле- медленная очистка 2.2 установка механизма ния «дворниками" в режим «дворников» в режим быстрой очистки быстрой очистки установка системы управле- периодическая очистка 2.3 установка механизма ния «дворниками» в режим «дворников» в режим быстрой очистки быстрой очистки 3.1 отключение системы управ- быстрая очистка 1. завершение текущего чикла очистки ления «дворниками^ 2. выключение механиз ма «дворников» отключение системы управ- медленная очистка 1. завершение текущего 3. чикла очистки ления «дворниками* 2. выключение механиз ма «дворников» отключение системы управ- периодическая очистка 3.3 1. завершение текущего чикла очистки ления «дворниками» 2. выключение механиз ма «дворников» 4 установка системы управле- «дворники» отключены 1. считывание временного интервала очистки ния «дворниками» в режим 2, инициализация тайме периодической очистки ра очистки 1. считываниевременногс 5.1 установка системы управле- быстрая очистка интервала очистки ния «дворниками» в режим 2. завершение текущего периодической очистки чикла очистки 3. инициализация таймо ра очистки 1. считываниевременнг'ГО 5.2 установка системы управле- медленная очистка интервала очистки ния «дворниками» в режим 2. завершение текущей:) периодической очистки чикла очистки 3. инициализация тай мера очистки периодическая очистка выполнение одного цикла со времени предыдущем медленной очистки очистки прошел установ ленный интервал времени Глава 8, Как понять требования пользователей Таблица 8-1. Таблица -событие - реакция» для автомобильных «дворников» (продолжение) Состояние системы Реакция системы ID Событие периодическая очистка 1. считывание временного 7.1 измение интервала перио интервала очистки дической очистки 2. инициализация тайме ра очистки «дворники» отключены реакция отсугсвует 7.2 измение интервала перио дической очистки 7,3 измение интервала перио- быстрая очистка реакция отсугсвует дической очистки 7.4 изменив интервала перио- медленная очистка реакция отсутсвует дической очистки «дворники» отключены 8 получение сигнала на вы- выполнение одного цикла полнение периодической медленной очистки очитски Что теперь?

I Составьте несколько вариантов использования для вашего текущего проекта на основании шаблона иа рис. 8-6. Включите в них все альтернативные направле ния развития и исключения. Определите функциональные требования, которые позволят пользователю успешно завершить каждый вариант использования.

Проверьте, не включены ли уже все эти функциональные требования в специфи кации требований к ПО.

1 Перечислите все внешние события, которые могут вызвать определенное поведе ние системы. Создайте таблицу «событие - реакция», в которой показано состоя ние системы в момент воздействия каждого события и реакция системы на него.

160 Часть II. Разработка требований к ПО Игра по правилам «Привет, Тим, этоДжекки. У меня проблема с запросом хими ката при помощи системы контроля химикатов. Мой менеджер посоветовал обратиться к тебе. Он сказал, что ты был сторон ником продукта и занимался требованиями к этой системе».

«Да, это так, — ответил Тим. —А в чем проблема?» «Мне нужно еще немного фосгена для красок, которыми я сей час занимаюсь, — сказала Джекки, — но система не принимает мой запрос и сообщает, что я уже больше года не посещала занятий по работе с опасными химикатами. О чем это она? Я годами работала с фосгеном и еще более страшными химик.з тами — и никаких проблем. Почему же мне нельзя получить еще немного фосгена?» «Ты, возможно, знаешь, что Contoso Pharmaceuticals требует от сотрудников ежегодно прослушивать курс по безопасной работе с химикатами, — заметил Тим. — Такова корпоративная политика;

система контроля химикатов лишь проводит ее в жизнь. Я знаю, что раньше кладовщики давали тебе все, что требовалось, но теперь из-за страховки это невозможно. Из вини за неудобства, но мы должны подчиняться правилам. Те бе придется пройти обучение, чтобы система выполнила твой запрос».

В любой организации действует широкий набор корпоративных поли тик, законов и промышленных стандартов. Такие отрасли, как банков ское дело, авиация и производство медицинской техники, подчиняют ся постановлениям правительства. Все эти контролирующие принци пы в целом называются бизнес-правилами (business rules). Зачастую их выполнение и соблюдение осуществляется средствами программ ных систем. В других случаях за соблюдением правил и процедур сле дят люди.

Большинство бизнес-правил берут начало вне контекста какой-либо конкретной программной системы. Такие правила, как корпоративная политика, обязывающая ежегодно прослушивать курс по работе с опасными химикатами, действуют, даже если приобретение и распро странение химикатов осуществляется исключительно вручную. Стан дартные правила отчетности существовали даже в дни зеленых наглаз ных повязок для сна и чернильных авторучек. Тем не менее бизнес правила — один из основных источников функциональных требований к ПО, поскольку они определяют возможности, которыми должна обла дать система для выполнения правил. Даже бизнес-требования высо кого уровня могут определяться бизнес-правилами;

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

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

Если вам известно, где и как каждое приложение реализует относя щиеся к нему бизнес-правила, модифицировать приложения в случае изменения правил станет гораздо легче.

Недокументированные бизнес-правила известны только отдельным Ловушка специалистам, а посему они теряются, когда последние увольняются или переходят на другую работу.

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

162 Часть II. Разработка требований к ПО Правила бизнеса Согласно определению Business Rules Group (1993), «бизнес-правило — это положение, определяющее или ограничивающее какие-либо сто роны бизнеса;

его назначение — защитить структуру бизнеса, контро лировать или влиять на его операции». Целые методологии разработа ны специально для создания и документирования бизнес-правил и их применения в автоматизированных системах (Ross, 1997;

von Hall'ii, 2002). Если вы не создаете систему, которая в значительной степени управляется бизнес-правилами, тщательно разработанная методоло гия вам не нужна. Достаточно выявить и задокументировать относя щиеся к вашей системе правила и связать их с конкретными функцио нальными требованиями, Для организации бизнес-правил предлагается множество разных таксономии (схем классификации) (Ross, 2001;

Morgan, 2002;

von Halle, 2002). Простейшая из них (рис. 9-1), из пяти типов бизнес-правил, го дится в большинстве случаев. Шестая категория — термины: важные для бизнеса слова, фразы и аббревиатуры. Их удобно хранить в слова ре. Вести согласованный свод бизнес-правил гораздо важнее при раз работке продукта, чем горячо дискутировать о том, как их классифици ровать. Давайте рассмотрим различные типы бизнес-правил, с которы ми вам придется столкнуться.

Факты Ограничения Активаторы операций Рис. 9-1. Простая таксономия бизнес-правил Факты Факты (facts) — это всего лишь верные утверждения о бизнесе. За частую они описывают связи и отношения между важными бизнес терминами. Факты также называют инвариантами — неизменными истинами о сущности данных и их атрибутах. Бизнес-правила во мно гих случаях могут ссылаться на определенные факты, однако послед ние обычно не преобразуются напрямую в функциональные требова ния к ПО. Сведения о сущности данных, важных для системы, иногда Глава 9. Игра по правилам применяют в моделях данных, создаваемых аналитиком или архитек тором БД (подробнее о моделировании данных — в главе 11).

Вот примеры фактов:

1 на каждый химический контейнер нанесен уникальный штрих-код;

I оплачивается доставка каждого заказа;

i каждый элемент заказа содержит данные о химикате, его качестве, размере контейнера и числе контейнеров;

1 стоимость билетов не возвращается, если покупатель изменяет маршрут;

1 со стоимости доставки налог с продаж не берется.

Ограничения Ограничения (constraints) — определяют, какие операции может выпол нять система и ее пользователи. Вот некоторые слова и фразы, которые часто применяются при описании ограничивающего бизнес-правила:

должен, не должен, не может и только. Например, в таких комбинациях:

I договор о займе человека младше 18 лет должен подписывать один из его родителей или законный опекун;

I постоянный посетитель библиотеки может отложить для себя до книг;

1 сотрудник может запросить вещество из списка химикатов первого уровня опасности, только если за последние 12 месяцев он прошел обучающий курс работы с опасными соединениями;

1 все программы должны соответствовать правительственным поста новлениям, касающимся использования их людьми с ослабленным зрением;

I в корреспонденции не может отображаться больше 4 цифр номера социального страхования гражданина;

I экипажи коммерческих авиарейсов должны каждые 24 часа отды хать не менее 8 часов.

Так много ограничений У проектов по разработке ПО множество разных ограничений. Менеджеры проекта должны соблюдать расписание, а также лимиты по персоналу и бюджету. Эти огра ничения уровня проекта фиксируются в плане управления проектом по разработке ПО. Ограничения уровня продукта на проектирование и реализацию, уменьшающие доступные разработчику возможности, записаны в спецификации требований к ПО или спецификации архитектуры. Многие бизнес-правила налагают ограничения на 164 Часть II. Разработка требований к ПО деловые операции. Когда бы эти ограничения ни были отражены в функциональных требованиях к ПО, следует указать соответствующие правила в качестве обоснова ния всех производных требований.

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

Как мне отказали Недавно я хотел заказать, используя часть моих «миль постоянного клиента» авиа компании Ry-By-Night Airlines, билет для моей жены Крис. Когда я попытался сде лать это, сервер FlyByNight.com сообщил мне, что из-за возникшей ошибки выдача билета невозможна, и предложил немедленно позвонить по номеру 800-FLY-NITE.

Менеджер по бронированию, который поднял трубку, сообщил, что авиакомпания не может оформить премиальный билет за налетанные мной мили по обычной или электронной почте, поскольку у меня и Крис разные фамилии. Для получения билета мне пришлось ехать в кассу аэропорта и предъявлять удостоверение личности.

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

ПО Web-узла Ry-By-Night исправно реализует данное правило, но создает неудобст ва клиентам. Вместо того, чтобы сообщить мне о правиле, касающемся разных фа милий и действиях, которые мне следует выполнить, система просто вывела преду преждение об ошибке. В результате мы с менеджером компании Fly-By-Night по бронированию потратили время на ненужный телефонный разговор. Плохо проду манные реализации бизнес-правил могут вызвать неприятие клиентов и, следова тельно, отрицательно скажутся на вашем бизнесе.

Активаторы операций Правило, при определенных условиях приводящее к выполнению ка ких-либо действий, называется активатором операции (action en abler). Человек может выполнять эти действия вручную. Как вариант, Глава 9. Игра по правилам правило может управлять некоторыми программными функциями, благодаря которым приложение при выполнении определенных усло вий реализует нужную модель поведения. Условия, определяющие вы полнение операции, иногда представляют собой сложную комбина цию значений «истина» и «ложь», выполняющихся для нескольких от дельных условий. Таблица решений, такая, как в главе 11, — это выразительный способ документирования активирующих операции бизнес-правил расширенной логики. Выражение вида «Если <некото~ рое условие верно или наступило определенное событие>, то <что-тс произойдет>», — это ключ, который описывает активатор операции.

Вот несколько примеров таких бизнес-правил:

I если на складе имеются контейнеры с запрошенным химикатом, их следует предложить запросившему химикат лицу;

I если срок хранения контейнера с химикатом истек, об этом необхо димо уведомить лицо, у которого в данный момент находится кон тейнер;

1 в последний день квартала должны генерироваться отчеты для Управления по безопасности труда и Агентства по защите окружаю щей среды охранении и использовании химикатов в этом квартале;

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

тем не менее, раздел «то» вывода за ключает в себе факт или предположение, а не действие. Вот несколько примеров выводов:

i если платеж не поступил в течение 30 календарных дней с момента отправки счета, счет считается просроченным;

I если поставщик не может поставить заказанный товар в течение пя ти дней с момента получения заказа, заказ считается невыполнен ным;

Часть II. Разработка требований к ПО I считается, что срок хранения контейнеров с химикатами, разлагаю щимися на взрывоопасные составляющие, истекает через один год с даты изготовления;

П химикаты с токсичностью агента LD50 ниже 5 мг на килограмм мас сы мыши считаются опасными.

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

к&к вариант, их можно представить в символьной форме, например в виде математического выражения. Представление таких правил в виде таб лицы (табл. 9-1) гораздо понятнее, чем длинный список сложных тек стовых выражений:

I цена единицы товара снижается на 10% при заказе от 6 до 10 еди ниц, на 20% — при заказе от 11 до 20 единиц и на 30% — при заказе свыше 20 единиц;

i плата за доставку по суше в пределах страны для заказов весом свыше 2 фунтов составляет 34,75 плюс 12 центов на унцию или ее часть;

1 комиссия за операции с ценными бумагами, осуществлявшиеся в интерактивном режиме, составляет $12 при числе акций от 1 до 5000. Комиссия за операции, осуществлявшиеся через специали ста по торговле ценными бумагами, составляет $45 при числе акц^й от 1 до 5000. При числе акций свыше 5000 комиссия составляет по ловину указанной суммы;

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

Глава 9. Игра по правилам Таблица 9-1. Использование таблицы для вычислений, необходимых для представления бизнес-правил Скидка, % Количество приобретаемых единиц товара Идентификатор 1- DISC- ю DISC-2 6- 11- DISC- свыше DISC - Отдельное вычисление может включать множество элементов.

В последних примерах общая стоимость учитывает скидку на количе ство, налог с продаж, стоимость доставки и страховой сбор. Это пра вило запутанно и сложно для понимания. Чтобы избавиться от данного недостатка, пишите свои бизнес-правила на элементарном уровне, а не объединяйте множество деталей в одно правило. Сложное правило может ссылаться на используемые в нем отдельные правила. Это сде лает их краткими и простыми. Кроме того, так вы сможете повторно использовать их и комбинировать различными способами. Чтобы пи сать вычисления и активирующие операции бизнес-правила на эле ментарном уровне, не используйте в левой части конструкции «если — то» логику «или», а в правой части этой же конструкции — логику «и» (von Halle, 2002}. К элементарным бизнес-правилам, влияющим на вы числение общей стоимости из примера выше, относятся правила вы числения скидки из табл. 9-1, а также следующие правила:

1 если адрес доставки находится в штате, где действует налог на про дажи, то он вычисляется исходя из общей стоимости заказанных то варов с учетом скидки;

1 если адрес доставки относится к округу, где действует налог на про дажи, то он вычисляется исходя из общей стоимости заказанных то варов с учетом скидки;

1 страховой сбор составляет 1 % от общей стоимости заказанных то варов с учетом скидки;

i налог на продажи не взимается со стоимости доставки;

1 налог на продажи не взимается со страхового сбора.

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

168 Часть II. Разработка требований к ПО Документирование бизнес-правил Поскольку бизнес-правила зачастую влияют на множество приложе ний, организациям следует управлять этими правилами на корпора тивном уровне, а не на уровне проектов. Для начала достаточно про стого каталога бизнес-правил. Большим организациям, а также ком паниям, деловые операции и информационные системы которых в значительной степени регулируются и управляются бизнес-правила ми, следует создать БД таких правил. Если ваш каталог правил уже не помещается в файле текстового процессора или редактора электрон ных таблиц или если вы хотите автоматизировать отдельные стороны реализации правил в ваших приложениях, вам наверняка пригодятся коммерческие средства управления правилами. Группа Business Rukis Group публикует список продуктов для управления бизнес-правилами на странице http://www.businessrulesgroup.org/brglink.htm. По мере того, как вы при работе над приложением определяете новые правили, добавляйте их в каталог, а не вписывайте в документацию конкретною приложения или, что еще хуже, только в его код. При неправильном управлении и выполнении правила, относящиеся к безопасности, за щите, финансам и соответствию различным постановлениям, стано вятся опасными для вас.

Не пытайтесь сделать свой каталог бизнес-правил более сложным, Ловушка чем необходимо. Используйте простейшую форму документирования правил;

это гарантирует, что команда разработчиков сможет эффективно использовать их.

По мере приобретения опыта выявления и документирования биз нес-правил стоит подумать о применении структурированных шабло нов для определения правил разных типов {Ross, 1997;

von Halle, 2002). В этих шаблонах описываются образцы ключевых слов и разде лов, позволяющих согласованно структурировать правила. Кроме то го, они упрощают хранение правил в БД, коммерческих инструментах для управления бизнес-правилами или в ядре правил. Для начала по пробуйте использовать простой формат документирования правил, показанный в табл. 9-2 (Kulak и Guiney, 2000).

Как видно из этой таблицы, присвоив каждому правилу идентифи катор, вы сможете отслеживать, от какого правила происходит то или иное функциональное требование. Поле «Тип правила» указывает, чем является правило: фактом, ограничением, активатором операции, ВЫЕЮ дом или вычислением, Поле «Статичное или динамическое» указывает, Глава 9. Игра по правилам насколько вероятно изменение правила с течением времени. Источни ками правил могут быть корпоративные политики, политики менедж мента, профильные специалисты и прочие лица, документы, например правительственные постановления, а также имеющийся код ПО и оп ределения БД.

Таблица 9-2. Пример каталога бизнес-правил я.. Статичное или Источник Определение Иденти правила динамическое фикатор правила Статичное Корпоратив Пользователь может Ограничение ORDER- ная политика запросить вещество из списка химикатов первого уровня опасности, только если за последние 12 ме сяцев он прошел обучаю щий курс по работе с опас ными соединениями Размер скидки вычисляет- Вычисление Динамическое Корпоратив DISC- ся на основе размера зака- ная политика за согласно данным табл. 9- Бизнес-правила и требования Просто задавая пользователем вопрос: «Что представляют собой ва ши бизнес-правила?», практически невозможно получить нужную ин формацию, точно так же, как не удается собрать нужные сведения о требованиях, задавая при сборе требований вопрос пользователям:

«Чего вы хотите?» В зависимости от приложения бизнес-правила ино гда создаются по ходу работы, а иногда — в процессе обсуждения тре бований, Зачастую заинтересованные в проекте лица уже знают, какие бизнес-правила влияют на создаваемое приложение, и команда раз работчиков будет работать в рамках, определяемых этими правилами, Комплексный процесс выявления бизнес-правил описан Barbara von Halle (2002).

На семинарах для выявления требований аналитик может поинте ресоваться обоснованием требований и ограничений, выдвигаемых пользователями. Нередко выясняется, что они определяются бизнес правилами. Иногда аналитику удается также выявить бизнес-правила, 170 Часть II. Разработка требований к ПО которые определяют прочие артефакты и модели требований (Gottes diener, 2002). На рис, 9-2 показано несколько возможных источников правил (и в некоторых случаях — вариантов использования и функцио нальных требований). Кроме того, здесь перечислены некоторые во просы, которые может задавать аналитик участникам семинара при обсуждении различных проблем и объектов. Следует задокументиро вать выявленные бизнес-правила, попросить компетентных люде^ подтвердить их правильность и предоставить недостающие данные.

Политики Почему это необходимо делать именно в такой форме?

Чего требует Как взаимосвязаны правительство? элементы данных ?

Х- -/ Решения Бизнес-правила ewcTB предпринять Yfl y°uy« лиц дальше?

s ч t в результате чего Что может произойти, изменяется состояние объекта? а что - нет?

\_-.^ ^ Как система узнает, что делать дальше?

Решения системы Рис. 9-2. Выявление бизнес-правил с помощью разнообразных вопросов Идентифицировав и задокументировав бизнес-правила, определи те, какие из них необходимо реализовать в программном продукте.

Некоторые правила определяют варианты использования и функцио нальные требования, которые их реализуют. Рассмотрим три правила.

% Правило № 1 (активатор операции). «Если срок хранения контей нера с химикатом истек, об этом необходимо уведомить лицо, у ко торого в данный момент находится контейнер».

1 Правило № 2 (вывод). «Считается, что срок хранения контейнеров с химикатами, разлагающимися на взрывоопасные составляющие, истекает через один год с даты изготовления».

Глава 9. Игра по правилам I Правило № 3 (факт). «Эфир может спонтанно образовывать взры воопасную перекись».

Эти правила определяют вариант использования, известный, как «Известить владельца химиката об истечении срока хранения». Одно из функциональных требований для данного варианта использования таково: «Система должна по электронной почте уведомить об владель ца контейнера с химикатом об истечении срока хранения химиката».

Связи между функциональным требованием и породившими его бизнес-правилами определяют двумя способами;

I используя атрибут «Источник», указывают правила в качестве источ ников функционального требования (подробнее — в главе 18);

I определяют связи между функциональным требованием и соответ ствующими бизнес-правилами в матрице связей (подробнее — в главе 20).

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

Иногда бизнес-правила и соответствующие им функциональные требования весьма похожи. Тем не менее правила — это внешние по ложения политики, которые требуется реализовать в ПО;

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

Вспомним ограничивающее правило для системы контроля химика тов, согласно которому запрос пользователя о выделении опасных хи микатов удовлетворяется, только если за последние 12 месяцев поль зователь прослушал курс по работе с ними. Аналитику придется опре делить соответствующие этому правилу функциональные требования в зависимости от того, доступна ли БД записей об обучении в интерактив ном режиме или нет. Если да, система может просто просмотреть за пись об обучении пользователя и решить, принять или отклонить его за прос. Если записи в интерактивном режиме недоступны, система может временно сохранить запрос на химикат и по электронной почте обра титься к руководителю курса, который, в свою очередь, подтвердит или не подтвердит запрос. Правило одинаково для обеих ситуаций, однако функциональные требования к ПО — действия, предпринимаемые сис 172 Часть II. Разработка требований к ПО темой, если бизнес-правило встречается в ходе работы — различаются в зависимости от рабочей среды системы.

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

1 исчезает необходимость модифицировать и бизнес-правило, и со ответствующие функциональные требования при изменении прави ла;

I в спецификации требований к ПО отражаются последние измене ния правил, поскольку спецификация требований к ПО просто ссы лается на основную копию правила;

1 упрощается повторное использование одного правила в нескольких разделах спецификации требований к ПО и в нескольких проектах безо всякого риска несогласованности, поскольку правила не похо ронены в документации отдельного приложения.

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

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

Глава 9. Игра по правилам Что теперь?

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

174 Часть II. Разработка требований к ПО Документирование требований Итог разработки требований -- задокументированное соглашение' между клиентами и разработчиками о создаваемом продукте. Как уже говорилось в предыдущих главах, в документе об образе и границах проекта содержатся бизнес-требования, а пожелания пользователей часто фиксируются в виде вариантов использования продукта. Под робные функциональные и нефункциональные требования к продукту записаны в спецификации к требованиям к ПО. Однако если вы не со берете все требования вместе в виде структурированного и читабель ного материала и не ознакомите с этим документом всех заинтере сованных в проекте лиц, то у людей не будет уверенности, что они со гласны со всеми положениями.

Способов представления требований несколько:

I документация, в которой используется четко структурированный и аккуратно используемый естественный язык;

1 графические модели, иллюстрирующие процессы трансформации, состояния системы и их изменения, взаимодействия данных, а так же логические потоки, классы объектов и отношения между ними;

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

Последний метод обеспечивает наивысшую степень точности, од нако немногие разработчики — и еще меньше клиентов — знакомы :;

ним, поэтому они не могут, используя этот метод, проверить специфи кации на наличие ошибок. Подробно формальные способы составле ния спецификаций описаны в Davis (1993). Несмотря на недостатки, наиболее практичным подходом остается структурированный естест венный язык, дополненный графическими моделями.

7- Даже самая лучшая спецификация к требованиям не заменит лич ное обсуждение в ходе проекта. Невозможно заранее выяснить каж дый нюанс, используемый при разработке ПО. Старайтесь не пре рывать взаимодействие команды разработчиков, представителей кли ентов, тестеровщиков и других заинтересованных лиц— только так удастся оперативно решать мириады вопросов, которые непременно возникнут.

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

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

Спецификация требований к ПО необходима различным участникам проекта:

I клиенты, отдел маркетинга и специалисты по продажам хотят иметь представление о конечном продукте;

1 менеджеры проекта по данным спецификации рассчитывают гра фики, затраты и ресурсы;

I команда разработчиков ПО получает представление о создаваемом продукте;

176 Часть II. Разработка требований к ПО 1 группа тестирования составляет планы тестирования, варианты ис пользования и процедуры;

i специалисты по обслуживанию и поддержке получают представле ние о функциональности каждой составной части продукта;

I составители документации создают руководства для пользовате лей и окна справки на основании спецификации требований к ПО и дизайна пользовательского интерфейса;

и специалистам, ответственным за обучение персонала, необходима спецификация требований к ПО и документация для пользователей для разработки обучающих материалов;

1 персонал, занимающийся юридической стороной проекта, прове ряет, соответствуют ли требования к продукту существующим зако нам и постановлениям;

I субподрядчики строят свою работу и несут юридическую ответст венность также согласно спецификации требований к ПО.

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

Не обязательно составлять спецификацию для всего продукта еще до начала разработки, но необходимо зафиксировать требования для каждой составляющей перед ее созданием. Это удобно, если в начале?

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

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

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

I разделы, подразделы и отдельные требования должны быть назва ны согласованно;

Глава 10. Документирование требований i оставьте текст невыровненным по правому краю, не выравнивайте его по ширине;

1 оставляйте достаточно свободного пространства («воздуха»};

1 используйте средства визуального выделения (такие, как полужир ное начертание, подчеркивание, курсив и различные шрифты) по следовательно и в разумных пределах;

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

I пронумеруйте все рисунки и таблицы, озаглавьте их и, ссылаясь на них, используйте присвоенные номера;

I если вы ссылаетесь в документе на другие его части, используйте возможности работы с перекрестными ссылками в вашем редакто ре, а не сложную кодировку страниц;

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

I для структурирования необходимой информации используйте со ответствующий шаблон.

Требования к именованию Чтобы легко отслеживать и модифицировать материал, каждое функ циональное требование должно быть представлено уникально и неиз менно. Это позволит вам ссылаться на определенные требования в за просе на изменения, в хронологии изменений, в перекрестных ссыл ках или матрице для отслеживания требований. При этом также упрощается многократное использование требований в нескольких проектах. Маркированные списки для этих целей не годятся. Давайте взглянем на достоинства и недостатки некоторых методов именования требований. Выберите любой метод, наиболее подходящий вам.

Pages:     | 1 | 2 || 4 | 5 |   ...   | 9 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.