FOSD metamodels

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.

MetaModels

A meta-model is a model whose instances are models.[1] 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

See also

References

  1. "Scaling Step-Wise Refinement".