Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
On Using a Benchmark to Evaluate C++ Extractors
IWPC '02 Proceedings of the 10th International Workshop on Program Comprehension
A Systematic Study of UML Class Diagram Constituents for their Abstract and Precise Recovery
APSEC '04 Proceedings of the 11th Asia-Pacific Software Engineering Conference
GXL: a graph-based standard exchange format for reengineering
Science of Computer Programming - Software analysis, evolution and re-engineering
Journal of Systems and Software
The Experimental Paradigm in Reverse Engineering: Role, Challenges, and Limitations
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
Duplicate Record Detection: A Survey
IEEE Transactions on Knowledge and Data Engineering
An infrastructure to support interoperability in reverse engineering
Information and Software Technology
Hi-index | 0.00 |
Before performing software maintenance and evolution tasks, developers must expend significant effort to understand the design of the subject software system. Reverse engineering and reengineering tools can extract artifacts, such as class diagrams, from source code so that the effort expended on program comprehension can be greatly reduced. Choosing suitable and appropriate tools is itself a difficult process. Many metrics and benchmarks have been proposed to evaluate the quality of reengineering tools, but the process is still complicated and requires much human effort. Furthermore, ignored by most evaluation experiments and approaches is the understanding of differences and similarities of the output artifacts produced by different tools. This paper proposes a novel approach for tool evaluation making a direct comparison of the output artifacts of the chosen tools. We apply our methodology on class diagrams extracted from source code. We utilize a class matching model to automate the process. In this study, we use ten open-source programs as test cases and two open source reverse engineering tools Doxygen and StarUML. We evaluate the output of these two tools based on class matching given the same input. This approach, we believe, provides developers with good guidance in tool selection.