This story may sound familiar to you.
A man decides to go to the store one Sunday morning to get a newspaper. Being the thoughtful husband he is he says to his wife “Honey, I’m going to the store for a newspaper, is there anything you need?” She replies “Oh, yes, could you get some bananas? We just ate the last one for breakfast. And, maybe some more eggs and some milk.” He says “Sure” and grabs his keys as he heads for the door. She opens the refrigerator and looks inside. “While you’re there, we need some carrots too, and some lemons, lettuce, and butter.” He pauses at the door. “Anything else?” “Well, yes” she says “Apples, potatoes, oh, and I guess we’ll need some sour cream.” “Ok” he says, and off he goes.
Maybe you’re better at this than I am but I would have a hard time repeating the shopping list without re-reading the paragraph above. There is some evidence that women are better at this than men (and half the people reading this are yelling “What do you mean SOME evidence”) but prior to the days of cell phones most men would return from the store with a newspaper and maybe the bananas.
Most of us would struggle to remember any unordered list of ten items without writing them down. When George A. Miller wrote about “The Magical Number Seven, Plus or Minus Two” he made the case that we can’t hold more than roughly seven to nine items in our short term memory at one time. This is a useful rule in many endeavors but especially so in grocery shopping, and software requirements.
One way to remember the shopping list is to group the items in some way. For example:
Dairy products
- Eggs
- Milk
- Butter
- Sour cream
Fruits
- Bananas
- Lemons
- Apples
Vegetables
- Carrots
- Lettuce
- Potatoes
By raising the level of abstraction and grouping related things together we greatly simplify the task of remembering. With only three things to remember (four if you count the newspaper) the husband has a chance of making it a successful shopping trip.
We can apply similar reasoning to simplify the task of comprehending and validating requirements. Comprehension of complex material is much easier if the material is logically presented, in a top-down manner, from one level of abstraction to the next. If it is not, then the audience must somehow find the connections and logical groupings on their own. With a large volume of material, that task is challenging, if not impossible.
It is a mistake to present our users with lists of hundreds of system shall statements or any other long lists of items. They may nod their heads but it is unlikely they comprehend what they are agreeing to. By using models to organize the material in a logical way we can make it possible for someone to actually understand what they are reading. They will be much more likely to spot missing or conflicting requirements. A requirements management tool that provides different views of the requirements can help but we can also change the way we think about requirements and the organization of the documents we produce. For example, a use case should ideally have nine or fewer steps in the main flow. At each level of detail we should remember the rule of seven plus or minus two.
Thanks to Barbara Minto for the idea for the shopping trip story.