Mining specifications
Top Cited Papers
- 1 January 2002
- journal article
- conference paper
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 37 (1) , 4-16
- https://doi.org/10.1145/565816.503275
Abstract
Program verification is a promising approach to improving program quality, because it can search all possible program executions for specific errors. However, the need to formally describe correct behavior or errors is a major barrier to the widespread adoption of program verification, since programmers historically have been reluctant to write formal specifications. Automating the process of formulating specifications would remove a barrier to program verification and enhance its practicality.This paper describes specification mining , a machine learning approach to discovering formal specifications of the protocols that code must obey when interacting with an application program interface or abstract data type. Starting from the assumption that a working program is well enough debugged to reveal strong hints of correct protocols, our tool infers a specification by observing program execution and concisely summarizing the frequent interaction patterns as state machines that capture both temporal and data dependences. These state machines can be examined by a programmer, to refine the specification and identify errors, and can be utilized by automatic verification tools, to find bugs.Our preliminary experience with the mining tool has been promising. We were able to learn specifications that not only captured the correct protocol, but also discovered serious bugs.Keywords
This publication has 16 references indexed in Scilit:
- An empirical study of operating systems errorsPublished by Association for Computing Machinery (ACM) ,2001
- Bugs as deviant behaviorPublished by Association for Computing Machinery (ACM) ,2001
- Dynamically discovering likely program invariants to support program evolutionIEEE Transactions on Software Engineering, 2001
- A Real-Time Intrusion Detection System Based on Learning Program BehaviorPublished by Springer Nature ,2000
- Using Finite Automata to Mine Execution Data for Intrusion Detection: A Preliminary ReportPublished by Springer Nature ,2000
- Quickly detecting relevant program invariantsPublished by Association for Computing Machinery (ACM) ,2000
- Discovering models of software processes from event-based dataACM Transactions on Software Engineering and Methodology, 1998
- On the learnability and usage of acyclic probabilistic finite automataPublished by Association for Computing Machinery (ACM) ,1995
- Efficiency of a Good But Not Linear Set Union AlgorithmJournal of the ACM, 1975
- Language identification in the limitInformation and Control, 1967