{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T20:15:42Z","timestamp":1784232942326,"version":"3.55.0"},"reference-count":60,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2018,1,3]],"date-time":"2018-01-03T00:00:00Z","timestamp":1514937600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100001659","name":"Deutsche Forschungsgemeinschaft","doi-asserted-by":"crossref","award":["STE 906\/4-182 and STE 906\/5-1"],"award-info":[{"award-number":["STE 906\/4-182 and STE 906\/5-1"]}],"id":[{"id":"10.13039\/501100001659","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2018,3,31]]},"abstract":"<jats:p>Constraint-based refactoring generalizes constraint-based type refactoring as introduced by Tip et al. [61] by extending the coverage of change from types to names, locations, accessibilities, and other properties of program elements. Starting with a generic specification of refactoring tools, we systematically develop constraint-based refactoring as a generic solution to a certain class of refactoring problems and provide a condition under which constraint-based refactoring tools are proven correct for any given target language. Although compliance with this correctness condition is hard to prove for target languages whose semantics is not formally defined, we show how the condition gives rise to automated testing procedures. We present a novel algorithm based on constraint-logic programming for the generation of constraints from a program to be refactored, and demonstrate its time and space requirements by using it in the application of refactorings to open source programs. Summarizing earlier work, we show how the principles underlying constraint-based refactoring tools extend to ad hoc refactoring, cross-language refactoring, and model\/code co-refactoring.<\/jats:p>","DOI":"10.1145\/3156016","type":"journal-article","created":{"date-parts":[[2018,1,3]],"date-time":"2018-01-03T13:19:43Z","timestamp":1514985583000},"page":"1-40","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":11,"title":["Constraint-Based Refactoring"],"prefix":"10.1145","volume":"40","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-8887-134X","authenticated-orcid":false,"given":"Friedrich","family":"Steimann","sequence":"first","affiliation":[{"name":"Fernuniversit\u00e4t in Hagen, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2018,1,3]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167479"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094811.1094832"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1007\/11813040_33"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2004.03.003"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/38765.38812"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2015.145"},{"key":"e_1_2_1_7_1","volume-title":"Thom Fr\u00fchwirth, Carmen Gervet, Warwick Harvey, Micha Meier, Stefano Novello, Thierry Le Provost, Joachim Schimpf, Kish Shen, and Mark Wallace.","author":"Brisset Pascal","year":"2016","unstructured":"Pascal Brisset, Hani El Sakkout, Thom Fr\u00fchwirth, Carmen Gervet, Warwick Harvey, Micha Meier, Stefano Novello, Thierry Le Provost, Joachim Schimpf, Kish Shen, and Mark Wallace. 2016. ECLi PSe Constraint Library Manual. Cisco Systems Inc. http:\/\/eclipseclp.org\/doc\/libman.pdf."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/566385.566390"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1287624.1287651"},{"key":"e_1_2_1_10_1","volume-title":"Eiffel: Analysis, Design and Programming Language","year":"2006","unstructured":"ECMA-367. 2006. Eiffel: Analysis, Design and Programming Language (2nd ed.). ECMA International. http:\/\/www.ecma-international.org\/publications\/standards\/Ecma-367.htm.","edition":"2"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2012.6227191"},{"key":"e_1_2_1_12_1","volume-title":"Refactoring\u2014Improving the Design of Existing Code","author":"Fowler Martin","unstructured":"Martin Fowler. 1999. Refactoring\u2014Improving the Design of Existing Code. Addison-Wesley. http:\/\/martinfowler.com\/books\/refactoring.html."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/76372.77531"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1007\/11531142_4"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1109\/SCAM.2006.16"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2012.6227192"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39038-8_26"},{"key":"e_1_2_1_18_1","volume-title":"Java SE 8 Edition","author":"Gosling James","unstructured":"James Gosling, Bill Joy, Guy L. Steele, Gilad Bracha, and Alex Buckley. 2014. The Java Language Specification, Java SE 8 Edition.Addison-Wesley Professional."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1286821.1286823"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1007\/11785477_2"},{"key":"e_1_2_1_22_1","volume-title":"Constraint Satisfaction in Logic Programming","author":"Hentenryck Pascal Van","unstructured":"Pascal Van Hentenryck. 1989. Constraint Satisfaction in Logic Programming. MIT Press, Cambridge, MA."},{"key":"e_1_2_1_23_1","volume-title":"Constraint-Based Local Search","author":"Hentenryck Pascal Van","unstructured":"Pascal Van Hentenryck and Laurent Michel. 2005. Constraint-Based Local Search. MIT Press, Cambridge, MA."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/363235.363259"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1368088.1368147"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2007.70"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01692511"},{"key":"e_1_2_1_28_1","first-page":"1","article-title":"An approach to invariant-based program refactoring","volume":"3","author":"Massoni Tiago","year":"2006","unstructured":"Tiago Massoni, Rohit Gheyi, and Paulo Borba. 2006. An approach to invariant-based program refactoring. Electronic Communications of the EASST 3, 1--12. http:\/\/eceasst.cs.tu-berlin.de\/index.php\/eceasst\/article\/view\/25.","journal-title":"Electronic Communications of the EASST"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1002\/smr.316"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2004.1265817"},{"key":"e_1_2_1_32_1","volume-title":"Proceedings of the 1st Workshop on Principles and Practice of Constraint Programming (PPCP\u201993)","author":"Meyers Scott","unstructured":"Scott Meyers, Carolyn K. Duby, and Steven P. Reiss. 1993. Constraining the structure and style of object-oriented programs. In Proceedings of the 1st Workshop on Principles and Practice of Constraint Programming (PPCP\u201993). 200--209."},{"key":"e_1_2_1_33_1","unstructured":"Microsoft. 2003. C# Language Specification. Retrieved November 9 2017 from http:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id&equals;7029."},{"key":"e_1_2_1_34_1","volume-title":"About the Object Constraint Language Specification Version 2.4. Specification. Retrieved","author":"OMG.","year":"2017","unstructured":"OMG. 2012. About the Object Constraint Language Specification Version 2.4. Specification. Retrieved November 9, 2017, from http:\/\/www.omg.org\/spec\/OCL\/."},{"key":"e_1_2_1_37_1","volume-title":"Schwartzbach","author":"Palsberg Jens","year":"1994","unstructured":"Jens Palsberg and Michael I. Schwartzbach. 1994. Object-Oriented Type Systems. Wiley."},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509544"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/1869459.1869485"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-14107-2_11"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/1449764.1449787"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2012.13"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","unstructured":"Max Sch\u00e4fer Mathieu Verbaere Torbj\u00f6rn Ekman and Oege de Moor. 2009. Stepping stones over the refactoring rubicon In Proceedings of the 23rd European Conference on ECOOP2009\u2014Object-Oriented Programming (ECOOP\u201909). 369--393. DOI:https:\/\/doi.org\/10.1007\/978-3-642-03013-0_17 10.1007\/978-3-642-03013-0_17","DOI":"10.1007\/978-3-642-03013-0_17"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45619-8_16"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2012.19"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSM.2011.6080784"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10270-013-0314-z"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-60074-1_8"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984007"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-22655-7_13"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03013-0_19"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-31057-7_24"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/2351676.2351726"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/1328408.1328417"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2338965.2336754"},{"key":"e_1_2_1_59_1","volume-title":"Proceedings of the 5th Workshop on Automation of Software Test (AST\u201910)","author":"Thies Andreas","year":"2010","unstructured":"Andreas Thies and Friedrich Steimann. 2010. Systematic testing of refactoring tools (poster). In Proceedings of the 5th Workshop on Automation of Software Test (AST\u201910). http:\/\/www.fernuni-hagen.de\/ps\/prjs\/rtt\/rtt_poster.pdf."},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796813000117"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/1961204.1961205"},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949308"},{"key":"e_1_2_1_63_1","volume-title":"Proceedings of the MODELS 2013 OCL Workshop Co-Located With the 16th International ACM\/IEEE Conference on Model Driven Engineering Languages and Systems (MODELS\u201913). CEUR Workshop Proceedings","volume":"1092","author":"Ulke Bastian","year":"2013","unstructured":"Bastian Ulke and Friedrich Steimann. 2013. OCL as a constraint generation language. In Proceedings of the MODELS 2013 OCL Workshop Co-Located With the 16th International ACM\/IEEE Conference on Model Driven Engineering Languages and Systems (MODELS\u201913). CEUR Workshop Proceedings, Vol. 1092. 93--102. http:\/\/ceur-ws.org\/Vol-1092\/ulke.pdf."},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1109\/MODELS.2017.31"},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2012.6227190"},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/1134285.1134311"},{"key":"e_1_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2013.6693133"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3156016","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3156016","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:38:44Z","timestamp":1750221524000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3156016"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,1,3]]},"references-count":60,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2018,3,31]]}},"alternative-id":["10.1145\/3156016"],"URL":"https:\/\/doi.org\/10.1145\/3156016","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,1,3]]},"assertion":[{"value":"2016-09-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2017-07-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2018-01-03","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}