File Download

There are no files associated with this item.

  • Find it @ UNIST can give you direct access to the published full text of this article. (UNISTARs only)
Related Researcher

이주용

Yi, Jooyong
Programming Languages and Software Engineering Lab.
Read More

Views & Downloads

Detailed Information

Cited time in webofscience Cited time in scopus
Metadata Downloads

Software Change Contracts

Author(s)
Yi, JooyongQi, DaweiTan, Shin HweiRoychoudhury, Abhik
Issued Date
2015-05
DOI
10.1145/2729973
URI
https://scholarworks.unist.ac.kr/handle/201301/26248
Fulltext
https://dl.acm.org/citation.cfm?doid=2776776.2729973
Citation
ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, v.24, no.3, pp.18
Abstract
Software errors often originate from incorrect changes, including incorrect program fixes, incorrect feature updates, and so on. Capturing the intended program behavior explicitly via contracts is thus an attractive proposition. In our recent work, we had espoused the notion of "change contracts" to express the intended program behavior changes across program versions. Change contracts differ from program contracts in that they do not require the programmer to describe the intended behavior of those program features which are unchanged across program versions. In this work, we present the formal semantics of our change contract language built on top of the Java modeling language (JML). Our change contract language can describe behavioral as well as structural changes. We evaluate the expressivity of the change contract language via a survey given to final-year undergraduate students. The survey results enable to understand the usability of our change contract language for purposes of writing contracts, comprehending written contracts, and modifying programs according to given change contracts. Finally, we develop both dynamic and static checkers for change contracts, and show how they can be used in maintaining software changes. We use our dynamic checker to automatically suggest tests that manifest violations of change contracts. Meanwhile, we use our static checker to verify that a program is changed as specified in its change contract. Apart from verification, our static checker also performs various other software engineering tasks, such as localizing the buggy method, detecting/debugging regression errors, and classifying the cause for a test failure as either error in production code or error in test code.
Publisher
ASSOC COMPUTING MACHINERY
ISSN
1049-331X
Keyword (Author)
LanguagesReliabilityTheoryVerificationSoftware changesdynamic checkingstatic checking
Keyword
OBJECT-ORIENTED PROGRAMSREGRESSION VERIFICATIONCHECKINGJAVA

qrcode

Items in Repository are protected by copyright, with all rights reserved, unless otherwise indicated.