• DocumentCode
    1761950
  • Title

    On the Effectiveness of Contracts as Test Oracles in the Detection and Diagnosis of Functional Faults in Concurrent Object-Oriented Software

  • Author

    Araujo, Wladimir ; Briand, Lionel C. ; Labiche, Yvan

  • Author_Institution
    Juniper Networks, Sunnyvale, CA, USA
  • Volume
    40
  • Issue
    10
  • fYear
    2014
  • fDate
    Oct. 1 2014
  • Firstpage
    971
  • Lastpage
    992
  • Abstract
    Design by contract (DbC) is a software development methodology that focuses on clearly defining the interfaces between components to produce better quality object-oriented software. Though there exists ample support for DbC for sequential programs, applying DbC to concurrent programs presents several challenges. Using Java as the target programming language, we tackle such challenges by augmenting the Java Modelling Language (JML) and modifying the JML compiler (jmlc) to generate runtime assertion checking code to support DbC in concurrent programs. We applied our solution in a carefully designed case study on a highly concurrent industrial software system from the telecommunications domain to assess the effectiveness of contracts as test oracles in detecting and diagnosing functional faults in concurrent software. Based on these results, clear and objective requirements are defined for contracts to be effective test oracles for concurrent programs whilst balancing the effort to design them. Effort is measured indirectly through the contract complexity measure (CCM), a measure we define. Main results include that contracts of a realistic level of completeness and complexity can detect around 76 percent of faults and reduce the diagnosis effort for such faults tenfold. We, therefore, show that DbC can be applied to concurrent software and can be a valuable tool to improve the economics of software engineering.
  • Keywords
    Java; concurrency control; contracts; fault diagnosis; object-oriented methods; parallel programming; program compilers; program testing; software quality; software reliability; CCM; DbC; JML compiler; JMLC; Java modelling language; concurrent industrial software system; concurrent programs; concurrent software; contract complexity measure; design by contract; functional fault detection; functional fault diagnosing; object-oriented software quality; runtime assertion checking code; sequential programs; software development methodology; software engineering; target programming language; telecommunication domain; test oracles; Concurrent computing; Contracts; Interference; Java; Message systems; Programming; Software; Concurrent programming; Software Quality/SQA??Measurement applied to SQA and V&V; Software/Program Verification??Programming by contract; object-oriented programming;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/TSE.2014.2339829
  • Filename
    6857355