کتابخانه مرکزی دانشگاه صنعتی شریف
    • [نمايش بزرگتر]
    • [نمايش کوچکتر]
  • صفحه 
     از  0
  • [صفحه قبل]
  • [صفحه بعد]
  • [نمایش تمام صفحه]
  • [بستن]
 
Learning domain-driven design : aligning software architecture and business strategy
Khononov, Vlad.

اطلاعات کتابشناختی

Learning domain-driven design : aligning software architecture and business strategy
Author :   Khononov, Vlad.
Publisher :   O'Reilly,
Pub. Year  :   2022
Subjects :   Application software -- Development.
Call Number :   ‭QA 76 .76 .D47 .K56 2022

جستجو در محتوا

ترتيب

فهرست مطالب

  • Copyright (6)
  • Table of Contents (7)
  • Foreword (15)
  • Preface (17)
    • Why I Wrote This Book (18)
    • Who Should Read This Book (18)
    • Navigating the Book (19)
    • Example Domain: WolfDesk (20)
    • Conventions Used in This Book (21)
    • Using Code Examples (21)
    • O’Reilly Online Learning (22)
    • How to Contact Us (23)
    • Acknowledgments (23)
  • Introduction (25)
  • Part I. Strategic Design (27)
    • Chapter 1. Analyzing Business Domains (29)
      • What Is a Business Domain? (29)
      • What Is a Subdomain? (30)
        • Types of Subdomains (30)
        • Comparing Subdomains (33)
        • Identifying Subdomain Boundaries (37)
      • Domain Analysis Examples (40)
        • Gigmaster (40)
        • BusVNext (41)
      • Who Are the Domain Experts? (43)
      • Conclusion (44)
      • Exercises (44)
    • Chapter 2. Discovering Domain Knowledge (47)
      • Business Problems (47)
      • Knowledge Discovery (48)
      • Communication (48)
      • What Is a Ubiquitous Language? (50)
      • Language of the Business (51)
        • Scenarios (51)
        • Consistency (52)
      • Model of the Business Domain (53)
        • What Is a Model? (53)
        • Effective Modeling (54)
        • Modeling the Business Domain (54)
        • Continuous Effort (55)
        • Tools (55)
        • Challenges (56)
      • Conclusion (57)
      • Exercises (58)
    • Chapter 3. Managing Domain Complexity (59)
      • Inconsistent Models (59)
      • What Is a Bounded Context? (61)
        • Model Boundaries (62)
        • Ubiquitous Language Refined (63)
        • Scope of a Bounded Context (63)
      • Bounded Contexts Versus Subdomains (64)
        • Subdomains (65)
        • Bounded Contexts (65)
        • The Interplay Between Subdomains and Bounded Contexts (65)
      • Boundaries (67)
        • Physical Boundaries (67)
        • Ownership Boundaries (68)
      • Bounded Contexts in Real Life (68)
        • Semantic Domains (69)
        • Science (69)
        • Buying a Refrigerator (70)
      • Conclusion (72)
      • Exercises (72)
    • Chapter 4. Integrating Bounded Contexts (75)
      • Cooperation (76)
        • Partnership (76)
        • Shared Kernel (76)
      • Customer–Supplier (79)
        • Conformist (79)
        • Anticorruption Layer (80)
        • Open-Host Service (81)
      • Separate Ways (82)
        • Communication Issues (82)
        • Generic Subdomains (82)
        • Model Differences (82)
      • Context Map (83)
        • Maintenance (84)
        • Limitations (84)
      • Conclusion (85)
      • Exercises (85)
  • Part II. Tactical Design (87)
    • Chapter 5. Implementing Simple Business Logic (89)
      • Transaction Script (89)
        • Implementation (90)
        • It’s Not That Easy! (90)
        • When to Use Transaction Script (94)
      • Active Record (95)
        • Implementation (96)
        • When to Use Active Record (97)
      • Be Pragmatic (98)
      • Conclusion (98)
      • Exercises (98)
    • Chapter 6. Tackling Complex Business Logic (101)
      • History (101)
      • Domain Model (102)
        • Implementation (103)
        • Building Blocks (103)
        • Managing Complexity (120)
      • Conclusion (121)
      • Exercises (122)
    • Chapter 7. Modeling the Dimension of Time (125)
      • Event Sourcing (125)
        • Search (130)
        • Analysis (131)
        • Source of Truth (133)
        • Event Store (133)
      • Event-Sourced Domain Model (134)
        • Advantages (136)
        • Disadvantages (137)
      • Frequently Asked Questions (138)
        • Performance (138)
        • Deleting Data (140)
        • Why Can’t I Just…? (140)
      • Conclusion (141)
      • Exercises (142)
    • Chapter 8. Architectural Patterns (143)
      • Business Logic Versus Architectural Patterns (143)
      • Layered Architecture (144)
        • Presentation Layer (144)
        • Business Logic Layer (145)
        • Data Access Layer (145)
        • Communication Between Layers (146)
        • Variation (147)
        • When to Use Layered Architecture (150)
      • Ports & Adapters (151)
        • Terminology (152)
        • Dependency Inversion Principle (152)
        • Integration of Infrastructural Components (153)
        • Variants (154)
        • When to Use Ports & Adapters (154)
      • Command-Query Responsibility Segregation (154)
        • Polyglot Modeling (155)
        • Implementation (155)
        • Projecting Read Models (156)
        • Challenges (158)
        • Model Segregation (159)
        • When to Use CQRS (159)
      • Scope (160)
      • Conclusion (161)
      • Exercises (161)
    • Chapter 9. Communication Patterns (163)
      • Model Translation (163)
        • Stateless Model Translation (164)
        • Stateful Model Translation (167)
      • Integrating Aggregates (169)
        • Outbox (171)
        • Saga (173)
        • Process Manager (176)
      • Conclusion (180)
      • Exercises (180)
  • Part III. Applying Domain-Driven Design in Practice (183)
    • Chapter 10. Design Heuristics (185)
      • Heuristic (185)
      • Bounded Contexts (186)
      • Business Logic Implementation Patterns (187)
      • Architectural Patterns (189)
      • Testing Strategy (190)
        • Testing Pyramid (191)
        • Testing Diamond (191)
        • Reversed Testing Pyramid (191)
      • Tactical Design Decision Tree (192)
      • Conclusion (193)
      • Exercises (193)
    • Chapter 11. Evolving Design Decisions (195)
      • Changes in Domains (195)
        • Core to Generic (196)
        • Generic to Core (196)
        • Supporting to Generic (197)
        • Supporting to Core (197)
        • Core to Supporting (198)
        • Generic to Supporting (198)
      • Strategic Design Concerns (198)
      • Tactical Design Concerns (199)
        • Transaction Script to Active Record (200)
        • Active Record to Domain Model (200)
        • Domain Model to Event-Sourced Domain Model (202)
        • Generating Past Transitions (202)
        • Modeling Migration Events (203)
      • Organizational Changes (204)
        • Partnership to Customer–Supplier (205)
        • Customer–Supplier to Separate Ways (205)
      • Domain Knowledge (205)
      • Growth (206)
        • Subdomains (206)
        • Bounded Contexts (207)
        • Aggregates (208)
      • Conclusion (208)
      • Exercises (209)
    • Chapter 12. EventStorming (211)
      • What Is EventStorming? (211)
      • Who Should Participate in EventStorming? (212)
      • What Do You Need for EventStorming? (212)
      • The EventStorming Process (213)
        • Step 1: Unstructured Exploration (213)
        • Step 2: Timelines (214)
        • Step 3: Pain Points (215)
        • Step 4: Pivotal Events (216)
        • Step 5: Commands (216)
        • Step 6: Policies (217)
        • Step 7: Read Models (218)
        • Step 8: External Systems (219)
        • Step 9: Aggregates (220)
        • Step 10: Bounded Contexts (220)
      • Variants (221)
      • When to Use EventStorming (222)
      • Facilitation Tips (222)
        • Watch the Dynamics (223)
        • Remote EventStorming (223)
      • Conclusion (224)
      • Exercises (224)
    • Chapter 13. Domain-Driven Design in the Real World (227)
      • Strategic Analysis (228)
        • Understand the Business Domain (228)
        • Explore the Current Design (229)
      • Modernization Strategy (230)
        • Strategic Modernization (231)
        • Tactical Modernization (233)
        • Cultivate a Ubiquitous Language (233)
      • Pragmatic Domain-Driven Design (236)
      • Selling Domain-Driven Design (237)
        • Undercover Domain-Driven Design (237)
      • Conclusion (239)
      • Exercises (240)
  • Part IV. Relationships to Other Methodologies and Patterns (241)
    • Chapter 14. Microservices (243)
      • What Is a Service? (243)
      • What Is a Microservice? (244)
        • Method as a Service: Perfect Microservices? (245)
        • Design Goal (246)
        • System Complexity (247)
        • Microservices as Deep Services (248)
        • Microservices as Deep Modules (249)
      • Domain-Driven Design and Microservices’ Boundaries (251)
        • Bounded Contexts (251)
        • Aggregates (253)
        • Subdomains (254)
      • Compressing Microservices’ Public Interfaces (255)
        • Open-Host Service (255)
        • Anticorruption Layer (256)
      • Conclusion (257)
      • Exercises (258)
    • Chapter 15. Event-Driven Architecture (259)
      • Event-Driven Architecture (259)
      • Events (260)
        • Events, Commands, and Messages (260)
        • Structure (261)
        • Types of Events (262)
      • Designing Event-Driven Integration (267)
        • Distributed Big Ball of Mud (267)
        • Temporal Coupling (268)
        • Functional Coupling (269)
        • Implementation Coupling (269)
        • Refactoring the Event-Driven Integration (269)
        • Event-Driven Design Heuristics (271)
      • Conclusion (272)
      • Exercises (273)
    • Chapter 16. Data Mesh (275)
      • Analytical Data Model Versus Transactional Data Model (275)
        • Fact Table (276)
        • Dimension Table (278)
        • Analytical Models (279)
      • Analytical Data Management Platforms (280)
        • Data Warehouse (280)
        • Data Lake (283)
        • Challenges of Data Warehouse and Data Lake Architectures (284)
      • Data Mesh (285)
        • Decompose Data Around Domains (285)
        • Data as a Product (287)
        • Enable Autonomy (288)
        • Build an Ecosystem (288)
        • Combining Data Mesh and Domain-Driven Design (289)
      • Conclusion (290)
      • Exercises (291)
  • Closing Words (293)
    • Problem (293)
    • Solution (294)
    • Implementation (295)
    • Further Reading (295)
      • Advanced Domain-Driven Design (295)
      • Architectural and Integration Patterns (296)
      • Modernization of Legacy Systems (296)
      • EventStorming (297)
    • Conclusion (297)
  • Appendix A. Applying DDD: A Case Study (299)
    • Five Bounded Contexts (299)
      • Business Domain (299)
      • Bounded Context #1: Marketing (301)
      • Bounded Context #2: CRM (302)
      • Bounded Context #3: Event Crunchers (305)
      • Bounded Context #4: Bonuses (306)
      • Bounded Context #5: The Marketing Hub (308)
    • Discussion (309)
      • Ubiquitous Language (309)
      • Subdomains (310)
      • Boundaries of Bounded Contexts (312)
    • Conclusion (313)
  • Appendix B. Answers to Exercise Questions (315)
    • Chapter 1 (315)
    • Chapter 2 (316)
    • Chapter 3 (316)
    • Chapter 4 (317)
    • Chapter 5 (317)
    • Chapter 6 (318)
    • Chapter 7 (318)
    • Chapter 8 (318)
    • Chapter 9 (319)
    • Chapter 10 (319)
    • Chapter 11 (319)
    • Chapter 12 (320)
    • Chapter 13 (320)
    • Chapter 14 (320)
    • Chapter 15 (320)
    • Chapter 16 (321)
  • Bibliography (323)
  • Index (325)
  • About the Author (339)
  • Colophon (339)
Loading...