A Tutorial on Feature Oriented Programming and Product-Lines

A Tutorial on Feature Oriented Programming and...

Info iconThis preview shows pages 1–2. Sign up to view the full content.

View Full Document Right Arrow Icon
A Tutorial on Feature Oriented Programming and Product-Lines Don Batory Department of Computer Sciences University of Texas at Austin Austin, Texas, 78712 U.S.A. batory~cs, utexas, edu 1 Abstract Feature Oriented Programming (FOP) is a design method- ology and tools for program synthesis. The goal is to specify a target program in terms of the features that it offers, and to synthesize an efficient program that meets these specifica- tions. FOP has been used to developproduct.lines in dispar- ate domains, including compilers for extensible Java dialects [3], fire support simulators for the U.S. Army [5], high-per- formance network protocols [1], and program verification tools [14]. 2 Overview Specifying non-software products via features is common. Familiar examples are found at the Dell or Gateway web sites where HTML pages provide simple declarative domain-specific languages (DSLs) for specifying custom- ized configurations of PCs (e.g., single or dual processor options, monitor options, disk options, etc.). A goal of FOP is to do the same for software products. GenVoca is a simple, powerful, and algebraic model of FOP. It is based on step-wise refinement (SWR), a methodology for building software by progressively adding details. SWR was abandoned by practitioners decades ago because the increment of programming detail, called a refinement, was so small (e.g., x+l ~ inc (x)) that hundreds or thousands of such refinements had to be composed to produce admit- tedly small programs. While the approach is fundamental and industrial infrastructures are being developed [7][13], GenVoca extends step-wise refinement by scaling refine- ments to a component or multi-class granularity, so that applications of significant complexity can be expressed by composing a few large-scale refinements called feature refinements. A feature refinement encapsulates the implementation of a feature. It is a modularization concept that is more general than traditional packages. In addition to encapsulating sets of complete classes, a feature refinement can also encapsulate fragments of multiple classes. Figure 1 depicts a package of three classes, cl--~3. Refinement rl cross-cuts these classes, i.e., it encapsulates fragments of ax--c3. The same holds for refinements r2 and r3. Composing refinements
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 2
This is the end of the preview. Sign up to access the rest of the document.

This document was uploaded on 07/25/2011.

Page1 / 2

A Tutorial on Feature Oriented Programming and...

This preview shows document pages 1 - 2. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online