What are Quality Attributes in Software Architecture

Quality Attributes In Software Architecture

Software Quality Attributes (aka non-functional requirements) help software architects to evaluate the performance of a software application.

These quality attributes decide whether the software is of good quality or not.

These quality attributes are also sometimes called “ilities” after the suffix most of the words related to system capability share such as availability, reliability, scalability, testability, etc., 

Software applications should perform well and satisfy the specifications given by its stakeholders.

Most teams give preference to functional testing over non-functional testing. 

In my view, both these types of testing are quite important. Check our detailed guide on the difference between functional testing and non-functional testing. 

Functional Requirements And Non-Functional Requirements

Functional requirements are just the tip of the iceberg as shown in the above image. 

The consequences of leaving quality attributes lead to increased technical debt and quality problems.

Software Ilities in Software Architecture

Let’s see the list of Quality Attributes in Software Architecture

You have to do prioritize these system quality attributes based on your project needs. 

1) Usability

It is described as how the user is utilizing a system effectively and the ease of which users can learn to operate or control the system. The well-known principle of usability is KISS (Keep It Simple Stupid). Software applications should be user-friendly.

2) Reliability

It is the ability of a system to continue to keep operating over time

3) Availability

It is the ratio of the available system time to the total working time it is required or expected to function.

4) Portability

It is the ability of a software application to run on numerous platforms such as data portability, hosting, viewing, etc.,

5) Testability

It shows how well the system or component facilitates to perform tests to determine whether the predefined test criteria have been met.

6) Scalability

It is the ability of a system to handle the demand for stress caused by increased usage without decreasing performance.

7) Flexibility

It is the ability of a system to adapt to future changes

8) Reusability

It is the use of existing software I more than one software with small or no change. It is a cost-efficient and time-saving quality attribute.

9) Maintainability

It is the ability of a software application to maintain easily and support changes cost-effectively.

10) Supportability

It is the ability of a system that satisfies necessary requirements and needs to identifying and solving problems.

11) Interoperability

It is the ability of two or more systems to communicate or exchange data easily and to use the data that has been exchanged.

12) Performance

It is the ability of a system in the form of responsiveness to various actions within a certain period of time

13) Security

It is the ability of a system to resist or block malicious or unauthorized attempts that destroy the system and at the same time provide access to legitimate users.

In conclusion:

System quality attributes in software solutions improve the ROI (return on investment) from IT systems and also produce a better quality application.

This is not an exhaustive Quality Attributes list. For further in-depth reading, you can check this link.

Related posts: