Adaptive Product Line Design using Aspects and Design Patterns
Masters Thesis, University of Utah. May 2009.
In a software product line, the binding time of a feature is the time at which one decides to include or exclude a feature from a software product. In some cases, however, a product line must support features with variable binding times. For example, a middleware product line may need to include both embedded system configurations, in which features are selected and optimized early, and desktop configurations, in which client programs choose and activate features on demand.
We present a new technique for implementing the binding sites of features that must have flexible binding times. Typical binding site implementations are intended to support a single binding time only, e.g., compile time or run time. Our implementation technique is based on a combination of design patterns and aspect-oriented programming: a pattern encapsulates the point of variation, and targeted aspects—called edicts—set the binding times of the pattern participants. We describe our approach and demonstrate its usefulness in a middleware product line capable of serving the desktop and embedded domains. We show that our technique effectively modularizes binding-time concerns, supporting both compile-time optimization and run-time flexibility as needed.