{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,30]],"date-time":"2026-01-30T02:24:27Z","timestamp":1769739867767,"version":"3.49.0"},"reference-count":31,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2011,4,1]],"date-time":"2011-04-01T00:00:00Z","timestamp":1301616000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000185","name":"Defense Advanced Research Projects Agency","doi-asserted-by":"publisher","award":["NBCH30390004"],"award-info":[{"award-number":["NBCH30390004"]}],"id":[{"id":"10.13039\/100000185","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2011,4]]},"abstract":"<jats:p>\n            Type constraints express subtype relationships between the types of program expressions, for example, those relationships that are required for type correctness. Type constraints were originally proposed as a convenient framework for solving type checking and type inference problems. This paper shows how type constraints can be used as the basis for practical refactoring tools. In our approach, a set of type constraints is derived from a type-correct program\n            <jats:italic>P<\/jats:italic>\n            . The main insight behind our work is the fact that\n            <jats:italic>P<\/jats:italic>\n            constitutes just one solution to this constraint system, and that alternative solutions may exist that correspond to refactored versions of\n            <jats:italic>P<\/jats:italic>\n            . We show how a number of refactorings for manipulating types and class hierarchies can be expressed naturally using type constraints. Several refactorings in the standard distribution of Eclipse are based on our work.\n          <\/jats:p>","DOI":"10.1145\/1961204.1961205","type":"journal-article","created":{"date-parts":[[2011,5,3]],"date-time":"2011-05-03T12:48:53Z","timestamp":1304426933000},"page":"1-47","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":53,"title":["Refactoring using type constraints"],"prefix":"10.1145","volume":"33","author":[{"given":"Frank","family":"Tip","sequence":"first","affiliation":[{"name":"IBM T. J. Watson Research Center, Yorktown Heights, NY"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Robert M.","family":"Fuhrer","sequence":"additional","affiliation":[{"name":"IBM T. J. Watson Research Center, Yorktown Heights, NY"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Adam","family":"Kie\u017cun","sequence":"additional","affiliation":[{"name":"Brigham and Women's Hospital\/Harvard Medical School, Boston, MA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Michael D.","family":"Ernst","sequence":"additional","affiliation":[{"name":"University of Washington, Seattle WA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ittai","family":"Balaban","sequence":"additional","affiliation":[{"name":"World Evolved Services, New York, NY"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Bjorn","family":"De Sutter","sequence":"additional","affiliation":[{"name":"Ghent University and Vrije Universiteit Brussel, Gent, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2011,5,4]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094811.1094832"},{"key":"e_1_2_1_2_1","volume-title":"Extreme Programming Explained: Embrace Change","author":"Beck K.","unstructured":"Beck , K. 2000. Extreme Programming Explained: Embrace Change . Addison-Wesley . Beck, K. 2000. Extreme Programming Explained: Embrace Change. Addison-Wesley."},{"key":"e_1_2_1_3_1","unstructured":"Bracha G. Cohen N. Kemper C. Odersky M. Stoutamire D. Thorup K. and Wadler P. 2004. Adding generics to the Java programming language final release. Tech. rep. Java Community Process JSR-000014.  Bracha G. Cohen N. Kemper C. Odersky M. Stoutamire D. Thorup K. and Wadler P. 2004. Adding generics to the Java programming language final release. Tech. rep. Java Community Process JSR-000014."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320386"},{"key":"e_1_2_1_5_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming (ECOOP). 585--610","author":"De Sutter B.","unstructured":"De Sutter , B. , Tip , F. , and Dolby , J . 2004. Customization of Java library classes using type constraints and profile information . In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). 585--610 . De Sutter, B., Tip, F., and Dolby, J. 2004. Customization of Java library classes using type constraints and profile information. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). 585--610."},{"key":"e_1_2_1_6_1","unstructured":"Donovan A. and Ernst M. 2003. Inference of generic types in Java. Tech. rep. MIT\/LCS\/TR-889 MIT.  Donovan A. and Ernst M. 2003. Inference of generic types in Java. Tech. rep. MIT\/LCS\/TR-889 MIT."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1028979"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320393"},{"key":"e_1_2_1_9_1","volume-title":"Improving the Design of Existing Code","author":"Fowler M.","unstructured":"Fowler , M. 1999. Refactoring . Improving the Design of Existing Code . Addison-Wesley . Fowler, M. 1999. Refactoring. Improving the Design of Existing Code. Addison-Wesley."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/11531142_4"},{"key":"e_1_2_1_11_1","unstructured":"Gosling J. Joy B. Steele G. and Bracha G. 2005. The Java Language Specification 3rd Ed. Addison Wesley Boston MA.   Gosling J. Joy B. Steele G. and Bracha G. 2005. The Java Language Specification 3rd Ed. Addison Wesley Boston MA."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/152388.152389"},{"key":"e_1_2_1_14_1","unstructured":"Halloran T. J. and Scherlis W. L. 2002. Models of Thumb: Assuring best practice source code in large Java software systems. Tech. rep. Fluid Project School of Computer Science\/ISRI Carnegie Mellon University.  Halloran T. J. and Scherlis W. L. 2002. Models of Thumb: Assuring best practice source code in large Java software systems. Tech. rep. Fluid Project School of Computer Science\/ISRI Carnegie Mellon University."},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(00)00014-9"},{"key":"e_1_2_1_16_1","volume-title":"Refactoring to Patterns","author":"Kerievsky J.","unstructured":"Kerievsky , J. 2004. Refactoring to Patterns . Addison-Wesley . Kerievsky, J. 2004. Refactoring to Patterns. Addison-Wesley."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2007.70"},{"key":"e_1_2_1_18_1","unstructured":"Kie&amp;#380;un A. Ernst M. D. Tip F. and Fuhrer R. M. 2006. Refactoring for parameterizing Java classes. Tech. rep. MIT.  Kie&amp;#380;un A. Ernst M. D. Tip F. and Fuhrer R. M. 2006. Refactoring for parameterizing Java classes. Tech. rep. MIT."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2004.1265817"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/170791.170804"},{"key":"e_1_2_1_22_1","unstructured":"Palsberg J. and Schwartzbach M. 1993. Object-Oriented Type Systems. John Wiley &amp;amp; Sons.   Palsberg J. and Schwartzbach M. 1993. Object-Oriented Type Systems. John Wiley &amp;amp; Sons."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.5555\/1765931.1765945"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/353926.353940"},{"key":"e_1_2_1_25_1","volume-title":"Proceedings of the TOOLS Europe.","author":"Steimann F.","unstructured":"Steimann , F. and Mayer , P . 2007. Type access analysis: Towards informed interface design . In Proceedings of the TOOLS Europe. Steimann, F. and Mayer, P. 2007. Type access analysis: Towards informed interface design. In Proceedings of the TOOLS Europe."},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1141277.1141604"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03013-0_19"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1029003"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.5555\/2391451.2391453"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949308"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1008715808855"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/967900.968162"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1028978"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1961204.1961205","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1961204.1961205","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T10:59:50Z","timestamp":1750244390000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1961204.1961205"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,4]]},"references-count":31,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2011,4]]}},"alternative-id":["10.1145\/1961204.1961205"],"URL":"https:\/\/doi.org\/10.1145\/1961204.1961205","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2011,4]]},"assertion":[{"value":"2009-06-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2010-07-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2011-05-04","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}