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