Integrating a formal method into a software engineering process with UML and Java

  • Authors:
  • Michael Möller;Ernst-Rüdiger Olderog;Holger Rasch;Heike Wehrheim

  • Affiliations:
  • University of Oldenburg, Department of Computing Science, 26111, Oldenburg, Germany;University of Oldenburg, Department of Computing Science, 26111, Oldenburg, Germany;University of Paderborn, Department of Computer Science, 33098, Paderborn, Germany;University of Paderborn, Department of Computer Science, 33098, Paderborn, Germany

  • Venue:
  • Formal Aspects of Computing
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

We describe how CSP-OZ, a formal method combining the process algebra CSP with the specification language Object-Z, can be integrated into an object-oriented software engineering process employing the UML as a modelling and Java as an implementation language. The benefit of this integration lies in the rigour of the formal method, which improves the precision of the constructed models and opens up the possibility of (1) verifying properties of models in the early design phases, and (2) checking adherence of implementations to models. The envisaged application area of our approach is the design of distributed reactive systems. To this end, we propose a specific UML profile for reactive systems. The profile contains facilities for modelling components, their interfaces and interconnections via synchronous/broadcast communication, and the overall architecture of a system. The integration with the formal method proceeds by generating a significant part of the CSP-OZ specification from the initially developed UML model. The formal specification is on the one hand the starting point for verifying properties of the model, for instance by using the FDR model checker. On the other hand, it is the basis for generating contracts for the final implementation. Contracts are written in the Java Modeling Language (JML) complemented by CSPjassda, an assertion language for specifying orderings between method invocations. A set of tools for runtime checking can be used to supervise the adherence of the final Java implementation to the generated contracts.