Software development: a problem-theoretic analysis and model

The software development process is analyzed from a problem-theoretic viewpoint, and a precise metamodel is proposed. The model provides a uniform conceptual structure for understanding the process by clarifying its semantics, and indicates some important requirements on formalisms purporting to describe the process. Requirements analysis, specification, and program transformations and decompositions are formulated in problem-theoretic terms. The metamodel formalizes a large portion of the software development process, leaving another portion as heuristics, which appears to be an essential ingredient in any widely applicable method. The analysis also suggests the nonexistence of a single canonical step for the entire process as well as obstacles to its complete formalization or automation.<<ETX>>