Note

This content was drafted with assistance from AI tools for research, organization, and initial content generation. All final content has been reviewed, fact-checked, and edited by the author to ensure accuracy and alignment with the author’s intentions and perspective.

Table of Contents

Part I: Foundations

1. Introduction

2. Architectural Thinking

  • Architecture Versus Design
  • Technical Breadth
  • Analyzing Trade-Offs
  • Understanding Business Drivers
  • Balancing Architecture and Hands-On Coding

3. Modularity

  • Definition
  • Measuring Modularity
    • Cohesion
    • Coupling
    • Abstractness, Instability, and Distance from the Main Sequence
    • Distance from the Main Sequence
    • Connascence
    • Unifying Coupling and Connascence Metrics
  • From Modules to Components

4. Architecture Characteristics Defined

  • Architectural Characteristics (Partially) Listed
    • Operational Architecture Characteristics
    • Structural Architecture Characteristics
    • Cross-Cutting Architecture Characteristics
  • Trade-Offs and Least Worst Architecture

5. Identifying Architectural Characteristics

  • Extracting Architecture Characteristics from Domain Concerns
  • Extracting Architecture Characteristics from Requirements
  • Case Study: Silicon Sandwiches
    • Explicit Characteristics
    • Implicit Characteristics

6. Measuring and Governing Architecture Characteristics

  • Measuring Architecture Characteristics
    • Operational Measures
    • Structural Measures
    • Process Measures
  • Governance and Fitness Functions
    • Governing Architecture Characteristics
    • Fitness Functions

7. Scope of Architecture Characteristics

  • Coupling and Connascence
  • Architectural Quanta and Granularity
  • Case Study: Going, Going, Gone

8. Component-Based Thinking

  • Component Scope
  • Architect Role
    • Architecture Partitioning
    • Case Study: Silicon Sandwiches: Partitioning
  • Developer Role
    • Component Identification Flow
    • Identifying Initial Components
    • Assign Requirements to Components
    • Analyze Roles and Responsibilities
    • Analyze Architecture Characteristics
    • Restructure Components
    • Component Granularity
    • Component Design
    • Discovering Components
    • Case Study: Going, Going, Gone: Discovering Components
  • Architecture Quantum Redux: Choosing Between Monolithic Versus Distributed Architectures

Part II: Architecture Styles

9. Foundations

  • Fundamental Patterns
    • Big Ball of Mud
    • Unitary Architecture
    • Client/Server
  • Monolithic Versus Distributed Architectures
    • Fallacy #1: The Network Is Reliable
    • Fallacy #2: Latency Is Zero
    • Fallacy #3: Bandwidth Is Infinite
    • Fallacy #4: The Network Is Secure
    • Fallacy #5: The Topology Never Changes
    • Fallacy #6: There Is Only One Administrator
    • Fallacy #7: Transport Cost Is Zero
    • Fallacy #8: The Network Is Homogeneous
    • Other Distributed Considerations

10. Layered Architecture Style

  • Topology
  • Layers of Isolation
  • Adding Layers
  • Other Considerations
  • Why Use This Architecture Style
  • Architecture Characteristics Ratings

11. Pipeline Architecture Style

  • Topology
    • Pipes
    • Filters
  • Example
  • Architecture Characteristics Ratings

12. Microkernel Architecture Style

  • Topology
    • Core System
    • Plug-In Components
  • Registry
  • Contracts
  • Examples and Use Cases
  • Architecture Characteristics Ratings

13. Service-Based Architecture Style

  • Topology
  • Topology Variants
  • Service Design and Granularity
  • Database Partitioning
  • Example Architecture
  • Architecture Characteristics Ratings
  • When to Use This Architecture Style

14. Event-Driven Architecture Style

  • Topology
  • Broker Topology
  • Mediator Topology
  • Asynchronous Capabilities
  • Error Handling
  • Preventing Data Loss
  • Broadcast Capabilities
  • Request-Reply
  • Choosing Between Request-Based and Event-Based
  • Hybrid Event-Driven Architectures
  • Architecture Characteristics Ratings

15. Space-Based Architecture Style

  • General Topology
    • Processing Unit
    • Virtualized Middleware
    • Data Pumps
    • Data Writers
    • Data Readers
  • Data Collisions
  • Cloud Versus On-Premises Implementations
  • Replicated Versus Distributed Caching
  • Near-Cache Considerations
  • Implementation Examples
    • Concert Ticketing System
    • Online Auction System
  • Architecture Characteristics Ratings

16. Orchestration-Driven Service-Oriented Architecture

  • History and Philosophy
  • Topology
  • Taxonomy
    • Business Services
    • Enterprise Services
    • Application Services
    • Infrastructure Services
    • Orchestration Engine
    • Message Flow
  • Reuse…and Coupling
  • Architecture Characteristics Ratings

17. Microservices Architecture

  • History
  • Topology
    • Distributed
    • Bounded Context
    • Granularity
    • Data Isolation
    • API Layer
    • Operational Reuse
    • Frontends
  • Communication
    • Choreography and Orchestration
    • Transactions and Sagas
  • Architecture Characteristics Ratings
  • Additional References

18. Choosing the Appropriate Architecture Style

  • Shifting “Fashion” in Architecture
  • Decision Criteria
  • Monolith Case Study: Silicon Sandwiches
    • Modular Monolith
    • Microkernel
  • Distributed Case Study: Going, Going, Gone

Part III: Techniques and Soft Skills

19. Architecture Decisions

  • Architecture Decision Anti-Patterns
    • Covering Your Assets Anti-Pattern
    • Groundhog Day Anti-Pattern
    • Email-Driven Architecture Anti-Pattern
  • Architecturally Significant
  • Architecture Decision Records
    • Basic Structure
    • Storing ADRs
    • ADRs as Documentation
    • Using ADRs for Standards
    • Example

20. Analyzing Architecture Risk

  • Risk Matrix
  • Risk Assessments
  • Risk Storming
    • Identification
    • Consensus
  • Agile Story Risk Analysis
  • Risk Storming Examples
    • Availability
    • Elasticity
    • Security

21. Diagramming and Presenting Architecture

  • Diagramming
    • Tools
    • Diagramming Standards: UML, C4, and ArchiMate
    • Diagram Guidelines
  • Presenting
    • Manipulating Time
    • Incremental Builds
    • Infodecks Versus Presentations
    • Slides Are Half of the Story
    • Invisibility

22. Making Teams Effective

  • Team Boundaries
  • Architect Personalities
    • Control Freak
    • Armchair Architect
    • Effective Architect
  • How Much Control?
  • Team Warning Signs
  • Leveraging Checklists
    • Developer Code Completion Checklist
    • Unit and Functional Testing Checklist
    • Software Release Checklist
  • Providing Guidance
  • Summary

23. Negotiation and Leadership Skills

  • Negotiation and Facilitation
    • Negotiating with Business Stakeholders
    • Negotiating with Other Architects
    • Negotiating with Developers
  • The Software Architect as a Leader
    • The 4 C’s of Architecture
    • Be Pragmatic, Yet Visionary
    • Leading Teams by Example
  • Integrating with the Development Team
  • Summary

24. Developing a Career Path

  • The 20-Minute Rule
  • Developing a Personal Radar
    • The ThoughtWorks Technology Radar
    • Open Source Visualization Bits
  • Using Social Media
  • Parting Words of Advice

Appendix

  • Self-Assessment Questions

Index


Book Details:

  • Title: Fundamentals of Software Architecture
  • Subtitle: An Engineering Approach
  • Authors: Mark Richards & Neal Ford
  • Publisher: O’Reilly Media
  • Copyright: 2020
  • ISBN: 978-1-492-04345-4