Введение

Определение и поддержание требований в системной инженерии

Инженерия требований (RE) – это процесс определения, документирования и сопровождения требований в процессе проектирования. Это распространенная роль в системной и программной инженерии. Термин "инженерия требований" впервые, вероятно, был использован в 1964 году в докладе на конференции "Обслуживание, поддерживаемость и системная инженерия требований", однако широкое распространение он получил лишь в конце 1990-х годов с публикацией учебного пособия IEEE Computer Society в марте 1997 года и учреждением серии конференций по инженерии требований, которая впоследствии развилась в Международную конференцию по инженерии требований. В каскадной модели (waterfall model) инженерия требований представлена как первый этап процесса разработки. Более поздние методологии разработки, включая Унифицированный процесс Rational (RUP) для программного обеспечения, предполагают, что инженерия требований продолжается на протяжении всего жизненного цикла системы. Управление требованиями, являющееся подфункцией практик системной инженерии, также отражено в руководствах Международного совета по системной инженерии (INCOSE).

Деятельность

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

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

Проблемы

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

Критика

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