Rant time!

There's this concept that keeps coming up in software engineering: represent your program as a directed graph, where nodes are computations and edges are data. Technical term is "dataflow programming", but the same idea appears everywhere.
ETLs are graphs. Nonrecursive pure function calls. Pipe-and-filter. Orchestration. Microservices. Abstract model of distributed systems, sans the pesky bits. Stream processing. Arguably Alan Kay's original OOP vision fits here, too: a collection of nanocomputers passing messages
There's some obvious benefits to dataflow. Easy to see what parts are parallelizable/runnable on a diff computer. Lots of inferrable properties, especially if it's a DAG. All sorts of cool structured concurrency tricks, like "wait for {X and Y} OR {W and Z} to complete", etc.
Here's the kicker: this was also a big thing in business processes, where they're called workflows. There's even a set of workflow patterns! Two worlds, mostly ignorant of each other, converging on the same ideas, though they're a bit more explicit http://www.workflowpatterns.com/ 
And you'd think that with all this potential energy, there'd be at least a few good notations to formally specify flows, right?

WRONG

Everybody uses giant XML clusterfucks!
The problem is that graphs have visual representations, so everybody thinks of them as diagrams first and abstract structures second. All the tools hopelessly entangle the workflow's semantics with its representation, which doesn't even scale if the workflow is nonplanar
To make matters worse, most of the workflow tools also do both design and implementation, like having the tool itself call scripts as part of the workflow. So the tools are tailored to their intended domain and there's no tools for flow analysis in general
Then again, given how rare formal specification languages are even in software engineering, I probably shouldn't be surprised that a specific class of system doesn't have any specification languages. It just makes me sad
Yes I know about Petri nets, Petri nets are incredibly primitive and nobody writes them as a language either, there's a mathematical set formalism but nobody uses that, not even other mathematicians
You can follow @hillelogram.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: