{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:15:22Z","timestamp":1750306522498,"version":"3.41.0"},"reference-count":39,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2015,5,13]],"date-time":"2015-05-13T00:00:00Z","timestamp":1431475200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100001459","name":"Singapore Ministry of Education research","doi-asserted-by":"crossref","award":["T1 251RES1314"],"award-info":[{"award-number":["T1 251RES1314"]}],"id":[{"id":"10.13039\/501100001459","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2015,5,13]]},"abstract":"<jats:p>\n            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 \u201cchange contracts\u201d 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\n            <jats:italic>Java modeling language<\/jats:italic>\n            (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.\n          <\/jats:p>\n          <jats:p>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.<\/jats:p>","DOI":"10.1145\/2729973","type":"journal-article","created":{"date-parts":[[2015,5,15]],"date-time":"2015-05-15T16:05:34Z","timestamp":1431705934000},"page":"1-43","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":5,"title":["Software Change Contracts"],"prefix":"10.1145","volume":"24","author":[{"given":"Jooyong","family":"Yi","sequence":"first","affiliation":[{"name":"National University of Singapore, Singapore"}]},{"given":"Dawei","family":"Qi","sequence":"additional","affiliation":[{"name":"National University of Singapore, Singapore"}]},{"given":"Shin Hwei","family":"Tan","sequence":"additional","affiliation":[{"name":"National University of Singapore, Singapore"}]},{"given":"Abhik","family":"Roychoudhury","sequence":"additional","affiliation":[{"name":"National University of Singapore, Singapore"}]}],"member":"320","published-online":{"date-parts":[[2015,5,13]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10270-004-0058-x"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1007\/11804192_17"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-30569-9_3"},{"key":"e_1_2_1_4_1","unstructured":"Clark Barrett Aaron Stump and Cesare Tinelli. 2012. The SMT-LIB standard version 2.0. Tech. rep. SMT-LIB. http:\/\/smtlib.cs.uiowa.edu\/papers\/smt-lib-reference-v2.0-r12.09.09.pdf.  Clark Barrett Aaron Stump and Cesare Tinelli. 2012. The SMT-LIB standard version 2.0. Tech. rep. SMT-LIB. http:\/\/smtlib.cs.uiowa.edu\/papers\/smt-lib-reference-v2.0-r12.09.09.pdf."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1007\/11804192_6"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486829"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10009-004-0167-4"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.5555\/257734.257769"},{"volume-title":"Proceedings of the International Conference on Software Engineering Research and Practice (SERP'02)","author":"Cheon Yoonsik","key":"e_1_2_1_9_1"},{"key":"e_1_2_1_10_1","unstructured":"Edmund M. Clarke Orna Grumberg and Doron A. Peled. 1999. Model Checking. The MIT Press.   Edmund M. Clarke Orna Grumberg and Doron A. Peled. 1999. Model Checking. The MIT Press."},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.4204\/EPTCS.149.8"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-30569-9_6"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1321631.1321702"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512558"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1629911.1630034"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1002\/stvr.1472"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSM.1992.242531"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39038-8_25"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-38574-2_20"},{"volume-title":"Proceedings of the International Conference on Software Maintenance (ICSM'94)","author":"Jackson Daniel","key":"e_1_2_1_20_1"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICST.2010.64"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/271771.271803"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-31424-7_54"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491411.2491452"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.300040"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.161279"},{"key":"e_1_2_1_27_1","unstructured":"Bertrand Meyer. 1997. Object-Oriented Software Construction. 2nd Ed. Prentice-Hall.   Bertrand Meyer. 1997. Object-Oriented Software Construction. 2 nd Ed. Prentice-Hall."},{"key":"e_1_2_1_28_1","unstructured":"Leonardo De Moura. 2012. Answer for the question titled \u201cquantifier vs non-quantifier\u201d. http:\/\/stackoverflow.com\/questions\/10011478\/quantifier-vs-non-quantifier.  Leonardo De Moura. 2012. Answer for the question titled \u201cquantifier vs non-quantifier\u201d. http:\/\/stackoverflow.com\/questions\/10011478\/quantifier-vs-non-quantifier."},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.5555\/1792734.1792766"},{"key":"e_1_2_1_30_1","volume-title":"Lecture Notes in Computer Science","volume":"2262","author":"Muller Peter","year":"2002"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297846.1297902"},{"volume-title":"The Future of Software Engineering","author":"Parnas David Lorge","key":"e_1_2_1_32_1"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/1453101.1453131"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1595696.1595704"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2393596.2393622"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.962562"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-30579-8_14"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/2483760.2483772"},{"key":"e_1_2_1_39_1","doi-asserted-by":"crossref","unstructured":"Andreas Zeller. 1999. Yesterday my program worked. Today it does not. Why&quest; In Proceedings of the 7th European Software Engineering Conference held jointly with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC\/FSE'99). 253--267.   Andreas Zeller. 1999. Yesterday my program worked. Today it does not. Why&quest; In Proceedings of the 7 th European Software Engineering Conference held jointly with the 7 th ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC\/FSE'99). 253--267.","DOI":"10.1007\/3-540-48166-4_16"}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2729973","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2729973","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T06:12:00Z","timestamp":1750227120000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2729973"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2015,5,13]]},"references-count":39,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2015,5,13]]}},"alternative-id":["10.1145\/2729973"],"URL":"https:\/\/doi.org\/10.1145\/2729973","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"type":"print","value":"1049-331X"},{"type":"electronic","value":"1557-7392"}],"subject":[],"published":{"date-parts":[[2015,5,13]]},"assertion":[{"value":"2014-06-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2015-01-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2015-05-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}