An Introduction To Domain Driven Design and Its Benefits - DZone Agile

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

 

[LIVE WEBINAR] Wednesday, June 10th: Getting Started with DevOps on Snowflake
Sign Up Now 
DZone > Agile Zone > An Introduction to Domain Driven Design and Its Benefits

An Introduction to Domain Driven Design


and Its Benefits
by Lea Maya Karam · Aug. 16, 17 · Agile Zone · Opinion

Automated testing is a significant step on the road to continuous


delivery. Download this guide to learn when to implement test-driven
development, how to automate mobile UI testing, and much more.
Presented by DZone

An application can be developed with an amazing architecture, using the latest technologies and have the
best interface, etc., but if it doesn’t solve the business’s needs, it won’t be considered useful. That’s where
domain driven design (DDD) comes in. As its name says, the point here is to focus on the domain of a
speci ic business.

In fact, to design good software, it’s important to know what that software is about. To create a banking
software system, you need to have a good understanding of what banking is all about, one must
understand the domain of banking.

What Is Domain Driven Design?


In software development, the domain driven design approach is used for complex needs, connecting the
implementation to an evolving model of the core business concepts. It puts the focus on the problem
domain and basically helps identify the architecture and inform the team about the mechanics that the
software needs to replicate.

DDD has a strategic value and it’s about mapping business domain concepts into software artifacts. It’s
about organizing code artifacts in alignment with business problems, using the same common, ubiquitous
language.

DDD isn’t a methodology, it’s more about the software’s architectural design, providing a structure of
practices to take design decisions that help in software projects that have complicated domains.

The DDD approach was introduced by Eric Evans in the book, Domain-Driven Design: Tackling Complexity
in the Heart of Software. Each developer here at Apiumhub has read it and we de initely recommend you
read it too!

Mainly, domain driven design focuses on:

The core domain and domain logic.


Complex designs on models of the domain.
I i th li ti d l d l i i d i l t d
Improving the application model and resolving emerging domain-related
issues by collaborating with domain experts.

DDD encompasses a common language, techniques, and patterns as well as an architecture. The focus is
put on the business and on modeling the problems that are trying to be solved.

With DDD, the developers get techniques that will help to minimize complexity and that will help drive
collaboration with the rest of the team. The idea is to use the requirements and to map out the business
processes into the model by using the same language that is used by the business itself.

A Few Common Terms Used for DDD


Ubiquitous Language
Here we are talking about a language that is used by the team in order to connect all the activities of the
team with the software. The ubiquitous language of DDD helps when it comes to knowing more about
terms that are used by the business experts. The tech team is able to know if the language changes and if a
speci ic term will be used for a different meaning.

Context
The context is a setting that determines the meaning of a statement.

Context Mapping
A graph that connects the contexts together. For each context, you ind a language, an independent
implementation, and an interface to talk to other bounded contexts.

Bounded Contexts
Bounded context is the context in which the ubiquitous language and the corresponding models are valid.
It gives the team a clear understanding of what has to be consistent and what can be developed
independently.

Model
The model is a system that describes the selected aspects of a domain and that is often used to solve
problems that are related to that particular domain.

What Are the Characteristics of a Strong Domain Model?


Being Aligned with the business’ model, strategies, and processes.

Being isolated from other domains and layers in the business.

Be loosely designed with no dependencies on the layers of the application on either side of the
domain layer.

Being reusable to avoid models that are duplicated.

Be an abstract and cleanly separated layer to create easier maintenance, testing, and versioning.

Minimum dependencies on infrastructure frameworks to avoid outliving those frameworks and


tight coupling on external frameworks.
tight coupling on external frameworks.

Designed with a “Plain Old Java Object” programming model without having any technology or
framework dependencies.

We do agree that this is a very brief and short introduction to DDD. The point of this article was to give you
an idea of what domain driven design is. I will leave you with a list of key bene its of DDD that might make
you even more curious about the topic!

Key Benefits of Domain Driven Design


Business Necessities Are Oriented
As you know, with domain driven design, everyone ends up using the same language and terms and the
team is sharing a model. Developers communicate better with the business team and the work is more
ef icient when it comes to establishing solutions for the models that re lect how the business operates,
instead of how the software operates.

A Common Set of Terms and Definitions Used by the Entire Team


This is quite clear but let’s mention it again. Teams ind communication much easier during the
development cycle because, from the beginning, they focus on establishing the ubiquitous language that is
common to both parties (development and business experts). The language is linked to the domain model
of the project and technical aspects are referred to through simple terms that all understand.

Keeping Track Is Made Easier


This goes without saying, if everyone is using the same terminology, it becomes quite simple to keep track
of requirement implementation.

Better Code
With DDD you end up with more readable code and less duplication.

Agility Is a Standard
By following an Agile approach that is iterative and incremental, DDD clari ies the mental model of
domain experts into a useful model for the business.

Get a Good Software Architecture


All the teams are able to understand where certain integrations are important and why. This means you
know you’re getting a good software architecture.

Communication Counts
Generally speaking, DDD comes in handy when it comes to helping the team creating a common model.
The teams from the business’ side and from the developer’s side can then use this model to communicate
about the business requirements, the data entities, and process models.

A Balanced Application
With DDD, you build around the concepts of the domain and around what the domain experts
are advising. This implies that the applications developed will indeed represent what the domain needs
instead of getting an application that is only focused on UX/UI, forgetting the rest of requirements. This
helps in creating a balanced product that suits the users/audience of that speci ic domain.

Stay Focused on the Solution


Stay Focused on the Solution
The fact that there are clean boundaries around pure models enables the developers to put their efforts
into what matters the most, it enables them to focus on the solution.

Purely Flexible
DDD turns around the concepts of object-oriented design. This implies that almost everything in the
domain model is based on an object and therefore will be modular and encapsulated, enabling the system
to be changed and improved regularly and continuously.

Doing DevOps for a database environment is difficult and has some


unique challenges compared with doing DevOps for applications.
Learn about the approaches and tools used for database change
management in the live webinar on June 10th. Register now!
Presented by Snowflake

Like This Article? Read More From DZone


DZone Article DZone Article
Rethinking Software Architecture Almost Infinite Scalability
Outputs

DZone Article Free DZone Refcard


Notes on Domain-Driven Design Europe Agile Patterns
II - 2018 Edition

Topics: AGILE , DOMAIN DRIVEN DESIGN , SOFTWARE ARCHITECTURE

Published at DZone with permission of Lea Maya Karam . See the original article here. 
Opinions expressed by DZone contributors are their own.
DZone > Agile Zone > Issue Prioritization Template

Issue Prioritization Template


by Asya Chirkova · May 28, 20 · Agile Zone · Tutorial

Kubernetes and CI/CD Trend Report: In light of the


prominence and growing necessity of Kubernetes in
any discussion of CI/CD processes, we examine the
present and future state of both Kubernetes and
CI/CD individually and together as cooperative and
opposing entities. Download Now ►

Introduction
Many companies have faced the problem of issue prioritization, and my team is no exception. Customers
wanted new features, managers offered their ideas, and developers came up with their solutions. Our
product backlog in Jira turned into an endless list of issues. The sprint planning meetings took hours and
ended up with the sprint still not getting the most signi icant backlog issues.

Our solution was to create a Google Sheets spreadsheet to prioritize tasks and synchronize the remote

You might also like