FOP
Feature-oriented programming (FOP) is a programming paradigm for developing software product lines.
This approach is based on the features of a software system, which are taken into account in the design and implementation as first-level elements. They represent extensions of the program functionality. Here, features of cross-cutting concerns are different in that they reflect needs of program users directly.
Features represent the basic principle to describe the variability of a software product line. Every involved person which is called a stakeholder uses feature as a common form to describe characteristics, which are comprehensible to all participates.
FOSD
Feature-oriented software development (FOSD) is used to plan and implement software product lines in the phase of the domain engineering, as well as to select features to configure and generate a concrete software product during the application engineering.
FeatureIDE supports FOSD within the following four phases.
- Domain analysis: The result of this analysis is covered in a feature model, which describes the variabilities and commonalities of a software system based on its given domain.
- Domain implementation: The implementation of the described software product line is accomplished for the entire code base. Every feature is mapped into code artefacts, which are contained within the code base.
- Requirements analysis: Tailoring a software system to customer needs is done based on the domain and the features. The requirements are mapped onto features, which are selected as needed to form a configuration of a concrete product.
- Software generation: FeatureIDE builds a concrete selected variation automatically.