Automatic Model Building and Verification of Embedded Software with UPPAAL

Embedded systems are becoming ubiquitous and taking more and more important part in our daily life. Increasingly complex functionality leads to higher develop cost and lower software quality. Model checking has the potential of alleviating these problems. In this paper, we present an approach to construct model directly from the source code. An embedded system design language, Virgil, is selected as the target. Without losing any information, the UPPAAL model is generated based on the typed intermediate language. The timing information and stack behavior are estimated and after merging the hardware platform model, the whole system can be simulated on the model checker and some safety and aliveness properties of the program are verified.

[1]  Sergio Yovine,et al.  KRONOS: a verification tool for real-time systems , 1997, International Journal on Software Tools for Technology Transfer.

[2]  Michel Poize,et al.  TAXYS=Esterel+Kronos. A tool for verifying real-time properties of embedded systems , 2001, Proceedings of the 40th IEEE Conference on Decision and Control (Cat. No.01CH37228).

[3]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[4]  Thomas W. Reps,et al.  Program analysis via graph reachability , 1997, Inf. Softw. Technol..

[5]  Kim G. Larsen,et al.  Testing Real-Time Systems Using UPPAAL , 2008, Formal Methods and Testing.

[6]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[7]  Hendrik Brinksma,et al.  On Verification Modelling of Embedded Systems , 2004 .

[8]  Jens Palsberg,et al.  Deadline analysis of interrupt-driven software , 2003, IEEE Transactions on Software Engineering.

[9]  Kim G. Larsen,et al.  A Tutorial on Uppaal , 2004, SFM.

[10]  Frits W. Vaandrager,et al.  Analysis of the zeroconf protocol using UPPAAL , 2006, EMSOFT '06.

[11]  Thomas Ball,et al.  The Static Driver Verifier Research Platform , 2010, CAV.

[12]  Matthew B. Dwyer,et al.  Bandera: extracting finite-state models from Java source code , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[13]  Jens Palsberg,et al.  Timing analysis of TCP servers for surviving denial-of-service attacks , 2005, 11th IEEE Real Time and Embedded Technology and Applications Symposium.

[14]  Thomas A. Henzinger,et al.  The BLAST Software Verification System , 2005, SPIN.

[15]  Kim G. Larsen,et al.  Formal modeling and analysis of an audio/video protocol: an industrial case study using UPPAAL , 1997, Proceedings Real-Time Systems Symposium.

[16]  Lina Khatib,et al.  Verification of Plan Models Using UPPAAL , 2000, FAABS.

[17]  Jens Palsberg,et al.  Objects to bits: efficient implementation of object-oriented languages on very small devices , 2007 .

[18]  Kim G. Larsen,et al.  Time-Optimal Real-Time Test Case Generation Using Uppaal , 2003, FATES.

[19]  Jens Palsberg,et al.  Static checking of interrupt-driven software , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[20]  Arne Skou,et al.  Formal Verification of a Power Controller Using the Real-Time Model Checker UPPAAL , 1999, ARTS.

[21]  Ben L. Titzer Virgil: objects on the head of a pin , 2006, OOPSLA '06.

[22]  Andreas Podelski Model Checking as Constraint Solving , 2000, SAS.

[23]  Gerard J. Holzmann,et al.  The SPIN Model Checker - primer and reference manual , 2003 .