FCAJava is an Eclipse plugin implementing a semi-automatic technique that helps refactoring a traditional Java hierarchy into groups of traits.

FCAJava implements the technique based on the approach proposed by Adrian Lienhard, Stephane Ducasse and Gabriela Arevalo for Smalltalk that exploits Formal Concept Analysis, a solid mathematical theory for gathering significative groupings of elements which have
some properties in common.

For the moment, this plugin only provides a restricted set of features (new features will be added in the future).

FCAJava is free and open source, under the GNU GPL License.

The plugin was implemented as a part of his Master Thesis, by Marco Naddeo: "Un possibile approccio alla soluzione di alcuni problemi legati all'ereditarieta' singola nei linguaggi object-oriented", Universita' degli Studi di Torino, 2008, Laurea Triennale in Informatica.


You can download the zip file containing the plugin and unzip it inside the eclipse directory. The zip can be downloaded from here: http://sourceforge.net/projects/fcajava.


The sources of gengetopt eclipse can be obtained via CVS (you can find the instructions here: http://sourceforge.net/projects/fcajava)


To open the main view of the plugin, you need to right-click on a Java project inside Eclipse, and choose the menu item "Trait Mining Tool":

starting the plugin

This will open the corresponding view:

Trait Mining Tool view
This view lists all the methods found in the project and already selects those that are considered as "meaningful" (also called "understood" sometimes); the methods with a red cross are those that are considered "canceled" and are unselected by default; those with a gray cross are those considered as "probably canceled" (i.e., they consist only of a return statement) - it is then up to the programmer to decide whether to select these methods.

Once the programmer has selected all the methods that he wants to include in the Formal Concept Analysis, the concept lattice can be generated by clicking on the button of the view:

Generate the concept lattice
This will open a dialog box for selecting the folder where the "lattice.txt" will be saved.

SourceForge.net Logo