Once again a reminder that the opinions expressed in is blog are mine and not those of my employer.
One of the issues that I come across in my work as a senior technical professional is requirements. and more to the point what makes a good requirement vs a bad requirement. This somewhat simple process of understanding the requirements of the solution that you are being asked to implement, design, cost etc. is in my experience the major place where projects de-railed and without a reasonable approach to getting the requirements right & managing the changing of requirements you get yourself all knotted up & tend to have to do a lot more work to make it all right again.
So what makes a “good” requirement – and for this post a reminder that there are 2 types of requirements.
- “Functional” requirements that states what you want the solution to do
- “Non-Functional” requirements that states the constraints on the solution
Wikipedia has 2 great articles on the differences between these.
A good (functional) requirement is one that is stated in the third person and states what the requester wants the solution to do, has a number against it (for tracking purposes) & in my situation (especially for Infrastructure) has a priority, e.g.
| Req # | Description | Priority |
| FR-001 | Ensure that all widgets that arrive at the input chute exit by the output chute black in colour | Mandatory |
in other words make sure everything is black,
From the above I could burn everything in a high temperature incinerator and still satisfy the requirement, so we describe non-functional requirement to ensure we get the outcome that we are really looking for ;-
| Req # | Description | Priority |
| NFR-001 | Ensure that all widgets do not have their weight, size or shape modified by the black painting process except as necessary & caused by the paint being applied | Mandatory |
(and yes I know these are fairly obtuse examples, I don’t want to be publishing via this site my IBM work)
On the contrary a bad requirement is one that states the solution e.g;-
“Install an Acme 1000 widget blackening device”
It may be the eventual solution however when you are deciding which solution you want from the alternatives – be that as an IT architect or as a customer – the well stated requirements will be the basis by which you will find the solution that best matches your needs.
Later I hope to post on how do you use your requirements to do this evaluation.
Thanks for reading.
