The Choice Calculus
For Variation Maintenance

Project Description

Managing variation is an important problem in software
engineering that takes different forms, ranging from version control and
configuration management to software product lines.
Our current work in this area focuses on the choice calculus, a
fundamental representation for software variation that can serve as a common
language of discourse for variation research, filling a role similar to lambda
calculus in programming language research.

About the Choice Calculus

At the core of the choice calculus are choices, which represent
different alternatives that can be selected. Choices are annotated by names, which
group choices into dimensions. Dimensions provide a structuring and
scoping mechanism for choices. Moreover, each dimension introduces the number
of alternatives each choice in it must have and tags for selecting those
alternatives. The semantics of the choice calculus is defined via repeated
elimination of dimensions and their associated choices through the selection
of a tag defined by that dimension.

The choice calculus obeys a rich set of laws that give rise to a number of
normal forms and allow the flexible restructuring of variation
representations to adjust to the needs of different applications.

Among the potential applications of the choice calculus are feature
modeling, change pattern detection, property preservation, and the development
of change IDEs. We have also successfully applied the choice calculus in the
development of type systems for variational languages and in the design of
type systems that produce better type error messages.

Variation Programming

You need a recent version of the GHC Haskell compiler, or even
better the Haskell
Platform, to use the
code.

How to use the program: Download the zip file, and unzip it. This will create a directory
GTTSE. Change to that directory and load one of the example files
into ghci by executing, for example, ghci Examples/List.hs.

Support

This project is supported by the Air Force Office of Scientific
Research under the grant FA9550-09-1-0229 and by the
National Science Foundation under the grants
CCF-0917092,
CCF-1219165, and
IIS-1314384.