Fundamentals of Software Architecture, 2nd Edition

Book description

Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real guide exists to help developers become architects. Until now. This updated edition provides a comprehensive overview of software architecture's many aspects, with five new chapters covering the latest insights from the field. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming architecture, governance, data, generative AI, team topologies, and many other topics.

Mark Richards and Neal Ford—hands-on practitioners who have taught software architecture classes professionally for years—focus on architecture principles that apply across all technology stacks. You'll explore software architecture in a modern light, taking into account all the innovations of the past decade.

This book examines:

  • Architecture styles and patterns: Microservices, modular monoliths, microkernels, layered architectures, and many more
  • Components: Identification, coupling, cohesion, partitioning, and granularity
  • Soft skills: Effective team management, collaboration, business engagement models, negotiation, presentations, and more
  • Modernity: Engineering practices and operational approaches that have changed radically in the past few years, including cloud considerations and generative AI
  • Architecture as an engineering discipline: Repeatable results, metrics, and concrete valuations that add rigor to software architecture

Publisher resources

View/Submit Errata

Table of contents

  1. Brief Table of Contents (Not Yet Final)
  2. I. Foundations
  3. 1. Architectural Thinking
    1. Architecture Versus Design
      1. Strategic versus Tactical Decisions
      2. Level of Effort
      3. Significance of Trade-offs
    2. Technical Breadth
    3. Analyzing Trade-Offs
    4. Understanding Business Drivers
    5. Balancing Architecture and Hands-On Coding
    6. There’s More to Architectural Thinking
  4. 2. Modularity
    1. Modularity Versus Granularity
    2. Defining Modularity
    3. Measuring modularity
      1. Cohesion
      2. Coupling
      3. Metrics: Abstractness, Instability, and Normalized Distance from the Main Sequence
      4. Distance from the Main Sequence
      5. Connascence
    4. From Modules to Components
  5. 3. Component-Based Thinking
    1. Defining Logical Components
    2. Logical versus Physical Architecture
    3. Creating a Logical Architecture
      1. Identifying Core Components
      2. Assigning User Stories to Components
      3. Analyzing Roles and Responsibilities
      4. Analyzing Architectural Characteristics
      5. Restructuring Components
    4. Component Coupling
      1. Static Coupling
      2. Temporal Coupling
      3. The Law of Demeter
    5. Case Study: Going, Going, Gone: Discovering Components
  6. II. Architecture Styles
  7. 4. The Modular Monolith Architecture Style
    1. Topology
    2. Style Specifics
      1. Monolithic Structure
      2. Modular Structure
      3. Module Communication
    3. Data Topologies
    4. Cloud Considerations
    5. Common Risks
    6. Governance
    7. Team Topology Alignment
    8. Style Characteristics
      1. When To Use
      2. When Not To Use
    9. Examples and Use Cases
  8. 5. Pipeline Architecture Style
    1. Topology
    2. Style Specifics
      1. Filters
      2. Pipes
    3. Data Topologies
    4. Cloud Considerations
    5. Common Risks
    6. Governance
    7. Team Topology Considerations
    8. Style Characteristics
      1. When to use
      2. When not to use
    9. Examples and Use Cases
    10. Summary
  9. 6. Orchestration-Driven Service-Oriented Architecture
    1. Topology
      1. Taxonomy
      2. Reuse… and coupling
    2. Style specifics
    3. Data topologies for orchestration-driven SOA
    4. Cloud considerations for orchestration-driven SOA
    5. Governing orchestration-driven SOA
    6. Common risks for orchestration-driven SOA
    7. Team topologies considerations
    8. Style characteristics
    9. Examples and use cases
  10. III. Techniques and Soft Skills
  11. 7. Architectural Decisions
    1. Architectural Decision Antipatterns
      1. The Covering Your Assets antipattern
      2. Groundhog Day antipattern
      3. Email-Driven Architecture antipattern
    2. Architectural Significance
    3. Architectural Decision Records
      1. Basic Structure
      2. Example
      3. Storing ADRs
      4. ADRs as Documentation
      5. Using ADRs for Standards
      6. Using ADRs with Existing Systems
      7. Leveraging Generative AI and LLMs in Architectural Decisions
  12. About the Authors

Product information

  • Title: Fundamentals of Software Architecture, 2nd Edition
  • Author(s): Mark Richards, Neal Ford
  • Release date: April 2025
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098175511