T7 : Feature Oriented Programming
||Tuesday, March 15, 2005 morning (half day)
Don Batory, University of Texas at Austin
Attendees are not required to have special background
knowledge, but basic knowledge of aspect-oriented programming is
Feature Oriented Programming (FOP) is a design methodology and tools for
program synthesis. The goal is to specify a target program declaratively in
terms of the features that it offers, and to synthesize an efficient
implementation 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, network protocols,
and program verification tools.
AHEAD is a algebraic model of FOP that is based on stepwise development, a
methodology for building complex programs by adding one feature at a time. The
incremental units of design are program extensions that encapsulate the
implementation of an individual feature. An AHEAD model of a product-line is
an algebra: base programs are constants and program extensions are functions
(that add a specified feature to an input program). Application designs are
thus expressions---compositions of functions and constants---that are
amenable to optimization and analysis. Expression evaluation is
program synthesis. The distinguishing feature of FOP is that modular
reasoning is equated with algebraic reasoning.
AHEAD is at the confluence of many areas of research: aspect-oriented
programming (features implement "heterogeneous" crosscuts), compositional
programming (customized programs are synthesized via feature composition),
automatic programming (efficient programs are created by optimizing their FOP
expressions), compositional reasoning (solving problems of program design and
optimization by reasoning at the feature, not code, level), domain specific
languages (expressing programs in domain specific notations), and generative
programming (program synthesis).
This tutorial reviews the core results on FOP, including models and tools for
synthesizing a consistent set of code and non-code artifacts by composing
features (crosscuts), automatic algorithms for validating compositions,
synthesizing, and optimizing individual programs and tool suites.
Attendees will learn key results to the future of generative programming,
aspect-oriented software development, and automated software engineering.
Many of the ideas presented are generalizations of common techniques used in
object-oriented framework development and component-based software; common
abstractions are elevated to the level of algebraic operators and algebraic
manipulation, a form of program representation that is ideal for tools that
automate software development.
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
Edited by the AOSD Conference Committee. Send comments to: webmasteraosd.net