Abstract:
The use of reverse engineering (RE) is increasingly spreading and becoming one of the essential engineering trends for software evolution and maintenance. RE is used to support the process of analyzing and recapturing the design information in legacy systems or complex systems during the maintenance phase. The major problem stakeholders might face in understanding the architecture of existing software systems is that the knowledge of software architecture information is difficult to obtain because of the size of the system, and the existing architecture document often missing or does not match the current implementation of the source code of software system. Therefore, much more effort and time are needed from multiple stakeholders such as developers, maintainers and architects for obtaining and re-documenting and visualizing the architecture of a target system from its source code files. Hence, most of the current work is mainly focused on the developer’s viewpoint.
To contribute in solving the mentioned problems for obtaining and re-documenting the architecture of target system; this research presents a RE methodology for visualizing architectural information for multiple stakeholders and viewpoints by applying a reverse engineering process on specific parts of the source code. The process is driven by eliciting stakeholders' concerns on specific architectural viewpoints to obtain and visualize the architectural information related to these concerns. In this research the proposed RE methodology’s phases have been illustrated and validated using a case study of a legacy web application system.
The main contributions of this research are three folds: firstly; the RE methodology is based on IEEE1471 standard forarchitectural description and supports concerns of stakeholder including the end-user and maintainer; secondly; it supports the visualization of a particular part of the target system by providing a visual model of the architectural representation which highlights the main components needed to execute specific functionality of the target systemand finally; the methodology also uses architecture styles to organize the visual architecture information,this architectural representation helps stakeholders to inspect the dependencies of the different parts of the architecture obtained from specific source code segments of the target system.