Software Development Observations: #1 Requirements/Specifications

The first statement on observations within software development is around requirements/specifications.

While it may be possible to fully specify a piece of software upfront, it is generally undesirable to do because:

  1. As complexity goes up, it becomes less likely that everything can be captured correctly
  2. The interpretation of what the customer wants the system to do can be misaligned between customer and development group even after agreement.
  3. Sometimes the customer can’t express fully upfront what it is they want.

This sentiment has already been documented by:

In [1], Winston Royce, in 1970 said:

For some reason what a software design is going to do is subject to wide interpretation even after previous agreement.

In [2], Fred Brooks, in 1986 said:

Therefore, the most important function that the software builder performs for the client is the iterative extraction and refinement of the product requirements. For the truth is, the client does not know what he wants. The client usually does not know what questions must be answered, and he has almost never thought of the problem up the detail necessary for specification.

He also goes on to say:

I would go a step further and assert that it is really impossible for a client, even working with a software engineer, to specify completely, precisely, and correctly the exact requirements of a modern software product before trying some versions of the product.

Does anyone know of other sources?

Some Questions

  1. To what level of detail should we specify then?
  2. Should we try to prioritize our extraction of requirements from the client?
  3. How much time is appropriate to spend on requirements/specifications gathering in relation to the time it takes to turn that specification into working software?
  4. How many times had we to go back and communicate with a customer over gaining understanding on a specific requirement?
  5. How many times was this requirement modified after feedback from the client?

Bibliography

[1] [http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf]
[2] [http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html]
[2] [http://www.scribd.com/doc/4025086/No-Silver-Bullet-Essence-and-Accidents-of-Software-Engineering]

Advertisements

Tags: , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

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

Connecting to %s


%d bloggers like this: