The MetaProgramming Graphics Processor (MGP) extends the representation of the concepts of metaprogramming and Abstraction-based Reuse from a text-only form (as expressed in the MTP notation) into a graphically-based form. Just as MTP allows the nesting of text Adaptable Components, MGP allows the nesting of graphical components as well as of text components within graphical components. The resulting adaptable structure is then tailorable into a consistent integrated collection of hybrid graphical-text work products. (Readers not familiar with the MTP notation may first want to get an understanding of the mechanisms it provides for the definition and instantiation of text-based families as background before looking further at MGP.)
The current MGP prototype is very limited in the target form of graphical content supported, essentially to a simple structure of arc-connected nodes. However, accommodating greater variety of graphical forms is not the focus of this effort but rather it is how to associated adaptability with these graphical forms in a useful way. The goal is to be able to provide a useable means for generating different instances of a family represented in general graphical-text form rather than only text form which has been a basic limitation from the beginning of product lines.
The approach for this prototype has been to create a mechanism that makes all of the means of describing and applying adaptability that MTP provides but within a direct manipulation graphical framework. The features of MGP are:
- The base form of an MGP adaptable product is a graph, consisting of a set of nodes and links identifying any parent-child relationships among the nodes, and an associated set of decisions that can be used to extend the graph to represent a family of similar graphs.
- The MGP tool has two distinct operating modes corresponding to the two engineering activities of the DsE process, domain engineering and application engineering:
![]()
These two modes are identified in MGP as "Edit Family" and "Generate Instance":
- "Edit Family" is MGP's domain engineering mode. It supports specifying a Decision Model (a set of decisions that characterize the variability associated with a family of products) and constructing the product family, represented as an adaptable graph whose nodes are Adaptable Components, with which the Decision Model is associated.
- "Generate Instance" is MGP's application engineering mode. It supports setting Decision values (i.e., creating an Application Model that characterizes a specific product) and generating the specific product that results from applying the Application Model to the product family.
{The following needs to be revised to use javaws in .jnlp form (vs a Java applet) as described in Adaptable component examples}
Help text provides detailed instructions for viewing the various features of the MGP prototype which is a Java applet. To execute the prototype following these instructions, select MGPp which will open the tool in a new browser window.