WWW.DISSERS.RU

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

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

Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |   ...   | 9 |

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

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

Надежность. Надежностью называется вероятность работы ПО без сбоев в течение определенного периода времени (Musa, lannino и Okumoto, 1987). Иногда одной из характеристик надежности считают устойчивость к сбоям. Для измерения надежности ПО используют та кие показатели, как процент успешно завершенных операций и сред ний период времени работы системы до сбоя. Определите количест венные требования к надежности, основываясь на том, насколько серьезными окажутся последствия сбоя и оправдана ли цена повыше ния надежности. Системы, для которых требуется высокая надеж ность, следует проектировать с высокой степенью возможности тес тирования, чтобы облегчить выявление недостатков, отрицательно влияющих на надежность.

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

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

Устойчивость к сбоям. Однажды клиент компании, разрабатываю щей устройства для измерений, пожелал, чтобы их следующий про дукт «был, как танк». Сотрудникам компании так понравилось сравне ние, что они ввели в обиход новый, слегка ироничный атрибут качества — «как танк». Его стали применять, когда речь шла об устойчивости к сбоям, которую еще иногда называют отказоустойчивостью (fault toler ance). Под устойчивостью ксбоям понимают уровень, до которого сие тема продолжает корректно выполнять свои функции, несмотря на не верный ввод данных, недостатки подключенных программных компо нентов или компонентов оборудования или неожиданные условия работы. Устойчивое к сбоям ПО легко восстанавливается после раз личных проблем и «не замечает» ошибок пользователей. Выясняя тре бования к устойчивости работы ПО, спросите пользователей, какие ошибочные ситуации возможны при работе с системой и как система должна на них реагировать. Вот один из примеров требования к устой чивости ксбоям:

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

Несколько лет назад я занимался разработкой программного ком понента многократного использования Graphics Engine, который пре образовывал файлы с графическими схемами и выводил изображение на назначенное устройство вывода (Wiegers, 1996b). Несколько прило жений, которым было необходимо создавать графики, обращались к Graphics Engine. Поскольку разработчики не могли контролировать, ка кие именно данные приложения передают в Graphics Engine, важным атрибутом качества была названа устойчивость к сбоям системы. Одно из наших требований звучало так:

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

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

Удобство и простота использования. Также называется легкостью использования и инженерной психологией. Этот атрибут связан с мас сой факторов, которые составляют основу того, что пользователи час то описывают как дружелюбие к пользователю. Но в лексиконе анали тиков и разработчиков нет термина «дружественное ПО», они говорят о ПО, которое спроектировано для эффективного и необременитель ного использования. В последнее время вышло несколько книг, посвя щенных разработке удобных в использовании программных систем, например Constantine и Lockwood (1999) и Nielsen (2000). Удобство и простота использования измеряется усилиями, требуемыми для под готовки ввода данных, эксплуатации и вывода конечной информации.

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

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

Удобство и простота использования-2. Всем функциям меню File должны соответсвовать быстрые клавиши, нажимаемые одновременно с Ctrl. Командам ме ню, которые также присутствуют в меню File пакета Microsoft Word XP, должны соот ветствовать те же быстрые клавиши, что и в Word.

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

Удобство и простота использования-3. Химик, который прежде никогда не ис пользовал Chemical Tracking System, должен не более чем 30 минут разобраться, как правильно запросить химикат.

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

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

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

При работе над проектом Graphics Engine мы понимали, что нам при дется часто вносить исправления в ПО, чтобы оно соответствовало по требностям пользователей. Мы указали примерно такие критерии, что бы разработчикам удалось создать ПО, более легкое в эксплуатации:

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

Легкость в эксплуатации-3. Для каждого программного модуля непустые коммен тарии в соотношении к исходному коду должны составлять как минимум 0,5.

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

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

Легкость в эксплуатации-4. Дизайн принтера позволяет сертифицированному ремонтнику заменить кабельный шнур печатающей головки не более чем за 10 ми нут, датчик ленты не более чем за 5 минут и привод ленты не более чем за 5 минут.

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

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

Например, одни компиляторы определяют размер типа данных inte ger в 16 бит, а другие — 32 бит. Чтобы выполнить требования к мобиль ности, программисту надо в символической форме определить тип данных WORD как 16-битное целое без знака и использовать тип дан Часть II. Разработка требований к ПО ных WORD вместо целочисленного типа данных, принятого в компиля торе по умолчанию. Таким образом гарантируется, что все компилято ры будут одинаково обращаться к элементам данных типа WORD, что сделает работу системы предсказуемой в различных операционных средах.

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

Возможность повторного использования-1. Функции ввода химических струк тур должны быть спроектированы таким образом, чтобы их удавалось повторно ис пользовать на уровне объектного кода в других приложениях, построенных с учетом международных стандартов для представления химических структур.

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

Тестируемость-1. Максимальная цикломатическая сложность модуля не должна превышать 20.

Цикломатическая сложность (cyclomatic complexity) — это количест во логических ответвлений в модуле исходного кода (McCabe, 1982i.

Глава 12. Обратная сторона функциональности: атрибуты качества ПО Чем больше ответвлений и циклов в модуле, тем тяжелее его тестиро вать, понимать и поддерживать. Конечно, проект не будет провален, если значение цикломатической сложности одного из модулей достиг нет 24, однако наша директива указала разработчикам уровень качест ва, к которому следует стремиться. Если бы ее (она представлена как требование к качеству) не было, не факт, что разработчики при написа нии своих программ приняли бы во внимание такую характеристику, как цикломатическая сложность. В результате код программы мог ока заться так запутан, что его тщательное тестирование и дополнение оказалось бы практически невозможным, а отладка вообще стала бы кошмаром.

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

Производительность-1. Цикл контроля температуры должен быть полностью вы полнен за 80 милписекунд.

Производительность-2. Интерпретатор должен проводить в минуту разбор как минимум 5000 операторов, не содержащих ошибок.

Производительность-3. Каждая Web-страница должна загружаться не более чем за 15 секунд при модемном соединении со скоростью 50 кбит/с.

Производительность-4. Авторизация запроса на получение денег из банкомата не должна длиться более 10 секунд.

Часть II. Разработка требований к ПО Ловушка Не забудьте обдумать, как вы будете оценивать продукт на соответст вие атрибутам качества. Непроверяемые требования к качеству ничем не лучше не проверяемых функциональных требований.

Определение нефункциональных требований с помощью языка Planguage Некоторые из атрибутов качества, перечисленных в этой главе, явля ются неполными или неспециализированными — очень трудно выра зить их одной-двумя короткими фразами. Вам не удастся оценить, о~г вечает ли продукт неточно сформулированным требованиям к качес'г ву или нет. Кроме того, упрощенные задачи, связанные с качеством л производительностью, могут оказаться невыполнимыми. Максималь ное время отклика, равное двум секундам для запроса к БД, замеча тельно работает при несложном поиске в локальной БД, но абсолютно невыполнимо при соединении шести связанных таблиц, размещеннь х на серверах, которые расположены в разных местах.

Для решения проблемы неявных и неполных нефункциональных требований консультант Tom Gilb (1988;

1997) разработал Planguage, язык планирования с большим набором ключевых слов, который по зволяет точно устанавливать атрибуты качества и друге задачи проек та (Simmons, 2001). Далее показано, как выразить требование к произ водительности с помощью всего лишь нескольких из множества клю чевых слов Planguage. Этот пример является версией требований на языке Planguage к производительности из главы 10: «95% запросов БД каталога должны быть выполнены в течение 3 секунд на однопользова тельском компьютере Intel Pentium 41,1 ГГц под управлением Microsoft Windows XP, когда доступны как минимум 60% системных ресурсов».

TAG. Производительность. Время отклика на запрос.

AMBITION. Быстрый отклик на запросы БД на пользовательской плат форме.

SCALE. Время (в секундах) между нажатием клавиши Enter и щелчком ОКдля отправки запроса и началом отображения результатов запроса, METER. Тестирование с использованием секундомера, выполненное на 250 тестовых запросах, представляющих определенный операци онный профиль использования.

Глава 12. Обратная сторона функциональности: атрибуты качества ПО MUST. He более 10 секунд на 98% запросов <— Специалист выездной службы поддержки.

PLAN. He более 3 секунд для запросов категории 1, 8 секунд для всех запросов, WISH. He более двух секунд для всех запросов, Основная пользовательская платформа DEFINED. Процессор Intel Pentium 4 1,1 ГГц, оперативная память 128 Мб, под управлением ОС Microsoft Windows XR с установленным пакетом QueryGen версии 3.3, однопользовательский компьютер, свободно как минимум 60% сис темных ресурсов, другие приложения не выполняются, В каждом требовании присутствует уникальный гэг (tag), или метка.

Цель (ambition) устанавливает цель или задачу для системы, которая порождает данное требование. Масштаб (scale) определяет единицы измерения, а счетчик (meter) описывает точно, как выполнить измере ния. Все заинтересованные стороны должны одинаково хорошо пони мать, каким образом измеряется производительность. Предположим, пользователь проще воспринимает систему измерений, которая осно вана на времени от нажатия клавиши Enter до вывода всех результатов запроса, чем до начала отображения результатов, как указано в при мере, Разработчик может заявить, что требование удовлетворено, а пользователь будет утверждать обратное. Точно выраженные требова ния к качеству и системе измерений помогут предотвратить такого ро да недоразумения.

Вы можете указать несколько желаемых количественных величин, которые необходимо измерять. Критерий must (обязательство) опре деляет наименьший достижимый уровень. Требование не удовлетво рено до тех пор, пока не будут удовлетворены все условия must, таким образом, это условие должно быть обосновано в бизнес-терминах.

Можно указать требование must другим способом. Для этого нужно определить условие fait (неудача) (еще одно ключевое слов языка Planguage), например: «Более 10 секунд ожидания для более 2% всех запросов». Величина plan (план) указывает номинальное значение, я wish (пожелание) представляет собой идеальный результат. Кроме то го, покажите источник требуемой производительности, например, упомянутое выше условие must (обязательство) указал специалист вы ездной службы поддержки. Для облегчения чтения любые специализи рованные термины, используемые в операторах языке Planguage, за даны как defined (определяемые).

Planguage определяет множество дополнительных ключевых слов, с помощью которых удается добиться более гибкой и точной специфи 248 Часть II. Разработка требований к ПО кации требований. Так как язык Planguage, его словарь и синтаксис еще развиваются, рекомендую обратиться за свежей информацией на Web-сайт http://www.gilb.com. Planguage представляет собой мощное средство для точной формулировки атрибутов качества и требований к производительности. Указав несколько уровней для ожидаемого ре зультата, вы получите более широкое представление о требованиях к качеству, чем с помощью простых конструкций, таких, как «черное белое» и «да — нет», Компромиссы для атрибутов Для определенных комбинаций атрибутов компромиссы неизбежны.

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

;

.

12-1 показаны типичные взаимосвязи атрибутов качества, перечис ленных в табл. 12-1, однако вам следует знать, что возможны исключн ния (Charette, 1990;

IEEE, 1992;

Glass, 1992}. Знак «+» в ячейке означа ет, что увеличение величины атрибута в соответствующей строке пози тивно влияет на атрибут в соответствующем столбце. Например, при повышении легкости перемещения программного компонента повы шается гибкость ПО, упрощается подключение к компонентам другого ПО и возможность повторного использования и тестирования.

Знак «-» в ячейке означает, что увеличение величины атрибута в этой строке негативно влияет на атрибут в соответствующем столбце.

Пустая ячейка означает, что атрибут в этой строке оказывает незначи тельное влияние на атрибут в столбце. Эффективность оказывает не гативное влияние на большинство атрибутов. Если вы напишите ком пактную и быструю программу, используя хитрости кодирования и учи тывая некоторые побочные эффекты при выполнении, вероятнее всего эту программу будет сложно поддерживать и исправлять, а также пе реносить на другие платформы. Аналогично, системы, которые были оптимизированы для удобства использования или спроектированы как гибкие, пригодные для многократного применения и способные взаи модействовать с другими программными компонентами или компо нентами оборудования, часто грешат проблемами производительно сти. При создании чертежей средствами универсального компонента Graphics Engine, о котором говорилось ранее в этой главе, производи тельность понизилась по сравнению с приложением, где использовался нестандартный код для обработки графики. Вам необходимо найти ба ланс между возможным ухудшением производительности и ожидаемсй Глава 12. Обратная сторона функциональности: атрибуты качества ПО выгодой от предлагаемого решения, чтобы убедиться, что компро мисс, на который вы идете, разумен, Матрица на рис. 12-1 не симметрична, потому что влияние при уве личении атрибута А на атрибут В не обязательно такое же, как влияние, которое оказывает увеличение атрибута В на атрибут А. Так, из рис. 12 1 видно, что модификация системы с целью повышения эффективно сти не оказывает эффекта на целостность. Но повышение целостности вероятнее всего весьма отрицательно отразится на эффективности, поскольку системе придется выполнять множество проверок аутен тификации пользователей, зашифрованных данных, проверок на нали чие вирусов и контрольных точек данных.

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

I Не пытайтесь максимизировать удобство и простоту использования, если ПО должно работать на нескольких платформах (мобильность) 1 Нелегко полностью проверить требования к целостности систем с:

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

1 Крайне надежный код окажется менее эффективным из-за постоян ного выполнения им проверок данных и поиска ошибок.

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

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

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

Глава 12. Обратная сторона функциональности: атрибуты качества ПО Таблица 12-2. Преобразование требований к качеству в техническую документацию Типы атрибутов качества Категория технической информации Целостность, способность к взаимодействию, Функциональное требование устойчивость к сбоям, легкость и простота исполь зования, безопасность Доступность, эффективность, гибкость, произво- Архитектура системы дительность, надежность Способность к взаимодействию, легкость и про- Ограничения дизайна стота использования Гибкость, легкость в эксплуатации, легкость пере- Руководство по дизайну мещения, надежность, возможность повторного использования, тестируемость, легкость и про стота использования Легкость перемещения Ограничение реализации Что теперь?

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

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

Удается ли вам выразить эти требования к качеству более точно и недвусмыс ленно с помощью Planguage?

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

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

1 Отследите, как атрибуты качества влияют на функциональные требования, огра ничения дизайна и реализации или выбор архитектуры и дизайна 252. Часть II. Разработка требований к ПО Прототипы как средство уменьшения риска «Шэрон, сегодня я хотел бы поговорить с вами о требованиях покупателей из Отдела закупок к новой Chemical Tracking System, — начал Лори, аналитик требований. — Вы можете рассказать мне, что система должна делать?» «Ничего себе, я даже не знаю, как к этому подступиться, — от ветила Шэрон озадаченно. — Я не знаю, как описать мои по требности, но узнаю, когда увижу».

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

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

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

Если вы не исправите эти проблемы, разница в ожиданиях между ви дением продукта пользователями и пониманием разработчиков гаран тирована. Трудно точно представить поведение нового ПО при чтении текстовой документации или изучении аналитических моделей. Поль зователи более готовы экспериментировать с прототипом (что весе ло), чем читать спецификацию требований к программному обеспече нию (что скучно). Услышав от пользователей «узнаю, когда увижу», по думайте, как вы можете помочь им наглядно представить свои нужды (Boehm, 2000). Однако если ни один из участников не представляет се бе, что же должны создать разработчики, проект обречен.

Прототип (prototype) имеет множество значений, поэтому ожидания участников процесса прототипирования могут весьма различаться.

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

детализированным изображением экрана или его эскизами;

наглядной демонстрацией или примерами реальной функциональности;

имитацией или подражанием {Constantine и Lock wood, 1999;

Stevens и др., 1998). В этой главе описаны различные виды прототипов, их использование во время разработки требований к ПО и способы эффективного внедрения макетирования в процесс разра ботке ПО {Wood и Kang, 1992).

Что такое прототип и для чего он нужен Прототип ПО — это частичная или возможная реализация предлагаемо го нового продукта. Прототипы позволяют решать три основные задачи:

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

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

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

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

Горизонтальные прототипы Когда люди говорят «прототип ПО», они обычно имеют в виду горизон тальный прототип (horizontal prototype) предполагаемого интерфейса пользователя. Его также именуют поведенческим прототипом (behav ioral prototype) или моделью. Горизонтальным прототип называется потому, что в нем не реализуются все слои архитектуры и нюансы сис темы, но воплощаются некоторые особенности интерфейса пользова теля. Он позволяет пользователям исследовать поведение предпола гаемой системы в тех или иных ситуациях для уточнения требований, а также выяснить, смогут ли они с помощью системы, основанной на прототипе, выполнять свою работу.

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

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

' зовательского интерфейса {цвета, планировку, графику, элементы управления) и структуру доступа к информации (структуру навигации).

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

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

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

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

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

Одноразовые прототипы Прежде чем создавать прототип, примите четкое и ясное решение, прекратите ли вы работать с ним после оценки или сделаете его частью выпускаемого продукта. Создайте одноразовый прототип (throwaway prototype), или исследовательский прототип (exploratory prototype), чтобы ответить на вопросы, разрешить неясности и улучшить требова ния к ПО (Davis, 1993). Если вы решили, что после выполнения задачи прекратите работу с прототипом*, стройте его как можно более быстро и дешево. Чем больше усилий вы вложите в прототип, тем труднее бу дет участникам проекта отказаться от него, Создавая одноразовый прототип, разработчики пренебрегают боль шинством известных им методов конструирования качественного ПО. В одноразовом прототипе предпочтение отдается быстроте реализации и модификации, а не устойчивости, надежности, производительности и долговременному удобству сопровождения. Поэтому внимательно сле дите, чтобы низкокачественный код одноразового прототипа не попал в окончательный продукт. В противном случае пользователи и персонал технического обслуживания будут страдать от последствий этого в те чение всего срока эксплуатации продукта.

* Не стоит уничтожать прототип, если возможно его повторное применение в будущем.

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

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

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

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

Описание варианта Детализированный дизайн Одноразовый Карта диалогов использования пользовательского интерфейса прототип ~А k T It 1 обратная связь 11 обратная связь ' Рис. 13-1. Последовательность действий от вариантов использования к дизайну интерфейса пользователя через одноразовый прототип Часть II. Разработка требований к ПО Эволюционные прототипы В отличие от одноразового прототипа, эволюционный прототип (evolu tionary prototype) представляет собой прочный архитектурный «фунда мент» для постепенного создания окончательного продукта — по мере прояснения требований. Эволюционное прототипирование — один из компонентов модели спирального цикла разработки ПО (Boehm, 1988) и некоторых процессов разработки объектно-ориентированного ПО (Kruchten, 1996). В отличие от одноразовых прототипов, создаваемы* «быстро и начерно», для построения эволюционного прототипа необ ходимо с самого начала использовать отличный и качественный код.

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

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

к ним относятся, напри мер, проекты постепенной интеграции различных информационных систем.

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

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

Разработка одноразового горизонтального прототипа Рис. 13-2. Несколько возможных способов использования прототипов а процессе разработки ПО 260 Часть II. Разработка требований к ПО Таблица 13-1. Стандартные способы применения прототипов ПО Одноразовые Эволюционные Горизонтальные Прояснение и уточнение Реализация базовых вариантов примеров использования использования и функциональных требова Реализация дополнительных ний вариантов использования Выявление пропущенных по приоритетам функций Реализация и доработка Исследование возможных Web-сайтов вариантов интерфейса Адаптация системы к быстро ме пользователя няющимся требованиям бизнеса Демонстрация технической Вертикальные Реализация и наращивание ключе осуществимости вой клиент-серверной функцио нальности и уровней коммуникации Реализация и оптимизация основ ных алгоритмов Тестирование и настройка произво дительности Бумажные и электронные прототипы Не всегда для разрешения неопределенностей в требованиях нужен прототип в виде исполняемого кода. Бумажный прототип (paper proto type), иногда его называют низкокачественным прототипом, — это де шевый, быстрый и низкотехнологичный способ выяснить, как может выглядеть некий фрагмент системы (Rettig, 1994;

Hohmann, 1997). Бу мажные прототипы помогают установить, действительно ли пользова тели и разработчики одинаково понимают требования. Они позволяют вам попробовать, практически не рискуя, сделать шаг при разработке кода продукта. Похожий метод, называемый методом раскадровки (storyboard) (Leffingwell и Widrig, 2000), показывает предлагаемый ин терфейс пользователя, без привлечения пользователей к работе с ним.

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

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

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

Но как же прототип и ровать такой сложный продукт, как копировальный аппарат? Во первых, купите большой телевизор. Во-вторых, напишите на коробке от него «КОПИРОВАЛЬНЫЙ АППАРАТ». Потом посадите кого-нибудь внутрь коробки и попросите пользователя подойти снаружи и изображать различные операции с ап паратом. Человек внутри коробки будет отвечать так, как, по его мнению, реагиро вало бы устройство, а представитель пользователей должен отмечать, та ли это ре акция, которую он себе представляет. С помощью простого, веселого прототипа, подобного этому, - иногда его называют «прототипом волшебника из страны Оз» зачастую удается на ранних стадиях разработки получить реакцию пользователей, руководствуясь которой разработчики и строят решения. Плюс вы получаете боль шой телевизор.

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

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

262 Часть II. Разработка требований к ПО Если вы решите создать электронный одноразовый прототип, вос пользуйтесь соответствующими инструментами (Andriole, 1996). Неко торые из них перечислены здесь:

I языки программирования, такие, как Microsoft Visual Basic, IBM Visu alAge Smalltalk и Inprise Delphi;

I языки подготовки сценариев, такие, как Perl, Python и Rexx;

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

I средства рисования, такие, как Microsoft Visio и Microsoft Powe Point.

Средства для Web, использующие легко модифицируемые страни цы HTML (Hypertext Markup Language), годятся для создания прото типов, которые предназначены для прояснения требований. Однако они не позволяют быстро исследовать детализированный дизайн ин терфейсов. Соответствующие инструменты позволят вам с легкостью реализовать и обновлять компоненты интерфейса пользователя, вне зависимости от неэффективности его кода. Конечно же, если вы соз даете эволюционный прототип, то должны использовать высококаче ственные средства разработки с самого начала.

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

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

1 Реализует ли прототип все необходимые функции так, как вы этого ожидали?

1 Не упущены ли какие-либо необходимые функции?

1 Заметили ли вы какие-либо условия ошибки, не учтенные в про тотипе?

I Нет ли в прототипе каких-либо ненужных функций?

Глава 13. Прототипы как средство уменьшения риска I Насколько логичной и полной вам кажется навигация?

I Не оказалось ли выполнение каких-либо задач слишком сложным?

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

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

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

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

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

Ищите любые несоответствия между спецификацией требований к ПО и прототипом.

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

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

Не позволяйте страхам, связанным с преждевременным выпуском продукта, отвратить вас от создан i.--' п^огит/.па. изъясните всем, что вы не выпустите его как окончательный продукт. О,?^"- из способов кон тролировать этот риск— использовать бумажные, сэ ме электронные прототипы. Ни одному из тех, кто оценивает бумажный прототип, и Е голову не придет, что продукт ухе почти готов. Еще один способ — вы брать инструменты прототипирования, отличающиеся от тех, что при меняются для разработки окончательного продукта. Это поможет про тивостоять тем, кто просит «быстро закончить» и выпустить прототип Оставив внешний вид прототипа неотделанным и незаконченным, вь также уменьшите этот риск.

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

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

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

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

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

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

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

планируйте создание нескольких прототипов. В большинстве случа ев вам не удастся создать то, что нужно, с первой попытки {в чем, собственно, и состоит весь смысл прототипирования!};

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

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

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

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

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

Глава 13. Прототипы как средство уменьшения риска Что теперь?

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

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

268 Часть II. Разработка требований к ПО Назначение приоритетов требований После того как большинство требований к Chemical Tracking System было задокументировано, менеджер проекта Дэйв м аналитик требований Лори встретились с двумя сторонниками продуктов. Тим представлял химиков, а Роксана выступала от лица работников склада химикатов.

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

Тим был озадачен. «Зачем вам назначать приоритеты? Все требования важны, иначе бы мы не дали их вам».

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

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

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

Лори, аналитик, сказала: "При обсуждении с химиками вари антов использования мне показалось, что некоторые из них будут применяться очень часто, а другие — лишь время от вре мени и только одним-двумя людьми. Не могли бы мы взглянуть на ваш полный список вариантов использования и решить, ка кие из них не нужны вам немедленно? Также, я хотела бы от срочить реализацию некоторых декоративных функций, ука занных в приоритетных вариантах использования, если это возможно», Тим и Роксана не особо взволновались от того, что придется подождать с реализацией некоторых функций системы. Тем не менее они поняли, что ожидать чудес неразумно. Если продукт не может содержать все требования в версии 1.0, то для всех будет лучше, если удастся согласовать первоочередные тре бования.

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

Менеджер проекта должен сбалансировать желаемый объем проек' та и ограничения, определяемые сроком, бюджетом, людскими ресур сами и качеством. Один из способов достижения этого — убрать (или отложить до более поздней версии) требования с низким приорите том, когда принимаются новые, более важные требования или изменя ются другие условия проекта. Если клиенты не классифицируют свои требования по важности и срочности, менеджерам проектов прихо дится делать это своими силами. Неудивительно, что клиентам не все гда нравится результат;

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

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

И клиенты, и разработчики должны внести вклад в определение приоритетов требований. Клиентам больше всего нужны функции, наиболее ценные для бизнеса или удобства работы. Однако, когда разработчики обрисуют затраты, трудоемкость, технический риск или компромиссы, связанные с каждым требованием, клиенты могут пере думать и прийти к выводу, что это требование не так важно, как они считали изначально. Разработчики же иногда решают на ранних стади ях реализовать некоторые функции с низким приоритетом из-за их влияния на архитектуру системы, Игры, в которые люди играют с приоритетами Естественная реакция пользователей на просьбу определить при оритеты обычно такая: «Мне нужны все эти функции. Уж как-нибудь Глава 14. Назначение приоритетов требований 10 — реализуйте их». Трудно убедить клиентов обсуждать приоритеты, если они знают, что функций с низким приоритетом не получат никогда Один разработчик как-то сказал мне, что в их компании не принято на значать требованию низкий приоритет. Категории приоритетов требо ваний назывались у них «высокие», «очень высокие» и «невероятно вы сокие». Другой разработчик заявлял, что назначение приоритетов со всем не нужно: если он записал что-либо в спецификациютребований, то собирается это реализовать. Но это не отвечает на вопрос, когда будет реализована каждая функция. Некоторые разработчики избега ют определения приоритетов, потому что оно не соответствует пози ции «мы можем все», которую они декларируют.

Избегайте определения приоритетов «по децибелам», когда требова Ловушка ние, высказанное громче всего, получает наибольший приоритет, и «по угрозе», когда те, кто имеют больший вес в компании, всегда получают требуемое.

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

Предоставленные самим себе, клиенты, скорее всего назначат 85% требований высокий приоритет, 10% — средний и 5% — низкий. Это не дает менеджеру проекта большой свободы для маневра. Если почти все требования действительно важны, вы рискуете тем, что не весь ваш проект будет успешен, поэтому придется составить планы соот ветствующим образом. Отшлифуйте требования до блеска, чтобы от бросить не имеющие большой ценности и упростить неоправданно сложные требования (McConnell, 1996). Чтобы представители клиен тов с большим мужеством назначали требованиям низкие приоритеты, аналитику стоит задать вопросы, подобные перечисленным ниже.

! Есть ли другой способ удовлетворить это требование клиентов?

1 Что случится, если это требование убрать или отложить?

272 Часть II. Разработка требований к ПО 1 Что произойдет с бизнес-целями, если это требование не будет реа лизовано немедленно?

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

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

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

Один из способов оценки приоритетов предлагает учитывать два из мерения: важность и срочность (Covey, 1989). Каждое требование счи тается важным либо не важным и срочным либо не срочным. Как пока зано в табл. 14-1, получаются четыре комбинации для определения шкалы приоритетов:

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

I требования со средним приоритетом (medium priority) — важные (пользователям нужны функции), но не срочные (они могут ждать следующего выпуска);

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

I требования в четвертой клетке кажутся срочными, но в действи тельности — они не важны. Не тратьте время на работу над ними.

Они не сделают продукт более ценным.

Глава 14. Назначение приоритетов требований Таблица 14-1. Определение приоритетов требований по важности и срочности Важные Не важные Высокий приоритет Не занимайтесь ими!

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

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

Определение приоритетов на основе ценности, стоимости и риска В малом проекте заинтересованные лица могут согласовать приори теты требований неформально. Крупные или спорные проекты требу ют более структурированного подхода, устраняющего из процесса не которые эмоции, политику и догадки. Для помощи в определении при оритетов предлагается несколько аналитических и математических методик. Они предполагают оценку относительной ценности и относи тельной стоимости каждого требования. Требования с самым высоким Часть II. Разработка требований к ПО приоритетом — те, что обеспечивают большую ценность продукта при меньшей стоимости (Karlsson и Ryan, 1997;

Jung, 1998). Субъективная оценка стоимости и ценности посредством попарного сравнения всех требований не годится, если требований более двух дюжин.

Другая альтернатива— Quality Function Deployment (QFD), всесто ронний метод определения относительной ценности для клиента предлагаемых функций продукта (Zultner, 1993;

Cohen, 1995). Третий подход, заимствованный из Total Quality Management (TQM), позволяем оценить каждое требование по нескольким весомым критериям успеха проекта и подсчитать количество баллов для назначения приоритетов требований. Тем не менее, по-видимому, лишь немногие организации разработчики ПО готовы применять QFD или TQM.

В табл. 14-2 показана крупноформатная модель, которая поможет вам оценить относительные приоритеты для набора вариантов ис пользования, функций или функциональных требований. Загрузить эту таблицу в формате Microsoft Excel можно с http://www.processim pact.com/goodies.shtml. В табл. 14-2 перечислено несколько функций Chemical Tracking System (а каких же еще?). Эта схема заимствует из QFD концепцию обоснования ценности для пользователя;

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

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

Глава 14. Назначение приоритетов требований I менеджер проекта, который ведет процесс, разрешает конфликты и при необходимости адаптирует данные, поступающие от других участников;

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

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

Таблица 14-2. Образец матрицы определения приоритетов для Chemical Tracking System Относительный 2 1 1 0, вес >ж функция к ос 'з а а « X л _о л л ч е^ сР » ! g 5 Ё 1€ | л Л н о с о, О ЯQ S к <* S ^ и о 3 I 0Ч Я оа X О ас О X м ОS о Ео хи I O J 0 55 о.

13 1§1 О 0. Е 1. Распечатка списка данных по безопас ности мате 1 3, риалов 2, 2 4 8 5,2 1, 2. Запросе ста тусе заказа поставщика 3, 5 1, 3 13 8,4 5,4 3. Создание отче та о инвентари зации склада химикатов 3 9,1 0, 9 7 25 13, 16, 4. Просмотр ис тории исполь зования каждо го контейнера с химикатом 3 6, 5 5 15 9,7 8,1 0, 5. Поиск хими ката по ката логам постав щиков 8,1 24, 9 8 26 16,8 0, 276 Часть II. Разработка требований к ПО Таблица 14-2. Образец матрицы определения приоритетов для Chemical Tracking System (продолжение) Относительный 2 1 1 0, вес Функция >х >х в л afi х х X X л л л сР s 8§ *g А n § § Ь' j) и А Р н I и X ^ а о

Ю ш ^ Оэ о. с и 6. Поддержка списка опас ных химикатов 3 9 9,7 3 4 12, 8,1 0, 7. Модификация невыполнен ных заявок i на химикаты 11 4 7,1 8,1 0, 6, 8. Создание отче тов об инвента ризации от дельных ла бораторий 2 14 9,0 9, 6 0, 10, 9- Проверка в базе данных по обучению наличия запи си о прохожде нии обучения по обращению с опасными веществами 3 1 6,5 6, 10 0, 10, 10. Импорт хими ческих структур из инструмен тальных средств для рисования структур 21, 4 18 7 24,3 0, 11,6 100,0 33 100,0 | 49 155 100, Итоги Глава 14. Назначение приоритетов требований При использовании этой модели определения приоритетов поль зуйтесь следующим планом.

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

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

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

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

3. Оцените относительный урон, который потерпит клиент или биз нес, если функция не будет включена в продукт. Снова используйте шкалу от 1 до 9: 1 балл означает, что никто не расстроится, если ее не окажется;

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

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

I Проиграет ли ваш продукт по сравнению с другими, содержащи ми эту функцию?

I Будут ли какие-либо юридические или контрактные последствия?

I Не нарушители вы какой-либо юридический или промышленный стандарт?

и Не лишит ли это пользователей возможности выполнять какие- либо необходимые или ожидаемые действия?

1 Намного ли сложнее добавить эту функцию позже, в качестве мо дернизации?

I Возникнут ли проблемы из-за того, что отдел маркетинга обещал эту функцию, чтобы удовлетворить некоторых потенциальных клиентов, но команда решила не включать ее?

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

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

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

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

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

приоритет = % ценности (% стоимости * вес стоимости) + (% риска * вес риска) 8. Отсортируйте список функций по уменьшению подсчитанного при оритета. Функции вверху списка характеризуются наиболее благо приятным сочетанием ценности, стоимости и риска и поэтому Глава 14. Назначение приоритетов требований при равенстве остальных факторов — должны иметь наивысший приоритет.

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

Консультант Johanna Rothman (2000) писала: «И предлагала эту электронную табли цу своим клиентам в качестве инструмента для принятия решений. Хотя те, кто про бовал ей пользоваться, не разу не заполнили ее до конца, они обнаружили, что дис куссия, которая начиналась при ее использовании, чрезвычайно полезна для опре деления относительных приоритетов различных требований». Таким образом, используйте концепцию выгоды, урона, стоимости и риска для направления дискус сий о приоритетах. Это более ценно, чем формально выполнить полную проработку анализа электронной таблицы и затем полагаться исключительно на вычисленную последовательность приоритетов.

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

280 Часть It. Разработка требований к ПО Ловушка Не придавайте слишком большого значения малым отличиям в под считанных значениях приоритетов. Данный полу количественны и метод не претенду ет на математическую точность. Ищите группы требований с похожими значениями приоритетов.

Заинтересованные в проекте лица часто по-разному оценивают важность того или иного требования и потенциальный уровень от его отсутствия. Один из вариантов таблицы приоритетов учитывает вход ные данные от нескольких классов пользователей или других заинте ресованных в проекте лиц. На странице Multiple Stakeholders (Множе ство пользователей) загружаемой электронной таблицы скопируйте колонки Relative Benefit (Относительная выгода) и Relative Penalty (От носительный урон) для каждого заинтересованного в проекте лица, участвующего в анализе. Затем назначьте вес для каждого участника, больший вес отдавая привилегированным классам пользователей, а не группам, имеющим меньшее влияние на принятие решений, касаю щихся проекта. В таблице будет учтен вес каждого участника при под счете общего значения ценности.

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

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

Глава 14. Назначение приоритетов требований Что дальше?

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

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

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

Часть II. Разработка требований к ПО Утверждение требований Барри, руководитель по тестированию, вел семинар, участни ки которого проверяли спецификацию требований к ПО на на личие проблем. Во встрече принимали участие представители двух самых крупных классов пользователей, разработчик Дже реми и аналитик Гриш, которая написала спецификацию тре бований к ПО. В требовании 83 было указано: "Система обес печит безопасность рабочих станций, подключенных к DMV, посредством отключения неактивных терминалов по истече нии тайм-аута». Джереми представил группе свою интерпре тацию этого требования: «В требовании 83 говорится о том, что система автоматически отключит пользователя любой ра бочей станции, подключенной к системе DMV, если на ней на блюдается бездействие в течение определенного периода времени».

«У кого-нибудь есть вопросы по этому требованию?» — поин тересовался Барри.

Первым высказался Хью-Ли, один из сторонников продукт,!.

«Как система определяет, что терминал не активен? Это как.

появление заставки на мониторе: если в течение, ну, скажем, пяти минут мышь или клавиатура остаются в покое, то сеанс пользователя закрывается? Это может раздражать, например, когда пользователь просто отвлекся на разговор в течение этих пяти минут».

Триш добавила: «На самом деле в требовании ничего не гово рится об отключении пользователя. Я не совсем понимаю, что означает "безопасность... по истечении тайм-аута». Я предпо ложила, что это означает окончание сеанса, но, может, доста точно просто ввести пароль», Джереми был также озадачен. «В этом требовании речь идет о любой рабочей станции, которая может подключиться к систе ме ОМУили о рабочих станциях, которые активны и подключе ны к системе DMV в данный момент? О времени ожидания ка кой длины мы говорим? Возможно, существует некое руково дство по безопасности для таких случаев?» Барри убедился, что секретарь точно зафиксировал все точки зрения. «Ну хорошо, похоже, что в требовании 83 есть не сколько неясностей и не хватает некоторой информации, в ча стности, не определено время ожидания. Гриш, не могла ли бы ты связаться с координатором отдела безопасности и ре шить этот вопрос?».

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

Grady, 1999). Другие исследования свидетель ствуют, что на исправление ошибки, выявленной на стадии работы над требованиями, тратится в среднем 30 минут, тогда как на исправление ошибки, выявленной в ходе тестирования системы, необходимо от до 17 часов {Kelly, Sherif и Hops, 1992). Ясно, что любые усилия, затра ченные на выявление ошибок в спецификации к требованиям, сэконо мят реальные время и деньги.

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

На рис. 15-1 показана V-образная модель разработки ПО, когда действия, связанные с тестированием и разработкой проекта выпол няются параллельно (Davis, 1993). Эта модель указывает, что приемоч ные испытания основывается на требованиях пользователей, тестиро 284 Часть II. Разработка требований к ПО вание системы — на функциональных требованиях, а тестирование це лостности — на архитектуре системы.

Пользовательские требования;

планирование приемочных испытаний Функциональные требования;

планирование тестирования системы •• • •у-r Проверка Архитектура;

планирование -V\— / / целостности проверки целостности \ \ Дизайн;

планирование ^••••-j/f- Тестирование элементов тестирования элементов Написание кода Рис. 15-1. V-образная модель разработки ПО подразумевает планирование и разработку тестирования на ранней стадии проекта Планируйте мероприятия по тестированию и начинайте разработку предварительных вариантов тестирования для соответствующего эта па разработки. В процессе разработки требований вы не можете про водить никаких тестов, так как никакого ПО еще нет. Однако концепту альные (то есть, не зависящие от реализации) варианты тестировании, созданные на основе требований, позволят выявить ошибки, неясно сти и пропуски данных в спецификации требований к ПО и проанали зировать модели задолго до того, как разработчики приступят к напи санию кода.

Утверждение требований является четвертым этапом — наряду со сбором информации, анализом и созданием спецификации — разра ботки требований (АЬгапи Moore, 2001)*. Утверждение требований по зволяет удостовериться в том, что:

* Для описания этого этапа некоторые авторы используют термин "проверка» (Thayer и Dori man, 1997). При проверке определяется, соответствует ли результат разработки на данном эт,-\ пе требованиям к нему (делается ли все правильно). При утверждении оценивается, действи тельно ли продукт отвечает потребностям клиента (делается ли все в нужном направлении}.

В этой книге я использую терминологию «Software Engineering Body of Knowledge» (Abran и Moore, 2001) и называю четвертую составляющую разработки требования утверждением.

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

I требования к ПО точно отражают системные требования, бизнес правила и др.;

I требования полные и высококачественные;

i все требования согласованы друг с другом;

1 требования обеспечивают качественную основу для дизайна и сборки ПО.

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

Утверждение— это не один отдельный этап процесса, выполняе мый после сбора и документирования требований. Некоторые прове рочные мероприятия, например просмотр все более разрастающейся спецификации требований к ПО, выполняются после каждой процеду ры сбора информации, ее анализа и документирования. Другие меро приятия, такие, как официальная проверка спецификации требований к ПО, обеспечивают достижение того уровня качества, которое пред шествует финальной версии спецификации. Включите в план проекта этапы утверждения требований в качестве отдельных задач, Участники проекта иногда с неохотой тратят время на проверку и тестирование спецификации требований к ПО. Интуитивно кажется, что если выделить время на улучшение качества требований, дата вы пуска продукта задержится на такой же срок. Однако при таком отно шении вы можете смело ожидать нулевых результатов от всех усилий, затраченных на утверждение. В действительности же эти усилия могут сократить график поставки, за счет уменьшения требуемых исправле ний и ускорения интеграции и тестирования системы (Blackburn, Scud dei и VanWassenhove, 1996). Capers Jones (1994) отмечает, что каждый доллар, который вы истратили на предотвращение появления дефек тов, снизит затраты на исправление на сумму от 3 до 10 долларов. Чем лучше требования, тем выше качество продукта и тем более доволен клиент, что в свою очередь снизит затраты на обслуживание, улучше ние и клиентскую поддержку продукта. Инвестируя в качество продук та, вы сохраните больше денег, чем потратили.

Часть II. Разработка требований к ПО Для оценки корректности и качества требований применяйте раз личные приемы (Wallace и Ippolito, 1997). Один из таких приемов заклю чается в измерении каждого требования, с тем чтобы вы смогли проду мать способ измерения того, насколько хорошо предложенное реше ние. Suzanne и James Robertson используют термин критерий годности (fit criteria) для подобных приемов (Robertson и Robertson, 1999). В этой главе рассматриваются приемы проверки официальных и неофици альных просмотров требований, разработки вариантов тестирования на основании требований и определения клиентом критериев прием лемости продукта.

Просмотр требований Всякое исследование продукта ПО на предмет выявления проблем любым другим лицом, кроме его автора, называется экспертной оцен кой (peer review). Просмотр задокументированных требований — это эффективный прием выявления неясных или не поддающихся провер ке требований, требований, которые были определены недостаточно ясно для разработки, а также других проблем.

Различные типы экспертных оценок называются по-разному (Wieg ers, 2002a). Неофициальные просмотры полезны при знакомстве лю дей с продуктом и сборе отзывов о нем (формирование обратной свя зи). Однако они несистематические, неполные и несогласованные.

Есть несколько видов неофициальных просмотров требований:

1 проверка «за столом», когда вы просите одного коллегу исследо вать ваш продукт;

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

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

В отличие от нарочито естественных неформальных просмотров, официальная проверка представляет собой строго регламентирован ный процесс. По его завершении формируется отчет, в котором указа ны материал, рецензенты и мнение команды рецензентов о приемле мости продукта. Главный результат— совокупность всех найденных дефектов и поднятых вопросов. Члены команды, которая выполняет официальный просмотр продукта, делят ответственность за качество проверки, хотя в конце концов за качество продукта отвечают все-таки его создатели (Freedman nWeinberg, 1990).

Глава 15. Утверждение требований Наиболее хорошо себя зарекомендовавшая себя форма официаль ной оценки называется экспертизой (Gilb и Graham, 1993;

Radice, 2002). Возможно, инспектирование документации требований — наи более действенный из доступных приемов проверки качества ПО. Не сколько компаний сэкономили ни много ни мало — целых 10 часов тру да на каждый час, потраченный на инспектирование документации требований и других готовых к поставке продуктов (Grady и Van Slack, 1994). Инвестиции в проверки вернутся 1000% выгоды, если вы, ко нечно, не отнесетесь к ним небрежно.

Если вы серьезно решили совершенствовать качество вашего ПО, то ваша команда должна проверить каждый написанный документ, ка сающийся требований. Детальная проверка объемной документации может быть скучной и долгой. Однако все мои знакомые, кто занимал ся экспертизой требований, соглашаются, что каждая минута была по трачена не зря. Если у вас не хватает времени на проверку каждой де тали, воспользуйтесь рискованными методами анализа: выберите требования, для проверки которых достаточно неофициального про смотра. Начинайте экспертизу спецификации требований к ПО, когда требования разработаны еще примерно на 10%. Выявление значи тельных дефектов на ранней стадии и систематических проблем в про цессе написания требований является отличным способом предотвра щения — а не только выявления — ошибок, Чем тщательнее присматриваешься, тем больше замечаешь Б Chemical Tracking System представители пользователей проводили неофициаль ный просмотр последней версии спецификации требований после каждого семина ра, посвященного сбору информации. Таким образом удавалось выявить множество ошибок. После завершения сбора информации, один аналитик свел всю информа цию, полученную от всех классов пользователей в одну спецификацию требований к ПО (50 страниц плюс несколько приложений). Затем два аналитика, один разработ чик, три сторонника продукта, менеджер проекта и один тестировщик проверили этот документ за три двухчасовых совещания, проведенных в течение недели. Они обнаружили 233 дополнительные ошибки, в том числе несколько серьезных дефек тов. Все проверяющие согласились, что время, потраченное на «прочесывание» спецификации (по одному требованию за раз) сэкономило несчетное количество ча сов в дальнейшем.

Проведение экспертизы Экспертиза была разработана Майклом Фэганом (Michael Pagan) из IBM в середине 70-х гг. (Pagan, 1976), а другие дополнили и модифи Часть II. Разработка требований к ПО цировали его методы (Gilb и Graham, 1993). Экспертиза была признана лучшим приемом в области разработки ПО (Brown, 1996). Этот метод годится для проверки любого продукта, в том числе документации требований и дизайна, исходного кода, документации тестирования и планов проекта.

Экспертиза — это четко определенный многоэтапный процесс. В нем участвует небольшая команда квалифицированных специалистов, которые тщательно проверяют продукт на наличие дефектов и изучают возможности улучшения. Экспертиза обеспечивает уровень качества продукта, предшествующий окончательному. Иногда возникают деба ты, действительно ли метод Фэгана можно считать лучшей формой проверки (Glass, 1999), однако ни у кого не возникает сомнений, что экспертиза является мощным приемом повышения качества продукт,:!.

Множество полезных советов по проведению экспертной оценки и экс пертизы опубликовано на http://www.processimpact.com/goodies.shtml, в том числе описание процесса экспертной оценки, контрольные списки дефектов и формы экспертизы.

Участники Участники инспектирования должны отражать четыре точки зрения на продукт (Wiegers, 2002a).

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

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

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

I Люди, отвечающие за работу продуктов, взаимодействующих с проверяемым элементом. Они выявят проблемы с требованиями Глава 15. Утверждение требований к внешнему интерфейсу. Они также могут выявить требования, изме нение которых в проверяемой спецификации влияет на другие систе мы (волновой эффект}.

Постарайтесь ограничить команду шестью членами или меньше.

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

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

Автор. Автор создает или поддерживает проверяемый продукт.

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

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

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

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

Входные критерии Вы готовы к экспертизе документа о требованиях в том случае, если он удовлетворяет определенным предварительным условиям. Набор вход ных критериев (entry criteria) четко обрисовывает авторам то, как следу ет подготовиться к инспектированию. Они также удерживают команду от траты времени на проблемы, которые следует решать до начала экспер тизы. Координатор использует входные критерии в качестве контроль ного списка до того, как принять решение о начале инспектирования.

Вот несколько входных критериев для составления документации по требованиям:

I документ должен соответствовать шаблону;

9 в документе выполнена проверка правописания;

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

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

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

I все нерешенные вопрсы помечаются значком «TBD» (to be deter mined — необходимо определить);

1 координатор выявляет не более трех существенных дефектов после 10-минутной проверки выбранного фрагмента документа.

Этапы экспертизы Экспертиза— это многоэтапный процесс, как показано на рис. 15-2.

Цель каждого этапа кратко описана далее в этом разделе.

Глава 15. Утверждение требований Первом 1- f чальны Ппанировани продук F Ш,, Совеи #ние Л — — — ГРГ,Ф~ Г чг Получение продут I Переработка н щлежащего/ / V качества {г * ^ Рис. 15-2. Экспертиза - это многоэтапный процесс.

Пунктирные линии указывают на то, что определенные этапы экспертизы могут быть выполнены несколько раз Планирование. Экспертизу совместно планируют автор и координа тор. Они определяют состав участников, материалы, которые прове ряющие должны получить до начала первого совещания, и количество совещаний, необходимых для охвата всего материала. Количество об наруженных дефектов очень зависит от темпов работы (Gilb и Graham, 1993). Как видно на рис. 15-3, чем медленнее изучается спецификация требований к ПО, тем больше дефектов удается выявить (весьма рас пространено альтернативное толкование этой связки: «Темпы провер ки снижаются, если вы обнаруживаете много ошибок»). Поскольку ни одна команда не может тратить бесконечное количество времени на проверку требований, выберите подходящий темп, принимая во вни мание риск пропуска важных дефектов. Чаще всего — от двух до четы рех страниц в час, хотя оптимальная скорость, при которой достигает ся максимальный эффект ниже примерно в два раза (Gilb и Graham, 1993). При выборе темпа работы учитывайте следующие факторы:

i дату предыдущей экспертизы;

i объем текста на каждой странице;

I сложность спецификации;

I риск не заметить ошибку;

I насколько критично для успеха проекта проверить весь этот мате риал;

i квалификацию автора спецификации требований к ПО.

292 Часть II. Разработка требований к ПО Много Несколько Мало.

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

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

для этого они используют контрольные списки типичных дефектов (они описаны далее в этой главе) и другие приемы анализа (Wiegers 2002а). До 75% дефектов, обнаруживаемых при экспертизе, выявля ются на этапе подготовки (Humphrey, 1989), поэтому этот этап пропус кать нельзя, Дополнительная информация Приемы по выявлению недостающих требова ний, описанные в главе 7, могут оказаться полезными при подготовке к экспертизе.

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

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

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

просьбой оценить ясность (понятность) требований по 5-балльной шкале (Pfleeger, 2001). Оценка «1» означает, что разработчик не имеет ни малейшего представления о содержании требования, а «5» — что оно абсолютно понятное, полное и недвусмысленное.

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

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

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

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

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

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

Выходные критерии В ходе экспертизы определяются выходные критерии (exit criteria), ко торые необходимо одобрить, прежде чем координатор объявит о том, что проверка закончена. Вот перечень стандартных критериев:

I все возникшие вопросы были сняты;

I все изменения, внесенные в документ и соответствующие продук ты, были внесены корректно;

1 в измененном документе проверено правописание;

1 все проблемы, помеченные «TBD», разрешены, при этом фиксиро вались данные по разрешению каждого, дата и исполнитель;

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

Весь длинный контрольный список запомнить невозможно. Сокра тите списки, сообразуясь с нуждами вашей компании, и измените их в соответствии с тем, какие проблемы в ваших требованиях повторяются чаще всего. Вы можете попросить некоторых инспекторов при подго товке использовать разные поднаборы контрольных списков. Одного проверить, верны ли перекрестные ссылки внутренней документации, Глава 15. Утверждение требований другого — могут ли требования служить основой для дизайна, а третьего — оценить проверяемость требований. Проведенные иссле дования показали, что такое распределение обязанностей— естест венно, когда экспертов снабжают четкими указаниями или сценария ми, которые помогают им при поиске ошибок— более эффективно, чем когда эксперты работают по одинаковым контрольным спискам (Porter, Votta и Basili, 1995).

Является ли конкретный вариант использования продукта автономной и отдельной задачей?

Ясно ли сформулирована цель или измеряемое значение для конкретного варианта использования продукта?

Очевидно ли, кто получит преимущества от этого варианта использования?

Написан ли вариант использования на базовом уровне, без ненужных деталей, связанных с дизайном и реализацией?

Все ли предполагаемые альтернативные направления задокументированы?

Все ли известные условия исключения задокументированы?

Есть ли какие-либо последовательности действий, которые можно разделить на отдельные варианты использования?

Все ли этапы каждого направления записаны в ясной, недвусмысленной и полной форме?

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

Осуществимо ли и поддается ли проверке каждое альтернативное направление, определенное в варианте использования?

Должным ли образом структурируют вариант использования выходные и выходные условия?

Рис. 15-4. Контрольные списки дефектов для документов о вариантах использования 296 Часть II. Разработка требований к ПО Организация и завершенность § Корректны ли все ли внутренние перекрестные ссылки на другие документы?

1 Написаны ли все ли требования на одном и том же соответствующем уровне детализации?

1 Обеспечивают ли требования адекватную основу для дизайна?

1 Указан ли приоритет реализации каждого требования?

I Определены ли все внешние интерфейсы оборудования, ПО и взаимодействия?

i Определены ли все алгоритмы, соответствующие функциональным требованиям?

I Включены ли в спецификацию требований к ПО все известные потребности клиента или системы?

I Отсутствует ли в требовании какая-либо необходимая информация? Если да, помечена ли она значком «TBD»?

I Задокументировано ли ожидаемое поведение системы для всех предполагаемых ошибочных условий?

Корректность I Конфликтуют ли какие-либо требования с другими требованиями или повторяют их?

I Написано ли каждое требования ясным, точным и недвусмысленным языком?

I Можно ли проверить каждое требование с помощью тестирования, демонстрации, просмотра или анализа?

i He выходит ли какое-либо требование за границы проекта?

I Нет ли в каком-либо требовании тематических или грамматических ошибок?

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

i Все ли перечисленные сообщения об ошибках уникальны и выразительны?

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

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

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

Рис. 15-5. Контрольные списки дефектов для спецификации требований к ПО Глава 15. Утверждение требований Возможность отслеживания I Каждое ли требование идентифицировано уникально и корректно?

§ Прослежено ли каждое функциональное требование до более высокого уровня (например, требования к системе или вариант использования)?

Особые проблемы I Все ли требования можно отнести к именно к требованиям, а не к решениям разработки или реализации?

I Идентифицированы ли все функции, зависящие от времени, и определены ли их критерии?

I Были ли рассмотрены соответствующим образом все проблемы, связанные с интернационализацией?

Рис. 15-5. Контрольные списки дефектов для спецификации требований к ПО (продолжение) Проблемы при просмотре требований Экспертные оценки можно отнести как к техническим приемам, так и к работе с людьми. Просьба коллег высказать их мнение о том, что не так с вашей работой, — сознательное, а не интуитивное действие. Для введения практики экспертных оценок в компанию, специализирую щуюся на разработке ПО, необходимо время. Ниже описаны типичные проблемы, с которыми специалисты компании столкнутся при провер ке документации требований, и предложения по их решению (Wiegers, 1998a;

Wiegers, 2002a).

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

Чтобы избежать перегрузок, проверяйте документ по мере его раз работки, не ждите, когда он будет закончен. Определите области повышенного риска, которые требуют тщательной экспертизы — для менее важных фрагментов хватит и неофициального просмотра. По просите определенных инспекторов начать с различных частей доку мента, это позволит окинуть каждую страницу свежим взглядом. Воз можно, следует использовать несколько небольших команд для про верки различных фрагментов документа, однако при этом вы рискуете 298 Часть II. Разработка требований к ПО не заметить несогласованности. Чтобы оценить, требуется ли прово дить экспертизу всей спецификации, исследуйте репрезентативную выборку фрагментов. Изучив количество и типы обнаруженных оши бок, вы определите, стоит ли проводить полную проверку (Gilb и Gra ham, 1993).

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

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

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

1 соберите несколько небольших групп для параллельной проверки спецификации требований к ПО и объедините их контрольные спи ски дефектов в один, удалив все повторы. Исследования показали, что экспертиза документа о требованиях, выполняемая нескольки ми командами, выявляет больше ошибок, чем одна большая коман да (Martin и Tsai, 1990;

Schneider, Martin и Tsai, 1992;

Kosman, 1997).

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

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

Глава 15. Утверждение требований Просмотр электронного файла, размещенного в общей сетевой папке, — метод, альтернативный традиционным совещаниям экспер тов (Wiegers, 2002a). В этом случае рецензенты используют функции текстового редактора, чтобы ввести свои комментарии в проверяемый документ. Каждый комментарий помечается инициалами эксперта, та ким образом, любой может ознакомиться с мнением других рецензен тов. ПО, поддерживающее совместную работу через Web встроено в такие инструменты как, ReviewPro компании Software Development Tech nologies (http://www.sdtcorp.com). Если вы решите не проводить сове щания, то отдавайте себе отчет, что при этом результативность инспек тирования снизится примерно на 25% (Humphrey, 1989), однако стои мость экспертизы также уменьшится.

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

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

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

К сожалению, я промедлил пару недель, прежде чем написал варианты тестирова ния для этой функции электронной почты. Разумеется, я допустил ошибку в одном из требований. Я обнаружил ее, поскольку мое представление о том, как функция должна работать, раскрытое в 20 контрольных примерах, оказалось несовместимо с одним из требований. Раздосадованный, я исправил требование с ошибкой, еще до того, как Чарли завершил разработку, и в законченном варианте не было ни одной ошибки. Это маленькая победа, но даже маленькие победы имеют смысл, Вы можете заняться созданием концептуальных вариантов тестиро вания, основываясь на вариантах использования продукта или других представлениях пользовательских требований, уже на ранней стадии процесса разработки (Ambler, 1995;

Collard, 1999;

Armour и Miller, 2001).

Также варианты использования пригодятся вам для оценки текстовых требований, моделей анализа и прототипов. Варианты тестирования должны охватывать нормальную линию поведения варианта использо вания продукта, альтернативные направления, а также исключения, идентифицированные в ходе сбора информации и анализа. Эти кон цептуальные (или абстрактные) варианты тестирования не зависят от реализации. Для примера рассмотрим вариант использования «Про смотр заказа» (View Order) для Chemical Tracking System. Концептуаль ные варианты тестирования могут быть следующими:

8 пользователь вводит номер заказа, который он хочет просмотреть, этот заказ существует, пользователь разместил заказ. Ожидаемый результат: отображение заказа детально;

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

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

Ожидаемый результат: появляется сообщение: «Сожалею, это не ваш заказ».

Глава 15. Утверждение требований В идеале разработчик пишет функциональные требования, а тести ровщик — варианты тестирования на основе одних и тех же материа лов (одна исходная точка на рис. 15-6) — пользовательских требова ний. Неясности в пользовательских требованиях и различные интер претации выливаются в несогласованность функциональных требо ваний, моделей и вариантов тестирования. По мере того, как разработчики преобразовывают требования в пользовательский ин терфейс и технический дизайн, тестировщики могут переработать кон цептуальные тесты в детально проработанные процедуры тестирова ния для официального тестирования системы (Hsia, Kung и Sell, 1997).

Пользовательские требования Тестировщик Аналитик t Функциональные Варианты тестиро гребования и модели сравнение k вания и сценарии л анализа 1г Технический дизайн Процедуры тести сравнение J и разработка л рования и сценарии пользовательского интерфейса Рис. 15-6. Разработка и тестирование продуктов имеют один общий источник По первости вам может показаться, что тестирование требований — абстрактная категория. Давайте посмотрим, как команда разработчи ков Chemical Tracking System связала вмести спецификации требова ний, моделирование анализа и первую стадию создания вариантов тестирования. Далее рассматриваются бизнес-требование, вариант использования продукта, некоторые функциональные требования, часть карты диалогов, а также вариант тестирования, которые связаны с задачей запроса химиката.

Бизнес-требование. Одна из основных бизнес-целей Chemical Track ing System такова:

Эта система сэкономит компании в первый год применения 25% затрат на химика ты, позволив полностью использовать химикаты, уже имеющиеся в распоряжении компании...

302 Часть II. Разработка требований к ПО Дополнительная информация Бизнес-требование взято из документа об об разе и границах проекта, описанного в главе 5, Вариант использования продукта. Вариант использования продук та, поддерживающий это бизнес-требование, называется «Запрос хи миката» (Request a Chejnical). Он позволяет пользователю запросить контейнер с химикатом, который уже имеется в наличии на складе хи микатов. Вот как звучит описание варианта использования:

Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |   ...   | 9 |



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

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