Разработка требований к программному обеспечению

Тема 1

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

Артефакты: спецификации требований, техническое задание

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

1. Требования к программному обеспечению

Понятие требование

Требование

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

SR_define.png


Требование = Намерение пользователя + Ограничение технологий + Фиксация в документе —

Инженерная задача

Из неформального желания заинтересованной стороны получить проверяемое требование.

Например:

«Система должна работать быстро»

превратить в:

«Система должна формировать результат поиска не более чем за 2 секунды для 95% запросов при нагрузке …»

Артефакт

Requirement Specification

Уровни требований

Уровни требований

Инженерная задача

Алгоритм

Цель (бизнес-требование)
    ↓
Потребность пользователя (пользовательские требования)
    ↓
Функциональное требование
    ↓
Критерий приемки (тестовые сценарии

Из бизнес-описания системы построить цепочку «цель → потребность → требование → критерий приемки».

Артефакт

Requirement Traceability Matrix

2. Процесс разработки требований

SR_process.png

Этап Инженерная задача Артефакт
Выявление Найти заинтересованные стороны и их потребности Stakeholder Map
Сбор Получить исходные требования Raw Requirements
Анализ Найти конфликты, пропуски, зависимости Analysis Model
Спецификация Сформулировать требования SRS
Проверка Найти дефекты требований Review Report
Управление Обработать изменения Change Request

Методы сбора и выявления требований

Задача 1. Интервью

Сформулируйте 10 вопросов для [роль], который является пользователем системы [назначение].

Задача 2. Наблюдение

Какие требования невозможно надежно получить только из интервью?

Задача 3. Анализ стекхолдеров

Определите заинтересованные стороны и их интересы.

Артефакты

список требований

Методы анализа требований

SR_analis.png

Инженерная задача

Дан набор требований:

R1 ...
R2 ...
R3 ...

Найти:

  • противоречия;
  • пропуски;
  • зависимости;
  • неоднозначности;
  • нереализуемые требования.

Артефакты

  • DFD;
  • Use Case;
  • матрица зависимостей.

Документирование требований

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

Классический синтаксис используется для написания строгих системных требований, технических заданий (ТЗ) и нефункциональных ограничений. Избавляет текст от двусмысленности.

[Условие / Триггер] ➔ [Субъект (Система)] ➔ [Модальный глагол] ➔ [Действие] ➔ [Объект]

👥 **Продуктовый синтаксис: Пользовательские истории (User Story)

Применяется в Agile-командах (Scrum/Kanban).**

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

Шаблон: Как [Роль пользователя], я хочу [Действие / Функция], чтобы [Бизнес-ценность]

  1. Кто? (Роль): Конкретный персонаж (например, «Преподаватель», а не просто абстрактный «Пользователь»).
  2. Что? (Действие): Какую задачу или действие в интерфейсе нужно совершить.
  3. Зачем? (Ценность): Какую проблему это решает. Самая важная часть для разработчика.

Инженерная задача

Одно и то же “неявнятное” пожелание представить:

  1. как User Story;
  2. как формальное системное требование;
  3. как критерий приемки.

3. Качество требований

Связь характеристик качества с проверкой требований

Характеристика качества Анализ требований (Analysis) Проверка требований (Validation/Verification)
Корректность (Correctness) Анализирует соответствие бизнес-целям и потребностям Подтверждает у Stakeholder, что требование действительно нужно
Полнота (Completeness) Выявляет отсутствующие детали и сценарии Проверяет, что спецификация не содержит пропусков
Однозначность (Unambiguity) Устраняет неоднозначные формулировки Проверяет, что разные участники понимают требование одинаково
Непротиворечивость (Consistency) Ищет конфликты между требованиями Проверяет отсутствие логических противоречий в наборе требований
Проверяемость (Verifiability) Определяет возможность проверки Подтверждает наличие тестов, критериев приемки или метода проверки
Осуществимость (Feasibility) Оценивает техническую и ресурсную реализуемость Проверяет, что утвержденные требования реально выполнить
Необходимость (Necessity) Анализирует ценность требования Проверяет отсутствие лишних требований
Трассируемость (Traceability) Устанавливает связи источник → требование Проверяет наличие обратной и прямой трассировки
Приоритетность (Priority) Определяет относительную важность Проверяет согласованность приоритетов с целями проекта
Стабильность (Stability) Оценивает вероятность изменений Используется для оценки рисков изменения требований

Инженерная задача

Найти дефекты требований.

Для списка требований составить чек-лист:

☐ Correct
☐ Complete
☐ Unambiguous
☐ Consistent
☐ Verifiable
☐ Feasible
☐ Necessary
☐ Traceable
☐ Prioritized
☐ Stable

4. Аттестация требований

  • продемонстрировать, что требования действительно определяют ту систему, которую хочет иметь заказчик
Метод Что из себя представляет? Главная цель (Зачем нужен?) Пример из практики
1. Обзоры требований (Reviews / Inspections) Совместное чтение и аудит ТЗ аналитиками, разработчиками и QA. Найти логические противоречия и нестыковки в тексте. Архитектор замечает, что база данных не выдержит указанную в ТЗ нагрузку.
2. Прототипирование (Prototyping) Создание интерактивного макета интерфейса (например, в Figma). Показать систему «вживую», чтобы заказчик подтвердил логику. Клиент кликает по макету приложения и понимает, удобно ли оформлять заказ.
3. Тестирование моделей (Model Validation) Автоматическая проверка требований, описанных через UML или BDD-сценарии. Исключить человеческий фактор и проверить математическую строгость логики. Специальный софт проверяет UML-диаграмму на отсутствие тупиковых сценариев.
4. Приемочные тесты (Acceptance Tests) Написание сценариев тестирования до начала разработки (ATDD/BDD). Убедиться, что требование в принципе можно проверить и измерить. Тестировщик пишет тест-кейс: «Если файл > 2 ГБ, система должна выдать ошибку №413».

7. Управление требованиями

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

SR_control.png

📝 Стандартные задачи