A development method may be regarded as a path or a procedure by which the developer proceeds from a problem of a certain class to a solution of a certain class. In trivial cases, the method may be fully algorithmic; for example, there is an algorithmic procedure for obtaining the square root of a nonnegative number to any desired degree of accuracy. In more interesting cases, such as the development of computer-based systems for purposes such as data processing or process control, we do not expect to find an algorithmic method: the goal of the development is not precisely defined, and neither the problem nor the set of possible solutions is sufficiently well understood. But a method, to be worthy of the name, must at least decompose the development task into a number of reasonably well-defined steps which the developer can take with some confidence that they are leading to a satisfactory solution.
The steps-of a method impose some ordering on the decisions to be taken during development . Here we are using the term “decision” in a wide sense: it may denote a decision to state explicitly some a priori truth about the subject matter of the system, or a decision to define a certain abstract data type, or a decision to store certain variables on disk, or a decision to decompose some system function into three parts, or any of a wide range of possible actions whose result contributes to the final solution. Some decisions will be easy to take, especially where they involve little more than the recording of already known facts: for example, the decision that a multiple of a prime number cannot itself be a prime number. Some will be hard to take, perhaps because they require great foresight on the part of the developer. Some will be highly error prone, and some will be taken in confidence of their correctness. Some will have very limited consequences for the work that follows, some will have wide consequences. From this viewpoint, we can discern some inchoate principles of methodology (a much misused word, denoting the study or science of method).
Scope of this method
The method described in this paper is concerned with those problems for which the subject matter is strongly and inherently sequential, and especially those where the sequentiality is an ordering in time. We will refer to the subject matter of the system as the “real world” for the system. The real world for a payroll system contains the employees, their work, their holidays, their periods of sickness, their promotions, their productivity. The real world for a process control system contains the plant to be controlled, its vessels, pipes, valves, the substances being processed, the flows of those substances, their temperatures and densities. The real world for a telephone switching system contains the subscribers,
their telephone apparatus, the calls they make, the trunk lines and relays. For all o£ these, the real world is strongly ...