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 →