{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,24]],"date-time":"2025-11-24T21:26:06Z","timestamp":1764019566002,"version":"3.32.0"},"reference-count":63,"publisher":"Wiley","issue":"2","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4626,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Softw. Maint: Res. Pract."],"published-print":{"date-parts":[[1994,3]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Initial research in reuse was in the designing and implementation of reusable software. This research, although fruitful, did not address the area of extracting reusable components from existing software. In this paper the term reuse is used to mean the \u2018reuse of existing source code\u2019. A process called \u2018reuse re\u2010engineering\u2019 is defined and this, together with techniques from reverse\u2010engineering, form a new method for achieving reuse. A reference paradigm is established to implement the reuse re\u2010engineering process. This process is divided into five sequential phases, each characterized by the objects it produces. These phases are: candidature, election, qualification, classification and storage, and search and display. This paper concentrates on the first three phases because they produce reusable modules from existing systems. In selecting candidates for reuse, different abstractions have to be applied, namely functional abstraction (algorithms) and data abstractions (data structures and data types). This paper presents a formalized approach to each of these abstractions. The approach proposed in this paper aims to promote reuse in industrial software production environments.<\/jats:p>","DOI":"10.1002\/smr.4360060202","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T13:59:26Z","timestamp":1163771966000},"page":"53-72","source":"Crossref","is-referenced-by-count":45,"title":["RE<sup>2<\/sup>: Reverse\u2010engineering and reuse re\u2010engineering"],"prefix":"10.1002","volume":"6","author":[{"given":"G.","family":"Canfora","sequence":"first","affiliation":[]},{"given":"A.","family":"Cimitile","sequence":"additional","affiliation":[]},{"given":"M.","family":"Munro","sequence":"additional","affiliation":[]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_1","doi-asserted-by":"crossref","unstructured":"Abd\u2010El\u2010Afiz S. K. Basili V. R.andCaldiera G. (1991) \u2018Towards automated support for extraction of reusable components\u2019 Proceedings of Conference on Software Maintenance CSM\u203291 Sorrento Italy IEEE Computer Society Press New York pp.212\u2013219.","DOI":"10.1109\/ICSM.1991.160333"},{"key":"e_1_2_1_3_1","unstructured":"ADA(1983)Reference Manual for the ADA Programming Language US Department of Defense MIL STD 1815A."},{"key":"e_1_2_1_4_1","unstructured":"Antonini P. Benedusi P. Cantone G.andCimitile A.(1987) \u2018Maintenance and reverse engineering: low level design documents production and improvement\u2019 Proceedings of Conference on Software Maintenance CSM\u203287 Austin Texas IEEE Computer Society Press New York pp.91\u2013100."},{"issue":"2","key":"e_1_2_1_5_1","first-page":"44","article-title":"Software reuse and reengineering","volume":"4","author":"Arnold R. S.","year":"1992","journal-title":"CASE Trends"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/321992.321999"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.43045"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1984.5010301"},{"issue":"3","key":"e_1_2_1_9_1","doi-asserted-by":"crossref","DOI":"10.1016\/0164-1212(92)90053-M","article-title":"Reverse engineering process, design recovery and structure charts","volume":"6","author":"Benedusi P.","year":"1992","journal-title":"Journal of Systems and Software"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.30731"},{"key":"e_1_2_1_11_1","unstructured":"Biggerstaff T. J.(1991) \u2018An assessment and analysis of software reuse\u2019 MCC Technical Report STP\u2010MT\u2010119\u201091."},{"key":"e_1_2_1_12_1","doi-asserted-by":"crossref","DOI":"10.1145\/75722","volume-title":"Software Reusability","author":"Biggerstaff T. J.","year":"1989"},{"key":"e_1_2_1_13_1","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/75722","volume-title":"Software Reusability","author":"Biggerstaff T. J.","year":"1989"},{"volume-title":"Software Components with ADA","year":"1987","author":"Booch G.","key":"e_1_2_1_14_1"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/355592.365646"},{"key":"e_1_2_1_16_1","first-page":"35","volume-title":"Software Reuse and Reverse Engineering in Practice","author":"Bott F.","year":"1992"},{"key":"e_1_2_1_17_1","unstructured":"Caldiera G. (1989) \u2018Searching existing programs for reusable components\u2019 Proceedings of Conference on Software Maintenance CSM\u203289 Miami Florida IEEE Computer Society Press New York pp.222\u2013223."},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.67210"},{"key":"e_1_2_1_19_1","unstructured":"Calliss F. W.(1989) \u2018Inter\u2010module code analysis techniques for software maintenance\u2019 PhD Thesis University of Durham."},{"key":"e_1_2_1_20_1","unstructured":"Calliss F. W.andCornelius B. J.(1990) \u2018Potpourri module detection\u2019 Proceedings of Conference on Software Maintenance CSM\u203290 San Diego California IEEE Computer Society Press New York pp.46\u201351."},{"key":"e_1_2_1_21_1","doi-asserted-by":"crossref","unstructured":"Calliss F. W. Khalil M. Munro M.andWard M.(1988) \u2018A knowlwedge\u2010based system for software maintenance\u2019 Proceedings of Conference on Software Maintenance CSM\u203288 Phoenix Arizona IEEE Computer Society Press New York pp.319\u2013323.","DOI":"10.1109\/ICSM.1988.10183"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1002\/smr.4360040104"},{"key":"e_1_2_1_23_1","unstructured":"Canfora G.andCimitile A.(1992b) \u2018An approach to reuse reengineering of existing software \u2019 Proceedings of Workshop on Software Evolution Bari Italy Fratelli Laterza pp.73\u201385."},{"key":"e_1_2_1_24_1","unstructured":"Canfora G. Cimitile A.andDe Carlini U.(1991) \u2018A logic based approach to reverse engineering tools production\u2019 Proceedings of Conference on Software Maintenance CSM\u203291 Sorrento Italy IEEE Computer Society Press New York pp.83\u201391."},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/29.4.322"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.43044"},{"key":"e_1_2_1_27_1","unstructured":"Cimitile A.(1992) \u2018Towards reuse reengineering of old software \u2019 Proceedings of 4th International Conference Software Engineering and Knowledge Engineering SEKE\u203292 Capri Italy IEEE Computer Society Press New York (to appear)."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380210507"},{"key":"e_1_2_1_29_1","unstructured":"Cimitile A.andFadini B.(1976) \u2018Le componenti \u201cone\u2010in one\u2010out\u201d di un grafo orientato \u2019 La ricerca January\u2013April 4\u201338."},{"key":"e_1_2_1_30_1","doi-asserted-by":"crossref","unstructured":"Cimitile A. Di Lucca G. A.andMaresca P. (1990) \u2018Maintenance and intermodular dependencies in Pascal environment\u2019 Proceedings of Conference on Software Maintenance CSM\u203290 San Diego California IEEE Computer Society Press New York pp.72\u201383.","DOI":"10.1109\/ICSM.1990.131328"},{"key":"e_1_2_1_31_1","unstructured":"Colbrook A.andSmythe C.(1989) \u2018The retrospective introduction of abstraction into software\u2019 Proceedings of Conference on Software Maintenance CSM\u203289 Miami Florida IEEE Computer Society Press New York pp.166\u2013173."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/23.3.243"},{"volume-title":"Structured Programming","year":"1972","author":"Dahl O. J.","key":"e_1_2_1_33_1"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4612-5695-3_3"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/362929.362947"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1016\/0950-5849(87)90029-2"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/29.4.330"},{"volume-title":"Tutorial on Software Reusability","year":"1987","author":"Freeman P.","key":"e_1_2_1_38_1"},{"key":"e_1_2_1_39_1","first-page":"3","volume-title":"Software Reuse and Reverse Engineering in Practice","author":"Hall P. A. V.","year":"1992"},{"key":"e_1_2_1_40_1","unstructured":"Haughton H. P.andLano K. (1991) \u2018Object revisited\u2019 Proceedings of Conference on Software Maintenance CSM\u203291 Sorrento Italy IEEE Computer Society Press New York pp.152\u2013161."},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.43050"},{"volume-title":"Flow Analysis of Computer Programs","year":"1977","author":"Hecht M. S.","key":"e_1_2_1_42_1"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/362248.362272"},{"key":"e_1_2_1_44_1","doi-asserted-by":"crossref","unstructured":"IEEE Software(1990) special issue on \u2018Maintenance reverse engineering and design recovery\u2019 7(1).","DOI":"10.1109\/52.43044"},{"key":"e_1_2_1_45_1","first-page":"521","volume-title":"Software Reuse and Reverse Engineering in Practice","author":"Kruzela I.","year":"1992"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.1986.233414"},{"key":"e_1_2_1_47_1","unstructured":"Liu S. S.andWilde N. (1990) \u2018Identifying objects in a conventional procedural language: an example of data design recovery\u2019 Proceedings of Conference on Software Maintenance CSM\u203290 San Diego California IEEE Computer Society Press New York pp.266\u2013271."},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1986.6312935"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1984.5010280"},{"key":"e_1_2_1_50_1","first-page":"696","article-title":"Designing large real time system with Ada","volume":"30","author":"Nielsen K. W.","year":"1987","journal-title":"Communications of the ACM"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/25.3.379"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/361598.361623"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/24.3.258"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/103167.103176"},{"key":"e_1_2_1_55_1","first-page":"151","volume-title":"Tutorial on Software Reuse: Emerging Technology","author":"Prieto\u2010Diaz R.","year":"1988"},{"key":"e_1_2_1_56_1","unstructured":"Sneed H. M.andJandrasics G. (1987) \u2018Software recycling\u2019 Proceedings of Conference on Software Maintenance CSM\u203287 Austin Texas IEEE Computer Society Press New York pp.82\u201390."},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1984.5010283"},{"volume-title":"Tutorial on Software Reuse: Emerging Technology","year":"1988","author":"Tracz W.","key":"e_1_2_1_58_1"},{"issue":"4","key":"e_1_2_1_59_1","first-page":"28","article-title":"Software reuse maxims","volume":"13","author":"Tracz W.","year":"1988","journal-title":"ACM SIGSOFT, Software Engineering Notes"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/358557.358577"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1984.5010248"},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-96878-5"},{"volume-title":"Structured Design: Fundamentals of a Discipline of Computer Program and System Design","year":"1979","author":"Yourdon E.","key":"e_1_2_1_63_1"},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380200404"}],"container-title":["Journal of Software Maintenance: Research and Practice"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fsmr.4360060202","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/smr.4360060202","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,11]],"date-time":"2025-01-11T23:48:19Z","timestamp":1736639299000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/smr.4360060202"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1994,3]]},"references-count":63,"journal-issue":{"issue":"2","published-print":{"date-parts":[[1994,3]]}},"alternative-id":["10.1002\/smr.4360060202"],"URL":"https:\/\/doi.org\/10.1002\/smr.4360060202","archive":["Portico"],"relation":{},"ISSN":["1040-550X","1096-908X"],"issn-type":[{"type":"print","value":"1040-550X"},{"type":"electronic","value":"1096-908X"}],"subject":[],"published":{"date-parts":[[1994,3]]}}}