Embedded Control Systems Design/Design Patterns/4Cs

With increasing complexity of embedded systems, there is a need to explicitly control the interaction process instead of implicit definition of the interaction embedded in the different subsystems itself.

To explicitly control the interaction process on a software level, the interaction process is split in different parts, where each part can be handled at a different moment in the design process. These parts are known as the four fundamental "concerns" of system design: communication, computation, configuration and coordination.


 * The communication part defines how agents communicate with each other.
 * The computation part defines the implementation of the behavior of individual agents. It thus determines what is communicated.
 * The configuration part defines the interaction structure, or configuration. It states which agents exist in the system and which agents can communicate with each other, as well as the method of communication. It is a description of where information comes from and where it is sent to.
 * The coordination part defines patterns of interaction, i.e. it determines when certain communications take place.

An example of the four fundamental "concerns" of system design can be found in the automotive application section of this wikibook.