• DocumentCode
    1556008
  • Title

    Dynamic verification of C++ generic algorithms

  • Author

    Wang, Changqing ; Musser, David R.

  • Author_Institution
    Dept. of Software Syst., GTE Labs. Inc., Waltham, MA, USA
  • Volume
    23
  • Issue
    5
  • fYear
    1997
  • fDate
    5/1/1997 12:00:00 AM
  • Firstpage
    314
  • Lastpage
    323
  • Abstract
    Dynamic verification is a new approach to formal verification, applicable to generic algorithms such as those found in the Standard Template Library (STL, part of the Draft ANSI/ISO C++ Standard Library). Using behavioral abstraction and symbolic execution techniques, verifications are carried out at an abstract level such that the results can be used in a variety of instances of the generic algorithms without repeating the proofs. This is achieved by substituting for type parameters of generic algorithms special data types that model generic concepts by accepting symbolic inputs and deducing outputs using inference methods. By itself, this symbolic execution technique supports testing of programs with symbolic values at an abstract level. For formal verification one also needs to generate multiple program execution paths and use assertions (to handle while loops, for example), but the authors show how this can be achieved via directives to a conventional debugger program and an analysis database. The assertions must still be supplied, but they can be packaged separately and evaluated as needed by appropriate transfers of control orchestrated via the debugger. Unlike all previous verification methods, the dynamic verification method thus works without having to transform source code or process it with special interpreters. They include an example of the formal verification of an STL generic algorithm
  • Keywords
    data structures; formal verification; inference mechanisms; program debugging; program interpreters; program testing; software libraries; subroutines; C++ generic algorithms; STL generic algorithm; Standard Template Library; analysis database; behavioral abstraction; control transfer; data types; debugger program; dynamic verification; formal verification; inference methods; model generic concepts; multiple program execution paths; output deduction; program testing; symbolic execution techniques; symbolic inputs; ANSI standards; Data analysis; Databases; Debugging; Formal verification; ISO standards; Inference algorithms; Libraries; Packaging; Testing;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/32.588523
  • Filename
    588523