Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

In DDD examples it seems the common method for developing the domain model is to sit with domain experts and iterate over versions of the model, say on a whiteboard, continually modifying it and changing it until presumably an agreement is made on how the model looks.

On my project I've spent a couple of days with a domain expert, discussing the domain, and now I want to lock myself away and produce a draft model based on my understanding, rather than producing the model collaboratively with the domain expert. He could then review it, and I could update it according to our subsequent discussions.

Has anyone else worked like this, or does anyone think its a good / bad idea? I think maybe I just find it easier to think creatively when alone.

share|improve this question
    
Who are you? Are you projet manager, developer or business owner? Is it your responsibility to be "creative" on domain model? –  Mert May 18 '12 at 14:36
    
I'm the developer. DDD literature usually describes conversations between a "domain expert" and a "developer". In that respect, I'm the developer. –  Ronnie May 18 '12 at 14:43
add comment

2 Answers

up vote 3 down vote accepted

I would probably minimize the amount of "locking myself away" if I were you as you'll want feedback sooner rather than later. A major point of DDD is developing a ubiquitous vocabulary (UV) so that the developers and the users are speaking the same language and describing thing the same way. You cannot possibly do this on your own--you have to talk to the domain experts and users to do so.

The UV is the basis of your domain model, so if you've all gotten a grip on the vocabulary, it might be reasonable to develop one (or more) models yourself and present them back to the domain expert to ensure that you are on the same page. It is riskier than simply talking through and building the model together.

Bear in mind that this is really a logical model--you may well need to do a lot of stuff to make it a viable implemented physical model, and the domain expert probably won't care much about that aspect, as long as the physical model still is logically equivalent to your logical domain model.

So, I'd say for the initial logical model, you probably are best off working closely with the DE. If you really can't think with others, try meeting with him for an hour or two a day, and spend the rest of the time writing up what you've agreed upon and any new ideas you have for the model, then revise at the next meeting. But meet daily, to avoid the risk of going too far down the wrong path. Once your logical model is healthy, you might be able to reduce the meetings to a couple a week.

The collaboration between users and the development team is almost always a key factor in successful projects.

share|improve this answer
    
Thanks, that sounds about right to me. We have made a good start on the UV, and discussed the logical model in detail, I think it would suit us for me to spend some time alone, and some with the domain expert each day. –  Ronnie May 19 '12 at 14:22
add comment

The only thing that bothers me about your explanation is "lock my self".

Ofcouse you should be developing what you understand from discussion alone (without Domain Expert) but communication should be always open. The sooner you decide to change things the better.

Always communicate and try to understand each other. However as a developer, you will understand the domain better than he understands the model that you are developing, so I think you should be the one deciding how to design the model.

share|improve this answer
1  
"However as a developer, you will understand the domain better than he understands the model that you are developing" Don't think so if the domain reaches a certain degree of complexity. UML diagrams are easy to understand for almost everyone. –  Falcon May 18 '12 at 15:00
    
I agree with @Falcon, that statement sounds to me as ill-founded self-confidence. –  Doc Brown May 18 '12 at 17:04
    
If UML diagrams solved everything then only translating diagrams into code would work and there would be no need for developers. Most of the time as a developer you need to understand the domain and make design desicions yourself. The direct mapping of UML diagrams to code is not always feasible. –  Mert May 18 '12 at 22:47
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.