Управление требованиями 1. Определения и классификация требований 2. Процессы формирования и изменения требований 3. Связи между требованиями
Причины провала проектов Неполные требования13.1% Недостаточное участие пользователей12,4% Недостаток ресурсов10,6% Нереалистические ожидания9,9% Недостаток поддержки от руководства9,3% Изменение требований/спецификаций8,7% Недостаточное планирование8,1% Потеря актуальности7,5% Standish Group 52% !!!!
Определение и классификация требований Требование – условие или возможность, которой должна соответствовать система. Функциональные требования – определяют действия, которые должна быть способна выполнить система (без рассмотрения физических связей). Определяют внешнее поведение системы. Функциональные требования используются для выражения поведения системы путем задания предпосылок и возможностей, ожидаемых в качестве результата. Нефункциональные требования описывают только атрибуты системы или среды. Нефункциональные требования служат для создания системы с приемлемым качеством.
Модель FURPS+ Functionality (функциональность) Usability (применимость) Reliability (надежность) Performance (производительность) Supportability (пригодность к эксплуатации) + Проектные ограничения Требования к исполнению Требования к интерфейсу Физические требования
Нефункциональные требования Применимость (Практичность) Требования практичности связаны с человеческим фактором эстетикой, легкостью изучения и использования, с согласованностью пользовательского интерфейса, пользовательской документации и обучающих материалов. Надежность Требования надежности связаны с частотой появления и серьезностью ошибок, возможностью восстановления, предсказуемостью и точностью. Производительность Требования производительности накладывают ограничения на функциональные требования - требования, задающие частоту, скорость, точность, время отклика, объем памяти. Возможность поддержки Требования этого типа связаны с возможностью контроля состояния, эксплуатации и другими параметрами качества, необходимыми для организации эксплуатации и обновления системы после ее выпуска.
Цели разработки требований Разработчики системы вместе с заказчиками и другими заинтересованными сторонами должны выработать единое мнение о том, что должна делать система. Разработчики должны полнее понять системные требования. Должны быть однозначно определены границы системы. Должна быть создана основа для планирования технического содержания итераций, а также оценки стоимости и времени разработки системы Должен быть определен пользовательский интерфейс системы
Типы требований и артефакты RUP
Пользовательские и системные требования Требования в области проблем Требования в области решений
Входящие и производные требования
Атрибуты требований Позволяют не перегружать требование излишними деталями
Категории атрибутов
Связи между требованиями
Аспекты анализа связей АспектЧто рассматривается Когда применяется Анализ влияния Анализ входящих связей: что будет, если изменить требование? Для оценки изменений Анализ последствий Анализ исходящих связей: действительно ли требование необходимо? Для анализа экономической целесообразности Анализ покрытия Анализ любых связей: все ли учтено в требованиях (тестах, спецификациях…)? Для поддержки проектирования и подготовки отчетности
Анализ связей в процессе управления изменениями
Динамика появления «подозрительных» требований
«Требования к требованиям» Требования должны быть четко сформулированы Требования должны быть исполнимыми в рамках проекта Требования должны быть проверяемыми Документ с требованиями должен быть структурирован таким образом, чтобы пользователь мог легко понять смысл каждого требования в контексте всего документа Формулировка каждого требования должна четко и точно отражать его суть и обеспечивать возможность устанавливать связи с другими требованиями
Рекомендации При разработке требований, следует:
Требования в области проблем Возможные вопросы к потенциальному пользователю: Что Вы хотите, чтобы эта система делала? Зачем Вам нужна система? Какие задачи она должна решать? Что Вы хотите, чтобы Вы могли делать?
Процесс разработки пользовательских требований Неформализованные, слабоструктурированные описания Формализованные модели
Категории заинтересованных сторон Руководство (проекта, использования) Инвесторы Пользователи Обслуживающий персонал Утилизаторы Обучающий персонал Покупатели Продавцы (маркетологи) Эксперты по эргономике Правительство Органы стандартизации Общественное мнение Регулирующие органы
Расширенные связи Расширенные связи с «аргументом удовлетворения» Элементарные связи
Связь с дополнительными знаниями о предметной области DK - Domain Knowledge – конкретный факт или предположение о предметной области, которое, по своей природе, не является непосредственным ограничением для системы
Расширенные связи на многих уровнях
Параметры и метрики связей Широта – насколько полно требования данного уровня «охватывают» требования верхнего (нижнего, соседнего) уровня? – Количественная оценка хода работ Глубина – насколько далеко вниз (или вверх) через уровни продолжается данная связь? – Выявление оснований (источников) требований Нарастание – насколько широко разрастается связь через уровни? – Оценка потенциального влияния изменений
Пример оценок связей (b)- требование верхнего уровня значительно сложнее, чем в случае (а); - изменения в требовании верхнего уровня будут иметь более существенные последствия, чем в случае (а); - требование верхнего уровня плохо сформулировано и требует декомпозиции; (c)- требование верхнего уровня слишком абстрактное; (d)- требования среднего уровня излишне детализированы.
Анализ частотного распределения значений фактора нарастания Выявляет наиболее критичные требования, от которых многое зависит в системе. Восходящий ФН Нисходящий ФН Выявляет плохо сформулированные требования.
Роли в управлении требованиями РольФункции АвторСоздает требования и принимает изменения ИздательВыпускает и актуализирует документ требований ЦензорРецензирует требования и предлагает изменения Аналитик, разработчикАнализирует требования и обсуждает изменения