Hi all,

I’m trying to choose a modeling tool (free/opensource) for describing a system written in Elixir. I’ll use UML/C4-Model. I need a good tool compatible with Linux/MacOS.

C4 model


1 Like

I thought that looked like Simon Brown’s stuff.

He’s largely influenced by the “enterprise-y” stuff (hence UML).

I have yet to encounter any documentation or literature connected to the BEAM that used UML (not that it means anything) - more often than not it resorts to “whiteboard art”, e.g.:

However if you insist on using UML I’d recommend that you focus on Sequence and Activity diagrams aspects which are typically neglected in other, more mainstream contexts.


System architecture

  • UML component diagram.

Static view (UML class diagram):

  • Elixir Module = Class
  • Elixir Function = Method
  • Relationships among modules = Dependencies (“use”, …).

Dynamic view:

  • Sequence diagram (scenarios).
  • Activity diagram (workflows).

Tests (Behavior Driven Development):

  • UML State machine diagram.

If you find something interesting, I am also interested in this. As a solo and small team developer with a couple projects, I frequently need to orient myself back in the codebase. Having these maps available would definitely help with doing a little bit at a time.

1 Like

For sequence diagrams, et is a great tool, already comes with Elixir + OTP :+1:

“C4-PlantUML & PlantUML” is a good choice for create C4/UML models:

  • Snippets for VSCode.
  • Layout options: Top-Down, Left-Right, … .


Alternatives to PlantUML: https://c4model.com/#tooling

Thank you!

Thank you! Do you go through a checklist when you are developing? I enjoyed the article from @peerreynders The Hitchhiker’s Guide to the Unexpected .

  • Unit tests, Integration tests, Acceptance tests, … .
  • Code coverage.
  • BDD: Behavior driven development.

C4 Diagram: https://c4model.com/assets/software-architecture-diagram-review-checklist.pdf

… it all depends on the context.

Thanks for that, I’ll check that checklist and the C4 model… all in the name of lower mental overhead. :sunny:

1 Like

I want to share this work https://github.com/joaohf/OTP-PlantUML

My intention is to create a small set of plantuml shortcuts to help design and document Erlang and Elixir systems.