Loong is a software product line tool for analyzing and decomposing legacy code and constructing 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 activated 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 variant for the product line. In Loong, it implements several feature mining strategies including text comparison, topology analysis, type checking, and our resolve-binding strategy. You can also consider implementing your own feature mining strategy and integrated with loong, which allows you to compare your algorithm with peers. Please reference the tutorial to see how to add your algorithm to Loong easily.
1. Install Loong Eclipse plugin on your Eclipse
http://www.chrisyttang.org/loong/update
to the Work with: box to install Loong plugin. Then you can simply follow the installation instructions, for plugin depenences you should install could be found in this link(GEF 3.10 *If you have ready installed it, you can just skip this.)
2.(Optional:for CIDE user only) Migrate a CIDE2 Project to Loong Project
3. Design A Feature Model for Project
Edit Feature Model...(guidsl)
. For FeatureIDE tool and the feature model editor, you can redirect to FeatureIDE host page at FeatureIDE and a paper Reasoning about edits to feature models for more detail.
4. Annotate Seeds for Features
Annotated feature to the selection
and select a specific feature for this region. After this selection, the feature will be annotated to this region.
5. (Optional) Save the log for seeds status
create Log for seeds
and Rollback to A Certain Status(Seed)
. The action create Log for seeds
allows you to save current status. Usually,we save the annotation for seed. And you can use Rollback to A Certain Status(Seed)
action to roll back to a stutas from any step.
6. Create Program DataBase and Set Feature Mining Strategy
Create Program Database...
in the project context menu, please reference the screenshot in the previous step. Furthermore, we allow users to select their own feature mining strategy in the action Set Feature Mining Strategy
in the project context menu.
7.Annotate features
Annotate Features
provided by project context menu.
8. (Optional) Assess the feature mining performance
Compare Performance With Benchmark
. Then you can select a benchmark in workspace to compare with. After this process, a file named result.xml will be built inside your project, where you can inspect your feature mining strategy's performance.* For same case studies and benchmarks in CIDE format, you can use Loong to convert a CIDE project into a Loong project(see step.2).
Other Wiki document could be found at our Github Wiki
To install Loong plugin, you can either use our host update site at Loong Plugin Update site or obtain it from officical Eclipse Marketplace at Eclipse Loong.
To trace the source code and contribute to Loong plugin or even build an extension application on Loong, you can simply reference the github respository at Github. Loong
Please check shared link of google drive for all case studies and experimental data at: https://drive.google.com/folderview?id=0B9l0qvk6pnW0ZDRYMmxIQVhRb0U&usp=sharing
Yutian Tang, and Hareton Leung, "StiCProb: A Novel Feature Mining Approach Using Conditional Probability", In Proceedings of 24th IEEE Internaltional Conference on Software Analysis, Evolution, and Reengineering (SANER), 2017(bibtex)
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.
In the loong plugin project, we follow the feature model diagram in FeatureIDE.
In the loong plugin project, we follow the basic design infrastructure in CIDE with customerized functions.
In the loong plugin project, we reference the implmentation of Type check, topology, substring comparsion strategies in LEADT.
Main developer and maintainer for Loong Plugin
Email: csytang (AT) comp (dot) polyu (dot) edu (dot) hk