Cr\`eme de la Crem: Composable Representable Executable Machines (Architectural Pearl)
Marco Perone, Georgios Karachalias

TL;DR
This paper presents a modular, composable approach to building software architectures using state machines, with a focus on representability and synchronization between implementation and graphical models, exemplified by the Crem library in Haskell.
Contribution
It introduces a novel composable and representable state machine framework, Crem, leveraging Haskell's type-level features for domain-specific property encoding and automatic graphical generation.
Findings
Crem enables modular composition of state machines.
Crem allows encoding of complex domain properties.
Crem can generate graphical representations automatically.
Abstract
In this paper we describe how to build software architectures as a composition of state machines, using ideas and principles from the field of Domain-Driven Design. By definition, our approach is modular, allowing one to compose independent subcomponents to create bigger systems, and representable, allowing the implementation of a system to be kept in sync with its graphical representation. In addition to the design itself we introduce the Crem library, which provides a concrete state machine implementation that is both compositional and representable, Crem uses Haskell's advanced type-level features to allow users to specify allowed and forbidden state transitions, and to encode complex state machine -- and therefore domain-specific -- properties. Moreover, since Crem's state machines are representable, Crem can automatically generate graphical representations of systems from their…
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
TopicsAdvanced Software Engineering Methodologies · Business Process Modeling and Analysis · Software Engineering Research
