DocumentCode
1451194
Title
Dynamically discovering likely program invariants to support program evolution
Author
Ernst, Michael D. ; Cockrell, Jake ; Griswold, William G. ; Notkin, David
Author_Institution
Dept. of Electr. Eng. & Comput. Sci., MIT, Cambridge, MA, USA
Volume
27
Issue
2
fYear
2001
fDate
2/1/2001 12:00:00 AM
Firstpage
99
Lastpage
123
Abstract
Explicitly stated program invariants can help programmers by identifying program properties that must be preserved when modifying code. In practice, however, these invariants are usually implicit. An alternative to expecting programmers to fully annotate code with invariants is to automatically infer likely invariants from the program itself. This research focuses on dynamic techniques for discovering invariants from execution traces. This article reports three results. First, it describes techniques for dynamically discovering invariants, along with an implementation, named Daikon, that embodies these techniques. Second, it reports on the application of Daikon to two sets of target programs. In programs from Gries´s work (1981) on program derivation, the system rediscovered predefined invariants. In a C program lacking explicit invariants, the system discovered invariants that assisted a software evolution task. These experiments demonstrate that, at least for small programs, invariant inference is both accurate and useful. Third, it analyzes scalability issues, such as invariant detection runtime and accuracy, as functions of test suites and program points instrumented
Keywords
reverse engineering; software maintenance; Daikon; execution traces; explicitly stated program invariants; invariant inference; likely program invariants; modifying code; program derivation; program evolution; program properties; scalability; small programs; software evolution; Application software; Computer Society; Detectors; Formal specifications; Instruments; Pattern analysis; Programming profession; Runtime; Scalability; Testing;
fLanguage
English
Journal_Title
Software Engineering, IEEE Transactions on
Publisher
ieee
ISSN
0098-5589
Type
jour
DOI
10.1109/32.908957
Filename
908957
Link To Document