%%% $Id: intro.tex,v 1.15 2004/11/04 03:06:54 gokhale Exp $
\section{Introduction}
\label{intro}

\subsection*{Emerging Trends and Challenges}

Large-scale, distributed, performance-sensitive software (DPSS) systems
form the basis of mission- and often safety-critical applications,
such air traffic control, industrial process automation, nuclear
reactors, oil refineries, power grids, telecommunication networks,
inventory management systems and patient monitoring
systems. Figure~\ref{fig:motiv_examples} illustrates a sampling of
such DPSS systems. 

\begin{figure}[htb]
\vspace{-0.1in}
\center{\includegraphics[width=2.5in]{eps/motiv_examples.eps}}
\vspace{-0.1in}
\bfcaption{A Sampling of Large-scale Distributed Performance-sensitive
Software-based Systems}  
\label{fig:motiv_examples}
\vspace{-0.1in}
\end{figure}

% showcase salient features of DPSS systems
DPSS systems comprise many interdependent artifacts, such as
network/bus interconnects, many coordinated local and remote
endsystems, and multiple layers of software. DPSS systems demand
multiple simultaneous quality of service (QoS) properties including
predictability, controllability, and adaptability of operating
characteristics for applications with respect to such features as
time, quantity of information, accuracy, confidence, and
synchronization.  All these issues become highly volatile in
large-scale DPSS systems, due to the dynamic interplay of the many
interconnected parts that are often constructed from smaller parts.

% how are these open systems built and what we provide as solution
Although it is possible in theory to develop these types of complex
DPSS systems from scratch, contemporary economic and organizational
constraints, as well as increasingly complex requirements and
competitive pressures, make it infeasible to do so in
practice. A key enabler in recent successes with small- to
medium-scale DPSS systems (such as avionics mission computing or
enterprise warehouse management systems) has been {\em QoS-enabled
middleware}~\cite{Schmidt:01o}, as shown in Figure~\ref{fig:mw-layers}.

\begin{figure}[htb]
\begin{center}
\includegraphics[width=2.1in]{eps/mw-layers2.eps}
\bfcaption{Middleware Stack}
\label{fig:mw-layers}
\end{center}
\end{figure}

Middleware comprises software layers that provide platform\--independent
execution semantics and reusable services that coordinate how
application components are composed and interoperate.  The primary
role of middleware is to (1) functionally bridge the gap between
application programs and the lower-level hardware and software
infrastructure in order to coordinate how parts of applications are
connected and how they interoperate, (2) enable and simplify the
integration of components developed by multiple technology suppliers,
and (3) provide a common reusable accessibility for functionality and
patterns by factoring out artifacts from applications into reusable
code. 

% our vision
The flexibility and configurability offered by middleware is
manifested in the large number of reusable software building blocks
and configuration options, which can be used to compose and build large
systems end to end. These building blocks embody good design practices
called patterns~\cite{Vlissides:94,Schmidt:00a} and may often provide
similar functionality but are only suitable in specific operational
contexts. A usage of these frameworks in arbitrary contexts may lead
to significant performance overheads and may even impact the end
system's correctness. The magnitude and complexity of DPSS systems,  
thus, demands stringent quality control and testing. 

Today's {\em ad hoc}
techniques based on manually making the choices of the building blocks
to build DPSS systems are error-prone and adversely impact
performance, system costs and schedules, since most errors are caught
very late in the lifecycle of DPSS systems. It is desirable to
have the ability to analyze the performance of individual building
blocks and the composed system much earlier in the lifecycle of
DPSS systems thereby significantly lowering system testing costs as
well as improving correctness of the final developed systems. 

To address the challenges of performance evaluation of DPSS systems
design, this paper describes our research in 
applying the well-established modeling and analysis paradigm of
%JG: missing citation below
stochastic reward nets (SRNs)~\cite{evol-spn} to middleware building
blocks. In particular, we showcase our performance models on the
Reactor pattern~\cite{Schmidt:00a}, which is a synchronous event
demultiplexing and dispatching framework available in distributed
middleware technologies. 

\subsection*{Paper Organization}

This paper is organized as follows: 
Section~\ref{sec:challenges} elaborates on the technical challenges in
composing and developing the next generation of DPSS systems using
patterns-based building blocks, and provides background on the Reactor
pattern; Section~\ref{sec:srn_back} provides technical background on
the analytical techniques used to evaluate performance of
patterns-based design and provides related work;
Section~\ref{sec:reactor_perf} describes the 
process of constructing a Markov model for the Reactor pattern. 
It then describes how the different performance metrics could be
obtained by assigning appropriate reward rates to the states of
the model. The process of constructing the Markov model is used to
motivate the necessity of a high-level specification mechanism of SRNs
for the automatic 
generation of the Markov model. A SRN model of the Reactor pattern
is then presented, and through examples the use of
the SRN model to obtain the different performance measures is
illustrated; and finally Section~\ref{sec:conclusions}
discusses the insights gained through this exercise evaluating the
advantages and limitations of this approach. 
