scispace - formally typeset
Journal ArticleDOI

Dynamically Discovering Likely Program Invariants to Support Program Evolution

TLDR
In this paper, the authors describe techniques for dynamically discovering invariants, along with an implementation, named Daikon, that embodies these techniques, and demonstrate that, at least for small programs, invariant inference is both accurate and useful.
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.

read more

Citations
More filters
Journal ArticleDOI

Regression testing minimization, selection and prioritization: a survey

TL;DR: This paper surveys each area of minimization, selection and prioritization technique and discusses open problems and potential directions for future research.
Journal ArticleDOI

The Daikon system for dynamic detection of likely invariants

TL;DR: Daikon is an implementation of dynamic detection of likely invariants; that is, the Daikon invariant detector reports likely program invariants, a property that holds at a certain point or points in a program.
Proceedings ArticleDOI

Finding bugs is easy

TL;DR: It is found that even well tested code written by experts contains a surprising number of obvious bugs and that simple automatic techniques can be effective at countering the impact of both ordinary mistakes and misunderstood language features.
Journal ArticleDOI

Scalable statistical bug isolation

TL;DR: A statistical debugging algorithm that isolates bugs in programs containing multiple undiagnosed bugs and identifies predictors that are associated with individual bugs that reveal both the circumstances under which bugs occur as well as the frequencies of failure modes, making it easier to prioritize debugging efforts.
Journal ArticleDOI

A Survey on Software Fault Localization

TL;DR: A comprehensive overview of a broad spectrum of fault localization techniques, each of which aims to streamline the fault localization process and make it more effective by attacking the problem in a unique way is provided.
References
More filters
Journal ArticleDOI

Formal methods: state of the art and future directions

TL;DR: The state of the art in specification and verification, which includes advances in model checking and theorem proving, is assessed and future directions in fundamental concepts, new methods and tools, integration of methods, and education and technology transfer are outlined.
Proceedings ArticleDOI

Dynamically discovering likely program invariants to support program evolution

TL;DR: This paper describes techniques for dynamically discovering invariants, along with an instrumenter and an inference engine that embody these techniques, and reports on the application of the engine to two sets of target programs.
Journal ArticleDOI

Discovering models of software processes from event-based data

TL;DR: In this article, the authors describe a Markov method for process discovery, as well as two additional methods that are adopted from other domains and augmented for their purposes, and compare the methods and discuss their application in an industrial case study.
Proceedings ArticleDOI

Parametric shape analysis via 3-valued logic

TL;DR: A family of abstract-interpretation algorithms that are capable of determining "shape invariants" of programs that perform destructive updating on dynamically allocated storage by varying the vocabulary used in the three-valued logic.
Proceedings ArticleDOI

Dependent types in practical programming

TL;DR: An approach to enriching the type system of ML with a restricted form of dependent types, where type index objects are drawn from a constraint domain C, leading to the DML(C) language schema, which allows specification and inference of significantly more precise type information, facilitating program error detection and compiler optimization.
Related Papers (5)