IFAD Dr Peter Gorm Larsen IFAD A/S Forskerparken 10A DK-5230 Odense M Denmark Ten Years of Historical Development “Bootstrapping” VDMTools ®
IFAD 2 “Bootstrapping” VDMTools ® â What is IFAD? l VDMTools overview l Staff overview l Development environment l The “Bootstrapping” process l Perspectives
IFAD 3 IFAD Capabilities IFAD provides Professional software development tools that assist engineers in producing high-quality software IFAD ensures Technology transfer by offering training courses, customer-specific consultancy, and by organising seminars IFAD offers Subcontracted software specification and development performed by highly qualified and experienced personnel
IFAD 4 IFAD Organisation Chart Henrik Voss Management Marketing QA Admin.Systems Subcontracting Consultancy Sales Services Projects Sales Tools R&D VDMTools Products MUSTER R&D Methods & ToolsTraining & Simulation
IFAD 5 Boeing/Joint Strike Fighter
IFAD 6 “Bootstrapping” VDMTools ® 4 What is IFAD? â VDMTools overview l Staff overview l Development environment l The “Bootstrapping” process l Perspectives
IFAD 7 VDMTools
8 IFAD VDMTools Alliances IFAD ISPRAS, Russia Sidereus, Portugal Rational, USA JFITS, Japan DDC-I, USA Aichernig, Austria Alagar, Canada SofTools, USA
IFAD 9 References, World-wide France Aerospatiale Espace et Defense Dassault Aviation Dasssault Electronique CISI CEA et Defense CEA Leti Cap Gemini LAAS Matra Bae Dynamics U.K. British Aerospace Systems & Equipment British Aerospace Defense Adelard ICL Enterprise Engineering Rolls Royce Transitive Technologies ItalyENEAAnsaldoAlstrom The Netherlands Dutch Dept. of Defence OriginChessDenmark Danish Railways Baan Nordic Odense Steel Shipyard DDC International North America Boeing Rockwell Collins Lockheed Martin DDC-I, Inc. Rational Software Corp. Formal Systems Inc. Japan RTRI (Japan Railways) JFITSGermany GAO mbH More than 150 clients world-wide
IFAD 10 VDMTools ® Overview The Rose-VDM++ Link Document Generator Code Generators - C++, Java Syntax & Type Checker API (Corba), DL Facility Interpreter (Debugger)
IFAD 11 VDM for Analysis & Design CodingUnit Test Software Design Module Test System Analysis System Test VDM Model Test Cases Animation Modelling & Validation
IFAD 12 Development Choices Taken Executable models þ Testing and animation Partial “analysis” (validation) þ System level testing Code generation þ VDM for source code Formal refinement and formal verification
IFAD 13 “Bootstrapping” VDMTools ® 4 What is IFAD? 4 VDMTools overview â Staff overview l Development environment l The “Bootstrapping” process l Perspectives
IFAD 14 Staff Overview PGL PBL MA ETN HC HV NK JNJ SA LTO JWT OS JKP KS PM NP MV KdB CABFBA SN JKP VSJKP WS JSF
IFAD 15 “Bootstrapping” VDMTools ® 4 What is IFAD? 4 VDMTools overview 4 Staff overview â Development environment l The “Bootstrapping” process l Perspectives
IFAD 16 Development Environment l GNU C++/Visual C++ l Generic VDM C++ library l GUI: Previously:Tcl/Tk, Now: Qt l flex and bison l CVS/Ediff version control l OSs: Windows, Linux, Unix l Test environments l Development procedures
IFAD 17 “Bootstrapping” VDMTools ® 4 What is IFAD? 4 VDMTools overview 4 Staff overview 4 Development environment â The “Bootstrapping” process l Perspectives
IFAD 18 VDM++ The “Bootstrapping” Process VDM-SL DS spec VDM-SL DS impl VDM-SL SS spec VDM-SL SS impl VDM-SL SM spec VDM-SL SM impl VDM-SL PM spec VDM-SL PM impl VDM-SL CG spec VDM-SL CG impl Implicit time line
IFAD 19 Specification Sizes
IFAD 20 Component Categories l Purely hand-coded l VDM + hand coding l VDM + code generation
IFAD 21 Purely Hand-coded Components l Scanner/parser (lex/yacc) l pretty-printer (simple C++ component) l GUI (previously: Tcl/Tk, now: Qt) l Interface to third party tools l Rational Rose l Corba for API l ML for HOL l Generic VDM C++ library
IFAD 22 VDM + Hand Coding l Dynamic semantics (SL and ++) l Static semantics (SL and ++) l Java/C++ Code generators (SL and ++) l Test environments for each component l Reused at implementation level l Java/C++ code generators now themselves partially code generated
IFAD 23 Maintenance Approach l Bugs first reproduced at specification level l Tested using the VDM debugger l Check that all tests are satisfactory l Implement changes of specification l Rerun all tests at implementation level
IFAD 24 VDM + code generation l Animator for SA/RT l Specification Manager (SL and ++) l VDM++ to/from UML translation l Proof support (SL) l VDM model becomes source l Trade-off with abstraction
IFAD 25 Abstraction in models l Initial abstract syntax l Abstract syntax for code generator l Final abstract syntax BinaryExpr:: left : Expr opr : BinaryOp right : Expr BinaryExpr:: left : Expr opr : BinaryOp right : Expr ti : [TypeRep] BinaryExpr:: left : Expr opr : BinaryOp right : Expr extra : Key
IFAD 26 “Bootstrapping” VDMTools ® 4 What is IFAD? 4 VDMTools overview 4 Staff overview 4 Development environment 4 The “Bootstrapping” process â Perspectives
IFAD 27 Future Ideas l Expect higher use of code generation l Test case generation (ISPRAS, Russia) l Data Cleaning (Sidereus, Portugal) l Reverse Engineering l Mission-critical web development l More on proof support l More academic collaboration l More user-friendliness
IFAD 28 Concluding Remarks l Taking ones “own medicine” helps l Use when worthwhile l Use inside lifecycle l Using VDM helps us master complexity l It is FUN!