Monday, 11 January 2016

What is Domain Driven Design (DDD)?

This is a very small post and i am not going to write about Domain Driven Design (DDD) in deep detail. So what is Domain Driven Design?

As per name says Domain driven design can be a driver for software architecture and implementation of domain model. My recent experience is in Insurance, we are working on Underwriting system. I say we use DDD design pattern for development and we do it by:

  1. Understanding business domain as much as possible by asking relevant questions about Business Domain. I know, learning about any business in full is not easy or possible, but you have to start small, refine, grow, refine!
  2. Create abstraction of that domain in the form of Diagram and implement that abstraction as part of system.
  3. We use Test driven development (TDD) as a driver for domain implementation, that can be Abstraction implementation or full implementation. TDD does not have to be part of DDD but that's what i have experienced that it helps in keeping Domain driven design boundaries in tact.
  4. Once Domain boundaries are implemented as abstraction, one can go and refine it as knowledge of business domain increases. This is like any other profession where the more you work in an industry the more knowledge you have and the better and efficient you are.

So above is very simplistic view of DDD, i could go into details but that was not the point.