Josef Kufner


RESTful State Machines and SQL Database (2019)

J. Kufner and R. Mařík.
Download: Full paper (PDF), BibTeX citation. DOI: 10.1109/ACCESS.2019.2944807. Published in: IEEE Access. See for more details.

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.
Download: Full paper (PDF), BibTeX citation. DOI: 10.1109/ACCESS.2019.2912567. Published in: IEEE Access. See for more details.

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.
Download: Full paper (PDF, submitted version), BibTeX citation. DOI: 10.1007/978-3-642-55032-4_20. Published in: Lecture Notes in Computer Science.

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.
Download: Full paper (PDF, submitted version), BibTeX citation. DOI: 10.1007/978-3-642-55032-4_21. Published in: Lecture Notes in Computer Science. See for more details.

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
Download: Slides (PDF), movie mentioned in the presentation (AVI, 19 MB).

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).