Domain Driven Design

Domain Driven Design

Simple Receipt application Domain Model

Object Oriented Programming is a very powerful tool due to which is based on a modeling paradigm and provides an implementation of the model constructions. Java and other tools allow you to create objects and relationships directly analogous to the conceptual model of objects.

Domain-guided or domain-driven design is an approach to the development of software with complex needs by connecting the implementation with an evolving model of key business concepts. 1

A good domain model captures the essential information and abstractions needed to understand the domain in the context of current requirements and helps people understand the domain – its concepts, terminology, and relationships. Object-oriented programming is powerful because it is based on a modeling paradigm.

Guided or domain-oriented design (DDD) is not exactly one technology, but a guide to practices and terminology for organizing the applications and structure the code. DDD is based on abstracting and “naturalizing” the how it interacts with the system.

This term was coined by Eric Evans, in the book “Domain Driven Design ”.2

This approach complements each other very well with MVC architectures, especially in the model layer.

Domain Model for a recipe application

Terminology used in domain-guided design:

Entity: An object defined primarily by a thread of continuity and identity2. The concept of identity adopted by DDD goes further beyond the operations of object-oriented languages ​​that they provide an “identity” to each object. (for example the operator == in java).

The concept of identity, from the point of view of DDD, is one more let’s say, a metaphysical attribute, which emerges from the model and takes meaning through of the domain. It is this concept that guides the design of the operation identity between domain objects. For example, in most applications, the “email” attribute is used as the identifier of two object instances of type User, since two users cannot have the same email.

Value Object: An object that has no identity. Usually such objects are immutable.

Repository: Objects used to store, retrieve, and remove domain objects from multiple implementations storage.

Service: Type of object that performs operations that do not belong conceptually to a particular object.

Aggregate: Cluster of domain objects that can be treated as a single unit.

Factory: The type of object used to create complex Aggregates.

Check our Software Enginnering services:

Contact us for further information
or via Whatsapp

  1. Domain Language, Inc. and contributors, 2007 []
  2. Domain Driven Design, Evans, 2004 [] []
Written by :

Jordi Marti

Telecomunications Engineer graduated in ETSETB Barcelona. Currently located in Girona ( a small city located 80 km in the north of Barcelona). When I was young I started a small internet company called Alquilerjoven.com. After that I worked as full stack engineer, team leader and project manager in the best consultant IT companies in the world. I’m passionate about my job and I’m very good at it. My strongest skill is implication: I am fully involved in all the projects I participate. I am inquisitive person and I enjoy acquiring new knowledge, a key skill in this business. From the beginning of my career I felt comfortable with technology, innovating and designing new strategies and processes in order to boost efficiency , productivity by the use of continuous improvement.

View All Posts

Leave a Reply

Your email address will not be published. Required fields are marked *