| ![]() | |||||||||
O. Nierstrasz, M. Papathomas 10
are not values: one may send an object id, or a value representing the state of the object, or even a value representing the behaviour of the object, but not the object itself. Since message contents are values, type-checking of communications can be handled in a more traditional way [8].
Two promising directions for further work are (1) to reconsider path expressions [7] as a means to describe abstract behaviour, perhaps along the lines of Procol [5], and (2) to use a restricted form of temporal logic [16] using abstract states to express the external behaviour of an object in terms of liveness and safety conditions. We are presently investigating the properties of interaction conformance, which characterizes agents in terms of their possible interactions with a set of observers [25].
6. Concluding Remarks
The clean integration of concurrency features into object-oriented languages is still an open problem. We have proposed a reference model for the design of concurrent object-oriented languages based on communicating agents, and we have presented a compact executable notation which can be used as a semantic target for language specification.
Although a large variety of powerful and expressive mechanisms have been proposed and included in various languages, it has proved difficult to devise an approach that is at once sufficiently powerful to easily express solutions to standard concurrency problems, and also minimizes the difficulties of reusing concurrent objects, whether by inheritance, or by other mechanisms for software composition. We claim that the majority of these problems result not so much from a particular choice of concurrency mechanisms as from a lack of good methods for encapsulating objects and specifying reuse criteria. To rectify this situation, we propose a new notion of object type that characterizes concurrent objects in terms of their externally visible behaviour.
We are working towards the design of a new generation of concurrent object-oriented language by:
? Identifying and attempting to resolve the key conflicts between concurrency and objectoriented software composition [26], [27].
? Continuing to use Abacus as a platform for exploring various models of concurrent objects [24].
? Developing a pattern language that will permit syntactic patterns to be bound to behavioural patterns in Abacus.
? Developing a polymorphic type model for concurrent objects that partially specifies the behaviour of objects in terms of safety and liveness conditions over interactions with clients [25].