Developing advanced structuring techniques has always been of great importa
nce for computer science and practice. Many structuring approaches are used
to help capture certain characteristics of applications: group communicati
ons, replication features, file services, etc. Associating fault tolerance
measures with structuring units allows us to benefit from state and behavio
ur 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 contests of nested calls represents the state of prog
ram execution). The situation is much more complex in concurrent systems, i
n which the states of several concurrent components should be taken into co
nsideration while describing system behaviour in general, and its fault tol
erance in particular. The purpose of this survey is to outline recent trend
s in developing approaches to structuring competitive and cooperative concu
rrent systems, together with corresponding fault tolerance techniques, and
to discuss different directions of research in this area and their interrel
ations.