Подытоживаю все свои написанные заметки по прочитанной книге К. Вигерса "Разработка требований к ПО".
В книге рассматриваются три основные темы:
- Работа над требованиями (разработка и управление).
- Совершенствование процессов по работе с требованиями.
- Управление рисками при работе с требованиями.
Работа над требованиями
Требование - это описание того, что должно быть реализовано: поведение системы, ее свойства. Они могут являться ограничениями в процессе разработки системы.
Требование - это основа для плана проекта, проектирования решения и написания кода, тестирования.
Требования должны отвечать на вопрос ЧТО? Они не отвечают на вопрос КАК? Проектирование решения отвечает на вопрос КАК?
Цепочка от требований до кода: Бизнес-требование → Пользовательское требование → Функциональное требование → Элемент дизайна → Код, реализующий требование.
Примерный процесс формирования требований
- Определите бизнес-требования.
- Определите классы пользователей.
- Определите представителей пользователей.
- Определите ЛПР.
- Разработайте план выявления требований.
- Определите пользовательские требования и приоритизируйте их.
- Сформулируйте пользовательские требования.
- Выведите функциональные требования.
- Смоделируйте требования.
- Определите атрибуты качества.
- Разработайте прототипы.
- Разработайте архитектуру системы.
- Распределите требования по компонентам архитектуры системы.
- Разработайте тест-кейсы.
- Проверьте пользовательские, функциональные, нефункциональные требования, модели, прототипы.
Выявление
Техники, приемы выявления требований
- Определение классов пользователей и их представителей;
- Выбор сторонника продукта;
- Проведение фокус-групп;
- Проведение интервью для выявления требований;
- Проведение совместных семинаров;
- Наблюдение за пользователями на рабочих местах;
- Раздача опросных листов;
- Анализ документов;
- Изучение отчетов о проблемах существующих систем;
- Требования из других проектов (Повторное использование требований);
- Анализ взаимодействия с внешними системами (интеграция);
- Анализ пользовательских интерфейсов.
Анализ
Классификация информации после выявления
После получения информации от заинтересованных лиц аналитик должен ее систематизировать, структурировать, проанализировать, классифицировать на:
- Бизнес-требования.
- Пользовательские требования.
- Бизнес-правила.
- Функциональные требования. Не стоит считать, что ЗЛ будут предъявлять ФТ. Аналитику на основании сказанного нужно уточнить, дополнить требования до ФТ.
- Атрибуты качества.
- Ограничения: то, что ограничивает разработчика.
- Требования к внешним интерфейсам: связь системы с остальным миром.
- Данные: формат данных, тип данных, допустимые значения, значения по умолчанию и пр.
- Идеи, касающиеся решений. Пользователи часто говорят не требованиями, а уже готовыми решениями. Это может стать ограничением для разработчика, хотя убедительных причин для этого нет. Аналитику нужно убедиться в разумности, целесообразности предлагаемого пользователем решения.
Техники анализа при работе с требованиями
1. Внешние интерфейсы системы, границы системы:
- Контекстная диаграмма;
- Карта экосистемы;
- Диаграмма потоков данных;
2. Поток бизнес-процессов:
- Диаграмма потоков работ;
3. Описание данных, связи:
- Диаграмма потоков данных;
- Диаграмма сущность-связь;
- Диаграмма классов;
- Словарь данных (таблица);
4. Состояния системы и объектов:
- Диаграмма перехода состояний;
- Таблица состояний;
- Таблица внешних событий и реакций системы на них;
5. Сложная логика:
- Дерево решений;
- Таблица решений;
6. Пользовательский интерфейс:
- Карта диалоговых окон;
- Создание прототипов;
- Модели “Отображение-действие-реакция”;
- Подробные макеты экрана;
7. Описание задач пользователей:
- Пользовательские истории;
- Варианты использования;
- Диаграммы вариантов использования;
- Диаграммы Swimlane;
- Блок-схемы;
- ФТ на естественном языке;
- Диаграммы потоков работ
8. НФТ:
- Естественный язык;
- Методика Planguage.
Процесс разработки требований с использованием вариантов использования
- Определить автоматизируемые бизнес-процессы и акторов, в них участвующих.
- Составить таблицу акторов и их вариантов использования (названия вариантов).
- Разработать модели бизнес-процессов (графические, текстовые) с детализацией до функций. Выделить функции, которые должны быть автоматизированы.
- Расспросить у ЗЛ подробнее о том, какие задачи должна поддерживать система при выполнении функций. Эти задачи / функции - потенциальные кандидаты в варианты использования.
- Держать в голове бизнес-требования, чтобы отсеивать варианты использования, выходящие за границы проекта.
- Определять внешние события, на которые система должна реагировать.
- Фиксировать информационные объекты, участвующие в функциях.
- Применить CRUD-анализ для информационных объектов.
- Держать в голове контекстную диаграмму системы, чтобы ее входы и выходы нашли отражение в вариантах использования.
- Далее совместно с ЗЛ выполнить спецификацию варианта использования с помощью соответствующего шаблона.
- На основе вариантов использования сформировать функциональные требования и сценарии тестирования.
Моделирование и анализ данных
- Словарь терминов предметной области + Модель данных (ERD или UML Диаграмма классов) + Словарь данных.
- Матрица CRUD помогает обнаружить недостающие требования.
Документирование
Документы
- Документ о концепции (vision) и границах (scope) собирает бизнес-требования в единый документ. Расползание границ проекта.
- Спецификация требований к системе.
- Спецификация отчетов.
Принципы создания требований
- Шаблон формулировки требования с точки зрения системы: [Необязательное предварительное условие] [Необязательный триггер события] Система должна [Ожидаемая реакция системы].
- Шаблон формулировки требования с точки зрения пользователя: [Класс пользователей или действующее лицо] должен иметь возможность [выполнить что-то] [с каким-то объектом] [условие выполнения, время отклика, декларация качества].
- Шаблон формулировки требования: Система должна позволить / давать возможность [классу пользователей] [выполнить то, то].
- Избегать смешение активного и пассивного залога.
- Не обозначать одно и тоже понятие синонимичными словами.
- Не использовать сослагательного наклонения.
- Использовать активный залог.
- Четко отделять требования друг от друга. Требования должны быть атомарны.
- Наличие союзов И, ИЛИ, слов - дополнительно, также - Повод задуматься, а не содержится ли в одном предложении несколько требований.
- Не использовать И/ИЛИ в одном требовании (имеет ввиду через слеш).
- Обращать внимания на формулировки, в которых содержится “Пока не”, так как есть риск наличия недостающих требований.
- Избегать негативных формулировок в требованиях, двойного отрицания.
- Избегать неоднозначные слова.
Подтверждение (утверждение, валидация)
Способы рецензирования
- Формальное рецензирование:
- Неформальное рецензирование:
- Тестирование требований до их реализации.
Характеристики качества требований
- Полнота;
- Корректность;
- Осуществимость;
- Необходимость;
- Недвусмысленность;
- Проверяемость;
- Назначение приоритета.
Совет: использовать чек-лист потенциальных дефектов требований, в соответствии с которым осуществлять рецензирование.
Управление требованиями
1. Управление версиями:
- Определение правил идентификации версий;
- Отслеживание версий отдельных требований;
- Отслеживание версий наборов требований;
2. Управление изменениями
- Возникновение изменений;
- Анализ влияния изменений;
- Принятие решений;
- Обновление отдельных требований;
- Обновление наборов требований;
- Обновление планов проекта;
- Оценка изменчивости требований;
3. Отслеживание состояния требования
- Определение возможных состояний требований;
- Фиксирование состояния каждого требования;
- Отслеживание состояний всех требований;
4. Отслеживание связей требований
- Определение возможных связей требований с другими требованиями и элементами системы;
- Определение связей с другими требованиями;
- Определение связей с другими элементами системы.
Возможные взаимосвязи требований с другими элементами системы
Совершенствование процессов по работе с требованиями
Цепочка процесса совершенствования
Советы
- Регламентировать процессы работы с требованиями в документах и внедрить их в своей организации.
- Фиксировать проблемы с требованиями.
- Помечать открытые проблемы TBD (To Be Defined) и возвращаться к ним, указывать ответственного за решение проблемы и сроки.
- Вести график решения проблем с требованиями: ответственный, сроки.
- Фиксировать часы, потраченные на работу с требованиями.
- Проводить gap-анализ между плановым количеством часов и фактическим для повышения качества планирования будущих проектов.
- Держать в курсе ЗЛ о состоянии требований, о возникающих проблемах.
Управление рисками при работе с требованиями
1. Документировать риск.
2. Оценить риск:
- Вероятность;
- Влияние - оценка в баллах ущерба, который может быть нанесен, если риск реализуется;
- Подверженность = вероятность * ущерб;
3. Отслеживать риски с наибольшим значением подверженности.