Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Importance of Ubiquitous Language in Domain-Driven Design

DZone 's Guide to

Importance of Ubiquitous Language in Domain-Driven Design

Once developers and domain experts speak the same language, production pipelines can move forward more smoothly.

· DevOps Zone ·
Free Resource

Most commercial software applications are created with a set of complex business requirements to solve specific business problems or needs. However, expecting all the software developers/architects to be experts on business domains and expecting them to know entire business functions is also impractical. On the other hand, how do we create software that brings value and has consumers who are in need of automation that will use the software? A software application cannot be just a showpiece of technical excellence, but in most cases, also real and usable of automated business excellence. The domain-driven design and models are the answers to those questions.

This short article talks about one of the key principles of Domain-Driven Design called "Ubiquitous Language" as DDD concepts, principles, and patterns bring technology and business excellence together to any sophisticated software applications that can be created and managed.

Talk Ubiquitously

Ubiquitous language is a model that acts as a universal language to help communication between software developers and domain experts.

Collaborating, learning, and defining a model brings a lot of initial communication barriers between software specialists and domain experts. So evolving domain model with practicing the same type of communications (discussions, writings, and in diagrams) within a context is paramount for successful implementations, and that sort of conversation is called Ubiquitous Language. It is structured around the domain model and extensively used by all the team members within a bounded context. It should be the medium or mode to connect all the activities of the team within the development of software.

The design team can establish deep understanding and connecting domain jargons and software entities with Ubiquitous language to keep discovering and evolving their domain models.



Ubiquitous Language



Equivalent Pseudo Code



Comments


We Administer Vaccines

AdministerVaccines {}

Not a core domain – need some more specific details

We administer flu Shots to patients

patientNeedAFluShot()

Better, may be missing some domain concepts

The nurse administers flu vaccines to a patient in standard doses

Nurse->administer vaccine(patient, Vaccine.getStandardDose())

Much better, and may be good to start with.


As we observe in the above table, there are various ways the user stories (requirements) can be given; however, the last row makes sense as it does have more clarity on what and how factors.

Hopefully, this article helps readers to get a glimpse of how DDD principles advocates and helps greater collaboration between subject matter experts, business analysts, nontechnology stakeholders with the technical/development community to produce complex domain driven systems. 


Topics:
ubiquitous language ,domain driven design ,devops ,user stories ,agile

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}