Инженерия требований – это подразделение системной инженерии, занимающееся выявлением, разработкой, анализом, соотнесением, проверкой и управлением требованиями. Это не просто описание того, что должно быть сделано, но и понимание того, как различные требования соотносятся друг с другом, как они влияют на конечный продукт и как они могут изменяться в процессе разработки.
Инженерия требований определяет организацию процесса определения исходных данных для задач, непосредственно связанных с реализацией ПО и его проверкой. Можно выделить несколько основных элементов инженерии требований:
- Выявление требований - получение необходимой информации о задачах, ограничениях и условиях работы ПО путем сбора информации от заинтересованных сторон, при помощи поиска извлечения информации из различных источников или на основе использования методов исследования таких как анализ и синтез.
- Выявление необходимо для определения конкретных четко определенных целей и задач разработки ПО.
- Прослеживание (или трассирование) требований - определение взаимосвязей между различными требованиями независимо от их вида и иерархии для построения структуры или иерархии требований.
- Трассирование требований проводится для отслеживания и контроля изменений во взаимосвязанных требованиях, а также для повышения удобства работы с требованиями.
- Документирование требований - оформление и фиксация требований для удобства последующей работы заинтересованных сторон и участников команды разработки.
- Задокументированные в какой-либо форме требования позволяют распространять требования среди всех заинтересованных участников и команды разработки, выстраивать процесс управления и последующей работы с требованиями, а также служат для создания связанных с ними артефактов, необходимых для кодирования и тестирования.
- Проверка соответствия ПО требованиям - установление того, что разработанное ПО отвечает потребностям и ограничениям, которые были предусмотрены в требованиях.
- Проверка ПО относительно требований необходима, чтобы удостовериться, что ПО удовлетворяет ожиданиям и должным образом решает поставленные задачи, для которых оно создавалось.
Эти ключевые элементы инженерии требований определяют результаты, связанные с работой над требованиями: материалы для установки задач для команды разработки, управление изменениями в ходе разработки и валидацию итогового решения.
Польза инженерии требований
Качественно составленные требования должны принести заказчикам, поставщикам и другим лицам некоторые определенные выгоды, а именно:
- Создать основу для соглашения между заказчиками и поставщиками по вопросу о том, какие функции должно выполнять ПО. Полное описание функций программного обеспечения поможет потенциальным пользователям определить, отвечает ли ПО их потребностям или как необходимо его изменить, чтобы удовлетворить эти потребности.
- Уменьшить объем работ по разработке. Тщательная подготовка требований вынуждает различные участвующие группы заинтересованных сторон строго рассмотреть все требования прежде, чем приступать к выполнению разработки, и сокращает последующие повторные действия по проектированию, кодированию и тестированию. Тщательный анализ требований может вскрыть упущения, неправильное понимание и противоречия, допущенные на стадии разработки, когда их проще исправить.
- Обеспечить основу для оценки расходов и планов. Описание требований ПО является практической основой для оценки затрат на разработку и может использоваться для определения и согласования бюджета.
Важность инженерии требований
Инженерия требований направлена на организацию процесса работы с требованиями в контексте разработки программного обеспечения для предотвращения рисков разработки некачественных требований.
Ошибки в требованиях к программному обеспечению имеют критическое значение, поскольку они лежат в основе всего проекта. Неправильно сформулированные или неполные требования приводят к цепной реакции ошибок на последующих этапах разработки, что существенно увеличивает стоимость и время исправлений.
- Представьте, что вы строите дом, но чертежи были неполными или содержали ошибки. В этом случае, весь процесс строительства будет сопровождаться постоянными корректировками, что ведет к увеличению затрат и времени. Так и с требованиями в программной инженерии: ошибка на этом этапе влечет за собой множество проблем в дальнейшем.
В зависимости от стадии жизненного цикла проекта стоимость исправления требования может нелинейно возрастать:
- На этапе выявления требований стоимость ошибки преимущественно будет связана с затратами на анализ
- На этапе разработки и тестирования к ней добавятся трудозатраты других участников команды разработки,
- В случае эксплуатации ПО ошибка дополнительно может повлечь расходы и потери, связанные с результатами использования ПО пользователями.
Конечно, следует отметить, что чем выше требование, содержащее дефект в иерархии требований, тем выше будет стоимость ошибки. Так, требование, определяющее функционирование всей системы в целом, будет исправить намного дороже, нежели небольшое требование, связанное с функциями отдельного компонента.
Рассмотрим некоторые распространенные на практике недочеты инженерии требований, из-за которых возникают проблемы в ходе разработки требований:
- Неполнота выявленных требований - часть требований может быть упущена или сформирована неправильно, в результате чего итоговый результат разработки расходится с ожидаемым или необходимым.
- Несоответствие требований потребностям, задачам и процессам работы пользователей с ПО - требования могут быть определены неточно или ошибочно, в результате чего задача, для которой создавалось ПО, не может выполняться или выполняется неэффективно.
Как правило, такие проблемы могут быть обусловлены следующими причинами:
- Низкая заинтересованность лиц или отсутствие ответственных лиц, согласующих и утверждающих требования - "вакуум" ответственности может привести, и чаще всего неизбежно приводит, к низкому качеству проработки требований, что может повлечь низкое качество ПО.
- Низкое количество ресурсов, закладываемых на разработку требований - от времени, количества и профессиональной экспертизы участников, вовлеченных в процессы разработки требований, зависит итоговое качество требований, глубина и структурированность их проработки.
- Недостаточная организация процесса управления требованиями - неудачная или отсутствующая приоритизация последовательности и важности реализации требований в ПО, некорректная оценка требуемых ресурсов на реализацию требований или даже неудобные для совместной работы способы контроля и изменения требований могут привести к хаосу в процессах работы команды.
Качественный инжениринг требований направлен на предотвращение и минимизацию рисков и последствий неправильно или неточно определенных требований.
Резюме
Разработка требований - исходный шаг для создания ПО, который, как правило, включает работу над выявлением, соотнесением, документированием и проверкой требований.
Ошибки, допускаемые в требованиях, с одной стороны могут быть самыми дорогостоящими с точки зрения последствий, а с другой стороны в ряде случаев самыми дешевыми для устранения.