Domain-Driven Design: Tackling Complexity in the Heart of Software
معرفی کتاب «Domain-Driven Design: Tackling Complexity in the Heart of Software» نوشتهٔ Eric Evans، منتشرشده توسط نشر Addison-Wesley Professional در سال 2003. این کتاب در 560 صفحه، فرمت pdf، زبان انگلیسی ارائه شده است. «Domain-Driven Design: Tackling Complexity in the Heart of Software» در دستهٔ برنامهنویسی قرار دارد.
Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development. Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis–refactoring not just the code but the model underlying the code–in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.Specific topics covered include: With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations. Crunching Knowledge......Page 2 Ingredients of Effective Modeling......Page 6 Knowledge Crunching......Page 7 Knowledge-Rich Design......Page 8 Deep Models......Page 11 Ubiquitous Language......Page 12 Modeling Out Loud......Page 17 One Team, One Language......Page 18 Documents and Diagrams......Page 19 Explanatory Models......Page 22 Binding Model and Implementation......Page 25 Model-Driven Design......Page 26 Modeling Paradigms and Tool Support......Page 28 Letting the Bones Show: Why Models Matter to Users......Page 33 Hands-On Modelers......Page 34 Layered Architecture......Page 36 The Domain Layer Is Where the Model Lives......Page 40 The Smart UI “Anti-Pattern”......Page 41 Other Kinds of Isolation......Page 43 A Model Expressed in Software......Page 44 Associations......Page 45 Entities (a.k.a. Reference Objects)......Page 49 Value Objects......Page 54 Services......Page 59 Modules (a.k.a. Packages)......Page 62 Modeling Paradigms......Page 66 The Life Cycle of a Domain Object......Page 70 Aggregates......Page 71 Factories......Page 79 Repositories......Page 86 Designing Objects for Relational Databases......Page 94 Introducing the Cargo Shipping System......Page 96 Distinguishing ENTITIES and VALUE Objects......Page 98 Designing Associations in the Shipping Domain......Page 100 AGGREGATE Boundaries......Page 101 Selecting REPOSITORIES......Page 102 Walking Through Scenarios......Page 103 Object Creation......Page 104 Pause for Refactoring: An Alternative Design of the Cargo AGGREGATE......Page 106 MODULES in the Shipping Model......Page 108 Introducing a New Feature: Allocation Checking......Page 110 A Final Look......Page 113 Breakthrough......Page 115 Story of a Breakthrough......Page 116 Epilogue: A Cascade of New Insights......Page 121 Digging Out Concepts......Page 123 How to Model Less Obvious Kinds of Concepts......Page 132 Supple Design......Page 147 Intention-Revealing Interfaces......Page 149 Side -Effect-Free Functions......Page 152 Assertions......Page 156 Conceptual Contours......Page 159 Standalone Classes......Page 163 Closure of Operations......Page 164 Declarative Design......Page 166 A Declarative Style of Design......Page 168 Angles of Attack......Page 174 Applying Analysis Patterns......Page 181 ExampleEarning Interest with Accounts......Page 182 ExampleInsight into the Nightly Batch......Page 186 Analysis Patterns Are Knowledge to Draw On......Page 190 Relating Design Patterns to the Model......Page 191 Strategy (A.K.A.Policy)......Page 192 Composite......Page 194 Why Not FLYWEIGHT?......Page 199 Exploration Teams......Page 201 Prior Art......Page 202 Crisis as Opportunity......Page 203 Maintaining Model Integrity......Page 205 Bounded Context......Page 207 Continuous Integration......Page 211 Context Map......Page 213 Shared Kernel......Page 219 Customer/Supplier Development Teams......Page 221 Conformist......Page 224 Anticorruption Layer......Page 226 Separate Ways......Page 230 Open Host Service......Page 231 Published Language......Page 232 Unifying an Elephant......Page 234 Choosing Your Model Context Strategy......Page 237 Transformations......Page 242 Distillation......Page 247 Core Domain......Page 248 An Escalation of Distillations......Page 251 Generic Subdomains......Page 252 Domain Vision Statement......Page 257 Highlighted Core......Page 258 Cohesive Mechanisms......Page 261 Segregated Core......Page 264 Abstract Core......Page 270 Choosing Refactoring Targets......Page 271 Large-Scale Structure......Page 272 Evolving Order......Page 274 System Metaphor......Page 276 Responsibility Layers......Page 277 Knowledge Level......Page 288 Pluggable Component Framework......Page 294 How Restrictive Should a Structure Be?......Page 298 Refactoring Toward a Fitting Structure......Page 299 Combining Large-Scale Structures and BOUNDED CONTEXTS......Page 301 Combining Large-Scale Structures and Distillation......Page 304 Who Sets the Strategy?......Page 305 Six Essentials for Strategic Design Decision Making......Page 306 Epilogues......Page 310 Looking Forward......Page 313 Appendix - The Use of Patterns in This Book......Page 315 Pattern Name......Page 316 GLOSSARY......Page 318 References......Page 322 PHOTO CREDITS......Page 324
دانلود کتاب Domain-Driven Design: Tackling Complexity in the Heart of Software