An evaluation of four reverse engineering tools for C++ applications
DOAN, TUNG (2008)
DOAN, TUNG
2008
Tietojenkäsittelyoppi - Computer Science
Informaatiotieteiden tiedekunta - Faculty of Information Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2008-10-14
Julkaisun pysyvä osoite on
https://urn.fi/urn:nbn:fi:uta-1-19399
https://urn.fi/urn:nbn:fi:uta-1-19399
Tiivistelmä
By using reverse engineering tools, the software developer is able to generate the structure of a software system in graphical reports such as hierarchy trees, call graphs, flow charts, class diagrams and then export reports into various formats such as HTML, XML, XMI (Xml Metadata Interchange) or the formats of other reverse engineering tools. C++ programming language supports object-oriented programming and there are more reverse engineering tools supporting this language than other languages such as C# and Java. However, there have been a few evaluation works in comparing, contrasting and thoroughly identifying the capabilities of reverse engineering tools for C++ applications. Therefore, in this thesis, four widely used reverse engineering tools which support C++ are chosen to be examined, namely Rigi, Columbus/CAN, Imagix 4D, and Understand. The tools are evaluated by using them to examine two different types of C++ application: a small game and a large library written in Visual C++. After evaluating them and considering other related research work on evaluation, I outline and comment on the features and capabilities of the tools, along with their strengths and limitations. Last but not least, I provide the reader with some suggestions for designing and implementing an efficient reverse engineering tool for C++ applications.
Keywords: Reverse Engineering, C++, CASE tools, Software quality management, Software maintenance, Reusability
Keywords: Reverse Engineering, C++, CASE tools, Software quality management, Software maintenance, Reusability