If I had a nickel for every time I've heard a developer complain about poor quality requirements, I'd... well... have a lot of nickels. Let's look, for a moment, at the root causes of poor requirements and business rules. While I consider this to be a business problem, and not a technology problem per se', I'll use root cause analysis (discussed in a prior post) to organize the analysis.
The problem, as perceived by developers, can be quoted this way:
Problem Statement: The requirements for software, as delivered by typical business analysts, is not sufficiently clear, insightful, or well understood to develop software systems that meet the needs of business users.
There is an assumption here. One that I won't challenge (today) but one that probably should be qualified:
Assumption: Improving the quality of software requirements will have a net positive effect on the quality, reliability, applicability, usability, and value of custom software as perceived by the business users who use it.
Interesting assumption, that one. Perhaps fodder for a later blog post.
So, how do we help software developers deliver timely valuable code without driving the business users crazy with technical details that they'd rather not bother with or understand? Let's look at the causes of our problem.
What follows is a (long) root cause analysis of "poor" software requirements. This can be used to understand the problem, which is the first step to addressing it.
How to read this analysis:
Each entry is seen as a "cause" of the problem. Indented below each are the answers to the question "why" or "what is the cause of this cause?" As you read this list, insert the word "because" at the start of every sentence. The text may look a little odd because of the indenting. An analysis like this looks good on an Ishikawa diagram, but that's pretty tough to do on a blog. The ultimate goal is to ask why five times, or to get to five levels deep. The numbering does not go from 1. to 1.1 to 1.1.1 as the levels increase. That is due to a limitation of my blogging tool. I also don't go to "five levels deep" in many areas when there is no value in doing so.
Each entry is seen as a "cause" of the problem. Indented below each are the answers to the question "why" or "what is the cause of this cause?" As you read this list, insert the word "because" at the start of every sentence.
The text may look a little odd because of the indenting. An analysis like this looks good on an Ishikawa diagram, but that's pretty tough to do on a blog. The ultimate goal is to ask why five times, or to get to five levels deep. The numbering does not go from 1. to 1.1 to 1.1.1 as the levels increase. That is due to a limitation of my blogging tool. I also don't go to "five levels deep" in many areas when there is no value in doing so.
Note: A SME is a Subject Matter Expert. An Analyst will gather requirements from a SME, but may then need to review those requirements with other business stakeholders.
Problem: The requirements for software, as delivered by typical business analysts, is not sufficiently clear, insightful, or well understood to develop software systems that meet the needs of business users.
Whew. That list is long, and probably missing a few things, but it is a fairly good attempt at describing the root causes of "poor software requirements." (There are 149 184 listed 'causes' of poor software requirements in the list above, only counting the leaf levels of the analysis).
Some takeaways from this effort:
Great post Nick. It's about time someone dug arund in here.
I'll be throwing this up on a whiteboard in a few days and see what else I spot.
This is an interesting post. One sentence tripped me up though. This is a bit unclear:
When an analyst starts to collect requirements, they require a LOT of hand-holding.
Based on the subsequent points, I think you meant:
When analysts start to collect requirements, they require a LOT of hand-holding.
But when I was first reading it, I thought 'they' referred to 'business stakeholders' from the preceding sentence, making it equivalent to:
When an analyst starts to collect requirements, business stakeholders require a LOT of hand-holding.
I scanned the list, need to come back later and read in more detail. Looks like a good list, though.
Most interesting to me is the grounding assumption you mentioned at the beginning. I think we tend see "better requirements = better software" as axiomatic. I can't recall the last time I saw that assumption challenged in a serious way.
Very interesting analysis. Thanks!
A good comprehensive list on why requirements can be problematic. I believe the traditional software engineering concept of requirements and stakeholders understanding of them, is at the root cause of these problems.
See my article on this subject at http://380z.blogspot.com/2009/01/forget-requirements-collaborate-on.html
Quality is a defined thing. If you don't define your metrics, you don't get better quality by improving anything.
Bad requirements are a problem for developers in two ways: 1) the developer can't deliver what isn't specified, 2) everyone involved gets to waste development time with rework. It's a process issue, rather than a user issue.
Users use bad software all the time. As the number of user domains increase, the more generic the functionality becomes. When a user is faced with generic software, they pull out MS Excel and MS Access to code compensating functionality. They are wasting their time and money to fix the software within their own business unit. This consumes time, which oddly enough is not captured by the accounting system, so it is invisible. Getting rid of this is likewise invisible.
These invisible costs proliferate across the cost structure of the business, so at the level of the financial markets, the invisible costs are a drag on company performance and the stock price. Getting rid of the invisible costs pays off here.
But, where are you looking for quality?
I think you've missed a branch:
- Business (human) processes work on the common cases, and local SME/thought are automatically applied in exceptional circumstances. (E.g. VAT rate has changed between order taken and dispatched, which rate to apply.)
- An automation needs to handle all those edge cases just as well as the common case, but the business is likely to not have given as much though to them (and this is likely to influence the analyst).
This is a fundamental impedance mismatch between fast but dumb agents (computers) and slow but intelligent agents (people).
(And I completely agree that your assumption is a very interesting question.)
Thanks Nick, very insightful analysis
These 209 Becauses
Level 1 = 3
Level 3 = 14
Level 3 = 51
Level 4 = 93
Level 5 = 48
I have shared with my team, but I am still need to ram them into my conscious.
I was thinking about the huge effort it took you to write such an in-depth and highly complicated analysis of the subject. Thanks!
Hi Nick,
Do you have any suggestions on where to find "good, inexpensive, well thought out, requirements management tools"? TIA.
/A
Just a quick note.  After reading through some of the feedback on my recent post on " the root
This is an excellent discussion for an age-old problem.
Having the IIBA and BABOK are excellent initiatives for finally getting the BA profession to deal with these issues in a structured and in-depth manner.
FINALLY! Thank you for the effort! We all have known about "root causes" for YEARS. We all have had many of these in our minds as we try to "get our arms" around poor requirements. This will go a long way - to helping BAs, PMs and the development staff (the entire development staff…. Stakeholder, BAs, Architects, Development, Testing and all others) to understand some of the issues people face when gathering requirements.