CIDE+: A Semi-automatic Approach for Extracting Software Product Lines

The extraction of non-trivial software product lines (SPL) from a legacy application is a time-consuming task. First, developers need to identify the components responsible for the implementation of each program feature. Next, they must locate the lines of code that reference the components discovered in the previous step. Finally, they must extract such lines to independent modules or they must annotate the lines in some way. In order to speed up product line extraction, CIDE+ is a tool that supports a semi-automatic approach to annotate the code of optional features in SPL. The proposed approach is based on an existing tool to product line development, called CIDE, that enhances standard IDE with the ability to associate background colors to the lines of code that implement a feature.

According to our approach, SPL developers must initially supply a set of syntactic elements -- including for example packages, classes, methods, and fields -- associated to the features under extraction. These elements are called the feature seeds, or just seeds. Our annotation algorithm is a fixed-point algorithm with two phases. In the first phase, called color propagation, the program elements that reference the seeds are visually annotated with a color reported by the developer.

Extraction Process

We have implemented the proposed annotation algorithm on top of the CIDE tool. Our implementation assumes that developers follow the iterative process described in Figure 1 to extract a SPL.

Fig. 1 - Iterative extraction process
Fig. 1 - Iterative extraction process

First, the developer must define the feature seeds. For this purpose, he/she should for example read the program's documentation, interview the developers that have implemented the feature's code, browse the source code, study the program functionalities provided by the feature etc. After choosing the seeds – or at least the first candidates to seeds – he/she must execute our CIDE extension. During the execution, the tool can require feedback about detected semi-automatic expansions. In such cases, developers should decide whether the default expansions suggested by the tool should be accepted or not.

Demo Video:

The Camtasia Studio video content presented here requires a more recent version of the Adobe Flash Player. If you are using a browser with JavaScript disabled please enable it now. Otherwise, please update your version of the free Flash Player by downloading here.


Click here to download and install CIDE+ (version beta 0.2.5, updated on November, 19th, 2012).

Source Code

CIDE+ is hosted at Google Code and can be accessed by SVN.
To download the source code go to:


Marco Tulio Valente; Virgilio Borges; Leonardo Passos. A Semi-automatic Approach for Extracting Software Product Lines. IEEE Transactions on Software Engineering, v. 38, n. 4, p. 737-754, 2012.

Mailing List

CIDE+ has also a mailing list (with most traffic in Portuguese):


Pedro Pires (ppires [at]

Virgílio Borges de Oliveira (virgilio [at]

Marco Túlio Valente (mtov [at]