From the October 2014 Issue
On the Effectiveness of Contracts as Test Oracles in the Detection and Diagnosis of Functional Faults in Concurrent Object-Oriented Software
By Yepang Liu, Chang Xu, S.C. Cheung, and Jian Lü
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.
Editorials and Announcements
- According to Thomson Reuters' 2013 Journal Citation Report, TSE has an impact factor of 2.292.
- TSE celebrates its 40th Anniversary
- Get Your Journals as eBooks for Free
- eBooks of issues of TSE can now be downloaded from the Computer Society Digital Library
- In Memoriam: Mary Jean Harrold (1947-2013) (Nov 2013)
- Editorial (Sept 2013)
- In Memoriam—David Notkin (1953-2013) (June 2013)
- Editorial (May 2013)
- E-ditorial: State of the Journal (Feb 2013)
- State of the Journal (Jan/Feb 2012)
- Editorial: What Makes a Publication Archival? (March/April 2011)
- Editorial: State of the Journal (Jan/Feb 2011)
- Editorial (Nov/Dec 2010)
- How Special Should Issues Be? (Jul/Aug 2010)
- Special Section on the International Symposium on Software Testing and Analysis (March/April 2012)
- Special Section on the International Conference on Software Engineering (Jan/Feb 2012)
- Special Section on Socio-Technical Environment of Software Development Projects (May/June 2011)
- Search Based Software Engineering: Introduction to the Special Issue of the IEEE Transactions on Software Engineering (Nov/Dec 2010)
- 2008 Conference on the Foundations of Software Engineering (Sept/Oct 2010)
- The Best Papers of ISSTA (Jul/Aug 2010)
Access All Recently Published TSE Articles
Subscribe to the RSS feed of latest TSE content added to the digital library
Sign up to receive email alerts when a new issue of TSE is online.
A PrePrint is an article that has been accepted for publication in a future issue of this journal, but has not been fully edited. Content may change prior to final publication
The IEEE Transactions on Software Engineering (TSE) is an archival journal published bimonthly. We are interested in well-defined theoretical results and empirical studies that have potential impact on the construction, analysis, or management of software.
Read the full scope of TSE