This session describes the software quality attributes that an architect should emphasize while architecting the application.
Refer to the following table to gain a perception of how software quality attributes map to system factors, and the detailed description for each of the software quality attributes.
Later sections of this chapter contain best practice guidelines for each quality attribute, to understand how the attributes will impact the solution design and the dependent decisions to address these issues.
The following table describes all the critical software quality attributes covered in this book. It categorizes the attributes in four categories which includes runtime, design, system, and user. Leverage the following table to understand each of the quality attributes and their associated solution designs:
Category |
NFR |
Description |
Runtime |
Performance |
Performance is defined as the responsiveness of the application to perform specific actions in a given time span. It is scored in terms of throughput or latency. Latency is the time it takes to respond to an event. Throughput is the number of events clocked in a given time interval. |
Runtime |
Scalability |
Scalability is the ability to handle increase in work load without impacting the performance, or the ability to quickly extend. |
Runtime |
Availability |
Availability is defined as the time span the application is functional normally. It is measured as the percentage of total application downtime over a specified period. Availability is affected by faults and exceptions, infrastructure issues, malicious outbreaks, and maintenance and upgrades. |
Design time |
Capacity |
This non-functional requirement defines the ways in which the system may be expected to scale-up by increasing capacity that is, adding machines based on business growth. |
Runtime |
Security |
Security is the ability of an application to avoid the malicious incidences and events in context of the designed system usage, and prevent loss of information. Improving security would also increase the reliability of application by reducing the likelihood of an attack succeeding and impairing operations. |
Design time |
Maintainability |
Maintainability is the characteristics of the application to go through changes with a degree of ease. The ease with which the application can be modified, whether for bug fixes or to add new functionality. These changes may impact functionality, components, services, or interfaces when modifying the application's functionality to fix errors, or to meet future business needs. |
Runtime |
Manageability |
Manageability is the ease with which the administrators can manage the application landscape, through useful instrumentation revealed through monitoring. This is the ability of the system or the group of the system to provide key information to the operations and support team to be able to debug, analyse and understand the root cause of failures. Manageability deals with compliance with the domain frameworks and policies. |
Runtime |
Reliability |
Reliability is the characteristics of an application to continue running in an expected manner over a span of time. Reliability is usually scored as the probability that the application will not fail and that it will continue functioning for a defined time span. |
Design time |
Extensibility |
Extensibility is a characteristic whereby the architecture, design, and implementation of an application accommodate for future needs. Extensible applications have greater endurance, by avoiding the expensive process of procuring huge inconfigurable applications and then decommissioning them when business needs change. |
Runtime |
Recovery |
Mission-critical systems should have a plan in place to recover from such disasters within a reasonable amount of time. |
Runtime |
Interoperability |
Interoperability is the ability to operate successfully by communicating information and data with both internal and external applications. The interoperable application makes it easier to share information externally and internally. |
Design time |
Usability |
Usability is the characteristics such as aesthetics and consistency in the application UI. Aesthetics is the visual quality of the application UI. Consistency is the constantly leveraging a predefined and tested mechanism for the user interface. Usability is the ease at which the end users operate the applications and make efficient use of the features. Usability is usually discussed in relation to the application UI, but it can as well be applied to a tool, device, or rich system. |