Reuse in Software Verification by Abstract Method Calls

A major obstacle facing adoption of formal software verification is the difficulty to track changes in the target code and to accomodate them in specifications and in verification arguments. We introduce abstract method calls, a new verification rule for method calls that can be used in most contract-based verification settings. By combining abstract method calls, structured reuse in specification contracts, and caching of verification conditions, it is possible to detect reusability of contracts automatically via first-order reasoning. This is the basis for a verification framework that is able to deal with code undergoing frequent changes.

[1]  Viviana Bono,et al.  Delta-Oriented Programming of Software Product Lines , 2010, SPLC.

[2]  Kurt Stenzel,et al.  Reuse of Proofs in Software Verification , 1993, FSTTCS.

[3]  Bernhard Beckert,et al.  Proof reuse for deductive program verification , 2004, Proceedings of the Second International Conference on Software Engineering and Formal Methods, 2004. SEFM 2004..

[4]  Bernhard Beckert,et al.  Formal Verification of Object-Oriented Software - International Conference, FoVeOOS 2010, Paris, France, June 28-30, 2010, Revised Selected Papers , 2011, FoVeOOS.

[5]  Jaejoon Lee,et al.  Software Product Lines: Going Beyond - 14th International Conference, SPLC 2010, Jeju Island, South Korea, September 13-17, 2010. Proceedings , 2010, SPLC.

[6]  Johan Dovland,et al.  Lazy Behavioral Subtyping , 2008, FM.

[7]  K. Rustan M. Leino,et al.  Verification of Object-Oriented Programs with Invariants , 2003, J. Object Technol..

[8]  Valérie Issarny,et al.  Formal Methods for Eternal Networked Software Systems , 2011, Lecture Notes in Computer Science.

[9]  Reiner Hähnle,et al.  A Liskov Principle for Delta-Oriented Programming , 2012, ISoLA.

[10]  Reiner Hähnle,et al.  Modeling Spatial and Temporal Variability with the HATS Abstract Behavioral Modeling Language , 2011, SFM.

[11]  Johan Dovland,et al.  A transformational proof system for delta-oriented programming , 2012, SPLC '12.

[12]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[13]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[14]  Peter H. Schmitt,et al.  Verification of Modifies Clauses in Dynamic Logic with Non-rigid Functions , 2009 .

[15]  Bernhard Beckert,et al.  Program verification using change information , 2003, First International Conference onSoftware Engineering and Formal Methods, 2003.Proceedings..

[16]  Johan Dovland,et al.  Tracking Behavioral Constraints during Object-Oriented Software Evolution , 2012, ISoLA.

[17]  Bernhard Beckert,et al.  Verification of Object-Oriented Software. The KeY Approach - Foreword by K. Rustan M. Leino , 2007, The KeY Approach.

[18]  Vladimir Klebanov,et al.  Verification of Software Product Lines with Delta-Oriented Slicing , 2010, FoVeOOS.

[19]  MeyerBertrand,et al.  Design by Contract , 1997 .