z-logo
open-access-imgOpen Access
Software Change Contracts
Author(s) -
Jooyong Yi,
Dawei Qi,
Shin Hwei Tan,
Abhik Roychoudhury
Publication year - 2015
Publication title -
acm transactions on software engineering and methodology
Language(s) - English
Resource type - Journals
SCImago Journal Rank - 0.597
H-Index - 78
eISSN - 1557-7392
pISSN - 1049-331X
DOI - 10.1145/2729973
Subject(s) - computer science , programming language , programmer , design by contract , debugging , software engineering , usability , semantics (computer science) , software , software development , software construction , human–computer interaction
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.

The content you want is available to Zendy users.

Already have an account? Click here to sign in.
Having issues? You can contact us here
Accelerating Research

Address

John Eccles House
Robert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom