Introduction to Domain Driven Design

Master DDD to improve collaboration, increase productivity and produce higher quality software

TT1190

Introductory

3 Days

Course Overview

Overview

In today's highly competitive and rapidly changing software industry, the ability to design and develop software that aligns with the business needs is essential. By adopting a domain-driven approach to software development, organizations can achieve a better alignment between the software and the business needs, leading to improved collaboration, increased productivity, and better quality of software. Additionally, DDD can help developers reduce complexity, improve maintainability, and increase flexibility in their codebase.

Introduction to Domain-Driven Design is a three-day, workshop style course designed to provide students with a comprehensive understanding of DDD and its application in real-world projects, offering an engaging learning experience for those interested in software development and design.  Throughout the course, you’ll explore the key concepts and principles of DDD, including building blocks, designing bounded contexts, strategic design, tactical design, and learn how to apply DDD in real-world projects. You’ll learn how to identify a domain model, design entities and aggregates, implement domain services and repositories, and create context maps for different subdomains.

Learning Objectives

Working in an interactive learning environment, led by our expert facilitator, you will learn how to:

  • Identify a domain model and design entities, value objects, and aggregates for a given domain using domain-driven design (DDD) principles.
  • Design bounded contexts, create context maps, and apply strategic and tactical design patterns in DDD to implement software systems that align with the business needs.
  • Apply DDD in real-world projects, including identifying and overcoming challenges, and implementing best practices.
  • implement domain services and repositories, and apply domain events and event sourcing, and CQRS using DDD principles and tactics.
  • Analyze business requirements and identify core concepts and relationships within a domain to develop software that aligns with the business needs.
  • Develop collaboration and communication skills necessary for working in a team environment in software development projects.
  • Apply DDD to reduce complexity, improve maintainability, and increase flexibility in software systems.
  • Identify anti-patterns and pitfalls in DDD and avoid common mistakes when applying DDD principles in practice.

Course Objectives

Learning Objectives

Working in an interactive learning environment, led by our expert facilitator, you will learn how to:

  • Identify a domain model and design entities, value objects, and aggregates for a given domain using domain-driven design (DDD) principles.
  • Design bounded contexts, create context maps, and apply strategic and tactical design patterns in DDD to implement software systems that align with the business needs.
  • Apply DDD in real-world projects, including identifying and overcoming challenges, and implementing best practices.
  • implement domain services and repositories, and apply domain events and event sourcing, and CQRS using DDD principles and tactics.
  • Analyze business requirements and identify core concepts and relationships within a domain to develop software that aligns with the business needs.
  • Develop collaboration and communication skills necessary for working in a team environment in software development projects.
  • Apply DDD to reduce complexity, improve maintainability, and increase flexibility in software systems.
  • Identify anti-patterns and pitfalls in DDD and avoid common mistakes when applying DDD principles in practice.

Course Prerequisites

Audience & Pre-Requisites

The intended audience is software developers, software engineers, technical architects, and anyone involved in software development and design. This course is also suitable for project managers and business analysts who work closely with development teams.

The roles that would benefit from this course include:

  • Software developers who want to learn how to apply DDD principles to their projects and write software that aligns with the business needs.
  • Software engineers who want to deepen their understanding of DDD and learn how to design and develop software that is maintainable, flexible, and scalable.
  • Technical architects who want to incorporate DDD into their design strategies and lead the development of software systems that align with the business needs.
  • Project managers who want to gain a better understanding of the software development process and how to collaborate more effectively with development teams.
  • Business analysts who want to learn how to identify and map out the core concepts and relationships within a business domain and translate them into software requirements.

Overall the course is suitable for anyone interested in learning how to apply DDD principles to software development and design. Whether you are a seasoned developer or just starting your career, this course offers a unique and valuable learning experience that will help you advance your skills and career in software development.

Pre-Requisites

In order to benefit from the course you should have a basic understanding of software development concepts, including programming languages, software architecture, and design patterns. It is recommended that students have at least 1-2 years of experience in software development or a related field.

Ideally, students should have the following knowledge and skills:

  • Proficiency in at least one programming language, such as Java, C#, or Python.
  • Familiarity with software architecture concepts, such as MVC, microservices, or event-driven architecture.
  • Basic understanding of software design patterns, such as Factory, Singleton, and Observer.
  • Knowledge of database concepts, such as SQL and NoSQL databases.

Course Agenda

Day 1: Introduction to Domain-Driven Design

  1. What is Domain-Driven Design?
  • Definition of DDD
  • Why DDD is important
  • Overview of the DDD process
  • Lab: Identifying a Domain Model - Students will work together to identify a domain model for a given problem, using pen and paper to map out entities, attributes, and relationships.
  1. Building Blocks of DDD
  • Entities, Value Objects, and Aggregates
  • Bounded Contexts and Context Maps
  • Ubiquitous Language
  • Lab: Identifying Entities, Value Objects, and Aggregates - Students will work together to identify the entities, value objects, and aggregates for a given domain model, using pen and paper to map out their properties and relationships.

Day 2: Implementing Domain-Driven Design

  1. Designing Bounded Contexts
  • Context Maps and Subdomains
  • Context Mapping Patterns
  • Context Mapping Anti-Patterns
  • Lab: Creating a Context Map
  • Description: Students will work together to create a context map for a given domain, using pen and paper to identify the subdomains and their relationships.
  1. Strategic Design
  • Strategic Design Principles
  • Domain Vision and Core Domain
  • Designing Entities and Aggregates
  • Domain Events
  • Lab: Designing Entities and Aggregates - Students will work together to design the entities and aggregates for a given bounded context, using pen and paper to map out their properties and relationships.

Day 3: Applying Domain-Driven Design

  1. Tactical Design
  • Repository Pattern
  • Domain Services
  • Domain Events and Event Sourcing
  • CQRS
  • Lab: Implementing Domain Services and Repositories - Students will work together to implement domain services and repositories for a given bounded context, using pen and paper to map out their interactions.
  1. Applying DDD in Real-World Projects
  • Challenges of applying DDD in practice
  • Success stories of applying DDD
  • Best practices for applying DDD in a project
  • Lab: Applying DDD in a Real-World Project - Students will team to apply DDD principles to a real-world project, using pen and paper to map out the domain model, design bounded contexts, and implement tactical design patterns.

Course Materials

Student Materials: Each student will receive a Student Guide with course notes, code samples, setp-by-step written lab instructions, software tutorials, diagrams and related reference materials and links (as applicable). Students will also receive related (as applicable) project files, code files, data sets and solutions required for any hands-on work.

Raise the bar for advancing technology skills

Attend a Class!

Live scheduled classes are listed below or browse our full course catalog anytime

Special Offers

We regulary offer discounts for individuals, groups and corporate teams. Contact us

Custom Team Training

Check out custom training solutions planned around your unique needs and skills.

EveryCourse Extras

Exclusive materials, ongoing support and a free live course refresh with every class.

Mix, Match & Master!
2FOR1: Two Courses, One Price!

Enroll in *any* two public courses (for 2023 *OR* 2024 dates!) by December 31, for one price!  Learn something new, or share the promo!

Click for Details & Additional Offers

Learn. Explore. Advance!

Extend your training investment! Recorded sessions, free re-sits and after course support included with Every Course
Trivera MiniCamps
Gain the skills you need with less time in the classroom with our short course, live-online hands-on events
Trivera QuickSkills: Free Courses and Webinars
Training on us! Keep your skills current with free live events, courses & webinars
Trivera AfterCourse: Coaching and Support
Expert level after-training support to help organizations put new training skills into practice on the job

The voices of our customers speak volumes

Special Offers
Limited Offer for most courses.

SAVE 50%

Learn More