Better Software Requirements

Over the next few weeks I am going to write about how to improve software  requirements.    Most software organization cannot get requirements right.   It is not uncommon for software requirements to grow two to three times throughout the software life-cycle.  I argue that software requirements is the largest unresolved issue facing the software industry.

There have been many software methodologies that have attempted to resolve the requirements problem, but none are long lasting.  Agile methodology recognizes the problem of poor requirements but fails to provide the right solution.  As one Agilista wrote me, “Extreme helping the customer figure out what they want is not part of Agile.”

The role of the software developer needs to be  helping customers define what they want in a software application.  Most software organizations skip this step. Customer often cannot define what they want because they lack the basic vocabulary to do so.  The software developer needs to develop the skills of asking the right questions.

Imagine a customer who wants to buy a computer being asked the question, “What processor speed do you want?”  Now compare and contrast that with the question, “What do you do with your computer?”  A better question is, “What would you like to do with your computer?”  The processor speed depends on what the customer wants to do with his or her computer.  The customer does not know the answer to, “What processor speed do you want?”

The root cause of requirements growth is a lack of understanding of the business problem that needs to be addressed.  The problem is those tasked with creating software rely on customers to articulate what is needed. To often customers  cannot articulate their needs because they do not have the basic vocabulary to do so.   Customers  may  lack the vocabulary to explain what’s wrong and especially what is missing.

Sometimes what people say they do is not what they really do, and what they say they need to do their jobs is not what they really use (artifacts). It is important for the software developer to determine what is really needed and not rely on customers  to tell them what is needed.

Developers need to develop the skill of probing and asking the right questions, and then they need to offer a solution based upon the answers.  Over the next few weeks, I am going to write on this topic, so stay tuned.
Published in: on May 25, 2009 at 01:01  Leave a Comment  
Tags: ,

The URI to TrackBack this entry is:

RSS feed for comments on this post.

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: