Number 101
Precision in Software Development
This month's Newsletter considers the case for greater precision in the software development cycle. Here at PDT we have studied this problem and reached the conclusion that more work is needed to provide ways of achieving better business systems through the provision of improved tools and methods.
A Precise Omission
Most of all, software development suffers from lack of precision. This applies to both what is required and how you meet that requirement.
Software development is a unique endeavour, working with unthinking machines that do exactly what you tell them. It is the task facing software developers to translate the often fuzzy needs expressed by the customer into precise instructions. It’s an unenviable activity, fraught with errors and omissions.
Take a topical case – Sony PlayStation and PlayStation Network sites, with a total of 100 million subscribers, were hacked and personal data stolen.
Those who attacked the Sony machines asked them to do precisely what they were instructed to do. It just happened on this occasion, what the machines did was, from the human viewpoint, the wrong thing, releasing a flood of personal data into the waiting arms of the hackers. There was a flaw in the implementation that allowed the hackers to gain entry to what was intended to be a private data store.
If you’re in software development, your business faces the same challenges each and every day; though perhaps at a lower level.
How Precision Affects You and Your Customers
Your customers express their needs in many different ways, often including their wants and wishes to add confusion. They us the jargon of their industry or business, using terms that may have multiple meanings or are ill defined. It is the analyst’s job to identify the needs and set them down unambiguously. Each requirement must also be consistent with all others.
The implementation must provide a set of instructions to machines so they perform the required actions. The implementer decides how to make the translation from requirement to the final high-level code.
The ability to check the high-level code for some classes of error – syntax errors, spelling errors, some program flow errors – is incorporated in the conventional language compiler. The result is often code that compiles but that performs the wrong tasks. The implementation is iterative until the code does perform the right tasks, as defined by the requirements.
However, the task of checking the requirements is much more intractable. There is no easy way of checking a word processed document for consistency. Spelling - yes, grammar - yes, but consistency - no.
Here lies today’s challenge for precision in software development.
| Solutions |
| Assignments |
| Software Solutions |
| Terms of Use |
| Articles & Reports |
| PDT Blog |
| Meeting Report |
| Newsletter Subscription |
| Newsletter |
| Newsletter Archive |