ct Feature Oriented Programming (FOP) is a design methodology 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 specifications. FOP has been used to develop product-lines in disparate domains, including compilers for extensible Java dialects [3], fire support simulators for the U.S. Army [5], high-performance 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 customized 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 b...
Don S. Batory