Generating Members of a Software Product Line Using Combinatory Logic Public

Downloadable Content

open in viewer

A Product Line Family contains similar applications that differ only in the sets of sup-ported features from the family. To properly engineer these product lines, programmers design a common code base used by all members of the product line. The structure of this common code base is often an Object-Oriented (OO) framework, designed to contain the detailed domain-specific knowledge needed to implement these applications. However, these frameworks are often quite complex and implement detailed dynamic behavior with complex coordination among their classes. Extending an OO framework to realize a single product line instance is a unique exercise in OO programming. The ultimate goal is to develop a consistent approach, for managing all instances, which relies on configuration rather than programming. In this thesis, we show the novel application of Combinatory Logic to automatically syn-thesize correct product line members using higher-level code fragments specified by means of combinators. Using the same starting point of an OO framework, we show how to design a repository of combinators using FeatureIDE, an extensible framework for Feature-Oriented Software Development. We demonstrate a proof of concept using two different Java-based frameworks: a card solitaire framework and a multi-objective optimization algorithms framework. These case studies rely on LaunchPad, an Eclipse plugin developed at WPI that extends FeatureIDE. The broader impact of this work is that it enables framework designers to formally en-code the complex functional structure of an OO framework. Once this task is accomplished, then, generating product line instances becomes primarily a configuration process, which enables correct code to be generated by construction based on the combinatory logic.

  • English
  • etd-050415-151417
Defense date
  • 2015
Date created
  • 2015-05-04
Resource type
Rights statement


In Collection:


Permanent link to this page: