% $Id: intro.tex,v 1.5 2006/04/11 03:57:24 gokhale Exp $

\section{Introduction}
\label{sec:intro}

An emerging class of enterprise distributed real-time and embedded
(DRE) systems, such as those found in aerospace, defense,
telecommunications and healthcare domains, are increasingly being
realized as compositions of loosely coupled, interacting services.
Each service is designed as an assembly of one or more components
implemented in potentially different languages and hosted on different
hardware and software platforms.  These DRE systems have stringent
quality of service (QoS) requirements both in terms of performance
attributes, such as low and bounded latencies, and dependability
attributes, such as high availability, reliability, and fast and
bounded fault detection and recovery timings. 

Advances in component middleware platforms, such as Enterprise Java
Beans~\cite{EJB:01} and the CORBA Component Model
(CCM)~\cite{CorbaComponents:02}, have made it possible to realize the
composable structure of these DRE systems.  Additionally, these
middleware provide effective reuse of the core intellectual property
(i.e., the "business logic") of an enterprise.  Although these
middleware platforms have several desired characteristics, they are
not yet suitable for providing the QoS guarantees, particularly fault
tolerance (FT), to the class of DRE systems we are interested in for
the following reasons: 

\vspace{-.1in}
\paragraph{Limitations of FT R\&D state of the art.}
% need citations - andy
A substantial amount of research in fault tolerant distributed
systems has predominantly concentrated on providing fault tolerance
solutions to intrinsically homogeneous, two-tier client-server systems
with request-response semantics or cluster-based server systems with
transactional semantics.  These research artifacts most often assume
single language, single platform systems, which when incorporated in
the middleware form point solutions, limit reuse and are too
restrictive for these DRE systems.  

\vspace{-.1in}
\paragraph{Lack of support for mix-mode FT semantics.}
DRE systems of interest to us require mix mode FT wherein parts of the
system may require ultra high availability calling for solutions that
require active replication while other parts of the systems may
demand passive forms of replication to overcome issues with
non-determinism.  Standardized solutions to fault tolerance, such as
FT-CORBA~\cite{CORBAService:99c}, provide a {\em one-size-fits-all}
approach, which do not support the mix-mode FT semantics required by
the DRE systems.  Moreover, these solutions do not seamlessly apply to
component-oriented systems.

\vspace{-.1in}
\paragraph{Lack of support for heterogeneity.} 
The current state of the art in component middleware do not yet
support multi-language (i.e., C++ and Java), multi-platform (i.e.,
CORBA and non-CORBA) and multi-paradigm (i.e., mix of component,
object, and procedural models) heterogeneity.  Existing solutions that
address this concern tend to become point solutions.

\medskip\noindent
There is thus a general lack of reusable, configurable and robust
middleware solutions that address the problems outlined above.  The
contributions of this paper are manifold.  We demonstrate how 
fault tolerance can be designed for mission critical DRE systems,
which have stringent, predictable requirements on fault detection and
recovery timings.  Our fault tolerance solution provides reusable
capabilities to handle DRE systems, which are multi-language; with
elements requiring different levels and types of fault tolerance (some
need constant availability, others less so); includes databases,
clients, servers, and client/\-servers; and a combination of CORBA
objects, CORBA components, and non-CORBA applications.

The rest of the paper is organized as follows:
Section~\ref{sec:challenges} describes the challenges in designing the
fault tolerance solutions for these DRE systems;
Section~\ref{sec:arch} describes the design and implementation choices
we made in our fault tolerant architecture; Section~\ref{sec:results}
describes experimental results; Section~\ref{sec:relwork} describes
related research; and Section~\ref{sec:conclusions} provides
concluding remarks and future research. 

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "middleware-2006"
%%% End: 
