
\sqzhuge\paragraph{Challenges for DRE applications.}
The development and use of middleware for distributed, real-time and
embedded applications has historically lagged behind that of enterprise
applications due to resource constraints, such as memory and performance,
and quality-of-service (QoS) requirements, such as bounded latency and
priority. Standard middleware, while greatly reducing the complexity
of distributed software development, usually sacrifices efficiency (in
both computational cost and resource utilization) in order to provide
high-level programming abstractions, operating system independence,
and object location transparency. DRE system developers, therefore,
rely on custom-programmed solutions to implement QoS properties
within resource constraints. 

DRE applications are becoming more widespread and important while, at
the same time, their complexity has grown dramatically. Furthermore,
DRE applications often comprise critical infrastructure, as in defense
computing systems and supervisory control and data acquisition (SCADA)
systems that manage regional power grids. For such systems, failures
can be catastrophic. Implementing custom-programmed applications for
these systems is labor-intensive and error-prone and has resulted in
increasing development costs. 

Due to the large time and financial investment made in large-scale,
mission-critical DRE systems, they are frequently maintained and
enhanced over many years. This exposes them to several key
risks. First, as OS and hardware platforms evolve, DRE systems face
obsolescence trends that force periodic software redevelopment and
reengineering. Second, organizations become reliant on a small group
of specialized software developers. Standardized middleware
architectures can help mitigate both these risks~\cite{O’Ryan,
Patterns and Performance of DRE Pub/Sub Architectures}. 

\sqzhuge\paragraph{Solution: Component middleware for DRE systems.}
Given the above challenges, it is clear that DRE system developers can
greatly benefit from specialized, QoS-enabled middleware. In
particular, standards-based {\em component middleware} has been shown
to improve the reusability and maintainability of software while
reducing development effort~\cite{???}. Therefore, a component
middleware package that addresses the needs of DRE systems would be
extremely useful. Unfortunately, common middleware services for RT
applications, such as fault-tolerance, have just begun to be enhanced
to support component-based applications. Widely-used component
middleware packages, such as the CORBA Component Model (CCM), Java 2
Enterprise Edition, and Microsoft .NET, provide little or no support
for DRE applications. 

