Dependency (UML)

From Wikipedia, the free encyclopedia

A dependency in the Unified Modeling Language exists between two defined elements if a change to the definition of one may result in a change to the other. In UML this is indicated by a dashed line pointing from the dependent (or client) to the independent (or supplier) element.

If more than one client or supplier participates in the dependency, arrows with their tails on the client elements are connected to the tails of one or more arrows with their heads on the supplier elements. Place a small dot on the junction point along with a note on the dependency.

Dependency is a model-level relationship and not a run-time relationship -- describing the need to investigate the model definition of the client element for possible changes if the model definition of the supplier element is changed.

A dependency is a semantic relationship where a change to the influent or independent modeling element may affect the semantics of the dependent modeling element.

A dependency identifies a set of model elements that requires other model elements for their specification or implementation. The complete semantics of the depending elements is either semantically or structurally dependent upon the definition of the supplier element(s).

The arrow representing a dependency specifies the direction of a relationship, not the direction of a process.

[edit] Standard predefined dependencies

UML-defined dependencies include:

  • «call» UML2: The client (an operation) may call the supplier (an operation)
  • «create» UML2: The client (a classifier) may create instances of the supplier (a classifier)
  • «derive» UML2: The client (e.g., attribute value, link) may be computed from the supplier(s)
  • «instantiate» UML2: Operations of the client (a classifier) may create instances of the supplier (a classifier)
  • «permit» UML2: Obsolete
  • «realize» UML2: Obsolete
  • «refine» UML2: The client element(s) are at a "later" semantic level than the supplier(s)
  • «send» UML2: The client (an operation) sends the supplier (a signal)
  • «substitute» UML2: The client element can replace (under some circumstances) the supplier
  • «trace» UML2: The client elements "trace" to the suppliers. Typically used for levels of requirements
  • «use» UML2: The client element somehow "uses" the supplier

[edit] Dependency vs. Link

A UML link is run-time relationship between instances of classifiers, while a dependency is a model-time relationship between definitions.

A typical uni-directional link requires the one instance to know about, and thus depend, upon the other, but this is not required. A uni-directional link only requires the possibility of navigation not dependency.

Likewise, a bi-directional link requires that both instances may traverse to each other, but this also does not require dependency.

However, after the traversal of the association, if some property of the target instance's definition is accessed, such as an operation or attribute, a dependency is created.

[edit] See also


In other languages