Home > Posts Dependency hierarchy

Max Heinritz

Dependency hierarchy

A dependency hierarchy is a way to describe interactions among software components. It helps us break down complexity into easier-to-reason-about chunks. The simplest dependency hierarchy looks like this, with A depending on B:

  -----
  | A |
  -----
    |
    V
  -----
  | B |
  -----

A -> B implies a relationship with the qualities below.

Directionality

Layering

APIs

Events

Independent evolution

User interactions

Upstream/downstream

The concepts of “upstream” and “downstream” are defined in relation to the flow of information, which is distinct from dependencies. The terminology is a bit confusing here because upstream/downstream doesn’t always match the vertical placement of modules in the dependency diagram.

When information is flowing up the dependency hierarchy (e.g. with events), we can say that:

When information is flowing down the dependency hierarchy (e.g. with API call), we can say that: