As mentioned in my last post, the DDD Parcel Service is opening up for business soon. Also as mentioned, the first thing I did was to grab my Domain Expert and start some initial conversations around the first areas I am approaching – the Booking service.
All of the documentation I am generating is to be included in the SVN (SVN public access to follow in the near future please be patient), so hopefully as the design evolves, and the UL and model change with it, this will be evident to some degree within that documentation. I’m going to get boring again, but the documentation is far more important in DDD than many of us Agilists would traditionally like – at least the resulting artifacts are, so it is important to me to show in the documentation why I am making code decisions.
I am primarily using two nifty tools at the moment for capturing the information I need – the ever excellent MS Office OneNote 2007, and a new addition to my arsenal – Balsamiq
OneNote provides and excellent dumping group for notes and ideas as they get fired at me, and quickly allows me to form those into some coherent format.
But the true star of this process so far is Balsamiq.
User Interface Lead Design?
I wanted to validate the User Stories I had extracted from my DE, by showing how these could take form within the UI. To some this may seem like heresy, after all DDD is all about the domain right?
Well, I actually see DDD as being lead by a combination of the Ubiquitous Language on one hand, and the User Stories and Use Cases on the other.
Extracting the UL from the initial User Stories was part of the first task, but validation of these was far easier to do with some visual aid – so a mockup was needed. I could have done this in HTML, but luckily Balsamiq recently became a devlicio.us partner and I was keen to try it in anger on a “real” project.
Mockups Made Simple
The initial user story we worked out was around booking a parcel delivery, and after some discussion we got to:
The Customer wants to be able to send a Consignment , so they log onto the Client website to Book a Delivery:
- They choose their Pickup Location
- They choose their Destination
- They choose their required Pickup Date
- They choose their Delivery Window options
- They choose the Consignment details
- They choose any Special Instructions
- They receive a Quotation for delivery if the system is capable of quoting, or a Callback for a Non-Standard Consignment
- If they wish to proceed they click Confirm
Firing up Balsamiq was quick, and within a few minutes of drag and drop, and a few moments of cursing when I kept forgetting to lock items, I had a good starting point for the UI:
Less than 30 minutes later I had the whole story mocked up and ready to validate. Not unsurprisingly, it was really easy for my DE to look at these screens and envisage the process in action. This lead to a few changes in the UL, and a couple of extra questions arising – exactly the kind of validation that was needed. Had I done this in HTML or code I could have spent a good many hours doing something not half as representative.
If you want to see the initial modelling you can download them as PDFs here:
Kudos to both OneNote and Balsamiq for excellent applications to let me gather and organise the results of my initial conversations!
03-09-2009 5:39 PM