WWW.DISSERS.RU

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

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

Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 9 |

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

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

Нумерация по порядку Это способ, при котором каждому требованию присваивается уникаль ный порядковый номер, например UR-9 или SRS-43. Коммерческие средства управления требованиями присваивают такой идентифика тор, когда пользователь добавляет новое требование в БД. (Эти сред ства также поддерживают функцию иерархического именования.) Пре фикс обозначает тип требования, например UR означает «user require ment» («пользовательское требование»). При удалении требования номер повторно не используется. Такой простой поход нумерации не обеспечивает логического или иерархического группирования связан ных требований, а названия не раскрывают содержания требования.

Часть II. Разработка требований к ПО Иерархическая нумерация Это наиболее распространенный способ. Если функциональные тре бования приводятся в разделе 3.2 спецификации, то все их номера будут начинаться с 3.2 (например, 3.2.4.3). Чем больше цифр, тем больше уровень детализации требования. Это способ отличается про стотой и компактностью. Ваш текстовый редактор может назначить номера автоматически. Однако даже в спецификации среднего разме ра нумерация может быть весьма длинной. Вдобавок названия, со стоящие только из цифр, ничего не говорят о назначении требований Когда же вы начнете применять этот метод на практике, то обнаружи те, что присваиваемые названия не являются неизменными. Если вы вставите новое положение, то номера всех последующих фрагментов увеличатся. А после удаления или перемещения требования — умень шатся. При этом нарушаются все ссылки на эти фрагменты.

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

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

Иерархические текстовые тэги Консультант Tom Gilb предложил текстовую схему иерархических тэгов именования отдельных требований (Gilb, 1988). Рассмотрим такое тре бование: «Система должна запрашивать у пользователя подтвержде ние запроса, когда тот хочет печатать более 10 копий». Этому требова нию можно присвоить тэг Print.ConfirmCopies, который означает, что это требование является частью функции печати и связано с количест вом печатаемых копий. Иерархические текстовые тэги структурирова ны, их названия осмысленны и не зависят от добавления, удаления или перемещения остальных положений. Недостатком является то, что они более громоздки, чем цифровые элементы, однако это незначитель ная плата за стабильность.

Глава 10. Документирование требований Когда информации недостаточно Иногда вы вдруг понимаете, что вам не хватает определенной ин формации о конкретном требовании. Ничего не поделаешь, придется проконсультироваться с клиентом, проверить описание внешнего ин терфейса или создать прототип. Для того чтобы пометить пробелы в данных, используйте пометку «TBD» (to be determined — необходимо определить).

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

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

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

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

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

.

Из положительных сторон следует отметить, что изучение возмож ных пользовательских интерфейсов (таких, как рабочий прототип) де лает требования более осязаемыми и для пользователей, и для разра ботчиков. Изображения пользовательского интерфейса помогают при планировании и оценке проекта. Подсчет элементов графического ин терфейса пользователя {graphical user interface, GUI) или числа функ циональных точек* {function points), связанных с каждым экраном, по зволяет оценить размер проекта и, следовательно, затраты на реали зацию.

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

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

Шаблон спецификации требований к ПО Каждая организация, специализирующаяся на разработке ПО, должна принять один или несколько стандартных шаблонов спецификации требований к ПО для использования в проектах. Доступны различные шаблоны спецификации (Davis, 1993;

Robertson и Robertson, 1999;

Lei fingwell и Widrig, 2000). Многие применяют шаблоны, созданные на ос нове того, что описан в IEEE Standard 830-1998, «IEEE Recommended Practice for Software Requirements Specifications» (IEEE, 1998b). Он го дится для самых разных проектов, однако в нем встречаются ограни чения и неясные места. Если вы беретесь за проекты различных типов * Функциональной точкой называется количество обнаруженных пользователем функций приложения независимо от того, как они сконструированы. Вы можете оценить функциональны •?, точки, исходя из требований пользователя, по числу внешних логических файлов и элементов вводимых данных, выводимых данных и запросов (IFPUG, 2002).

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

1. Введение 1.1 Назначение 1.2 Соглашения, принятые документах 1.3 Предполагаемая аудитория и рекомендации по чтению 1.4 Границы проекта 1.5 Ссылки 2. Общее описание 2.1 Общий взгляд на продукт 2.2 Особенности продукта 2.3 Классы и характеристики пользователей 2.4 Операционная среда 2.5 Ограничения дизайна и реализации 2.6 Документация для пользователей 2.7 Предположения и зависимости 3. Функции системы 3.x Функция системы X 3.x. 1 Описание и приоритеты З.х.2 Последовательности «воздействие - реакция» З.х.3 Функциональные требования 4. Требования к внешнему интерфейсу 4.1 Интерфейсы пользователя 4.2 Интерфейсы оборудования 4.3 Интерфейсы ПО 4.4 Интерфейсы передачи информации 5. Другие нефункциональные требования 5.1 Требования к производительности 5.2 Требования к охране труда 5.3 Требования к безопасности 5.4 Атрибуты качества 6. Остальные требования Приложение А. Словарь терминов Приложение Б. Модели анализа Приложение Г. Список вопросов Рис. 10-1. Шаблон для спецификации требований к ПО 182 Часть II. Разработка требований к ПО На рис. 10-1 показан шаблон спецификации требований к ПО, соз данный на основе стандарта IEEE 830;

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

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

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

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

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

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

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

1.5 ССЫЛКИ Перечислите все документы или другие ресурсы, на которые вы ссы лаетесь в этой спецификации, в том числе гиперссылки на них. Это могут быть руководства по стилям пользовательского интерфейса, контракты, стандарты, спецификации к системным требованиям, до кументы о вариантах использования, спецификации интерфейса, кон цептуальные документы и спецификация требований к ПО для продук тов, на которые вы ссылаетесь. Объем информации должен быть дос таточным для того, чтобы пользователь сумел при необходимости получить доступ к каждому указанному материалу, а именно: название, 184 Часть II. Разработка требований к ПО имя автора, номер версии, дата и источник или расположение (напри мер, сетевая папка или URL), 2. Общее описание В этом разделе представлен общий обзор продукта и среды, в которой он будет применяться, предполагаемая пользовательская аудитория а также известные ограничения, предположения и зависимости.

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

2.2 Особенности продукта Перечислите основные особенности продукта или его главные функции.

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

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

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

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

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

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

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

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

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

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

I стандартный формат обмена данными, например XML.

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

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

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

Определите все зависимости (dependencies) проекта от внешних факторов, такие, как дату выпуска следующей версии операционной системы или выпуск промышленного стандарта. Если вы планируете?

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

здесь на них.

3. Функции системы Шаблон на рис. 10-1 структурирован с помощью особенностей системы— это еще один способ систематизации функциональных требований. Другие методы классификации: по вариантам использо вания, режиму работы, классам пользователей, стимулам, реакциям, классам объектов или функциональной иерархии (IEEE, 1998b). Воз можны также комбинации этих элементов, например варианты ис пользования внутри классов пользователей. Не существует единст венно правильного метода организации;

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

З.х Функция системы X Укажите название особенности несколькими словами, например «3. Проверка правописания». Также назовите подразделы с З.х.1 по З.х.З для каждой особенности системы.

З.х.1 Описание и приоритеты Кратко опишите особенность системы и укажите, обладает ли она вь соким, средним или низким приоритетом (см. главу 14.) Приоритет^ являются динамической характеристикой, они могут изменяться в хо де проекта. Если вы используете средство управления требованиями, определите атрибут требований для приоритета. Атрибуты требова ний обсуждаются в главе 18, а средства управления требованиями — а главе 21.

З.х.2 Последовательности «воздействие - реакция» Перечислите последовательность воздействий, оказываемых на сис тему (действия пользователей, сигналы внешних устройств и др.), и отклики системы, определяющие реакцию конкретной функции. Эти Глава 10, Документирование требований воздействия соответствуют первоначальным шагам для вариантов ис пользования или внешним системным событиям.

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

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

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

Войны интерфейсов Две команды разработчиков ПО объединились для создания флагманского продукта Datum Corporation. Команда, отвечающая за базу знаний, создала ядро сложного ин терфейса на C++, а команда, отвечающая за приложения, реализовала пользова тельский интерфейс на Microsoft Visual Basic. Обе подсистемы взаимодействовали между собой посредством API. К сожалению, команда, отвечающая за базу знаний, 188 Часть II. Разработка требований к ПО периодически модифицировала API, в результате систему не удавалось собрать и запустить на выполнение должным образом. Команде, отвечающей за приложения, потребовалось несколько часов, чтобы распознать каждую проблему и определить основную причину - изменение API. Эти изменения не согласовывались, не доводи лись до сведения всех заинтересованных в проекте лиц и не были координированы с соответствующими модификациями в коде, написанном на Visual Basic. Интерфейс скрепляет компоненты вашей системы - включая пользователей, поэтому необхо димо документировать детали интерфейса и синхронизировать модификации в про цессе контроля за изменениями вашего проекта.

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

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

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

I конфигурация экрана или ограничения разрешения;

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

I быстрые клавиши;

I стандарты отображения сообщений;

I стандарты конфигурации для упрощения локализации ПО;

1 специальные возможности для пользователей с проблемами со зрением.

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

Глава 10. Документирование требований 4.2 Интерфейсы оборудования Опишите характеристики каждого интерфейса между компонентами ПО и оборудования системы. В описание могут входить типы поддер живаемых устройств, взаимодействия данных и элементов управле ний между ПО и оборудованием, а также протоколы взаимодействия которые будут использоваться, 4.3 Интерфейсы ПО Опишите соединения продукта и других компонентов ПО (идентифи цированные по имени и версии), в том числе базы данных, операцион ные системы, средства, библиотеки и интегрированные коммерческие компоненты. Укажите назначение элементов сообщений, данных и элементов управления, обмен которыми происходит между компонен тами ПО. Опишите службы, необходимые внешним компонентам ПО, и природу взаимодействия между компонентами. Определите данные, к которым будут иметь доступ компоненты ПО. Если механизм предос тавления общего доступа к данным должен быть реализован опреде ленным способом, например в качестве глобальной области данных, то укажите его как ограничение.

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

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

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

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

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

Приложение Б. Модели анализа В этом необязательном разделе описывается, а точнее напоминается о таких моделях анализа, как диаграммы потока данных, диаграммы классов, диаграммы перехода состояния и диаграммы «сущность- связь» (см. главу 11), Приложение В. Список вопросов Это динамический список еще не разрешенных проблем, связанных с требованиями. Это могут быть элементы, помеченные как«ТВО» (to be determined — необходимо определить), отложенные решения, необхо димая информация, неразрешенные конфликты и т.п. Все это не обя зательно включать в спецификацию требований к ПО, но в некоторых организациях принято прилагать список «TBD» к спецификации требо ваний к ПО. Постарайтесь как можно быстрее разрешить эти пробле мы, чтобы они не стали препятствием к своевременному созданию ос нов спецификации требований к ПО высокого качества.

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

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

используйте действительный залог (например, «Система сделает то-то», а не «Произойдет то-то»);

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

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

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

при указании требования в форме «Пользователь будет...» иденти фицируйте определенного исполнителя (например, «Покупатель будет...»);

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

подчеркните наиболее значимые фрагменты информации. Здесь годятся: графики, последовательности, в которых первый элемент подчеркивается, повторы, пустое пространство и визуальный кон траст, например затенения (Kovitz, 1999);

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

194 Часть II. Разработка требований к ПО Таблица 10-1. Неоднозначные термины, которых следует избегать в спецификаций к требованиям Неоднозначные термины Способы их улучшения Приемлимый, адекватный Определите, что понимается под приемлимостью и как система это может оценить Практически выполнимо Не заставляйте разработчиков определять, что под этим пони мается. Прставьте пометку «TBD» и определите дату, к которой эту проблему следует разрешить По меньшей мере. Укажите минимальное и максимальное как минимум, не более чем, допустимые значения не должно превышать Между Определите, указаны ли конечные точки Зависит от Определите природу зависимости. Обеспечивает ли другая система ввод данных в вашу систему, надо ли установить дру гое ПО до запуска вашей системы и зависит ли ваша система от другой при выполнении определенных расчетов или служб?

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

включает в себя, Список элементов должен включать все возможности.

но не огранечен этим;

и т.д.;

В противном случае его нельзя использовать при разработке и т.п.;

такой как или тестировании Миксимизируйте, минимизи- Укажите минимальное и максимальное допустимые значения руйте, оптимизируйте определенного параметра Также опишите поведение системы при нештатных или неиде Обычно, в идеальном альных условиях варианте Глава 10. Документирование требований 19!

Таблица 10-1. Неоднозначные термины, которых следует избегать в спецификаций к требованиям (продолжение) Неоднозначные термины Способы их улучшения Укажите, кто делает выбор: системы, пользователь или разра Необязательно ботчик Объясните, как это выполнить Разумный, при необходи мости, при соотвествующих условиях Определите, как система должны обрабатывать исключения Устойчивый к сбоям и реагировать на необжиданные условия работы Цельный, прозрачный, Выразите ожидания пользователя, применяя характеристики элегантный продукта, которые можено наблюдать Укажите сколько или задайте минимальную и максимальную Несколько границы диапазона Не следует Старайтесь формулировать требования в позитивной форме, описывая, что именно система будет делать Поясните этот термин Реальный Укажите, какая степень чего-либо свидетельствует Достаточный о достаточности Поддерживает, позволяет Дайте точное определение, какие действия система будет выполнять, поддерживая конкретную возможность Дружественный, простой, Опишите системные характеристики, которые будут отвечать легкий потребностям пользователей и его ожиданиям, касающимся легкости и простоты применения продукта Составляйте требования настолько подробно, чтобы при удовлетво рении требования задача клиента была бы выполнена, однако избегай те ненужных ограничений разработки. Требования должны быть сфор мулированы достаточно подробно, чтобы риск непонимания был мини мальным, для этого необходимо учесть знания и опыт разработчиков.

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

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

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

их сле дует разделить на более простые. Тестируемые требования был. предложены в качестве атрибута размера ПО (Wilson, 1995).

При написании требований соблюдайте уровень детализации. Мне приходилось видеть в одной и той же спецификации положения, кото рые значительно варьировались в их границах. Например, «Комбина ция клавишей Ctrl+S будет интерпретироваться как Сохранить файл» и «Комбинация клавишей Ctrl+P будет интерпретироваться как Печать файла» считались отдельными требованиями, а «Продукт будет реаги ровать на команды редактирования, введенные голосом» описывалось как целая подсистема (или даже продукт!), а не одно функциональное требование.

Избегайте длинных повествовательных абзацев, которые содержат несколько требований. Наличие в требовании таких слов, как «и», «или» и «также», предполагает, что несколько требований могли быть объединены. Это не означает, ЧТОБЫ не можете использовать союз «и ••>, но если вы делаете это, проверяйте, соединяет ли он две части одного требования или два отдельных требования. Никогда не используйте «и/или» в требованиях;

это оставляет читателю свободу маневра. Та кие выражения, как «пока не» и «кроме» также указывают на наличие нескольких требований: «Кредитная карточка покупателя будет счи таться действительной для платежей до тех пор, пока не истечет ее срок действия». Разделите это положение на два — для двух условии:

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

Попытайтесь найти наиболее эффективный метод представления каждого требования. Как-то я проверял спецификацию требований к ПО, в которой содержался набор требований, предлагаемый в качест ве образца: «Текстовый редактор сможет проанализировать докумен ты следующего <формат>, определяющих постановления следующей <юрисдикции>». Предлагалось три возможных значения <формат> и четыре возможных значения <уровень юрисдикции> для двенадцати схожих требований. Однако из этих двенадцати одного не хватало, а одно повторялось. Найти ошибку можно было одним единственным образом — составить таблицу всех возможных вариантов и проверить их. Ошибку удалось бы предотвратить, если требования в специфика ции были составлены по образу и подобию табл. 10-2. Требования бо лее высокого уровня могут звучать так: «ТР-13. Текстовый редактор сможет провести анализ документов нескольких форматов, опреде ляющих постановления на уровнях юрисдикции, как показано в табл, 10-2». Если у какой-либо комбинации нет соответствующего функцио нального требования, укажите в ячейке таблицы Н/П (не применимо).

Таблица 10-2. Образец табличного формата для перечисления номеров требований, предлагаемых в качестве образца Уровень юрисдикции Безтеговый Формат ASCII Теговый формат формат Федеральный ТР-13. ТР-13. ТРИ 3. Региональный [на уровне штата] ТР-13. ТР-13.4 ТР-13. Территориальный (местный) ТР-13.7 ТР-13.8 ТР-13. Международный ТР-13. 11 ТР-13. ТР-13. Примеры требований: до и после В главе 1 перечислено несколько характеристик качественно сформу лированных требований: полные, правильные, выполнимые, необхо димые, имеющие приоритет, точно выраженные и поддающиеся про верке. Поскольку наличие требований, не отвечающих этим характе ристикам, приводит к неразберихе, напрасно затраченным усилиям и последующим переделкам, старайтесь разрешить проблемы на ран 198 Часть II. Разработка требований к ПО них стадиях работы. Далее я покажу несколько далеких от совершен ства требований, взятых из реальных проектов. Исследуйте каждое и;

!.

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

Я высказал свои соображения о проблемах для каждого требовани;

.

и предложил несколько путей их решения. Дополнительные проверки еще их улучшат, однако на определенном этапе вы должны приступить к непосредственному написанию ПО. Больше примеров по исправле' нию неудачных требований изложено Hooks и Parry (2001), Florence;

(2002), а также Alexander и Stevens (2002).

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

Пример 1. «Диспетчер фоновых задач обеспечивает сообщение о со стоянии через регулярные интервалы, составляющие не менее 60 се кунд».

Что понимается под сообщениями о состоянии? При каких условиях и как именно они поставляются пользователю? Какдолго они остаются видимыми после их отображения? Продолжительность временного интервала не сформулирована точно, а слово «каждый» только вносит дополнительную неясность. Один из способов оценить требование — проверить, устраивают ли пользователя нелепые, но имеющие право на существование интерпретации этого требования. Если нет, то над требованием необходимо еще поработать. В этом примере интервал должен равняться по крайней мере 60 секундам;

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

Из-за этих причин требование нельзя проверить, Глава 10. Документирование требований А вот возможные способы исправления недостатков этого требова ния, которыми вы можете воспользоваться после того, как получите дополнительную информацию от клиента, 1. Диспетчер фоновых задач (ДФЗ) отобразит сообщения о состоянии в назначенной области пользовательского интерфейса.

1.1 Сообщения будут обновляться каждые 60 секунд плюс/минус 10 секунд после запуска фоновой задачи.

1.2 Сообщения должны оставаться видимыми постоянно.

1.3 Если взаимодействие с фоновой задачей возможно, то ДФЗ отобразит процент выполнения фоновой задачи.

1.4 По завершению фоновой задачи ДФЗ отобразит сообщение «Выполнено».

1.5 Если выполнение фоновой задачи остановлено, ДФЗ отобра зит соответствующее сообщение.

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

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

Пример 2. "Редактор XML должен моментально переключаться между режимами отображения к сокрытия непечатаемых символов».

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

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

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

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

Пример 3. «Анализатор XML выведет отчет об ошибках в разметке, :;

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

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

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

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

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

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

Пример 4, «Если возможно, номера счетов следовало бы проверить по списку корпоративных счетов».

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

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

«В момент ввода номера счета система проверит его по основному корпоративному списку счетов. Если номер счета в списке не найден, система отобразит сообщение об ошибке и не примет заказ».

Связанное требование будет относиться к условию исключения: ос новной список счетов не доступен во время проверки достоверности.

Пример 5. «В редакторе не будет функций поиска и замены, резуль таты которых могут быть катастрофичными».

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

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

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

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

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

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

202 Часть II. Разработка требований к ПО 2. USB-порт будет установлен на передней панели для того, чтобы позволить квали фицированному оператору подключить измерительный прибор за 15 секунд или менее.

Словарь данных Давным-давно я вел проект, в котором три программиста иногда не брежно использовали различные имена, длину переменных и крите рий достоверности для одного и того же элемента. Результат очеви ден: путаница с настоящим определением, повреждение данных и го ловная боль при обслуживании. Мы пострадали из-за отсутствия словаря данных (data dictionary) — общего хранилища, где определены значение, тип данных, длину, формат, необходимая степень точности л допустимые диапазоны значений или список значений всех элементов данных и атрибутов, используемых в приложении.

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

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

Если вы устанавливаете словарь данных вручную, подумайте о приме нении гиперссылок. Щелкнув элемент данных, который представляет собой часть определения структуры данных, вы перейдете к определе нию этого элемента данных;

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

Элементы в словаре данных представлены с помощью простой но тации (DeMarco, 1979;

Robertson и Robertson, 1994). Определяемый элемент расположен слева от знака равенства, а само определение справа. Так определяются простейшие элементы данных, объедине ние нескольких элементов данных в структуры, необязательные эле менты данных, итерация (повтор) элемента данных и список значений Глава 10. Документирование требований элемента данных. Следующие примеры взяты из проекта Chemical Tracking System (ну откуда же еще!).

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

ограниченного звездочками:

Request ID = * 6-значный, сгенерированный системой, последовательный номер, состоящий из целого числа, начинающийся с 1, уникальным образом идентифици рующий каждый запрос * Структура. Структура данных или записей содержит несколько эле ментов данных. Если элемент в структуре данных является необяза тельным, поставьте его в скобки:

Запрошенный химикат=Ю химиката + Количество контейнеров + Класс +0бъем + Единицы объема + (Поставщик) Эта структура определяет всю информацию, связанную с запросом определенного химиката. Поставщик (vendor) является необязатель ным элементом, поскольку сотруднику, разместившему запрос, может быть безразлично, кто именно поставил химикат. Каждый элемент дан ных в структуре должен быть определен в словаре данных. Структуры могут содержать другие структуры.

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

3anpoc=ID Запроса + Дата запроса + Номер счета +1:10{3алрошенный хмимкат} Этот пример показывает, что запрос химиката должен содержать по крайней мере один, но не более 10 химикатов. К каждому запросу до бавлены атрибуты идентификатора, дата, когда запрос был создан, и номер счета для оплаты.

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

Единицы количества = [«граммы» | «килограммы» | «миллиграммы» | «каждый»] * текстовая строка, состоящая из 9 символов, указывающая единицы, связанные с количеством запрошенного химиката * Эта запись указывает на то, что существует только четыре допусти мых значения для текстовой строки Единицы количества. Коммента рий, ограниченный звездочками, — это текстовое определение эле мента данных.

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

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

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

I Пригласите от трех до шести лиц, заинтересованных в проекте, для проверки спецификации требований к ПО для вашего проекта (Wiegers, 2002a). Убедитесь, что каждое требование отвечает соответствующим характеристикам, о которых говорилось в главе 1. Проверьте спецификацию на наличие конфликтов между различными требованиями в спецификации, недостающих требований и недос тающих разделов. Убедитесь, что обнаруженные недостатки, исправлены в спе цификации требований к ПО и в любых предыдущих продуктах, созданных на ос нове этих требований.

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

Глава 10. Документирование требований Любое изображение стоит 1024 слов Специалисты, работающие над проектом Chemical Tracking System, выполняли первую проверку спецификации требова ний к ПО. В ней участвовали Дейв (менеджер проекта), Лори (аналитик требований), Элен (ведущий разработчик), Рамеш (руководитель тестирования), Тим (сторонник продукта от хи миков) и Роксана (апологет продукта от специалистов, рабо тающих на складе химикатов). Тим начал со слов: "Я прочитал всю спецификацию требований. Большинство требований мне показались нормальными, но некоторые дались с трудом.

Я не уверен, что мы определили все этапы для процесса за проса химиката».

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

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

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

Моделирование требований Когда много лет назад я начал рисовать модели анализа, я надеялся найти единственный прием, позволяющий собирать всю информацию в одно целостное отображение требований к системе. Со временем я понял, что подобной всеобъемлющей диаграммы не существует. Пер воначальной целью структурированных систем анализа была полная замена классической функциональной спецификации графическими диаграммами и системами обозначений, более формальными, че:м текстовые комментарии (DeMarco, 1979). Однако опыт показал, что модели анализа должны дополнять — а не заменять — спецификации требований на естественном языке (Davis, 1995).

К моделям визуального представления относятся диаграммы пото ков данных (data flow diagrams, DFD), диаграммы "сущность — связь» Глава 11. Любое изображение стоит 1024 слов В- (entity-relationship diagrams, ERD), диаграммы перехода состояний (state-transition diagrams, STD), называемые также диаграммами со стояний, карты диалогов (dialog maps), диаграммы вариантов исполь зования {о которых рассказывалось в главе 8), диаграммы классов и диаграммы взаимодействия (о них также рассказывалось в главе 8).

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

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

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

Часть II. Разработка требований к ПО Приемы моделирования анализа, описанные в этой главе, под держиваются различными коммерческими инструментами автомати зированного проектирования ПО (computer-aided software engineering, CASE). Использование этих инструментов обеспечивает некоторое преимущество перед обычными средствами рисования. Во-первых, они легко позволяют улучшить качество диаграмм при повторных прс смотрах требований. Вам не удастся создать отличную модель с пер вого раза, поэтому итерацию можно назвать ключом к успеху при мо делировании систем (Wiegers, 1996a). Кроме того, инструменты авто матизированного проектирования ПО «знают» правила для каждого метода моделирования, который они поддерживают. Они способны определить синтаксические ошибки и несоответствия, которые спе циалистам, проверяющим диаграммы, не всегда удается обнаружит!,.

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

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

От желания клиента к модели анализа Тщательно слушая, как клиенты представляют свои требования, ана литик может выделить ключевые слова, которые преобразуются в оп ределенные элементы модели. В табл. 11-1 перечислены возможное отображение значимых существительных и глаголов, употребляемых пользователями, в компонентах модели, о которых рассказано далее в этой главе. По мере того как вы будете записывать пожелания пользо вателей в виде требований и моделей, вам придется связать каждый компонент модели с определенным пользовательским требованием Глава 11. Любое изображение стоит 1024 слов Таблица 11-1, Привязка пожеланий клиента к компонентам модели анализа Компоненты модели анализа Примеры Тип слова Оконечные объекты или хранили Существительные Люди, организации, системы ща данных (диаграммы потоков ПО, элементы данных данных) или существующие обьекты Действующие лица (диаграммы вариантов использования} Объекты или их атрибуты (диаграммы «сущность - связь») Классы или их атрибуты [диаграммы классов) Процессы (диаграммы потоков Действия, задачи, которые Глаголы данных) пользователь может выпол Варианты использования (диаграм нить, или события, которые мы вариантов использования) могут произойти Взаимосвязи (диаграммы «сущность - связь») Преобразования (диаграммы перехода состояний) Процессы (диаграммы процессов) В этой книге я использовал в качестве учебного примера Chemical Tracking System. В следующем абзаце для этой системы описаны по требности пользователей, который представил сторонник продукта от класса Химики. Значимые существительные выделены полужирным начертанием, а глаголы или отглагольные существительные — курси вом] отыщите эти ключевые слова в моделях анализа, показанных да лее в этой главе. На схемах некоторых моделей с целью иллюстрации показана информация, выходящая за рамки содержания следующего абзаца, тогда как на других моделях отображена только часть инфор мации, представленной здесь:

"Химик или кто-то из работающих на складе химикатов может разместить запрос на один или несколько химикатов. Запрос может быть выполнен или посредством доставки контейнера с химикатом, который числится инвентарной описи товаров на складе химика тов, или посредством размещения заказа на химикат у постороннего поставщика. Сотрудник, размещающий запрос, при подготовке за проса должен иметь возможность искать в режиме реального времени нужный химикат в каталогах поставщиков. Системе необходимо от слеживать состояние каждого запроса с момента его подготовки и до момента его выполнения или отмены. Ей также необходимо отслежи 210 Часть II. Разработка требований к ПО вать историю каждого контейнера с химикатом с момента его получе ния компанией до его полного расходования или уничтожения».

Диаграмма потока данных Диаграмма потока данных (data flow diagram, DFD) — основной инст румент структурного анализа (DeMarco, 1979;

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

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

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

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

Контекстная диаграмма на рис. 5-3 — это наивысший уровень абст ракции диаграммы потока данных. Контекстная диаграмма пред ставляет всю систему как единый процесс, изображенный в виде круга Глава 11. Любое изображение стоит 1024 слов (пузырька). На ней также показаны оконечные объекты (terminators), или внешние объекты, подсоединенные к системе и данным или мате риальным потокам между системами и оконечными объектами. Потоки на контекстной диаграмме часто представляют сложные структуры данных, определенные в словаре данных.

Вы можете конкретизировать контекстную диаграмму до уровня О, выделив важнейшие процессы системы. На рис. 11-1 показан уровень О диаграммы потока данных для Chemical Tracking System (несколько упрощенный). Единый процесс Chemical Tracking System, обозначае мый на контекстной диаграмме одним кружком, был разделен на семь основных процессов (кружков). Как и на контекстной диаграмме, око нечные объекты показаны прямоугольниками. Все потоки данных (стрелки), присутствовавшие на контекстной диаграмме, отражены на уровне 0 диаграммы потока данных. Кроме того, парами параллельных линий здесь обозначены хранилища данных, которые относятся ко внутренней части системы и, следовательно, не показаны на контекст ной диаграмме. Стрелка от кружка к хранилищу, указывает, что данные были помещены в хранилище, стрелка, выходящий из хранилища, обо значает операцию считывания, а двунаправленная стрелка между хра нилищем и кружком — операцию обновления.

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

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

информация.

содержащаяся а каталогах поставщика Химик, „ запрос по каталогу поставщике контеи- обновление нерсхи- запасов Минатом на складе из каталога поставщика Катало- поставщика запрос данны" об обучении персонала данные копией- обновление Рб обучении персо- нерсхи- запасов нала работе с опас- микатом на склвде ными химикатами запрос контейнер информация на склад с химикатом о запроси JL Товаоь* Запрос хим^чата и а складе химикатов данные по отслеживанию состояние запасов запасов на складе на складе отчеты по со стоянию эапз- /отчетго.о сов на складе / стояни и загасе и на складе состояние запрос отчет об ис- запрос отчета заказа химиката •юльзовании об испальэова у поставщика у поставщика химинэта нии химиката Рис. 11-1. Уровень 0 диаграммы потока данных для Chemical Tracking System Ниже приведены некоторые правила для рисования диаграмм пото ка данных. Не все придерживаются одних и тех же правил (например, некоторые аналитики показывают оконечные объекты только на кон текстных диаграммах), однако я считаю их полезными. Использование Глава 11. Любое изображение стоит 1024 слов моделей для улучшения взаимодействия участников проекта важнее догматического соблюдения этих правил.

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

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

S не пытайтесь вообразить последовательность этапов процесса с помощью диаграммы потока данных;

I называйте каждый процесс как короткое действие: глагол + объект (например, создать инвентарный отчет). Используйте названия, по нятные клиентам и употребляемые в деловой или предметной об ласти;

i присваивайте процессам уникальные номера согласно иерархии. На уровне 0 диаграммы, пронумеруйте каждый процесс, используя це лые числа. Если вы создадите дочернюю диаграмму потока данных для процесса 3, пронумеруйте процессы на ней как 3.1, 3.2 и т.д.;

1 не показывайте на одной диаграмме более 8-10 процессов, в про тивном случае ее будет трудно рисовать, изменять и понимать. Если у вас больше десяти процессов, создайте еще один уровень абст ракции, сгруппировав связанные процессы в процесс более высоко го уровня;

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

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

Диаграмма «сущность - связь» Точно так же, как диаграмма потока данных иллюстрирует процессы, происходящие в системе, модель данных отображает взаимоотноше ния данных. Широко используется такая модель данных, как диаграм ма ^сущность — связь» (entity-relationship diagrams, ERD) (Wieringa;

Часть II, Разработка требований к ПО 1996). Если диаграмма «сущность — связь» представляет логические группы информации предметной области и их взаимосвязи, вы ис пользуете диаграмму «сущность — связь» в качестве инструмента ана лиза требований. Анализ диаграммы "сущность — связь» помогает понять и связать компоненты данных компании или системы, не под разумевая, что в продукт будет обязательно включена база данных. И наоборот, когда вы создаете эту диаграмму в ходе разработки систе мы, вы определяете логическую или физическую структуру базы дан ных системы.

Объектами (entities) называются физические элементы (включая людей) или агрегация элементов данных, важных для бизнеса, анализ которого вы выполняете, или для системы, которую вы планируете создать (Robertson и Robertson, 1994). Объекты называются посредст вом существительных в единственном числе, они показаны в прямо угольниках на диаграмме «сущность — связь». На Рис. 11-2 показана часть диаграммы «сущность — связь» для Chemical Tracking System с использованием одной из нескольких применяемых для диаграмм та кого типа систем обозначений. Обратите внимание, что объекты За прос химиката, Каталог поставщика и Товары на складе химикатов на диаграмме потока данных на рис. 11-1 показаны в виде хранилищ дан ных. Другие объекты представляют действующие лица, взаимодейст вующие с системой (Сотрудник, разместивший заказ на химикат), фи зические элементы, являющиеся частью деловых операций (Контей нер с химикатом), и блоки данных, которые не показаны на уровни О диаграммы потока данных, но показаны на ее более низком уровне (История контейнера, Химикат), Каждый объект описывается несколькими атрибутами;

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

Ромбы на диаграмме «сущность — связь» обозначают взаимоотно шения (relationships), показывающие логические и числовую связь пар объектов. Названия взаимоотношениям даются в соответствии с при родой соединений. Например, взаимоотношения между элементами «Сотрудник, разместивший заказ на химикат», и «Запросом химиклта» определяются как размещение. Вы можете прочитать это взаимоотно шения как «Сотрудник размещает Запрос на химикат» или как «Запоос Глава 11. Любое изображение стоит 1024 слов на химикат размещен Сотрудником». Согласно некоторым правилам, фигуру в форме ромба следует назвать «размещен тем-то», что имеет смысл, только если читать диаграмму слева направо. Когда вы покаже те клиентам диаграмму «сущность — связь», попросите их проверить, все ли взаимоотношения показаны корректно и соответствующим об разом. Также попросите их определите все возможные взаимоотно шения с объектами, которые не показаны на модели.

Сотрудник, разместив ший заказ на химиш Рис. 11 -2. Часть диаграммы «сущность - связь» для Chemical Tracking System Количество элементов (cardinality) каждого взаимоотношения, или его множественность, показаны цифрой или буквой на прямых, соеди няющих объекты и взаимоотношения. Для диаграмм «сущность связь" используются различные правила для обозначения количества элементов;

условные обозначения на рис. 11-2 используются наиболее часто. Поскольку каждый Сотрудник, разместивший заказ на химикат, может разместить несколько запросов, то между элементами «Сотруд ник, разместивший заказ на химикат», и «Запрос химиката» существует связь «один ко многим». Количество элементов показано цифрой 1 на линии, соединяющей элемент «Сотрудник, разместивший заказ на хи микат», и взаимоотношение «размещение», и буквой М (много) на ли 216 Часть II. Разработка требований к ПО нии, соединяющей элемент «Запрос химиката» и взаимоотношение «размещение». Ниже перечислены другие возможные случаи:

I один к одному (каждый контейнер с химикатом отслеживается в од ной Истории контейнера);

I многие ко многим (в каждом каталоге поставщика содержится мно жество Химикатов, а некоторые Химикаты встречаются в несколь ких Каталогах поставщика}.

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

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

I химиков-синтетиков, которые создали новое вещество;

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

I химиков-аналитиков, разрабатывающих методы проверки чистоты вещества;

I патентных поверенных, которые занимаются патентной защитой изобретения;

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

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

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

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

Глава 11. Любое изображение стоит 1024 слов Диаграмма перехода состояний Для любых систем ПО необходимо учитывать комбинацию функцио нального поведения, особенности управления данными и изменения состояния. Состояний, в которых в каждый момент времени могут на ходиться системы реального времени и приложения, управляющие процессами, немного. Изменение состояния происходит, только когда удовлетворяются четко определенные критерии, такие, как получение определенного сигнала на входе при определенных условиях. Приме ром может служить перекресток магистрали с установленными датчи ками движения, защищенной полосой поворота, а также разметкой и сигналами для пешеходного перехода. Многие информационные сис темы имеют дело с бизнес-обьектами —заказы на покупку, счета-фак туры, товарно-материальные ценности и т.п., для жизненных циклов которых возможно несколько различных состояний. Элементы систе мы, для которых возможен набор состояний и их изменение, называ ются механизмами с конечным числом состояний (finite-state machi nes) (Booch, Rumbaugh, Jacobson, 1999).

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

Диаграмма перехода состояний (state-transition diagram) позволяет получить точное, полное и ясное представление о механизме с конеч ным числом состояний. Связанный с этой моделью прием —диаграм ма состояния — включен в обладающий в некотором смысле более бо гатым набором условных обозначений унифицированный язык моде лирования (Unified Modeling Language, UML), который моделирует состояния объекта в течение его жизненного цикла (Booch, Rumbaugh, Jacobson, 1999). Диаграмма перехода состояний содержит три типа элементов:

1 возможные состояния системы — показаны в виде прямоугольников;

I разрешенные состояния, или транзакции (transitions), — показаны в виде стрелок, соединяющих пары прямоугольников;

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

изменение параметров войти в автомати- выйти из автомати ческий режим ческого режима датчики отключены, установить режим Включен реиш отсутствия хозяев в доме Отключено отсутствия хозяев в течение 30 секунд ввести правильный код обнаружено движение введен неправильный код правильный код не введен в течение 30 секунд звонок в полицию обнаружен дым, звонок Обнаружен дым, звонок в противопожарную службу в противопожарную службу Рис. 11 -3. Часть диаграммы перехода состояний для домашней системы безопасности На диаграмме перехода состояний не показаны детали процессов, выполняемых системой, а только возможные изменения состояний, возникающие в результате этих процессов. Диаграмма перехода со стояний помогает разработчику понять предполагаемое поведение системы. Это хороший метод проверки того, все ли необходимые состояния и переходы состояний корректно и полно описаны в функ циональных требованиях. Тестировщики могут вывести варианты тес тирования на основании диаграммы перехода состояний, в которую Глава 11. Любое изображение стоит 1024 слов включены все допустимые пути переходов. Клиентам, как правило, хватает незначительных пояснений, касающихся принятой системы обозначений, — что означают прямоугольники и стрелки, — чтобы прочитать диаграмму перехода состояний.

Вспомните из главы 8, что основная функция Chemical Tracking System — позволить действующим лицам, которые названы «Сотруд ники, разместившие заказ на химикат», разместить запрос химиката, который может быть выполнен либо складскими работниками (если химикат есть на складе), либо сторонним поставщиком (для этого ему надо отправить запрос). Каждый запрос проходит через несколько со стояний с момента его создания до момента либо его выполнения, ли бо отмены (два конечных состояния). Таким образом, мы можем обра батывать жизненный цикл запроса химиката как механизм с конечным числом состояний и моделировать его так, как показано на рис. 11 -4.

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

I В подготовке. Сотрудник создает новый запрос, инициировав эту функцию из другой части системы;

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

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

I Размещен. Запрос должен быть удовлетворен сторонним постав щиком, покупатель размещает заказ у продавца;

1 Выполнен. Запрос удовлетворен: контейнер с химикатом постав лен либо со склада химикатов, либо от поставщика;

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

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

Когда представители пользователей Chemical Tracking System про смотрели диаграмму перехода состояний для запроса химиката, они определили, что одно состояние не нужно, другое важное состояние отсутствует, и указали два неправильных перехода. При изучении со ответствующих функциональных требований эти ошибки никто из них не заметил. В этом и заключается важность представления информа ции о требованиях на нескольких уровнях абстракции. Зачастую про 220 Часть II. Разработка требований к ПО блему легче обнаружить, если идти назад от наиболее детализирован ного уровня и рассматривать большую картину, которую обеспечивают модели анализа. Однако диаграмма перехода состояний не дает уро вень деталей, достаточный разработчику для создания ПО. Следова тельно, в спецификацию требований к ПО для Chemical Tracking Sys tem были включены функциональные требования, связанные с обра боткой запроса химиката и возможными изменениями его состояния, I пользователь отменяет t пользователь создает новый запрос новый запрос 1 пользователь сохраняет незаконченный запрос Отложен пользователь вызывает незаконченный запрос система принимает действительный запрос сотрудник, разместивший заказ на химикат, отменяет запрос запрос выполняется на складе покупатель размещает заказ у поставщика покупатель отменяет химикат получен заказ у поставщика от поставщика поставщик помешает заказ на химикат в невыполненные заказы Рис. 11 -4. Диаграмма перехода состояний для запроса химиката a Chemical Tracking System Глава 11, Любое изображение стоит 1024 слов Карта диалогов Пользовательский интерфейс также можно рассматривать как меха низм с конечным числом состояний. Только один элемент диалога (та кой, как меню, рабочая область, диалоговое окно, командная строка или дисплей сенсорного экрана) доступен в определенный момент времени для ввода информации пользователем. Пользователь может перейти к другим определенным элементам диалога, связанным с действием, которые он выполняет в активной области ввода. Количе ство возможных путей навигации в сложном графическом интерфейсе велико, однако оно конечно и, как правило, все возможности извест ны. Следовательно, множество пользовательских интерфейсов можно моделировать, применяя одну из форм диаграммы перехода состоя ния, которая называется карта диалогов (dialog map) (Wasserman, 1985;

Wiegers, 1996a). Constantine и Lockwood (1999) описывают похо жий прием — карту перемещений (navigation map), которую отличает более богатый набор условных обозначений для представления раз личных типов элементов взаимодействия и контекстных переходов.

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

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

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

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

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

I системное условие, например отсутствие бумаги в принтере;

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

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

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

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

В главе 8 описан вариант использования Chemical Tracking System под названием «Запрос химиката». Нормальное направление развития этого варианта использования подразумевает запрос контейнера с хи микатом со склада. Альтернативное направление — запрос химиката у поставщика. Пользователь, размещающий запрос, хотел бы иметь воз можность просматривать историю доступных контейнеров с этим хи микатом, прежде чем выбрать один из них. На рис. 11 -5 показана карта диалогов для этого несколько сложного варианта использования, На первый взгляд эта диаграмма может показаться довольно запу танной, но в ней довольно легко разобраться, если попробовать за один раз отследить один прямоугольник и одну линию. Пользователь инициирует этот вариант использования, размещая заказ химиката из меню Chemical Tracking System. В карте диалогов это действие пользо вателя, обозначенное стрелкой в верхней левой части карты, направ ленной к прямоугольнику с названием «Список текущих запросов».

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

1 отменить весь запрос;

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

I добавить новый химикат к запросу;

I удалить химикат из списка.

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

По мере перемещения по этой карте диалогов вы увидите элемен ты, отражающие остальные элементы варианта использования «За прос химиката»:

I один путь для запроса химиката у поставщика;

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

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

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

Часть II. Разработка требований к ПО т OK;

выход из функции запроса Падвердать, Т что запрос тр«ш запросить отменить размещение запроса весь запрос отправить запрос для количества химикатов больше нуля Слисок у ш Ь iекуощ j запвосов Ь г~ ^ЖГ отменить добавление удалить химикат 1г в В1 брать поставщика нового химиката из списка и убавить к списку i i запросить отменить добавление другой химикат нового химиката 1 запросить хшикат неправильное._„..ж.......vJ^ у поставщика *™* р-"— "^- ™ --*, ~^"" UUuJndHtrhilc *" « • «• • Ввести ^ Cm сок поставщиков!

j Отобразить |1 химиката «ймикат У ко i орых можно j сообщение i у дг язагчэа я L nptюбэести химикат [ обошибке t;

' 1^..'. в „., ^ l^ ик запросить ь другой химикат запросить химикат запросить ПООСИТЬ на склад е д химикат у поставщика выбрать контейнер • и добавить к списку Список ! RUT e F " запрость историю возврат контейнера Рис. 11 -5. Карта диалогов для варианта использования «Запрос химиката» в системе Chemical Tracking System Глава 11. Любое изображение стоит 1024 слов Некоторые переходы на карте диалогов позволяют пользователю откатить операцию. Пользователей раздражает, если они уже переду мали, а им все-таки приходится завершать задачу. Карты диалогов по зволяют облегчить и упростить работу, предлагая функции отката и от мены в стратегических точках.

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

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

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

Стандартным языком объектно-ориентированного моделирования является унифицированный язык моделирования (Unified Modelino Language, UML) (Booch, Rumbaugh и Jacobson, 1999). На уровне абст ракции, который годится для анализа требований, вы можете исполь зовать систему обозначений UML в диаграмме классов, как показано на рис. 11-6 для части— вы правильно угадали— Chemical Tracking System. Дизайнер переработает эти концептуальные диаграммы клас сов, не зависящие от особенностей реализации, в более подробны»:;

диаграммы классов для объектно-ориентированного дизайна и реали зации. Взаимодействия классов и сообщения, которыми они обмени ваются, демонстрируют диаграммы последовательностей и диаграм мы сотрудничества, подробно о которых рассказано в Booch, Rum baugh;

Jacobson (1999) и Lauesen (2002).

На рис. 11-6 показано 4 класса — каждый в большом прямоугольни ке: Сотрудник, разместивший заказ на химикат, Каталог поставщика.

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

Атрибуты (attributes), связанные с классом Сотрудник, разместив ший заказ на химикат, показаны в средней части прямоугольника, кото рый обозначает их класс: имя, Ю_сотрудника, Номер_отдела и Но мер_офиса (правило применения заглавных букв довольно распро странено в UML диаграммах). Это свойства или элементы данньк, связанные с каждым объектом — членом класса Сотрудник, разместив ший заказ на химикат. Похожие атрибуты могут содержаться в опреде лении хранилищ на диаграмме потоков данных или в словаре данных.

Операции (operations) — это службы, которые объект каждого клас са может выполнять. Операции показаны в нижней части поля класс д, как правило, за ними стоят пустые скобки. На диаграмме классов, представляющей дизайн, эти операции соответствуют функциям или методам класса, а аргумент функции часто заключен в скобки. В мо дели анализа класса просто должно быть показано, что Сотрудник, Глава 11. Любое изображение стоит 1024 слов разместивший заказ на химикат, может запрашивать химикаты, выпол нять поиск по каталогам продавцов и получать контейнеры с химиката ми. Операции на диаграмме классов весьма приблизительно соответ ствуют процессам, показанным в кружках на диаграммах потоков дан ных нижних уровней.

Сотрудник, I размесшшш заказ на хишкат name employeeNumber department roomN umber iner() Запрос химиката requestNumber requesterName vendqrName chargeNumber chemicalld fulfiilfnentLocation catalogNumber containerSizesAvailable submitn cancelfl displaylnformationO postponed retrieve}) chemicalld vendqrName I' quantity quantityUnits add() delete!) Рис. 11 -6. Диаграмма классов для части Chemical Tracking System Линии, соединяющие прямоугольники классов на рис. 11 -6, симво лизируют связи между классами. Цифры на них указывают на множе ственность связи, точно так же, как линии на диаграммах «сущность — связь" — на множественность взаимоотношений между объектами. На рис. 11-6 знак звездочки обозначает связь «один ко многим» между классами Сотрудник, разместивший заказ на химикат, и Запрос хими ката: один сотрудник может разместить множество запросов, но каж дый запрос принадлежит только одному сотруднику.

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

Таблицы решений и деревья решений— это два альтернативных приема для представления того, что система должна делать, когда в игру вступают сложные логика и решения (Davis, 1993). В таблице ре шений (decision table) перечислены различные значения для всех фак торов, влияющих на поведение системы, и приведены ожидаемые действия системы в ответ на каждую комбинацию факторов. Факторы могут быть показаны либо как утверждения с различными условиями true и false, либо как вопросы с возможными ответами «да» или «нет» Естественно, вы также можете использовать таблицы решений с фак торами, которые имеют более двух возможных значений.

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

вполне достаточно одного из них.

В табл. 11-2 показана таблица решений с логикой, управляющей принятием или отклонением запроса нового химиката Chemical Track ing System. На решение влияет четыре фактора:

I авторизирован ли пользователь, создающий запрос;

1 имеется ли химикат в наличии на складе или у поставщика;

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

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

Каждый из этих четырех факторов имеет два возможных условия, true или false. В принципе это увеличивает на 24 или 16 различные ком бинации true/false для 16 вероятных отдельных функциональных требо ваний. Однако на практике результатом многих комбинаций является Глаеа 11. Любое изображение стоит 1024 слов одна и та же реакция системы. Если пользователь не авторизован для запроса химикатов, то система не примет запрос, и таким образом ос тальные условия несущественны {показаны прочерками в таблице ре шений). Таблица показывает, что результат различных логических комбинаций — лишь пять отдельных функциональных требований.

Таблица 11 -2. Пример таблицы решений для Chemical Tracking System Номер требования Условие 1 2 4 Пользователь авторизован true false true I Химикат есть в наличии tnji false :'•' Химикат считается опасным false true true Сотрудник, разместивший заказ на хими кат, прошел соответствующую подготовку false true Действие Принять запрос x x Отклонить запрос x x Рис. 11-7. Пример дерева решений для Chemical Tracking System На рис. 11-7 показано дерево решений, представляющее ту же ло гику. Пять прямоугольников обозначают пять возможных результатов принятия или отклонения запроса на химикат. Таблицы решений и де ревья решений— это хорошие способы документации требований 230 Часть II. Разработка требований к ПО (или бизнес-правил), позволяющие не пропустить ни одну комбина цию условий. Даже сложная таблица или дерево решений более про сты для чтения, чем повторяющиеся требования в текстовом виде.

Последнее напоминание У каждого приема моделирования, описанного в этой книге, есть и свои преимущества, и свои ограничения. Эти приемы позволяют представить одни и те же области, поэтому вам не надо создавать для своего проекта все типы диаграмм. Например, если вы создаете диа грамму «сущность — связь» и словарь данных, не стоит рисовать диа грамму классов (или наоборот). Помните, что вы создаете модели ана лиза для того, чтобы обеспечить более высокий уровень понимания v взаимодействия, чем тот, что дает текстовая спецификация требова ний к ПО или любое другое представление требований. Старайтесь не стать догматиком и не участвовать в религиозных войнах, которые иногда случаются в мире методов и моделей разработки ПО. Вместе этого, используйте все доступные средства для того, чтобы как можнс лучше объяснить требования к вашей системе, Что теперь?

I Опробуйте на практике приемы моделирования, описанные в этой главе, задоку ментировав разработку существующей системы. Например, нарисуйте карту ди алогов для банковского автомата или Web-сайта, которые вы используете.

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

Глава 11. Любое изображение стоит 1024 слов Обратная сторона функциональности:

атрибуты качества ПО «Привет, Фил, это снова Мария. У меня вопрос о новой слу жебной системе, которой вы сейчас занимаетесь. Как вы знаете, эта система работает на нашем мэйнфрейме и каж дый отдел должен ежемесячно оплачивать используемое дис ковое пространство и загрузку процессора. Похоже, что в но вой системе файлы занимают в два раза больше места на диске, чем в старой. Что еще хуже, загрузка процессора за сессию в три раза выше, чем обычно. Вы можете объяснить мне, что происходит?" «Конечно, Мария. Вспомните, вы хотели, чтобы в этой системе хранилось больше данных о каждом сотруднике, чем в преды дущей, поэтому, естественно, база данных стала значительно больше. Следовательно, ваша ежемесячная плата за исполь зование дискового пространства выросла. Кроме того, вы и остальные сторонники продукта просили, чтобы с новой сис темой было удобнее работать, для чего мы сконструировали этот замечательный графический интерфейс. Однако при этом процессору требуется намного больше компьютерной мощности, чем в предыдущей системе с текстовым режимом отображения. Вот почему так возросла загрузка процессора.

Но ведь с новой системой намного удобнее работать, не так ли?» «Так-то оно так, но я и представить себе не могла, что ее рабо та будет обходиться так дорого. У меня из-за этого могут быть неприятности. Мой менеджер нервничает. При таких условиях он уже в апреле израсходует годовой бюджет, выделенный от делу на компьютерные нужды. Не могли бы вы исправить сис тему, чтобы снизить стоимость ее работы?» Часть II. Разработка требований к ПО Фил расстроился. «Ничего исправлять не нужно. Новая систе ма учета сотрудников — это именно то, что вы заказывали. Я предполагал, вы отдаете себе отчет в том, что если вы храните больше данных или больше работаете на компьютере, то ваши затраты вырастут. Возможно, нам следовало обсудить это раньше, поскольку сейчас уже практически ничего не удастся сделать. Мне очень жаль».

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

Довольно трудно дать определение атрибутам качества, однако часто именно они отличают продукт, которые просто работает так, как ожидалось, от продукта, который вызывает у клиентов восхищение. По мнению Роберта Шаррета {Robert Charette, 1990), «В реальных систе мах успех или неудачу проекта часто определяют именно нефункцио нальные требования, а не функциональные». В отличном ПО выдержан оптимальный баланс конкурирующих характеристик качества. Если в ходе сбора информации о требованиях вы досконально не выясните ожидания клиента, относящиеся к качеству, то вам крупно повезет, ее ли продукт их удовлетворит. Но, как правило, более частый исход — разочарованные пользователи и расстроенные разработчики.

С технической точки зрения атрибуты качества влияют на важные:

решения, касающиеся архитектуры и дизайна;

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

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

Атрибуты качества К атрибутам качества можно отнести несколько дюжин характеристик продукта (Charette, 1990), хотя для большинства проектов хватило бы всего нескольких. Если разработчикам известно, какие характеристи ки наиболее важны для успеха проекта, они могут выбрать соответст вующие приемы, работая над архитектурой, дизайном и программным наполнением ПО, которые позволят достичь определенного качества (Glass, 1992;

DeGrace и Stahl, 1993). Для классификации атрибутов ка чества применяются различные схемы (Boehm, Brown и Lipow, 1976;

Cavano и McCall, 1978;

IEEE 1992;

DeGrace и Stahi, 1993). Один из спо собов классификации основан на разделении характеристик, которые проявляются в период выполнения, и тех, что не проявляются (Bass, Clements и Kazman, 1998). Согласно другому способу разделяются очевидные характеристики, главным образом важные для пользовате лей, от скрытых качеств, которые имеют значение для службы техниче ской поддержки. Последние косвенно влияют на мнение клиента, так как упрощают возможные изменения продукта, его корректировку, проверку и переход на другие платформы.

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

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

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

Таблица 12-1. Атрибуты качества ПО Важны преимущественно Важны преимущественно для пользователей для разработчиков Доступность Легкость в эксплуатации Эффективность Легкость перемещения Гибкхть Возможность повторного использования Целостность Тестируемость Способность к взаимодействию Надежность Устойчивость к сбоям Удобство и простота использования Для различных элементов ПО необходимы различные сочетания ат рибутов качества. Для одних крайне важна эффективность, а для дру гих -- практичность. Выделите параметры качества, относящиеся < продукту в целом, и те, что важны только для определенных компонен тов, классов пользователей или вариантов использования. Докумен тируйте ваши глобальные пожелания, касающиеся качества продукта, в разделе 4.5 шаблона спецификации о требованиях к ПО, приведен ного в главе 10, и ассоциируйте их с отдельными возможностями, ва риантами использования или функциональными требованиями.

Определение атрибутов качества Большинство пользователей не знают ответов на такие вопросы, как «Каковы ваши требования к возможности взаимодействия?» или «На сколько надежным должно быть программное обеспечение?». При ра боте над Chemical Tracking System аналитики придумали несколько вспомогательных вопросов для каждого из атрибутов, которые они считали важными. Например, при исследовании целостности они за интересовались, насколько важно не дать пользователям возмож ность просматривать заказы, которые были размещены другими поль зователями, или должна ли у каждого пользователя быть возможность поиска по списку химикатов, находящихся на складе. Они опрашивал,!

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

Затем аналитики поработали с пользователями, чтобы выработать определенные, измеряемые и поддающиеся проверке требования к каждому атрибуту (Robertson и Robertson, 1997). Если атрибуты каче ства нельзя проверить, то не удастся установить, достигнуты ли они.

Следует указывать масштаб или единицы измерения для каждого ат рибута и поставленной задачи, а также их минимальные и максималь ные значения. Система обозначений Planguage, которая описывается далее в этой главе, поможет вам в этом. Если вы не знаете, ка изме рить все важные атрибуты качества, по крайней мере определите их приоритеты и предпочтения клиентов. Стандарт IEEE для Software Quality Metrics Methodology предоставляет прием для определения требований к качеству ПО в контексте общей системы измерения каче ства (IEEE, 1992).

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

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

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

В заключительной части этого раздела кратко описан каждый атри бут качества из табл. 12-1 и приводятся некоторые примеры атрибутов (немного упрощенные) из различных проектов. Soren Lauesen (2002) предлагает множество отличных примеров требований, относящихся к качеству.

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

Доступность. Под доступностью понимается запланированное время доступности {up time), в течение которого система действительно дос тупна для использования и полностью работоспособна. Формально доступность равна среднему времени до сбоя (mean time to failure, Ml TF) системы, деленному на сумму среднего времени до сбоя и ожи даемого времени до восстановления системы после сбоя. На достуг ность также влияют периоды планового технического обслуживания.

Некоторые авторы рассматривают доступность как совокупность на дежности, легкости в эксплуатации и целостности (Gilb, 1988).

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

Одно из требований к доступности можно сформулировать так:

Доступность-1. Система должна быть доступна как минимум на 99,5% по рабочим дням, с 6:00 до полуночи по местному времени и доступна как минимум на 99,95% по рабочим дням, с 16:00 до 18:00 по местному времени.

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

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

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

Эффективность-1. Как минимум 25% пропускной способности процессора и оперативной памяти, доступной приложению, не должно использоваться в услови ях запланированной пиковой нагрузки.

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

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

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

К сожалению, при стандартных подключениях через модем на скорости 14,4 или 28,8 кбит/с, которые в то время использовало большинство пользователей, огром ные файлы изображений загружались невероятно медленно. Все без исключения 238 Часть II. Разработка требований к ПО бета-тестеры теряли интерес к сайту еще до того, как главная страница успевала полностью загрузиться. Увлекшись графической моделью, разработчики не подума ли об ограничениях операционной среды, эффективности и требованиях к произво дительности. Пришлось отказаться от этого решения уже после его завершения дорогостоящий урок, подтвердивший важность обсуждения атрибутов качества ПО в начале проекта.

Гибкость. Этот атрибут также называют расширяемостью, дополняе мостью, наращиваемостью или растяжимостью. Гибкость показывав'';

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

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

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

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

Целостность очень важна для Интернет-приложений. Пользователи систем электронной коммерции хотят обезопасить данные своих кредитных карточек. Посетители Web-сайтов не желают, чтобы при ватная информация о них или список посещаемых ими сайтов ис пользовались не по назначению, а поставщики услуг доступа к Ин тернету хотят защититься от атак типа «отказ в обслуживании» и прочих хакерских атак. В требованиях к целостности нет места ошиб кам. Используйте следующие точные термины для формулирования Глава 12. Обратная сторона функциональности: атрибуты качества ПО 9- требований к целостности: проверка идентификации пользователя, уровни привилегий пользователя, ограничения доступа или опреде ленные данные, которые должны быть защищены, Вот как можно сформулировать требования к целостности:

Целостность-1. Только пользователи, обладающие привилегиями уровня Ауди тор, должны иметь возможность просматривать транзакции клиентов.

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

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

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

Способность к взаимодействию-1. Chemical Tracking System должна иметь воз можность импортировать любые допустимые химические структуры из пакетов ChemiDraw (версии 2.3 или более ранней) и Chem-Struct (версии 5 или более ран ней).

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

Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 9 |



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

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