Modularity is advocated as a solution for the design of large systems, the mathematical translation of this concept is often that of compositionality. This paper is devoted the issues of compositionality aiming at modular code generation, for dataflow synchronous languages. As careless storing of object code for further reuse in systems design fails to work, we first concentrate on what are the additional features needed to abstract programs for the purpose of code generation: we show that a central notion is that of scheduling specification as resulting from a causality analysis of the given program. Then we study separate compilation for synchronous programs, and we discuss the issue of distributed implementation using an asynchronous medium of communication; for both topics we provide a complete formal study in the extended version [BlGA97] of this paper. Corresponding algorithms are currently under development in the framework of the DC+ common format for synchronous languages.
Keywords: synchronous languages, modularity, code generation, separate compilation, desynchronisation.
This work is or has been supported in part by the following projects : Eureka-SYNCHRON, Esprit R&D-SACRES (Esprit project EP 20897), Esprit LTR-SYRF (Esprit project EP 22703). In addition to the listed authors, the following people have indirectly, but strongly, contributed to this work: the STS formalism has been shamelessly borrowed from Amir Pnueli, and the background on labelled partial orders is mostly acknowledged to Paul Caspi.
Proceedings of the 1997 Workshop on Compositionality, W.P. de Roever and A. Pnueli Eds., Malente, Germany, 1997. LNCS 1536, p. 61ff Albert Benveniste, Paul Le Guernic, and Pascal Aubry