Fundamentals of Software Architecture — Study Notes
Comprehensive notes for Richards & Ford’s Fundamentals of Software Architecture: A Modern Engineering Approach (2nd Edition, 2025) — the definitive guide to software architecture styles, characteristics, decision-making, and the soft skills required to be an effective architect.
Book Details
- Title: Fundamentals of Software Architecture: A Modern Engineering Approach
- Author(s): Mark Richards and Neal Ford
- Published: March 2025 (2nd Edition)
- Focus: Practical architecture — styles, characteristics, decision-making, team dynamics, and architectural thinking
- Style: Practical engineering with theory grounding
- Total Chapters: 27 (+ Appendix)
- Notes Status: Complete as of 2026-05-29
What’s New in the 2nd Edition
| Change | Details |
|---|---|
| New Chapter 11 | The Modular Monolith Architecture Style (new style, not in 1st edition) |
| New Chapter 20 | Architectural Patterns (Reuse, CQRS, Orchestration vs Choreography) |
| New Chapter 26 | Architectural Intersections (Architecture & data, teams, GenAI, enterprise) |
| New Chapter 27 | The Laws of Software Architecture, Revisited (new corollary + new law) |
| Updated Part II | All style chapters now include: Data Topologies, Cloud Considerations, Team Topology, Governance sections |
| Star ratings updated | New categories added to architecture characteristics ratings |
| Ch15 expanded | Event-Driven Architecture — major additions (Derived Events, Swarm of Gnats, Mediated EDA) |
| Ch18 expanded | Microservices — major additions (Choreography/Orchestration, Sagas, Data Topologies) |
Chapter List
| # | Chapter Title | Key Concepts | Status |
|---|---|---|---|
| 01 | Introduction | Architecture definition, Laws, Architect expectations, Roadmap | 🟩 |
| 02 | Architectural Thinking | Design vs Architecture, Technical breadth, Trade-offs, 20-Minute Rule | 🟩 |
| 03 | Modularity | Cohesion, Coupling, Connascence, Core metrics, Distance from Main Sequence | 🟩 |
| 04 | Architectural Characteristics Defined | ”-ilities”, Operational/Structural/Cross-cutting characteristics, Trade-offs | 🟩 |
| 05 | Identifying Architectural Characteristics | Domain concerns, Katas, Explicit vs implicit, Limiting/prioritizing | 🟩 |
| 06 | Measuring and Governing Characteristics | Fitness functions, Operational/Structural/Process measures, Governance | 🟩 |
| 07 | The Scope of Architectural Characteristics | Architectural quanta, Synchronous communication, Scoping, Cloud | 🟩 |
| 08 | Component-Based Thinking | Logical components, Static/Temporal coupling, Law of Demeter, Discovery | 🟩 |
| 09 | Architecture Styles Foundations | Styles vs Patterns, Big Ball of Mud, Client/Server, 8 Fallacies, Monolith vs Distributed | 🟩 |
| 10 | Layered Architecture Style | Topology, Layers of isolation, Data topologies, Governance, When to use | 🟩 |
| 11 | Modular Monolith Architecture Style | Topology, Module communication, Data topologies, Cloud, Governance | 🟩 |
| 12 | Pipeline Architecture Style | Filters, Pipes, Topology, Governance, When to use | 🟩 |
| 13 | Microkernel Architecture Style | Core system, Plug-ins, Registry, Contracts, Governance | 🟩 |
| 14 | Service-Based Architecture Style | Service granularity, API gateway, Data topologies, Cloud | 🟩 |
| 15 | Event-Driven Architecture Style | Broker/Mediator topology, Events vs Messages, Derived Events, Error handling, Sagas | 🟩 |
| 16 | Space-Based Architecture Style | Processing units, Virtualized middleware, Data grid, Data pump, Governance | 🟩 |
| 17 | Orchestration-Driven SOA | Taxonomy, Reuse vs coupling, Enterprise service bus, Data topologies | 🟩 |
| 18 | Microservices Architecture | Bounded context, Granularity, Data isolation, Choreography, Sagas | 🟩 |
| 19 | Choosing the Appropriate Architecture Style | Decision criteria, Fashion vs fundamentals, Case studies | 🟩 |
| 20 | Architectural Patterns | Reuse patterns, CQRS, Orchestration vs Choreography, Broker-Domain | 🟩 |
| 21 | Architectural Decisions | ADRs, Decision antipatterns, Architectural significance, LLMs in decisions | 🟩 |
| 22 | Analyzing Architecture Risk | Risk matrix, Risk storming, Risk assessments, User-story risk analysis | 🟩 |
| 23 | Diagramming Architecture | UML, C4, ArchiMate, Tools, Diagram guidelines | 🟩 |
| 24 | Making Teams Effective | Collaboration, Architect personalities, Team warning signs, Checklists | 🟩 |
| 25 | Negotiation and Leadership Skills | Negotiation tactics, 4 Cs of Architecture, Leading by example | 🟩 |
| 26 | Architectural Intersections | Architecture & implementation, infrastructure, data, team topologies, GenAI | 🟩 |
| 27 | The Laws of Software Architecture, Revisited | Trade-off law, Why > How law, New corollaries | 🟩 |
Directory Structure
FSA-Notes/
├── README.md # This file
│
├── chapters/ # Chapter notes files
│ ├── ch01-introduction.md
│ ├── ch02-architectural-thinking.md
│ ├── ch03-modularity.md
│ ├── ch04-architectural-characteristics-defined.md
│ ├── ch05-identifying-architectural-characteristics.md
│ ├── ch06-measuring-and-governing-characteristics.md
│ ├── ch07-scope-of-architectural-characteristics.md
│ ├── ch08-component-based-thinking.md
│ ├── ch09-architecture-styles-foundations.md
│ ├── ch10-layered-architecture.md
│ ├── ch11-modular-monolith-architecture.md
│ ├── ch12-pipeline-architecture.md
│ ├── ch13-microkernel-architecture.md
│ ├── ch14-service-based-architecture.md
│ ├── ch15-event-driven-architecture.md
│ ├── ch16-space-based-architecture.md
│ ├── ch17-orchestration-driven-soa.md
│ ├── ch18-microservices-architecture.md
│ ├── ch19-choosing-architecture-style.md
│ ├── ch20-architectural-patterns.md
│ ├── ch21-architectural-decisions.md
│ ├── ch22-analyzing-architecture-risk.md
│ ├── ch23-diagramming-architecture.md
│ ├── ch24-making-teams-effective.md
│ ├── ch25-negotiation-and-leadership.md
│ ├── ch26-architectural-intersections.md
│ └── ch27-laws-revisited.md
│
└── flashcards/ # Obsidian spaced repetition flashcards
├── ch01-flashcards.md
├── ch02-flashcards.md
├── ch03-flashcards.md
├── ch04-flashcards.md
├── ch05-flashcards.md
├── ch06-flashcards.md
├── ch07-flashcards.md
├── ch08-flashcards.md
├── ch09-flashcards.md
├── ch10-flashcards.md
├── ch11-flashcards.md
├── ch12-flashcards.md
├── ch13-flashcards.md
├── ch14-flashcards.md
├── ch15-flashcards.md
├── ch16-flashcards.md
├── ch17-flashcards.md
├── ch18-flashcards.md
├── ch19-flashcards.md
├── ch20-flashcards.md
├── ch21-flashcards.md
├── ch22-flashcards.md
├── ch23-flashcards.md
├── ch24-flashcards.md
├── ch25-flashcards.md
├── ch26-flashcards.md
└── ch27-flashcards.md
How to Use These Notes
-
Read the chapter notes file (~30-60 min per chapter)
- Foundation chapters (Parts I & III): focus on concepts, trade-off tables, and antipatterns
- Architecture style chapters (Part II): study the topology diagram + characteristics ratings table
- Use the “When to Use / When Not to Use” sections as your quick reference for style selection
-
Review the flashcard file (~15-20 min per chapter)
- Add to Obsidian with Spaced Repetition plugin
- Priority: HIGH chapters first (see flashcard footers)
-
Practice architecture style selection
- Use Ch19 (Choosing Architecture Style) as your master decision guide
- Practice the Silicon Sandwiches and Going Going Gone katas
Study Path Recommendations
1-Week Sprint (Interview imminent)
- Day 1: Ch1 (Introduction), Ch2 (Architectural Thinking) — what architects do
- Day 2: Ch4 (Characteristics Defined), Ch5 (Identifying Characteristics) — what to design for
- Day 3: Ch9 (Style Foundations), Ch19 (Choosing Styles) — style selection mental model
- Day 4: Ch10, Ch11, Ch14, Ch18 (Layered, Modular Monolith, Service-Based, Microservices)
- Day 5: Ch15 (Event-Driven), Ch16 (Space-Based) — advanced distributed styles
- Day 6-7: Ch21 (Decisions/ADRs), Ch3 (Modularity), flashcard review
1-Month Plan (Solid preparation)
- Week 1: Ch1-8 (Foundations — Part I)
- Week 2: Ch9-14 (Architecture Styles — monolithic spectrum)
- Week 3: Ch15-20 (Architecture Styles — distributed spectrum + patterns)
- Week 4: Ch21-27 (Techniques & Soft Skills — Part III) + full flashcard review
3-Month Deep Study (Long-term mastery)
- Month 1: Part I (Ch1-8) — deep study of all foundation concepts
- Month 2: Part II (Ch9-20) — implement small examples of each style
- Month 3: Part III (Ch21-27) + architect katas from the appendix
Key Themes
- Everything is a trade-off: The First Law of Software Architecture — there are no right or wrong answers, only trade-offs
- Why > How: The Second Law — documenting why a decision was made matters more than how it was implemented
- Architecture characteristics drive style selection: The “-ilities” (scalability, agility, testability, etc.) are the primary selection criteria for architectural styles
- Coupling is the enemy: Both at the component level (connascence) and the service level (operational/temporal coupling)
- Fitness functions enforce architecture: Governance through automated tests, metrics, and architecture fitness functions, not just documentation
Comparison with Other Books in This Workspace
| Aspect | FSA (Richards & Ford) | DDIA (Kleppmann) | SDI (Alex Xu) |
|---|---|---|---|
| Focus | Architecture styles & architect role | Data systems & distributed theory | System design interview prep |
| Style | Practical engineering with theory | Academic, comprehensive | Conversational, example-driven |
| Depth per topic | Deep on styles, practical on skills | Very deep (distributed systems theory) | Focused (10-20 pages/topic) |
| Primary use | Becoming an architect, style selection | Understanding data fundamentals | Passing interviews |
| Best for | Moving from dev to architect role | Long-term distributed systems mastery | Short-term interview prep |
Recommendation: Read FSA for architecture style selection and architect-role fundamentals; DDIA for deep distributed systems and data theory; SDI for interview-specific practice. These three books complement each other well.
Last Updated: 2026-05-29