Feature-oriented software development (FOSD) is a general paradigm for software generation, 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 further abstract concepts.
Metamodels
A metamodel 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). An extension (a.k.a. delta or refinement) of a model is a "meta-feature", which is a tuple of deltas that can modify an existing product line by modifying existing features and adding new features. As a simple example, consider GenVoca model M that contains three features a-c:
M = [ a , b , c ] {\displaystyle 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:
M M = [ A A A , B B B , C C C ] = [ [ a , 0 , 0 ] , [ 0 , b , 0 ] , [ 0 , 0 , c ] ] {\displaystyle {\begin{aligned}MM&=[AAA,BBB,CCC]\\&=[[a,0,0],[0,b,0],[0,0,c]]\end{aligned}}}where 0 is the null feature. Model M is constructed by adding the meta-features of MM, where + is the composition operation (see FOSD).
M = A A A + B B B + C C C expression = [ a , 0 , 0 ] + [ 0 , b , 0 ] + [ 0 , 0 , c ] substitution = [ a + 0 + 0 , 0 + b + 0 , 0 + 0 + c ] composition = [ a , b , c ] simplification where 0 + x = x + 0 = x {\displaystyle {\begin{aligned}M&=AAA+BBB+CCC&{\text{expression}}\\&=[a,0,0]+[0,b,0]+[0,0,c]&{\text{substitution}}\\&=[a+0+0,0+b+0,0+0+c]&{\text{composition}}\\&=[a,b,c]&{\text{simplification where }}0+x=x+0=x\end{aligned}}}MM models a product line of product lines (PL**2). That is, different MM expressions correspond to GenVoca models of different product lines..
See also
- Feature-oriented programming – basic overview
- FOSD origami
- FOSD program cubes – multi-dimensional product lines
- FOSD feature interactions – other operations on features, including an operation designating feature interaction
References
"Scaling Step-Wise Refinement" (PDF). ftp://ftp.cs.utexas.edu/pub/predator/TSE-AHEAD.pdf ↩