Online. Offline. Bottom Line.™ (skip to the content)

Home | About | Jobs | Privacy Policy | Contact | Login or Register


Domain Driven Design

by

It has been about four years since Eric Evans published the first Domain Driven Design book, and the software engineering community is slowly but surely embracing the ideas behind it.  Which shouldn’t be surprising, since the ideas behind Domain Driven Design (DDD) had actually been used in good software design for years before Evans coined the term.

Domain Driven Development (DDD) is an approach to designing software that sets the primary focus on the domain and domain logic (hence the incredibly creative name).  Design your domain (or business) layer first, and then design the services and supporting classes around it.  As it turns out, this design approach has been around longer than the book, although Evans does a very good job of describing the high level concepts and practices that make it successful.  Some of the concepts incorporated into DDD are:

  • Multilayer Architecture - A separate domain and service layer is essential to DDD.
  • Tried and True Design Patterns - DDD encourages the use of many proven design patterns, such as Entities (Reference Objects), Value Objects, Data Access Objects, Factories, and Service Objects.
  • Aspect-oriented programming (AOP) - AOP makes it easy to factor out technical concerns (such as security, transaction management, logging) from a domain model, thereby making it easier to design and implement domain models that focus purely on the business logic.
As stated before, these concepts have been used for years, and most software engineers have been exposed to them. Utilizing them together as Evans does in DDD presents a strong design approach to complex software projects. If you haven’t tried DDD yet, I highly recommend it.

Found in • (2) CommentsPermalink http://www.sundog.net/index.php/sunblog/entry/domain-driven-design/
Like this post? Subscribe to our RSS feed. RSS icon

© 2008 Sundog, All Rights Reserved xhtml | css | 508 | What's This?