@abcdw I regularly use PlantUML (plantuml.com/) to describe the architecture of my projects and recommend it to my students as the tool for creating diagrams in their graduation projects.

And since I'm an FSM (Finite-State Machines) devotee, I wrote a state machine compiler in Scheme that turns PlantUML state diagrams into working GNU Guile (Scheme) code:
github.com/artyom-poptsov/guil