Preface: Invalidating Axioms
1. Introduction
Defining Software Architecture
Expectations of an Architect
Make Architecture Decisions
Continually Analyze the Architecture
Keep Current with Latest Trends
Ensure Compliance with Decisions
Diverse Exposure and Experience
Have Business Domain Knowledge
Possess Interpersonal Skills
Understand and Navigate Politics
Intersection of Architecture and...
Engineering Practices
Operations/DevOps
Process
Data
Laws of Software Architecture
Part Ⅰ. Foundations
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