Skip to main content
Log in

Assuring property conformance of code generators via model checking

  • Original Article
  • Published:
Formal Aspects of Computing

Abstract

Automatic code generation is an essential cornerstone of today’s model-driven approaches to software engineering. Thus a key requirement for the success of this technique is the reliability and correctness of code generators. This article describes how we employ standard model checking-based verification to check that code generator models developed within our code generation framework Genesys conform to (temporal) properties. Genesys is a graphical framework for the high-level construction of code generators on the basis of an extensible library of well-defined building blocks along the lines of the Extreme Model-Driven Development paradigm. We will illustrate our verification approach by examining complex constraints for code generators, which even span entire model hierarchies. We also show how this leads to a knowledge base of rules for code generators, which we constantly extend by e.g. combining constraints to bigger constraints, or by deriving common patterns from structurally similar constraints. In our experience, the development of code generators with Genesys boils down to re-instantiating patterns or slightly modifying the graphical process model, activities which are strongly supported by verification facilities presented in this article.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Allen JF (1983) Maintaining knowledge about temporal intervals. Commun ACM 26(11): 832–843

    Article  MATH  Google Scholar 

  2. Apache Software Foundation (2007) Velocity Website, 2007. http://velocity.apache.org/

  3. Appel AW (2001) Foundational Proof-Carrying Code. In Proceedings of LICS ’01. IEEE Computer Society, p 247

  4. Bakera M, Jörges S, Margaria T (2009) Test your strategy: graphical construction of strategies for connect-four. In: Proceedings of the 14th IEEE international conference on engineering of complex computer systems, ICECCS 2009. IEEE Computer Society, pp 172–181

  5. Bajohr M, Margaria T (2006) Matrics: a service-based management tool for remote intelligent configuration of systems. Innov Syst Software Eng 2(2): 99–111

    Article  Google Scholar 

  6. Bakera M, Margaria T, Renner C, Steffen B (2007) Property-driven functional healing: playing against undesired behavior. In: 10th CONQUEST

  7. Bakera M, Margaria T, Renner C, Steffen B (2007) Verification, diagnosis and adaptation: tool supported enhancement of the model-driven verification process. In: Workshop: formal methods in avionics, space and transport (ISOLA), pp 85–98

  8. Coglio A, Green C (2005) A constructive approach to correctness, exemplified by a generator for certified Java Card Applets. In: Proceedings of VSTTE

  9. Clarke EM, Grumberg O, Peled DA (2001) Model checking. MIT Press, CA

    Google Scholar 

  10. Dwyer M, Avrunin G, Corbett J (1999) Patterns in Property specifications for finite-state verification. In: Proceedings of ICSE ’99. IEEE CS Press, pp 411–420

  11. Denney E, Fischer B (2006) Extending source code generators for evidence-based software certification. In: Proceedings of ISOLA ’06

  12. Dillon LK, Kutty G, Moser LE, Melliar-Smith PM, Ramakrishna YS (1994) A graphical interval logic for specifying concurrent systems. ACM Trans Software Eng Methodol 3(2): 131–165

    Article  Google Scholar 

  13. Fuchs NE, Schwertel U, Schwitter R (1998) Attempto controlled english—not just another logic specification language. In: LOPSTR ’98: Proceedings of the 8th international workshop on logic programming synthesis and transformation, pp 1–20

  14. Goos G, Zimmermann W (1999) Verification of Compilers. In correct system design. Springer, New York, vol 1710, pp 201–2309

  15. Hennessy M, Milner R (1985) Algebraic laws for nondeterminism and concurrency. J ACM 32(1): 137–161

    Article  MathSciNet  MATH  Google Scholar 

  16. Hoare CAR, Misra J (2005) Verified software: theories, tools, experiments. Vision of a Grand Challenge Project. In: Proceedings of VSTTE, Zürich, Switzerland. Springer, New York

  17. Hörmann M, Margaria T, Mender T, Nagel R, Steffen B, Trinh H (2008) The jABC approach to rigorous collaborative development of SCM applications. In Proceedings of ISoLA, pp 724–737

  18. Hoare CAR (2003) The verifying Compiler: a grand challenge for computing research. J ACM 50(1): 63–69

    Article  Google Scholar 

  19. Holt A (1999) Formal verification with natural language specifications: guidelines, experiments and lessons so far. S Afr Comput J 24: 253–257

    Google Scholar 

  20. Holzmann GJ (2003) The SPIN model checker: primer and reference manual. Addison-Wesley Professional, MA

    Google Scholar 

  21. ITU-T (1992) Recommendation Q.1203. Intelligent network—global functional plane architecture. Technical report, Standardization Sector of ITU

  22. ITU (1993) General recommendations on telephone switching and signaling—intelligent network: introduction to intelligent network capability set 1, Recommendation Q.1211. Technical report, Standardization Sector of ITU, Geneva

  23. Jörges S, Kubczak C, Pageau F, Margaria T (2007) Model driven design of reliable robot control programs using the jABC. In: Proceedings of EASe ’07, pp 137–148

  24. Jörges S, Margaria T, Steffen B (2006) FormulaBuilder: a tool for graph-based modelling and generation of formulae. In: Proceedings of ICSE ’06

  25. Jörges S, Margaria T, Steffen B (2008) Genesys: service-oriented construction of property conform code generators. Innov Syst Software Eng 4(4): 361–384

    Article  Google Scholar 

  26. Karusseit M, Margaria T (2006) Feature-based modelling of a complex, online-reconfigurable decision support service. Electr Notes Theor Comput. Sci 157(2): 101–118

    Article  Google Scholar 

  27. Kubczak C, Margaria T, Steffen B, Nagel R (2008) Service-oriented mediation with jABC/jETI

  28. Kozen D (1983) Results on the propositional mu-Calculus. Theor Comput Sci 27: 333–354

    Article  MathSciNet  MATH  Google Scholar 

  29. Lamprecht A-L, Margaria T, Steffen B (2006) Data-flow analysis as model checking within the jABC. In: Compiler construction, pp 101–104

  30. Milner R (1989) Communication and concurrency. Prentice Hall international series in computer science. Prentice-Hall, Englewood Cliffs

    Google Scholar 

  31. Margaria T, Kubczak C, Steffen B (2007) Bio-jeti: a service integration, design, and provisioning platform for orchestrated bioinformatics processes. In BioMed Central (BMC) Bioinformatics supplement dedicated to network tools and applications in biology 2007 workshop (NETTAB 2007), vol 9

  32. Müller-Olm M, Schmidt DA, Steffen B (1999) Model-checking: a tutorial introduction. SAS, pp 330–354

  33. Margaria T, Steffen B (2008) Agile IT: thinking in user-centric models. In Procedings of ISoLA 2008, CCIS N.17. Springer, New York, pp 493–505

  34. Margaria T, Steffen B (2009) Business process modelling in the jABC: the one-thing approach. Handbook of research on business process modeling. IGI Global, PA

  35. Necula GC (1997) Proof-carrying code. In: Proceedings of POPL ’97, ACM Press, New York, pp 106–119

  36. Necula GC (2000) Translation Validation for an Optimizing Compiler. ACM SIGPLAN Notices 35(5): 83–94

    Article  Google Scholar 

  37. Niese O, Steffen B, Margaria T, Hagerer A, Brune G, Ide H-D (2001) Library-based design and consistency checking of system-level Industrial test cases. In: Proceedings of FASE, volume 2029 of LNCS. Springer, New York, pp 233–248

  38. OASIS (2007) WS-BPEL 2.0 Specification, http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.pdf

  39. Object Mentor (2007) JUnit Website. http://www.junit.org/

  40. Queille J-P, Sifakis J (1982) Specification and verification of concurrent systems in CESAR. In: Proceedings of 5th Colloquium on international symposium on programming, Springer, London, pp 337–351

  41. Smith RL, Avrunin GS, Clarke LA, Osterweil LJ (2002) Propel: an approach supporting property elucidation. In: ICSE ’02: Proceedings of the 24th international conference on software engineering, ACM Press, New York, pp 11–21

  42. Steffen B, Margaria T, Braun V, Kalt N (1997) Hierarchical service definition. In: Annual review of communication. International Engineering Consortium Chicago (USA), IEC, pp 847–856

  43. Steffen B, Margaria T, Nagel R, Jörges S, Kubczak C (2006) Model-driven development with the jABC. In: HVC—IBM Haifa Verification Conference, LNCS N.4383, Springer, New York

  44. Steffen B, Narayan P (2007) Full life-cycle support for end-to-end processes. IEEE Comput 40(11): 64–73

    Google Scholar 

  45. Steffen B (1991) Data flow analysis as model checking. In: TACS ’91: Proceedings of the international conference on theoretical aspects of computer software. Springer, New York, pp 346–365

  46. Stürmer I, Weinberg D, Conrad M (2005) Overview of existing safeguarding techniques for automatically generated code. In: Proceedings of SEAS ’05, ACM Press, New York, pp 1–6

  47. The jABC Team (2008) jABC Common Sibs. http://www.jabc.de/sib

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Sven Jörges.

Additional information

by Daniel Kröning and Jim Woodcock

Rights and permissions

Reprints and permissions

About this article

Cite this article

Jörges, S., Margaria, T. & Steffen, B. Assuring property conformance of code generators via model checking. Form Asp Comp 23, 589–606 (2011). https://doi.org/10.1007/s00165-010-0169-9

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00165-010-0169-9

Keywords

Navigation