Feature Oriented Software Development

Feature Oriented Software Development (FOSD) is a paradigm to develop Software Product Lines. A Software Product Line(SPL) consists of a set of software systems that share some of their code. Each software system of that set is called a product of the SPL.

FOSD introduces the concept of a feature. A SPL provides a set of features. Each product can be constructed by composing a subset of the SPL’s features. A Feature Model(FM) captures the interdependencies between all features and regulates how features can be composed.

In the following, a short overview over FOSD will be given. For a more thorough investigation, the reader is referred to the following scientific papers:

What is a feature?

A feature is a structure that extends and modifies the structure of a given program in order to satisfy a stakeholder’s requirement, to implement and encapsulate a design decision, and to offer a configuration option [ALMK] .

Now, what does that mean:

  • a feature provides some functionality
  • it provides that functionality by extending or modifying a program
  • you can either select or omit the feature for a specific product

However, a feature is not a plugin! TODO: Why not?

[ALMK]S. Apel, C. Lengauer, B. Möller, and C. Kästner. An Algebra for Features and Feature Composition. In Proceedings of the International Conference on Algebraic Methodology and Software Technology (AMAST), volume 5140 of Lecture Notes in Computer Science, pages 36–50. Springer-Verlag, 2008.

Program Composition

Products are automatically generated by a feature composer that takes a set of features as input and returns the composed product.

Feature Structure Trees

Composers for other languages

Here is a list of feature composers for different programming languages:

  • Fuji - a feature oriented compiler for JAVA
  • FeatureHouse’s FSTComposer - FeatureHouse supports composition of JAVA, C-Sharp, ... FeatureHouse itself is language independent and unsupported languages can be added by providing a parser and a pretty-printer.
  • AHEAD Tool Suite

featuremonkey tries to provide FOP support for Python. However, as Python is a very dynamic language feature composition can be acheived at runtime without the need for code generation. This opens up some new possibilities , but also creates some problems.

Table Of Contents

Previous topic

Welcome to featuremonkey’s documentation!

Next topic

Installation

This Page