Domain-driven design: tackling complexity in the heart of software
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Boston ; Munich [u.a.]
Addison-Wesley
2008
|
Ausgabe: | 13. printing |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | Includes bibliographical references and index |
Beschreibung: | XXX, 529 S. Ill., graph. Darst. |
ISBN: | 9780321125217 0321125215 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV035560450 | ||
003 | DE-604 | ||
005 | 20090616 | ||
007 | t | ||
008 | 090612s2008 ad|| |||| 00||| eng d | ||
020 | |a 9780321125217 |9 978-0-321-12521-7 | ||
020 | |a 0321125215 |9 0-321-12521-5 | ||
035 | |a (OCoLC)315888022 | ||
035 | |a (DE-599)BSZ285324314 | ||
040 | |a DE-604 |b ger | ||
041 | 0 | |a eng | |
049 | |a DE-703 |a DE-861 |a DE-525 | ||
082 | 0 | |a 005.1 | |
084 | |a ST 231 |0 (DE-625)143618: |2 rvk | ||
100 | 1 | |a Evans, Eric |d 1962- |e Verfasser |0 (DE-588)129552380 |4 aut | |
245 | 1 | 0 | |a Domain-driven design |b tackling complexity in the heart of software |c Eric Evans |
246 | 1 | 0 | |a domain driven |
250 | |a 13. printing | ||
264 | 1 | |a Boston ; Munich [u.a.] |b Addison-Wesley |c 2008 | |
300 | |a XXX, 529 S. |b Ill., graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
500 | |a Includes bibliographical references and index | ||
650 | 0 | 7 | |a Objektorientierte Programmierung |0 (DE-588)4233947-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Softwareentwicklung |0 (DE-588)4116522-6 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Objektorientierte Programmierung |0 (DE-588)4233947-9 |D s |
689 | 0 | 1 | |a Softwareentwicklung |0 (DE-588)4116522-6 |D s |
689 | 0 | |5 DE-604 | |
856 | 4 | 2 | |m Digitalisierung UB Bayreuth |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017616206&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-017616206 |
Datensatz im Suchindex
_version_ | 1804139209149120512 |
---|---|
adam_text | CONTENTS
Foreword
xvii
Preface
xix
Acknowledgments
xxix
Parti
Putting the Domain Model to Work
ι
Chapter
1:
Crunching Knowledge
7
Ingredients of Effective Modeling
12
Knowledge Crunching
13
Continuous Learning
15
Knowledge-Rich Design
17
Deep Models
20
Chapter
2:
Communication and the Use of Language
23
Ubiquitous Language
24
Modeling Out Loud
30
One Team, One Language
32
Documents and Diagrams
35
Written Design Documents
37
Executable Bedrock
40
Explanatory Models
41
Chapter
3 :
Binding Model and Implementation
45
Model-Driven Design
47
Modeling Paradigms and Tool Support
50
Letting the Bones Show: Why Models Matter to Users
57
Hands-On Modelers
60
IX
Part II
The Building Blocks of a Model-Driven Design
63
Chapter
4:
hobting the Domain
67
Layered Architecture
68
Relating the Layers
12
Architectural Frameworks
74
The Domain Layer Is Where the Model Lives
75
The Smart UI Anti-Pattern
76
Other Kinds of Isolation
79
Chapter
5:
A Model Expressed in Software
81
Associations
82
Entities (a.k.a. Reference Objects)
89
Modeling Entities
93
Designing the Identity Operation
94
Value Objects
97
Designing Value Objects
99
Designing Associations That Involve Value Objects
102
Services
104
Services and the Isolated Domain Layer
106
Granularity
108
Access to Services
108
Modules (a.k.a. Packages)
109
Agile Modules
111
The Pitfalls of Infrastructure-Driven Packaging
112
Modeling Paradigms
116
Why the Object Paradigm Predominates
116
Nonobjects in an Object World
119
Sticking with Model-Driven Design When
Mixing Paradigms
120
Chapter
6:
The Life Cycle of a Domain Object
123
Aggregates
125
Factories
136
Choosing Factories and Their Sites
139
When a Constructor Is All You Need
141
Designing the Interface
143
CONTENTS
Where Does Invariant Logic Go?
144
Entity Factories Versus Value Object Factories
144
Reconstituting Stored Objects
145
Repositories
147
Querying a Repository
152
Client Code Ignores Repository Implementation;
Developers Do Not
154
Implementing a Repository
155
Working Within Your Frameworks
156
The Relationship with Factories
157
Designing Objects for Relational Databases
159
Chapter
7:
Using the Language: An Extended Example
163
Introducing the Cargo Shipping System
163
Isolating the Domain: Introducing the Applications
166
Distinguishing Entities and Value Objects
167
Role and Other Attributes
168
Designing Associations in the Shipping Domain
169
Aggregate Boundaries
170
Selecting Repositories
172
Walking Through Scenarios
173
Sample Application Feature: Changing the Destination
of a Cargo
1Ъ
Sample Application Feature: Repeat Business
173
Object Creation
174
Factories and Constructors for Cargo
174
Adding a Handling Event
175
Pause for
Refactoring:
An Alternative Design of the
Cargo Aggregate
177
Modules in the Shipping Model
179
Introducing a New Feature: Allocation Checking
181
Connecting the Two Systems
182
Enhancing the Model: Segmenting the Business
183
Performance Tuning
185
A Final Look
186
CONTENTS
xi
Partill
Refactoring
Toward Deeper Insight
187
Chapter
8:
Breakthrough
193
Story of a Breakthrough
194
A Decent Model, and Yet
. ..
194
The Breakthrough
196
A Deeper Model
198
A Sobering Decision
199
The Payoff
200
Opportunities
201
Focus on Basics
201
Epilogue: A Cascade of New Insights
202
Chapter
9:
Making Implicit Concepts Explicit
205
Digging Out Concepts
206
Listen to Language
206
Scrutinize Awkwardness
210
Contemplate Contradictions
216
Read the Book
217
Try, Try Again
219
How to Model Less Obvious Kinds of Concepts
219
Explicit Constraints
220
Processes as Domain Objects
222
Specification
224
Applying and Implementing Specification
227
Chapter
10:
Supple Design
243
Intention-Revealing Interfaces
246
Side-Effect-Free Functions
250
Assertions
255
Conceptual Contours
260
Standalone Classes
265
Closure of Operations
268
Declarative Design
270
Domain-Specific Languages
272
A Declarative Style of Design
273
Extending Specifications in a Declarative Style
273
Angles of Attack
282
xii
CONTENTS
Carve Off
Subdomains
283
Oraw
on Established Formalisms, When You Can
283
Chapter
11 :
Applying Analysis Patterns
293
Chapter
12:
Relating Design Patterns to the Model
309
Strategy (a.k.a. Policy)
311
Composite
315
Why Not Flyweight?
320
Chapter
13:
Refactoring
Toward Deeper Insight
321
Initiation
321
Exploration Teams
322
Prior Art
323
A Design for Developers
324
Timing
324
Crisis as Opportunity
325
Part IV
Strategic Design
327
Chapter
14:
Maintaining Model Integrity
331
Bounded Context
335
Recognizing Splinters Within a Bounded Context
339
Continuous Integration
341
Context Map
344
Testing at the Context Boundaries
351
Organizing and Documenting Context Maps
351
Relationships Between Bounded Contexts
352
Shared Kernel
354
Customer/Supplier Development Teams
356
Conformist
361
Anticorruption
Layer
364
Designing the Interface of the Anticorr option Layer
366
Implementing the
Anticorruption
Layer
366
A Cautionary Tale
370
Separate Ways
371
Open Host Service
374
Published Language
375
CONTENTS
xiii
Unifying an Elephant
378
Choosing Your Model Context Strategy
381
Team Decision or Higher
382
Putting Ourselves in Context
382
Transforming Boundaries
382
Accepting That Which We Cannot Change: Delineating
the External Systems
383
Relationships with the External Systems
384
The System Under Design
385
Catering to
Spedai
Needs with Distinct Models
386
Deployment
387
The Trade-off
388
When Your Project Is Already Under Way
388
Transformations
389
Merging Contexts: Separate Ways
-»
Shared Kernel
389
Merging Contexts: Shared Kernel
-*
Continuous
Integration
391
Phasing Out a Legacy System
393
Open Host Service
-*
Published Language
394
Chapter
15:
Distillation
397
Core Domain
400
Choosing the Core
402
Who Does the Work?
403
An Escalation of Distillations
404
Generic
Subdomains
406
Generic Doesn t Mean Reusable
412
Project Risk Management
413
Domain Vision Statement
415
Highlighted Core
417
The Distillation Document
418
The Flagged Core
419
The
Distillation
Document as Process Tool
420
Cohesive Mechanisms
422
Generic
Subdomain
Versus Cohesive Mechanism
424
When a Mechanism Is Part of the Core Domain
425
Distilling to a Declarative Style
426
Segregated Core
428
XIV
CONTENTS
I he Costs of Creating a Segregated Core
429
Evolving Team Decision
430
Abstract Core
435
Deep Models Distill
436
Choosing
Refactoring
Targets
437
Chapter
16:
Large-Scale Structure
439
Evolving Order
444
System Metaphor
447
The Naive Metaphor and Why We Don t Need It
448
Responsibility Layers
450
Choosing Appropriate Layers
460
Knowledge Level
465
Pluggable Component Framework
475
How Restrictive Should a Structure Be?
480
Refactoring
Toward a Fitting Structure
481
Minimalism
481
Communication and Self-Discipline
482
Restructuring Yields Supple Design
482
Distillation Lightens the Load
483
Chapter
17:
Bringing the Strategy Together
485
Combining Large-Scale Structures and Bounded Contexts
485
Combining Large-Scale Structures and Distillation
488
Assessment First
490
Who Sets the Strategy?
490
Emergent Structure from Application Development
491
A Customer-Focused Architecture Team
492
Six Essentials for Strategic Design Decision Making
492
The Same Goes for the Technical Frameworks
495
Beware the Master Plan
496
Conclusion
499
Appendix: The
Ose
of Patterns in This Book
507
Glossary
511
References
515
Photo Credits
517
Index
519
CONTENTS
XV
|
any_adam_object | 1 |
author | Evans, Eric 1962- |
author_GND | (DE-588)129552380 |
author_facet | Evans, Eric 1962- |
author_role | aut |
author_sort | Evans, Eric 1962- |
author_variant | e e ee |
building | Verbundindex |
bvnumber | BV035560450 |
classification_rvk | ST 231 |
ctrlnum | (OCoLC)315888022 (DE-599)BSZ285324314 |
dewey-full | 005.1 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.1 |
dewey-search | 005.1 |
dewey-sort | 15.1 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 13. printing |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01579nam a2200397 c 4500</leader><controlfield tag="001">BV035560450</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20090616 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">090612s2008 ad|| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780321125217</subfield><subfield code="9">978-0-321-12521-7</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0321125215</subfield><subfield code="9">0-321-12521-5</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)315888022</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BSZ285324314</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-703</subfield><subfield code="a">DE-861</subfield><subfield code="a">DE-525</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.1</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 231</subfield><subfield code="0">(DE-625)143618:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Evans, Eric</subfield><subfield code="d">1962-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)129552380</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Domain-driven design</subfield><subfield code="b">tackling complexity in the heart of software</subfield><subfield code="c">Eric Evans</subfield></datafield><datafield tag="246" ind1="1" ind2="0"><subfield code="a">domain driven</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">13. printing</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Boston ; Munich [u.a.]</subfield><subfield code="b">Addison-Wesley</subfield><subfield code="c">2008</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXX, 529 S.</subfield><subfield code="b">Ill., graph. Darst.</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="500" ind1=" " ind2=" "><subfield code="a">Includes bibliographical references and index</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Objektorientierte Programmierung</subfield><subfield code="0">(DE-588)4233947-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Softwareentwicklung</subfield><subfield code="0">(DE-588)4116522-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Objektorientierte Programmierung</subfield><subfield code="0">(DE-588)4233947-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Softwareentwicklung</subfield><subfield code="0">(DE-588)4116522-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Bayreuth</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=017616206&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-017616206</subfield></datafield></record></collection> |
id | DE-604.BV035560450 |
illustrated | Illustrated |
indexdate | 2024-07-09T21:40:26Z |
institution | BVB |
isbn | 9780321125217 0321125215 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-017616206 |
oclc_num | 315888022 |
open_access_boolean | |
owner | DE-703 DE-861 DE-525 |
owner_facet | DE-703 DE-861 DE-525 |
physical | XXX, 529 S. Ill., graph. Darst. |
publishDate | 2008 |
publishDateSearch | 2008 |
publishDateSort | 2008 |
publisher | Addison-Wesley |
record_format | marc |
spelling | Evans, Eric 1962- Verfasser (DE-588)129552380 aut Domain-driven design tackling complexity in the heart of software Eric Evans domain driven 13. printing Boston ; Munich [u.a.] Addison-Wesley 2008 XXX, 529 S. Ill., graph. Darst. txt rdacontent n rdamedia nc rdacarrier Includes bibliographical references and index Objektorientierte Programmierung (DE-588)4233947-9 gnd rswk-swf Softwareentwicklung (DE-588)4116522-6 gnd rswk-swf Objektorientierte Programmierung (DE-588)4233947-9 s Softwareentwicklung (DE-588)4116522-6 s DE-604 Digitalisierung UB Bayreuth application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017616206&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Evans, Eric 1962- Domain-driven design tackling complexity in the heart of software Objektorientierte Programmierung (DE-588)4233947-9 gnd Softwareentwicklung (DE-588)4116522-6 gnd |
subject_GND | (DE-588)4233947-9 (DE-588)4116522-6 |
title | Domain-driven design tackling complexity in the heart of software |
title_alt | domain driven |
title_auth | Domain-driven design tackling complexity in the heart of software |
title_exact_search | Domain-driven design tackling complexity in the heart of software |
title_full | Domain-driven design tackling complexity in the heart of software Eric Evans |
title_fullStr | Domain-driven design tackling complexity in the heart of software Eric Evans |
title_full_unstemmed | Domain-driven design tackling complexity in the heart of software Eric Evans |
title_short | Domain-driven design |
title_sort | domain driven design tackling complexity in the heart of software |
title_sub | tackling complexity in the heart of software |
topic | Objektorientierte Programmierung (DE-588)4233947-9 gnd Softwareentwicklung (DE-588)4116522-6 gnd |
topic_facet | Objektorientierte Programmierung Softwareentwicklung |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017616206&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT evanseric domaindrivendesigntacklingcomplexityintheheartofsoftware AT evanseric domaindriven |