Concurrency diagrams

submited by
Style Pass
2024-11-30 16:00:03

When engineers discuss program design and system architecture, a common source of misunderstanding is concurrency. Often that's because we make internal assumptions about it, which we presume to be self-evident. But we don't all make the same assumptions, so you can end up in a situation where multiple conflicting beliefs are held about the concurrency of a system and nobody realises. Left unchecked, these misunderstandings can lurk until much later in the development process, when they're more expensive to fix. You can prevent these misunderstandings from happening by making concurrency explicit up-front, in a diagram.

Concurrency diagrams are very simple and usually quick to create. They force you to put your assumptions in front of everyone to see, including yourself. Sometimes the act of creating a concurrency diagram can change your own mind about how different parts of a system should be sequenced. All you need are boxes, arrows and text.

A concurrency diagram is a simplified representation of your system, plotted with time as one axis. The other axis separates different functional components; what those are depends on your system and the level of granularity that you're representing it in. It's similar to a Gantt chart in many ways, although there are differences.

Leave a Comment