Skip to content

Latest commit

 

History

History
317 lines (257 loc) · 8.39 KB

fundamentals-of-software-architecture-toc.md

File metadata and controls

317 lines (257 loc) · 8.39 KB

Fundamentals of Software Architecture ( TOC )

Table of Contents


References

  • Book "Fundamentals of Software Architecture" Mark Richards, Neal Ford
    • 《软件架构基础》(影印版)

Introduction

  • Preface: Invalidating Axioms ( 公理 )

1. Introduction

  • 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

Part 1. Foundations

2. Architectural ( 建筑学上的 ) Thinking

  • Architecture Versus Design
  • Technical Breadth
  • Analyze Trade-Offs
  • Understanding Business Drivers
  • Balancing Architecutre 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. Indentifying 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
    • Structural Measures
    • Process Measures
  • Governance ( 管理 ) and Fitness ( 适当 ) Function
    • Governing Architecture Characteristics
    • Fitness Functions

7. Scope of Architecture Characteristics

  • Coupling and Connascence
  • Architectural Quanta ( 量 ) and Granularity ( 粒度 )
    • Case Study: Going, Going, Gone

8. Component-Based Thinking

  • 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

Part 2. Architure Styles

9. Foundations

  • 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

10. Layered Architecture Style

  • Topology
  • Layers of Isolation
  • Adding Layers
  • Other Considerations
  • Why Use This Architecture Style
  • Architecture Characteristics Ratings

11. Pipeline Architecture Style

  • Topology
    • Pipes
    • Filters
  • Example
  • Architecture Characteristics Ratings

12. Microkernel Architecture Style

  • Topology
    • Core System
    • Plug-In Components
  • Registry
  • Contracts
  • Examples of Use Cases
  • Architecture Characteristics Ratings

13. Service-Based Architecture Style

  • Topology
  • Topology Variants
  • Service Design and Granularity
  • Database Partitioning
  • Example Architecture
  • Architecture Characteristics Ratings
  • When to Use This Architecture Style

14. Event-Driven 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

15. Space-Based Architecture Style

  • 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

16. Orchestration-Driven Service-Oriented Architecture

  • History and Philosophy
  • Topology
  • Taxonomy
    • Business Services
    • Enterprise Services
    • Application Services
    • Infrastructure Services
    • Orchestration Services
    • Message Flow
  • Reuse … and Coupling
  • Architecture Characteristics Ratings

17. Microservices Architecture

  • 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

18. Choosing the Appropriate Architecture Style

  • Shifting "Fashion" in Architecture
  • Decision Criteria ( 标准, 条件 )
  • Monolith Case Study: Silicon Sandwiches
    • Modular Monolith
    • Microkernel
  • Distributed Case Study: Going, Going, Gone

Part 3. Techniques and Soft Skills

19. Architecture Decisions

  • 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

20. Analyzing Architecture Risk

  • Risk Matrix
  • Risk Assessments ( 估价 )
  • Risk Storming
    • Identification
    • Consensus
  • Agile Story Risk Analysis
  • Risk Storming Examples
    • Availability
    • Elasticity ( 弹性 )
    • Security

21. Diagramming and Presenting Architecture

  • 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

22. Making Teams Effective

  • 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

23. Negotiation and Leadership Skills

  • 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

24. Developing a Career Path

  • The 20-Minute Rule
  • Developing a Personal Radar
    • The ThoughtWorks Technology Radar
    • Open Source Visualization Bits
  • Using Social Media
  • Parting Words of Advice

Appendix. Self-Assessment Questions

Index