Typestates to Automata and back: a tool
Andr\'e Trindade (NOVA School of Science, Technology), Jo\~ao Mota, (NOVA School of Science, Technology), Ant\'onio Ravara (NOVA School of, Science, Technology)

TL;DR
This paper presents a tool that converts typestates to automata and vice versa, enhancing visualization and editing of protocol specifications in software development, particularly for Java programs using the Mungo tool.
Contribution
It introduces a bidirectional conversion tool that visualizes typestates as automata and generates syntactically correct typestates from automata, aiding protocol specification and validation.
Findings
Enables visualization of typestates as automata
Allows generation of typestates from automata
Improves understanding and editing of protocol specifications
Abstract
Development of software is an iterative process. Graphical tools to represent the relevant entities and processes can be helpful. In particular, automata capture well the intended execution flow of applications, and are thus behind many formal approaches, namely behavioral types. Typestate-oriented programming allow us to model and validate the intended protocol of applications, not only providing a top-down approach to the development of software, but also coping well with compositional development. Moreover, it provides important static guarantees like protocol fidelity and some forms of progress. Mungo is a front-end tool for Java that associates a typestate describing the valid orders of method calls to each class, and statically checks that the code of all classes follows the prescribed order of method calls. To assist programming with Mungo, as typestates are textual…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Advanced Software Engineering Methodologies · Model-Driven Software Engineering Techniques
