Softwarearchitektur
Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture
Christian Ciceri, Dave Farley, Neal Ford, Andrew Harmel-Law, Michael Keeling, 2022
Inhaltsverzeichnis des Buches
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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