% $Id: relwork.tex,v 1.2 2006/02/12 07:14:15 dkaul Exp $


\section{Related Work}
\label{sec:relwork}

With the growing complexity of component-based systems, composing 
system-level performance and dependability attributes using the component
attributes and system architecture is gaining attention.  Crnkovic
{\em et al.}~\cite{crnkovic05} classify the quality attributes 
according to the possibility of predicting the attributes of the
compositions based on the attributes of the components and the 
influence of other factors such as the architecture and the 
environment.  However, they do not propose any methods for composing 
the system-level attributes. 

At the model-driven development and program transformation level, 
the work by Shen and Petriu~\cite{Petriu_MODELS05} investigated the use
of aspect-oriented modeling techniques to address performance concerns
that are weaved into a primary UML model of functional behavior.  It has 
been observed that an improved separation of the performance description
from the core behavior enables various design alternatives to be considerd
more readily (i.e., after separation, a specific peformance concern can be
represented as a variability measure that can be modified to examine the
overall systemic effect).  The performance concerns are specified in the 
UML profile for Schedulability, Performance, and Time (SPT) with underlying 
analysis performed by a Layered Queueing Network (LQN) solver.  

A disadvantage of the approach is that UML forces a specific modeling
language.  The SPT profiles also forces performance concerns to be
specified in a manner than limits the ability to be tailored to a
specific performance analysis methodology.  As an alternative,
domain-specific modeling supports the ability to provide a model
engineer with a notation that fits the domain of interest, which
improves the level of abstraction of the performance modeling
process.  Our work falls in the category of developing domain-specific
models. 

There have been efforts to evaluate the performance of middleware
patterns analytically by various researchers
\cite{akogekar:ngs05},\cite{akogekar:ramani00}. A drawback of using
analytical models is that it is difficult to predict the behavior of a
complex system based on analytical methods alone.  Harkema, {\em{et
    al}}~\cite{akogekar:harkema-SPECTS04} have worked on the 
performance evaluation of the CORBA method invocation and threading
models. However, they have not focused on the pattern-based approach
toward the performance analysis of middleware. Model-driven techniques
are increasingly being used for middleware development, but converting
static pattern-based middleware models into simulation models for the
purpose of performance evaluation has not yet been a focus of research
in the research community.  

There are various specialization techniques described in literature,
which can be leveraged to specialize middleware.  For example,
Feature-Oriented Programming (FOP)~\cite{dk:Batory} is an appropriate
technique to design and implement program families, and which uses 
incremental and stepwise refinement approaches~\cite{dk:Batory,dk:Olaf}.
FOP aims to cope with the increasing complexity and increasing lack
of reusability and customizability of contemporary software systems.
Aspect-Oriented Programming (AOP)~\cite{dk:Kiczales} is another related
programming paradigm and has similar goals: It focuses primarily on
separating and encapsulating  crosscutting concerns to increase
maintainability, understandability, and customizability. However, it
does not focus explicitly on incremental designs or program
families. 
Aspect-Oriented Programming can change an existing functionality
without refactoring of code, addresses concerns with minimum coupling, 
makes it reusable and implements no hierarchy refinements. These features 
of AOP can lead to error free and efficient code. It can prevent code 
clutter, tangling and scattering and makes it easy to add new functionality 
by creating new aspects. New features or behavior can be added at any stage 
of development thus relieving the developer of committing to under/over 
design. So an unknown functionality which cannot be predicted ahead of time 
is not a problem.

These characteristics of AOP can be leveraged to create an
implementation that is easier to design, understand, and maintain
resulting in higher productivity, improved quality, and better ability
to implement newer features. We therefore leverage these capabilities
of AOP as a middleware specialization technique for product lines.  

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "JVLC06"
%%% End: 
