About: Feature-oriented programming is a research topic. Over the lifetime, 116 publications have been published within this topic receiving 10144 citations. The topic is also known as: Feature Oriented Software Development & FOSD.
TL;DR: This work integrates prior results to connect feature models, grammars, and propositional formulas, which allows arbitrary propositional constraints to be defined among features and enables off-the-shelf satisfiability solvers to debug feature models.
Abstract: Feature models are used to specify members of a product-line. Despite years of progress, contemporary tools often provide limited support for feature constraints and offer little or no support for debugging feature models. We integrate prior results to connect feature models, grammars, and propositional formulas. This connection allows arbitrary propositional constraints to be defined among features and enables off-the-shelf satisfiability solvers to debug feature models. We also show how our ideas can generalize recent results on the staged configuration of feature models.
TL;DR: The AHEAD (algebraic hierarchical equations for application design) model is presented, that shows how step-wise refinement scales to synthesize multiple programs and multiple noncode representations, and a tool set that supports AHEAD is reviewed.
Abstract: Step-wise refinement is a powerful paradigm for developing a complex program from a simple program by adding features incrementally. We present the AHEAD (algebraic hierarchical equations for application design) model that shows how step-wise refinement scales to synthesize multiple programs and multiple noncode representations. AHEAD shows that software can have an elegant, hierarchical mathematical structure that is expressible as nested sets of equations. We review a tool set that supports AHEAD. As a demonstration of its viability, we have bootstrapped AHEAD tools from equational specifications, refining Java and nonJava artifacts automatically; a task that was accomplished only by ad hoc means previously.
TL;DR: This paper analyzes the effects of feature granularity in SPLs and presents a tool, called Colored IDE (CIDE), that allows features to implement coarse- grained and fine-grained extensions in a concise way.
Abstract: Building software product lines (SPLs) with features is a challenging task. Many SPL implementations support features with coarse granularity - e.g., the ability to add and wrap entire methods. However, fine-grained extensions, like adding a statement in the middle of a method, either require intricate workarounds or obfuscate the base code with annotations. Though many SPLs can and have been implemented with the coarse granularity of existing approaches, fine-grained extensions are essential when extracting features from legacy applications. Furthermore, also some existing SPLs could benefit from fine-grained extensions to reduce code replication or improve readability. In this paper, we analyze the effects of feature granularity in SPLs and present a tool, called Colored IDE (CIDE), that allows features to implement coarse-grained and fine-grained extensions in a concise way. In two case studies, we show how CIDE simplifies SPL development compared to traditional approaches.
TL;DR: In this paper, the authors propose a feature model as an extension of Java and give two translations to Java, one via inheritance and the other via aggregation, which generalizes inheritance and aggregation.
Abstract: We propose a new model for flexible composition of objects from a set of features. Features are similar to (abstract) subclasses, but only provide the core functionality of a (sub)class. Overwriting other methods is viewed as resolving feature interactions and is specified separately for two features at a time. This programming model allows to compose features (almost) freely in a way which generalizes inheritance and aggregation. For a set of n features, an exponential number of different feature combinations is possible, assuming a quadratic number of interaction resolutions. We present the feature model as an extension of Java and give two translations to Java, one via inheritance and the other via aggregation. We further discuss parameterized features, which work nicely with our feature model and can be translated into Pizza, an extension of Java.
TL;DR: The feature model is presented as an extension of Java and two translations to Java are given, one via inheritance and the other via aggregation, which generalizes inheritance and aggregation.
Abstract: We propose a new model for flexible composition of objects from a set of features Features are similar to (abstract) subclasses, but only provide the core functionality of a (sub)class Overwriting other methods is viewed as resolving feature interactions and is specified separately for two features at a time This programming model allows to compose features (almost) freely in a way which generalizes inheritance and aggregation For a set of n features, an exponential number of different feature combinations is possible, assuming a quadratic number of interaction resolutions We present the feature model as an extension of Java and give two translations to Java, one via inheritance and the other via aggregation We further discuss parameterized features, which work nicely with our feature model and can be translated into Pizza, an extension of Java