O'Reilly logo
live online training icon Live Online training

Analyzing software architecture

Finding and fixing structural decay

Topic: Programming
Mark Richards

Analyzing architecture is all about finding structural decay in systems and determining whether an existing architecture is still viable in today’s market. This is known as “architectural vitality”. While the functionality of a system may be sound, the architecture supporting that functionality may not be. For example, performance and scalability may have been the number one concern 5 years ago, but today agility, testability, and deployability are now the concerns to support high levels of competitive advantage and time-to-market. Does the architecture support these “-ilities”? If not, the company is likely to fail in today’s highly competitive market.

In this 1-day online class you will learn what structural decay means and how to detect it. You will also learn what it means to “analyze an architecture”, and how to measure and quantify various “-ilities” such as performance, scalability, testability, maintainability, and so on. Using actual real-world examples, you will first see how to apply macro-level analysis techniques (design level) to detect elements of decay. Leveraging source code metrics and open-source analysis tools, you will then see how to apply micro-level (source-code) analysis techniques to identify decay in your architecture. You will also learn how to perform risk analysis against your architecture to help identify and prioritize architectural refactoring efforts, and also how to assess the level of modularity in your application in preparation for the move to microservices.

What you'll learn-and how you can apply it

By the end of this live, hands-on, online course, you’ll understand:

  • What is meant by "structural decay" within applications and how to find it
  • How to analyze the architecture of your applications
  • The code metrics important to an architecture
  • How to interpret the results of "eye candy" visualizations of open source analysis tools

And you’ll be able to:

  • Determine whether your architecture is sound
  • Determine if you have the right architecture style in place
  • Leverage source code metrics to analyze your architecture
  • Figure out which metrics you should focus on
  • Perform automated governance and monitoring of your architecture

This training course is for you because...

  • You are wondering whether your application architecture is still viable today
  • You are an architect or tech lead responsible for your application and architecture
  • You want better insight into the overall health of your architecture
  • Your business is constantly changing
  • You are frequently modifying code within your application


  • A strong desire to know whether your architecture is still viable and sound and if it is still sustainable. No other prerequisites are required.

Recommended preparation:

Software Architecture Patterns (report)

Recommended follow-up:

About your instructor

  • Mark Richards is an experienced, hands-on software architect involved in the architecture, design, and implementation of microservices architectures, service-oriented architectures, and distributed systems in a variety of technologies. He has been in the software industry since 1983 and has significant experience and expertise in application, integration, and enterprise architecture. Mark served as the president of the New England Java Users Group from 1999 through 2003. He is the author of numerous technical books and videos, including the Software Architecture Fundamentals Video Series (O’Reilly video), Enterprise Messaging (O’Reilly video), Java Message Service, 2nd Edition (O’Reilly), and several books and videos on Microservices (O’Reilly). Mark is also a conference speaker and trainer and has spoken at hundreds of conferences and user groups around the world on a variety of enterprise-related technical topics.


The timeframes are only estimates and may vary according to how the class is progressing


  • Defining Structural Decay (10 Min)
  • What To Analyze When Analyzing Architecture (10 Min)

Macro Techniques

  • Automated Fitness Functions (5 min)
  • Measuring and Analyzing Performance (10 min)
  • Measuring and Analyzing Scalability (10 min)
  • Measuring and Analyzing Agility (10 min)
  • Break (10 min)
  • Measuring and Analyzing Testability (10 min)
  • Measuring and Analyzing Fault Tolerance (10 min)
  • Measuring and Analyzing Deployability (10 min)
  • Specific Microservices Architecture Structural Decay Indicators (25 Min)
  • Automated Governance Using ArchUnit (10 min)
  • Break (10 Min)

Micro Techniques

  • Signal To Noise Ratio (5 Min)
  • Measuring and Analyzing Component Size (5 Min)
  • Tools: Source Monitor (5 min)
  • Tools: Component Analyzer (5 min)
  • Measuring and Analyzing Cyclomatic Complexity (10 min)
  • Break (10 Min)
  • Measuring and Analyzing Depth of Inheritance Tree (5 min)
  • Tools: X-Ray (5 min)
  • Measuring and Analyzing Component Coupling (10 min)
  • Tools: Component Analyzer (5 min)
  • Tools: JDepend (10 min)
  • Mapping Code Metrics to Architecture Characteristics (15 min)