Specifications for Intelligent Software Synthesis
Total Page:16
File Type:pdf, Size:1020Kb
Czech Technical University in Prague Faculty of Electrical Engineering Department of Computer Science Specifications for Intelligent Software Synthesis Doctoral Thesis Ing. Josef Kufner Prague, January 2020 Ph.D. Programme: Electrical Engineering and Information Technology Branch of study: Artificial Intelligence and Biocybernetics Supervisor: Ing. Radek Mařík, CSc. Abstract Abstrakt To relieve programmers of repetitive and tir- Implementace jednoduchých, avšak příliš ing work on simple, yet too diverse, entities různorodých, entit ve webových aplikacích je in web applications, this thesis searches for únavná úloha, jejíž řešení se pokusíme au- an assistive framework, where machines aid tomatizovat. Tato práce směřuje k vytvoření the programmers with implementing such en- asistivní technologie, kdy počítače programá- tities. The first question to answer is how to torům s implementací pomáhají, ale nesnaží se tell the computer what we want without spec- je plně nahradit. První otázkou je, jak počítači ifying all the details; otherwise, we could just sdělit, co po něm chceme tak, aby taková spe- implement the application instead. The sec- cifikace byla jednodušší, než kdybychom to ond question is how to effectively reason about sami naprogramovali. Druhá otázka cílí na the software so that we can analyze what we možnosti uvažování o programech – jak ana- have and infer what we miss. The proposed lyzovat to, co máme a jak odvozovat, co nám solution introduces Smalldb state machines as chybí. V rámci navrhovaného řešení předsta- a formal model that describes the behavior of víme Smalldb, které formálně popisuje chování the entities in a web application. Such a model entit webové aplikace pomocí konečných auto- is not designed to cover every aspect of the ap- matů, avšak nesnaží se zachytit každý aspekt plication; instead, it leaves well-defined gaps takové aplikace. Pro věci, které je nepraktické for the details that are impractical to spec- formálně modelovat, se ponechají dobře de- ify formally. The formal model then becomes finované mezery a ty se následně zaplní po- part of the application architecture and run- mocí vhodnějšího nástroje. Formální model time, where it provides a secure API between se tak začlení jak do architektury aplikace, business logic and presentation layer; more- tak do jejího běhového prostředí, kde tvoří over, it verifies that the implementation corre- API mezi business logikou a prezentační vrst- sponds to the model. To answer the first ques- vou aplikace. Takto integrovaný model na- tion, we return to the very beginning of the víc hlídá, zda implementované chování od- software development process, where we iden- povídá tomu modelovanému. Abychom zod- tify software specifications that programmers pověděli onu první otázku, je potřeba se po- already use and discuss whether such speci- dívat na samotný začátek procesu vývoje apli- fications are sufficiently machine-friendly for kace a identifikovat, jaké specifikace progra- automated processing. The identified BPMN mátoři obvykle používají při návrhu a zda business process diagrams become an input for jsou tyto specifikace vhodné ke strojovému a novel STS algorithm — a software architect zpracování. Jednou z takových specifikací jsou draws how users will use a web application, procesní diagramy kreslené pomocí BPMN and the STS algorithm infers the implementa- notace. Ty použijeme jako vstup nově vy- tion in the form of a Smalldb state machine. tvořeného STS algoritmu, kterému architekt The thesis concludes with presenting a Cas- nakreslí, jak budou uživatelé používat danou cade, a machine-friendly approach to software aplikaci, a STS algoritmus odvodí implemen- composition based on the utilization of the for- taci v podobě Smalldb automatu. Na závěr si mal models. představíme kaskádu, která je nástrojem pro automatizované sestavování programů využí- vající formální modely. Keywords: Software specification, finite au- Klícovᡠslova: Softwarové specifikace, tomata, web application, business process konečné automaty, webové aplikace, mode- modeling, software architecture, REST, MVC, lování business procesů, softwarová architek- SQL, CQS, BPMN. tura, REST, MVC, SQL, CQS, BPMN. Contents I Introduction 13 1 Introduction 15 1.1 Specification — Model — Implementation . 15 1.2 How to tell what we want? . 16 1.3 Software Synthesis as an Assistive Tool . 17 1.4 Goals . 17 1.5 Contributions . 18 1.6 Technologies for Web Applications . 19 1.7 Thesis Structure . 19 2 Programmer’s Inputs 21 2.1 Use Cases and Requirements Management . 21 2.2 User Interface and API . 23 2.3 Data Structures . 24 2.4 Business Process Diagrams and State Machines . 25 2.5 Algorithms . 25 2.6 Programmer’s Experience . 26 2.7 Conclusion . 26 3 Software Specification and Synthesis: State of the Art 27 3.1 Generics and Templates . 27 3.2 Domain-Specific Languages . 27 3.3 Macros, Decorators and Annotations . 28 3.4 Moldable Tools . 28 3.5 Components and Web Services . 29 3.6 Dependency Injection Containers . 30 3.7 Specification Morphisms . 30 3.8 Graph Rewriting . 30 3.9 Functional Block Programming . 31 3.10 Tensor Flow . 31 3.11 Finite Automata . 31 3.12 Petri Nets and Workflows . 32 3.13 Behavior Trees . 32 3.14 Behavior-Driven Development . 33 3.15 Literate programming . 33 3.16 Intentional Programming . 34 3.17 Aspect-Oriented Programming . 34 3.18 Planning . 35 3.19 Generative Programming . 35 3.20 Evolutionary Programming . 36 5 CONTENTS 3.21 Machine Learning . 36 3.22 Type-Driven Software Synthesis . 37 3.23 Conclusion . 37 4 Computing with the Unknown 39 4.1 Three-valued Logic . 39 4.2 Epistemic Modal Logic . 40 4.3 Set Theory and Kripke Semantics . 40 4.4 Generalizing the Sets . 41 4.5 Relations as Sets . 41 4.6 The Incomplete Solution . 41 4.7 Opening the Closed-World Assumption . 42 4.8 Conclusion . 42 II Models & Specification 43 5 Specifications & Synthesis Overview 45 5.1 Application Architecture . 45 5.2 Knowledge Sources for Development . 46 5.3 Automation . 46 6 State Machine Abstraction Layer 49 6.1 Introduction . 49 6.2 REST Resource as a State Machine . 50 6.3 Real-world Example . 50 6.4 State Machine . 51 6.4.1 Smalldb State Machine Definition . 51 6.4.2 Explanation of Nondeterminism . 52 6.4.3 Simplified Deterministic Definition . 52 6.4.4 Properties and State Function . 53 6.4.5 Input Events . 53 6.4.6 Output Events . 53 6.4.7 Methods . 54 6.4.8 Transitions and Transition Function . 54 6.4.9 Assertion Function . 54 6.5 Space of State Machines . 54 6.5.1 Smalldb and SQL Database . 55 6.6 Spontaneous Transitions . 55 6.7 State Machine Metadata . 56 6.8 Application Correctness . 56 6.8.1 Access Control Verification . 56 6.8.2 Optimizations vs. Understandability . 57 6.8.3 Computational Power of Smalldb Machine . 57 6.8.4 Troubles with Methods M ........................... 57 6.9 Workflow Correctness . 58 6.9.1 State Machine Cooperation . 58 6.9.2 BPMN Diagrams . 58 6.10 Conclusion . 58 6 CONTENTS 7 RESTful Architecture with Smalldb State Machines 59 7.1 Introduction . 59 7.2 REST API for a State Machine . 61 7.3 Architectural and Model Constraints . 62 7.3.1 Declarative formal model . 62 7.3.2 Encapsulated interface . 62 7.3.3 State machine space . 62 7.3.4 Persistent state storage . 63 7.3.5 The initial “Not Exists” state . 63 7.3.6 Addressable transitions . ..