Structured programming and cleanroom software development

One of the people most closely associated with the origins of structured programming is Dijkstra. In the late 1960s, software was seen to be getting more complex while the capacity of the human mind to hold detail remained limited. It was also realized that it was impossible to test any substantial piece of software completely - there were just too many possible combinations of inputs. The most that testing could do was prove the presence of errors, not their absence. It was suggested by Dijkstra and others that, because of this, the only way that we could reassure ourselves about the correctness of software was by actually looking at the code.

The way to deal with complex systems, it was contended, was to break them dow n into components that were of a size for the human mind to comprehend. For a large system there would be a hierarchy of components and sub-components. For this decomposition to work properly, each component would have to be self-contained with only one entry and exit point.

The ideas of structured programming have been further developed into the ideas of clean-room software development by people such as Harlan Mills of IBM. With this type of development there are three separate teams:

• a specification team, which obtains the user requirements and also a usage profile estimating the volume of use for each feature in the system;

• a development team, which develops the code but does no machine testing of the program code produced;

• a certification team, which carries out testing.

Any system is produced in increments, each of w hich should be capable of The incremental approach actual operation by the end user. The development team does no debugging; was discussed in instead, all software has to be verified by them using mathematical techniques. Chapter 4. The argument is that software that is constructed by throwing up a crude program that then has test data thrown at it and a series of hit-and-miss amendments made to it until it works is bound to be unreliable.

The certification team carry out the testing, which is continued until a statistical model shows that the failure intensity has been reduced to an acceptable level.

As noted in Chapter 4, the object-oriented ((X)) approach has now largely superseded the structured programming approach. OO can be seen as a development from the structured approach to software development and shows many of its concerns such as those for reducing coupling (data flows between components) and encouraging cohesion (placing associated software processes in the same place).

Formal methods

In the section above on clean-room development, the use of mathematical verification techniques was mentioned. These techniques use unambiguous, mathematically-based, specification languages of which Z and VDM are examples. They are used to define pre-conditions and post-conditions for each procedure. Pre-conditions define the allowable states, before processing, of the v arious items of data that a procedure is to work upon. The post-conditions define the state of those data items after the procedure has been executed. Because the mathematical notation is precise, a specification expressed in this way should be unambiguous. It should also be possible to prove mathematically (in much the same way that at school you learnt to prove Pythagoras* theorem) that a particular algorithm will work on the data defined by the pre-conditions in such a way as to produce the post-conditions. It needs hardly be said that in many cases this will be more easily said than done. In fact structured programming can be seen as an attempt to analyse a program structure into small, self-contained, procedures that w ill be amenable to this formal verification approach.

Project Management Made Easy

Project Management Made Easy

What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.

Get My Free Ebook


Post a comment