%$Id: stepIII.tex 16757 2009-02-09 05:03:03Z gokhale $
\sqztiny
\sqzsmall
\subsection{Step III: Synthesizing a Specialization Repository}
\label{sec:sprepo}
\sqztiny
In the next step, transformation developers use the generated VMM 
to create VMM model instances, where each VMM model corresponds to a
family member (or more appropriately, variabilities of a family
member).  A collection of such VMM models for a family is called a
specialization repository.  This step is akin to the process of providing
functors in C++ templates.  For example, in a parametrized C++
sort function, programmers are required to supply explicit instantiation
of the $\leq$ operator for all the user-defined types for which the sort
function is specialized. 
% For example, in our QoS configuration case
% study case study, the specialization repository contains a distinct VMM
% model for every configuration.  The aggregate of all the VMM models
% collectively contain variabilities of all the family members.

Figure~\ref{fig:vmm-model} shows a sample VMM model that instantiates
the quantitative variability in terms of exact values of the 
\texttt{RT\-Re\-qu\-ir\-em\-ent} and \texttt{La\-ne} attributes.  Note
that because the exact values are now specified as models rather than
being encoded in terms of transformation rules, it is considerably
easier to modify these values.  Additionally, none of the rules are
modified to change an existing mapping, and hence the transformation
logic need not be re-compiled and linked.  This step enables creating as
many model instances as the quantitative variability permits without
having to modify the rules.   

\begin{figure}[htb] 
\centering
\includegraphics[width=0.85\textwidth,keepaspectratio]{vmm-model}
\bfcaption{A Sample VMM model for a Variant of QoS Configuration Case Study.} 
\label{fig:vmm-model}
\vspace{-0.1in}
\end{figure}

