1Preface: Invalidating AxiomsConventions Used in This BookUsing Code ExamplesO’Reilly Online LearningHow to Contact UsAcknowledgmentsAcknowledgments from Mark RichardsAcknowledgments from Neal Ford1. IntroductionDefining Software ArchitectureExpectations of an ArchitectMake Architecture DecisionsContinually Analyze the ArchitectureKeep Current with Latest TrendsEnsure Compliance with DecisionsDiverse Exposure and ExperienceHave Business Domain KnowledgePossess Interpersonal SkillsUnderstand and Navigate PoliticsIntersection of Architecture and…Engineering PracticesOperations/DevOpsProcessDataLaws of Software ArchitectureI. Foundations2. Architectural ThinkingArchitecture Versus DesignTechnical BreadthAnalyzing Trade-OffsUnderstanding Business DriversBalancing Architecture and Hands-On Coding3. ModularityDefinitionMeasuring ModularityCohesionCouplingAbstractness, Instability, and Distance from the Main SequenceDistance from the Main SequenceConnascenceUnifying Coupling and Connascence MetricsFrom Modules to Components4. Architecture Characteristics DefinedArchitectural Characteristics (Partially) ListedOperational Architecture CharacteristicsStructural Architecture Characteristics