Concurrent programs that embed specifications of synchronizations in the bo
dy of their component are difficult to extend and modify. Small changes in
a concurrent program, particularly changes in the interactions among compon
ents, may require re-implementation of a large number of components. Even s
pecifications of components cannot be reused easily. This paper presents a
concurrent program composition mechanism in which both specification and im
plementation of computations and interactions are completely separated. Sep
aration of specifications and implementations facilitates extensions and mo
difications of programs by allowing one to separately change the implementa
tions of computations and interactions. It also supports their reusability.
The paper also describes the design and implementation of a concurrent obj
ect-oriented programming language based on this model, including a compiler
for the language, and reports on the execution behavior of programs writte
n in the language.