SYROCO,

a CoOperative Object Compiler

 

SYROCO is an environment dedicated to CoOperative Objects, allowing to edit classes, to compile them and to execute a COO system.

SYROCO relies upon the C++ language, and it is supported by any computer provided with a C++ compiler. First, the tools of SYROCO are written in C++. Secondly, this language is used to write both the additional code which is shared by the classes of a system and the embedded code which takes place in the definition of COO classes. Finally, SYROCO translates each COO class into a C++ class. The generated code is very standard, and it may be compiled by most of the C++ compilers (namely the gnu, SCO, Sun Solaris, Borland, Visual and Symantec C++ compilers).

Supported features

SYROCO supports many features which extend the CoOperative Objects formalism, such as:

Using SYROCO to build a COO system

SYROCO generates a C++ class for each COO class, so that a COO system is implemented as a C++ program. If threads are supported by the environment, each Object executes its OBCS within a thread; if not, SYROCO includes a scheduler which activates Objects in turn.

To build a COO system, the designer uses the SYROCO’s utilities in the following way:

In fact, 6) and 8) can be repeated for each class of the system, allowing to test them apart.

Debugging a COO system

SYROCO provides the designer with a debugger offering about 40 commands. This debugger does not deal with the C++ code written by the designer in operations, transitions and places, but with PN aspects of COOs. Each Object has its own debugger; it enables to examine the OBCS, for instance the value of tokens, the list of enabled transitions, or some standard statistics. It also enables to change the value of some parameters of a COO. It is possible to call the debugger of any Object from the debugger of another one. Break points may be set according to various conditions such as the marking of places, the occurrence of transitions, the lack of enabled transition, or any condition checked in the C++ code.

Performance

The size of the code shared by all the COO classes of a system is around 50 to 100 K, whereas the specific code of a class is mainly the one provided by the designer. The memory required to allocate a new instance is a few K. The token game player executing the OBCS of each COO is quite efficient, since it may fire several thousands of transitions per second. This speed doesn’t depend on the size of the net, but it may depend on the number of tokens if the transition’s preconditions are strict.

Overview of COOs,
How to get SYROCO

The Stack example, The Dynamic Philosopher example

IRIT, DAIMI

Mail to: C. Sibertin-Blanc

Refences

C.Sibertin-Blanc, N. Hameurlain, P. Touzeau
SYROCO: A C++ implementation of CoOperative Objects; Proceedings of the 1st Workshop on Object-Oriented Programming and Models of Concurrency; Turino (I), June 27 1995. ( download)

[BREST96] C.Sibertin-Blanc
Un environnement pour la simulation de Systèmes Temps Réels modélisés par Objets Coopératifs. Actes du congrès de l’AFCET Modélisation des Systèmes Réactifs, Brest, 28-29 mars 1996.

[ATPNTOOL97] C. Sibertin-Blanc
An overview of SYROCO; Proceedings of the Tool Presentation Session, 18th International Conference on Application and Theory of Petri Nets, Toulouse (F), June 23-27 1997.  (download)