Software is a uniquely new invention, different than anything else we humans have come up with in the past. ...
"The software-controlled electronic information system is fundamentally different from physical labor-saving devices such as the cotton gin, the locomotive, or the telephone. Rather than extend the ability of hand motion, leg motion, or the ability to hear and speak across distances, ITsystems extend the capabilities of the mind—to think, to organize and disseminate information, to create."
David R. Brousell
Editor-in-Chief
Managing Automation Magazine
New York, October 2001
To me, this means that it is inherently difficult to know what some software should do, because it can do whatever you need it to. ... but what do you need it to do?
That is the question, isn't it?
“… the hardest single part of software development [remains] deciding precisely what to build."
Fred Brooks
Author of the 1986 paper "No Silver Bullet”
I keep saying "needs", because the term that is actually used in software development is a lightning rod for debates.If you have been kind enough to read this far, you knowI am talking about "Requirements".
If you are going stick with me going forward, you will see that I am a firm believer that efficient and effective requirements discovery is a key contributor to successful deliveryof good software. It is not the only contributor to success, but it is part of the mix. I do know that bad or non-existent requirements are a pretty good predictor of a failureto deliver good software.
The real issue of interest is what is a requirement. The answer is multi-faceted and of course still a subject of debate, but that keeps things interesting and worth writing about.