Stepwise Refinement of Formal Specifications Based on Logical Formulae: from COOPN/2 Specifications to Java Programs

One of the steps making it possible to increase the quality and the reliability of the software executing on distributed systems consists of the use of methods of software engi neering that are known as formal The majority of the formal methods currently existing correspond in fact more to formal speci cations languages than to methods themselves This is due to the fact that the two fundamental aspects which are the logic of use of the language and the coverage of the software life cycle are not for the majority de ned The development by stepwise re nement is one of the means making it possible to de ne these two aspects This thesis aims to the de nition of the concepts of re nement and implementation of model oriented formal speci cations It brings a methodological base making it possible to use such a speci cations language during a development by stepwise re nements and during the implementation stage This thesis de nes initially a theoretical framework for the re nement and the imple mentation of formal speci cations The main idea consists in associating a contract with each speci cation A contract explicitly represents the whole of the properties of the speci cation which it is necessary to preserve at the time of a re nement of this speci ca tion To show that a concrete speci cation re nes some abstract speci cation it is then a matter of showing that the contract of the concrete speci cation is su cient to ensure the properties corresponding to the contract of the abstract speci cation The second part of this thesis consists in applying this theoretical framework in the con text of the CO OPN language CO OPN is an object oriented formal speci cations language founded on algebraic speci cations and Petri nets Thus de nitions of the con cepts of contracts re nement and implementation are proposed for this language The contracts are expressed using the Hennessy Milner temporal logic HML This logic is used in the theory of test provided with language CO OPN Thus the veri cation of the contractual properties as well as the veri cation of the stages of re nement are facilitated Re nement and implementation are controlled semantically by the satisfac tion of the contracts syntactically a renaming is authorised We speci cally study the implementation using the Java programming language We show how to specify classes of the Java programming language using language CO OPN so that the last stage of the process of re nement leads to a speci cation entirely built using CO OPN components