Author(s): Romanovsky A
Abstract: Developing advanced structuring techniques has always been of great importance for computer science and practice. Many structuring approaches are used to help capture certain characteristics of applications: group communications, replication features, file services, etc. Associating fault tolerance measures with structuring units allows us to benefit from state and behaviour encapsulation while designing dependable systems. Procedures were among the first general techniques intended for structuring application software. They reflect both the static and dynamic structures of sequential systems (a stack of procedure contexts of nested calls represents the state of program execution). The situation is much more complex in concurrent systems, in which the states of several concurrent components should be taken into consideration while describing system behaviour in general, and its fault tolerance in particular. The purpose of this survey is to outline recent trends in developing approaches to structuring competitive and cooperative concurrent systems, together with corresponding fault tolerance techniques, and to discuss different directions of research in this area and their interrelations.