Domain-Driven Design Essentials

Learn via : Virtual Classroom / Online
Duration : 5 Days
  1. Home
  2. Domain-Driven Design Essentials

Description

    Domain-Driven Design (DDD) is an approach to software development that focuses on understanding and solving business problems through a shared domain model. It helps development teams create software that reflects business rules, terminology, and priorities more accurately.

    This course examines how complex problems are identified, modelled, and implemented using DDD principles. Through strategic and tactical design practices, participants will translate a real-world domain model into code during live coding workshops.

     

    Delegates will learn how to

    • Understand the purpose and core principles of Domain-Driven Design
    • Identify problem spaces, solution spaces, and subdomains
    • Develop a ubiquitous language with business stakeholders and technical teams
    • Define bounded contexts and map relationships between them
    • Apply tactical DDD patterns such as entities, value objects, aggregates, and domain events
    • Translate a domain model into maintainable code using Clean Architecture principles

     

    Audience

    • Software developers and senior developers working on business-critical applications
    • Software architects and technical leads responsible for application design
    • Development teams that want to improve collaboration with domain experts
    • Professionals involved in designing complex software systems

Outline

1. Introduction to DDD

  • What is DDD
  • Overcoming concerns about DDD
  • Good, bad, and effective design

2. Putting the Domain Model to Work

  • Domain modelling
  • Problem space and solution space
  • Subdomains
  • Core domain
  • Supporting domain
  • Generic domain

3. Ubiquitous Language and Strategic Design

  • Creating a ubiquitous language
  • Bounded contexts
  • Context mapping
  • Relationships between bounded contexts

4. Event Storming

  • Event Storming approach
  • Discovering business events
  • Collaborative domain exploration

5. Tactical Design

  • Entities
  • Value objects
  • Aggregates
  • Domain services
  • Domain events
  • Factories and repositories

6. Clean Architecture

  • The Clean Architecture
  • Separation of concerns
  • Protecting domain logic from infrastructure dependencies

7. Coding Workshop

  • Domain modelling based on a real-world problem
  • Applying strategic and tactical DDD concepts
  • Translating the domain model into code
  • Live coding exercises

Prerequisites

  • Participants are expected to have intermediate programming knowledge
  • Knowledge of a commonly used programming language is sufficient
  • Visual Studio or Rider, Docker, and C# 8.0 must be installed on participants’ computers