Software Architecture - Map of Content

This domain explores the principles, patterns, and practices of software architecture. Architecture sits at the intersection of technical design, organizational dynamics, and strategic decision-making. Unlike coding or detailed design, architecture deals with the structures that shape how systems evolve, scale, and serve their purposes over time.

The content here builds from foundational concepts (what is architecture, what makes it complex) through practical frameworks (modularity, characteristics, styles) to the human elements (team dynamics, decision-making, career development). This organization reflects how architectural thinking develops: understanding the problem space, learning the solution patterns, and developing the judgment to apply them wisely.

Core Reference Works

Start here for comprehensive coverage of architecture fundamentals:

Primary Literature:

Foundational Structure Notes:


🏛️ Architecture Fundamentals

What Is Architecture?

These notes establish the foundation for architectural thinking:

Laws and Principles

Fundamental truths that guide architectural decisions:

Richards & Ford’s three laws:

Classical and other laws:


🧩 Modularity & Component Design

Modularity is the organizing principle that makes complex systems manageable. These notes explore how to identify, define, and compose architectural components:

Core Concepts:

Design Principles:

Quality Metrics:

Anti-Patterns:


⚙️ Architecture Characteristics

Architecture characteristics (also called “quality attributes” or “-ilities”) define what makes a system successful beyond its functional requirements. Understanding, measuring, and designing for these characteristics is central to architecture work:

Foundational Concepts:

Types of Characteristics:

Measuring Characteristics:

Architecture Scope:

Core Quality Attributes:

Governance:


🏗️ Architecture Styles & Patterns

Architecture styles provide proven templates for solving recurring structural challenges. Each style makes different trade-offs around characteristics like scalability, simplicity, and fault tolerance:

Monolithic Styles:

Distributed Styles:

Comparison & Selection:


🔧 Distributed Architecture Patterns

When systems are distributed across services, new patterns and challenges emerge. These notes explore decomposition, communication, data management, and workflow coordination in distributed systems:

Decomposition & Modularity

Drivers and Forces:

Boundaries:

Communication Patterns

Communication Types:

Coordination Approaches:

  • Orchestration - Workflow coordination with central orchestrator
  • Choreography - Workflow coordination without central mediator

Workflow State Management:

Code Reuse Patterns

Different strategies for sharing code across services:

Data Management Patterns

Data Forces and Ownership:

Data Access Patterns:

Transactional Patterns:

Saga Patterns

Managing distributed transactions with compensating actions:

Foundation:

  • Saga-Pattern - Managing distributed transactions with compensations

Saga Pattern Variations:


🌐 Distributed Systems

Distributed systems introduce fundamental challenges that don’t exist in monolithic architectures. These notes explore the inherent difficulties and their implications:

Core Understanding:


💾 Data Architecture

Database Types

Different database paradigms for different use cases:

Traditional SQL:

NoSQL Databases:

Analytical Data Architecture

Evolution of analytical data patterns:

Centralized Approaches:

  • Data-Warehouse - Centralized analytical data with ETL transformation
  • Data-Lake - Centralized raw analytical data repository

Decentralized Approach:


🎯 Architectural Decision-Making

Architecture is fundamentally about making decisions under uncertainty. These notes cover frameworks, techniques, and anti-patterns for architectural decision-making:

Core Frameworks:

Risk Management:

Trade-offs & Context:

Anti-Patterns:

Governance:


📐 Documentation & Communication

Architecture must be communicated effectively to diverse stakeholders. These notes cover visualization, documentation, and presentation techniques:

Diagramming Standards:

Frameworks:

Communication:


👤 The Architect Role

Architecture is as much about people as it is about technology. These notes explore the human side of architecture:

Role Definition & Skills

What Architects Do:

Breadth vs Depth:

Staying Current:

Leadership & Collaboration

Working with Teams:

Negotiation & Facilitation:

Knowledge Management:

Architect Anti-Patterns

What not to do:

Decision-Making Anti-Patterns:

Personality Anti-Patterns:


🧠 Complexity & Essential Challenges

Software is inherently complex. These notes explore what makes it complex and what we can do about it:

Understanding Complexity:

Silver Bullets:


📚 Synthesis & Structure Notes

These structure notes combine multiple atomic concepts into complete frameworks and arguments:

Distributed Systems Frameworks

Data Architecture Evolution

Knowledge & Learning

Performance & Reliability Governance

Other Cross-Cutting Themes

Laws and principles:


For beginners: Start with Defining Software Architecture, then explore Expectations of an Architect to understand the role. From there, dive into Modularity and the Architecture Characteristics section.

For practitioners: Focus on Architecture Styles, Decision-Making, and the Architect Role sections. The anti-patterns provide valuable lessons from common failures.

For leaders: Emphasize the Architect Role section, particularly Leadership & Collaboration, and the Knowledge Management notes.

For deep dives: Each section builds from atomic concepts (single ideas) to structure notes (synthesized frameworks). Follow the links within each topic area to explore connections.


Sources

This is a navigation/organization note. For sources, see individual linked notes. The domain is primarily built from:

  • Richards, Mark and Neal Ford (2020). Fundamentals of Software Architecture: An Engineering Approach. O’Reilly Media. ISBN: 978-1-492-04345-4.
  • Ford, Neal, Mark Richards, Pramod Sadalage, and Zhamak Dehghani (2022). Software Architecture: The Hard Parts - Modern Trade-Off Analyses for Distributed Architectures. O’Reilly Media. ISBN: 978-1-492-08689-5.
  • Brooks, Frederick P., Jr. (1986). “No Silver Bullet – Essence and Accident in Software Engineering.”

For complete citations, see the Literature notes and individual atomic notes.

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.