Table of Contents
References
- Book "Fundamentals of Software Architecture" Mark Richards, Neal Ford
- 《软件架构基础》(影印版)
- Preface: Invalidating Axioms ( 公理 )
- Defining Software Architecture
- Expectations of an Architect
- Continually Analyze the Archituecture
- Keep Current with Latest Trends
- Ensure Compliance ( 服从 ) with Decisions
- Diverse ( 不同的 ) Exposure ( 显露? ) and Experience
- Have Bussines Domain Knowledge
- Understand and Navigate ( 操纵 ) Politics
- Intersection ( 交叉点 ) of Architecture and …
- Engineering Practices
- Operations / DevOps
- Process
- Data
- Laws of Software Architecutre
- Architecture Versus Design
- Technical Breadth
- Analyze Trade-Offs
- Understanding Business Drivers
- Balancing Architecutre and Hands-On Coding
- 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
- Architectural Characteristics ( Partially ) Listed
- Operational Architecture Characteristics
- Structural Architecture Characteristics
- Cross-Cutting Architecture Characteristics
- Trade-Offs and Least Worst Architecture
- Extracting Architecture Characteristics from Domain Concerns
- Extracting Architecture Characteristics from Requirements
- Case Study: Silicon Sandwiches
- Explicit Characteristics
- Implicit Characteristics
- Measuring Architecture Characteristics
- Operational Measures
- Structural Measures
- Process Measures
- Governance ( 管理 ) and Fitness ( 适当 ) Function
- Governing Architecture Characteristics
- Fitness Functions
- Coupling and Connascence
- Architectural Quanta ( 量 ) and Granularity ( 粒度 )
- Case Study: Going, Going, Gone
- Component Scope
- Architect Role ( 职责 )
- Architecture Partitioning ( 分割 )
- Case Study: Silicon Sanwiches: Partitioning
- Developer Role
- Component Identification Flow
- Identifying Initial Components
- Assign Requirements to Components
- Analyze Roles and Responsibilities
- Analyze Architecture Characteristics
- Restructure Components
- Component Granularity
- Component Design
- Discovering Components
- Case Study: Going, Going, Gone: Discovering Components
- Architecture Quantum Redux: Choosing Between Monolithic Versus Distributed Architectures
- Fundamental Patterns
- Big Ball of Mud
- Unitary ( 统一的 ) Architecture
- Client / Server
- Monolithic Versus Distributed Architectures
- Fallacy ( 谬误 ) #1: The Network Is Reliable
- Fallacy #2: Latency Is Zero
- Fallacy #3: Bandwidth Is Infinite
- Fallacy #4: The Network Is Secure
- Fallacy #5: The Topology Never Changes
- Fallacy #6: There Is Only One Administrator
- Fallacy #7: Transport Cost Is Zero
- Fallacy #8: The Network Is Homogeneous
- Other Distributed Considerations
- Topology
- Layers of Isolation
- Adding Layers
- Other Considerations
- Why Use This Architecture Style
- Architecture Characteristics Ratings
- Topology
- Pipes
- Filters
- Example
- Architecture Characteristics Ratings
- Topology
- Core System
- Plug-In Components
- Registry
- Contracts
- Examples of Use Cases
- Architecture Characteristics Ratings
- Topology
- Topology Variants
- Service Design and Granularity
- Database Partitioning
- Example Architecture
- Architecture Characteristics Ratings
- When to Use This Architecture Style
- Topology
- Broker Topology
- Mediator Topology
- Asynchronous Capabilities
- Error Handling
- Prevent Data Loss
- Broadcast Capabilities
- Request-Reply
- Choosing Between Request-Reply and Event-Based
- Hybrid Event-Driven Architectures
- Architecture Characteristics Ratings
- General Topology
- Processing Unit
- Virtualized Middleware
- Data Pumps ( 泵 )
- Data Writers
- Data Readers
- Data Collisions
- Cloud Versus On-Premises ( 内部部署 ) Implementations
- Replicated Versus Distributed Caching
- Near-Cahce Considerations
- Implementation Examples
- Correct Ticketing System
- Online Auction System
- Architecture Characteristics Ratings
- History and Philosophy
- Topology
- Taxonomy
- Business Services
- Enterprise Services
- Application Services
- Infrastructure Services
- Orchestration Services
- Message Flow
- Reuse … and Coupling
- Architecture Characteristics Ratings
- History
- Topology
- Distributed
- Bounded Context
- Granularity
- Data Isolation
- API Layer
- Operational Reuse
- Frontends ( 前端的 )
- Communication
- Choreography ( 舞蹈舞蹈设计 ) and Orchestration
- Transactions and Sages ( 圣人, 智者 )
- Architecture Characteristics Ratings
- Additional References
- Shifting "Fashion" in Architecture
- Decision Criteria ( 标准, 条件 )
- Monolith Case Study: Silicon Sandwiches
- Modular Monolith
- Microkernel
- Distributed Case Study: Going, Going, Gone
- Architecture Decision Anti-Patterns
- Governing Your Assets Anti-Pattern
- Groundhog Day ( 土拨鼠日 ) Anti-Pattern
- Email-Driven Architecture Anti-Pattern
- Architecturally Significant
- Architecture Decision Records
- Basic Structure
- Storing ADRs
- ADRs as Documentation
- Using ADRs for Standards
- Example
- Risk Matrix
- Risk Assessments ( 估价 )
- Risk Storming
- Identification
- Consensus
- Agile Story Risk Analysis
- Risk Storming Examples
- Availability
- Elasticity ( 弹性 )
- Security
- Diagramming
- Tools
- Diagramming Standards: UML, C4, and ArchiMate
- Diagram Guidelines
- Presenting
- Manipulating Time
- Incremental Builds
- Infodecks Versus Presentations
- Slides Are Half of the Story
- Invisibility
- Team Boundaries
- Architect Personalities
- Control Freak ( 怪物; 反常的事 )
- Armchair ( 扶手椅 ) Architect
- Effective Architect
- How Much Control?
- Team Warning Signs
- Leveraging Checklists
- Developer Code Completion Checklist
- Unit and Functional Testing Checklist
- Software Release Checklist
- Providing Guidance
- Summary
- Negotiation and Facilitation ( 助长, 简易化 )
- Negotiating with Business Stakeholders
- Negotiating with Other Architects
- Negotiating with Developers
- The Software Architect as a Leader
- The 4 C's of Architecture
- Be Pragmatic, Yet Visionary ( 有眼光的, 有远见的 )
- Leading Teams By Example
- Integrating with the Development Team
- Summary
- The 20-Minute Rule
- Developing a Personal Radar
- The ThoughtWorks Technology Radar
- Open Source Visualization Bits
- Using Social Media
- Parting Words of Advice