Home > Posts Dependency graph

Max Heinritz

Dependency graph

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

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

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

Layering

I like to have the arrows pointing down to reflect this visually.

Directionality

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 graph (e.g. with events), we can say that:

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