program       registration       lodging       call for contributions       organization       [aosd home]

overview       technical papers       practitioner reports       workshops       tutorials       demos       exhibits      
Go back to Tutorials Home

T7: Feature Oriented Programming for Product-Lines

  - Don Batory, University of Texas at Austin

Date: Tuesday, March 18, afternoon (half day)

Level: Introductory

Attendees should have basic knowledge of Java or other object-oriented programming languages. No prior experience with feature oriented programming is required.


Feature Oriented Programming (FOP) is both a design methodology and supporting 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 widely varying domains, including compilers for extensible Java dialects, fire support simulators for the U.S. Army, high-performance network protocols, and program verification tools.

GenVoca is a simple mathematical model of FOP that is based on step-wise refinement, a methodology for building programs by adding one feature at a time. The incremental units of implementation/design are refinements that encapsulate the implementation of an individual feature. GenVoca models of product-lines treat programs as values and refinements as functions (that map input programs to output programs with augmented features). Application designs are equations --- compositions of functions and constants --- that are amenable to optimization and analysis.

FOP and Aspect Oriented Programming (AOP) are complementary, as both aspects and feature refinements encapsulate cross-cuts, i.e., fragments of multiple classes. The primary difference is emphasis: FOP follows more of a traditional OO design approach to define cross-cuts, which focuses on how algorithms compose to build complete systems, rather than the AOP emphasis on join-points, point-cuts, and advice to modify existing programs.

This tutorial reviews basic results on FOP, including general models and tools for synthesizing a consistent set of code and non-code artifacts by composing refinements (cross-cuts), automatic algorithms for validating refinement compositions, synthesizing product-lines of product-families (e.g., tool suites), and automatic algorithms for optimizing application designs (equations).


Don Batory holds the David Bruton Centennial Professorship at The University of Texas at Austin. He received a B.S. (1975) and M.Sc. (1977) degrees from Case Institute of Technology, and a Ph.D. (1980) from the University of Toronto. He was a faculty member at the University of Florida in 1981 before he joined the Department of Computer Sciences at the University of Texas in 1983. He was an Associate Editor of IEEE Transactions on Software Engineering (1999-2002), Associate Editor of ACM Transactions on Database Systems (1986-1992), a member of the ACM Software Systems Award Committee (1989-1993; Committee Chairman in 1992), Program Co-Chair for the 2002 Generative Programming and Component Engineering Conference, the Program Chair for the 1995 International Conference on Software Reuse, and the 1999 Workshop on Software Reuse. He has given numerous lectures and tutorials on product-line architectures, generators, and reuse, and is an industry consultant on product-lines.


For additional information, clarifications, questions, or special requirements, please contact the AOSD 2003 Tutorial Chair: Eric Eide (

 Send comments to: