Clean architecture: a craftsman's guide to software structure and design
Author
Publisher
Varies, see individual formats and editions
Publication Date
Varies, see individual formats and editions
Language
English
Table of Contents
From the Book
Part I. Introduction : What is design and architecture? : The goal? ; Case study --
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 : Paradigm overview : Structured programming ; Object-oriented programming ; Functional programming ; food for thought --
Structured programming : Proof ; A harmful proclamation ; Functional decomposition ; No formal proofs ; Science to the rescue ; Tests --
Object-oriented programming : Encapsulation? ; Inheritance? ; Polymorphism? --
Functional programming : Squares of integers ; Immutability and architecture ; Segregation of mutability ; Event sourcing --
Part III. Design principles : SRP: the single responsibility principle : Symptom 1: Accidental duplication ; Symptom 2: Merges ; Solutions --
OCP: the open-closed principle : A thought experiment ; Information hiding --
LSP: the Liskov substitution principle : Guiding the use of inheritance ; The square/rectangle problem ; LSP and architecture ; Example LSP violation --
ISP: the interface segregation principle : ISP and language ; ISP and architecture --
DIP: the dependency inversion principle : Stable abstractions ; Factories ; Concrete components --
Part IV. Component principles : Component cohesion : The reuse/release equivalence principle ; The common closure principle ; The common reuse principle ; The tension diagram for component cohesion --
Component coupling : The acyclic dependencies principle : Top-down design ; The stable dependencies principle ; The stable abstraction principle --
Part V. Architecture : What is architecture : Development ; Deployment ; Operation ; Maintenance ; dt Keeping options open ; Device independence ; Junk mail ; Physical addressing --
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) --
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 --
Boundary anatomy : Boundary crossing ; The dreaded monolith ; Deployment components ; Threads ; Local processes ; Services --
Policy and level --
Business rules : Entities ; Use cases ; Request and response models --
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 architecture --
The clean architecture : The dependency rule ; A typical scenario --
Presenters and humble objects : The humble object pattern ; Presenters and views ; Testing and architecture ; Database gateways ; Data mappers ; Service listeners --
Partial boundaries : Skip the last step ; One-dimensional boundaries --
Layers and boundaries : Hunt the wumpus ; Clean architecture? ; Crossing the streams ; Splitting the streams --
The main component : The ultimate detail --
Services: great and small : Service architecture? ; Service benefits? ; The kitty problem ; Objects to the rescue ; Component-based services ; Cross-cutting concerns --
The test boundary : Test as system components ; Design for testability ; The testing API --
Clean embedded architecture : App-titude test ; The target-hardware bottleneck --
Part VI. Details : 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 --
The Web is a detail : The endless pendulum ; The upshot --
Frameworks are details : Framework authors ; Asymmetric marriage ; The risks ; The solution ; I now pronounce you ... --
Case study: video sales : The product ; Use case analysis ; Component architecture ; Dependency management --
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 / Jason Gorman --
Part VII. Appendix : Architecture archaeology.
Description
Loading Description...
Excerpt
Loading Excerpt...
Author Notes
Loading Author Notes...
Staff View
Loading Staff View.