From VDM to ABC (A Pragmatic Approach to Formal Software Development)

Abstract

The generic term formal method is often used to describe the Vienna Development Method (VDM). However, VDM has recently been more precisely defined as a rigorous or formal specification method and as a rigorous or formal verification method, where the emphasis is upon the discharge of proof obligations. This study explores more pragmatic approaches to software development, using VDM, that place less emphasis on the need to discharge proof obligations and more on constructive guidance. A high level imperative language, ABC, is chosen as the target language for this particular study as model-based methods such as VDM are strongly associated with the development of imperative software, and ABC in particular shares many common features with VDM-SL. A procedure is described to extend the command set of the language to effectively implement the executable subset of VDM in ABC. A semi-automatic method is then developed to use this extended version of ABC to prototype VDM specifications. The method allows specifications to be validated in a pragmatic way, and incorporates important run-time invariant preservation tests. The prototyping method developed is shown to be particularly useful during the educational stages of formal methods training, when there is very often a one-to-one mapping between the specification document and the prototype. Larger specifications require refinement, however, before they are in a form suitable to be executed, and so a pragmatic refinement method is investigated for this purpose. The heuristics of programming methodology and the refinement rules of the refinement calculus are adapted to provide heuristics and refinement rules for the transformation of VDM specifications into ABC programs. These heuristics and refinement rules are supplemented by an investigation into how the logical connectives, found in VDM post-conditions, can be used to guide the refinement process. It is shown how the satisfiability proof obligation, associated with an operation, can be manipulated mechanically to extract sequential decompositions from conjunctions and conditional decompositions from disjunctions, equivalences and implications. It is also shown how this automatic manipulation of the satisfiability proof obligation can be used to guide the application of the refinement rules developed in this study. It is argued that, together, the refinement rules and the manipulations of the satisfiability proof obligation provide a formal development method for the refinement of ABC commands from VDM specifications

    Similar works