Aspects are introduced to object technology by [Richardson/Schwarz] in terms of multiple, independent roles that can be played by an object. This concept includes object extension at runtime and the distinction between two kinds of identity.
Aspectual components as introduced by [Lieberherr+] encapsulate a set of classes in a participant graph (aspect) which can be attach to the class graph of a system using a connector. The focus on components as opposed to classes allows to capture complex object interaction as aspects. Yet connectors and participant instances are not first class citizens. They are not intended for dynamical instantiation and use at the application level.
Our contribution adds the played-by relationship to aspectual components
as a dynamic relationship. Connectors become first class entities,
in that connectors are now instantiatable. The participant graph of an
aspect is superimposed on an object graph only at run time when a new
connector instance is created. Connector creation potentially creates
a graph of participant objects that can be distinguished from the
underlying pure objects.
Connecting components with different interfaces requires complex
adaptors that are realized as connectors between participant
graphs and class graphs.
In order to allow for different patterns of mapping, appropriate language
constructs are needed. Mappings are based on classes and association-roles
providing:
Our concepts are proven useful by application to our Software Engineering Environment (SEE) PIROL.
Already previous versions of PIROL introduced a separation of
Repository Objects (ROs) and Conceptual Objects (COs) in order to
distinguish the semantical information of the environment's meta
model from pure presentation information.
So in PIROL a diagram is a CO that superimposes layout information onto
the model proper. Elements may appear in different diagrams. Even
different diagrams of the same model are possible.
COs are implemented as mappings from ROs to property lists.
This simulates the dynamic addition of attributes to ROs. This
technique is fully functional and enables different tools to share
common information while ignoring foreign presentation information.
Yet the explicit use of COs lacks some elegance and requires all tools
to be written in a CO-aware fashion.
Be adding dynamic aspect connectors to PIROL we are now able to simulate a modified meta model to each tool, containing model- and presentation-information within the same objects, without loosing this separation at the repository level. Possibly the greatest benefit is the decoupling of the meta model and different views of it: All models can now be developed independently:
Implementation of this concept is quite straight forward when using PIROL's ROs and COs: a CO is encapsulated by a connector-instance and a set of participant objects. Each participant object is identified by a composite object identifier (RO-id, CO-id), ie. each CO defines a context in which the RO plays a certain role.
Dynamic aspect connectors elegantly implement multiple views of an SEE and allow for a-posteriori integration of tools into an environment with a given meta model.