Publications
RESTful State Machines and SQL Database (2019)
J. Kufner and R. Mařík.
State machines and a relational database may look like completely unrelated
tools, yet they form an interesting couple. By supporting them with
well-established architectural patterns and principles, we built a model layer
of a web application which utilizes the formal aspects of the state machines to
aid the development of the application while standing on traditional
technologies. The layered approach fits well with existing frameworks and the
Command–Query Separation pattern provides a horizontal separation and
compatibility with various conceptually distinct storages, while the overall
architecture respects RESTful principles and the features of the underlying SQL
database. The integration of the explicitly specified state machines as
first–class citizens provides a reliable connection between the wellseparated
formal model and the implementation; it enables us to use visual comprehensible
formal models in a practical and effective way, and it opens new possibilities
of using formal methods in application development and business process
modeling.
From a BPMN Black Box to a Smalldb State Machine (2019)
J. Kufner and R. Mařík.
The state of a state machine is a path between two actions; however, it is
the rest of the world who walks the path. The development of a web application,
especially of an information system, starts with use cases, i.e., model
scenarios of how users interact with the application and its entities. The goal
of this paper is to turn the use cases into a useful specification and
automatically convert them into a model layer of a web application, in our case
using finite automata. BPMN (Business Process Model and Notation) provides a
graphical syntax to capture the use cases, which is based on the theoretical
background of Petri Nets. However, because BPMN does not capture the state of
the modeled entities, it is impractical to use it as a specification of a
persistent storage and model layers of the web application. To overcome this
problem, we propose a new STS algorithm to infer a finite automaton that
implements a chosen participant in a BPMN diagram that represents a given
entity of the web application.
Self-generating Programs – Cascade of the Blocks (2014)
J. Kufner and R. Mařík.
When building complex applications the only way not to get lost is to split
the application into simpler components. Current programming languages,
including object oriented ones, offer very good utilities to create such
components. However, when the components are created, they need to be connected
together. Unluckily, these languages are not a very suitable tool for that. To
help with composition of the components we introduce cascade – a
dynamic acyclic structure built from blocks, inspired by the Function Block
approach. The cascade generates itself on-the-fly during its evaluation to
match requirements specified by input data and automatically orders an
execution of the individual blocks. Thus the structure of a given cascade does
not need to be predefined entirely during its composing/implementation and
fixed during its execution as it is usually assumed by the most approaches. It
also provides a real-time and fully automatic visualization of all blocks and
their connections to ease debugging and an inspection of the application.
State Machine Abstraction Layer (2014)
J. Kufner and R. Mařík.
Smalldb uses a non-deterministic parametric finite automaton combined with
Kripke structures to describe lifetime of an entity, usually stored in a
traditional SQL database. It allows to formally prove some interesting
properties of resulting application, like access control of users, and provides
primary source of metadata for various parts of the application, for example
automatically generated user interface and documentation.
Presentation at ICT-EurAsia 2014
J. Kufner
Presentation of “Self-generating Programs – Cascade of the Blocks”
and “State Machine Abstraction Layer”
at ICT-EurAsia 2014
conference (Bali, Indonesia, April 14-17, 2014).