Clean architecture: a craftsman's guide to software structure and design
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Boston
Prentice Hall
[2018]
|
Schriftenreihe: | Robert C. Martin series
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis Klappentext |
Beschreibung: | xxv, 404 Seiten Illustrationen |
ISBN: | 9780134494166 0134494164 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV044536488 | ||
003 | DE-604 | ||
005 | 20220516 | ||
007 | t | ||
008 | 171013s2018 a||| |||| 00||| eng d | ||
020 | |a 9780134494166 |c paperback : GBP 21.99 |9 978-0-13-449416-6 | ||
020 | |a 0134494164 |9 0-13-449416-4 | ||
024 | 3 | |a 9780134494166 | |
035 | |a (OCoLC)1007622925 | ||
035 | |a (DE-599)BSZ481823182 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
049 | |a DE-91G |a DE-859 |a DE-1046 |a DE-473 |a DE-355 |a DE-20 |a DE-M347 |a DE-739 |a DE-83 |a DE-898 |a DE-573 |a DE-523 |a DE-19 |a DE-B768 |a DE-Po75 | ||
084 | |a QH 500 |0 (DE-625)141607: |2 rvk | ||
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
084 | |a DAT 310f |2 stub | ||
100 | 1 | |a Martin, Robert C. |d 1952- |e Verfasser |0 (DE-588)114440964 |4 aut | |
245 | 1 | 0 | |a Clean architecture |b a craftsman's guide to software structure and design |c Robert C. Martin |
264 | 1 | |a Boston |b Prentice Hall |c [2018] | |
264 | 4 | |c © 2018 | |
300 | |a xxv, 404 Seiten |b Illustrationen | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Robert C. Martin series | |
650 | 0 | 7 | |a Programmcode |0 (DE-588)4734701-6 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Software Engineering |0 (DE-588)4116521-4 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Softwarearchitektur |0 (DE-588)4121677-5 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Softwarearchitektur |0 (DE-588)4121677-5 |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Programmcode |0 (DE-588)4734701-6 |D s |
689 | 1 | 1 | |a Software Engineering |0 (DE-588)4116521-4 |D s |
689 | 1 | |5 DE-604 | |
856 | 4 | 2 | |m Digitalisierung UB Regensburg - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029935643&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
856 | 4 | 2 | |m Digitalisierung UB Regensburg - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029935643&sequence=000002&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA |3 Klappentext |
999 | |a oai:aleph.bib-bvb.de:BVB01-029935643 |
Datensatz im Suchindex
_version_ | 1804177891985981440 |
---|---|
adam_text | ONT
TS
Foreword
Preface
Acknowledgments
About the Author
PART I Introduction
Chapter I 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
XV
xix
xxiii
XXV
3
4
5
12
13
14
14
15
16
18
VII
COMTfsMTS
5SSSÍÍÍ «i¿SHírc€ Ï??ÂÎ^
PART II Starting with the Bricks: Programming Paradigms 19
Chapter 3 Paradigm Overview 21
Structured Programming 22
Object-Oriented Programming 22
Functional Programming 22
Food for Thought 23
Conclusion 24
Chapter 4 Structured Programming 25
Proof 27
A Harmful Proclamation 28
Functional Decomposition 29
No Formal Proofs 30
Science to the Rescue 30
Tests 31
Conclusion 31
Chapter 5 Object-Oriented Programming 33
Encapsulation? 34
Inheritance? 37
Polymorphism? 40
Conclusion 47
Chapter 6 Functional Programming 49
Squares of Integers 50
Immutability and Architecture 52
Segregation of Mutability 52
Event Sourcing 54
Conclusion 56
PART III Design Principles 57
Chapter 7 SRP: The Single Responsibility Principle 61
Symptom 1: Accidental Duplication 63
Symptom 2: Merges 65
Solutions 66
Conclusion 67
¥111
Contents
Chapter 8 OCP: The Open-Closed Principle 69
A Thought Experiment 70
Directional Control 74
Information Hiding 74
Conclusion 75
Chapter 9 LSP: The Liskov Substitution Principle 77
Guiding the Use of Inheritance 78
The Square/Rectangle Problem 79
LSP and Architecture 80
Example LSP Violation 80
Conclusion 82
Chapter 10 ISP: The Interface Segregation Principle 83
ISP and Language 85
ISP and Architecture 86
Conclusion 86
Chapter 1 1 DIP: The Dependency Inversion Principle 87
Stable Abstractions 88
Factories 89
Concrete Components 91
Conclusion 91
PART IV Component Principles 93
Chapter 12 Components 95
A Brief History of Components 96
Relocatability 99
Linkers 100
Conclusion 102
Chapter 1 3 Component Cohesion 103
The Reuse/Release Equivalence Principle 104
The Common Closure Principle 105
The Common Reuse Principle 107
The Tension Diagram for Component Cohesion 108
Conclusion 110
IX
Contents
^^ *bSs^‘^^ N^ B =îSS ”S ^S. ,C,,f- S ?,»*‘-.’ C- ^-“b^ ÎSBS? !£S bmS, Wf ~Sf «iS -s»^W, *mmx* M8SS «iSSSS!«* »
Chapter 14 Component Coupling
The Acyclic Dependencies Principle
Top-Down Design
The Stable Dependencies Principle
The Stable Abstractions Principle
Conclusion
112
118
120
126
132
PART V Architecture
133
Chapter 15 What Is Architecture? 135
Development 137
Deployment 138
Operation 138
Maintenance 139
Keeping Options Open 140
Device Independence 142
Junk Mail 144
Physical Addressing 145
Conclusion 146
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
147
148
149
149
150
150
151
152
153
153
154
154
155
158
■, -t« - 8S H988SS S8BBW8I88! - 8Î8Î
X
Contents
Chapter 17 Boundaries: Drawing Lines 159
A Couple of Sad Stories 160
FitNesse 163
Which Lines Do You Draw, and When Do You Draw Them? 165
What About Input and Output? 169
Plugin Architecture 170
The Plugin Argument 172
Conclusion 173
Chapter 18 Boundary Anatom/ 175
Boundary Crossing 176
The Dreaded Monolith 176
Deployment Components 178
Threads 179
Local Processes 179
Services 180
Conclusion 181
Chapter 19 Policy and Level 183
Level 184
Conclusion 187
Chapter 20 Business Rules 189
Entities 190
Use Cases 191
Request and Response Models 193
Conclusion 194
Chapter 21 Screaming Architecture 195
The Theme of an Architecture 196
The Purpose of an Architecture 197
But What About the Web? 197
Frameworks Are Tools, Not Ways of Life 198
Testable Architectures 198
Conclusion 199
XI
Contents
Chapter 22 The Clean Architecture 201
The Dependency Rule 203
A Typical Scenario 207
Conclusion 209
Chapter 23 Presenters and Humble Objects 211
The Humble Object Pattern 212
Presenters and Views 212
Testing and Architecture 213
Database Gateways 214
Data Mappers 214
Service Listeners 215
Conclusion 215
Chapter 24 Partial Boundaries 217
Skip the Last Step 218
One-Dimensional Boundaries 219
Facades 220
Conclusion 220
Chapter 25 Layers and Boundaries 221
Hunt the Wumpus 222
Clean Architecture? 223
Crossing the Streams 226
Splitting the Streams 227
Conclusion 228
Chapter 26 The Main Component 231
The Ultimate Detail 232
Conclusion 237
Chapter 27 Services: Great and Small 239
Service Architecture? 240
Service Benefits? 240
The Kitty Problem 242
Objects to the Rescue 244
xil
Contents
Component-Based Services 245
Cross-Cutting Concerns 246
Conclusion 247
Chapter 28 The Test Boundary 249
Tests as System Components 250
Design for Testability 251
The Testing API 252
Conclusion 253
Chapter 29 Clean Embedded Architecture 255
App-titude Test 25S
The Target-Hardware Bottleneck 261
Conclusion 273
PART VI Details 275
Chapter 30 The Database Is a Detail 277
Relational Databases 278
Why Are Database Systems So Prevalent? 279
What If There Were No Disk? 280
Details 281
But What about Performance? 281
Anecdote 281
Conclusion 283
Chapter 31 The Web Is a Detail 285
The Endless Pendulum 286
The Upshot 288
Conclusion 289
Chapter 32 Frameworks Are Details 291
Framework Authors 292
Asymmetric Marriage 292
The Risks 293
The Solution 294
Contents
«s^ssssMaasmswawsiSMKMWisiMsasiiKssfiftsmis*!«»»^^
I Now Pronounce You ... 295
Conclusion 295
Chapter 33 Case Study: Video Sales 297
The Product 298
Use Case Analysis 298
Component Architecture 300
Dependency Management 302
Conclusion 302
Chapter 34 The Missing Chapter 303
Package by Layer 304
Package by Feature 306
Ports and Adapters 308
Package by Component 310
The Devil Is in the Implementation Details 315
Organization versus Encapsulation 316
Other Decoupling Modes 319
Conclusion: The Missing Advice 321
Afterword 323
PART VII Appendix 327
Appendix A Architecture Archaeology 329
Index 379
XIV
Clean Architecture
Practical Software Architecture Solutions from the Legendary
Robert C. Martin ( Uncle Bob )
By applying universal rules of software architecture, you can dramatically improve developer
productivity throughout the life of any software system. Now, building upon the success of his
best-selling books Clean Code and The Clean Coder, legendary software craftsman Robert C. Martin
( Uncle Bob ) reveals those rules and helps you apply them.
Martin s Clean Architecture doesn t merely present options. Drawing on over a half-century of
experience in software environments of every imaginable type, Martin tells you what choices to make
and why they are critical to your success. As you ve come to expect from Uncle Bob, this book is
packed with direct, no-nonsense solutions for the real challenges you ll face—the ones that will
make or break your projects.
► Learn what software architects need to achieve—and core disciplines and practices for achieving it
► Master essential software design principles for addressing function, component separation,
and data management
► See how programming paradigms impose discipline by restricting what developers can do
► Understand what s critically important and what s merely a detail
► Implement optimal, high-level structures for web, database, thick-client, console, and
embedded applications
► Define appropriate boundaries and layers, and organize components and services
► See why designs and architectures go wrong, and how to prevent (or fix) these failures
Clean Architecture is essential reading for every current or aspiring software architect, systems
analyst, system designer, and software manager—and for every programmer who must execute
someone else s designs.
Robert C. Martin ( Uncle Bob ) has been a programmer since 1970. An acclaimed speaker at
conferences worldwide, his books include The Clean Coder, Clean Code, Agile Software Development,
and UML for java Programmers. Martin is founder of Uncle Bob Consulting, LLC, and cofounder
(with his son Micah Martin) of The Clean Coders LLC. He has served as editor-in-chief of
The C++ Report, as the first chairman of the Agile Alliance, and as co-founder and leader of
Object Mentor, Inc.
|
any_adam_object | 1 |
author | Martin, Robert C. 1952- |
author_GND | (DE-588)114440964 |
author_facet | Martin, Robert C. 1952- |
author_role | aut |
author_sort | Martin, Robert C. 1952- |
author_variant | r c m rc rcm |
building | Verbundindex |
bvnumber | BV044536488 |
classification_rvk | QH 500 ST 230 |
classification_tum | DAT 310f |
ctrlnum | (OCoLC)1007622925 (DE-599)BSZ481823182 |
discipline | Informatik Wirtschaftswissenschaften |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>02154nam a2200457 c 4500</leader><controlfield tag="001">BV044536488</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20220516 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">171013s2018 a||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780134494166</subfield><subfield code="c">paperback : GBP 21.99</subfield><subfield code="9">978-0-13-449416-6</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0134494164</subfield><subfield code="9">0-13-449416-4</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9780134494166</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1007622925</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BSZ481823182</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-91G</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-1046</subfield><subfield code="a">DE-473</subfield><subfield code="a">DE-355</subfield><subfield code="a">DE-20</subfield><subfield code="a">DE-M347</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-898</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-19</subfield><subfield code="a">DE-B768</subfield><subfield code="a">DE-Po75</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">QH 500</subfield><subfield code="0">(DE-625)141607:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 310f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Martin, Robert C.</subfield><subfield code="d">1952-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)114440964</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Clean architecture</subfield><subfield code="b">a craftsman's guide to software structure and design</subfield><subfield code="c">Robert C. Martin</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Boston</subfield><subfield code="b">Prentice Hall</subfield><subfield code="c">[2018]</subfield></datafield><datafield tag="264" ind1=" " ind2="4"><subfield code="c">© 2018</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">xxv, 404 Seiten</subfield><subfield code="b">Illustrationen</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Robert C. Martin series</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Programmcode</subfield><subfield code="0">(DE-588)4734701-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Software Engineering</subfield><subfield code="0">(DE-588)4116521-4</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Softwarearchitektur</subfield><subfield code="0">(DE-588)4121677-5</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Softwarearchitektur</subfield><subfield code="0">(DE-588)4121677-5</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Programmcode</subfield><subfield code="0">(DE-588)4734701-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="1"><subfield code="a">Software Engineering</subfield><subfield code="0">(DE-588)4116521-4</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Regensburg - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029935643&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Regensburg - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029935643&sequence=000002&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Klappentext</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-029935643</subfield></datafield></record></collection> |
id | DE-604.BV044536488 |
illustrated | Illustrated |
indexdate | 2024-07-10T07:55:17Z |
institution | BVB |
isbn | 9780134494166 0134494164 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-029935643 |
oclc_num | 1007622925 |
open_access_boolean | |
owner | DE-91G DE-BY-TUM DE-859 DE-1046 DE-473 DE-BY-UBG DE-355 DE-BY-UBR DE-20 DE-M347 DE-739 DE-83 DE-898 DE-BY-UBR DE-573 DE-523 DE-19 DE-BY-UBM DE-B768 DE-Po75 |
owner_facet | DE-91G DE-BY-TUM DE-859 DE-1046 DE-473 DE-BY-UBG DE-355 DE-BY-UBR DE-20 DE-M347 DE-739 DE-83 DE-898 DE-BY-UBR DE-573 DE-523 DE-19 DE-BY-UBM DE-B768 DE-Po75 |
physical | xxv, 404 Seiten Illustrationen |
publishDate | 2018 |
publishDateSearch | 2018 |
publishDateSort | 2018 |
publisher | Prentice Hall |
record_format | marc |
series2 | Robert C. Martin series |
spelling | Martin, Robert C. 1952- Verfasser (DE-588)114440964 aut Clean architecture a craftsman's guide to software structure and design Robert C. Martin Boston Prentice Hall [2018] © 2018 xxv, 404 Seiten Illustrationen txt rdacontent n rdamedia nc rdacarrier Robert C. Martin series Programmcode (DE-588)4734701-6 gnd rswk-swf Software Engineering (DE-588)4116521-4 gnd rswk-swf Softwarearchitektur (DE-588)4121677-5 gnd rswk-swf Softwarearchitektur (DE-588)4121677-5 s DE-604 Programmcode (DE-588)4734701-6 s Software Engineering (DE-588)4116521-4 s Digitalisierung UB Regensburg - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029935643&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis Digitalisierung UB Regensburg - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029935643&sequence=000002&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA Klappentext |
spellingShingle | Martin, Robert C. 1952- Clean architecture a craftsman's guide to software structure and design Programmcode (DE-588)4734701-6 gnd Software Engineering (DE-588)4116521-4 gnd Softwarearchitektur (DE-588)4121677-5 gnd |
subject_GND | (DE-588)4734701-6 (DE-588)4116521-4 (DE-588)4121677-5 |
title | Clean architecture a craftsman's guide to software structure and design |
title_auth | Clean architecture a craftsman's guide to software structure and design |
title_exact_search | Clean architecture a craftsman's guide to software structure and design |
title_full | Clean architecture a craftsman's guide to software structure and design Robert C. Martin |
title_fullStr | Clean architecture a craftsman's guide to software structure and design Robert C. Martin |
title_full_unstemmed | Clean architecture a craftsman's guide to software structure and design Robert C. Martin |
title_short | Clean architecture |
title_sort | clean architecture a craftsman s guide to software structure and design |
title_sub | a craftsman's guide to software structure and design |
topic | Programmcode (DE-588)4734701-6 gnd Software Engineering (DE-588)4116521-4 gnd Softwarearchitektur (DE-588)4121677-5 gnd |
topic_facet | Programmcode Software Engineering Softwarearchitektur |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029935643&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029935643&sequence=000002&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT martinrobertc cleanarchitectureacraftsmansguidetosoftwarestructureanddesign |