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 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.
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.
It is the ability of a system to continue to keep operating over time
It is the ratio of the available system time to the total working time it is required or expected to function.
It is the ability of a software application to run on numerous platforms such as data portability, hosting, viewing, etc.,
It shows how well the system or component facilitates to perform tests to determine whether the predefined test criteria have been met.
It is the ability of a system to handle the demand for stress caused by increased usage without decreasing performance.
It is the ability of a system to adapt to future changes
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.
It is the ability of a software application to maintain easily and support changes cost-effectively.
It is the ability of a system that satisfies necessary requirements and needs to identifying and solving problems.
It is the ability of two or more systems to communicate or exchange data easily and to use the data that has been exchanged.
It is the ability of a system in the form of responsiveness to various actions within a certain period of time
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.
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.