Clean architecture : a craftsman's guide to software structure and design / Robert C. Martin.Material type: TextSeries: Martin, Robert C. Robert C. Martin series ; | Robert C. Martin seriesPublisher: London, England : Prentice Hall, 2018Description: xxv, 404 pages : illustrations ; 24 cmContent type:
- 004.22 MA.C 2018 23
- QA76.76.D47 M36515 2018
|Item type||Current library||Collection||Call number||Status||Date due||Barcode|
|Books||The Knowledge Hub Library||Engineering||004.22 / MA.C 2018 (Browse shelf(Opens below))||Available||190222|
Includes bibliographical references and index.
\a 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 ; 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.
Building upon the success of best-sellers The Clean Coder and Clean Code, legendary software craftsman Robert C. "Uncle Bob" Martin shows how to bring greater professionalism and discipline to application architecture and design. As with his other books, Martin's Clean Architecture doesn't merely present multiple choices and options, and say "use your best judgment": it tells you what choices to make, and why those choices are critical to your success. Martin offers direct, no-nonsense answers to key architecture and design questions like: What are the best high level structures for different kinds of applications, including web, database, thick-client, console, and embedded apps? What are the core principles of software architecture? What is the role of the architect, and what is he/she really trying to achieve? What are the core principles of software design? How do designs and architectures go wrong, and what can you do about it? What are the disciplines and practices of professional architects and designers? Clean Architecture is essential reading for every software architect, systems analyst, system designer, and software manager -- and for any programmer who aspires to these roles or is impacted by their work.