% $Id: Introduction.tex,v 1.18 2005/10/18 16:27:53 arvindk Exp $
\sqzlarge
\section {Introduction}
\label{intro}

\sqzlarge\paragraph* {\bf Emerging trends \& challenges}
\iffalse
Software development organizations must innovate rapidly, provide
capabilities that meet user needs, and sustain their competitive
advantage in the face of time-to-market pressures and limited software
resources.
\fi
\iffalse
As a result, many organizations are trying to reuse
existing artifacts and resources for a range of products, rather than
handcrafting software for each product from scratch.
\fi
{\em Product-line architectures} (PLA\-s)~\cite{Parnas:76,Clements:02}
are a promising technology for systematically addressing the
challenges of large-scale software systems.  In contrast to
conventional software processes that produce separate point solutions,
PLA-based processes create families of {\em product
variants}~\cite{Sharp:98} that share a common set of capabilities,
patterns, and architectural styles.  PLAs can be characterized using
{\em scope, commonality, and variabilities} (SCV)
analysis~\cite{Weiss:98}, which is an engineering process that
identifies the scope of the product families in an application domain
and then determines the common and variable properties among them.
\iffalse
Domain/\-systems engineers and software architects use SCV analysis to
guide decisions about where and how to address possible variability
and where the common development strategies can be used.
\fi

PLAs have been created and applied to a variety of
domains~\cite{Ommering:00,Greenfield:04}, including the domain of {\em
distributed, real-time and embedded (DRE)
systems}~\cite{Sharp:98,Doerr:99,Sharp:03}.  Examples of DRE systems
include applications with hard real-time requirements, such as
avionics mission computing~\cite{Wendy:03}, as well as those with
softer real-time requirements, such as telecommunication call
processing and streaming video~\cite{Schmidt:98v}.
\iffalse
These DRE
systems are characterized by their stringent QoS requirements (such as
low memory footprint, power consumption, latency, and predictability),
which often makes them harder to develop, maintain, and evolve than
conventional desktop and enterprise software.
\fi
The QoS challenges (such as low memory footprint, latency, and
predictability) of DRE systems have hitherto led developers to
(re)invent custom applications that are tightly coupled to specific
hardware/\-software platforms, which is tedious, error-prone, and
costly to evolve over product lifecycles.  During the past decade,
therefore, a key technology for alleviating the tight coupling between
applications and their underlying platforms has been {\em middleware},
which (1) functionally bridges the gap between applications and
platforms, (2) controls many aspects of end-to-end QoS, and (3)
simplifies the integration of components developed by multiple
technology suppliers.

Although middleware has been used successfully in DRE
systems~\cite{Sharp:98,Doerr:99,Sharp:03,Wendy:03}, key challenges
must be overcome before it can be applied broadly to support the QoS
needs of {\em PLA-based} DRE systems.  In particular, R\&D is needed
to help resolve the tension between (1) the {\em generality of
standards-based middleware platforms}, which benefit from reusable
architectures designed to satisfy a broad range of application
requirements, and (2) {\em application-specific product variants},
which benefit from highly-optimized, custom middleware
implementations.  In resolving this tension, solutions should ideally
retain the portability and interoperability afforded by standard
middleware.

\sqzlarge\paragraph* {\bf Specializing Middleware for PLAs} This paper
extends our earlier work on general-purpose middleware
optimizations~\cite{Schmidt:98v,Schmidt:99h,Schmidt:02r} by
describing the results of developing and applying a toolkit to help
resolve key aspects of the generality/\-specificity tension outlined
above.  This toolkit automates the {\em
specialization}~\cite{daugherty:04} of general-purpose,
standards-based middleware to meet the needs of specific PLA-based DRE
systems.  This paper provides the following research contributions:

\sqztiny
\begin{enumerate}\crunchlist

\item We use a representative PLA case study to identify key
dimensions of {\em excessive generality} in standards-based
middleware, focusing on Real-time CORBA~\cite{RTCorba:02}, which is
standard middleware used in Boeing Bold
Stroke~\cite{Sharp:98,Sharp:03,Wendy:03}, which is a PLA-based DRE
system in the domain of avionics mission computing.

\item We show how {\em context-specific specialization
techniques}~\cite{Hatcliff:98} (such as code
refactoring~\cite{Fowler:99}, and code
weaving~\cite{zhang03refactoring}) can be used to customize the widely
used TAO~\cite{Schmidt:97q} Real-time CORBA implementation to remove
excessive generality and thus better support application-specific QoS
needs of PLA-based DRE systems, such as Bold Stroke.

\item We describe the design of a domain-specific language, tools, and
a process for {\em automating the specialization techniques} discussed
in the paper.

\item We present and analyze {\em quantitative results} that
demonstrate the improvement in performance and predictability of
specializations applied to TAO in the context of our PLA case study.
\end{enumerate}

\sqztiny
\noindent Our results show that specialization techniques
guided by context-specific information can significantly improve the
QoS of a standa\-r\-ds-based middleware implementation that has already
been optimized extensively via general-purpose techniques.

\sqzlarge\paragraph* {\bf Paper organization} The remainder of the
paper is organized as follows: Section~\ref{challenges} identifies key
middleware specialization challenges pertaining to PLA-based DRE
systems; Section~\ref{mw-spl-solution} explains how context-specific
specializations of middleware help address these challenges and
describes our techniques and tools for automating the specializations;
Section~\ref{spl-to-tao} examines the results of experiments conducted
to validate our approach; Section~\ref{related} compares our work with
related research; and Section~\ref{conclusions} presents concluding
remarks and summarizes lessons learned.
