Much of the software being developed or upgraded today is “mission critical,” an organization becomes so dependent on their software infrastructure that when the software fails, the organization can no longer function. However, when software become mission critical it also becomes very complex and difficult to work with. The major contributing factor to the complexity of the mission critical systems is the complexity of the real world business domain which the software automates. Studies on the failures of both IT systems and projects conclude that the inability to manage domain complexity is the major root cause of the failures.
Domain Driven Design (DDD) was introduced by Eric Evans as a methodology to enable developers to create domain models of complex domains based on an intensive iterative study of the domain and refinements of a domain model. DDD, which originally focused only on the static structures in the domain, is complemented by Event Storming (ES) which integrates how the dynamic processes interact with the domain structures by analyzing the events that can occur in the domain and the domain’s responses to those events. The modern approach to DDD now incorporates the ES process as part of its modeling cycle.
The course starts with a look at the complexity problem and the overall solution provided by the DDD-ES approach. This is supplemented with an overview of domain modeling best practices from both a structural and dynamic perspective. The basic model elements or interfaces are covered in detail – factories, repositories, entities, aggregates, value objects etc. Covered in detail is the knowledge distillation or crunching process, the core investigative technique of DDD-ES and how this process is used to create robust and elegant models.
The course includes more recent work that was not part of the original formulations of DDD and ES such as the process re-engineering aspects of the domain, the inversion of control design principle and other patterns of implementation that have become part of the domain driven design approach since the original Evans material was presented.. Also included is an overview of how other techniques like the Stanford Design Process, Agile, DevOps, Lean Engineering and Agile testing integrate with the domain driven design process.
Since the course deals with modeling, there will be a continuous modeling exercise that will be used to illustrate all of the principles and concepts presented in the course
A fourth day is available as an add
A familiarity with data modeling or object oriented domain modeling is helpful, as well as an exposure to program design using interfaces, although these are not strictly necessary
3 Days/Lecture & Lab
This course is targeted at developers, business analysts, and domain experts who need to work collaboratively to build applications based on complex domains.