* Nodes can represent code units (lines, functions, AST) or some low level thing, even hardware parts.
* Can expand a node which contains other graphs
* Can group graphs into simpler graphs to describe a high level system design
* edges generally mean communications between graphs/nodes
Maybe more block-diagram-ish than directed graph. Depends on the software.
I am not sure how this has evolved since I am doing VHDL/FPGA design, but especially there I have the actual block diagram of what I want to build inside my head and just have to "look at it" and type it out with my hands. When it's software, then it's similar. The path the data flows