---
title: The Importance of Measuring Your Software Architectural Health
description: Software system architecture has a profound impact on its stability. By monitoring system stability you can measure the quality of your architecture.
image: https://www.lattix.com/wp-content/uploads/2019/07/SystemStabilitySource-300x213.png
---

[![Lattix Logo](https://blog.lattix.com/hs-fs/hubfs/lattix-logo-1.jpg?width=1251&height=418&name=lattix-logo-1.jpg "Lattix Logo")](https://www.lattix.com)

Open main menu Close main menu

- [PRODUCTS](https://www.lattix.com/products) Open the submenu 
    - [LATTIX 2021](https://www.lattix.com/products/lattix-2021)
    - [LATTIX ARCHITECT](https://www.lattix.com/products/#architect)
    - [LATTIX SUITE](https://www.lattix.com/products/#lattix_suite)
    - [CI/DEVOPS](https://www.lattix.com/products/#devops)
- [SOLUTIONS](https://www.lattix.com/solutions) Open the submenu 
    - [OVERVIEW](https://www.lattix.com/solutions/#overview)
    - [ARCHITECTURE ANALYSIS](https://www.lattix.com/solutions/architecture-analysis)
    - [CI DEVOPS](https://www.lattix.com/solutions/ci-devops)
    - [ARCHITECTURAL REFACTORING](https://www.lattix.com/solutions/architectural-refactoring)
    - [IMPROVE BUILD](https://www.lattix.com/solutions/improve-build)
    - [IMPROVE TESTING](https://www.lattix.com/solutions/improve-testing)
    - [COMPLIANCE](https://www.lattix.com/solutions/functional-safety-compliance) Open the submenu 
          - [MEDICAL](https://www.lattix.com/solutions/functional-safety-compliance/medical)
          - [AUTOMOTIVE](https://www.lattix.com/solutions/functional-safety-compliance/automotive)
          - [AVIONICS/MILITARY](https://www.lattix.com/solutions/functional-safety-compliance/avionics-military)
          - [FINANCE](https://www.lattix.com/solutions/finance-pci-compliance)
    - [SYSTEMS ENGINEERING](https://www.lattix.com/solutions/systems-engineering)
- [SERVICES](https://www.lattix.com/services) Open the submenu 
    - [OVERVIEW](https://www.lattix.com/services/#overview)
    - [ARCHITECTURAL CONSULTING](https://www.lattix.com/services/architecture-consulting)
    - [REFACTORING CONSULTING](https://www.lattix.com/refactoring-consulting)
    - [FUNCTIONAL SAFETY CONSULTING](https://www.lattix.com/services/functional-safety-consulting)
    - [CI DEVOPS SERVICES](https://www.lattix.com/services/ci-devops-services)
    - [SYSTEMS ENGINEERING SERVICES](https://www.lattix.com/services/systems-engineering-services)
- [RESOURCES](https://www.lattix.com/resources) Open the submenu 
    - [CASE STUDIES](https://www.lattix.com/resources/#casestudies)
    - [WHITEPAPERS](https://www.lattix.com/resources/#whitepapers)
    - [VIDEOS](https://www.lattix.com/resources/#videos)
    - [BLOG](https://www.lattix.com/enterprise-architecture-blog)
- [ABOUT](https://www.lattix.com/architecture-solutions-about) Open the submenu 
    - [MANAGEMENT](https://www.lattix.com/architecture-solutions-about/#management)
    - [FAQ](https://www.lattix.com/architecture-solutions-about/#faq)
    - [CONTACT US](https://www.lattix.com/architecture-solutions-about/#contact)
    - [EVENTS](https://www.lattix.com/architecture-solutions-about/events)
    - [PARTNERS](https://www.lattix.com/partners) Open the submenu 
          - [SERVICES PARTNERS](https://www.lattix.com/partners/services-partners)
          - [VALUE ADDED RESELLERS](https://www.lattix.com/partners/value-added-resellers)
          - [TECHNOLOGY PARTNERS](https://www.lattix.com/partners/technology-partners/parasoft) Open the submenu 
                  - [PARASOFT](https://www.lattix.com/partners/technology-partners/parasoft)
    - [PRIVACY POLICY](https://www.lattix.com/architecture-solutions-about/privacy-policy)

[Architecture](https://blog.lattix.com/tag/architecture)

# The Importance of Measuring Your Software Architectural Health

![Sean Barow](https://blog.lattix.com/hs-fs/hubfs/WIN_20170321_13_30_11_Pro.jpg?width=45&name=WIN_20170321_13_30_11_Pro.jpg) 

[Sean Barow](https://blog.lattix.com/author/sean-barow)

[Share this blog post on Twitter](https://twitter.com/intent/tweet?text=I+found+this+interesting+blog+post&url=https://blog.lattix.com/measure-your-software-architectural-health) [Share this blog post on Facebook](http://www.facebook.com/share.php?u=https://blog.lattix.com/measure-your-software-architectural-health) [Share this blog post on LinkedIn](http://www.linkedin.com/shareArticle?mini=true&url=https://blog.lattix.com/measure-your-software-architectural-health)

![](https://www.lattix.com/wp-content/uploads/2019/07/SystemStabilitySource-300x213.png)

How do you measure the “architectural health” of a software project?

Since every software project is different, it is hard to come up with a single number that represents the architectural health of an entire project. [Lattix Architect](https://www.lattix.com/products-architecture-issues/#architect), therefore, provides a variety of architectural metrics. These metrics were chosen based on academic research on system architecture as well as the practical experience of the Lattix development team. We will look at one of these architecture metrics today: system stability.

Architectural metrics are different from traditional code metrics (i.e. bugs per line of code, cyclomatic complexity, etc.) that focus on understanding the quality and complexity of sections of code. Architectural metrics focus on the big picture (the system as a whole) and examine its organizational structure.

#### What is system stability?

System stability measures how sensitive the system is to change. When a change is made to the software, system stability will tell you how much of the rest of the software will be affected. In software with a layered architecture, the lowest layers tend to have the lowest system stability because any change to them affects the layers above. Therefore, the lower layers need much more testing.

Lower stability means the software is harder to maintain because every change affects a greater amount of the system and therefore requires more testing and validation. This is why less stable software tends to break easily (fragile) when even small changes are made. High stability means there is less change impact, so changes are localized. We consider this robust software. Also, because there are fewer unexpected consequences when making a change, developers have an easier time understanding the software.

#### How is it calculated?

System stability is measured by analyzing the impact of change in a software system for every element of the system. The overall stability number is the average stability number from all of the elements. The dependency information for every element is examined. Then the number of elements that are potentially affected (dependencies) when an element is changed is calculated. This is done through to [transitive closure](https://www.geeksforgeeks.org/transitive-closure-of-a-graph/).

If the system stability is 70%, this means that 30% of the elements on average are affected when any element is changed and 70% are unaffected. Stability is computed as a percentage of the size of the system, so it doesn’t necessarily change simply because the software project gets larger or smaller.

#### How can you use it? And why?

The architecture of a software system has a profound impact on its stability. Therefore, by monitoring system stability you can measure the quality of your architecture. System stability can also be used to focus your testing efforts. As an example, if we create a set of applications on a common framework (see picture below) and then change the framework, we will affect all of the applications.

![Architectural Health using System Stability as a Framework](https://www.lattix.com/wp-content/uploads/2019/07/SoftwareArchitecture-300x171.png)

If we change just an application then the impact will be much lower. Therefore, it is essential to understand not just the stability of the entire system, but understand where the stability is coming from.

![System Stability Chart Breakdown](https://www.lattix.com/wp-content/uploads/2019/07/SystemStabilitySource-300x213.png)

In the picture above, the total stability of *Project* is about 62%, but the *Apps* layer has a stability of 73%, while *Frameworks* and *Util* have lower stability. This means the *Frameworks* and *Util *layers have more dependencies on other components, which means that changes to these components have a much larger impact and a need for focused testing (i.e. changes to these layers are riskier).

There is also value in tracking the stability of the software over time.

![System Stability Trend Chart](https://www.lattix.com/wp-content/uploads/2019/07/SystemStabilityTrend-300x256.png)

We have talked in previous blog posts about [architecture erosion](https://www.lattix.com/architecture-erosion-in-agile-development/) and how that leads to software that is harder to maintain. The system stability metric gives you measurable and actionable insight into this phenomenon. If the stability goes down over time as in the picture above, there needs to be a corresponding increase in testing and verification.

#### Conclusion

System stability tends to decrease over time if not monitored. Every change to the software can erode the architecture and therefore the stability. This means the software becomes harder to maintain over time, resulting in longer testing cycles and reduced developer productivity.

Monitoring stability can help you maintain a clean and modular architecture. Lattix products makes architecture management part of your continuous integration and makes architecture management easy and actionable in your development lifecycle.

![Sean Barow](https://blog.lattix.com/hs-fs/hubfs/WIN_20170321_13_30_11_Pro.jpg?width=150&name=WIN_20170321_13_30_11_Pro.jpg)

#### Sean Barow

[Follow me on my website](https://blog.lattix.com/www.lattix.com) [Follow me on LinkedIn](https://www.linkedin.com/in/sean-barow-0011bb1/) [Follow me on LinkedIn](https://twitter.com/lattixdsm)

Sean is Director of Sales and Marketing at Lattix.

### Leave a Comment

## Related Articles

[![](https://blog.lattix.com/hubfs/One%20Giant%20Component-2.jpg)](https://blog.lattix.com/why-cyclic-dependencies-are-a-problem)

[Lattix Architect](https://blog.lattix.com/tag/lattix-architect)

### [Why Cyclic Dependencies are a Problem](https://blog.lattix.com/why-cyclic-dependencies-are-a-problem)

![Sean Barow](https://blog.lattix.com/hs-fs/hubfs/WIN_20170321_13_30_11_Pro.jpg?width=45&name=WIN_20170321_13_30_11_Pro.jpg) 

[Sean Barow](https://blog.lattix.com/author/sean-barow) 

[Read More](https://blog.lattix.com/why-cyclic-dependencies-are-a-problem)

[![](https://blog.lattix.com/hubfs/Imported%20sitepage%20images/ArchitecturalAnalysisPic.jpg)](https://blog.lattix.com/architecture-erosion-in-agile-development)

[Software Complexity](https://blog.lattix.com/tag/software-complexity)

### [Architecture Erosion in Agile Development](https://blog.lattix.com/architecture-erosion-in-agile-development)

Software architecture erosion refers to the gap between the planned and actual architecture of a software system as observed in its implementation.1

![Sean Barow](https://blog.lattix.com/hs-fs/hubfs/WIN_20170321_13_30_11_Pro.jpg?width=45&name=WIN_20170321_13_30_11_Pro.jpg) 

[Sean Barow](https://blog.lattix.com/author/sean-barow) 

[Read More](https://blog.lattix.com/architecture-erosion-in-agile-development)

#### PRODUCTS

- [LATTIX 2021](https://www.lattix.com)
- [LATTIX ARCHITECT](https://www.lattix.com/products/#architect)
- [LATTIX SUITE](https://www.lattix.com/products/#_lattix_suite)
- [CI/DEVOPS](https://www.lattix.com/products/#devops)
- [SUPPORTED TECHNOLOGIES](https://www.lattix.com/supported-technologies/)

#### SOLUTIONS

- [OVERVIEW](https://www.lattix.com/solutions/#overview)
- [ARCHITECTURE ANALYSIS](https://www.lattix.com/solutions/architecture-analysis)
- [CI DEVOPS](https://www.lattix.com/solutions/ci-devops)
- [ARCHITECTURAL REFACTORING](https://www.lattix.com/solutions/architectural-refactoring)
- [IMPROVE BUILD](https://www.lattix.com/solutions/improve-build)
- [IMPROVE TESTING](https://www.lattix.com/solutions/improve-testing)
- [COMPLIANCE](https://www.lattix.com/solutions/functional-safety-compliance)
- [SYSTEMS ENGINEERING](https://www.lattix.com/solutions/systems-engineering)

#### SERVICES

- [OVERVIEW](https://www.lattix.com/services/overview)
- [ARCHITECTURAL CONSULTING](https://www.lattix.com/services/architecture-consulting)
- [REFACTORING CONSULTING](https://www.lattix.com/refactoring-consulting)
- [FUNCTIONAL SAFETY CONSULTING](https://www.lattix.com/services/functional-safety-consulting)
- [CI DEVOPS SERVICES](https://www.lattix.com/services/ci-devops-services)
- [SYSTEMS ENGINEERING SERVICES](https://www.lattix.com/services/systems-engineering-services)

#### RESOURCES

- [CASE STUDIES](https://www.lattix.com/resources/#casestudies)
- [WHITEPAPERS](https://www.lattix.com/resources/#whitepapers)
- [VIDEOS](https://www.lattix.com/resources/#videos)
- [BLOG](https://www.lattix.com/enterprise-architecture-blog)

#### About

- [MANAGEMENT](https://www.lattix.com/architecture-solutions-about/#management)
- [FAQ](https://www.lattix.com/architecture-solutions-about/#faq)
- [CONTACT US](https://www.lattix.com/architecture-solutions-about/#contact)
- [EVENTS](https://www.lattix.com/architecture-solutions-about/events)
- [PARTNERS](https://www.lattix.com/partners)
- [PRIVACY POLICY](https://www.lattix.com/architecture-solutions-about/privacy-policy)

Follow us on Facebook Follow us on LinkedIn Follow us on Twitter Follow us on Instagram

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Sean Barow",
    "url" : "https://blog.lattix.com/author/sean-barow"
  },
  "dateModified" : "2022-07-11T20:17:44.089Z",
  "datePublished" : "2022-07-11T20:17:44.000Z",
  "headline" : "The Importance of Measuring Your Software Architectural Health",
  "image" : [ "https://www.lattix.com/wp-content/uploads/2019/07/SystemStabilitySource-300x213.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://blog.lattix.com/measure-your-software-architectural-health",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blog.lattix.com/hubfs/lattix-logo-1.jpg"
    },
    "name" : "Lattix"
  }
}
```