visual-programming-codex
visual-programming-codex copied to clipboard
David Harel's research on Visual formalisms, Statecharts, Live Sequence Charts, & Behavioral Programming
One of the things that I think is missing from this codex is David Harel's research on visual formalisms, statecharts, live sequence charts, ect. and all of the research and "practical" branches that stem from that foundation. So I will attempt to provide an narrow overview of the this history of his work and many of the branches that stem from it.
Structured Flowcharts
Some of Harel's earliest work is on "structured flowcharts". It seemed to focus on giving flowcharts of procedural code a more structured visual syntax.
And/Or Programms
Building off the research above and crucial for his later work on statecharts is a paper called And/Or Programs: A New Approach to Structured Programming. It defined a language for decomposing typical programming constructs into a tree of AND
or OR
nodes. This language was both mathematically rigorous and visualizable as a tree. It was likely this was the first time that Harel attempted to visualize parallelism. Below is an example of a factorial algorithm:
![image](https://user-images.githubusercontent.com/19981604/161482918-aca034a7-3974-42e3-965b-48b78ba8e2ff.png)
Visual formalisms and Higraphs
![image](https://user-images.githubusercontent.com/19981604/157797736-46b93a92-88e2-4ce4-96a9-f8292d835e39.png)
Reactive Systems
A later paper called "On the Development of Reactive Systems" provides a framing for much of the research he would publish later on. It points out a new dichotomy between transformative systems and reactive systems (pictured below).
![image](https://user-images.githubusercontent.com/19981604/157793930-015eabcd-88fb-4560-88ed-6e9cd7771c0d.png)
Statecharts
Original Paper History of Statecharts(written by Harel)
Implementations
- Statemate
- Rhaspody
- UML StateMachines
- SCXML
- XState (now Stately)
- StateML (for transparency I am part of the core team)
(This is a non-exhaustive list, there are many others out there. Happy to add more of them)
Live Sequence Charts (LSCs) and Scenario-Based Programming
- Specifying and executing behavioral requirements: the play-in/play-out approach
- LSCs: Breathing Life into Message Sequence Charts
- Come, Let's Play: Scenario-Based Programming Using LSCs and the Play-Engine](https://www.wisdom.weizmann.ac.il/~playbook/Updates/ComeLetsPlay.pdf)
Yes, that is definitely a missing piece. Thank you for the request and for providing so much supporting material.