Softwarearchitektur
Softwaredesign
Clean Architecture: A Craftsman's Guide to Software Structure and Design
Robert C. Martin, 2017
Inhaltsverzeichnis des Buches
- Foreword
- Preface
- Acknowledgments
- About the Author
- PART I Introduction
- Chapter 1 What Is Design and Architecture?
- The Goal?
- Case Study
- Conclusion
- Chapter 2 A Tale of Two Values
- Behavior
- Architecture
- The Greater Value
- Eisenhower’s Matrix
- Fight for the Architecture
- PART II Starting with the Bricks: Programming Paradigms
- Chapter 3 Paradigm Overview
- Structured Programming
- Object-Oriented Programming
- Functional Programming
- Food for Thought
- Conclusion
- Chapter 4 Structured Programming
- Proof
- A Harmful Proclamation
- Functional Decomposition
- No Formal Proofs
- Science to the Rescue
- Tests
- Conclusion
- Chapter 5 Object-Oriented Programming
- Encapsulation?
- Inheritance?
- Polymorphism?
- Conclusion
- Chapter 6 Functional Programming
- Squares of Integers
- Immutability and Architecture
- Segregation of Mutability
- Event Sourcing
- Conclusion
- PART III Design Principles
- Chapter 7 SRP: The Single Responsibility Principle
- Symptom 1: Accidental Duplication
- Symptom 2: Merges
- Solutions
- Conclusion
- Chapter 8 OCP: The Open-Closed Principle
- A Thought Experiment
- Directional Control
- Information Hiding
- Conclusion
- Chapter 9 LSP: The Liskov Substitution Principle
- Guiding the Use of Inheritance
- The Square/Rectangle Problem
- LSP and Architecture
- Example LSP Violation
- Conclusion
- Chapter 10 ISP: The Interface Segregation Principle
- ISP and Language
- ISP and Architecture
- Conclusion
- Chapter 11 DIP: The Dependency Inversion Principle
- Stable Abstractions
- Factories
- Concrete Components
- Conclusion
- PART IV Component Principles
- Chapter 12 Components
- A Brief History of Components
- Relocatability
- Linkers
- Conclusion
- Chapter 13 Component Cohesion
- The Reuse/Release Equivalence Principle
- The Common Closure Principle
- The Common Reuse Principle
- The Tension Diagram for Component Cohesion
- Conclusion
- Chapter 14 Component Coupling
- The Acyclic Dependencies Principle
- Top-Down Design
- The Stable Dependencies Principle
- The Stable Abstractions Principle
- Conclusion
- PART V Architecture
- Chapter 15 What Is Architecture?
- Development
- Deployment
- Operation
- Maintenance
- Keeping Options Open
- Device Independence
- Junk Mail
- Physical Addressing
- Conclusion
- Chapter 16 Independence
- Use Cases
- Operation
- Development
- Deployment
- Leaving Options Open
- Decoupling Layers
- Decoupling Use Cases
- Decoupling Mode
- Independent Develop-ability
- Independent Deployability
- Duplication
- Decoupling Modes (Again)
- Conclusion
- Chapter 17 Boundaries: Drawing Lines
- A Couple of Sad Stories
- FitNesse
- Which Lines Do You Draw, and When Do You Draw Them?
- What About Input and Output?
- Plugin Architecture
- The Plugin Argument
- Conclusion
- Chapter 18 Boundary Anatomy
- Boundary Crossing
- The Dreaded Monolith
- Deployment Components
- Threads
- Local Processes
- Services
- Conclusion
- Chapter 19 Policy and Level
- Level
- Conclusion
- Chapter 20 Business Rules
- Entities
- Use Cases
- Request and Response Models
- Conclusion
- Chapter 21 Screaming Architecture
- The Theme of an Architecture
- The Purpose of an Architecture
- But What About the Web?
- Frameworks Are Tools, Not Ways of Life
- Testable Architectures
- Conclusion
- Chapter 22 The Clean Architecture
- The Dependency Rule
- A Typical Scenario
- Conclusion
- Chapter 23 Presenters and Humble Objects
- The Humble Object Pattern
- Presenters and Views
- Testing and Architecture
- Database Gateways
- Data Mappers
- Service Listeners
- Conclusion
- Chapter 24 Partial Boundaries
- Skip the Last Step
- One-Dimensional Boundaries
- Facades
- Conclusion
- Chapter 25 Layers and Boundaries
- Hunt the Wumpus
- Clean Architecture?
- Crossing the Streams
- Splitting the Streams
- Conclusion
- Chapter 26 The Main Component
- The Ultimate Detail
- Conclusion
- Chapter 27 Services: Great and Small
- Service Architecture?
- Service Benefits?
- The Kitty Problem
- Objects to the Rescue
- Component-Based Services
- Cross-Cutting Concerns
- Conclusion
- Chapter 28 The Test Boundary
- Tests as System Components
- Design for Testability
- The Testing API
- Conclusion
- Chapter 29 Clean Embedded Architecture
- App-titude Test
- The Target-Hardware Bottleneck
- Conclusion
- PART VI Details
- Chapter 30 The Database Is a Detail
- Relational Databases
- Why Are Database Systems So Prevalent?
- What If There Were No Disk?
- Details
- But What about Performance?
- Anecdote
- Conclusion
- Chapter 31 The Web Is a Detail
- The Endless Pendulum
- The Upshot
- Conclusion
- Chapter 32 Frameworks Are Details
- Framework Authors
- Asymmetric Marriage
- The Risks
- The Solution
- I Now Pronounce You …
- Conclusion
- Chapter 33 Case Study: Video Sales
- The Product
- Use Case Analysis
- Component Architecture
- Dependency Management
- Conclusion
- Chapter 34 The Missing Chapter
- Package by Layer
- Package by Feature
- Ports and Adapters
- Package by Component
- The Devil Is in the Implementation Details
- Organization versus Encapsulation
- Other Decoupling Modes
- Conclusion: The Missing Advice
- Afterword
- PART VII Appendix
- Appendix A Architecture Archaeology
- Index