日本語

FeatureGluonJ: A FOP Language with Family Polymorphism

FeatureGluonJ is a feature-oriented programming language, aiming at modularity for implementing features. The modularity includes code reuse and interfaces among feature modules. FeatureGluonJ is developed by extending an aspect-oriented programming language, GluonJ. Thus, it is also an extention to Java.

Recommended documents to learn feature-oriented software product lines:

Publications

A Study on Implementations of Feature Interaction in Software Product Lines
Fuminobu Takeyama
Ph.D. Dissertation, Tokyo Institute of Technology
December 2013
Get Copy (book ver.)
Implementing Feature Interactions with Generic Feature Modules
Fuminobu Takeyama and Shigeru Chiba
Software Composition, LNCS 8088, Springer, pp. 81-96, June 2013
Proceedings of 13th International Conference on Software Composition (SC 2013)
Get Copy Get Slides
Feature-Oriented Programming with Family Polymorphism
Fuminobu Takeyama, Shigeru Chiba
Proceedings of the 3rd international workshop on Variability & Composition (co-located with AOSD 12)
26 March 2012, Potsdam, Germany
Get Copy Get Slide

The FeatureGluonJ compiler

The compiler binary and a sample project
The sample project is a MobileMedia SPL refactored from FeatureHouse version not MobileMedia Lancaster.

Introduction to FeatureGluonJ

to be updated

The syntax

Although FeatureGluonJ provides its own syntax added to ones of standard Java, for supporting to edit source code in FeatureGluonJ on IDEs, it also provides annotations for representing constructs unique to FeatureGluonJ. For example, the following code:

package p;
feature f;

class C overrides D {
}

is semantically equivalent to:

package p;
import jp.ac.titech.is.csg.fgj.runtime.annotation.*;

@Feature("f") @Overrides
class C extends D {
}