Taxonomy of non-functional requirements

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.

Remember that the list of quality attributes in this chapter is critical and will be essential to be considered for every application or IT system.

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.

Figure 1: Non-functional requirements
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset