A compositional approach to concurrent programming

Raju Pandey · 1996

There is widespread interest in concurrent programming. Many concurrent programming languages have been proposed. However, there are modularity and extensibility problems associated with many of these languages: concurrent programs are difficult to extend and modify. Also, specifications of programs cannot be easily reused. This thesis presents a compositional approach to concurrent programming that aims to resolve these problems. The approach is based on the observation that there are two orthogonal behaviors of components of a concurrent program: computational behavior and interaction behavior. The computational behavior of a component specifies the operations performed during an execution of the component. Its interaction behavior determines the manner in which the component affects or is affected by other components. In the compositional approach a concurrent program is composed from separate specifications of computational and interaction behaviors. We call this approach of concerns. One of the implications of separation is that concurrent programs can be easily extended by adding component programs. Only the specifications of the interaction behaviors may need to be changed. Also, a concurrent program can be modified by changing only its interaction behavior specification. Further, separation of concerns supports reusability of both computational and interaction behavior specifications. More importantly, in this approach representations of computations and interactions are both programming language abstractions. These abstractions can be composed with other abstractions such as inheritance and genericity in order to define generic concurrent program abstractions. In the first part of the thesis, we use separation of concerns as the basis for developing a model of computation. The model contains a concurrent program composition mechanism, a representation mechanism for component programs, and a declarative interaction specification mechanism. In the second part of the thesis, we apply the model to design a concurrent object-oriented programming language, called CYES-C++. CYES-C++ supports highly concurrent objects and a general concurrent method invocation mechanism, fully integrates the notion of inheritance and genericity with concurrency and interaction, and supports reusability of method and interaction specifications. The feasibility of our approach is demonstrated by developing a prototype implementation for CYES-C++. The implementation runs on a network of workstations.

Read the paper · More papers on PaperTik