A calculus for uniform feature composition
Open Access
- 24 May 2008
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 32 (5), 1-33
- https://doi.org/10.1145/1745312.1745316
Abstract
The goal of feature-oriented programming (FOP) is to modularize software systems in terms of features. A feature refines the content of a base program. Both base programs and features may contain various kinds of software artifacts, for example, source code in different languages, models, build scripts, and documentation. We and others have noticed that when composing features, different kinds of software artifacts can be refined in a uniform way, regardless of what they represent. We present gDeep, a core calculus for feature composition, which captures the language independence of FOP; it can be used to compose features containing many different kinds of artifact in a type-safe way. The calculus allows us to gain insight into the principles of FOP and to define general algorithms for feature composition and validation. We provide the formal syntax, operational semantics, and type system of gDeep and outline how languages like Java, Haskell, Bali, and XML can be plugged in.Keywords
Funding Information
- Deutsche Forschungsgemeinschaft (AP206/2-1)
This publication has 47 references indexed in Scilit:
- Type safety for feature-oriented product linesAutomated Software Engineering, 2010
- An Overview of Feature-Oriented Software Development.The Journal of Object Technology, 2009
- TraitsACM Transactions on Programming Languages and Systems, 2006
- Modular Verification of Open Features Using Three-Valued Model CheckingAutomated Software Engineering, 2005
- Scaling step-wise refinementIEEE Transactions on Software Engineering, 2004
- The recursive record semantics of objects revisitedJournal of Functional Programming, 2004
- Jam---designing a Java extension with mixinsACM Transactions on Programming Languages and Systems, 2003
- Mixin layersACM Transactions on Software Engineering and Methodology, 2002
- Superimposition: a component adaptation techniqueInformation and Software Technology, 1999
- On understanding types, data abstraction, and polymorphismACM Computing Surveys, 1985