Course :: Domain‐Driven Design (DDD) for Software Development - up1/training-courses GitHub Wiki

Course :: Domain-Driven Design (DDD) for Software Development

  • 1-2 day(s)

Outline

  • Introduction to DDD

    • Overview of DDD
    • Importance of DDD in modern software architecture
    • Key concepts: Domain and Ubiquitous Language
    • Problem space vs Solution space
      • Strategic Design
      • Tactical Design
    • Use cases
  • Strategic Design

    • Bounded Contexts and Context Mapping
    • Domain or Sub-domain
      • Core
      • Supporting
      • Generic Domains
    • Identifying subdomains
    • Context Mapping
      • Communication between services/domain
      • Clarify boundary and interaction between services/domain
    • Aligning business strategy with software design
    • Workshop
      • Identify bounded contexts and draw a context map for a hypothetical business scenario
      • Event Storming and Customer journey
      • 4+1 architectural view model
  • Tactical Design

    • Aggregates, Entities, and Value Objects
    • Repositories and Factories
    • Event-design
      • Domain Events and Event-Driven Architecture
      • Command Query Responsibility Segregation (CQRS)
    • Project structure
      • Model-View-Controller
      • Clean architecture
      • Hexagonal architecture
    • Testing strategies
    • Workshop