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

Тема 1

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

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

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

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

Требование

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

SR_define.png


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

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

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

SR_process.png

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

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

SR_analis.png

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SR_control.png

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