{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

Vienna Development Method

Vienna Development Method - VDM The Vienna Development...

Info iconThis preview shows pages 1–6. Sign up to view the full content.

View Full Document Right Arrow Icon
VDM — The Vienna Development Method Andreas M¨uller April 20, 2009 Bachelor thesis in ”Formal Methods in Software Engineering”, Johannes Kepler University Linz, SS 2008. Abstract The Vienna Development Method is a formal language developed at the IBM laboratories in Vienna. First we give a short overview of the history of VDM from programming language description to VDM++. The language and its syntax are described in the following. Since the invention of VDM lots of tools have been developed. One of them is mural, a proof framework for VDM. We explain the basic features of mural and give a short example proof. The most important tool for VDM today is VDMTools which is still beeing developed. We give an overview of VDMTools features and present a detailed example of a VDM++ model in VDMTools. The example includes Java code generation from VDM. Name: Andreas M¨uller Matr.Nr.: 0555284 StKz.: 201 E-mail: a [email protected]
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Contents 1 Introduction 5 2 First Overview 6 2.1 Origins of the Vienna Development Method . . . . . . . . . . . . 6 2.2 Rigorous Specification and Proof . . . . . . . . . . . . . . . . . . 6 2.2.1 Rigorous Specification . . . . . . . . . . . . . . . . . . . . 7 2.2.2 Rigorous Proof . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Formalization and Tools Support . . . . . . . . . . . . . . . . . . 9 3 The Language 9 3.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.1 Explicit Functions . . . . . . . . . . . . . . . . . . . . . . 10 3.1.2 Implicit Functions . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.1 Example: Simple Calculator . . . . . . . . . . . . . . . . . 13 3.2.2 The State . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 Set Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.1 The ”-set” Constructor . . . . . . . . . . . . . . . . . . . 16 3.3.2 Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4 Composite Objects . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.1 Defining Composite Objects . . . . . . . . . . . . . . . . . 17 3.4.2 Creating Instances . . . . . . . . . . . . . . . . . . . . . . 18 3.4.3 Decomposing Objects . . . . . . . . . . . . . . . . . . . . 19 2
Background image of page 2
4 A Proof Framework for VDM — Mural 20 4.1 Constants and Expressions . . . . . . . . . . . . . . . . . . . . . 21 4.2 Rules of Inference . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3 Theories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.4 Proofs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.5 A Sample Proof . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5 VDMTools 24 5.1 Main Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.2 VDM++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2.1 A Basic Class Outline . . . . . . . . . . . . . . . . . . . . 25 5.2.2 The Language . . . . . . . . . . . . . . . . . . . . . . . . 25 6 A VDMTools Example 27 6.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.1.1 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.1.2 Instance Variables . . . . . . . . . . . . . . . . . . . . . . 28 6.1.3 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.1.4 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.2 Screenshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.3 VDM to Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.4 Java to VDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.5 Other features . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7 Conclusion 36 3
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Bibliography 38 Index 39 A Complete Listings 39 A.1 Stack - VDM++ Model . . . . . . . . . . . . . . . . . . . . . . . 39 A.2 Stack - Java Class . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4
Background image of page 4
1 Introduction The concept of formal methods describes a large number of scientific techniques for modelling and for rigorous checking of real-world systems. Formal methods are generally based on mathematical logic. There are many different approaches of formalization, but one of the longest established formal methods for develop- ment of computer-based systems is VDM — the Vienna Development Method. The Vienna Development Method (VDM) is a collection of techniques for the modeling, specification and design of computer-based systems [5, page 454]. VDM has its roots in the IBM laboratories in Vienna in the mid-1970s. The corresponding standardized definition language is called VDM-SL. There is also an object-oriented extension of of VDM, called VDM++. Today VDM is still very important and will be a topic at the 2009s 16th International Symposium on Formal Methods which will take place in Eindhoven (Netherlands) from November 2nd to November 6th, 2009. Of course there are also several in- dustrial applications of VDM (especially VDMTools), for example Boeing used VDMTools for reverse engeneering from Java back to VDM++ [9].
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Image of page 6
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}