Инженерия требований – это подразделение системной инженерии, занимающееся выявлением, разработкой, анализом, соотнесением, проверкой и управлением требованиями. Это не просто описание того, что должно быть сделано, но и понимание того, как различные требования соотносятся друг с другом, как они влияют на конечный продукт и как они могут изменяться в процессе разработки.

Инженерия требований определяет организацию процесса определения исходных данных для задач, непосредственно связанных с реализацией ПО и его проверкой. Можно выделить несколько основных элементов инженерии требований: 

  1. Выявление требований - получение необходимой информации о задачах, ограничениях и условиях работы ПО путем сбора информации от заинтересованных сторон, при помощи поиска извлечения информации из различных источников или на основе использования методов исследования таких как анализ и синтез. 
    • Выявление необходимо для определения конкретных четко определенных целей и задач разработки ПО. 
  2. Прослеживание (или трассирование) требований - определение взаимосвязей между различными требованиями независимо от их вида и иерархии для построения структуры или иерархии требований. 
    • Трассирование требований проводится для отслеживания и контроля изменений во взаимосвязанных требованиях, а также для повышения удобства работы с требованиями. 
  3. Документирование требований - оформление и фиксация требований для удобства последующей работы заинтересованных сторон и участников команды разработки.
    • Задокументированные в какой-либо форме требования позволяют распространять требования среди всех заинтересованных участников и команды разработки, выстраивать процесс управления и последующей работы с требованиями, а также служат для создания связанных с ними артефактов, необходимых для кодирования и тестирования. 
  4. Проверка соответствия ПО требованиям - установление того, что разработанное ПО отвечает потребностям и ограничениям, которые были предусмотрены в требованиях. 
    • Проверка ПО относительно требований необходима, чтобы удостовериться, что ПО удовлетворяет ожиданиям и должным образом решает поставленные задачи, для которых оно создавалось. 

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

Польза инженерии требований

Качественно составленные требования должны принести заказчикам, поставщикам и другим лицам некоторые определенные выгоды, а именно: 

  • Создать основу для соглашения между заказчиками и поставщиками по вопросу о том, какие функции должно выполнять ПО. Полное описание функций программного обеспечения поможет потенциальным пользователям определить, отвечает ли ПО их потребностям или как необходимо его изменить, чтобы удовлетворить эти потребности. 
  • Уменьшить объем работ по разработке. Тщательная подготовка требований вынуждает различные участвующие группы заинтересованных сторон строго рассмотреть все требования прежде, чем приступать к выполнению разработки, и сокращает последующие повторные действия по проектированию, кодированию и тестированию. Тщательный анализ требований может вскрыть упущения, неправильное понимание и противоречия, допущенные на стадии разработки, когда их проще исправить. 
  • Обеспечить основу для оценки расходов и планов. Описание требований ПО является практической основой для оценки затрат на разработку и может использоваться для определения и согласования бюджета. 

Важность инженерии требований

Инженерия требований направлена на организацию процесса работы с требованиями в контексте разработки программного обеспечения для предотвращения рисков разработки некачественных требований. 

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

  • Представьте, что вы строите дом, но чертежи были неполными или содержали ошибки. В этом случае, весь процесс строительства будет сопровождаться постоянными корректировками, что ведет к увеличению затрат и времени. Так и с требованиями в программной инженерии: ошибка на этом этапе влечет за собой множество проблем в дальнейшем.

В зависимости от стадии жизненного цикла проекта стоимость исправления требования может нелинейно возрастать: 

  • На этапе выявления требований стоимость ошибки преимущественно будет связана с затратами на анализ
  • На этапе разработки и тестирования к ней добавятся трудозатраты других участников команды разработки,
  • В случае эксплуатации ПО ошибка дополнительно может повлечь расходы и потери, связанные с результатами использования ПО пользователями. 

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

Рассмотрим некоторые распространенные на практике недочеты инженерии требований, из-за которых возникают проблемы в ходе разработки требований:

  • Неполнота выявленных требований - часть требований может быть упущена или сформирована неправильно, в результате чего итоговый результат разработки расходится с ожидаемым или необходимым.  
  • Несоответствие требований потребностям, задачам и процессам работы пользователей с ПО - требования могут быть определены неточно или ошибочно, в результате чего задача, для которой создавалось ПО, не может выполняться или выполняется неэффективно. 

Как правило, такие проблемы могут быть обусловлены следующими причинами

  • Низкая заинтересованность лиц или отсутствие ответственных лиц, согласующих и утверждающих требования - "вакуум" ответственности может привести, и чаще всего неизбежно приводит, к низкому качеству проработки требований, что может повлечь низкое качество ПО. 
  • Низкое количество ресурсов, закладываемых на разработку требований - от времени, количества и профессиональной экспертизы участников, вовлеченных в процессы разработки требований, зависит итоговое качество требований, глубина и структурированность их проработки. 
  • Недостаточная организация процесса управления требованиями - неудачная или отсутствующая приоритизация последовательности и важности реализации требований в ПО, некорректная оценка требуемых ресурсов на реализацию требований или даже неудобные для совместной работы способы контроля и изменения требований могут привести к хаосу в процессах работы команды. 

Качественный инжениринг требований направлен на предотвращение и минимизацию рисков и последствий неправильно или неточно определенных требований.

Резюме

Разработка требований - исходный шаг для создания ПО, который, как правило, включает работу над выявлением, соотнесением, документированием и проверкой требований. 

Ошибки, допускаемые в требованиях, с одной стороны могут быть самыми дорогостоящими с точки зрения последствий, а с другой стороны в ряде случаев самыми дешевыми для устранения.