Behavioral interface specification languages
Authors:
Open Access
- 14 June 2012
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in ACM Computing Surveys
- Vol. 44 (3) , 1-58
Abstract
Behavioral interface specification languages provide formal code-level annotations, such as preconditions, postconditions, invariants, and assertions that allow programmers to express the intended behavior of program modules. Such specifications are useful for precisely documenting program behavior, for guiding implementation, and for facilitating agreement between teams of programmers in modular development of software. When used in conjunction with automated analysis and program verification tools, such specifications can support detection of common code vulnerabilities, capture of light-weight application-specific semantic properties, generation of test cases and test oracles, and full formal program verification. This article surveys behavioral interface specification languages with a focus toward automatic program verification and with a view towards aiding the Verified Software Initiative—a fifteen-year, cooperative, international project directed at the scientific challenges of large-scale software verification.Keywords
Funding Information
- Sixth Framework Programme (IST-2005-015905 MOBIUS)
- Engineering and Physical Sciences Research Council (EP/F019394)
- Division of Computer and Network Systems (CNS 08-08913, CCF 0916350, and CCF 0916715)
- National Science Foundation (CRI-0454348)
- Division of Computing and Communication Foundations (CNS 08-08913, CCF 0916350, and CCF 0916715)
This publication has 149 references indexed in Scilit:
- How the design of JML accommodates both runtime assertion checking and formal verificationScience of Computer Programming, 2005
- An overview of JML tools and applicationsInternational Journal on Software Tools for Technology Transfer, 2004
- Runtime verification of .NET contractsJournal of Systems and Software, 2003
- Calculating sharp adaptation rulesInformation Processing Letters, 2001
- The rely-guarantee method for verifying shared variable concurrent programsFormal Aspects of Computing, 1997
- On the frame problem in procedure specificationsIEEE Transactions on Software Engineering, 1995
- Partial functions and logics: A warningInformation Processing Letters, 1995
- Do-it-yourself type theoryFormal Aspects of Computing, 1989
- Statecharts: a visual formalism for complex systemsScience of Computer Programming, 1987
- On the notion of expressiveness and the rule of adaptationTheoretical Computer Science, 1983