Discovering Reusable Functional Features in Legacy Object-oriented Systems. Mili, H., Benzarti, I., El Kharraz, A., El Boussaidi, G., Gu�h�neuc, Y., & Valtchev, P. Transactions on Software Engineering (TSE), 49(7):3827–3856, IEEE CS Press, July, 2023. 29 pages.
Discovering Reusable Functional Features in Legacy Object-oriented Systems [pdf]Paper  abstract   bibtex   
Typical object-oriented (OO) systems implement several functional features that are interwoven into class hierarchies. In the absence of aspect-oriented techniques to develop and compose these features, developers resort to object-oriented design and programming idioms to separate features as well as possible. Given a legacy OO system, discovering existing functional features helps understand the design of the system and extract these features to ease their maintenance and reuse. We want to discover candidate functional features in OO systems. We first define functional features and then discuss the footprints that such features are likely to leave in an OO system. We identify three such footprints: (1) multiple inheritance, (2) delegation, and (3) ad-hoc. We develop a set of algorithms for identifying such footprints in OO code and implemented them for the Java language using Eclipse JDT. In this article, we present the algorithms, and the results of applying the corresponding tools on five open-source systems: FreeMind, JavaWebMail, JHotDraw, JReversePro, and Lucene. Our experimental results show that: (1) the different algorithms can identify interesting and useful candidate functional features in OO systems, (2) they can identify opportunities for refactoring, and (3) they are complementary and could help developers.

Downloads: 0