Interactive Scalable Abstraction of Reverse Engineered UML Class Diagrams
Mohd Hafeez Osman, Michel R. V. Chaudron, Peter van der Putten
Abstract
Mohd Hafeez Osman, Michel R. V. Chaudron, Peter van der Putten
Abstract
A large fraction of the time consumed in software development and maintenance is spent on understanding the software, which indicates it is a critical activity. Software documentation, including software architecture design documentation, is an important aid in software comprehension. However, keeping documentation up to date with evolving source code is often challenging and absence of up date or more comprehensive design-level documentation is not uncommon. As a solution, software architecture design may be recovered using reverse engineering techniques. However, existing reverse engineering methods produce complete design diagrams that include all the details that exist in the source code. The absence of abstraction from implementation details limits the usefulness of existing reverse engineering techniques for understanding software. This paper aims to address this problem by providing a method and tool that interactively allows developers to interactively explore a reverse engineered class diagram at scalable levels of abstraction. To this end, we propose a Software Architecure Abstraction (SAAbs) framework and an automated tool which implements the SAAbs framework. The SAAbs framework applies a machine learning scoring algorithm to produce a class importance ranking for class diagrams, this ranking is the basis for software architecture abstraction and visualization. We validate this framework by validating the SAAbs tool using a semi-structured survey. On average, 30 respondents of this survey rated 5.40 out of 6 points, which indicate that this is a useful tool to assist software developers in understanding a system.
OpenAlex reports 9 citations for this work. Citation counts describe recorded attention and do not establish research quality.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
A large fraction of the time consumed in software development and maintenance is spent on understanding the software, which indicates it is a critical activity. Software documentation, including software architecture design documentation, is an important aid in software comprehension. However, keeping documentation up to date with evolving source code is often challenging and absence of up date or more comprehensive design-level documentation is not uncommon. As a solution, software architecture design may be recovered using reverse engineering techniques. However, existing reverse engineering methods produce complete design diagrams that include all the details that exist in the source code. The absence of abstraction from implementation details limits the usefulness of existing reverse engineering techniques for understanding software. This paper aims to address this problem by providing a method and tool that interactively allows developers to interactively explore a reverse engineered class diagram at scalable levels of abstraction. To this end, we propose a Software Architecure Abstraction (SAAbs) framework and an automated tool which implements the SAAbs framework. The SAAbs framework applies a machine learning scoring algorithm to produce a class importance ranking for class diagrams, this ranking is the basis for software architecture abstraction and visualization. We validate this framework by validating the SAAbs tool using a semi-structured survey. On average, 30 respondents of this survey rated 5.40 out of 6 points, which indicate that this is a useful tool to assist software developers in understanding a system.
Key concepts: Computer science, Reverse engineering, Software engineering, Documentation, Program comprehension, Software construction, Software development, Software system