110 likes | 236 Vues
Non-Functional Requirements (NFRs) are essential for evaluating system performance and quality, focusing on attributes like usability, security, and testability. This guide explores how to effectively address NFRs in software architecture, emphasizing the separation of functional and non-functional requirements. By linking NFRs to architectural components, we can maintain clarity and reduce tangling. Additionally, we discuss operationalizability and checkability of NFRs through specific modules. Future work includes evaluating architectures to identify those that meet requirements most effectively.
E N D
Addressing Non-functional Requirements in Software Architecture By: Dennis Bystritsky
What are Non-functional Requirements (NFRs)? • Specify criteria that can be used to judge the operation of a system, rather than specific behaviors • Example: Usability, dependability, security level, testability
How to address NFRs in system architecture? • Problematic • Can’t make a concrete module for something like “testability” • Should be a quality of the system as a whole • So can we even specify NFRs in early system architecture?
Lets first understand NFRs • NFRs are… • Operationalizable – implemented through functional components for the entire architecture (such as security) • Checkable – system can include components which check that the desired quality is met (such as performance)
Functional requirements and NFRs • Must be considered differently • Separation of concerns • Architecture components for FRs might realize some NFRs • We try to reduce “tangling”
First step? • Separate functional requirements from non-functional ones • Login screen • Progress bar • Administrator access • Help screen • Authentication • Security • Performance • Usability
Next… • Implement system architecture based on functional requirements • Should be relatively easy since each requirement links to one or more specific modules
Finally… • For each NFR… • Link it to one or more architectural modules • Feel free to create new modules as needed
How do we link? • XML binders • Use XML-style language to specify how NFRs link to functional components of the architecture
What we have done: • Separated FRs from NFRs • Created system architecture which addresses both sets of requirements • Reduced “tangling”
Future Work • Evaluation of software architecture • How to determine which architectures address requirements better than others