System Quality Attributes

Business considerations determine characteristics and qualities that are expected from a software system. If a system does not return, expose, or provide expected business outcome, it is typically considered as a candidate for replacement. It is critical to understand that systems are frequently redesigned not because they are functionally deficient – the replacements are often functionally identical – but because they are difficult to maintain, port, or scale or are too slow or may (or have) been compromised by misuse, malpractices, or malicious actions. It is mapping of a system’s functionality onto software structures that determines the system’s support for qualities.
The ISO 9126 establishes Quality Attributes that may be applicable to a software system.

1. System Quality Attributes Not Discernable at Runtime


Note: These attributes of a system are sometimes referred to as "non-functional requirements" (NFR).

In order to facilitate implementation of functional Quality Attributes, an engineering structure must possess specific elements and characteristics.

The structure must be able to:
     • accommodate functional changes quickly and cost-effectively;
          - including deleting unwanted or adding new functionality;
     • extend functionality;
     • provide capabilities for efficient maintenance of the structure;
     • run under different environments and in various circumstances;
     • make the separately developed components or systems work correctly together;
     • stand strong and solid under stress.

Thus, we can specify the following most important structural quality attributes:
     1. Modifiability (changes)
     2. Requirements Tolerance and Estimate Predictability
     3. Extensibility (enhancements)
     4. Maintainability (prophylactics)
     5. Portability (adaptation)
     6. Reusability (efficiency)
     7. Integrability (adoption)
     8. Scalability (capability)
     9. Testability (ambulancy)
          a. Observability (defect discovery at early stages)
          b. Controllability (defect localization)

Architectural Approach

Such Quality Attributes can be achieved by practicing a discipline of systemic approach to creating conceptual unity of the structure via utilization of progressive and innovative structural elements.
Herein we are intentionally avoiding phrase "utilizing best practices". Practicing a discipline is different from imitating a "model".
Too often, management "innovations" are described in terms of "best practices" of so-called leading firms. While interesting, we believe such descriptions can often do more harm than good, leading to piecemeal copying and playing catch-up.
Trying to emulate so-called "best practices", an organization quickly gets wrongfully involved into a mix of "market buzz-words" based on unproven "edge technologies".

We should not assume that any buzzword methodology or technology would make system success easy. Specifically, considering that over 75% of projects are not successful in regard to expected quality, time and budget.
Following industry standards is important to avoid common mistakes in processes and operations. On the other hand, setting standards by looking at each other and following so-called "best practices" erodes quality by accepting low standards without ever questioning them.

Therefore, although considering suggested "best practices" as references, we should question the following elements used to create software structures: • Component design methodologies and "frameworks";
• Unifications & process standards.


2. System Quality Attributes Discernable at Runtime


Aspects of implementation typically target objectives of satisfying functionality (business process) and constraints (business rules).
However, functional Quality Attributes also include other considerations, no less important for meeting business demand and expectations

The structure must be able to:
     • satisfy functional requirements and business process rules;
     • provide capabilities of easy use;
     • preserve resources;
     • provide easy recognition of various modules;
     • anticipate alternative scenarios;
     • anticipate disaster and recover efficiently;
     • provide contentment.

Thus, we can specify the following most important functional quality attributes:
Primary:
     1. Business Provision
     2. Performance and Efficiency
     3. System Recovery
     4. Error Avoidance
     5. Error Recovery
Secondary:
     6. Learnability
     7. Memorability
     8. Usage Satisfaction

Architectural Approach
Such Quality Attributes can be achieved by applying a discipline of systemic approach to creating conceptual unity of the structure via using progressive and standardized implementation techniques to build the system from the structural elements identified by System Quality Attributes Not Discernable at Runtime.

Several means to consider are:
• Standard Procedures and Common Practices (such as coding standards);
• Individual Competence and Mastery (such as subject matter expertise and proficiency);
• Collective Knowledge.

» Back To Conceptual Design