\message{ !name(intro.tex)}
\message{ !name(intro.tex) !offset(-2) }
% $Id: intro.tex 15065 2008-10-21 02:07:44Z amoghk $
\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
configuration of the component middleware that hosts the application
components. 

In component middleware, such as CORBA Component Model (CCM) and
Enterprise Java Beans (EJB), a container is a central concept that hosts
application components.  In the context of DRE systems, containers
provide a high degree of configurability in that they allow (1) choosing
the number of thread resources to be configured for each component,
their type (\emph{i.e.}, static or dynamic), and attributes such as
stacksize, etc., (2) control over asynchronous event communication, and
the publisher/subscriber event filtering and delivery options, and (3)
set the 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 of the
many factors that determine 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 deployted; (2)
node assignment~\cite{Rajkumar:05} and resource
allocations~\cite{Rajkumar:06}, (3) model-based QoS provisioning of DRE
systems~\cite{Ritter:03,QCompiler:03,Frolund:98}, and (4) 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 aspect of DRE system software
architectures.  For example, although bin packing
algorithms~\cite{Rajkumar:05} make effective decisions on component
deployment and schedulability analysis indicates the priorities at which
the components should execute, 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 may lead to suboptimal runtime QoS since these decisions are
now left to application developers.

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

Two significant benefits are accrued from our approach. First, by
realizing the hueristic-based algorithm as an automated model
transformation process, it can be seamlessly reapplied and reused during
the iterative DRE system development process.  Secondly, 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.

\message{ !name(intro.tex) !offset(-94) }
