exam

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

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

Цели документирования

  • обеспечить единое понимание целей и задач проекта у всех участников;
  • создать основу для проектирования, разработки и тестирования;
  • формализовать договорённости между заказчиком и исполнителем;
  • упростить коммуникацию между командами и стейкхолдерами;
  • обеспечить трассируемость требований (связь с бизнес‑целями, тест‑кейсами и задачами);
  • снизить риски недопонимания и дорогостоящих доработок.

Критерии качества документации

Требования в документации должны быть:

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

Основные методы документирования требований

  1. Спецификация требований к ПО (SRS, Software Requirements Specification)
    • Что это: формальный документ с исчерпывающим описанием функциональных и нефункциональных требований.
    • Когда применять: для крупных, сложных или критически важных проектов (медицина, финансы, авиация), где нужна полная и однозначная документация.
    • Структура:
      • введение (цели, область, определения);
      • общее описание системы;
      • функциональные требования;
      • нефункциональные требования;
      • интерфейсы;
      • ограничения;
      • матрица трассируемости;
      • приложения (глоссарий, диаграммы).
  2. Пользовательские истории (User Stories)
    • Формат: «Как [роль пользователя], я хочу [функционал], чтобы [ценность]».
    • Пример: «Как покупатель, я хочу фильтровать товары по цене, чтобы быстрее найти подходящий вариант».
    • Когда применять: в Agile‑разработке (Scrum, Kanban) для гибкой фиксации потребностей. Дополняются критериями приёмки (Acceptance Criteria).
  3. Варианты использования (Use Cases)
    • Что это: описание взаимодействия актора (пользователя или системы) с ПО для достижения цели.
    • Включает: предусловия, основной и альтернативные сценарии, постусловия, исключения.
    • Когда применять: когда нужно детально описать сценарии взаимодействия пользователя с системой.
  4. Сценарии в формате Gherkin (Given‑When‑Then)
    • Формат:Дано (Given) [начальное состояние] Когда (When) [действие пользователя] Тогда (Then) [ожидаемый результат]
    • Пример:Дано авторизованный пользователь на странице корзины Когда он нажимает кнопку «Оформить заказ» Тогда система отображает форму ввода данных доставки
    • Когда применять: для автоматизации тестирования (BDD‑подход).
  5. Таблицы решений
    • Что это: табличное представление сложной бизнес‑логики с условиями и действиями.
    • Когда применять: при множестве условий и вариантов поведения системы (например, расчёт скидок, проверка прав доступа).
  6. Визуальные модели
    • Диаграммы UML (Use Case, Activity, Sequence) — для описания процессов и взаимодействий.
    • BPMN‑диаграммы — для моделирования бизнес‑процессов.
    • Mind Maps — для структурирования идей и группировки требований.
    • Прототипы интерфейсов (низко‑ и высокодетализированные) — для визуализации UI/UX.
    • Customer Journey Map — визуализация пути пользователя через точки взаимодействия с продуктом.
  7. Глоссарий
    • унификация терминов для устранения неоднозначности;
    • обязателен для сложных проектов с отраслевой спецификой.
  8. Матрица трассируемости требований (RTM)
    • таблица, связывающая требования с:
      • бизнес‑целями;
      • пользовательскими историями;
      • тест‑кейсами;
      • задачами разработки.
    • позволяет отслеживать реализацию и влияние изменений.

Структура типового документа SRS

  1. Введение
    • цель документа;
    • область применения;
    • определения, акронимы, сокращения;
    • ссылки на источники.
  2. Общее описание
    • видение продукта;
    • границы проекта (что входит/не входит);
    • акторы и их роли;
    • предположения и зависимости.
  3. Функциональные требования
    • use cases или user stories с критериями приёмки;
    • сценарии использования (основные и альтернативные).
  4. Нефункциональные требования
    • производительность;
    • надёжность;
    • безопасность;
    • удобство использования;
    • масштабируемость и т. д.
  5. Требования к интерфейсам
    • пользовательский интерфейс (прототипы, макеты);
    • API (форматы запросов/ответов);
    • взаимодействие с внешними системами.
  6. Требования к данным
    • структура базы данных;
    • форматы импорта/экспорта;
    • правила валидации.
  7. Ограничения
    • технические (платформы, языки);
    • законодательные;
    • бюджетные и временные.
  8. Приложения
    • глоссарий;
    • диаграммы (UML, BPMN);
    • примеры данных;
    • матрица трассируемости.

Инструменты для документирования

  • Текстовые редакторы и вики: Confluence, Notion, Google Docs — для совместной работы и версионности.
  • Системы управления требованиями: IBM Rational DOORS, Jama Connect, ReqView — для трассировки и контроля изменений.
  • Инструменты моделирования: Enterprise Architect, Visual Paradigm, Lucidchart — для UML/BPMN.
  • Прототипирование: Figma, Sketch, Axure RP — для визуализации интерфейсов.
  • Agile‑платформы: Jira (с плагинами), Azure DevOps — интеграция требований с задачами и тестами.
  • Автоматизация: интеграция с CI/CD для актуализации документации.

Лучшие практики

  • Гибкость vs формальность. Выбирайте метод под проект: SRS для регуляторики, User Stories для стартапов.
  • Итеративность. Обновляйте документацию параллельно с развитием проекта.
  • Вовлечение стейкхолдеров. Проводите ревью требований перед фиксацией.
  • Визуализация. Дополняйте текст диаграммами и прототипами.
  • Единообразие. Используйте шаблоны и стандарты (например, IEEE 830 для SRS).
  • Трассируемость. Связывайте требования с тестами и задачами.
  • «Just enough, just in time». Документируйте достаточно для понимания, но не избыточно.