Software Architecture Metrics

Book description

Software architecture metrics are key to the maintainability and architectural quality of a software project and they can warn you about dangerous accumulations of architectural and technical debt early in the process. In this practical book, leading hands-on software architects share case studies to introduce metrics that every software architect should know.

This isn't a book about theory. It's more about practice and implementation, about what has already been tried and worked. Detecting software architectural issues early is crucial for the success of your software: it helps mitigate the risk of poor performance and lowers the cost of repairing those issues. Written by practitioners for software architects and software developers eager to explore successful case studies, this guide will help you learn more about decision and measurement effectiveness.

Through contributions from 10 prominent practitioners, this book shares key software architecture metrics to help you set the right KPIs and measure the results. You'll learn how to:

  • Measure how well your software architecture is meeting your goals
  • Choose the right metrics to track (and skip the ones you don't need)
  • Improve observability, testability, and deployability
  • Prioritize software architecture projects
  • Build insightful and relevant dashboards

Publisher resources

View/Submit Errata

Table of contents

  1. Preface
    1. What Will You Learn?
    2. Who This Book Is For
    3. Conventions Used in This Book
    4. O’Reilly Online Learning
    5. How to Contact Us
    6. Acknowledgments
      1. Christian Ciceri
      2. Dave Farley
      3. Neal Ford
      4. Andrew Harmel-Law
      5. Michael Keeling
      6. Carola Lilienthal
      7. João Rosa
      8. Alexander von Zitzewitz
      9. Rene Weiss
      10. Eoin Woods
  2. 1. Four Key Metrics Unleashed
    1. Definition and Instrumentation
    2. Refactoring Your Mental Model
      1. Pipelines as Your First Port of Call
      2. Locating Your Instrumentation Points
    3. Capture and Calculation
    4. Display and Understanding
      1. Target Audience
      2. Visualization
      3. Front Page
    5. Discussions and Understanding
    6. Ownership and Improvement
    7. Conclusion
  3. 2. The Fitness Function Testing Pyramid: An Analogy for Architectural Tests and Metrics
    1. Fitness Functions and Metrics
      1. Fitness Functions: Test Coverage
      2. Fitness Functions: Integration Tests with Network Latency
    2. Introduction to Fitness Function Categories
      1. Mandatory Fitness Function Categories
      2. Optional Fitness Function Categories
      3. Fitness Function Categories: Catalog Overview
    3. The Testing Pyramid
    4. The Fitness Function Testing Pyramid
      1. The Top Layer
      2. The Middle Layer
      3. The Bottom Layer
    5. Examples and Their Full Categorization
    6. Fully Categorizing Top-Layer Examples
    7. Developing Your Fitness Functions and Metrics
    8. Conclusion
  4. 3. Evolutionary Architecture: Guiding Architecture with Testability and Deployability
    1. The Importance of Learning and Discovery
    2. The Tools of Sustainable Change
    3. Testability: Creating High-Quality Systems
    4. Deployability: Scaling Development of Our Systems
    5. Conclusion
  5. 4. Improve Your Architecture with the Modularity Maturity Index
    1. Technical Debt
    2. Origination of Technical Debt
    3. Assessment with the MMI
    4. Modularity
    5. Hierarchy
    6. Pattern Consistency
    7. Calculating the MMI
    8. Architecture Review to Determine the MMI
    9. Conclusion
  6. 5. Private Builds and Metrics: Tools for Surviving DevOps Transitions
    1. Key Terms
      1. CI/CD
      2. DevOps
    2. The “Ownership Shift”
    3. Empowering the Local Environment Again
    4. The Private Build
    5. Case Study: The Unstable Trunk
      1. Bug A1
      2. Bug A2
      3. Bug A3
      4. Bug A4
    6. Case Study: The Blocked Consultant
    7. Metrics
      1. Time to Feedback
      2. Evitable Integration Issues in the Deployed Application per Iteration
      3. Time Spent Restoring Trunk Stability per Iteration
      4. The Cost of Private Builds
    8. Metrics in Practice
      1. High Time to Feedback, High Evitable Integration Issues, Low Time to Trunk Stability
      2. Low Time to Feedback, High Evitable Integration Issues, Low Time to Trunk Stability
      3. High Time to Feedback, Low Evitable Integration Issues, Low Time to Trunk Stability
      4. Low Evitable Integration Issues and High Time to Trunk Stability
    9. Conclusion
  7. 6. Scaling an Organization: The Central Role of Software Architecture
    1. YourFinFreedom Breaks the Monolith
    2. Implementing a Distributed Big Ball of Mud
    3. Seeking Direction
    4. From Best Effort to Intentional Effort
    5. Increasing Software Architecture Intentionality, Guided by Metrics
    6. Managing Expectations with Communication
    7. Learning and Evolving the Architecture
    8. And What About Anna?
    9. Conclusion
  8. 7. The Role of Measurement in Software Architecture
    1. Adding Measurement to Software Architecture
    2. Measurement Approaches
      1. Runtime Measurement of Applications and Infrastructure
      2. Software Analysis
      3. Design Analysis
      4. Estimates and Models
      5. Fitness Functions
    3. Measuring System Qualities
      1. Performance
      2. Scalability
      3. Availability
      4. Security
    4. Getting Started
    5. Hypothetical Case Study
    6. Pitfalls
    7. Conclusion
  9. 8. Progressing from Metrics to Engineering
    1. The Path to Fitness Functions
    2. From Metrics to Engineering
    3. Automation Operationalizes Metrics
    4. Case Study: Coupling
    5. Case Study: Zero-Day Security Check
    6. Case Study: Fidelity Fitness Functions
    7. Conclusion
  10. 9. Using Software Metrics to Ensure Maintainability
    1. The Case for Using Metrics
      1. Entropy Kills Software
      2. The Toxicity of Cyclic Dependencies
      3. How Metrics Can Help
    2. Why Are Metrics Not More Widely Used?
    3. Tools to Gather Metrics
    4. Useful Metrics
      1. Metrics to Measure Coupling and Structural Erosion
      2. Metrics to Measure Size and Complexity
      3. Change History Metrics
      4. Other Useful Metrics
    5. Architectural Fitness Functions
    6. How to Track Metrics over Time
    7. A Few Golden Rules for Better Software
    8. Conclusion
  11. 10. Measure the Unknown with the Goal-Question-Metric Approach
    1. The Goal-Question-Metric Approach
      1. Create a GQM Tree
      2. Prioritize Metrics and Devise a Data Collection Strategy
    2. Case Study: The Team That Learned to See the Future
      1. System Context
      2. Incident #1: Too Many Requests to the Foo Service
      3. Incident #2: Seeing the Future
      4. Reflection
    3. Run a GQM Workshop
      1. Workshop Summary
      2. Workshop Steps
      3. Facilitation Guidelines and Hints
    4. Conclusion
  12. Index
  13. About the Authors

Product information

  • Title: Software Architecture Metrics
  • Author(s): Christian Ciceri, Dave Farley, Neal Ford, Andrew Harmel-Law, Michael Keeling, Carola Lilienthal, João Rosa, Alexander von Zitzewitz, Rene Weiss, Eoin Woods
  • Release date: May 2022
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098112233