Towards Resource-Aware Runtime Reconfigurable Component-Based Systems Ionut David, Bojan Orlic, Rudolf H. Mak, Johan J. Lukkien Department of Mathematics and Computer Science, Eindhoven University of Technology, P.O. Box 513, 5600 MB, Eindhoven, the Netherlands i.david@tue.nl, b.orlic@tue.nl, r.h.mak@tue.nl, j.j.lukkien@tue.nl Abstract— The overall Quality of Service (QoS) delivered by a system depends on the resources available to its constituting components. Achieving predictable QoS behaviour therefore requires a resource-aware component framework. Moreover, for applications that exhibit highly fluctuating loads and that have to compete for resources at runtime, the framework must also allow dynamic reconfiguration. The goal of this paper is to explore some basic principles and architectural choices for building such a resource-aware component framework that allow predictable composition of a system from distributed components. Major features of the envisioned framework are: wrapping components into networked services, automated extension of those services with resource management, and runtime third-party composition of the networked services. 1 Keywords— components, networked services, runtime composition, resource awareness, QoS, dynamic reconfiguration I. INTRODUCTION According to [1] a software component “is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to compositions by third parties”. The idea behind component-based software engineering is to facilitate building of complex systems from predefined building blocks, as is common practice in many other engineering disciplines. Introducing reusability at the level of components raises the abstraction level and enables third-party composition in the process of system engineering. We target those component-based applications that are executed on resource-constrained platforms (in terms of processing power, memory capacity and network bandwidth). In addition, besides functional requirements, the resulting system is expected to satisfy non-functional requirements like timelines, performance, availability, reliability, graceful degradation of QoS, and fault-tolerance. There are various ways in which a system can respond to changes in resource availability (due to node or network failure) or resource demand (due to the introduction of new activities). In order of increasing severity, we distinguish: QoS-adaptation in which component service levels are adjusted to local resource availability, reallocation in which components are migrated to nodes that better fit their resource demands, reconstruction of 1 This research is funded partially from the ViCoMo project (ITEA2~08009). system topology in which components are replicated, replaced, or deleted to improve overall resource usage and QoS. Classical component frameworks such as CORBA Component Model [2], Enterprise JavaBeans [3] and DCOM [4], or service frameworks such as OSGi [5] provide no or only limited support for QoS and QoS differentiation [6] and dynamic reconfiguration of distributed systems. Typically, these frameworks also lack proper facilities for supervising and managing resource usage. Building a dynamically reconfigurable distributed application using any of these frameworks implies that support for reconfiguration is to be implemented by the developer in a custom way. Our goal is to develop a resource-aware component framework that supports building predictable multimedia processing applications running on a distributed platform with heterogeneous nodes. This work will be done in the context of the ViCoMo [7] project, which is concerned with Video Context Modelling applications in the area of, for instance, surveillance and transport logistics. Hence, its application domain is an ideal target for the framework we envision. In the development of our framework we will build on work done in the CANTATA [8] project, where we have addressed resource awareness on a single platform through the development of resource management components. In ViCoMo this will be extended to distributed systems. II. ANALYSIS Multimedia processing applications are commonly struc- tured as a pipeline of resource-intensive components, where resource demands tend to be high and/or highly fluctuating. Figure 1 introduces an example of a surveillance application. Fig. 1 An example of video processing application The focus of component-based development and composition can be during program construction, as in MS