Архитектурно значимые требования — это те требования, которые оказывают измеримое влияние на архитектуру компьютерной системы . [1] Это может включать как программные, так и аппаратные требования. Они представляют собой подмножество требований , которые влияют на архитектуру системы измеримо идентифицируемыми способами.
Архитектурно значимые требования были признаны важным понятием лишь недавно, в 2016 году. При обсуждении архитектуры часто используются термины нефункциональные требования или атрибуты качества . [2] Однако недавние эмпирические исследования показывают, что для программной системы не все нефункциональные требования влияют на ее архитектуру , и функциональные требования также могут влиять на ее архитектуру. [1] [3] Это исследование предполагает, что стоит различать, какие требования к программному обеспечению являются архитектурно значимыми и являются ли они функциональными при обсуждении архитектуры программного обеспечения. [3]
Архитектурно значимые требования можно охарактеризовать следующими аспектами. [1]
Архитектурно значимые требования часто трудно определить и сформулировать, они, как правило, выражены нечетко, изначально игнорируются, скрыты в других требованиях и являются субъективными, изменчивыми и ситуативными. Другие требования также могут демонстрировать эти описательные характеристики. Однако значимость архитектурно значимых требований сделала эти проявления уникальными и сложными.
Требование с широким эффектом нацелено на компромиссные решения, является строгим (ограничивающим, ограничивающим, не подлежащим обсуждению), нарушает предположения или его трудно достичь, и, скорее всего, оно будет иметь архитектурное значение.
Показатели архитектурной значимости, отмеченные в литературе, включают:
OpenUP [4] и Питер Илс [5] обсуждают дополнительные критерии архитектурной значимости в нескольких статьях и презентациях. Семь критериев архитектурной значимости были рассмотрены на Европейской конференции по архитектуре программного обеспечения в 2020 году: ценность/риск для бизнеса, обеспокоенность заинтересованных сторон, уровень качества, внешние зависимости, сквозной подход, первый в своем роде и источник проблем в прошлых проектах. Эти критерии описаны в ""Тесте архитектурной значимости"".
Когда требование определяет атрибуты качества программной системы , ссылается на ее основные функции, накладывает на нее ограничения или определяет среду, в которой она будет работать, оно, скорее всего, будет иметь архитектурное значение.
Дополнительные критерии архитектурной значимости см. в обсуждении дизайна и архитектуры в разделе «Архитектура программного обеспечения» .
Как и все нефункциональные требования и атрибуты качества, [6] архитектурно значимые требования должны быть определены SMART . Сценарии атрибутов качества [2] являются одним из способов достижения критериев S (конкретных) и M (измеряемых) в SMART. Институт программной инженерии рекомендует семинары по атрибутам качества для этих целей. [7] Было предложено, чтобы анализ и проектирование архитектуры оставались легкими и гибкими; деревья атрибутов качества для конкретных жанров приложений и технологических областей могут поддерживать такие подходы. [8]
Крайне важно донести до целевой аудитории (в частности, заинтересованных сторон ) выявленные архитектурно значимые требования и любые другие архитектурные артефакты в понятной форме и на понятном языке . [9]
Архитектурно значимые требования используются в разработке программного обеспечения для обоснования архитектурных решений ; если они не выполняются должным образом, они способствуют накоплению технического долга . Например, невыполнение требований безопасности и соответствия усложняет аудиты обеспечения безопасности системы и процесса и увеличивает риск результатов аудита. [10] Образцовые советы по рассмотрению атрибутов качества системы (включая архитектурно значимые требования) доступны в литературе. [11] [12]