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