Home > Work > Thoughts after modelling with Use Cases

Thoughts after modelling with Use Cases

This was the first time for several years that I started a new round of development by modelling use cases. The team were familiar with the concept but had mostly not worked this way before, and at the outset were not entirely sold on the approach. After completing the first batch of use cases we held a review to see how we found it and how we could do it better.

Our situation

This was a significant enhancement to an existing system. We first tried to define all the use cases, to scope out the size of this significant and complex process. We expanded three new high level use cases into about 15 lower level ones.

Our intention was to complete an overview of the use case model, and also define the Logical Data Model (at least to entity level), before delving into the detail. Early availability of the team meant we started working on the detail sooner that was ideal in retrospect and wasted some effort, but the team members would otherwise have had nothing else to do.


These were for system use cases describing entirely back end processing where the only actor was the system. Some schools of thought say use cases shouldn’t be used in this situation at all. We found it valuable as a way of identifying the main components, especially common functionality, and then working out the interaction between them.

A single use case diagram turned out to be surprisingly useful in providing a visual summary. We also found it was ideal for tracking who was working on which one – just by writing the author’s initials on the oval in the diagram! I have always been cynical about the value of diagrams, but was proved wrong in this case.

We got the granularity roughly right; when we reviewed the model, the only change agreed was to extract an alternative flow into a separate use case. There was one other use case which some of us (including me) thought was too short but after a brief discussion it was clear there was no agreement. I curtailed discussion and stuck with the status quo as in my view if something isn’t obviously wrong then it is better to leave it as it is, rather than spending a lot of effort trying to get the model “perfect”.

Aligning the team to a common style was surprisingly difficult. This applied both to simple writing style and formatting issues, as well as agreeing what the content of certain sections should include. This could fill a whole post in itself. Before starting I held a quick overview session, then each member of the team wrote a couple of use cases, and then they were all reviewed by someone else, so we could all learn from each other and gradually coalesce around a standard. Ultimately we concentrated on the content, not the format.

How best to organise the documentation? We tried to find the happy medium between one long use case document and one per use case, balancing the ease of availability for update and the overhead of maintaining multiple small documents. We agreed that related use cases should be in the same document, as often the same person would probably need to update several of them at the same time. This meant between two and six use cases per document.

The team view

It took a while for the team to become used to the tighter constraints imposed by a formal use case structure. But once we had managed it, we agreed that it imposed a rigour on our thought processes, resulting in a very clear set of functional requirements.

The developers like it as it is clear what they must now develop. By the time we had worked up some complete documents, they were sufficiently detailed to code from without needing to write any further technical specifications. It proved quite easy for one of the developers to take a set of use cases and produce a sequence diagram.

Overall, we have made good progress in establishing a standard that will help us to deliver what the client wants. On to the next set!

Categories: Work Tags: ,
  1. No comments yet.
  1. July 28, 2010 at 11:05 pm
  2. August 9, 2010 at 8:59 pm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: