DDD - Domain-Driven Design

2 days - Advanced

This training is for those looking to grasp the fundamental concepts of Domain-Driven Design. Get hands-on and learn to turn complex business ideas into working code through practical, real-world examples and straightforward theory.

craftmanshipengineeringqualityddd

Training details

Domain-Driven Design (DDD) is a key approach in software development that ensures software closely reflect its business domain intricately. This method is particularly valuable in complex business environments where software projects often face significant challenges: fragile and inflexible code, high maintenance costs, difficulties in updating the codebase, issues with knowledge transfer due to staff turnover, and a lack of deep understanding of business expertise. These issues can lead to diminished credibility and trust in the software.

DDD addresses these challenges by placing the domain model at the heart of the software's architecture, naming conventions, and development process. This approach provides a robust framework and set of techniques for modeling the software's domain, promoting a shared understanding and language among all those involved in the application's development. This approach helps to clarify and manage the complexities inherent in software design.

This 2-day training offers an in-depth exploration of DDD's essential concepts, focused on their practical implementation. Participants will learn how DDD provides effective solutions to common software design challenges and will gain hands-on experience in applying these concepts to real-world situations. The training is designed to build a thorough understanding of DDD, emphasizing its practical benefits and applications.

Objectives

Target Audience

Prerequisites

Pedagogical method

The training is a practical, skill-acquisition oriented program, based on a case study, practical exchanges, and the trainer's real-world experiences. An Event Storming session will be conducted to help participants grasp business issues and follow a hands-on implementation, either in pairs or as a group.

The training is a blend of:

Evaluation and follow-up mode

Evaluation is ongoing throughout the session through workshops and practical exercises. A self-assessment form will be sent before and after the training. A satisfaction survey is conducted at the end of the session, and a certificate of completion is provided to each participant.

Program

  1. Day 1

    • Core Concepts and Foundations of DDD
      • Introduction to Domain-Driven Development and overview of key principles.
      • Strategic Design: Bounded Contexts, Domains, and the Ubiquitous Language.
      • Tactical Design: Domain Entities, Aggregate, Factories, Repositories, and Application Services.
    • Usage Framework and Case Study
      • Interactive Case Study Analysis.
      • Event Storming session to understand and visualize the business case effectively.
      • Practical Modeling: Domain Events, Commands, External Systems, and User Roles.
      • Reflections/discussions on Bounded Contexts, Aggregates, and the Ubiquitous Language.
  2. Day 2

    • Defining a Robust Model
      • Analyzing Real-world examples.
      • Identifying and avoiding common pitfalls.
    • Use case implementation (Pair Programming or Mob-Programming)
      • Iteration 1: Crafting initial Aggregates, Entities, and Value Objects
      • Iteration 2: Transitioning Value Objects to Entities
      • Iteration 3: Implementing and emitting Domain Events
      • Iteration 4: Responding to Domain Events
      • Iteration 5: Refactoring for Optimized Class Grouping and Bounded Contexts
      • Iteration 6: Effective interaction with Domain Objects via Application Services
      • Iteration 7: Efficient storage of Domain Events and Aggregates using Repositories
    • Synthesis and recall of key points

Contact us to discuss your project

Send us an email and we will get back to you as soon as possible[email protected]