Review of basic principles

The aim of software engineering is to produce software that is correct, robust, and efficient.

Software development is often presented in terms of life-cycle models: waterfall model, circular, etc. These models give the impression that the individual steps in the development process, i.e. specification, design, implementation, etc., occur as discrete units. In practice, they overlap and repeat.

This leads to the (purely subjective) Rule of Three: all software must be rewritten three times before it is useful.

(Of course, by this time, the necessity and requirements for the software have changed and the whole process must start over.)

Obviously, this is a sweeping generalization. Hovever, it does illustrate the unpredictable nature of the development process. Therefore, it is paramount that you plan for change. Your code should be organized into small, reliable, and efficient units that conform to a formal specification. The code should be readable, portable, and maintainable.


On to some practical suggestions...
Back to the 13.016 overview...