An Overview of Overture and how tools for VDM are...

37
The Overture Project Tool Set Bootstrapping Tools for VDM An Overview of Overture and how tools for VDM are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth AT lausdahl.com Miguel Ferreira m.ferreira AT sig.nl Aarhus School of Engineering Software Improvement Group Southampton — July 16 2009

Transcript of An Overview of Overture and how tools for VDM are...

Page 1: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

An Overview of Overture and how tools for VDMare bootstrapped

Rodin User and Developer Workshop

Kenneth Lausdahlkenneth AT lausdahl.com

Miguel Ferreiram.ferreira AT sig.nl

Aarhus School of EngineeringSoftware Improvement Group

Southampton — July 16 2009

Page 2: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Outline

The Overture ProjectOverview of the Overture Tools

Tool SetComponentsEclipse integration

Bootstrapping Tools for VDM — Past and PresentBootstrappingHistory of VDMTools Bootstrapping — Peter Gorm Larsen [1]Bootstrapping Overture Tools

Page 3: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Introduction

• Vienna Development Method

• Multi dialect (VDM-SL, VDM++ and VDM-RT).

• VDM Tools

Page 4: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Introduction

• Vienna Development Method

• Multi dialect (VDM-SL, VDM++ and VDM-RT).

• VDM Tools

Page 5: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Introduction

• Vienna Development Method

• Multi dialect (VDM-SL, VDM++ and VDM-RT).

• VDM Tools

Page 6: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

The Overture project

MissionOverture’s mission is twofold:

• to provide an industrial-strength tool that supports the use ofprecise abstract models in software development, and

• to foster an environment that allows researchers and otherinterested parties to experiment with modifications andextensions to the tool.

The Overture tools are being developed by volunteers, researchersand students.

Page 7: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Overview of the Overture Tools

Page 8: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Overture components

Basic automatic checks andGUI

• Refactoring support.

• Editor with syntax highlighting.

• Syntax check.

• Type check.

Connections to standarddevelopment environments

• Code Generators C++, Java.

• Reverse Engineering support.

• GUI generators.

• UML visualization support.

• SysML, AADL visualization support.

Page 9: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Components

Validation support• Interpreter (with debug protocol).

• Test generation support.

• Visualization for execution traces.

• Pretty Printing with coverage.

Verification support

• Proof obligation generation.

• Model checking support.

• Interactive Proof support.

• Automatic proof support.

Connection to RodinThe automatic proof support is current done in HOL but the GUIpresentation of that will be difficult inside Eclipse. So analternative connection to Rodin would be interesting if possible.

Page 10: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Components

Validation support• Interpreter (with debug protocol).

• Test generation support.

• Visualization for execution traces.

• Pretty Printing with coverage.

Verification support

• Proof obligation generation.

• Model checking support.

• Interactive Proof support.

• Automatic proof support.

Connection to RodinThe automatic proof support is current done in HOL but the GUIpresentation of that will be difficult inside Eclipse. So analternative connection to Rodin would be interesting if possible.

Page 11: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Outline

The Overture ProjectOverview of the Overture Tools

Tool SetComponentsEclipse integration

Bootstrapping Tools for VDM — Past and PresentBootstrappingHistory of VDMTools Bootstrapping — Peter Gorm Larsen [1]Bootstrapping Overture Tools

Page 12: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

VDMJ

Features

• Syntax check.

• Type check.

• Interpreter (with debug protocol).

• Pretty Printing with coverage (partly).

• Test generation support.

• Proof obligation generation.

• Multi dialect: VDM-SL, VDM++ and VDM-RT

Page 13: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Editor

Features

• Editor with syntax highlighting.

• Syntax check.

• Type check.

• UML visualization support.

• Interpreter.

• Test generation support.

Page 14: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Editor Main view

Page 15: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Demo

• Overture Debugger.

Page 16: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Outline

The Overture ProjectOverview of the Overture Tools

Tool SetComponentsEclipse integration

Bootstrapping Tools for VDM — Past and PresentBootstrappingHistory of VDMTools Bootstrapping — Peter Gorm Larsen [1]Bootstrapping Overture Tools

Page 17: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingCompilers

“Bootstrapping is a term used in computer science todescribe the techniques involved in writing a compiler(. . . ) in the target programming language which it isintended to compile.”

From Wikipedia, the free encyclopedia

Page 18: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingHow is it done?

• How to produce the first compiler for a new language?

Niklaus Wirth — the first Pascal compiler

• Used a different language — first implementation was writtenin Fortan;

• Manually compiled the compiler — second implementationwas written in Pascal and hand compiled.

Page 19: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingHow is it done?

• How to produce the first compiler for a new language?

Niklaus Wirth — the first Pascal compiler

• Used a different language — first implementation was writtenin Fortan;

• Manually compiled the compiler — second implementationwas written in Pascal and hand compiled.

Page 20: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingHow is it done?

• How to produce the first compiler for a new language?

Niklaus Wirth — the first Pascal compiler

• Used a different language — first implementation was writtenin Fortan;

• Manually compiled the compiler — second implementationwas written in Pascal and hand compiled.

Page 21: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingHow is it done?

• How to produce the first compiler for a new language?

Niklaus Wirth — the first Pascal compiler

• Used a different language — first implementation was writtenin Fortan;

• Manually compiled the compiler — second implementationwas written in Pascal and hand compiled.

Page 22: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

ArchitectureOverview

Word

Word Corba based

APIASCII or RTF

Au

tom

ati

call

y g

ener

ate

d f

iles

VDM-SL

Module

C++

Interpreter

Debugger (DS)

DL Modules

Type

Checker (SS)

Proof

GUI

Error

Tool

Help

Tool

DL

User Interface

Use

r in

pu

t fi

les

Module

Specification

Manager (SM)

External

Emacs

Support

Pretty

Printer

Test

Coverage

Code

UML

UML

Coupling

Output

Test

Statistics

LaTeX

Support (PS)Generators (CGs)

Java/C++Code

File

Rational Rose

Parser

Scanner

694 Larsen P.G.: Ten Years of Historical Development "Bootstrapping" ...

Page 23: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

ArchitectureConventional development

Word

Word Corba based

APIASCII or RTF

Au

tom

ati

call

y g

ener

ate

d f

iles

VDM-SL

Module

C++

Interpreter

Debugger (DS)

DL Modules

Type

Checker (SS)

Proof

GUI

Error

Tool

Help

Tool

DL

User Interface

Use

r in

pu

t fi

les

Module

Specification

Manager (SM)

External

Emacs

Support

Pretty

Printer

Test

Coverage

Code

UML

UML

Coupling

Output

Test

Statistics

LaTeX

Support (PS)Generators (CGs)

Java/C++Code

File

Rational Rose

Parser

Scanner

694 Larsen P.G.: Ten Years of Historical Development "Bootstrapping" ...

Page 24: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

ArchitectureFormally specified

Word

Word Corba based

APIASCII or RTF

Au

tom

ati

call

y g

ener

ate

d f

iles

VDM-SL

Module

C++

Interpreter

Debugger (DS)

DL Modules

Type

Checker (SS)

Proof

GUI

Error

Tool

Help

Tool

DL

User Interface

Use

r in

pu

t fi

les

Module

Specification

Manager (SM)

External

Emacs

Support

Pretty

Printer

Test

Coverage

Code

UML

UML

Coupling

Output

Test

Statistics

LaTeX

Support (PS)Generators (CGs)

Java/C++Code

File

Rational Rose

Parser

Scanner

694 Larsen P.G.: Ten Years of Historical Development "Bootstrapping" ...

Page 25: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

ArchitectureGenerated code

Word

Word Corba based

APIASCII or RTF

Au

tom

ati

call

y g

ener

ate

d f

iles

VDM-SL

Module

C++

Interpreter

Debugger (DS)

DL Modules

Type

Checker (SS)

Proof

GUI

Error

Tool

Help

Tool

DL

User Interface

Use

r in

pu

t fi

les

Module

Specification

Manager (SM)

External

Emacs

Support

Pretty

Printer

Test

Coverage

Code

UML

UML

Coupling

Output

Test

Statistics

LaTeX

Support (PS)Generators (CGs)

Java/C++Code

File

Rational Rose

Parser

Scanner

694 Larsen P.G.: Ten Years of Historical Development "Bootstrapping" ...

Page 26: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingTest and improvement

Test & Improve

Type Checker

Interpreter

Debugger

I/Dspec

PSspec

TCspec

SMspec

CGspec

Page 27: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingTool generation

Spec Manager

Proof Support

SMspec

PSspec

Code Generator

Page 28: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingTool generation

Type Checker

Code Generator

Interpreter

Debbugger

Code Generator

TCspec

I/Dspec

CGspec

Page 29: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

ArchitectureOverview

Page 30: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

ArchitectureConventional development

Page 31: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

ArchitectureFormally specified

Page 32: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

ArchitectureGenerated code

Page 33: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingAST Generation

AST Gen

OMLvdm++

OMLASTjava

OMLASTjava

sed

VDMTools

AST GenVDMToolsAGvdm++

Page 34: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingAST Generation

OMLvdm++

OMLASTjava

OMLASTvdm++

sed

VDMTools

AST GenVDMToolsAGvdm++

Page 35: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

BootstrappingComponent Generation

HOLTvdm++

STvdm++

UMLVvdm++

VDMTools

OvertureTools

HOLT

ST

UMLV

Page 36: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

Thank you!

www.overturetool.org

Page 37: An Overview of Overture and how tools for VDM are ...wiki.event-b.org/images/An_Overview_of_Overture.pdf · are bootstrapped Rodin User and Developer Workshop Kenneth Lausdahl kenneth

The Overture Project Tool Set Bootstrapping Tools for VDM

Peter Gorm Larsen.Ten Years of Historical Development: “Bootstrapping”VDMTools.JUCS, 7(8):692–709, 2001.