FOSD metamodels
Encyclopedia
Feature Oriented Software Development (FOSD)
is a general paradigm for program synthesis in software product lines, where a model of a product line is a tuple of 0-ary and 1-ary functions (program transformations). This page discusses a more abstract concept of models of product lines of product lines (PL**2) called metamodels, and product lines of product lines of product lines called meta-metamodels (PL**3), and higher level concepts.
A GenVoca model of a product line is a tuple whose components are features
(0-ary or 1-ary functions). A refinement (delta) of
a model is a "meta-feature", which is a tuple of deltas
that can modify existing features and can add new features.
As a simple example, consider GenVoca model M that contains three
features a-c:
M = [ a, b, c ]
Suppose meta-model MM contains three meta-features AAA-CCC, each of which
is a tuple with a single non-identity feature:
MM = [ AAA, BBB, CCC ]
= [ [a,1,1], [1,b,1], [1,1,c] ]
where 1 is the identity function (i.e., a feature or feature refinement that
does nothing). Model M is defined by the following expression (composition of meta-features) using meta-model MM:
M = AAA • BBB • CCC -- expression
= [a,1,1]•[1,b,1]•[1,1,c] -- substitution
= [a•1•1, 1•b•1, 1•1•c] -- composition
= [a,b,c] -- simplification where 1•x=x•1=x
MM models a product line of product lines (PL**2).
That is, different MM expressions correspond to
GenVoca models of different product lines. Meta-metamodels
describe product lines of product lines of product lines (PL**3),
and so on.
Feature Oriented Programming
Feature Oriented Programming or Feature Oriented Software Development is a general paradigm for program synthesis in software product lines....
is a general paradigm for program synthesis in software product lines, where a model of a product line is a tuple of 0-ary and 1-ary functions (program transformations). This page discusses a more abstract concept of models of product lines of product lines (PL**2) called metamodels, and product lines of product lines of product lines called meta-metamodels (PL**3), and higher level concepts.
MetaModels
A meta-model is a model whose instances are models.A GenVoca model of a product line is a tuple whose components are features
(0-ary or 1-ary functions). A refinement (delta) of
a model is a "meta-feature", which is a tuple of deltas
that can modify existing features and can add new features.
As a simple example, consider GenVoca model M that contains three
features a-c:
M = [ a, b, c ]
Suppose meta-model MM contains three meta-features AAA-CCC, each of which
is a tuple with a single non-identity feature:
MM = [ AAA, BBB, CCC ]
= [ [a,1,1], [1,b,1], [1,1,c] ]
where 1 is the identity function (i.e., a feature or feature refinement that
does nothing). Model M is defined by the following expression (composition of meta-features) using meta-model MM:
M = AAA • BBB • CCC -- expression
= [a,1,1]•[1,b,1]•[1,1,c] -- substitution
= [a•1•1, 1•b•1, 1•1•c] -- composition
= [a,b,c] -- simplification where 1•x=x•1=x
MM models a product line of product lines (PL**2).
That is, different MM expressions correspond to
GenVoca models of different product lines. Meta-metamodels
describe product lines of product lines of product lines (PL**3),
and so on.
Applications
- [ftp://ftp.cs.utexas.edu/pub/predator/ahead.pdf AHEAD Tool Suite and Extensible Java Preprocessors]
- [ftp://ftp.cs.utexas.edu/pub/predator/icmt08.pdf SVG Applications]
- [ftp://ftp.cs.utexas.edu/pub/predator/ECOOP2005.pdf Expression Problem or the Extensibility Problem]
- [ftp://ftp.cs.utexas.edu/pub/predator/OrigamiMDSC.pdf Multi-Dimensional Separation of Concerns]
See also
- Feature Oriented ProgrammingFeature Oriented ProgrammingFeature Oriented Programming or Feature Oriented Software Development is a general paradigm for program synthesis in software product lines....
-- basic overview - FOSD Program CubesFOSD Program CubesA program in Feature Oriented Software Development isa composition of functions : a base program is composed with...
-- multi-dimensional product lines - FOSD Feature AlgebrasFOSD Feature AlgebrasFeature Oriented Programming or Feature Oriented Software Development is a general paradigm for program synthesis in software product lines. Please read the Feature Oriented Programming page that explains how an FOSD model of a product line is a tuple of 0-ary and 1-ary functions...
-- operations from which FOSD features (0-ary and 1-ary) functions are defined - FOSD Feature InteractionsFOSD Feature InteractionsFeature Oriented Programming or Feature Oriented Software Development is a general paradigm for program synthesis in software product lines. The building blocks of programs are features...
-- general concepts for feature interactions