Skip to content
Patrik Fredriksson edited this page Jun 30, 2015 · 5 revisions

Introduction

One of the most requested aids to coming up to speed on DDD has been a running example application. Starting from a simple set of functions and a model based on the cargo example used in Eric Evans' book, we have built a running application with which to demonstrate a practical implementation of the building block patterns as well as illustrate the impact of aggregates and bounded contexts.

Status

The sample app was first released in 2008, so it's been around for some time, sadly without much love from its developers for the last few years. We are now in the process of restoring it to incorporate the developments in DDD and changes in the technology landscape that have occurred. Follow our work on the development blog.

Purpose

A how-to example for implementing a typical DDD application Our sample does not show the way to do it, but a decent way. Eventually, the same design could be reimplemented on various popular platforms, to give the same assistance to people working on those platforms, and also help those who must transition between the

Support discussion of implementation practices Variations could show trade-offs of alternative approaches, helping the community to clarify and refine best practices for building DDD applications.

Lab mouse for controlled experiments There's a lot of interest in new tools or frameworks for DDD.

Reimplementing the sample app using a new platform will give a side-by-side comparison with the "conventional" implementation, which can demonstrate the value of the new platform and provide validation or other feedback to the developers of the platform.

##Caveats Domain-driven design is a very broad topic, and contains lots of things that are difficult or impossible to incorporate into the code base of a sample application. Perhaps most important is communication with the domain expert, iterative modelling and the discovery of a ubiquitous language. This application is a snapshot in time, the result of a development effort that you need to imagine has been utilizing domain-driven design, to show how one can structure an application around an isolated, rich domain model in a realistic environment.

The original project was a joint effort by Eric Evans' company Domain Language and the Swedish software consulting company Citerus.

Clone this wiki locally