Открыть сервис

IEEE Std 830-1998

IEEE Std 830-1998 — это рекомендованный стандарт Института инженеров электротехники и электроники (IEEE), определяющий требования к содержанию, структуре и оформлению документа «Спецификация требований к программному обеспечению» (Software Requirements Specification, SRS). Стандарт был принят в 1998 году и заменил предыдущую версию IEEE Std 830-1993. На момент своего выхода он являлся одним из наиболее авторитетных руководств по документированию функциональных и нефункциональных требований в проектах разработки программного обеспечения.

История и контекст создания

Разработка стандарта IEEE Std 830 началась в конце 1980-х годов. Первая версия была утверждена в 1984 году (IEEE Std 830-1984). Основной целью было создание универсального шаблона, который позволил бы заказчикам, разработчикам и тестировщикам однозначно понимать, что именно должна делать будущая система. До появления этого стандарта спецификации часто писались в произвольной форме, что приводило к неоднозначности трактовок, пропуску критических требований и, как следствие, к срыву сроков и превышению бюджетов.

Версия 1998 года (IEEE Std 830-1998) была разработана рабочей группой подкомитета по программной инженерии IEEE Computer Society. Она учитывала накопленный опыт применения предыдущих версий и вводила более чёткие рекомендации по качеству требований. Стандарт был широко распространён в корпоративной среде, особенно в проектах, выполняемых по контракту с государственными заказчиками, где требовалась строгая формализация документации. В 2011 году стандарт был пересмотрен и заменён на ISO/IEC/IEEE 29148:2011, который объединил требования IEEE и Международной организации по стандартизации (ISO).

Цель и область применения

Основная цель IEEE Std 830-1998 — обеспечить единый формат для описания требований к программному обеспечению, который был бы понятен всем участникам проекта: заказчику, аналитику, разработчику, тестировщику и менеджеру. Стандарт не предписывает конкретных методов разработки (например, каскадную или итеративную модель), а лишь задаёт структуру документа, которая может быть адаптирована под конкретный проект.

Область применения включает:

  • Разработку программного обеспечения по заказу (custom software).
  • Создание встраиваемого программного обеспечения (firmware).
  • Документирование требований к системам, содержащим как программные, так и аппаратные компоненты.
  • Случаи, когда требуется формальная передача требований от заказчика к исполнителю.

Структура спецификации по IEEE Std 830-1998

Стандарт рекомендует делить документ SRS на три основных раздела, каждый из которых содержит обязательные и опциональные подразделы.

1. Введение (Introduction)

Этот раздел описывает контекст и цели создания документа. Он включает:

  • Назначение документа (Purpose) — для чего пишется SRS, на кого он рассчитан.
  • Область действия продукта (Scope) — идентификация программного продукта, его границы, что он делает, а что не делает.
  • Определения, акронимы и сокращения (Definitions, acronyms, and abbreviations) — словарь терминов, используемых в документе.
  • Ссылки (References) — перечень других документов, на которые опирается SRS (например, техническое задание, контракт, стандарты).
  • Обзор документа (Overview) — краткое описание структуры оставшейся части SRS.

2. Общее описание (General Description)

В этом разделе описывается внешний контекст системы и общие характеристики. Он включает:

  • Перспектива продукта (Product perspective) — как система вписывается в более крупную систему, её интерфейсы (пользовательские, аппаратные, программные, коммуникационные).
  • Функции продукта (Product functions) — перечень основных функций, которые должна выполнять система (обычно на высоком уровне, без детализации).
  • Характеристики пользователей (User characteristics) — описание предполагаемых пользователей, их уровня квалификации и ролей.
  • Ограничения (Constraints) — накладываемые ограничения: используемые языки программирования, базы данных, операционные системы, требования к безопасности, стандарты, аппаратные лимиты.
  • Допущения и зависимости (Assumptions and dependencies) — факторы, которые могут повлиять на требования, но не контролируются разработчиком (например, наличие стороннего API, стабильность сети).

3. Специфические требования (Specific Requirements)

Это самый объёмный и важный раздел. Стандарт не навязывает жёсткую структуру для этого раздела, но рекомендует несколько возможных способов организации информации. Наиболее распространённый подход — группировка по функциям или по классам пользователей. Раздел включает:

  • Внешние интерфейсы (External interfaces) — детальное описание всех входов и выходов системы (пользовательские экраны, отчёты, API, протоколы).
  • Функции (Functions) — пошаговое описание логики работы каждой функции, включая обработку исключений и реакции на ошибки.
  • Требования к производительности (Performance requirements) — количественные метрики: время отклика, пропускная способность, количество одновременных пользователей, объём обрабатываемых данных.
  • Требования к логической базе данных (Logical database requirements) — описание типов данных, их связей и ограничений целостности.
  • Проектные ограничения (Design constraints) — требования, диктующие архитектурные решения (например, использование определённого шаблона проектирования).
  • Атрибуты качества (Quality attributes) — нефункциональные требования: надёжность, доступность, безопасность, сопровождаемость, переносимость.
  • Другие требования (Other requirements) — всё, что не вошло в предыдущие подразделы (например, требования к документации, обучению, лицензированию).

Ключевые принципы и характеристики хороших требований

Стандарт IEEE Std 830-1998 вводит набор критериев, которым должны удовлетворять отдельные требования и весь документ SRS в целом:

  • Корректность (Correct) — каждое требование должно отражать реальную потребность заказчика.
  • Недвусмысленность (Unambiguous) — требование должно трактоваться однозначно всеми читателями. Для этого рекомендуется избегать субъективных формулировок («удобный», «быстрый», «хороший») и использовать точные метрики.
  • Полнота (Complete) — документ должен включать все существенные требования, а также реакции на все возможные входные данные и ситуации.
  • Непротиворечивость (Consistent) — требования не должны противоречить друг другу (например, одно требование запрещает операцию, а другое её предписывает).
  • Ранжированность по важности и стабильности (Ranked for importance and/or stability) — требования должны быть разделены на категории: обязательные (essential), желательные (desirable) и опциональные (optional). Это позволяет планировать итерации и управлять изменениями.
  • Проверяемость (Verifiable) — для каждого требования должен существовать способ проверки его выполнения (тест, инспекция, анализ).
  • Модифицируемость (Modifiable) — структура документа должна позволять легко вносить изменения без нарушения целостности.
  • Отслеживаемость (Traceable) — каждое требование должно иметь уникальный идентификатор и быть связано с источниками (например, пунктами контракта) и с последующими артефактами (проектом, кодом, тестами).

Критика и ограничения

Несмотря на широкое распространение, стандарт IEEE Std 830-1998 подвергался критике по нескольким направлениям:

  • Избыточная формальность. Для небольших проектов или стартапов следование всем рекомендациям стандарта приводило к созданию громоздких документов, которые быстро устаревали.
  • Ориентация на каскадную модель. Стандарт предполагает, что все требования должны быть определены до начала разработки. В гибких методологиях (Agile, Scrum) требования часто уточняются итеративно, и жёсткая фиксация на ранних этапах противоречит их принципам.
  • Сложность поддержки. При изменении требований (что происходит в большинстве проектов) поддержка документа в актуальном состоянии требовала значительных усилий.
  • Отсутствие формальных методов. Стандарт описывает структуру, но не даёт рекомендаций по формальным методам анализа требований (например, использование конечных автоматов или спецификаций на языке Z).

В результате стандарт постепенно уступил место более современным подходам, таким как ISO/IEC/IEEE 29148:2011, который, в свою очередь, лучше интегрируется с гибкими методологиями и включает рекомендации по управлению требованиями на протяжении всего жизненного цикла.

Интересные факты

  • Стандарт IEEE Std 830-1998 часто цитируется в учебных курсах по программной инженерии как классический пример того, как должна выглядеть спецификация требований.
  • В некоторых российских компаниях и государственных учреждениях до сих пор используются внутренние регламенты, основанные на IEEE Std 830-1998, несмотря на его замену.
  • Стандарт был одним из первых, кто ввёл понятие «атрибуты качества» как отдельный раздел спецификации, что позже легло в основу моделей качества ПО (например, ISO 25010).

Источники

  • IEEE Std 830-1998 — IEEE Recommended Practice for Software Requirements Specifications. IEEE Computer Society, 1998.
  • Pressman, R. S. Software Engineering: A Practitioner's Approach. 7th ed. McGraw-Hill, 2010.
  • Sommerville, I. Software Engineering. 10th ed. Pearson, 2016.
  • ISO/IEC/IEEE 29148:2011 — Systems and software engineering — Life cycle processes — Requirements engineering.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →