A holy grail of component-based software engineering is "write-once, reuse everywhere". However, in modern distributed, component-based systems supporting emerging application areas such as service-oriented e-business (where web services are viewed as components) and Peer-to-Peer computing, this is difficult. Non-functional requirements (related to qualityof-service (QoS) issues such as security, reliability, and performance) vary with deployment context, and sometimes even at run-time, complicating the task of re-using components. In this paper, we present a middleware-based approach to managing dynamically changing QoS requirements of components. Policies are used to advertise non-functional capabilities and vary at run-time with operating conditions. We also provide middleware enhancements to match, interpret, and mediate QoS requirements of clients and servers at deployment time and/or runtime.
Eric Wohlstadter, Stefan Tai, Thomas A. Mikalsen,