Non functional requirements in architecture
Post date: Feb 12, 2019 2:38:40 PM
Architecture of software systems is driven by functional requirements, quality attributes and constraints.
Architect has to take design decision decompose a system as per requirements, lots of decisions are taken to handle quality attributes and limited by constraints.
Focus on this writing is those decisions which are related to quality attribute (or NFRs). These decisions are often referred to as tactics (Bass et. al. 2003). A tactic is a design decision that contributes in addressing a quality attribute. Tactics influence architecture (structure and or behavior) but their impact in architecture may be smaller compared to patterns which majorly give share to structure of the software. Some of the tactics may be part of a pattern or in other words some of the tactics are applying pattern to achieve a quality attribute.
Architecture methods provide a way to handle quality attributes. Some of the architecture methods are:
Viewpoints and Perspectives
Microsoft
Process of Software Architecting
ACDM
RUP
ADD
ADD (Attribute Driven Design) is one such method for defining architecture which focuses on quality attribute.
Quality attributes
ISO/IEC 9126 (obsolete)
Functionality: Suitability, Accuracy, Interoperability, Security, Functionality compliance
Reliability: Maturity, Fault tolerance, Recoverability, Reliability compliance
Usability: Understandability, Learnability, Operability, Attractiveness, Usability compliance
Efficiency: Time behaviour, Resource utilization, Efficiency compliance
Maintainability: Analyzability, Changeability, Stability, Testability, Maintainability compliance
Portability: Adaptability, Installability, Co-existence, Replaceability, Portability compliance
ISO/IEC 25010:2011 (current)
Quality in use
Effectiveness,
Efficiency,
Satisfaction,
Freedom from risk
Context coverage
Product quality
Functional suitability
Reliability
Performance efficiency
Usability
Security
Compatibility
Maintainability
Portability
There are further sub categories within each of the above.
CISQ (Software quality characteristics defined for code quality)
Reliability
Performance/Efficiency
Security
Maintainability
FURPS
Functionality
Usability
Reliability
Performance
Supportability
Interesting resources
1. How do architecture patterns and tactics interact? A model and annotation
http://www.cs.rug.nl/paris/papers/JSS10b.pdf
2. ADD 3.0: Rethinking Drivers and Decisions in the Design Process
https://resources.sei.cmu.edu/asset_files/Presentation/2015_017_101_438648.pdf
3. Decision Model for Software Architectural Tactics Selection Based on Quality Attributes Requirements
https://www.researchgate.net/publication/283953802_Decision_Model_for_Software_Architectural_Tactics_Selection_Based_on_Quality_Attributes_Requirements
4. Modeling Architectural Non Functional Requirements: From Use Case to Control Case
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.460.7189&rep=rep1&type=pdf
5. Rigorous Component-Based System Design Using the BIP Framework
http://www-verimag.imag.fr/~sifakis/RecentPublications/2011/ieee-software.pdf
6. Proposed Framework for Handling Architectural NFR’s within Scrum Methodology
http://worldcomp-proceedings.com/proc/p2015/SER3465.pdf
7. https://it-cisq.org/standards/code-quality-standards/
8. https://www.iso.org/obp/ui/#iso:std:iso-iec:25010:ed-1:v1:en
9. https://www.ibm.com/developerworks/rational/library/4706.html#N100A7
10. http://www.users.abo.fi/lpetre/SA11/SALecture2.pdf
11. https://resources.sei.cmu.edu/asset_files/TechnicalReport/2007_005_001_14858.pdf
12. https://resources.sei.cmu.edu/asset_files/TechnicalReport/2009_005_001_15101.pdf