Correct System Design

A theory of programming provides a scientific basis for programming practices that lead to predictable delivery of programs of high quality. A top-down theory starts with a specification of the intended behaviour of a program; and a bottom-up theory starts with a description of how the program is executed. The aim of both theories is to prove theorems (often algebraic laws) that will be helpful in the design, development, compilation,testing,optimisation and maintainance of all kinds of program. The most mature theories are those that are presented both in bottom-up and top-down fashion, where essentially the same laws are valid in both presentations.