{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,7,14]],"date-time":"2024-07-14T23:29:00Z","timestamp":1720999740826},"reference-count":102,"publisher":"Association for Computing Machinery (ACM)","issue":"4","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2012,11]]},"abstract":"\n Many software reuse tasks involve reusing source code that was not designed in a manner conducive to those tasks, requiring that ad hoc modifications be applied. Such\n pragmatic<\/jats:italic>\n reuse tasks are a reality in\n disciplined<\/jats:italic>\n industrial practice; they arise for a variety of organizational and technical reasons. To investigate a pragmatic reuse task, a developer must navigate through, and reason about, source code dependencies in order to identify program elements that are relevant to the task and to decide how those elements should be reused. The developer must then convert his mental model of the task into a set of actions that he can perform. These steps are poorly supported by modern development tools and practices.\n <\/jats:p>\n \n We provide a model for the process involved in performing a pragmatic reuse task, including the need to capture (mentally or otherwise) the developer's decisions about how each program element should be treated: this is a\n pragmatic-reuse plan<\/jats:italic>\n . We provide partial support for this model via a tool suite, called Gilligan; other parts of the model are supported via standard IDE tools. Using a pragmatic-reuse plan, Gilligan can semiautomatically transform the selected source code from its originating system and integrate it into the developer's system.\n <\/jats:p>\n We have evaluated Gilligan through a series of case studies and experiments (each involving industrial developers) using a variety of source systems and tasks; we report in particular on a previously unpublished, formal experiment. The results show that pragmatic-reuse plans are a robust metaphor for capturing pragmatic reuse intent and that, relative to standard IDE tools, Gilligan can (1) significantly decrease the time that developers require to perform pragmatic reuse tasks, (2) increase the likelihood that developers will successfully complete pragmatic reuse tasks, (3) decrease the time required by developers to identify infeasible reuse tasks, and (4) improve developers' sense of their ability to manage the risk in such tasks.<\/jats:p>","DOI":"10.1145\/2377656.2377657","type":"journal-article","created":{"date-parts":[[2013,2,5]],"date-time":"2013-02-05T13:19:41Z","timestamp":1360070381000},"page":"1-44","update-policy":"http:\/\/dx.doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":51,"title":["Systematizing pragmatic software reuse"],"prefix":"10.1145","volume":"21","author":[{"given":"Reid","family":"Holmes","sequence":"first","affiliation":[{"name":"University of Waterloo, Waterloo, Canada"}]},{"given":"Robert J.","family":"Walker","sequence":"additional","affiliation":[{"name":"University of Calgary, Calgary, Canada"}]}],"member":"320","published-online":{"date-parts":[[2013,2,7]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/512035.512047"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSR.1994.365806"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.789755"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1518701.1518944"},{"key":"e_1_2_1_5_1","volume-title":"Proceedings of the IEEE International Conference on Software Maintenance. 475--482","author":"Briand L. C."},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.1987.1663532"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0020-7373(83)80031-5"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1595696.1595728"},{"key":"e_1_2_1_9_1","volume-title":"Proceedings of the IFIP TC13 International Conference on Human--Computer Interaction. 133--138","author":"Burkhardt J.-M."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1015297914742"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.67210"},{"key":"e_1_2_1_12_1","volume-title":"Proceedings of the IEEE International Conference on Software Maintenance. 66--75","author":"Chen Y.-F. R."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1214\/aoms\/1177728726"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF00988593"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.5555\/851042.857051"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2006.04.002"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1453101.1453130"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/365813.365819"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1767751.1767754"},{"key":"e_1_2_1_20_1","unstructured":"Edgar N. 2003a. Bug 36967: Enable Eclipse to be used as a rich client platform. https:\/\/bugs.eclipse.org\/bugs\/show_bug.cgi?id=36967. Edgar N. 2003a. Bug 36967: Enable Eclipse to be used as a rich client platform. https:\/\/bugs.eclipse.org\/bugs\/show_bug.cgi?id=36967."},{"key":"e_1_2_1_21_1","unstructured":"Edgar N. 2003b. Eclipse Rich Client Platform UI. http:\/\/www.eclipse.org\/rcp\/generic_workbench_summary. html. Edgar N. 2003b. Eclipse Rich Client Platform UI. http:\/\/www.eclipse.org\/rcp\/generic_workbench_summary. html."},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2003.1183929"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/73103.73117"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.1987.231065"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0080456800012163"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.2307\/2340521"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/203241.203260"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2005.85"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/143062.143150"},{"key":"e_1_2_1_30_1","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma E.","year":"1994"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.469757"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1049\/sej.1990.0021"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.92911"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/152388.152389"},{"key":"e_1_2_1_35_1","unstructured":"Holmes R. 2008. Pragmatic software reuse. Ph.D. thesis University of Calgary. Holmes R. 2008. Pragmatic software reuse. Ph.D. thesis University of Calgary."},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/1062455.1062491"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2009.65"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2007.83"},{"key":"e_1_2_1_39_1","volume-title":"Proceedings of the IEEE International Workshop on Visualizing Software for Understanding and Analysis. 100--107","author":"Holmes R."},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-68073-4_35"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2006.117"},{"key":"e_1_2_1_42_1","unstructured":"Hunt A. and Thomas D. 1999. The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley Section 2.7: The Evils of Duplication. Hunt A. and Thomas D. 1999. The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley Section 2.7: The Evils of Duplication."},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2005.38"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2008.155"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/643603.643622"},{"key":"e_1_2_1_46_1","first-page":"22","article-title":"Designing reuseable {sic} classes","volume":"1","author":"Johnson R. E.","year":"1988","journal-title":"J. Obj.-Oriented Program."},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-008-9076-6"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/1052898.1052912"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/1137983.1137999"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/1081706.1081737"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2007.45"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/108844.108863"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/130844.130856"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.5555\/786772.787132"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/67449.67465"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.588543"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/1357054.1357261"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/1529282.1529384"},{"key":"e_1_2_1_59_1","volume-title":"Proceedings of the Workshop on Empirical Studies of Programmers. 58--79","author":"Letovsky S.","year":"1986"},{"key":"e_1_2_1_60_1","unstructured":"Lions J.-L. L\u00fcbeck L. Fauquembergue J.-L. Kahn G. Kubbat W. Levedag S. Mazzini L. Merle D. and O'Halloran C. 1996. Ariane 5: Flight 501 failure. Tech. rep. Ariane 501 Inquiry Board. Lions J.-L. L\u00fcbeck L. Fauquembergue J.-L. Kahn G. Kubbat W. Levedag S. Mazzini L. Merle D. and O'Halloran C. 1996. Ariane 5: Flight 501 failure. Tech. rep. Ariane 501 Inquiry Board."},{"key":"e_1_2_1_61_1","volume-title":"Proceedings of the Workshop on Empirical Studies of Programmers. 80--98","author":"Littman D."},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1214\/aoms\/1177730491"},{"key":"e_1_2_1_63_1","unstructured":"McIlroy D. 1968. Mass-produced software components. In Software Engineering: Report on a Conference on by the NATO Science Committee. 138--155. McIlroy D. 1968. Mass-produced software components. In Software Engineering: Report on a Conference on by the NATO Science Committee. 138--155."},{"key":"e_1_2_1_64_1","unstructured":"Miles M. B. and Huberman M. 1994. Qualitative Data Analysis: An Expanded Sourcebook (2nd Ed.). Sage Publications Inc. Thousand Oaks CA. Miles M. B. and Huberman M. 1994. Qualitative Data Analysis: An Expanded Sourcebook (2nd Ed.). Sage Publications Inc. Thousand Oaks CA."},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2002.995420"},{"key":"e_1_2_1_66_1","volume-title":"Proceedings of the ACM\/IEEE International Conference on Software Engineering. 80--86","author":"M\u00fcller H. A."},{"key":"e_1_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2008.153"},{"key":"e_1_2_1_68_1","unstructured":"Norman D. 1998. The Design of Everyday Things. MIT Press. Norman D. 1998. The Design of Everyday Things. MIT Press."},{"key":"e_1_2_1_69_1","unstructured":"Opdyke W. F. 1992. Refactoring object-oriented frameworks. Ph.D. thesis University of Illinois at Urbana-Champaign. Opdyke W. F. 1992. Refactoring object-oriented frameworks. Ph.D. thesis University of Illinois at Urbana-Champaign."},{"key":"e_1_2_1_70_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1976.233797"},{"key":"e_1_2_1_71_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2004.94"},{"key":"e_1_2_1_72_1","doi-asserted-by":"publisher","DOI":"10.1098\/rsta.1900.0022"},{"key":"e_1_2_1_73_1","doi-asserted-by":"publisher","DOI":"10.1016\/0010-0285(87)90007-7"},{"key":"e_1_2_1_74_1","doi-asserted-by":"publisher","DOI":"10.2307\/1402731"},{"key":"e_1_2_1_75_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.324.0567"},{"key":"e_1_2_1_76_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.210605"},{"key":"e_1_2_1_77_1","doi-asserted-by":"publisher","DOI":"10.1145\/859670.859678"},{"key":"e_1_2_1_78_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2009.5070525"},{"key":"e_1_2_1_79_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2009.161"},{"key":"e_1_2_1_80_1","doi-asserted-by":"publisher","DOI":"10.1145\/13487689.13487691"},{"key":"e_1_2_1_81_1","doi-asserted-by":"publisher","DOI":"10.1145\/1189748.1189751"},{"key":"e_1_2_1_82_1","doi-asserted-by":"publisher","DOI":"10.1145\/234526.234530"},{"key":"e_1_2_1_83_1","volume-title":"Proceedings of the IFIP TC13 International Conference on Human--Computer Interaction. 213--216","author":"Rouet J.-F."},{"key":"e_1_2_1_84_1","doi-asserted-by":"publisher","DOI":"10.1145\/235969.235972"},{"key":"e_1_2_1_85_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2005.69"},{"key":"e_1_2_1_86_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.605760"},{"key":"e_1_2_1_87_1","volume-title":"Software Psychology: Human Factors in Computer and Information Systems. Little, Brown, and Co.","author":"Shneiderman B.","year":"1980"},{"key":"e_1_2_1_88_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2008.26"},{"key":"e_1_2_1_89_1","doi-asserted-by":"publisher","DOI":"10.1145\/28697.28702"},{"key":"e_1_2_1_90_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1984.5010283"},{"key":"e_1_2_1_91_1","doi-asserted-by":"publisher","DOI":"10.1145\/50087.50088"},{"key":"e_1_2_1_92_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1984.5010272"},{"key":"e_1_2_1_93_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(99)00036-2"},{"key":"e_1_2_1_94_1","volume-title":"Component Software: Beyond Object-Oriented Programming. ACM.","author":"Szyperski C.","year":"2002"},{"key":"e_1_2_1_95_1","unstructured":"Taylor J. R. 1996. An Introduction to Error Analysis: The Study of Uncertainties in Physical Measurements 2nd Ed. University Science Books. Taylor J. R. 1996. An Introduction to Error Analysis: The Study of Uncertainties in Physical Measurements 2nd Ed. University Science Books."},{"key":"e_1_2_1_96_1","doi-asserted-by":"publisher","DOI":"10.1109\/VLHCC.2004.35"},{"key":"e_1_2_1_97_1","doi-asserted-by":"publisher","DOI":"10.1145\/382296.382702"},{"key":"e_1_2_1_98_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0164-1212(01)00152-2"},{"key":"e_1_2_1_99_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSM.2010.5609657"},{"key":"e_1_2_1_100_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.402076"},{"key":"e_1_2_1_101_1","doi-asserted-by":"publisher","DOI":"10.2307\/3001968"},{"key":"e_1_2_1_102_1","doi-asserted-by":"publisher","DOI":"10.1145\/244795.244801"}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2377656.2377657","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,30]],"date-time":"2022-12-30T08:58:58Z","timestamp":1672390738000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2377656.2377657"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012,11]]},"references-count":102,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2012,11]]}},"alternative-id":["10.1145\/2377656.2377657"],"URL":"https:\/\/doi.org\/10.1145\/2377656.2377657","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012,11]]},"assertion":[{"value":"2010-02-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2011-04-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2013-02-07","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}