A new class of models, formalisms and mechanisms has recently evolved for describing concurrent and distributed computations based on the concept of ``coordination''. The purpose of a coordination model and associated language is to provide a means of integrating a number of possibly heterogeneous components together, by interfacing with each component in such a way that the collective set forms a single application that can execute on and take advantage of parallel and distributed systems. In this chapter we initially define and present in sufficient detail the fundamental concepts of what constitutes a coordination model or language. We then go on to classify these models and languages as either ``data-driven'' or ``control-driven'' (also called ``process-'' or ``task-oriented''). Next, the main existing coordination models and languages are described in sufficient detail to let the reader appreciate their features and put them into perspective with respect to each other. The chapter ends with a discussion comparing the various models and some conclusions.

Language Constructs and Features (acm D.3.3), Concurrent Programming (acm D.1.3), Language Classifications (acm D.3.2), Modes of Computation (acm F.1.2), Languages and Systems (acm I.1.3)
Programming languages (msc 68N15), Modes of computation (nondeterministic, parallel, interactive, probabilistic, etc.) (msc 68Q10)
Software (theme 1)
Software Engineering [SEN]
Computer Security

Papadopoulos, G.A, & Arbab, F. (1998). Coordination models and languages. Software Engineering [SEN]. CWI.