DDD: Ubiqitous Language

One of the primary focuses of DDD is ensuring that a Ubiquitous Language is used.  What this essentially means is that everyone, and yes I really mean everyone, involved in the project uses the same terms to describe the system.  Typically as software developers we create our own language in which we speak to describe the various aspects of our software design.  When we then talk to business users we use a different language.  We usually justify these two languages by saying that the business users simply "wouldn't understand" what we were talking about if we tried speaking "our" language to them. 

By speaking in two different languages we create a gap between the developers on the project and the business users who are defining how the application should work.  We miss the opportunity to give proper names and meaning to the objects within our domain.  Although we often think we understand the business of the clients we work for, we often times don't know nearly as much as we think.  The analysts have expertise in the domain, we're just trying to gain some of the knowledge that they've accumulated over the course of their career.  Rather then finding our own names for "components" within the system we should take the business users lead. 

Before I get to far, let me ensure you that I don't think we can simply take everything the business users says and apply it directly to our domain.  We will certainly have to train them to understand parts of our terminology as well.  There has to be collaboration, we need each other to develop the best domain model possible for the systems we develop.

It's not enough to simply use the same language among our internal development teams as well as with the business users.  We need to listen carefully to how we describe the system with the ubiquitous language and look for areas that aren't clear.  We need to refine the language constantly to ensure it keeps up with all the new information we gather from our business users.  When we describe the system the ubiquitous language MUST be used.  By forcing ourselves to use the ubiquitous language at all times we provide ourselves with that much more opportunity for improving the domain.  As we hear ourselves talk about the domain with the ubiquitous language we will identify areas that are confusing, unclear, and desperately need "refactoring."  As the ubiquitous language is updated so to should the domain be updated.

After reading DDD I've begun to notice how much of a divide we create in order to speak the language of different groups of people.  We describe systems one way for fellow developers, another way for user experience and design folks, a third way for project managers, and yet another way for the business users (our client).  I'm still far from knowing how to really apply this in all circumstances, however, I believe having a ubiquitous language and forcing ourselves to use it at all times can certainly help improve our domain.  I am still skeptical that it can really be used with every individual on every project.  What do you think?

 

# re: DDD: Ubiqitous Language

Saturday, July 24, 2004 7:56 PM by Lasse    
Just in case you're not following the XP Yahoo! group, we've been having a very interesting discussion regarding whether System Metaphor should be dropped in favor of Ubiquitous Language, whether System Metaphor subsumes Ubiquitous Language, whether Ubiquitous Language subsumes System Metaphor, etc.

# re: DDD: Ubiqitous Language

Sunday, July 25, 2004 1:20 AM by Steve    
I'll have to stop over and catch up on the discussion!

# re: DDD: Ubiqitous Language

Monday, July 26, 2004 12:41 AM by Darrell    
I agree that it can help. Software requirements are difficult, and anything that can be done to remove communication barriers is usually a good thing.

However, like you mentioned, I don't know if it will work all the time. I never met an absolute that I liked! :) I don't have the experience to say when (if) it will not, and it may just be better to always use ubiquitous language until it causes problems.

# re: DDD: Ubiqitous Language

Monday, July 26, 2004 12:45 AM by Steve    
Darrell, That's pretty much along the lines of what I'm thinking as of right now, give it a shot until it presents problems. At that point evaluate if it was the UL that was the problem or if something else was the issue.

Post a Comment

 
 
Prove you're not a spammer: 
9 + 8 =