% $Id: intro.tex 16889 2009-02-21 03:51:46Z gokhale $
\section{Introduction}
\label{sec:intro}
Component-based software engineering (CBSE) has received much attention
over the past few years to develop distributed systems including
distributed, real-time, and embedded (DRE) systems, such as emergency
response systems, aircraft navigation and command supervisory systems,
and total shipboard computing systems.  CBSE provides a simplified
programming model and various mechanisms to separate functional and
non-functional concerns of the system being designed, which lends it to
rapid prototyping, (re-) configuration, and easier maintenance of DRE
systems.

DRE systems have stringent runtime quality of service (QoS) requirements
including predictable end-to-end latencies, reliability and security,
among others.  Naturally, the software architecture of the DRE system
plays an important role in ensuring that the runtime QoS needs of DRE
systems are met.  In component-based DRE systems, the software
architecture is defined not just by the source code of the application
functionality but also by a wide range of systemic issues including the
assembly of application components, their deployment on the target nodes
of the system and allocation of resources such as the CPU, and the
component middleware that hosts the application components. 

In component middleware, such as the CORBA Component Model (CCM) and
Enterprise Java Beans (EJB), a container is a central concept that hosts
application components.  Containers hosting DRE system components 
provide a high degree of configurability by allowing (1) the choice of
the number of thread resources to be configured for each component, 
their type (\emph{i.e.}, static or dynamic), and their attributes, such
as stacksize, etc., (2) control over asynchronous event communication,
and event filtering and delivery options, and (3) control over client
request invocation priorities on the server component.   The
\emph{configuration space} -- identified by all the mechanisms for
specifying system QoS and their appropriate values -- becomes highly 
complex.  Thus, making the right configuration decisions is one key
factor that determines the quality of the DRE system software
architecture.

Prior research in improving the quality of DRE systems software
architectures has focused on: (1) analysis-driven
decomposition~\cite{Hatcliff:03} of DRE system functionality into
reusable application components that can be assembled and deployed; (2)
component-to-node assignment~\cite{Rajkumar:05} and resource
allocations~\cite{Rajkumar:06}, and (3) schedulability and timing
analysis~\cite{VEST:03,Zonghua:04} to determine exact priorities and
time periods for applications, which help in partitioning the system
resources and configuring the middleware.

Despite these advances, key issues still remain unresolved in the
deployment and configuration problem space of DRE system software
architectures.  For example, although bin packing
algorithms~\cite{Rajkumar:05} make effective decisions on component 
deployment, and schedulability analysis determines the priorities at
which the components should execute, both these decisions are at best
coarse-grained since they determine only the nodes on which the
components must be deployed but do not indicate how they are deployed
within the containers of the component middleware.  The lack of
finer-grained decisions often lead to suboptimal runtime QoS since these
decisions are now left to application developers, who are domain experts
but often lack detail understanding of the middleware.

To address these limitations, this paper presents a heuristics-based
algorithm implemented within a
model-transformation~\cite{GTBook:97,Sendall:03}  framework that
combines models of user-specified QoS requirements, node assignment
decisions, and priority values, and transforms them into optimal 
middleware configurations thereby enhancing the quality of the DRE
system software architecture.  Our research prototype has been
implemented using the GReAT~\cite{Karsai:03} model transformation
framework for the Lightweight CCM (LwCCM)~\cite{LWCCM} middleware.

Two significant benefits accrue from our approach.  First, by realizing
the heuristic-based algorithm as an automated model transformation
process, it can be seamlessly reapplied and reused during the iterative
DRE system development process.  Second, the configurations generated by
our algorithm can be leveraged by additional backend optimization tools
and techniques, such as the Physical Assembly Mapper
(PAM)~\cite{Schmidt:08e} which reduces time and space overheads by
merging collocated components at system deployment-time. 

This paper is organized as follows: Section~\ref{sec:chal} discusses the
challenges developers face in achieving optimal QoS configuration for
DRE systems;  Section~\ref{sec:sol} presents the overall approach taken,
the enabling technologies  used in our technique, and the model
transformation algorithm  we have developed; Section~\ref{sec:results}
empirically evaluates our approach in the context of a representative
case study;  Section~\ref{sec:related}  discusses the related work in
the area;  Section~\ref{sec:conclusion} gives concluding remarks.


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