Executable graph modes in Bloc

Executable graph models in Bloc

Many kinds of software models are based on graphs, like Finite State Automata (FSAs), Petri nets, and various UML models. The goal of this project is to experiment with ways to build executable models

experiment with ways to quickly construct graphs (syntax), and to assign an interpretation to them (semantics). For example, an FSA could be specified in Pharo Smalltalk as follows:

eg4nodes
  ^ self
    nodes: (1 to: 4)
    edges: { 1->2. 1->3. 2->3. 3->2. 3->4 }
    start: 1

The resulting graph can be interpreted as an FSA, so that clicking on any target node that follows the currently highlighted node will cause the FSA to change state:

Possible tasks:

  • Develop further examples of Petri nets, Nested Statecharts, Graph transformations ...
  • Build an interactive graph editor (syntax)
  • Develop a high-level (fluent) interface for specifying execution semantics

Learning outcomes:

  • Gaining experience with a live programming environment (Pharo Smalltalk)
  • Learning to work with a modern graphical framework (Bloc/Glamourous Toolkit)
  • Learning about modeling with graphical formalisms

Contact

Oscar Nierstrasz

Last changed by oscar on 10 September 2019