Abstract :
The problem of describing the concurrent behavior of objects in object oriented languages is addressed. The approach taken is to let methods be the behavior units whose synchronization is controlled separate from their specification. Our proposal is a domain-specific language called BDL for expressing constraints on this control and actually implementing its enforcement. We propose a model where each object includes a so-called “execution controller”, programmed in BDL. This separates cleanly the concepts of what the methods do, the object processes, from the circumstances in which they are allowed to do it, the control. The object controller ensures that scheduling constraints between the object´s methods are met. Aggregate objects can be controlled in terms of their components. This language has a convenient formal base. Thus, using BDL expressions, behavioral properties of objects or groups of interesting objects can be verified. Our approach allows, for example, deadlock detection or verification of safety properties, while maintaining a reasonable code size for the running controller. A compiler from BDL has been implemented, automatically generating controller code in an Esterel program, i.e., in a reactive programming language. From this code, the Esterel compiler, in turn, generates an automaton on which verifications are done. Then this automaton is translated into a C code to be executed. This multistage process typifies the method for successful use of a domain-specific language. This also allows high level concurrent programming
Keywords :
automata theory; formal specification; object-oriented languages; parallel languages; program compilers; scheduling; synchronisation; BDL; BDL expressions; C code; Esterel compiler; Esterel program; aggregate objects; automaton; behavior units; behavioral properties; concurrent behavior; deadlock detection; domain-specific language; execution controller; formal base; high level concurrent programming; multistage process; object controller; object oriented languages; object processes; per-object reactive control; reactive programming language; safety properties; scheduling constraints; specialized language; Aggregates; Automata; Automatic control; Domain specific languages; Object oriented modeling; Program processors; Proposals; Safety; Size control; System recovery;