next up previous
Next: Structure Up: main Previous: Token Ring Protocol


Discussion

Using the common language we were able to model the PGM (Pretty Good Multicast) protocol, one of the case studies considered in the ADVANCE project. The starting point is an SDL specification made by France Télécom R&D. We managed to manually translate this SDL specification into our common language and, to improve it in several respects. For example, we constructed an entirely parameterized specification with respect to the number of components involved in the protocol. Also, we simplified its control structure and also the data types definition.

Nevertheless, some key features are still missing in the common language definition. For example, there is a limited support to describe the system topology. For example, in the token ring protocol we specify that stations may communicate each other through link signalroutes but nothing is said about the ring structure. This information is coded inside station definition e.g, each one computing its successor based on its process identifier. We encounter the same problem in PGM, where the tree structure of the protocol is coded in the components definition (i.e, routers, receivers, etc.).

Another missing feature are quantifiers (existential, universal) in expressions. Quantifiers are really powerful operators allowing to write easily complex conditions, for example, if there exists some process instance such that..., or if for all elements of an array holds..., etc. At this time, we did not include them in the language because of pragmatic reasons, in particular, the difficulty of evaluation at runtime. Nevertheless, we plan to include them in the final version of the language.

From a practical point of view, we are currently upgrading the IF environment to the new description language IF-2.0. In particular, we build an enumerative simulator, implementing the semantics, and a static analyzer, implementing optimization and slicing techniques on the common language. We recall that both components exist for IF-1.0, however, they have to be completely re-designed and re-implemented for IF-2.0. On one hand, the simulator have to take into account dynamic process creation and destruction which implies, in turn, dynamic clock allocation, dynamic communication buffer allocation, dynamic pid allocation, etc. None of these points were addressed by the previous implementation which assumes an almost static state vector (except for buffer contents which may growth indefinitely). On the other hand, the static analyzer has to tackle the dynamic features too, the previous one relies on a fixed (static) communication scheme.


next up previous
Next: Structure Up: main Previous: Token Ring Protocol