Automatic Model Extraction from C Code—Abstracter and Architecture

Today’s digitized world are completely dependent on softwares and the cost of programming errors for these softwares are increasing on a daily basis. C is one of the most popular programming language and has been widely used in developing safety critical softwares, embedded systems, etc. In spite of the fact that the area of formally verifying a code is quite rich, but still not much research has gone in the direction of automatically extracting the model from a code. SPIN model (Holzmann in SPIN model checker, the primer and reference manual. Addison Wesley, Boston, 2003, [1]) checker is one of the world’s most popular model checkers, and arguably one of the world’s most powerful tool for detecting software defects in concurrent system designs. However, SPIN is incapable of checking C programs directly, rather it accepts a specification language called Promela. In this paper, we provide an architectural overview of automatically extracting Promela model from programs written in C. The proposed architecture also provides scope for abstraction to handle state space exploration problem. In fact, we propose unified solutions for data hiding and data narrowing, the two most important techniques of program abstraction based on Generalized Program Graph (Debnath in A new abstraction for the study of module interaction, pp. 181–189, 1991, [12]).

[1]  Gerard J. Holzmann,et al.  Logic Verification of ANSI-C Code with SPIN , 2000, SPIN.

[2]  Gerard J. Holzmann,et al.  A practical method for verifying event-driven software , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[3]  María-del-Mar Gallardo,et al.  Abstract Matching for Software Model Checking , 2006, SPIN.

[4]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[5]  Narayan C. Debnath A new abstraction for the study of module interconnection , 1991, CSC '91.

[6]  James C. Corbett,et al.  Bandera: extracting finite-state models from Java source code , 2000, ICSE.

[7]  Gerard J. Holzmann,et al.  Abstracting C with abC , 2002, CAV.

[8]  Matthew B. Dwyer,et al.  Slicing Software for Model Construction , 2000, High. Order Symb. Comput..

[9]  Jacob A. Abraham,et al.  Static program transformations for efficient software model checking , 2004, IFIP Congress Topical Sessions.

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

[11]  Debapriyay Mukhopadhyay,et al.  Model Checking in Practice: Analysis of Generic Bootloader Using SPIN , 2007, ICFEM.

[12]  María-del-Mar Gallardo,et al.  A model-extraction approach to verifying concurrent C programs with CADP , 2012, Sci. Comput. Program..

[13]  Gerard J. Holzmann,et al.  SOFTWARE TESTING, VERIFICATION AND RELIABILITY , 2022 .

[14]  María-del-Mar Gallardo,et al.  Model Extraction for ARINC 653 Based Avionics Software , 2007, SPIN.

[15]  Gerard J. Holzmann,et al.  From code to models , 2001, Proceedings Second International Conference on Application of Concurrency to System Design.