Are these statecharts?
Yep! Sketch.systems sketches are based on the statechart formalism developed by David Harel in the 1980’s. For more details, see:
- Harel’s original 1987 paper, which describes the formal semantics
- Harel’s reflections, which provides historical context on the motivation and development of statecharts in the aviation industry
- Samek’s Practical UML Statecharts in C/C++, which focuses on technical implementation for embedded systems
- Horrock’s Constructing the User Interface with Statecharts, which is about exactly what it sounds like
Does Sketch.systems support transition guards, transition actions, or extended state variables?
Nope!
The focus of Sketch.systems is on big picture sketching for communication and thinking.
Supporting guards, actions, and variables would require turning Sketch.systems into a programming language IDE, which we feel would detract from its usefulness as a sketching tool.
We recommend focusing on the big picture, using comments and transient states to capture logic at a high level (see designing behavior for more details).
Then, once you’ve settled on the big picture and want to implement, do so directly in your production platform and language(s).
Isn't there already a tool that has "Sketch" in the name?
Yes, there are many!
Back in 2000, @Last Software released “SketchUp” (a 3D modeling tool), in 2004 Alias/Autodesk released “SketchBook Pro” (a pixel editor), and in 2010 Bohemian Coding released “Sketch” (a vector drawing tool).
In 2007, Bill Buxton (of Xerox PARC and Microsoft Research fame) wrote an entire book on the subject of how sketching fits into product design called “Sketching User Experiences.” In it, he defines sketches as quick, timely, inexpensive, disposable, and plentiful—with a clear vocabulary, distinct gesture, and minimal detail. There really isn’t another word in the English language that captures those qualities besides “sketch.“
We wanted the name of this site to do exactly what it says on the tin. Its purpose is to help you think about and explore how a system should work, with a simple vocabulary and quick, non-precious nature. That’s sketching. Hence, sketch.systems.
Can Sketch.systems analyze my statechart?
Sketch.systems lets you explore sketches by clicking through the diagram, but it doesn’t do any automated analysis to determine, for example:
- whether every state is reachable
- if loops exist
- the number of “paths” between two states
If you’re interested in doing such analysis, we recommend looking into formal analysis tools like TLA+ or Alloy. Here are some resources to get you started:
- Lamport’s TLA+ video course
- Wayne’s Learn TLA+ online book
- Wayne’s Formally specifying UI blog post, which uses Alloy to analyze a Sketch.system sketch.
Does Sketch.systems support parallel states?
Yep! See the tutorial for details.