Automatic Model Extraction from C Code—Abstracter and Architecture

Conference paper
Part of the Advances in Intelligent Systems and Computing book series (AISC, volume 340)


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]).


Data dependency C code—abstracter Promela abC tool 


  1. 1.
    Holzmann, G.J.: SPIN Model Checker, The Primer and Reference Manual. Addison Wesley, Boston (2003)Google Scholar
  2. 2.
    Holzmann, G.J., Smith, M.H.: A practical method for verifying event driven software. In: Proceedings of the 21st International Conference on Software Engineering (ICSE 1999), Los Angeles, CA, pp. 597–607 (1999)Google Scholar
  3. 3.
    Barman, K.D., Mukhopadhyay, D.: Model checking in practice: analysis of generic bootloader using SPIN. In: Proceedings of ICFEM07, Florida, pp. 232–245 (2007)Google Scholar
  4. 4.
    Holzmann, G.J.: Logic verification of ANSI-C code with SPIN. In: Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification (SPIN 2000), London, pp. 131–147 (2000)Google Scholar
  5. 5.
    Holzmann, G.J., Smith, M.H.: Software model checking: extracting verification models from source code. Soft. Test. Verification Reliab. 11(2), 65–79 (2001)CrossRefGoogle Scholar
  6. 6.
    de la Camara, P., Gallardo, M.M., Merino, P.: Abstract matching for software model checking. In: 13th International Workshop on Model Checking of Software (SPIN06), pp. 182–200. Springer, Berlin (2006)Google Scholar
  7. 7.
    de la Camara, P., del-Mar Gallardo, M., Merino, P.: Model extraction for ARINC 653 based Avionics software. In: SPIN07, Berlin, pp. 243–262 (2007)Google Scholar
  8. 8.
  9. 9.
    Havelund, K., Pressburger, T.: Model checking java programs using Java pathfinder. Int. J. Soft. Tools Technol. Transf. 2(4), 366–381 (2000)CrossRefMATHGoogle Scholar
  10. 10.
    Corbett, J.C., Dwyer, M.B., Hatcliff, J., Laubach, S., Pasareanu, C.S., Zheng, H.: Bandera: extracting finite-state models from Java source code. In: Proceedings of the 22nd International Conference on Software Engineering, pp. 439–448. ACM Press, New York (2000)Google Scholar
  11. 11.
    Gallardo, M.M., Joubert, C., Merino, P., Sanan, D.: A model-extraction approach to verifying concurrent C programs with CADP. J. Sci. Comput. Program. 77(3), 375–392 (2012)CrossRefGoogle Scholar
  12. 12.
    Debnath, N.C.: A new abstraction for the study of module interaction. In: Proceedings of the 19th Annual Conference on Computer Science, San Antonio, TX, pp. 181–189 (1991)Google Scholar
  13. 13.
    Holzmann, G.J.: From code to models. In: Proceedings of the 2nd International Conference on Application of Concurrency to System Design (ACSD01), Washington, D.C (2001)Google Scholar
  14. 14.
    Dams, D., Hesse, W., Holzmann, G.J.: Abstracting C with abC. In: Proceedings of the 14th International Conference on Computer Aided Verification (CAV02), London, pp. 515–520 (2002)Google Scholar
  15. 15.
    Dwyer, M.B., Hatcliff, J.: Slicing software for model construction. High.-Order Symbolic Comput. 13, 105–118 (1999)MATHGoogle Scholar
  16. 16.
    Vasudevan, S., Abraham, J.A.: Static program transformations for efficient software model checking. In: IFIP Congress Topical Sessions, pp. 257–282 (2004)Google Scholar

Copyright information

© Springer India 2015

Authors and Affiliations

  1. 1.IXIA Technologies Pvt. Ltd.KolkataIndia

Personalised recommendations