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:
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:
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. |
Products are automatically generated by a feature composer that takes a set of features as input and returns the composed product.
Here is a list of feature composers for different programming languages:
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.