Op werkdagen voor 23:00 besteld, morgen in huis Gratis verzending vanaf €20
, , , e.a.

Building Evolutionary Architectures

Automated Software Governance

Paperback Engels 2022 9781492097549
Verwachte levertijd ongeveer 15 werkdagen


The software development ecosystem is constantly changing, providing a constant stream of new tools, frameworks, techniques, and paradigms. Over the past few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves.

This practical guide ties those parts together with a new way to think about architecture and time.


Aantal pagina's:250
Hoofdrubriek:IT-management / ICT


Wees de eerste die een lezersrecensie schrijft!

Over Patrick Kua

Patrick is a Principal Technical Consultant at ThoughtWorks. He is the author of "The Retrospective Handbook" and "Talking with Tech Leads." His passion is bringing a balanced focus on people, organisation and technology. He has over a decade of experience in agile and lean development processes.

Andere boeken door Patrick Kua


Foreword to the First Edition
Foreword to the Second Edition
The Structure of This Book
Case Studies and PenultimateWidgets
Conventions Used in This Book
Using Code Examples
O´Reilly Online Learning
How to Contact Us
Additional Information

Part I. Mechanics
1. Evolving Software Architecture
The Challenges of Evolving Software
Evolutionary Architecture
Guided Change
Incremental Change
Multiple Architectural Dimensions
How Is Long-Term Planning Possible When Everything Changes All the Time?
Once I´ve Built an Architecture, How Can I Prevent It from Degrading Over Time?
Why Evolutionary?

2. Fitness Functions
What Is a Fitness Function?
Scope: Atomic Versus Holistic
Cadence: Triggered Versus Continual Versus Temporal
Case Study: Triggered or Continuous?
Result: Static Versus Dynamic
Invocation: Automated Versus Manual
Proactivity: Intentional Versus Emergent
Coverage: Domain-Specific Fitness Functions?
Who Writes Fitness Functions?
Where Is My Fitness Function Testing Framework?
Outcomes Versus Implementations

3. Engineering Incremental Change
Incremental Change
Deployment Pipelines
Case Study: Adding Fitness Functions to PenultimateWidgets’ Invoicing Service
Case Study: Validating API Consistency in an Automated Build

4. Automating Architectural Governance
Fitness Functions as Architectural Governance
Code-Based Fitness Functions
Afferent and Efferent Coupling
Abstractness, Instability, and Distance from the Main Sequence
Directionality of Imports
Cyclomatic Complexity and “Herding” Governance
Turnkey Tools
Legality of Open Source Libraries
A11y and Other Supported Architecture Characteristics
Linters for Code Governance
Case Study: Availability Fitness Function
Case Study: Load-Testing Along with Canary Releases
Case Study: What to Port?
Fitness Functions You’re Already Using
Integration Architecture
Communication Governance in Microservices
Case Study: Choosing How to Implement a Fitness Function
Enterprise Architecture
Case Study: Architectural Restructuring While Deploying 60 Times per Day
Fidelity Fitness Functions
Fitness Functions as a Checklist, Not a Stick
Documenting Fitness Functions

Part II. Structure
5. Evolutionary Architecture Topologies
Evolvable Architecture Structure
Connascence Intersection with Bounded Context
Architectural Quanta and Granularity
Independently Deployable
High Functional Cohesion
High Static Coupling
Dynamic Quantum Coupling
Case Study: Microservices as an Evolutionary Architecture
Reuse Patterns
Effective Reuse = Abstraction + Low Volatility
Sidecars and Service Mesh: Orthogonal Operational Coupling
Data Mesh: Orthogonal Data Coupling

6. Evolutionary Data
Evolutionary Database Design
Evolving Schemas
Shared Database Integration
Inappropriate Data Entanglement
Two-Phase Commit Transactions
Age and Quality of Data
Case Study: Evolving PenultimateWidgets’ Routing
From Native to Fitness Function
Referential Integrity
Data Duplication
Replacing Triggers and Stored Procedures
Case Study: Evolving from Relational to Nonrelational

Part III. Impact
7. Building Evolvable Architectures
Principles of Evolutionary Architecture
Last Responsible Moment
Architect and Develop for Evolvability
Postel’s Law
Architect for Testability
Conway’s Law
Step 1: Identify Dimensions Affected by Evolution
Step 2: Define Fitness Function(s) for Each Dimension
Step 3: Use Deployment Pipelines to Automate Fitness Functions
Greenfield Projects
Retrofitting Existing Architectures
Appropriate Coupling and Cohesion
COTS Implications
Migrating Architectures
Migration Steps
Evolving Module Interactions
Guidelines for Building Evolutionary Architectures
Remove Needless Variability
Make Decisions Reversible
Prefer Evolvable over Predictable
Build Anticorruption Layers
Build Sacrificial Architectures
Mitigate External Change
Updating Libraries Versus Frameworks
Version Services Internally
Case Study: Evolving PenultimateWidgets’ Ratings
Fitness Function-Driven Architecture

8. Evolutionary Architecture Pitfalls and Antipatterns
Technical Architecture
Antipattern: Last 10% Trap and Low Code/No Code
Case Study: Reuse at PenultimateWidgets
Antipattern: Vendor King
Pitfall: Leaky Abstractions
Pitfall: Resume-Driven Development
Incremental Change
Antipattern: Inappropriate Governance
Case Study: Just Enough Governance at Penultimate Widgets
Pitfall: Lack of Speed to Release
Business Concerns
Pitfall: Product Customization
Antipattern: Reporting Atop the System of Record
Pitfall: Excessively Long Planning Horizons

9. Putting Evolutionary Architecture into Practice
Organizational Factors
Don´t Fight Conway´s Law
Culture of Experimentation
CFO and Budgeting
The Business Case
Hypothesis- and Data-Driven Development
Fitness Functions as Experimental Media
Building Enterprise Fitness Functions
Case Study: Zero-Day Security Vulnerability
Carving Out Bounded Contexts Within Existing Integration Architecture
Where Do You Start?
Low-Hanging Fruit
Highest Value First
Case Study: Enterprise Architecture at PenultimateWidgets
Future State?
Fitness Functions Using AI
Generative Testing
Why (or Why Not)?
Why Should a Company Decide to Build an Evolutionary Architecture?
Why Would a Company Choose Not to Build an Evolutionary Architecture?

About the Authors

Managementboek Top 100


Populaire producten



        Building Evolutionary Architectures