Distributed object middleware, such as CORBA, hides system- and network-specific characteristics of objects behind functional
interface specifications. This simplifies development and maintenance of distributed objects, contributing to their growing
acceptance. Critical applications have Quality of Service (QoS) requirements, however, such as real-time performance, dependability,
or security, that are hidden by middleware. Because of this, application developers often bypass distributed object systems,
thus gaining little or no advantage from the middleware. We have developed Quality Objects (QuO), a framework for developing
distributed applications with QoS requirements. QuO provides a set of aspect languages, called Quality Description Languages
(QDL), for specifying possible QoS states, the system resources and mechanisms for measuring and controlling QoS, and behavior
for adapting to changing levels of available QoS at runtime. This paper describes QuO’s aspect languages, their usage, and
how they interact with the QuO runtime system to form the QuO framework.