Верификация требований

Pause

Верифика́ция требований — процесс проверки того, что сформулированные требования обладают необходимым качеством и соответствуют установленным правилам и ограничениям: являются однозначными, непротиворечивыми, полными в требуемой степени, осуществимыми и проверяемыми. Верификацию требований проводят прежде всего над спецификациями и другими артефактами требований до реализации системы. Последующее подтверждение того, что проектные решения и реализованная система удовлетворяют утверждённым требованиям, относится к верификации соответствующих результатов жизненного цикла и связано с требованиями посредством трассируемости[1].

Понятие относится к статическим методам анализа требований — рецензированию, инспекциям, анализу согласованности и проверке формальных моделей — а также связано с последующими методами подтверждения реализации требований посредством испытаний и других verification activities[2].

Исторические исследования и оценки стоимости разработки показывали, что дефекты, обнаруженные на поздних стадиях, нередко требуют более дорогой переделки, чем дефекты, найденные при анализе требований и проектировании[3]. Конкретное соотношение затрат зависит от типа системы, процесса разработки, автоматизации тестирования и характера дефекта; его не следует считать универсальным постоянным коэффициентом. Поэтому требования проверяют на полноту, однозначность, непротиворечивость, осуществимость и проверяемость ещё до начала проектирования[4], а позднее связывают с архитектурой, кодом и испытаниями цепочками трассируемости[5]. Совокупность таких проверок образует процесс, закреплённый международным стандартом ISO/IEC/IEEE 29148:2018 по инженерии требований[6].

Общие сведения
Что важно знать
Верификация требований
Область использования инженерия программного обеспечения, инженерия требований, системный анализ, управление качеством
Дата появления 1970-е годы (развитие формальных инспекций артефактов)
Место появления корпорация IBM (методика формальных инспекций)
Ключевые слова требования, инспекция, трассируемость, V-модель, испытания
Базовые понятия требование, валидация, жизненный цикл, техническое задание, дефект

История

Инспекции в корпорации IBM

Практика систематической проверки спецификаций сложилась в 1970-е годы в корпорации IBM, где М. Фейган разработал и внедрил методику формальных инспекций программных артефактов. Методика задавала фиксированные роли участников и последовательность шагов от планирования до контроля устранения замечаний; команды с инспекциями выпускали программы с заметно меньшим числом дефектов, доходивших до эксплуатации[7]. Методика Фейгана стала одной из основ формализованного рецензирования программных артефактов. Принципы инспекций впоследствии широко применялись и к спецификациям требований, наряду с кодом и проектной документацией[8]. Инспекции вошли в классику инженерии программного обеспечения и описаны в основных учебниках дисциплины[9][10].

Формирование дисциплины

В 1984 году Б. Боэм опубликовал работу, специально посвящённую проверке спецификаций требований и проекта, где разграничил верификацию и валидацию и сформулировал принцип раннего и непрерывного подтверждения требований[1]. В 1991 году К. Форсберг и Х. Муз представили V-модель жизненного цикла, в которой каждой ступени декомпозиции соответствует ступень интеграции и испытаний[11]. В 1994 году О. Готел и Э. Финкельштейн проанализировали проблему трассируемости требований — способности проследить судьбу каждого требования от источника до испытаний — и показали, что обеспечение трассируемости существенно облегчается и удешевляется при её организации с самого начала проекта[5].

Стандартизация

К концу 1990-х годов сложилась нормативная база проверки требований: институт инженеров электротехники и электроники (IEEE) выпустил рекомендованную практику IEEE 830—1998 по составлению спецификаций требований[12], а конференции по требованиям превратились в самостоятельное научное направление[13]. Позднее практика IEEE 830—1998 утратила силу — её заменил международный стандарт ISO/IEC/IEEE 29148 в действующей редакции 2018 года[6]. В России состав и содержание требований к автоматизированным системам регламентирует комплекс стандартов серии 34, действующая редакция документа о техническом задании — ГОСТ 34.602-2020, введённая с 1 января 2022 года взамен ГОСТ 34.602-89[14].

Сущность и соотношение с валидацией

Различие понятий

Для самих требований различают верификацию и валидацию. Верификация проверяет качество и внутреннюю корректность спецификации требований — однозначность, согласованность, полноту, осуществимость и проверяемость. Валидация устанавливает, отражают ли требования реальные потребности, цели и ограничения заинтересованных сторон. На последующих стадиях жизненного цикла термин «верификация» применяется также к проверке соответствия проектных и реализованных решений установленным требованиям[1][2][15].

undefined

Уровни верификации

Проверка требований охватывает два уровня. Первый — верификация самих требований как документов: спецификация до реализации анализируется на полноту, непротиворечивость, однозначность и проверяемость; средства — инспекции, рецензии, чек-листы. Второй — верификация системы по отношению к требованиям: на последующих этапах жизненного цикла испытания и другие методы проверки подтверждают соответствие реализованной системы требованиям соответствующего уровня[11].

undefined

Методы проверки требований

Рецензирование и инспекции

Основным статическим методом остаётся групповое чтение спецификации. Различают неформальный просмотр, управляемое рецензирование и формальную инспекцию; последняя отличается фиксированными ролями, метриками и обязательным контролем исправлений[7]. Инспекции требований выявляют не только локальные ошибки формулировок, но и пропуски целых сценариев, противоречия между разделами и неосуществимые требования; их эффективность объясняется тем, что участники читают документ с разных позиций[10]. Сравнительные эксперименты показали, что формы инспекций различаются стоимостью и охватом, а решающим фактором служит подготовка проверяющих и распределение ролей[16].

undefined

Анализ и прототипирование

Помимо чтения, применяют средства повышения выявляемости дефектов. Прототипирование позволяет показать заказчику обозримую модель будущего поведения системы и обнаружить неверные или упущенные требования до реализации; формальные модели — таблицы решений, конечные автоматы, сценарии — делают противоречия видимыми инструментально[13]. Для систем, управляемых моделями, спецификации проверяются аналитическими средствами; в имитационном моделировании требования проверяются по единым принципам валидации, верификации и тестирования[2]. Дополняют перечень аналитические чек-листы: «можно ли написать испытание, которое опровергнет это утверждение»[4].

Трассируемость и испытания

Динамическим подтверждением требований служат испытания. Каждое требование получает идентификатор, а между требованиями, проектными элементами и проверками строятся матрицы трассируемости; без них часть требований остаётся непроверенной[5]. Промышленные исследования показали, что поддержание трассируемости требует систематических усилий на протяжении всего проекта и окупается лишь при ранней организации[17]. Трассируемость ведут в обе стороны: от источников требований к утверждениям и от утверждений к проекту, коду и испытаниям[5].

undefined

Критерии качества требований

Атрибуты качественного требования

Стандарт ISO/IEC/IEEE 29148 формулирует характеристики, которым должно отвечать каждое отдельное требование (необходимость, однозначность, полнота, единственность, осуществимость и проверяемость), а также характеристики набора требований (согласованность, непротиворечивость и прослеживаемость)[6]. Практические руководства переводят эти характеристики в рабочие критерии: требование считается качественным, если его одинаково понимают заказчик и разработчик и оно допускает объективную проверку[4]. Слабые формулировки вида «система должна быть удобной» подлежат замене на измеримые утверждения[4].

undefined

Проверяемость

Проверяемость занимает особое место среди атрибутов, поскольку связывает документ с будущими испытаниями. Требование проверяемо, если существует объективный способ показать его выполнение — испытание, анализ, демонстрация или осмотр — и известны критерии успеха; иначе требование превращается в недоказуемое пожелание[6]. Не поддающиеся проверке утверждения возвращаются на переформулирование до начала проектирования, что дешевле, чем выяснить невозможность подтверждения на приёмочных испытаниях[4]. Для внутреннего контроля проекта можно использовать долю требований, для которых определён способ проверки:

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

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

Проверке предшествует приведение требований в документальную форму, регламентированную стандартами. Международный стандарт ISO/IEC/IEEE 29148 задаёт содержание спецификаций требований к системам и программному обеспечению, типовые разделы и шаблоны записей[6]. Утратившая силу американская практика IEEE 830—1998 закрепляла классическую структуру спецификации требований к программному обеспечению с разделами о функциональных и нефункциональных требованиях, внешних интерфейсах и критериях приёмки; её схемы десятилетиями служили образцом документа[12]. В российской практике требования к создаваемой системе фиксируются техническим заданием, состав которого определён ГОСТ 34.602-2020 и включает характеристики объекта, требования к функциям и видам обеспечения, стадии и этапы разработки, порядок контроля и приёмки[14].

Место в жизненном цикле

V-модель

В V-модели жизненного цикла верификация требований задаёт симметрию левой и правой ветвей: спуск по левой ветви сопровождается планированием испытаний по правой, где каждому уровню соответствует свой уровень подтверждения[11]. В V-модели требования и проектные решения на левой ветви служат основой для планирования соответствующих проверок на правой. Сами требования рецензируются и верифицируются как спецификация; позднее испытания и другие методы проверки подтверждают соответствие реализованной системы требованиям соответствующего уровня[11][18]. Модель закрепила в инженерной практике правило «планируй проверку одновременно с формулированием», ставшее основой большинства регламентов разработки[11].

undefined

Стоимость дефектов

Экономическое обоснование ранней проверки требований опирается на исторические оценки стоимости разработки, которые показывали, что дефекты, обнаруженные на поздних стадиях, нередко требуют более дорогой переделки, чем дефекты, найденные при анализе требований и проектировании[3]. Конкретное соотношение затрат зависит от типа системы, процесса разработки, автоматизации тестирования и характера дефекта; его не следует считать универсальным постоянным коэффициентом[1]. Эмпирические исследования подтверждают, что заметная часть ошибок, обнаруживаемых при тестировании, восходит к этапам требований и проектирования[19][9][10].

undefined

Нормативное регулирование

Международные стандарты

Основным международным документом по инженерии требований служит ISO/IEC/IEEE 29148, действующая редакция которого принята в 2018 году; стандарт устанавливает характеристики требований, содержание спецификаций и процессы их проверки[6]. Рекомендованная практика IEEE 830—1998, два десятилетия задававшая структуру спецификации требований, отозвана и упоминается лишь как историческая ступень[12].

Российские документы

В Российской Федерации состав требований к автоматизированным системам определяется комплексом стандартов ГОСТ 34. Действующая редакция стандарта на техническое задание — ГОСТ 34.602-2020, утверждённая приказом Росстандарта в 2021 году и введённая с 1 января 2022 года взамен ГОСТ 34.602-89. Стандарт предусматривает, в частности, требования к системе, составу и содержанию работ, а также раздел «Порядок контроля и приемки системы». Не следует отождествлять формулировки ГОСТ непосредственно с терминологией requirements verification без отдельного нормативного основания[14][20]. Прежняя редакция 1989 года утратила силу и упоминается только в историческом контексте[14].

Ограничения и практика

Трудности проверки

Верификация требований не гарантирует правильности самих потребностей: можно исчерпывающе проверить спецификацию и всё равно построить не ту систему, поэтому верификация дополняется валидацией и вовлечением пользователей[1]. Групповые методы зависят от квалификации участников, трассируемость без инструментальной поддержки быстро теряет достоверность, а часть знаний о предметной области остаётся неявной[13].

Инструментальная поддержка

В промышленной практике проверка требований поддерживается специализированными программными средствами управления требованиями, которые хранят требования с идентификаторами и версиями, строят матрицы трассируемости и фиксируют статус каждого требования[4]. Языковые шаблоны снижают двусмысленность спецификаций уже на этапе записи требований[21], а автоматический анализ текстов дополняет ручные инспекции, отмечая двусмысленные слова и отсутствие проверяемых величин[22][4].

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

Изменчивость требований создаёт особую трудность: проверенная на старте проекта спецификация устаревает, и каждое изменение требует повторной проверки затронутых требований и обновления матриц трассируемости[17].

Примечания

  1. ↑ 1 2 3 4 5 Boehm B. W. Verifying and Validating Software Requirements and Design Specifications // IEEE Software. — 1984. — Т. 1, № 1. — С. 75—88. — doi:10.1109/MS.1984.233702.
  2. ↑ 1 2 3 Balci O. Validation, Verification, and Testing Techniques throughout the Life Cycle of a Simulation Study // Proceedings of the Winter Simulation Conference. — 1994. — С. 215—220. — doi:10.1109/WSC.1994.717129.
  3. ↑ 1 2 Boehm B. W. Software Engineering Economics (англ.). — Englewood Cliffs: Prentice-Hall, 1981. — 767 p. — ISBN 978-0-13-822122-5.
  4. ↑ 1 2 3 4 5 6 7 Вигерс Карл, Битти Джой. Разработка требований к программному обеспечению / пер. с англ.. — 3-е изд., дополненное. — М. ; СПб.: Русская редакция ; БХВ-Петербург, 2014. — 736 с. — ISBN 978-5-7502-0433-5.
  5. ↑ 1 2 3 4 Gotel O. C. Z., Finkelstein C. W. An Analysis of the Requirements Traceability Problem // Proceedings of the First International Conference on Requirements Engineering. — 1994. — С. 94—101. — doi:10.1109/ICRE.1994.292398.
  6. ↑ 1 2 3 4 5 6 ISO/IEC/IEEE. ISO/IEC/IEEE 29148:2018 — Systems and software engineering — Life cycle processes — Requirements engineering (англ.). iso.org. Международная организация по стандартизации (2018). Дата обращения: 23 сентября 2026.
  7. ↑ 1 2 Fagan M. E. Design and Code Inspections to Reduce Errors in Program Development // IBM Systems Journal. — 1976. — Т. 15, № 3. — С. 182—211. — doi:10.1147/SJ.153.0182.
  8. ↑ Fagan M. E. Design and Code Inspections to Reduce Errors in Program Development // Software Pioneers: Contributions to Software Engineering. — 2002. — С. 575—607. — doi:10.1007/978-3-642-59412-0_35.
  9. ↑ 1 2 Sommerville I. Software Engineering. — 10th ed.. — Boston: Pearson, 2016. — 796 с. — ISBN 978-0-13-394303-0.
  10. ↑ 1 2 3 Pressman R. S. Software Engineering: A Practitioner's Approach (англ.). — 6th ed.. — New York: McGraw-Hill, 2004. — 880 p. — ISBN 978-0-07-124083-3.
  11. ↑ 1 2 3 4 5 Forsberg K., Mooz H. The Relationship of System Engineering to the Project Cycle // INCOSE International Symposium. — 1991. — Т. 1, № 1. — С. 57—65. — doi:10.1002/J.2334-5837.1991.TB01484.X.
  12. ↑ 1 2 3 IEEE. IEEE 830-1998 — IEEE Recommended Practice for Software Requirements Specifications [Withdrawn] (англ.). standards.globalspec.com. Институт инженеров электротехники и электроники (1998). Дата обращения: 23 сентября 2026.
  13. ↑ 1 2 3 Nuseibeh B., Easterbrook S. Requirements Engineering: A Roadmap // Proceedings of the Conference on the Future of Software Engineering. — 2000. — С. 35—46. — doi:10.1145/336512.336523.
  14. ↑ 1 2 3 4 Росстандарт. ГОСТ 34.602-2020. Информационные технологии. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы. gisprofi.com. Росстандарт (2021). Дата обращения: 23 сентября 2026.
  15. ↑ Balci O. Principles and Techniques of Simulation Validation, Verification, and Testing // Proceedings of the Winter Simulation Conference. — 1995. — С. 147—154. — doi:10.1109/WSC.1995.478717.
  16. ↑ Porter A. A., Votta L. G., Basili V. R. Comparing Detection Methods for Software Requirements Inspections: A Replicated Experiment // IEEE Transactions on Software Engineering. — 1995. — Т. 21, № 6. — С. 563—575. — doi:10.1109/32.391380.
  17. ↑ 1 2 Gotel O. C. Z., Finkelstein A. C. W. Extended Requirements Traceability: Results of an Industrial Case Study // Proceedings of the Third IEEE International Symposium on Requirements Engineering. — 1997. — С. 169—178. — doi:10.1109/ISRE.1997.566866.
  18. ↑ Forsberg K., Mooz H. The Relationship of Systems Engineering to the Project Cycle // Engineering Management Journal. — 1992. — Т. 4, № 3. — С. 36—43. — doi:10.1080/10429247.1992.11414684.
  19. ↑ Basili V. R., Perricone B. T. Software Errors and Complexity: An Empirical Investigation // Communications of the ACM. — 1984. — Т. 27, № 1. — С. 42—52. — doi:10.1145/69605.2085.
  20. ↑ Стройинформ. ГОСТ 34.602-2020. Информационные технологии. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы. files.stroyinf.ru. Стройинформ (2020). Дата обращения: 23 сентября 2026.
  21. ↑ Denger C., Berry D. M., Kamsties E. Higher Quality Requirements Specifications through Natural Language Patterns // Proceedings of the 2003 Australian Software Engineering Conference. — 2003. — С. 80—90. — doi:10.1109/SWSTE.2003.1245428.
  22. ↑ Berry D. M., Kamsties E., Ribeiro C. Detecting Defects in Natural Language Requirements Specifications // Handbook on Natural Language Processing for Requirements Engineering. — 2025. — С. 117—151. — doi:10.1007/978-3-031-73143-3_5.

Литература

  • Вигерс К., Битти Д. Разработка требований к программному обеспечению / пер. с англ.. — 3-е изд., дополненное. — М. ; СПб.: Русская редакция ; БХВ-Петербург, 2014. — 736 с. — ISBN 978-5-7502-0433-5.
  • Мордвинов Д. А., Литвинов Ю. В. Обзор применения формальных методов в робототехнике // Информатика, телекоммуникации и управление. — 2016. — № 1 (236).
  • Balci O. Validation, Verification, and Testing Techniques throughout the Life Cycle of a Simulation Study (англ.) // Proceedings of the Winter Simulation Conference. — 1994. — P. 215—220. — doi:10.1109/WSC.1994.717129.
  • Boehm B. W. Software Engineering Economics (англ.). — Englewood Cliffs: Prentice-Hall, 1981. — 767 p. — ISBN 978-0-13-822122-5.
  • Boehm B. W. Verifying and Validating Software Requirements and Design Specifications (англ.) // IEEE Software. — 1984. — Vol. 1, no. 1. — P. 75—88. — doi:10.1109/MS.1984.233702.
  • Fagan M. E. Design and Code Inspections to Reduce Errors in Program Development (англ.) // IBM Systems Journal. — 1976. — Vol. 15, no. 3. — P. 182—211. — doi:10.1147/SJ.153.0182.
  • Forsberg K., Mooz H. The Relationship of System Engineering to the Project Cycle (англ.) // INCOSE International Symposium. — 1991. — Vol. 1, no. 1. — P. 57—65. — doi:10.1002/J.2334-5837.1991.TB01484.X.
  • Gotel O. C. Z., Finkelstein C. W. An Analysis of the Requirements Traceability Problem (англ.) // Proceedings of the First International Conference on Requirements Engineering. — 1994. — P. 94—101. — doi:10.1109/ICRE.1994.292398.
  • Nuseibeh B., Easterbrook S. Requirements Engineering: A Roadmap (англ.) // Proceedings of the Conference on the Future of Software Engineering. — 2000. — P. 35—46. — doi:10.1145/336512.336523.
  • Porter A. A., Votta L. G., Basili V. R. Comparing Detection Methods for Software Requirements Inspections: A Replicated Experiment (англ.) // IEEE Transactions on Software Engineering. — 1995. — Vol. 21, no. 6. — P. 563—575. — doi:10.1109/32.391380.
  • Sommerville I. Software Engineering (англ.). — 10th ed.. — Boston: Pearson, 2016. — 796 p. — ISBN 978-0-13-394303-0.

Дополнительно по теме

Категории

Pause