Abstraction refinement: A model of software evolution

Benjamin J. Keller, Richard E. Nance · Journal of Software Maintenance Research and Practice · 1993

Abstract A model of the software evolution process, called the Abstraction Refinement Model, is described. The model has three components: descriptions of the software system, a pre‐order of relative correctness between system descriptions, and transformations between the system descriptions. Using a non‐deterministic language as the collection of system descriptions, the collection of equivalence classes under the abstraction order forms a distributive join‐semilattice. This algebraic structure enables the partitioning of the language into narrow‐spectrum sub‐languages on which the transformations are defined. The algebraic structure of the model is interpreted to represent software evolution as a sequence of transformations on system descriptions. Both development and maintenance are characterized by forward and reverse transformations, with development being primarily forward‐engineering and maintenance balanced between forward‐ and reverse‐engineering. This interpretation is instructive regarding maintenance. Three levels of methodological sophistication are shown by the three representations of maintenance possible in the model. These approaches underscore the need for a maintenance methodology which must account for the completeness of the system documentation. Methodologies should then include reverse‐engineering to contend with the information loss problem from development. A result is that only two types of reverse‐engineering paths are possible in the model.

Read the paper · More papers on PaperTik