Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at
Suggestions for a Sample Application?

I've been playing around with some ideas that I want to drop into a sample application, but I am struggling to find a good domain to base the application in.

My problem seems to be around the ISV side of things, as I want to include and show some of the key aspects of DDD, I need a fairly complex and well defined domain, one that I can for my own amusement pretend to be a domain expert in. DDD is less suited to ISV products than it is to in-house applications.

By their nature ISV products must be highly configurable, the domain must be very flexible to allow clients to put their own business model into the application, rather than stick to one imposed by the ISV. “good” examples of this are products like MS CRM and CAFM programs. In the former each client site will have their own definition of what a contact or lead looks like, and how they progress from one stage to another. In the CAFM example, clients all have different definitions of assets and of how those assets are held and managed.

DDD is fundamentally based around the application mirroring the business’s own business model, and writing code to meet that objective as efficiently and effectively as possible.

So, here are some of my thoughts about they type of application I want to work on, if you have any suggestions, please drop them in a comment, or drop me a line directly. I think I have brain freeze!

  • I want to show aspects of ASP.NET MVC, DDD, and OR mapping – therefore initially this will be a web based application.
  • The application must have a varied set of rules and user and automated operations
  • The application should be of some use after it is written, I would like to start something that could actually be used by businesses, rather than just thrown away. This way it may get it’s own momentum, and evolve.

The domain in which it exists should be fairly well known, so that I can write it without too much research, and developers can understand it without too much of a mind shift.

Some of my varied ideas so far have been:

  • A project/story tracker (has this idea been done to death?)
  • A help desk application (I’ve written a few of these on the past)
  • A facilities management system (is this too generic?)
  • A shipping/tracking system to monitor and report on external haulage (this may be too specific to each place)

Any ideas?

Posted 02-05-2009 8:20 AM by Jak Charlton



Wookie wrote re: Suggestions for a Sample Application?
on 02-05-2009 3:45 AM

If you're gonna play the domain specialist role in this project, I would say go for something you actually know very well, it might make the DDD role-playing better. Otherwise it might be really hard to separate the domain specialist role from the developer role. So in that light it seems to me that the helpdesk app is a good fit.

Even better would be if you could actually find someone who is a true domain specialist at some area that you don't know much, so you could have some real DDD going on.

Glyn wrote re: Suggestions for a Sample Application?
on 02-05-2009 5:00 AM

Go for a really good issue tracker, something that every developer needs. Trac being an excellent example.

Darnell wrote re: Suggestions for a Sample Application?
on 02-05-2009 6:06 AM

A complete IT Service Management System. Not just helpdesk ticketing system but one with change management function. Probably ITIL based.

Mike wrote re: Suggestions for a Sample Application?
on 02-05-2009 6:12 AM

I'm currently writing an issue tracker as a pet project and would advise against it as a DDD example, doesn't seem to have the complexity to carry it through.

Jak Charlton wrote re: Suggestions for a Sample Application?
on 02-05-2009 6:32 AM

Mike, I agree an Issue Tracker isn't complex enough - it has maybe 5-10 entities ...

Darnell, yeah a more encompassing service management solution may be more appropriate, what kind of domains do you think it would encompass?

Darnell wrote re: Suggestions for a Sample Application?
on 02-05-2009 7:39 AM

Incident, Problem, Change, Request,  CI (Configuration Items), Service Catalogs, SLA, Requestor/Affected User.

Change Management should have approval system and you'll probably have the notion of 'Change WorkFlows' or 'Processes'.

For Incident/Problem type of tickets you'll have 'Escalation' procedures depending on the 'Incident/Problem Category'.

You also difinitely going to have different types of users like Helpdesk, Change Manager,  Change Advisory Board, Normal Users.

There are definitely more and I think implementing COBIT or ITIL will make more interesting as they have defined these terminologies well and these will help in identifying your domain entities and services.

Artur Trosin wrote re: Suggestions for a Sample Application?
on 02-05-2009 9:14 AM

Hi Casey ,

Nice idea, but how about complicating the idea and use Distributed DDD(at least in some specific cases or new versions), if some maybe simple DDD examples already exists DDDD doesn’t.

What do you think?

Jak Charlton wrote re: Suggestions for a Sample Application?
on 02-05-2009 10:45 AM

I think DDDD is the domain of Greg Young at this point, as it isn't really formalised.

At this point, my concern is that lots of people are picking up patterns from DDD, and thinking they are dong DDD. The idea of a sample is to try and show how those things live coherently together, but certainly not to claim it is DDD.

However, I'm sure if I get something worthwhile going, then it could be extended in time to incorporate some of Greg (and Udi's) ideas on DDDD ... if I just find a domain that suits it from the beginning :)

Thomas G. Mayfield wrote re: Suggestions for a Sample Application?
on 02-05-2009 11:42 AM

I'd recommend a code review tool--changeset review with multiple source control backends.  It's something that has an audience, but is not at all a saturated market yet.

I'm not very fond of doing sandbox applications without a pressing need, no matter how illustrative.  Do something that's been done a hundred times, and you're likely to give up halfway through because you know you're writing an already-dead tool.

Morten Haug wrote re: Suggestions for a Sample Application?
on 02-05-2009 1:14 PM

"Classical" project managment. You may say that there aren't alot of entities, but the complexity is pretty high with lots of calculations and scheduling algorithms. Resource levelling and so on.

May be tough of course with no domain knowledge.

Jak Charlton wrote re: Suggestions for a Sample Application?
on 02-05-2009 1:54 PM

@Thomas yeah the "writing dead tool" thing has hit me before .. I'm trying to set myself up not to fall into that ... a source control app may be fun, but I suspect (and I am no expert on SCM) that it is a actually a very simplistic model, with a hell of a lot of UI and data translation

@Morten, yeah project managers scare me - I try to avoid them! :)

About The CodeBetter.Com Blog Network
CodeBetter.Com FAQ

Our Mission

Advertisers should contact Brendan

Google Reader or Homepage Latest Items
Add to My Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online
Subscribe with myFeedster
Add to My AOL
Furl Latest Items
Subscribe in Rojo

Member Projects
DimeCasts.Net - Derik Whittaker

Friends of
Red-Gate Tools For SQL and .NET


SmartInspect .NET Logging
NGEDIT: ViEmu and Codekana
NHibernate Profiler
Balsamiq Mockups
JetBrains - ReSharper
Web Sequence Diagrams
Ducksboard<-- NEW Friend!


Site Copyright © 2007 CodeBetter.Com
Content Copyright Individual Bloggers


Community Server (Commercial Edition)