A step-by-step guide for learning and practically applying each aspect of Domain-Driven Design (DDD) - from orienting around an organisation’s business model to coding a domain model.

GitHub - ddd-crew/ddd-starter-modelling-process: If you're new to DDD and not sure where to start, this process will guide you step-by-step

If you're new to DDD and not sure where to start, this process will guide you step-by-step - ddd-crew/ddd-starter-modelling-process

The Process

The modelling process is composed of 8 steps which can be grouped into 4 distinct phases:

  1. Align & Understand
  2. Strategic Architecture
  3. Strategy & Org Design
  4. Tactical Architecture
DDD Starter Modelling Process image

Watch the talk by Maxime Sanglan-Charlier on DDD Europe conference for an introduction of the DDD Starter Modelling Process.

This process is not an all-or-nothing deal. You can apply the ideas from DDD as much or as little as you feel is beneficial to the project you’re working on.

Align & Understand

In order to design, build, and evolve software systems most effectively, our decisions need to create the optimal business impact, which can only be achieved if we are aligned to the business goals, as well as supporting the users current and potential future needs.

Understand

Understand the organisation’s business model, the needs of its users, and its short, medium, and long-term goals.

  1. Create a short product or feature brief to frame and constrain the project.
  2. Identify key capabilities and high level goals and objectives of the project.

Opportunity Canvas

The opportunity canvas will ask you to understand the problem you’re solving and the user you’re solving it for.

Opportunity Canvas image

Opportunity Canvas – We help you create successful product culture and process

An opportunity canvas is a one-pager that you’d use to unpack your beliefs about a new feature or capability you’d like to add to your product. If you’re responsible for the success of your product, or just don’t like wasting time building things without knowing why, this will help.  

Discover

Discover the domain visually and collaboratively spreading domain knowledge through the whole team to create a shared understanding of the product to build.

It enables the developers to build a software system aligned to the domain which can be more flexible to incorporate future business changes.

User Story Mapping

User story mapping is a collaborative technique to discover the domain and its key concepts, as well as the relationships between them. It is a great way to align the team on the problem space and the solution space.

User Story Mapping – We help you create successful product culture and process

User Story Mapping is a dead simple idea. Talk about the user’s journey through your product by building a simple model that tells your user’s story as you do. It turns out this simple idea makes working with user stories in agile development a lot easier.

Strategic Architecture

Strategic Domain-driven Design (DDD) has become an established practice for system decomposition and service identification in recent years.

Decompose

How to decompose software systems into cohesive modules (or components and services) that are loosely coupled is one of the classic questions and challenges in software engineering.

Achieving high cohesion within the services and loose coupling between them is crucial to keep the application scalable and maintainable.

We decompose a large problem domain into sub-domains (loosely-coupled parts of the domain) for a few key reasons:

  • Reduced cognitive load, so that we can reason about parts of the domain independently.
  • Identifying loose-coupling and high-cohesion in the domain which carries over to our software architecture and team structure.
  • Give development teams autonomy, so that they can work on separate parts of the solution
Opportunity Canvas image

Strategy & Org Design

Define sub-domains - parts of the domain you want to invest on - and the most suitable organisation design and team structure.

Strategize

Strategically map out your sub-domains to identify core domains: the parts of the domain which have the greatest potential for business differentiation or strategic significance.

Revisiting the Basics of Domain-Driven Design

I have quite a few friends in the DDD community. Fortunately, or not, we always tend to disagree on the definitions of such basic terms as Domains and Subdomains. In this post, I want to think aloud and outline my thoughts on the subject. Disclaimer As I just said, some of the things I’m about to write are my opinion only. Many of you might disagree with some of them. Hey – the last time we spoke about it, Eric and Vaughn were not fans of my theory. But, nevertheless, it is based on my 7-year long DDD journey at our company, and it works for me. I believe it might work for you as well.

Core Domain Charts

GitHub - ddd-crew/core-domain-charts: A tool for collaboratively finding your core domains - strategic business differentiators

A tool for collaboratively finding your core domains - strategic business differentiators - ddd-crew/core-domain-charts

Updated: