Component-and-connector (C&C) views define models consisting of elements that have some runtime presence, such as processes, objects, clients, servers, and data stores. Additionally, component-and-connector models include as elements the pathways of interaction, such as communication links and protocols, information flows, and access to shared storage.
Components have interfaces, which are called ports.
Connectors have interfaces, which are called roles.
Connectors need not be binary, meaning that they may have more than two roles. Even if the connector is ultimately implemented using binary connectors, such as a procedure call, it can be useful to adopt n-ary connector representations at an architectural level.
If a component's primary purpose is to mediate interaction between a set of components, consider representing it as a connector instead.
Connectors can and often should represent complex forms of interaction. Even a semantically simple procedure call can be complex when carried out in a distributed setting, involving runtime protocols for timeouts, error handling, and locating the service provider.
Connectors embody a protocol of interaction. When two or more components interact, they must obey conventions about order of interactions, locus of control, and handling of error conditions and timeouts. When providing a detailed description of a connector, the documentation should attempt to capture this detail.
Be clear about which style you are using, by referring to an appropriate style guide.
Make clear which port is used when attaching a component to a connector.
If it is not clear that it is valid to attach a given port with a given role, provide a justification in the rationale section for the view.
Make clear which ports are used to connect the system to its external environment.
Data flow and control flow diagrams are projections of C&C models. When creating such diagrams, be explicit about the semantic criteria being used to determine where the arrows go. Data flow and control flow projections are at best ap-proximations to the connectors, which define the components' interactions.