Loong Logo

Loong FMR: Loong Feature Model Recovery Toolkit

Latest Version: Jan, 2017


Loong is a software product line tool for analyzing and decomposing legacy code and cosntructing product line. It follows the paradigm of virtual separation of concerns, i.e., developers do not physically extract the feature code, and it allows developers to select seeds for each feature inside the feature model. Then the feature mining process will be actived to extract code segments that implement each feature. Code fragments belonging to a feature are shown with a background color. At last, each possible configurations for the product line will be extracted as a product varaint for the product line. In Loong, it implements several feature mining strategies including text comparsion, topology analysis, type checking, and our resolve-binding strategy. You can also consider implement your own feature mining strategy and integrated with loong, which allows you to compare you algorithm with peers. Please reference the tutorial to see how to add your algorithm to Loong easily.

Loong FMR is an extension on Loong Plug-in, and works as a conditional compilation parser, for example using #ifdef and #endif statements. However, in contrast to traditional preprocessors, which typically work on plain text or tokens, Loong provides a number of innovations. The conditional compilation in C allows project in a dynamic mode with configuration options selected. LoongFMR follows this pattern and extends it to Java. Therefore, module is the basic component in this research and decided by configurations (#ifdef pattern in C)


Source code

LoongFMR is open source (GPL license). The source code is available at GitHub.com:github.com/csytang/LoongFMR

To use Loong FMR, you also need Loong plugin, which could be found at Loong Plugin


LoongFMR is an extension of our Loong Eclipse Plugin, therefore you can follow the basic framework described in our Loong tool at here

Examples / Case Studies

Available examples:

In Loong FMR and our research paper, we compare our approach and other architecture recovery approach and intergrate them into our plugin. That is, you donot need to download each of them, and you can find the source code here.

Other Tools

Available Related Approached:

*Note that in the LIMBO project page, you cannot find the source code of limbo. However, it has been implemeneted and intergrated into ARCADE. That means, you can find the implementation of LIMBO in ARCADE and our project.

Experiment and Data

We also reserve the data of our work online at following url: LoongFMR data at Google Drive

Violin plot for Mojo performance

Violin plot for Arch-2-arch performance


To use the tool Loong FMR in your research, please cite the following publication:

Yutian Tang, and Hareton Leung, "Constructing Feature Model by Identifying Variability-aware Modules"
In Proceedings of 25th IEEE International Conference on Program Conprehension (ICPC), 2017. May 22-23, Buenos Aires, Argentina.


We would like to thanks Dr. Joshua Garcia to share his implementation on ARC and other useful functions, which you can find in our project under package path: src/edu/usc/softarch/**. Please reference Dr. Garcia's ASE'13 paper: "A Comparative Analysis of Software Architecture Recovery Techniques".


LoongFMR was developed at the Hong Kong Polytechnic University, by Yutian Tang(Chris). For information about the project, please contact the development team via csytang (at)comp.polyu.edu.hk.

For bug reports and feature requests you can also create a ticket in LoongFMR's bug tracker or you can write an email to loongplugin(AT)gmail.com. In the email, please specify which sub-tool you use in Loong.

Loong Contributers: