at different levels of abstraction. There are two very different ways of using such languages. One approach is based on the manifestation of a single model, with construction of different views from this model, and with automatic or semi-automatic consistency checking among these views. This follows what we term the single model principle. The second approach (of which unrestricted UML is an example) is based on the independent construction of multiple models of the same system, but with no guarantee of the consistency of the various models. We propose that to best support seamless, reversible software development of reliable software, it is preferable to follow the single model principle for a specific subset of development tasks. We describe the single model principle and its supporting infrastructure. We show how the BON/Eiffel description language, which supports both high-level specifications as well as code implementations can be enhanced to satisfy the essential tenets of the ...
Richard F. Paige, Jonathan S. Ostroff