• DocumentCode
    2865862
  • Title

    Finding errors from reverse-engineered equality models using a constraint solver

  • Author

    Rupakheti, C.R. ; Daqing Hou

  • Author_Institution
    Dept. of Electr. & Comput. Eng., Clarkson Univ., Potsdam, NY, USA
  • fYear
    2012
  • fDate
    23-28 Sept. 2012
  • Firstpage
    77
  • Lastpage
    86
  • Abstract
    Java objects are required to honor an equality contract in order to participate in standard collection data structures such as List, Set, and Map. In practice, the implementation of equality can be error prone, resulting in subtle bugs. We present a checker called EQ that is designed to automatically detect such equality implementation bugs. The key to EQ is the automated extraction of a logical model of equality from Java code, which is then checked, using Alloy Analyzer, for contract conformance. We have evaluated EQ on four open-source, production code bases in terms of both scalability and usefulness. We discuss in detail the detected problems, their root causes, and the reasons for false alarms.
  • Keywords
    Java; data structures; formal verification; program debugging; reverse engineering; Alloy Analyzer; EQ checker; Java object; constraint solver; contract conformance; equality contract; equality implementation bug; list data structure; map data structure; reverse-engineered equality model; scalability term; set data structure; usefulness term; Abstracts; Arrays; Detectors; Java; Metals; Standards; Testing; Abstraction Recognition; Alloy; Java; Model Finding; Object Equality; Path-Based Analysis; Soot;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Software Maintenance (ICSM), 2012 28th IEEE International Conference on
  • Conference_Location
    Trento
  • ISSN
    1063-6773
  • Print_ISBN
    978-1-4673-2313-0
  • Type

    conf

  • DOI
    10.1109/ICSM.2012.6405256
  • Filename
    6405256