Relationships
Relationships represent the existence of a logical connection between entities, whether they are classes in a class diagram, components in a component diagram, or any other two elements. This chapter does not provide a complete list of all existing UML relationships. It only serves as a reference for the relationships that are frequently used throughout Effective Analysis. A more comprehensive description can be found on Wikipedia, for instance.
Association
An association represents a relationship between two related entities.

The association above illustrates that a customer can place multiple orders, but it is also possible to have a customer who has not placed any orders yet. An order always belongs exclusively to the customer who placed it.
Composition
Composition is a "strong" type of association representing a tighter relationship between a whole and its parts. If a part is connected to a whole using composition, that part cannot be shared with other wholes. For example, a module associated with a system belongs exclusively to that system and cannot be part of any other system.

Aggregation
Aggregation represents a weaker association than composition, as the parts connected to the whole using aggregation can be shared among multiple wholes. For example, computer peripherals such as a mouse or a keyboard can be unplugged from one computer and plugged into another.

Dependency
A dependency is a relationship between two entities indicating that changing one entity might affect the other. Dependencies describe what could potentially break if we change something, meaning that recorded dependencies significantly streamline the process of impact analysis.

For example, knowing that the Eshop system is dependent on the Warehouse System helps the Warehouse System team quickly identify who they need to discuss changes with before implementing them in their system.
Dependency Types
A dependency can be used in its general form, or it can be specified using a stereotype to give it more concrete semantics.
<< use >>
A usage relationship indicates that one element requires another element for its full implementation or operation.

As a specific type of dependency, a usage connection implies that a change made to the Warehouse System may impact the Eshop system because the Eshop system relies on the Warehouse System in some way.
<< trace >>
Connecting two elements with a trace relationship indicates that the elements represent the same concept, either at different levels of abstraction or from different viewpoints. In other words, they represent the same concept in different models.

<< flow >>
An information flow shows the exchange of information between two entities. The information flow serves as an abstraction, so it does not specify the nature of the information or the mechanisms by which it is conveyed. This abstraction can take various forms, from simply indicating that a certain type of information is transferred between entities to describing a concrete data file being exchanged:

<< create >>
A create relationship is used when element A creates an instance of element B. In analytical models, it could represent, for example, that artifact A (Invoice) is the result of an activity performed by entity B (Generate Invoice).

Realization
Realization is a specific type of dependency that expresses a specification-implementation relationship. In analysis, it is typically used during requirements modeling to describe the fact that an artifact or element implements or realizes a particular requirement.


