Skip to content

SRS (спецификация требований к ПО): полное руководство и шаблоны

SRD, или Software Requirements Document (также называемый SRS — Software Requirements Specification) — это инженерный чертёж для создания программного обеспечения. Он определяет, что ПО должно делать, как оно должно работать, какие ограничения на него действуют и как компоненты связаны между собой. Там, где PRD описывает продуктовой команде, что строить, а FRD задаёт поведение системы, SRD даёт инженерам полную техническую картину для написания кода, проектирования архитектуры и планирования тестирования.

SRD отвечает на один вопрос: если передать этот документ команде разработки без дополнительного контекста, смогут ли они построить систему?

Key insight

SRD — самый полный требований-документ в цепочке. Он объединяет функциональное поведение (что система делает), нефункциональные ограничения (насколько хорошо она это делает), архитектуру (как она построена) и модели данных (что она хранит). Это единый источник истины для инженерной команды.

Кто пишет и для кого

Владелец SRD — обычно системный архитектор, технический лид, ведущий инженер или системный аналитик — специалист, понимающий и бизнес-домен, и техническую реализацию.

ЧитательЧто ищет в документе
Бэкенд-инженерыФункциональные требования, контракты API, модели данных, системные интерфейсы
Фронтенд-инженерыUI-спецификации, правила валидации, сообщения об ошибках, управление состоянием
QA / тест-инженерыКритерии приёмки, нефункциональные цели, тестовые сценарии
DevOps / SREЦелевые показатели производительности, ограничения инфраструктуры, требования к наблюдаемости
АрхитекторыГраницы системы, точки интеграции, технологические ограничения
Проектные менеджерыСкоуп, зависимости, факторы риска

Key insight

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

Когда нужен SRD — и когда не нужен

SRD нужен, когда:

  • Проект включает несколько инженерных команд или внешних подрядчиков, которым нужна общая техническая спецификация
  • Регуляторные требования или требования комплаенса предполагают аудируемые, отслеживаемые требования (здравоохранение, финансы, госсектор)
  • У системы значительные нефункциональные требования — SLO производительности, стандарты безопасности, политики хранения данных
  • Нужен формальный контракт между стейкхолдерами и инженерной командой о том, что будет поставлено
  • Система интегрируется с множеством внешних сервисов и контракты данных должны быть определены заранее

SRD не нужен, когда:

  • Маленькая кросс-функциональная команда работает короткими спринтами с непрерывной поставкой — user stories с критериями приёмки достаточно
  • PRD и FRD уже покрывают функциональные и нефункциональные требования с достаточной детализацией
  • Вы строите прототип или proof of concept, где формальная спецификация замедлит обучение
  • Проект — один сервис, одна команда с прямым доступом к стейкхолдерам

На практике регулируемые отрасли (банковская сфера, здравоохранение, оборона, госконтракты) почти всегда требуют формальный SRD. Стартапы и agile-команды часто включают детали уровня SRD в PRD или FRD.

Что содержит SRD

Основные секции

Хорошо структурированный SRD следует стандарту IEEE 830 (обновлённому как ISO/IEC/IEEE 29148) с современными адаптациями. Обычно включает восемь секций:

  1. Введение — назначение документа, скоуп ПО, определения и аббревиатуры, ссылки на связанные документы (PRD, BRD, архитектурные документы), обзор структуры документа. Введение устанавливает чёткие границы: что покрывает этот SRD и что явно исключает.

  2. Общее описание — контекст продукта (как это ПО вписывается в более крупную систему или заменяет существующую), классы пользователей и их характеристики, операционная среда (браузеры, устройства, ОС, облачные провайдеры), ограничения проектирования и реализации (технологический стек, регуляторные требования, бюджет), допущения и зависимости.

  3. Функциональные требования — детальное описание того, что система делает. Каждое требование имеет уникальный ID, описание с использованием «shall» (обязательно) или «should» (опционально), входы, выходы, бизнес-правила и обработку ошибок.

  4. Нефункциональные требования — измеримые цели по производительности, безопасности, масштабируемости, надёжности, юзабилити и поддерживаемости. Каждое требование квантифицировано: «Система должна отвечать на 95% API-запросов в пределах 200мс» вместо «Система должна быть быстрой».

  5. Требования к внешним интерфейсам — как система взаимодействует с пользователями (UI-спецификации), с другими внутренними системами (API, очереди сообщений, шины событий), с внешними сервисами (сторонние интеграции) и с оборудованием (при необходимости).

  6. Требования к данным — модели данных (сущности, связи, ограничения), словарь данных (имена полей, типы, правила валидации), политики хранения и архивации данных, планы миграции из существующих систем, требования по приватности и комплаенсу.

  7. Архитектура системы — высокоуровневые диаграммы архитектуры, описания компонентов, решения по технологическому стеку, топология развёртывания, требования к наблюдаемости (логирование, мониторинг, алертинг) и контракты API.

  8. Приложения — глоссарий, диаграммы вариантов использования, диаграммы состояний, вайрфреймы, журнал изменений, открытые вопросы (TBD) и страница подписей.

Key insight

Ценность SRD — в секциях 4-7. Функциональные требования (секция 3) пересекаются с FRD. Отличие SRD в том, что он добавляет нефункциональные спецификации, контракты интерфейсов, модели данных и архитектуру — технический контекст, необходимый разработчикам помимо описания поведения системы.

Нефункциональные требования: правило измеримости

Нефункциональные требования — место, где большинство SRD проваливается. Расплывчатые NFR порождают неизмеримые результаты.

Плохие NFR:

  • «Система должна быть быстрой» — насколько быстрой?
  • «Система должна быть безопасной» — от чего?
  • «Система должна масштабироваться» — до какого объёма?

Хорошие NFR:

IDКатегорияТребованиеЦель
NFR-001ПроизводительностьСистема должна отвечать на 95% API-запросов в пределах 200мс на P95200мс P95
NFR-002ПроизводительностьСистема должна поддерживать 10 000 одновременных пользователей без деградации10K одновременно
NFR-003ДоступностьСистема должна поддерживать 99.9% аптайм, измеряемый ежемесячно99.9% SLA
NFR-004БезопасностьСистема должна шифровать все данные в покое с использованием AES-256AES-256
NFR-005БезопасностьСистема должна требовать MFA для всех администраторских аккаунтов100% MFA для админов
NFR-006МасштабируемостьСистема должна обрабатывать 10-кратное увеличение ежедневных транзакций в течение 30 минут автомасштабирования10x burst
NFR-007Хранение данныхСистема должна хранить логи транзакций 7 лет согласно регуляторным требованиям7 лет

Правило: если вы не можете написать тест, который проверяет, выполняется требование или нет — перепишите требование.

Вариации SRD

ВариацияКогда использоватьКлючевая особенность
Стандартный SRDЭнтерпрайз, регулируемые отрасли, большие командыПолная восьмисекционная структура, выровнена по IEEE 830
Agile SRSAgile-команды, итеративная разработкаЛёгкий, живой документ, модульный по фичам
Комбинированный PRD+SRDМаленькие команды, где продукт и инженерия пересекаютсяОбъединяет продуктовый контекст с технической спецификацией

SRD и другие требований-документы

SRD находится на техническом конце цепочки требований:

MRD → BRD → PRD → FRD → SRD
ДокументВопросУровень
MRD«Что нужно рынку?»Стратегический
BRD«Зачем бизнесу инвестировать?»Стратегический
PRD«Что мы строим?»Тактический
FRD«Как система должна вести себя?»Технический
SRD«Каковы полные технические спецификации?»Технический

Связь FRD и SRD — наиболее часто путаемая:

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

Типичные ошибки

1. Копирование PRD. SRD — это не PRD с добавленным техническим жаргоном. PRD определяет, что строить с продуктовой точки зрения. SRD специфицирует, как строить с инженерной точки зрения, включая цели производительности, меры безопасности и архитектурные решения.

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

3. Невозможность верификации требований. Каждое требование должно иметь соответствующий тест. «Система должна быть надёжной» — теста нет. «Система должна восстановиться после failover базы данных в течение 30 секунд» — тест чёткий.

4. Одноразовый документ. Требования эволюционируют. SRD, написанный один раз и никогда не обновляемый, становится обузой. Храните его в системе контроля версий рядом с кодом.

5. Спецификация реализации вместо требований. «Система должна использовать PostgreSQL 16» — решение о реализации. «Система должна хранить данные в реляционной БД с гарантиями ACID и поддержкой полнотекстового поиска» — требование.

6. Нет трассируемости. Каждое функциональное требование должно прослеживаться к бизнес-потребности (BRD/PRD) и вперёд — к тестовому кейсу.

Тренд 2026: SRD как контекст для AI-агентов разработки

В 2026 году SRD обслуживает инженеров и AI-агентов одновременно. AI-агенты в Cursor, Claude Code и GitHub Copilot Workspace потребляют структурированные документы требований для генерации кода, тестов и архитектурных каркасов.

Это меняет практики SRD:

  • SRD хранится в репозитории как markdown-файлы, а не во внешних инструментах, чтобы AI-агенты могли читать требования вместе с кодовой базой.
  • Нефункциональные требования включают явные критерии приёмки, которые непосредственно транслируются в автоматизированные тесты.
  • Архитектурные секции включают контракты API в машиночитаемых форматах (OpenAPI, AsyncAPI).

Ресурсы