This repository aims to implement the formalization, automatic generation, and rendering of UML state diagrams.
It currently contains the following functionalities:
- Under the folder
alloy, it provides the formalization of UML state diagrams in Alloy. User can runuml_state_diagram.alsto generate different Alloy sd instances and play around. - Under the folder
app, it provides the following executables:draw.hs: draws Alloy sd instances via Haskelldiagramslibrary.drawing.hs: draws Haskell sd instances viadiagramslibrary.enumeratedArrowsDirectDemo.hs: generates a demo of sd "flatten" tasks, but currently not supporting concurrent states and history nodes.enumeratedArrowsQuizDemo.hs: a quiz task corresponding to the "flatten" demo.sampling.hs: generates random Haskell sd instances and draws them viadiagramslibrary.transformAlloy.hs: transforms Haskell sd instances into Alloy code that describes exactly those instances.transformPlantUML.hs: transforms Haskell sd instances into plantUML code and then renders them. There are some constraints that can be found in plantUML/document.txt and issue 25.
- Alloy Analyzer
- Haskell GHC & Stack
- Java JDK/JRE (> 8)
- Graphviz
- PlantUML
stack build
stack exec <app name e.g. transformAlloy>