Software Architecture Quality Attributes

DZone 's Guide to

Software Architecture Quality Attributes

Here are key software architecture quality attributes that you should monitor continuously, to make incremental improvements

· Performance Zone ·
Free Resource

Software projects are becoming complex, larger, more integrated, and are implemented by the use of several varieties of technologies. These various technologies need to be managed and organized to deliver a quality product. Quality attributes usually assessed and analyzed at the architecture level, not at the code level. And finally, software architecture has gained increasing visibility in the last years as the software industry has recognized the role of software architectures in maintaining high quality and ensuring high quality and sustainability of software products. 

However, there is still no consensus on how to measure various aspects of software architecture, therefore today I wanted to talk about software architecture metrics, but found out that in software architecture there are no standard metrics yet, this field is still very immature. However, some experts start talking about it, for example, I highly recommend you to attend Global Software Architecture Summit in Barcelona ( October, 1-2), where Alexander von Zitzewitz will talk about “Software Metrics for Architects”.

As for the post, I decided to slightly change it and talk about software architecture quality attributes as metrics will be based on them. 

And the next step is to run a survey and find out what software architecture metrics are used in different companies, by the way, you can contribute to it here. Once we have the results, I will write a post featuring them as well as highlight metrics we use in Apiumhub software projects.

Software Architecture Quality Attributes

Creating good architectures usually comes at the price of the significant initial investment. This is why ensuring good quality throughout the entire software project is of utmost importance.

Measurement is crucial and organizations strive to come up with meaningful measures that indicate progress and performance. Measurement in software architecture is a crucial factor to evaluate software quality characteristics such as scalability, efficiency, maintainability, performance, etc.

Here are key software architecture quality attributes that you should monitor continuously, to make incremental improvements: 


Maintainability is the degree to which software is understood, repaired, or enhanced. It should be easy to make changes in software, either for the addition of a new feature or for a bug fix. Maintainability is the ease with which you can modify software, adapt it for other purposes, or transfer it from one development team to another. Compliance with software architectural rules and consistency across the application combine to make software maintainable. 


Extensibility is the ability of software architecture to handle the addition of new functionalities and components. It is very valuable in agile development as features are added throughout the life of the project.


Making a software architecture as simple as possible is key to make it most understandable for everyone.


Shows the response of the system to performing certain actions for a certain period. It includes architecture metrics like, latency: time spent on responding to an event, Channel capacity: the number of events that occur at a certain point in time.


Scalability is the ability of the system to handle load increases without decreasing performance, or the possibility to rapidly increase the load. The key indicators for measuring this attribute are if the system allows for horizontal scaling, the time needed to increase scaling, in seconds, scaling limitations: the number of servers or the network capacity and possibility to scale: the increase in the number of transactions or the amount of content.


Responsible for the operation and the transmission of data and its exchange with other external systems. A well-designed system facilitates integration with third-party systems. To improve the interoperability, you can use well-designed external interfaces, standardization systems, etc.


Software architecture exposes the dimensions along which a system is expected to evolve. 


Risk of software failure and the stability of a program when exposed to unexpected conditions. Reliable software has minimal downtime, good data integrity, and no errors that directly affect users.


Assesses how well an application protects information against the risk of software breaches. For example, the quantity and severity of vulnerabilities found in a software system are indicators of its security level. Also, you can measure security by assessing how long it takes to patch or fix software vulnerabilities. 

Rate of Delivery

Rate of delivery means how often new versions of the software are shipped to customers. Since a new software version typically comes with improvements that directly impact users, you can infer that higher rates of delivery correspond to better quality software for customers.  


Quality software requires a high degree of testability. Finding faults in software with high testability is easier, making such systems less likely to contain errors when shipped to end-users. The harder it is to provide quality assurance, the tougher time you’ll have to ensure that quality applications are deployed into production. The main indicators for this attribute are the percentage of coverage with integration, unit tests, etc.  

global software architecture, maintainability, performance, software architecture

Published at DZone with permission of Ekaterina Novoseltseva . See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}