DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • You Learned AI. So Why Are You Still Not Getting Hired?
  • Managing Changing Hardware/Peripherals in a Robust Point of Sale System
  • Strategic Domain-Driven Design: The Forgotten Foundation of Great Software
  • Beyond Code: How to Use AI to Modernize Software Architecture

Trending

  • Lambda-Driven API Design: Building Composable Node.js Endpoints With Functional Primitives
  • Self-Hosted Inference Doesn’t Have to Be a Nightmare: How to Use GPUStack
  • The Third Culture: Blending Teams With Different Management Models
  • Zone-Free Angular: Unlocking High-Performance Change Detection With Signals and Modern Reactivity
  1. DZone
  2. Software Design and Architecture
  3. Microservices
  4. Software Architecture Quality Attributes

Software Architecture Quality Attributes

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

By 
Ekaterina Novoseltseva user avatar
Ekaterina Novoseltseva
·
Jun. 12, 20 · Analysis
Likes (6)
Comment
Save
Tweet
Share
12.7K Views

Join the DZone community and get the full member experience.

Join For Free

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

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

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.

Simplicity

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

Performance

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

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.

Interoperability

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.

Evolution

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

Reliability

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.

Security

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.  

Testability

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.  

Software architecture Attribute (computing)

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

Opinions expressed by DZone contributors are their own.

Related

  • You Learned AI. So Why Are You Still Not Getting Hired?
  • Managing Changing Hardware/Peripherals in a Robust Point of Sale System
  • Strategic Domain-Driven Design: The Forgotten Foundation of Great Software
  • Beyond Code: How to Use AI to Modernize Software Architecture

Partner Resources

×

Comments

The likes didn't load as expected. Please refresh the page and try again.

  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook