Learning Resources
This module is populated from the local chunked books in library/raw/semester-07-architecture-ddd/books plus a small external ADR/review community. Use this page as a source map, not as an instruction to read everything.
Source Stack
| Book | Role | How to use it in this module |
|---|---|---|
| Fundamentals of Software Architecture (Richards, Ford) | Primary teaching source | Default escalation for ADR mechanics, fitness functions, review discipline, and team governance |
| Just Enough Software Architecture (Fairbanks) | Selective support for risk-driven review | Use for the risk-driven model, analyzing models, and communicating architecture under constraint |
| Clean Architecture (Martin) | Peripheral | Background framing only; rarely needed in this module |
| Learning Domain-Driven Design (Khononov) | Peripheral | Context for Cluster 1 (what is architectural vs design) when bounded contexts come up |
| API Design Patterns (Geewax) | Peripheral | Useful examples of one-way-door decisions for public APIs |
Resource Map by Cluster
Cluster 1: Architecture Decisions as Artifacts
| Need | Best local chunk | Why |
|---|---|---|
| what counts as architecture | Fundamentals: Defining software architecture | Primary framing of scope |
| architecture vs design decision | Fundamentals: Architecture decisions | Directly addresses the boundary |
| rational choice | Just Enough: Make rational architecture choices | Complements the blast-radius lens |
| reversibility under risk | Just Enough: Risk-driven model | Two-way / one-way door framing |
| why record decisions | Fundamentals: Architecture decision records | Purpose and structure |
Cluster 2: ADR Mechanics
| Need | Best local chunk | Why |
|---|---|---|
| ADR basic structure | Fundamentals: Basic structure | Three-section template |
| ADR templates in the wild | ADR community index | Largest real-world ADR corpus |
| MADR template | MADR home | Canonical MADR spec |
| consequences with tradeoffs | Fundamentals: Analyzing trade-offs | How to write real consequences |
| communication discipline | Just Enough: Team communication part 1 | How decisions travel |
Cluster 3: Architecture Review Methods
| Need | Best local chunk | Why |
|---|---|---|
| ATAM-style analysis | Just Enough: Analyzing architecture models part 1 | Approach to structured evaluation |
| quality attribute scenarios | Just Enough: Quality attribute scenarios | Core ATAM scenario shape |
| risk-driven allocation | Just Enough: Risk-driven model | Proportional review |
| technique selection | Just Enough: Guidance on choosing techniques | Pick the right review tool |
| lightweight peer review | Fundamentals: Making teams effective | How peer review actually works |
Cluster 4: Running Architecture Reviews in Practice
| Need | Best local chunk | Why |
|---|---|---|
| preparing a review | Fundamentals: Leveraging checklists | Checklist-style review packages |
| facilitation | Fundamentals: Negotiation and facilitation | How to run the room |
| when to disagree | Fundamentals: Negotiating with other architects | Sustained disagreement productively |
| architect as leader | Fundamentals: The software architect as a leader | Review is a leadership act |
| capturing risks | Fundamentals: Risk matrix | The format for captured risks |
| risk storming technique | Fundamentals: Risk storming | A workshop-style risk surfacing |
Cluster 5: Architecture Decisions Over Time
| Need | Best local chunk | Why |
|---|---|---|
| fitness functions | Fundamentals: Fitness functions | Primary treatment |
| measuring architecture | Fundamentals: Measuring architecture characteristics | Metrics and thresholds |
| drift / mismatch | Just Enough: Architectural mismatch | Where decisions diverge from reality |
| systemic challenges | Just Enough: Challenges part 1 | Recurring architecture difficulties |
| team sustainability | Fundamentals: Integrating with the development team | Architecture as a team practice |
| career-long craft | Fundamentals: Developing a career path | Long-horizon view |
Concept-to-Source Map (Primary Concepts Only)
| Primary concept | Best source if stuck | Why this source |
|---|---|---|
| Architecture vs design decision | Fundamentals: Architecture decisions | Directly on the boundary |
| Why decisions need to be recorded | Fundamentals: ADRs | Primary rationale |
| Reversibility: one-way / two-way doors | Just Enough: Risk-driven model | Equivalent framing in risk language |
| ADR templates | Fundamentals: Basic structure | Template scaffolding |
| Context, decision, consequences | Fundamentals: Analyzing trade-offs | How to write real consequences |
| ATAM sketch | Just Enough: Analyzing architecture models part 1 | ATAM-style evaluation |
| Risk-driven review | Just Enough: Risk-driven model | Primary source |
| Lightweight peer review | Fundamentals: Making teams effective | Review culture |
| Preparing a review | Fundamentals: Leveraging checklists | Package and agenda |
| Facilitation | Fundamentals: Negotiation and facilitation | Curiosity vs judgment |
| Fitness functions | Fundamentals: Fitness functions | Primary treatment |
| Architectural drift | Just Enough: Architectural mismatch | Drift framing |
External Resources (Validated)
These URLs were validated; use them when you want a second exposition or a community reference.
- ADR community index (Joel Parker Henderson) - the canonical ADR sample corpus and template collection
- MADR: Markdown Any Decision Records - the MADR template home
- adr.github.io - ADR templates index
- MADR GitHub repository - source of the MADR template
- When Should I Write an Architecture Decision Record? (Spotify Engineering) - Spotify's guidance on ADR triggers
- Why Write ADRs (GitHub Blog) - GitHub's team perspective on ADR adoption
- SEI: The Architecture Tradeoff Analysis Method - SEI's ATAM library entry
- SEI CMU/SEI-98-TR-008: ATAM original technical report (PDF) - the 1998 foundational ATAM paper by Kazman, Klein et al.
- Fitness function-driven development (Thoughtworks) - fitness functions in practice
- Martin Fowler: Foreword to Building Evolutionary Architectures - concise intro to fitness functions and evolutionary architecture
- ArchUnit - canonical library for structural fitness functions on the JVM
- dependency-cruiser - dependency fitness functions for JS/TS
Use Rules
- If you are unsure whether something is an architectural decision, go to Fundamentals (Cluster 1 chunks) first.
- If you need risk calibration, go to Just Enough (Cluster 3 chunks).
- For fitness function mechanics, start with Fundamentals chapter on fitness functions; supplement with Fowler's foreword.
- For ADR templates, use the GitHub community index and MADR home directly - the book coverage is minimal.
- Open one chunk per concept gap; do not wander.
- If rereading does not fix the problem, stop and write a short critique of the last ADR you produced; most gaps surface there.