0%

Building software is harder than ever. As a developer, you not only have to chase ever-changing technological trends but you also need to understand the business domains behind the software. This practical book provides you with a set of core patterns, principles, and practices for analyzing business domains, understanding business strategy, and, most importantly, aligning software design with its business needs.

Author Vladik Khononov shows you how these practices lead to robust implementation of business logic and help to future-proof software design and architecture. You'll examine the relationship between DDD and other methodologies to ensure you make architectural decisions that meet business requirements. You'll also explore the real-life story of implementing DDD in a startup company.

With this book, you'll learn how to:

  • Use DDD's strategic patterns and practices as well as its tactical patterns and use cases
  • Analyze a client company's business domain and competitive strategy
  • Build a shared understanding of the business domains you encounter
  • Decompose a system into bounded contexts
  • Coordinate the work of multiple teams working together
  • Gradually start implementing domain-driven design

Table of Contents

  1. I. Strategic Design
  2. 1. Analyzing Business Domains
    1. What Is a Business Domain?
    2. What Is a Subdomain?
    3. Identifying Subdomains Boundaries
    4. Types of Subdomains
    5. Comparing Subdomains
    6. Domain Analysis Examples
    7. Gigmaster
    8. BusVNext
    9. Who Are Domain Experts?
    10. Conclusion
    11. Core Subdomains
    12. Generic Subdomains
    13. Supporting Subdomains
    14. Quiz
  3. 2. Discovering Domain Knowledge
    1. Business Problems
    2. Knowledge Discovery
    3. Communication
    4. What Is Ubiquitous Language?
    5. Language of the Business
    6. Scenarios
    7. Consistency
    8. Model of the Business Domain
    9. What Is a Model?
    10. Effective Modeling
    11. Modeling the Business Domain
    12. Continuous Effort
    13. Tools
    14. Challenges
    15. Conclusion
  4. 3. Managing Complexity With Bounded Contexts
    1. Inconsistent Models
    2. Marketing department
    3. Sales department
    4. What Is a Bounded Context?
    5. Model Boundaries
    6. Scope of a Bounded Context
    7. Bounded Contexts Versus Subdomains
    8. Subdomains
    9. Bounded Contexts
    10. The Interplay Between Subdomains and Bounded Contexts
    11. Boundaries
    12. Physical Boundaries
    13. Ownership Boundaries
    14. Bounded Contexts Outside in Real Life
    15. UK vs. US English
    16. Science
    17. Buying a Refrigerator
    18. Conclusion
    19. Quiz
  5. 4. Integrating Bounded Contexts
    1. Cooperation
    2. Partnership
    3. Shared Kernel
    4. Customer–Supplier
    5. Conformist
    6. Anticorruption Layer
    7. Open-Host Service
    8. Separate Ways
    9. Communication Issues
    10. Generic Subdomains
    11. Model Differences
    12. When to Avoid
    13. Context Map
    14. High-level design
    15. Communication patterns
    16. Organizational issues
    17. Maintenance of a context map
    18. Limitations
    19. Conclusion
    20. Quiz
  6. II. Tactical Design
  7. 5. Transaction Script and Active Record
    1. Transaction Script
    2. Implementation
    3. Applicability Context
    4. Active Record
    5. Implementation
    6. Applicability Context
    7. Conclusion
  8. 6. Domain Model
    1. Preface
    2. Domain Model
    3. Implementation
    4. Building Blocks
    5. Conclusion
  9. 7. Event Sourced Domain Model
    1. Event Sourcing
    2. Event Sourced Domain Model
    3. Advantages
    4. Disadvantages
    5. Frequently Asked Questions
    6. Performance
    7. Deleting Data
    8. Why Can’t I Just…?
    9. Conclusion
3.15.147.53