vix.ing · top · new · best · stats · spec

Crème de la Crem: Composable Representable Executable Machines (Architectural Pearl)

2023/07/18 by Marco Perone, Perone, Marco, Georgios Karachalias +1
Business, Management and Accounting · Computer Science · #Advanced Software Engineering Methodologies #Business Process Modeling and Analysis #FOS: Computer and information sciences #Software Engineering (cs.SE) #Software Engineering Research

paper · pdf · doi:10.48550/arxiv.2307.09090

openalex publication_date 2023/07/18 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/28

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 domain implementations.

Related