返回
Discovering Reusable Functional Features in Legacy Object-Oriented Systems
DOI:10.1109/TSE.2023.3272631.png)
摘要
En 中文
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.
Keyword:
Delegation
feature discovery
formal concept analysis
functional feature
multiple inheritance
期刊
IF:
5.6
论文数:
2.9K
被引数:
1.1W
机构
引用论文
Corrigendum to “The role of carbon in the nitridic high performance ceramics in the system Si–B–N–C”
Weed Seed and Seedling Reductions by Soil Solarization by Transparent Polyethylene Sheets
Weed Science
IF0

