• Online, Self-Paced
Course Description

One major benefit to using Domain-driven Design is the ability to integrate various other sources and processes. This course will explore and guide you through the ways to do this. You will be introduced to communication in Domain-driven Design followed by factories, repositories, and refactoring. Finally, you'll learn about methodologies and application architecture layers.

Learning Objectives

Application Architecture Layers

  • start the course
  • recognize the roles of various layers in the DDD architecture
  • recognize the purpose of layered architecture in DDD
  • describe the use of service layers of DDD

Communication in DDD

  • describe the differences between domain experts and stakeholders
  • recognize the domain model boundaries and the effects
  • describe the use of ubiquitous language in DDD
  • describe best practices for communication in DDD
  • describe the benefits of modeling and communication in DDD
  • explain best practices for documenting communication in DDD

DDD Factories

  • describe factories and how they're used in DDD
  • describe the benefits of factories
  • describe the interface of factories
  • explain the rationale for choosing factories


  • explain repositories and their uses
  • explain the benefits of repositories
  • explain the considerations for using relational databases


  • describe the concept of refactoring
  • explain the uses and levels of refactoring in DDD
  • explain the concept of deep models in DDD
  • explain the concept of supple design in DDD
  • explain the purpose of the discovery process in DDD

Development Methodologies

  • explain the linkages between Behavior-driven Development and Domain-driven Development
  • describe the use of event storming
  • describe the purposes of transaction scripting vs. DDD

Practice: DDD Expansion and Integration

  • recognize the concepts of various design patterns in DDD

Framework Connections

The materials within this course focus on the NICE Framework Task, Knowledge, and Skill statements identified within the indicated NICE Framework component(s):

Specialty Areas

  • Software Development
  • Systems Development