In feature-oriented software development, feature-oriented software development program cubes (FOSD program cubes) are n-dimensional arrays of functions (program transformations) that represent n-dimensional product lines. A program is a composition of features: a base program is augmented with increments in program functionality, called features, to produce a complex program. A software product line (SPL) is a family of related programs. A typical product line has F0 as a base program, and F1..Fn as features that could be added to F0. Different compositions of features yield different programs. Let + denote the feature composition operation. A program P in SPL might have the following expression:
That is, P extends program F0 with features F1, F2, F4, and F8 in this order.
We can recast P in terms of a projection and contraction of a 1-dimensional array. Let Fi = [F0 .. Fn] denote the array of features used by a product line. A projection of Fi eliminates unneeded features, yielding a shorter array (call it) Gi. A contraction of Gi sums each Gi in a specific order, to yield a scalar expression. The expression for P becomes:
where the index values accomplish projection and summation is array contraction. This idea generalizes to n-dimensional arrays that model multi-dimensional product lines.