In order to make QoS considerations an integral part of the design process, design notations must provide the appropriate language concepts. We have already presented a textual syntax to define QoS properties. Here, we extend UML [] to support the definition of QoS properties. Later, we will use CORBA IDL [] and our extension of UML [] to describe an example design that includes QoS specifications.
In UML, classes are represented by rectangles. In addition, UML has a type concept that is used to describe abstractions without providing an implementation. Types are drawn as classes with a type stereotype annotation added to it. In UML, classes may implement types. The UML interface concept is a specialized usage of types. Interfaces can be drawn as small circles that can be connected to class symbols. A class can use or provide a service specified by an interface. The example below shows a client using (dotted arrow) a service specified by an interface called I. We also show a class Implementation implementing the I interface but in this example the interface circle has been expanded to a class symbol with the type annotation.
Our extension to UML allows QoS profiles to be associated with uses and implements relationships between classes and interfaces. A reference to a profile is drawn as a rectangle with a dotted border within which the profile name is written. This profile box is then associated with a uses or implements relationship.
In example 15 , the client requires a server that implements the interface I and satisfies the QoS requirements stated in the associated RequiredProfile . The Implementation on the other hand promises to implement interface I with the QoS properties defined by the ProvidedProfile profile. The profiles are defined textually using our QoS specification language.
Our UML extension allows object-oriented design to be annotated with profile names that refer to separately defined QoS profiles. Notice that our UML extension associates profiles with specific implementations and usages of interfaces. This allows different clients of the same interface to require different QoS properties, and it allows different implementations of the same interface to provide different QoS properties.