%%% $Id: intro.tex,v 1.2 2005/05/08 18:48:44 gokhale Exp $
%% Will the introduction remain more or less the same?
% Swapna, I think so with some ubiquitous computing focus maybe
\section{Introduction}
\label{intro}
Society is increasingly dependent on capabilities provided by
distributed software applications that enable critical services
(e.g., electric power grid, air traffic control, mobile communications).
Due to the growing reliance of our daily activities on these services, 
efficient and reliable operation of the applications that provide these
services is crucial.  A number of these applications are event-driven
software systems~\cite{Liu:00}.  The event-driven
style constitutes a provider/listener model~\cite{garlan93}, 
where the application listens for service requests or ``events'' and 
provides the necessary services in response to these requests
or events.  Event-driven systems provide many advantages, the
most prominent advantage being evolvability, which is enabled by the 
separation of event demultiplexing and dispatching from event
handling. Although the handling of events is specific to 
the services provided by the application, the event demultiplexing and
dispatching functionality is more or less uniform across all the
applications that follow the event-driven style, and can be codified
into a reusable building block or a pattern~\cite{Vlissides:94}.  The
{\em Reactor} pattern~\cite{Schmidt:00a} embodies the demultiplexing
and dispatching capabilities that could be reused to facilitate the
development of event-driven applications. 

It is a well-known fact that it is important to analyze the 
performance of an application starting from the early phases
of the life cycle~\cite{bbook-new}.  Moreover, pure performance analysis, 
which does not consider application failures leads 
to optimistic performance estimates. Thus, it is important to consider
application failures during performance analysis in order to
provide realistic ``performability'' estimates~\cite{smith90}. Design-time 
performance analysis is almost invariably based on a model
that represents application behavior. As a result, in order
to enable model-based performance analysis of 
event-driven applications, it is necessary to
build a model of the underlying event demultiplexing framework that is
ubiquitous in such applications.

In this paper we present a performability model of the reactor 
pattern, which provides the event demultiplexing and dispatching
capabilities. The model is based on the Stochastic Reward Net
(SRN)~\cite{evol-spn} modeling paradigm. In addition to the 
event demultiplexing capabilities, the model also considers
application failures during event handling. We consider the
applications which provide productivity enhancing services 
on mobile handhelds as the guiding examples of 
event-driven systems. Such applications can leverage the 
reactor pattern for their design and implementation. We illustrate 
how the SRN model of the reactor pattern could be used for 
the performability analysis of the service provided by such applications.
We also discuss how the performability analysis process can be 
scaled using a model-driven framework. The framework also enables 
the automation of the process so that it can be easily used by
software architects and designers who may be non experts in the 
performability analysis tools and techniques.  

This paper is organized as follows: Section~\ref{sec:event_patterns}
describes the applications that may reside on mobile handheld devices
that illustrate the event-driven features; 
Section~\ref{sec:reactor_perf} discusses the process
building a performability model of the reactor
pattern using the SRN modeling paradigm; 
Section~\ref{sec:vr_perf} illustrates how the SRN model could
be used for the performability analysis of the services provided
by applications on the mobile devices; Section~\ref{sec:mdd}
describes how the performability analysis process could be scaled
and automated using a model-driven framework and finally
Section~\ref{sec:conclusions} provides concluding remarks outlining
the lessons learned from this study, as well as directions for future
research.
