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.
Table of Contents
- 1. Software Architecture
- 2. Fitness Functions
3. Engineering Incremental Change
- Building Blocks
- Hypothesis- and Data-Driven Development
- Case Study: What to Port?
- 4. Architectural Coupling
- 5. Evolutionary Data
6. Building Evolvable Architectures
- Greenfield Projects
- Retrofitting Existing Architectures
- Migrating Architectures
Guidelines for Building Evolutionary Architectures
- Remove Needless Variability
- Make Decisions Reversible
- Prefer Evolvable over Predictable
- Build Anticorruption Layers
- Case Study: Service Templates
- Build Sacrificial Architectures
- Mitigate External Change
- Updating Libraries Versus Frameworks
- Prefer Continuous Delivery to Snapshots
- Version Services Internally
- Case Study: Evolving PenultimateWidgets’ Ratings
7. Evolutionary Architecture Pitfalls and Antipatterns
- Technical Architecture
- Incremental Change
- Business Concerns
8. Putting Evolutionary Architecture into Practice
- Organizational Factors
- Team Coupling Characteristics
- CFO and Budgeting
- Building Enterprise Fitness Functions
- Where Do You Start?
- Future State?
- Why (or Why Not)?
- The Business Case
- Building Evolutionary Architectures
- Title: Building Evolutionary Architectures
- Release date: September 2017
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781491986356