What are 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 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:
- What is Software Testing
- Software Architecture – One, Two, Three & N-Tier
- Quality Assurance vs Quality Control
- What is Functional Testing
- What is Non-functional Testing
- How To Succeed As Agile QA in Software Development