Relations between software objects

There are different kinds of relations:

a) Refinement and implementation relations relating objects at different levels of abstraction.

b) Translations between expressions in different languages. Translations are especially important for the transition from specifications to programs and for the reuse of results from other languages. For example, for a development in a first-order logic it might be interesting to use results obtained in equational logic with a narrowing-based theorem prover.

c) Multiple views of software objects describe functional properties (such as input-output behaviour, invariants and theorems) and non-functional properties (such as concurrency aspects, complexity mesures and access control) [Cazi 91].

Relations are classified according to their abstract properties. Most important are transitivity and monotonicity which insure the correctness of a sequence of development steps as well as of local development steps [Broy 80,Baxt 90].