This talk argues for a model of components based upon the notion
of communicating processes. By this, we mean layered networks of active
components, responding to and generating events communicated to each other
through channels. This model follows Hoare's algebra of Communicating Sequential
Processes (CSP), enhanced by dynamic extras such as the mobile processes
of Cardelli's Ambient Calculus.
The defining feature of components is that composing them into larger systems (themselves components) should be straightforward. Their semantics should not mysteriously change when combined with other components! From knowledge of their individual behaviours, we should be able to deduce - without great stress - their combined behaviour. This is not a familiar property of many software systems today.
CSP semantics - including those of its parallel combining operator - are compositional. This is a necessary pre-condition for any component model. Weaknesses in object orientation for component engineering (e.g. uncontrolled aliasing) will be discussed in the light of corresponding strengths for process orientation. Language versus library support for communicating processes will be considered, along with security and performance matters and the status of current implementation efforts at the University of Kent.
Keywords: components, processes, channels, networks, mobiles, scalability, CSP, JCSP, occam(tm).