領域驅動設計

出版時間:201004  出版社:人民郵電出版社  作者:Eric Evans  頁數:529  
Tag標簽:無  

內容概要

領域模型使開發(fā)人員可以表達豐富的軟件功能需求,由此實現的軟件可以滿足用戶真正的需要,因此被公認為是軟件設計的關鍵所在,其重要性顯而易見。但講述如何將領域模型用于軟件開發(fā)過程的優(yōu)秀實用資料卻不多見。本書正是這一領域最著名的作品,受到眾多業(yè)界大師的贊美和推介,廣受讀者好評?! ∫ㄟ^創(chuàng)建領域模型來加速復雜的軟件開發(fā),就需要利用大量最佳實踐和標準模式在開發(fā)團隊中形成統(tǒng)一的交流語言;不僅重構代碼,而且要重構代碼底層的模型;同時采取反復迭代的敏捷開發(fā)方法,深入理解領域特點,促進領域專家與程序員的良好溝通。針對這些內容,本書結合真實項目,系統(tǒng)地介紹了領域驅動開發(fā)的目標、意義和方法,充分討論了復雜系統(tǒng)的建模與設計問題。  本書將指導面向對象開發(fā)人員、系統(tǒng)分析人員和設計人員合理地組織工作,各有側重、彼此協作,有條不紊地進行復雜系統(tǒng)的開發(fā),幫助他們建立豐富而實用的領域模型,并由此創(chuàng)建長期適用的優(yōu)質軟件。

作者簡介

Eric Evans世界著名軟件建模專家,創(chuàng)建了Domain Language公司,致力于幫助公司機構創(chuàng)建與業(yè)務緊密相關的軟件。他在全球各地宣講領域驅動設計的思想,開設課程、參加會議、接受專訪,擁有大批的追隨者。從20世紀80年代開始,他就以設計師和程序員的雙重身份參與過許多大型面向對象系統(tǒng)的設計和開發(fā),涉及各種復雜的業(yè)務和技術領域。同時,他還培訓和指導過許多開發(fā)團隊開展極限編程實踐。

書籍目錄

Part I Putting the Domain Model to Work 1 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 Part II The Building Blocks of a Model-Driven Design 63 Chapter 4: Isolating the Domain 67 LAYERED ARCHITECTURE 68 Relating the Layers 72 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 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 173 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 Part III 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 Carve Off Subdomains 283 Draw 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 ANTICORRUPTION LAYER 366 Implementing the ANTICORRUPTION LAYER 366 A Cautionary Tale 370 SEPARATE WAYS 371 OPEN HOST SERVICE 374 PUBLISHED LANGUAGE 375 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 Special 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 The 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 Use of Patterns in This Book 507 Glossary 511 References 515 Photo Credits 517 Index 519

章節(jié)摘錄

插圖:(The service asks each Net for assigned Rules(), and then writes them fully expanded.)Of course, if there were only one operation (as in the example), the script-based approach might be just as practical. But in reality, there were 20 or more. The MODEL-DRIVEN DESIGN scales easily and can include constraints on combining rules and other enhancements.The second design also accommodates testing. Its components have well-defined interfaces that can be unit-tested. The only way to test the script is to do an end-to-end file-in/file-out comparison.Keep in mind that such a design does not emerge in a single step. It would take several iterations of refactoring and knowledge crunching to distill the important concepts of the domain into a simple, incisive model.Letting the Bones Show: Why Models Matter to UsersIn theory, perhaps, you could present a user with any view of a system, regardless of what lies beneath. But in practice, a mismatch causes confusion at best——bugs at worst. Consider a very simple example of how users are misled by superimposed models of book- marks for Web sites in current releases of Microsoft Internet Explorer.

媒體關注與評論

“這本書應該出現在每個軟件開發(fā)人員的書架上?!薄  狵erltBeck 軟件開發(fā)方法學泰斗。極限編程的創(chuàng)始人“Eric的這本書太棒太神奇了,他準確地告訴你如何讓軟件設計滿足你的模型需求本書讀起來趣味無窮。Eric有許多有趣的故事,而且描述起來很有一套它出版后將成為軟件開發(fā)。人員必讀的經典之作。”  ——Ralh Johnson 《設計模式》的作者“如果你認為自己在面向對象編程中的投資沒有收到回報,那么讀了本書你就會知道自己漏掉了什么?!薄  猈ard Cunningham 設計模式和敏捷軟件方法的先驅“Enc Evarls力證作為開發(fā)核心的領域模型的重要性。他搭建了一個穩(wěn)固的框架并提供了一套實現技術和技巧。這里沉淀下來的是亙古不變的智慧精華,在應時的方法論都淪為明日黃花后,它依然光華璀璨。”  ——Dave Collirls Designing Object-Oriented User Interfaces的作者“Eric完全從實戰(zhàn)者的角度著筆。描述了無處不用的語言、與用戶共享模型的好處、對象生命周期的管理、深度重構的過程和結果。這是對我們這個領域的巨大貢獻?!薄  狶uke Hollmann Beyond Software Architecture的作者

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    領域驅動設計 PDF格式下載


用戶評論 (總計11條)

 
 

  •   正在看,晚點來評價。
  •   發(fā)指了
  •   這書有點太經典,呵呵呵!~
    就是里面要學的單詞太多了!~
  •   不錯的軟件設計書籍
    無論是作者寫作風格,還是經驗的結累。。
  •   內容經典,不多說了。很厚的一大本,書紙的質量比較好,字大清晰,便于閱讀,而且書頁旁邊的留白比較大,適合自己做備注。唯一遺憾書角擠壓受損,不知是哪個環(huán)節(jié)搞的?。。。
  •   要退貨
  •   了解一下比較好。高工以上比較有幫助吧
  •   這本書由淺入深,很有層次,比起國內人出的書是兩個概念,英文不太好,早知道就買中文版
  •   前面兩章確有讓人放棄的感覺,但是如果你放棄了,你就真的放棄了一次絕妙的提升自我的學習機會。精彩從第三章開始,讓你感覺淋漓盡致的痛快!
  •   書沒有塑料外包裝。看樣子讓人拆過。不是最新的。
  •   本想一步到位直接看原版,不料此書作者語文功底了得,內容亦是抽象,跟下去實在有些吃力。后悔沒買中文版了。本書內容是相當不錯的,只是英文閱讀能力一般的朋友,還是建議買中文譯版。省的一邊金山詞霸太辛苦。
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網 手機版

京ICP備13047387號-7