The Choice Calculus
- 1 December 2011
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 21 (1), 1-27
- https://doi.org/10.1145/2063239.2063245
Abstract
Many areas of computer science are concerned with some form of variation in software---from managing changes to software over time to supporting families of related artifacts. We present 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 the lambda calculus in programming language research. We also develop an associated theory of software variation, including sound transformations of variation artifacts, the definition of strategic normal forms, and a design theory for variation structures, which will support the development of better algorithms and tools.Keywords
Funding Information
- Air Force Office of Scientific Research (FA9550-09-1-0229)
- Division of Computing and Communication Foundations (CCF-0917092)
This publication has 26 references indexed in Scilit:
- Impact of software engineering research on the practice of software configuration managementACM Transactions on Software Engineering and Methodology, 2005
- Towards a taxonomy of software changeJournal of Software Maintenance and Evolution: Research and Practice, 2005
- Feature Models, Grammars, and Propositional FormulasLecture Notes in Computer Science, 2005
- XVCL: a mechanism for handling variants in software product linesScience of Computer Programming, 2004
- Variability management with feature-oriented programming and aspectsACM SIGSOFT Software Engineering Notes, 2004
- Scaling step-wise refinementIEEE Transactions on Software Engineering, 2004
- An empirical analysis of c preprocessor useIEEE Transactions on Software Engineering, 2002
- The importance of branching models in SCMComputer, 2002
- A layered architecture for uniform version managementIEEE Transactions on Software Engineering, 2001
- The design and implementation of hierarchical software systems with reusable componentsACM Transactions on Software Engineering and Methodology, 1992