{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,27]],"date-time":"2026-03-27T16:06:44Z","timestamp":1774627604037,"version":"3.50.1"},"reference-count":11,"publisher":"Association for Computing Machinery (ACM)","issue":"5","license":[{"start":{"date-parts":[[2008,8,31]],"date-time":"2008-08-31T00:00:00Z","timestamp":1220140800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGSOFT Softw. Eng. Notes"],"published-print":{"date-parts":[[2008,8,31]]},"abstract":"<jats:p>Reverse engineering is the key idea for reconstruction of any existing system. In this paper, we propose an algorithm to reverse engineer an object-oriented code into Unified Modeling Language (UML) class diagram. Our algorithm is very general in nature and can be applied to any object-oriented code irrespective of the object-oriented programming language. In our paper we consider an object-oriented pseudocode similar to C++ to implement our algorithm. Some of the researchers have dealt in the past the problem of reverse engineering an object-oriented code to UML class diagrams. However, none of these researchers have treated all the constructs available in UML class diagrams. Unlike the previously done work on reverse engineering into UML, our algorithm generates rules for a complete set of constructs available in UML class diagrams. It includes classes, relationships, objects, attributes, operations, inheritance, associations, interfaces &amp; other extensible mechanisms also. This algorithm can be viewed as a solution to reverse engineer any available object-oriented software. An application for the implementation of above said rules using C++ code is also included in the paper. We thoroughly compare our work with the similar type of earlier work in this area and uncover the deficiencies in these previous available works. Moreover our motive in this paper is to prepare rules to reverse engineer C++ code into UML class diagrams and not to generate any tools.<\/jats:p>","DOI":"10.1145\/1402521.1402527","type":"journal-article","created":{"date-parts":[[2008,9,30]],"date-time":"2008-09-30T13:03:15Z","timestamp":1222779795000},"page":"1-9","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["On reverse engineering an object-oriented code into UML class diagrams incorporating extensible mechanisms"],"prefix":"10.1145","volume":"33","author":[{"family":"Vinita","sequence":"first","affiliation":[{"name":"Delhi University, Delhi, India"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Amita","family":"Jain","sequence":"additional","affiliation":[{"name":"GGSIP University, Delhi, India"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Devendra K.","family":"Tayal","sequence":"additional","affiliation":[{"name":"Jaypee Institute of Information Technology University, Noida, UP, India"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2008,8,31]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"A Practitioner's approach","author":"Pressman R.S.","year":"2001","edition":"5"},{"key":"e_1_2_1_2_1","series-title":"Object-Oriented Technology series","volume-title":"The Unified Modeling Language User Guide","author":"Booch G.","year":"1999"},{"key":"e_1_2_1_3_1","volume-title":"A practical guide to Object-Oriented development","author":"Lee R.C.","year":"2001","edition":"2"},{"key":"e_1_2_1_4_1","volume-title":"C++, The Complete Reference","author":"Schildt H.","year":"1998","edition":"3"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1109\/WCRE.2005.21"},{"key":"e_1_2_1_6_1","first-page":"376","article-title":"(2001), \"Reverse Engineering UML class diagram from C++ code in the presence of weakly typed containers\" in proceedings of International conference on Software Maintenance (ICSM'01), Florence","volume":"6","author":"Tonella P.","year":"2001","journal-title":"Italy, Nov"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1029002"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/302405.302465"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.5555\/832308.837129"},{"key":"e_1_2_1_10_1","volume-title":"Mobile and Embedded Applications","author":"Matzko S.","year":"2002"},{"key":"e_1_2_1_11_1","volume-title":"Database Management and Design","author":"Hansen G.W.","year":"1996","edition":"2"}],"container-title":["ACM SIGSOFT Software Engineering Notes"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1402521.1402527","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1402521.1402527","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T13:58:05Z","timestamp":1750255085000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1402521.1402527"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2008,8,31]]},"references-count":11,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2008,8,31]]}},"alternative-id":["10.1145\/1402521.1402527"],"URL":"https:\/\/doi.org\/10.1145\/1402521.1402527","relation":{},"ISSN":["0163-5948"],"issn-type":[{"value":"0163-5948","type":"print"}],"subject":[],"published":{"date-parts":[[2008,8,31]]},"assertion":[{"value":"2008-08-31","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}