Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Algorithmic verification of procedural programs in the presence of code variability

Published: 01 October 2016 Publication History

Abstract

We present a generic framework for verifying temporal safety properties of procedural programs that are dynamically or statically configured by replacing, adapting, or adding new components. To deal with such a variability of a program, we require programmers to provide local specifications for its variable components, and verify the global properties by replacing these specifications with maximal models. Our framework is a generalization of a previously developed framework that fully abstracts from program data. In this work, we recapture program data and thus significantly increase the range of properties that can be verified. Our framework is generic by being parametric on the set of observed program events and their semantics. We separate program structure from the behaviour it induces to facilitate independent component specification and verification. To exemplify the use of the framework, we develop three concrete instantiations; in particular, we derive a compositional verification technique for programs written in a procedural language with pointers as the only datatype. A generic framework for compositional verification of procedural programs is proposed.Three instantiations of the framework are developed.Various scenarios for dealing with code variability are presented.

References

[1]
R. Alur, M. Arenas, P. Barcelo, K. Etessami, N. Immerman, L. Libkin, First-order and temporal logics for nested words, in: Logic in Computer Science, IEEE Computer Society, Washington, DC, USA, 2007, pp. 151-160.
[2]
R. Alur, M. Benedikt, K. Etessami, P. Godefroid, T. Reps, M. Yannakakis, Analysis of recursive state machines, ACM Trans. Program. Lang. Syst., 27 (2005) 786-818.
[3]
R. Alur, S. Chaudhuri, Temporal reasoning for procedural programs, in: Lecture Notes in Computer Science, vol. 5944, Springer, 2010, pp. 45-60.
[4]
R. Alur, S. Chaudhuri, P. Madhusudan, Languages of nested trees, in: Lecture Notes in Computer Science, vol. 4144, Springer, 2006, pp. 329-342.
[5]
R. Alur, K. Etessami, P. Madhusudan, A temporal logic for nested calls and returns, in: Lecture Notes in Computer Science, vol. 2998, Springer, 2004, pp. 467-481.
[6]
A. Amighi, P. Gomes, D. Gurov, M. Huisman, Provably correct control flow graphs from Java bytecode programs with exceptions, int. J. Softw. Tools Technol. Transfer, 2015, http://dx.doi.org/10.1007/s10009-015-0375-0, in press.
[7]
H. Andersen, Partial model checking (extended abstract), in: Logic in Computer Science, IEEE Computer Society Press, 1995, pp. 398-407.
[8]
A. Arnold, D. Niwiński, Rudiments of µ-Calculus, Elsevier Publishing, 2001.
[9]
T. Ball, A. Podelski, S. Rajamani, Boolean and Cartesian abstraction for model checking c programs, in: Lecture Notes in Computer Science, vol. 2031, Springer, 2001, pp. 268-283.
[10]
T. Ball, S. Rajamani, Boolean programs: a model and process for software analysis, Microsoft Research, 2000.
[11]
T. Ball, S.K. Rajamani, Bebop: a symbolic model checker for Boolean programs, in: Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification, Springer-Verlag, London, UK, 2000, pp. 113-130.
[12]
T. Ball, S.K. Rajamani, The SLAM project: debugging system software via static analysis, in: Principles of Programming Languages, 2002, pp. 1-3.
[13]
H. Bekič, Definable operators in general algebras, and the theory of automata and flowcharts, IBM Laboratory, 1967.
[14]
K. Bierhoff, N.E. Beckman, J. Aldrich, Practical API protocol checking with access permissions, in: Lecture Notes in Computer Science, vol. 5653, Springer, 2009, pp. 195-219.
[15]
R. Cleaveland, J. Parrow, B. Steffen, A semantics based verification tool for finite state systems, in: International Symposium on Protocol Specification, Testing and Verification, North-Holland Publishing Co., 1990, pp. 287-302.
[16]
B. Cook, D. Kroening, N. Sharygina, Symbolic Model Checking for Asynchronous Boolean Programs, Springer, 2005.
[17]
M. Das, S. Lerner, M. Seigle, ESP: path-sensitive program verification in polynomial time, in: Programming Language Design and Implementation, ACM, 2002, pp. 57-68.
[18]
P. de Carvalho Gomes, A. Picoco, D. Gurov, Sound control flow graph extraction from incomplete Java bytecode programs, in: Lecture Notes in Computer Science, vol. 8411, Springer, Berlin, 2014, pp. 215-229.
[19]
O. Grumberg, D. Long, Model checking and modular verification, ACM Trans. Program. Lang. Syst., 16 (1994) 843-871.
[20]
D. Gurov, M. Huisman, Reducing behavioural to structural properties of programs with procedures, Theor. Comput. Sci., 480 (2013) 69-103.
[21]
D. Gurov, M. Huisman, C. Sprenger, Compositional verification of sequential programs with procedures, Inf. Comput., 206 (2008) 840-868.
[22]
M. Hennessy, R. Milner, Algebraic laws for nondeterminism and concurrency, J. ACM, 32 (1985) 137-161.
[23]
M. Huisman, I. Aktug, D. Gurov, Program models for compositional verification, in: Lecture Notes in Computer Science, vol. 5256, Springer, 2008, pp. 147-166.
[24]
M. Huisman, D. Gurov, CVPP: a tool set for compositional verification of control-flow safety properties, in: Lecture Notes in Computer Science, vol. 6528, Springer, 2010, pp. 107-121.
[25]
Servlet development, release 2 (9.0.3). http://docs.oracle.com/cd/A97688_16/generic.903/a97680/develop.htm#1007089
[26]
S. Kiefer, S. Schwoon, D. Suwimonteerabuth, Moped - a model-checker for pushdown systems. http://www.informatik.uni-stuttgart.de/fmi/szs/tools/moped/
[27]
D. Kozen, Results on the propositional µ-calculus, Theor. Comput. Sci., 27 (1983) 333-354.
[28]
O. Kupferman, M. Vardi, An automata-theoretic approach to modular model checking, ACM Trans. Program. Lang. Syst., 22 (2000) 87-128.
[29]
K. Larsen, Modal specifications, in: Lecture Notes in Computer Science, vol. 407, Springer, 1989, pp. 232-246.
[30]
P. Müller, Modular Specification and Verification of Object-Oriented Programs, Springer, 2002.
[31]
A. Podelski, T. Wies, Boolean heaps, in: Lecture Notes in Computer Science, vol. 3672, Springer, Berlin, Heidelberg, 2005, pp. 268-283.
[32]
J. Rot, F. de Boer, M. Bonsangue, A pushdown system representation for unbounded object creation, in: Informal Pre-Proceedings of Formal Verification of Object-Oriented Software, 2010.
[33]
J. Rot, F.S. de Boer, M.M. Bonsangue, Unbounded allocation in bounded heaps, in: Lecture Notes in Computer Science, vol. 8161, Springer, 2013, pp. 1-16.
[34]
S. Soleimanifard, D. Gurov, Algorithmic verification of procedural programs in the presence of code variability, in: Lecture Notes in Computer Science, vol. 8997, Springer, 2014, pp. 327-345.
[35]
S. Soleimanifard, D. Gurov, M. Huisman, Procedure-modular specification and verification of temporal safety properties, Softw. Syst. Model., 14 (2015) 83-100.
[36]
A. Tarski, A lattice-theoretical fixpoint theorem and its applications, Pac. J. Appl. Math., 5 (1955) 285-310.

Cited By

View all
  • (2024)Deductively Verified Program Models for Software Model CheckingLeveraging Applications of Formal Methods, Verification and Validation. Specification and Verification10.1007/978-3-031-75380-0_2(8-25)Online publication date: 27-Oct-2024
  • (2022)Deductive Verification Based Abstraction for Software Model CheckingLeveraging Applications of Formal Methods, Verification and Validation. Verification Principles10.1007/978-3-031-19849-6_2(7-28)Online publication date: 22-Oct-2022
  • (2017)Testing automation systems by means of model checking2017 22nd IEEE International Conference on Emerging Technologies and Factory Automation (ETFA)10.1109/ETFA.2017.8247579(1-7)Online publication date: 12-Sep-2017
  • Show More Cited By
  1. Algorithmic verification of procedural programs in the presence of code variability

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image Science of Computer Programming
      Science of Computer Programming  Volume 127, Issue C
      October 2016
      131 pages

      Publisher

      Elsevier North-Holland, Inc.

      United States

      Publication History

      Published: 01 October 2016

      Author Tags

      1. Compositional verification
      2. Maximal models
      3. Model checking

      Qualifiers

      • Research-article

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)0
      • Downloads (Last 6 weeks)0
      Reflects downloads up to 20 Jan 2025

      Other Metrics

      Citations

      Cited By

      View all
      • (2024)Deductively Verified Program Models for Software Model CheckingLeveraging Applications of Formal Methods, Verification and Validation. Specification and Verification10.1007/978-3-031-75380-0_2(8-25)Online publication date: 27-Oct-2024
      • (2022)Deductive Verification Based Abstraction for Software Model CheckingLeveraging Applications of Formal Methods, Verification and Validation. Verification Principles10.1007/978-3-031-19849-6_2(7-28)Online publication date: 22-Oct-2022
      • (2017)Testing automation systems by means of model checking2017 22nd IEEE International Conference on Emerging Technologies and Factory Automation (ETFA)10.1109/ETFA.2017.8247579(1-7)Online publication date: 12-Sep-2017
      • (2015)Formal Architecture Modeling of Sequential C-ProgramsRevised Selected Papers of the 12th International Conference on Formal Aspects of Component Software - Volume 953910.1007/978-3-319-28934-2_17(312-329)Online publication date: 14-Oct-2015

      View Options

      View options

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media