Modeling Object-Oriented Software for Reverse Engineering and Refactoring

Tichelaar, Sander (2001). Modeling Object-Oriented Software for Reverse Engineering and Refactoring. (Dissertation, University of Bern, Philosophisch-naturwissenschaftliche Fakultät)

[img] Text
tichelaar-phd.pdf - Published Version
Restricted to registered users only
Available under License Publisher holds Copyright.

Download (1MB) | Request a copy

The increased popularity of the object-oriented paradigm has also increased the interest in object-oriented reengineering. First of all, object-oriented software systems suffer from similar maintainability problems as traditional procedural systems, displaying the need for reengineering techniques tailored to deal with object- oriented code. Secondly, the increased importance of iterative development processes make reengineering techniques valuable in forward engineering, and thus for all paradigms that software is developed in. Reengineering requires tool support to deal with the large amounts of information and the wide variety of tasks to be performed. An important consideration in building tool environments for reengineering is what information must be provided and how this information is modelled. Design choices have a considerable impact not only on the ability to support reengineering tasks, but also on issues such as scalability and tool interoperability. Several metamodels exist that model software for the purposes of reengineering. However, they generally lack a discussion of the relevance of information for reengineering and the trade-offs of modeling alternatives. This thesis presents FAMIX, a language-independent metamodel for modelling object-oriented software for reengineering purposes.We discuss the exact contents of the metamodel, including its relevance for reengineering and how the metamodel supports the different object-oriented languages through its language- independent core. We also discuss the infrastructural design decisions of FAMIX by placing it into a design space for infrastructural aspects of reengineering repositories and metamodels. The design space presents multiple interdependent aspects, their design alternatives and howthese impact issues such as scalability, extensibility and information exchange. We validate the ability of FAMIXto support reengineering on a language-independent level in twoways. First, we present Moose, a reengineering tool environment with a repository based on FAMIX. Moose serves as a foundation for multiple reengineering tools and has been applied to reverse engineer several large industrial case studies. Secondly,we define a set of fifteen low-level refactorings in terms of the information available in FAMIX. Refactoring requires sufficient, complete and 100 correct information as well as a clear interpretation of the supported languages in the language-independent core of the metamodel, in order to correctly perform transformations on the language-specific code level. As such the refactorings provide an in-depth validation of the language independence of FAMIX.

Item Type:

Thesis (Dissertation)


08 Faculty of Science > Institute of Computer Science (INF) > Software Composition Group (SCG)




Manuela Bamert

Date Deposited:

29 Jan 2018 17:17

Last Modified:

21 Nov 2019 00:42




Actions (login required)

Edit item Edit item
Provide Feedback