skip to main content
10.1145/337180.337240acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article
Free Access

Quickly detecting relevant program invariants

Authors Info & Claims
Published:01 June 2000Publication History

ABSTRACT

Explicitly stated program invariants can help programmers by characterizing certain aspects of program execution and identifying program properties that must be preserved when modifying code. Unfortunately, these invariants are usually absent from code. Previous work showed how to dynamically detect invariants from program traces by looking for patterns in and relationships among variable values. A prototype implementation, Daikon, accurately recovered invariants from formally-specified programs, and the invariants it detected in other programs assisted programmers in a software evolution task. However, Daikon suffered from reporting too many invariants, many of which were not useful, and also failed to report some desired invariants.

This paper presents, and gives experimental evidence of the efficacy of, four approaches for increasing the relevance of invariants reported by a dynamic invariant detector. One of them — exploiting unused polymorphism — adds desired invariants to the output. The other three — suppressing implied invariants, limiting which variables are compared to one another, and ignoring unchanged values — eliminate undesired invariants from the output and also improve runtime by reducing the work done by the invariant detector.

References

  1. ECGN.Michael D. Ernst, Jake Cockrell, William G. Griswold, and David Notkin. Dynamically discovering likely program invariants to support program evolution. IEEE Transactions on Software Engineering. To appear. A previous version appeared in Proceedings of the 21st International Conference on Software Engineering, pages 213-224, May 19-21, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. EGKN99.Michael D. Ernst, William G. Griswold, Yoshio Kataoka, and David Notkin. Dynamically discovering pointerbased program invariants. Technical Report UW-CSE-99-11-02, University of Washington, Seattle, WA, November 16, 1999.Google ScholarGoogle Scholar
  3. Goe85.Amrit L. Goel. Software reliability models: Assumptions, limitations, and applicability. IEEE Transactions on Software Engineering, SE-11(12):1411-23, December 1985.Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Gri81.David Gries. The Science of Programming. Springer- Verlag, New York, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. HFGO94.Monica Hutchins, Herb Foster, Tarak Goradia, and Thomas Ostrand. Experiments on the effectiveness of dataflowand controlflow-based test adequacy criteria. In Proceedings of the 16th International Conference on Software Engineering, pages 191-200, May 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. OJ97.Robert O'Callahan and Daniel Jackson. Lackwit: A program understanding tool based on type inference. In Proceedings of the 19th International Conference on Software Engineering, pages 338-348, May 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. RH98.Gregg Rothermel and Mary Jean Harrold. Empirical studies of a safe regression test selection technique. IEEE Transactions on Software Engineering, 24(6):401-419, June 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Sal68.Gerard Salton. Automatic Information Organization and Retrieval. McGraw-Hill, 1968. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Wei99.Mark Allen Weiss. Data Structures and Algorithm Analysis in Java. Addison Wesley Longman, 1999.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Quickly detecting relevant program invariants

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      ICSE '00: Proceedings of the 22nd international conference on Software engineering
      June 2000
      843 pages
      ISBN:1581132069
      DOI:10.1145/337180

      Copyright © 2000 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 1 June 2000

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • Article

      Acceptance Rates

      Overall Acceptance Rate276of1,856submissions,15%

      Upcoming Conference

      ICSE 2025

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader