code prole


coding for the proletariat since 1977

Use Case Specifications

Once upon a time I read an essay about the difference between writing and word processing. In the end it boiled down to the difficulty maintaining a coherent creative thread while faced with a myriad of formatting options, real-time spelling corrections, and puzzling grammar suggestions. The author of this essay proposed writing out new material on paper with pencil in order to capture the thought without distraction. Only when the content was fully realized did they advocate entering the document into your word processor of choice.

In my current engagement we are tasked with producing use case specifications from user requirements. Naturally we are using a word processor and document template for the artifacts. Most of the team has worked with use cases in the past, and we are all used to a particular format; one that utilizes tables to structure the normal flow of events and any alternate flows that arise. The table format is short, concise, and very functional. However the table format caused problems with our chosen requirements management software, Rational RequisitePro.

ReqisitePro allows you to tag entries in various artifacts as significant in some way. Later as you develop your application design you can trace back to these significant requirements, thus showing you’ve satisfied them in some way. Unfortunately, RequisitePro had an inability to tag text embedded within a table properly. This client decided to tackle the lack of table support by eliminating the tables from use case specifications.

The new table-less format is perhaps cleaner to the eye, but it relies upon bulleted lists to enumerate the pre and post conditions, normal flow, and alternate flows. Each bullet point has to be named since the numbering is inserted automatically and may change with future revisions. Coming up with a creative and descriptive bullet name is proving to be surprisingly difficult.

All of which brings me back to my central point. Separating the creative process from the presentation process is as important as separating the presentation layer of an application from its business services and persistence mechanisms. At least for the use cases I personally am charged with creating, I am going to capture the content in notepad so as to avoid the temptation to format as I go.


Filed under: UML