
We have a new Customer at home and they have three requirements:
- As a BABY, I don’t want to feel hungry
- As a BABY, I don’t want to be uncomfortable
- As a BABY, I don’t want to be over tired
What I hope you will notice from the above requirements is that they are stated as close to a problem as possible, and the level of ambiguity is rather low. While this example may seem trivial it is surprising how many requirements I see that are stated in terms of a solution, that contain attributes of a solution or are peppered with ambiguity. I have found it hard to get a Customer to see these problems and amend the requirements accordingly; I think it’s much harder than looking after my new Customer, and that’s all consuming and *very* hard.
Agile encourages small feedback cycles and on my current work project this cycle is two weeks, and while this is the timeframe in which the Customer will confirm our course to be correct or not, we can do a lot more to ensure the possibility of moving in the correct direction by spending more time on the requirements themselves. Time spent removing ambiguity and ensuring the wording makes clear what the problem being solved is.
Studies have shown that the costs of fixing errors in the production phase created by false assumptions and ambiguity in the requirements phase are a ratio of some 40 - 1000 times. So economics suggest that more time should be spent on the requirements, and although Agile may mitigate some of these risks the risks remain making it economically prudent to have good requirements.
As a developer I want to give the Customer what they want, and by ensuring they convey the problem they are trying to solve, I am more likely to give them a solution to the problem, even where ambiguity exists. Where a requirement states all or part of a solution the chances are you wont have solved the Customers problem, since you don’t know what it is, and the Customer wont be happy because the problem still exists. A requirement that states a solution can sometimes remove the possibility of options being presented to the Customer, but this depends on the team culture.
Ambiguity exists when two people can read the same requirement and make different assumptions, for example, comparative words like “small” or “inexpensive” lead to ambiguity.
There are a lot of techniques for refining requirements, driving out ambiguity and focusing the requirements to convey the problem and the best collection of these techniques I have found is in the book “Exploring Requirements, Quality Before Design” by Donald C. Gause & Gerald M. Weinberg. However, if time to read the book is an issue, just ask “why?” at least five times on each requirement and “what problem does this solve?”. I typically find this approach uncovers a mass of things that need to be covered.
Update:
Some people have asked me about how requirements can be ambiguous and I thought an example from the book would be ideal. In keeping with things that appeal to my new Customer, I have chosen the example in the book where the authors take a familiar nursery ryme and apply a process of emphasizing each of the words in the line, one by one, and then in combinations to identify ambiguity. They uncover 32 different meanings of just the first line of the familiar poem, that could be 32 different solutions all of which may not be right for the Customer. The poem is:
Mary had a little lamb.
its fleece was white as snow.
And everywhere that Mary went,
The lamb was sure to go.
Here are some of the different meanings uncovered in just the first line of the poem, but please get the book to see the full set which really drives home this technique.
Mary had a little lamb.
(It was Mary’s lamb, not Tom’s, Dick’s or Harry’s.)
Mary had a little lamb.
(She no longer has the lamb)
Mary had a little lamb.
(She had only one lamb, not several.)
Mary had a little lamb.
(It really was surprisingly small.)
Mary had a little lamb.
(She didn’t have a dog, cat, cow, goat, or parakeet.)
Mary had a little lamb.
(John still has his little lamb.)
Mary had a little lamb.
(As contrastred with Pallas, who still has four large turtles.)
My personal favourite is what happens when you apply different dictionary meanings to the words, like ‘had’, for example:
Mary had a little lamb. So what did she have for desert ?