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


    • 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