Feature Modularity in Software Product Lines
Feature Oriented Programming (FOP) is a design methodology and tools for program synthesis in software product lines. Programs are specified declaratively using features, where a feature is an increment in program functionality. FOP has been used to
develop product-lines in widely varying domains, including compilers for
Java dialects of Java, fire support simulators, network protocols,
and program verification tools.
An FOP model of a product-line is an algebra: base programs are constants and program extensions are functions (that add a specified feature to an input program). Program designs are expressions -- compositions of functions and constants -- that are amenable to
optimization and analysis.
Lectures will review core results on FOP: models and tools for synthesizing code and non-code artifacts by feature composition, automatic algorithms for validating compositions, and the relationship between product-lines, metaprogramming, and model driven design (MDD).