This article emphasizes the critical role of Quality Attributes (formerly Non-Functional Requirements) in software architecture, especially in the era of AI-assisted development. It argues that clearly defined, measurable quality attributes are essential to prevent AI coding agents from deviating from architectural intent, thereby avoiding costly re-architectures. The Bass-style scenario framework is highlighted as an effective method for capturing these attributes.
Read original on Dev.to #systemdesignSoftware architecture is fundamentally driven by Quality Attributes (QAs), often known as Non-Functional Requirements (NFRs). These attributes define *how* a system behaves, encompassing aspects like performance, security, maintainability, and reliability. Without explicit and measurable QAs, the architectural direction can become ambiguous, leading to systems that do not meet actual stakeholder needs.
The article stresses that defining QAs is arguably the most critical phase in system design. It advocates for the term "Quality Attributes" over "Non-Functional Requirements" to emphasize what the system *is* rather than what it is *not*, highlighting that architecture is about defining system quality. Poorly defined or absent QAs often result in systems optimized for ease of development rather than business value.
The Bass-style scenario framework, developed by L. Bass, M. Klein, and F. Bachmann, provides a structured approach to defining measurable quality attributes. This framework compels stakeholders to articulate system attributes in a way that allows the architectural solution to be objectively evaluated against requirements.
Structure of a Bass-Style Quality Attribute Scenario
A typical Bass-style scenario includes: - Stimulus: An event that arrives at the system. - Stimulus Source: Where the event originates (e.g., user, external system). - Artifact: The system or component affected. - Environment: The conditions under which the stimulus occurs. - Response: The activity undertaken by the system to the stimulus. - Response Measure: A quantitative measure of the response.