Distributed applications face far more restrictions imposed by
bad or varying system conditions than local applications. Thus
nonfunctional properties or quality-of-service aspects become more
important. For coping with scarce resources or other system
restrictions, applications need to know what their clients expect
and to dynamically decide on how the application's functionality is
We assume that distributed applications are built using distributed
objects which communicate with one another. The AspectIX
middleware now supports adaptable and QoS-aware distributed objects.
The clients of an object can express their requirements in terms
of quality or nonfunctional properties. The object can issue a guarantee
for fulfilling the requirements. The object implementation will
consider the current system conditions, the current state of
sub-ordinate objects acting as service provider, and the clients'
requirements for realizing its functionality. If an object can no longer
hold its issued guarantees it may adapt itself and eventually revoke
guarantees. This in turn may cause clients to adapt to the new
AspectIX is designed to be CORBA-compliant. Thus, ordinary
CORBA objects can be hosted on an AspectIX ORB, and remote
CORBA objects can be accessed from AspectIX.
As only for some special objects of an application the mentioned
requirements may be actually necessary an application can be
partially developed as pure CORBA application and only some
dedicated objects are treated as AspectIX objects.
Inside of an AspectIX object multiple quality implementations
may support the nonfunctional requirements expressed by a client.
As often the functional object implementation has to interact with
the quality implementations, object development is not an easy task.
AspectIX supports object developement by a developement
environment that can almost automatically integrate quality
implementations with functional code. The developement environment
is based on techniques known from aspect-oriented programming.
To address especially scalability, AspectIX introduces the
notion of policy-enabled systems. Strategic decisions are
mapped to policy rules and mechanisms which have to be strictly
separated from each other.
A policy decision engine considers rules from object
developers, application and domain administrator, and users
to find a decision that has to be executed by the object. With allowing
external entities to influence object-internal decisions in a
controlled way, we gain administrative scalability. Additionally,
the strict separation of policies and mechanisms supports reuse and
facilitates maintenance and system management.
As AspectIX objects are fragmented, i.e., different parts
of the same object reside on different locations, we investigate
how our architecture can be used in the context of traditional
mobile agents. It turns out that agents based on AspectIX
objects can be more flexible than traditional agents. Especially,
large agents can be built which is hardly possible with monolithic
agents, as the migration costs become too high. This research is
carried out in a sub-project called FOMAS
The innovative claims of the AspectIX projects are in detail:
Dynamic requirements of quality-of-service or other nonfunctional
properties by a client.
Dynamic object-internal adaptation to changing requirements and
varying system conditions.
Support for heterogeneous environments, e.g., hardware, operating
systems, and programming languages.
End-to-end quality-of-service from a client to an object implementation.
Support for arbitrary quality-of-service categories, especially
Support for maintainability and system management by strictly separating
policies from mechanisms.
Support for the integration of quality implementation into functional