Tools for VDM in Industry Professor Peter Gorm Larsen Engineering College of Aarhus (pgl@iha.dk) Also adjunct professor at Aarhus University March 2009 Tools for VDM in Industry 1 Personal Background • Theoretical Work • VDM-SL Semantics (ISO standard) • VDM-SL Proof Rules (PhD work) • More Practical Work • VDM and Structured Analysis in combination • VDMTools architect • Transfer VDM to Industry • Intensive use Industrially • Employed by • For 13 years: IFAD A/S • For 3,5 years: Systematic Software Engineering A/S • For 3,5 years: • Engineering College of Aarhus March 2009 Tools for VDM in Industry 2 Tools for VDM in Industry Industrial Experience with VDM • ”Bootstrapping” VDMTools • Overview of VDMTools • The Overture/Eclipse Initiative • Vision for the future March 2009 Tools for VDM in Industry 3 References, World-wide, 2001 More than 150 VDMTools clients 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 March 2009 Italy ENEA Ansaldo The Netherlands Dutch Dept. of Defence Origin Chess Portugal Sidereus Denmark Baan Nordic Odense Steel Shipyard DDC International Tools for VDM in Industry North America Boeing Rockwell Collins Lockheed Martin DDC-I, Inc. Rational Software Corp. Formal Systems Inc. Concordia University Japan RTRI (Japan Railways) JFITS Felica Networks Germany GAO mbH 4 ConForm (1994) • Organisation: British Aerospace (UK) • Domain: Security (gateway) • Tools: The VDM-SL Toolbox • Experience: • Prevented propagation of error • Successful technology transfer • At least 4 more applications without support • Statements: • “Engineers can learn the technique in one week” • “VDMTools can be integrated gradually into a traditional existing development process” March 2009 Tools for VDM in Industry 5 DustExpert (1995-7) • • • • Organisation: Adelard (UK) Domain: Safety (dust explosives) Tools: The VDM-SL Toolbox Experience: • Delivered on time at expected cost • Large VDM-SL specification • Testing support valuable • Statement: • “Using VDMTools we have achieved a productivity and fault density far better than industry norms for safety related systems” March 2009 Tools for VDM in Industry 6 Adelard Metrics Initial requirements 450 pages VDM specification 16kloc (31 modules) 12kloc (excl comments) Prolog implementation 37kloc 16kloc (excl comments) C++ GUI implementation 23kloc 18kloc (excl comments) • 31 faults in Prolog and C++ (< 1/kloc) • Most minor, only 1 safety-related • 1 (small) design error, rest in coding March 2009 Tools for VDM in Industry 7 CAVA (1998-) • Organisation: Baan (Denmark) • Domain: Constraint solver (Sales Configuration) • Tools: The VDM-SL Toolbox • Experience: • Common understanding • Faster route to prototype • Earlier testing • Statement: • “VDMTools has been used in order to increase quality and reduce development risks on high complexity products” March 2009 Tools for VDM in Industry 8 Dutch DoD (1997-8) • Organisation: Origin, The Netherlands • Domain: Military • Tools: The VDM-SL Toolbox • Experience: • Higher level of assurance • Mastering of complexity • Delivered at expected cost and on schedule • No errors detected in code after delivery • Statement: • “We chose VDMTools because of high demands on maintainability, adaptability and reliability” March 2009 Tools for VDM in Industry 9 DoD, NL Metrics (1) kloc spec hours loc/hour 15 1196 13 4 471 8.5 automatic impl 90 0 NA test NA 612 NA total code 94 2279 41.2 manual impl totAL • Estimated 12 C++ loc/h with manual coding! March 2009 Tools for VDM in Industry 10 DoD - Comparative Metrics Traditional: 900 2000 ANALYSIS & DESIGN CODING 700 TESTING VDMTools®: 1200 ANALYSIS & DESIGN 500 CODING 600 TESTING 100% 64% 0% March 2009 Tools for VDM in Industry Cost 11 BPS 1000 (1997-) • Organisation: GAO, Germany • Domain: Bank note processing • Tools: The VDM-SL Toolbox • Experience: • Better understanding of sensor data • Errors identified in other code • Savings on maintenance • Statement: • VDMTools provides unparalleled support for design abstraction ensuring quality and control throughout the development life cycle. March 2009 Tools for VDM in Industry 12 Flower Auction (1998) • Organisation: Chess, The Netherlands • Domain: Financial transactions • Tools: The VDM++ Toolbox • Experience: • Successful combination of UML and VDM++ • Use iterative process to gain client commitment • Implementers did not even have a VDM course • Statement: • “The link between VDMTools and Rational Rose is essential for understanding the UML diagrams” March 2009 Tools for VDM in Industry 13 SPOT 4 (1999) • Organisation: CS-CI, France • Domain: Space (payload for SPOT4 satellite) • Tools: The VDM-SL Toolbox • Experience: • 38 % less lines of source code • 36 % less overall effort • Use of automatic C++ code generation • Statement: The cost of applying Formal methods is significantly lower than without them. March 2009 Tools for VDM in Industry 14 IFAD VDM Applications • VDMTools • • • • • • • • March 2009 VDM interpreter VDM static semantics VDM to C++ code generator Specification manager UML mapper Java static semantics Java VDM++ translator MUSTER: Emergency response training Tools for VDM in Industry 15 Japanese Railways (2000-2001) • Domain: Railways (database and interlocking) • Experience: • Prototyping important • Subsequent also using it for ATC system • Engineer working at IFAD for two years March 2009 Tools for VDM in Industry 16 TradeOne, CSK, 2000 - 2001 • Full TradeOne system is 1.3 MLOC system • Mission-critical backbone system keeping track of financial transactions conducted • Used by securities companies and brokerage houses Options Subsystem handles the business process for trading options. Modelled in VDM++ Tax exemption subsystem has particularly complex regulations to implement. Modelled in VDM++. March 2009 Tools for VDM in Industry 17 TradeOne Cost Effectiveness Subsystem COCOMO estimate Real time Time saving Tax exemption Effort:38.5 PM Schedule:9M Effort:14 PM Effort:74% Schedule: 3.5 M Schedule:61% Options Effort:147.2 PM Schedule:14.3M Effort: 60.1 PM Schedule:7M Effort: 60% Schedule: 51% Overall sizes Total TradeOne Tax exemption subsystem Option subsystem March 2009 1,342,858 18,431 60,206 Tools for VDM in Industry 18 The FeliCa Mobile Chip Project • Mobile FeliCa IC chips can be embedded inside mobile phones • Used for different on-line services including payment • Uses Near-Field-Communication technology • Used for example for metro ticking in Tokyo • The IC Chips contains an operating system as firmware for 50 million mobile phones • This is fully developed using the VDM++ technology • Between 50 and 60 people in total on the project 23.5 mm March 2009 Tools for VDM in Industry 19 Specification and Implementation Growth kLOC Specification v.1.0 コミットした累計行数 仕様変更数 形式仕様と実装のコミットした累計行数 / 仕様変更数 / 各種イベント 140 140,000 仕様変更 形式仕様 実装 130,000 100 Implementation 90 120,000 80 March 2009 R R 4.0 パイロット移動機メーカ R R 7.0 全移動機メーカ R R 5.0 全移動機メーカ R R 3.0 パイロット移動機メーカ O S定義書1.0 R R 1.0 Tools for VDM in Industry Specification Phase Implementation Phase 本開発準備フェーズ (3M ) 本開発フェーズ (8M ) 60 50 40 内部リリース後フェーズ (6M ) 外部リリース後フェーズ (6M ) 2006/4 2006/3 2005/5 2005/4 2005/3 2005/2 2005/1 2004/12 2004/11 2004/10 2004/7 2004/9 2004/8 2004/7 0 2006/2 2課+椎木さんレビュー α版評価 2006/1 0 2005/12 10,000 2005/11 20,000 2005/9 30,000 2005/8 40,000 70 The average productivity of VDM++ code for the formal specifications was about 1,900 LOC クロスチェ per ッengineer per ク評価 ・カバレッジ評価 設計者・ 評価者レビュー month. 2005/7 50,000 形式仕様書1.0 60,000 Specification 2005/6 70 70,000 設計構想会議 80,000 外部仕様書1.0 90,000 形式仕様書0.9 形式仕様本開発スタート 100,000 2005/10 100 R R 2.0 パイロット移動機メーカ 110,000 30 20 10 0 2006/4 20 Number of Changes Specification v.1.0 コミットした累計行数 仕様変更数 形式仕様と実装のコミットした累計行数 / 仕様変更数 / 各種イベント 140,000 100 仕様変更 形式仕様 実装 130,000 90 120,000 80 50,000 40,000 R R 4.0 パイロット移動機メーカ 70 R R 7.0 全移動機メーカ R R 5.0 全移動機メーカ R R 3.0 パイロット移動機メーカ O S定義書1.0 R R 1.0 60,000 形式仕様書1.0 70,000 設計構想会議 80,000 外部仕様書1.0 90,000 形式仕様書0.9 形式仕様本開発スタート 100,000 R R 2.0 パイロット移動機メーカ 110,000 60 50 50 40 Number of Changes 30,000 30 20 20,000 10 クロスチェック評価 ・カバレッジ評価 10,000 設計者・ 評価者レビュー 2課+椎木さんレビュー α版評価 0 March 2009 Tools for VDM in Industry Specification Phase Implementation Phase 本開発準備フェーズ (3M ) 本開発フェーズ (8M ) 内部リリース後フェーズ (6M ) 外部リリース後フェーズ (6M ) 2006/4 2006/3 2006/2 2006/1 2005/12 2005/11 2005/10 2005/9 2005/8 2005/7 2005/6 2005/5 2005/4 2005/3 2005/2 2005/1 2004/12 2004/11 2004/10 2004/7 2004/9 2004/8 2004/7 0 0 2006/4 21 Further Information • Applying Formal Specification in Industry. P.G. Larsen, J. Fitzgerald and T. Brookes. Published in "IEEE Software" vol. 13, no. 3, May 1996 • A Lightweight Approach to Formal Methods S.Agerholm and P.G. Larsen. In Proceedings of the International Workshop on Current Trends in Applied Formal Methods, Boppard, Germany, Springer-Verlag, October 1998. • Applications of VDM in Banknote Processing P. Smith and P.G. Larsen. + Application of VDM-SL to the Development of the SPOT4 Programming Messages Generator, A. Puccetti and J.Y. Tixadou + Formal Specification of an Auctioning System Using VDM++ and UML, M.Verhoef et. al. Published at the First VDM Workshop: VDM in Practice with the FM'99 Symposium, Toulouse, France, September 1999. • Application of a Formal Specification Language in the Development of the ``Mobile FeliCa'' IC Chip Firmware for Embedding in Mobile Phone, Taro Kurita and Miki Chiba and Yasumasa Nakatsugawa, Springer-Verlag, FM2008, May 2008. March 2009 Tools for VDM in Industry 22 Tools for VDM in Industry Industrial Experience with VDM ”Bootstrapping” VDMTools • Overview of VDMTools • The Overture/Eclipse Initiative • Vision for the future March 2009 Tools for VDM in Industry 23 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 March 2009 Tools for VDM in Industry 24 Staff Overview 91 92 MV PGL ETN NP PBL MA HC HV NK JNJ SA LTO JWT OS JKP KS +JR PM March 2009 93 94 95 96 97 BF BA KdB CA SN JKP VS 98 OO 99 00 GW JKP WS +ML +RM Tools for VDM in Industry JSF 25 Development Environment • • • • • • • • March 2009 GNU C++/Visual C++ Generic VDM C++ library GUI: Previously:Tcl/Tk, Now: Qt flex and bison CVS/Ediff version control OSs: Windows, Linux, Unix Test environments Development procedures Tools for VDM in Industry 26 The “Bootstrapping” Process VDM++ VDM++ VDM++ VDM++ VDM-SL VDM-SL VDM-SL VDM-SL VDM-SL DS spec SS spec CG spec SM spec PM spec VDM++ VDM++ VDM++ VDM++ VDM-SL VDM-SL VDM-SL VDM-SL VDM-SL DS impl SS impl CG impl SM impl PM impl Implicit time line March 2009 Tools for VDM in Industry 27 Specification Sizes Abstract Syntax etc Static Semantics Interpreter Code generators Specification Manager Dependency Rose-VDM++ Link Proof Obligation Generation Java Static Semantics Java 2 VDM++ Translator In total March 2009 Tools for VDM in Industry 3196 20289 29738 32891 3822 792 1518 15475 7025 7702 122448 28 Component Categories • Purely hand-coded • VDM + hand coding • VDM + code generation March 2009 Tools for VDM in Industry 29 Purely Hand-coded Components • • • • Scanner/parser (lex/yacc) pretty-printer (simple C++ component) GUI (previously: Tcl/Tk, now: Qt) Interface to third party tools • Rational Rose and XMI based UML tools • Corba for API • ML for HOL • Generic VDM C++ library March 2009 Tools for VDM in Industry 30 VDM + Hand Coding • • • • • • March 2009 Dynamic semantics (SL and ++) Static semantics (SL and ++) Java/C++ Code generators (SL and ++) Test environments for each component Reused at implementation level Java/C++ code generators now themselves partially code generated Tools for VDM in Industry 31 Maintenance Approach • • • • • March 2009 Bugs first reproduced at specification level Tested using the VDM debugger Check that all tests are satisfactory Implement changes of specification Rerun all tests at implementation level Tools for VDM in Industry 32 VDM + code generation • • • • • • • Animator for SA/RT Specification Manager (SL and ++) VDM++ to/from UML translation Proof support (SL) Parts of GUI now code generated VDM model becomes source Trade-off with abstraction March 2009 Tools for VDM in Industry 33 Tools for VDM in Industry Industrial Experience with VDM ”Bootstrapping” VDMTools Overview of VDMTools • The Overture/Eclipse Initiative • Vision for the future March 2009 Tools for VDM in Industry 34 VDMTools Overview Experimentally linked to HOL Syntax & Type Checker Java to VDM++ Integrity Checker Round Trip Rose-VDM++ Engineering Link support Interpreter (Debugger) Document Generator API (Corba), DL Facility Code Generators - C++, Java March 2009 Tools for VDM in Industry 35 Japanese Support via Unicode March 2009 Tools for VDM in Industry 36 Validation with VDMTools® VDM specs Actual results Comparison Execution Test cases March 2009 Expected results Tools for VDM in Industry 37 Documentation in MS Word/RTF One compound document: • Documentation • Specification • Test coverage • Test coverage statistics March 2009 Tools for VDM in Industry 38 Architecture of the Rose VDM++ Link VDM++ Toolbox Rational Rose 2000 UML Diagrams Class Repository Merge Tool Class Repository UML model file VDM++ Files March 2009 Tools for VDM in Industry 39 Integrity checker March 2009 Tools for VDM in Industry 40 Toolbox API Request Result March 2009 Tools for VDM in Industry 41 Dynamic Link Facility VDM Specification Dynamic Link Module External Code March 2009 Type Conversion Module Tools for VDM in Industry 42 Further Information • An Executable Subset of Meta-IV with Loose Specification, P.G. Larsen, P.B. Lassen, VDM '91: Formal Software Development Methods, 1991 • The IFAD VDM-SL Toolbox: A Practical Approach to Formal Specifications, R. Elmstrøm, P.G. Larsen, P.B. Lassen, ACM Sigplan Notices, September 1994 • Computer-aided Validation of Formal Specifications, P. Mukherjee, Software Engineering Journal, July 1995 • Ten Years of Historical Development - ”Bootstrapping” VDMTools, P.G. Larsen, Journal of Universal Computer Science, 2001 • VDMTools: advances in support for formal modeling in VDM, J. S. Fitzgerald and P. G. Larsen and S. Sahara, ACM Sigplan Notices, February 2008 March 2009 Tools for VDM in Industry 43 Tools for VDM in Industry Industrial Experience with VDM ”Bootstrapping” VDMTools Overview of VDMTools The Overture/Eclipse Initiative • Vision for the future March 2009 Tools for VDM in Industry 44 Overture versus VDMTools • VDMTools (http://www.vdmtools.jp/en) • Closed source, proprietary (available under NDA) • Monolithic architecture (single binary), C++ • Optimized for performance, industry strength • Overture Tool project (http://www.overturetool.org) • • • • March 2009 Open source, GPL license Plug-in architecture, Eclipse, Java Optimized for flexibility, targets academic use (partly) developed using VDMTools Tools for VDM in Industry Overture – an open-source initiative • • • • Based on the Eclipse platform Extendible open VDM++ tool support Initial tool support produced in MSc project in NL MSc project carried out at TUD • Jacob Porsborg Nielsen and Jens Kielsgaard Hansen • MSc project at Aarhus University • Thomas Christensen • MSc projects at Engineering College of Aarhus • Hugo Macedo, Minho University • Sander Vermolen, University of Nijmegen • Adriana Sucena, Minho University • Carlos Vilhena, Minho University • Augusto Ribeiro, Minho University • Kenneth Lausdahl and Hans Christian Lintrup, IHA March 2009 Tools for VDM in Industry 46 Overture Architecture Overview GUI generators UML, SysML AADL Visualisation Support Refactoring support Syntax Check Type Check Interpreter (Debugger) With API capabilities Basic automatic checks and GUI Test Generation support Connection to JML AST Eclipse Visualization Support for Execution traces Verification support Model Checking support Not yet available March 2009 OML editor With syntax highlighting Validation support Reverse Engineering support Connection to standard development environments Code Generators - C++, Java Interactive Proof support Automatic Proof support A version is available Tools for VDM in Industry Proof Obligation generation Pretty Printing With coverage Planned 47 Example Screen dump March 2009 Tools for VDM in Industry 48 Automatic AST generation specified in VDM++ ● code generated ● OVERTURE AST spec (VDM-SL subset) ASTGEN JAVA interfaces “implements” sed script sed VDM++ classes other users can use these specs to specify their own OVERTURE extensions (in VDM++) March 2009 java classes VDMTools Tools for VDM in Industry modified java classes Tracefile Viewer (1) March 2009 Tools for VDM in Industry Tracefile Viewer (2) March 2009 Tools for VDM in Industry Tracefile Viewer (3) March 2009 Tools for VDM in Industry Tools for VDM in Industry Industrial Experience with VDM ”Bootstrapping” VDMTools Overview of VDMTools The Overture/Eclipse Initiative Vision for the future March 2009 Tools for VDM in Industry 53 Extending VDM++ with better support for distributed real-time • Today embedded real-time systems are increasingly distributed • Hard to master complexity within tight time schedules • Current research work extend VDM++ with better support for describing and analyzing this • Possibility to use CPU’s and BUS’es inside system • Deployment of objects to CPUs • Setting priorities of operations • Introduction of asynchronous operations • Cycles statement in addition to duration statement March 2009 Tools for VDM in Industry 54 Combining with continuous time March 2009 Tools for VDM in Industry Beyond the Ordinary: Design of Embedded Real-time Control •BODERC project @ ESI •Sept 2002 - Apr 2007 •Multi-disciplinary design •mechanics •electronics •software •High-tech systems focus •Early life cycle trade-off analysis •Industry as a laboratory •http://www.esi.nl/boderc March 2009 Tools for VDM in Industry 56 Printer paper path - case study VDM++ Bond graphs VDM++ VDMTools co-sim results 20-sim VDMTools C++ HOST COMPILER Bond graphs VDM++ March 2009 VDMTools C++ TARGET COMPILER Tools for VDM in Industry continuous validation DLL 20-sim SIL sim results ctrl app measurements 57 An email from an old (very good) student … At that time I understood that a formal specification would be an advantage for big projects but I had no idea how desperately this is also needed in smaller projects when there are many people involved. Today I do know: At the moment I am working at BMW in the communications department. We work on the integration of the car telephone (including a telematics unit with GPS coordinates) into the overall car. There is a lot of interaction between the telephone and the HMI of the car and there are different versions and types of all the involved devices. There are also five companies (BMW, Motorola, Siemens VDO, Harmann-becker, Alpine) who develop the different units. The system should not be so complex because many of the devices should (!) behave similarly. But the specifications we write are English plain text (hundreds of pages), in our department more than 10 people are involved and we do not know anymore how the devices will behave ourselves...every external company has an own interpretation of the specs and this interpretation changes over time. If you ask the same person twice you get different answers (I frankly admit that I am no exception)... You can imagine how "efficient" everything is and its a miracle that the system still works (with a number of bugs though)... March 2009 Tools for VDM in Industry 58 Go out and use the principles at least! March 2009 Tools for VDM in Industry 59