Home‎ > ‎Architecture‎ > ‎Defining‎ > ‎

Non functional requirements in architecture

posted Feb 12, 2019, 6:38 AM by Jageshwar Tripathi   [ updated Jun 13, 2020, 1:44 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


  • Functionality
  • Usability
  • Reliability
  • Performance
  • Supportability

Interesting resources

1. How do architecture patterns and tactics interact? A model and annotation
2. ADD 3.0: Rethinking Drivers and Decisions in the Design Process
3. Decision Model for Software Architectural Tactics Selection Based on Quality Attributes Requirements
4. Modeling Architectural Non Functional Requirements: From Use Case to Control Case
5. Rigorous Component-Based System Design Using the BIP Framework
6. Proposed Framework for Handling Architectural NFR’s within Scrum Methodology
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