• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Dynamically discovering likely program invariants to support program evolution (2001)

Download From

IEEE
Download from IEEE

Download Links

  • [www.cs.wm.edu]
  • [pag.csail.mit.edu]
  • [people.csail.mit.edu]
  • [pag.lcs.mit.edu]
  • [hiper.cis.udel.edu]
  • [people.csail.mit.edu]
  • [www.pag.csail.mit.edu]
  • [pag.csail.mit.edu]
  • [www.cs.washington.edu]
  • [geyer.lcs.mit.edu]
  • [www.cs.washington.edu]
  • [www.cs.washington.edu]
  • [www.cs.washington.edu]
  • [www.cs.umd.edu]
  • [www.cs.umd.edu]
  • [www.cs.kent.edu]

  • Other Repositories/Bibliography

  • DBLP
  • Save to List
  • Add to Collection
  • Correct Errors
  • Monitor Changes
by Michael D. Ernst , Jake Cockrell , William G. Griswold , David Notkin
Venue:IEEE TRANSACTIONS ON SOFTWARE ENGINEERING
Citations:467 - 63 self
  • Summary
  • Active Bibliography
  • Co-citation
  • Clustered Documents
  • Version History

BibTeX

@ARTICLE{Ernst01dynamicallydiscovering,
    author = {Michael D. Ernst and Jake Cockrell and William G. Griswold and David Notkin},
    title = {Dynamically discovering likely program invariants to support program evolution},
    journal = {IEEE TRANSACTIONS ON SOFTWARE ENGINEERING},
    year = {2001},
    volume = {27},
    pages = {213--224}
}

Years of Citing Articles

Bookmark

citeulike Connotea Bibsonomy Del.icio.us Digg Reddit

OpenURL

 

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 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. Index TermsÐProgram invariants, formal specification, software evolution, dynamic analysis, execution traces, logical inference, pattern recognition. 1

Citations

1310 A Discipline of Programming - Dijkstra - 1976
1219 An axiomatic basis for computer programming - Hoare - 1969
784 Learning logical definitions from relations - Quinlan - 1989
593 Partial Evaluation and Automatic Program Generation - Jones, Gomard, et al. - 1993
465 Parametric Shape Analysis via 3-Valued Logic - Sagiv, Reps, et al. - 1999
439 The Science of Programming - Gries - 1981
375 Efficient ContextSensitive Pointer Analysis for C Programs - Wilson, Lam - 1995
360 Analysis of pointers and structures - Chase, Wegman, et al. - 1990
312 A safe approximate algorithm for interprocedural aliasing - Landi, Ryder - 1992
273 Extended static checking - Detlefs, Leino, et al. - 1998
272 Dependent types in practical programming - Xi, Pfenning - 1999
245 The Design and Implementation of a Certifying Compiler - Necula, Lee - 2004
187 Discovering models of software processes from event-based data - Cook, Wolf - 1998
185 Experiments on the effectiveness of dataflow- and controlflow-based test adequacy criteria - Hutchins, Foster, et al. - 1994
182 Abstraction and Specification in Program Development - Liskov, Guttag - 1986
178 Is it a tree, a dag, or a cyclic graph? a shape analysis for heap-directed pointers in c - Ghiya, Hendren - 1996
162 Eliminating Array Bound Checking Through Dependent Types - Xi, Pfenning - 1998
146 Static detection of dynamic memory errors - Evans - 1996
135 Flow analysis for verifying properties of concurrent software systems - Dwyer, Clarke, et al. - 2004
130 A practical approach to programming with assertions - Rosenblum - 1995
106 Quickly detecting relevant program invariants - Ernst, Czeisler, et al. - 2000
104 LCLint: A tool for using specifications to check code - Evans, Guttag, et al. - 1994
99 Value profiling - Calder, Feller, et al. - 1997
98 Lackwit: A program understanding tool based on type inference - O’Callahan, Jackson - 1997
92 Empirical studies of a safe regression test selection technique - Rothermel, Harrold - 1998
91 Software reliability via run-time result-checking - Wasserman, Blum - 1997
86 The use of program profiling for software maintenance with applications to the year 2000 problem - Reps, Ball, et al. - 1997
85 Powerful techniques for the automatic generation of invariants - BENSALEM, LAKHNECH, et al. - 1996
83 Abstractions for recursive pointer data structures: improving the analysis and transformation of imperative programs - Hendren, Hummell, et al. - 1992
71 An overview of the Extended Static Checking system - Detlefs - 1996
63 Run-Time Disambiguation: Coping with Statically Unpredictable Dependencies - Nicolau - 1989
63 Value profiling and optimization - Calder, Feller, et al. - 1999
62 Elimination of redundant array subscript range checks - Kolte, Wolfe - 1995
61 Grammatically biased learning: Learning logic programs using an explicit antecedent description language - Cohen - 1994
58 A Fresh Look at Optimizing Array Bound Checking - Gupta - 1990
58 K.: Implementation of an array bound checker - Suzuki, Ishihata - 1977
56 jcontractor: A reflective java library to support design by contract - Karaorman, Holzle, et al. - 1999
53 An Empirical Analysis of Instruction Repetition - Sodani, Sohi - 1998
52 Event-based detection of concurrency - Cook, Wolf - 1998
51 Automatic generation of invariants and intermediate assertions - Bjrner, Browne, et al. - 1997
50 Speculative Disambiguation: a compilation technique for dynamic memory disambiguation - Huang, Slavenberg, et al. - 1994
50 An extended static checker for Modula-3 - Leino, Nelson - 1998
47 The maintainer's assistant - Ward, Calliss, et al. - 1989
45 An empirical investigation of program spectra - Harrold, Rothermel, et al. - 1998
45 The synthesis of loop predicates - Wegbreit - 1974
45 Query-based debugging of object-oriented programs - Lencevicius, Hölzle, et al. - 1997
43 Dependent types in logic programming - Pfenning - 1992
37 Complexity of synthesizing inductive assertions - Wegbreit - 1975
36 The use of self checks and voting in software error detection: an empirical study - Leveson, Cha, et al. - 1990
34 Logical Analysis of Programs - Katz, Manna - 1976
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University