Tobias Runge, Tabea Bordis, Alex Potanin, Thomas Thüm, Ina Schaefer
{"title":"Flexible Correct-by-Construction Programming","authors":"Tobias Runge, Tabea Bordis, Alex Potanin, Thomas Thüm, Ina Schaefer","doi":"10.46298/lmcs-19(2:16)2023","DOIUrl":null,"url":null,"abstract":"Correctness-by-Construction (CbC) is an incremental program construction process to construct functionally correct programs. The programs are constructed stepwise along with a specification that is inherently guaranteed to be satisfied. CbC is complex to use without specialized tool support, since it needs a set of predefined refinement rules of fixed granularity which are additional rules on top of the programming language. Each refinement rule introduces a specific programming statement and developers cannot depart from these rules to construct programs. CbC allows to develop software in a structured and incremental way to ensure correctness, but the limited flexibility is a disadvantage of CbC. In this work, we compare classic CbC with CbC-Block and TraitCbC. Both approaches CbC-Block and TraitCbC, are related to CbC, but they have new language constructs that enable a more flexible software construction approach. We provide for both approaches a programming guideline, which similar to CbC, leads to well-structured programs. CbC-Block extends CbC by adding a refinement rule to insert any block of statements. Therefore, we introduce CbC-Block as an extension of CbC. TraitCbC implements correctness-by-construction on the basis of traits with specified methods. We formally introduce TraitCbC and prove soundness of the construction strategy. All three development approaches are qualitatively compared regarding their programming constructs, tool support, and usability to assess which is best suited for certain tasks and developers.","PeriodicalId":49904,"journal":{"name":"Logical Methods in Computer Science","volume":null,"pages":null},"PeriodicalIF":0.6000,"publicationDate":"2023-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Logical Methods in Computer Science","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.46298/lmcs-19(2:16)2023","RegionNum":4,"RegionCategory":"数学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q4","JCRName":"COMPUTER SCIENCE, THEORY & METHODS","Score":null,"Total":0}
引用次数: 0
Abstract
Correctness-by-Construction (CbC) is an incremental program construction process to construct functionally correct programs. The programs are constructed stepwise along with a specification that is inherently guaranteed to be satisfied. CbC is complex to use without specialized tool support, since it needs a set of predefined refinement rules of fixed granularity which are additional rules on top of the programming language. Each refinement rule introduces a specific programming statement and developers cannot depart from these rules to construct programs. CbC allows to develop software in a structured and incremental way to ensure correctness, but the limited flexibility is a disadvantage of CbC. In this work, we compare classic CbC with CbC-Block and TraitCbC. Both approaches CbC-Block and TraitCbC, are related to CbC, but they have new language constructs that enable a more flexible software construction approach. We provide for both approaches a programming guideline, which similar to CbC, leads to well-structured programs. CbC-Block extends CbC by adding a refinement rule to insert any block of statements. Therefore, we introduce CbC-Block as an extension of CbC. TraitCbC implements correctness-by-construction on the basis of traits with specified methods. We formally introduce TraitCbC and prove soundness of the construction strategy. All three development approaches are qualitatively compared regarding their programming constructs, tool support, and usability to assess which is best suited for certain tasks and developers.
期刊介绍:
Logical Methods in Computer Science is a fully refereed, open access, free, electronic journal. It welcomes papers on theoretical and practical areas in computer science involving logical methods, taken in a broad sense; some particular areas within its scope are listed below. Papers are refereed in the traditional way, with two or more referees per paper. Copyright is retained by the author.
Topics of Logical Methods in Computer Science:
Algebraic methods
Automata and logic
Automated deduction
Categorical models and logic
Coalgebraic methods
Computability and Logic
Computer-aided verification
Concurrency theory
Constraint programming
Cyber-physical systems
Database theory
Defeasible reasoning
Domain theory
Emerging topics: Computational systems in biology
Emerging topics: Quantum computation and logic
Finite model theory
Formalized mathematics
Functional programming and lambda calculus
Inductive logic and learning
Interactive proof checking
Logic and algorithms
Logic and complexity
Logic and games
Logic and probability
Logic for knowledge representation
Logic programming
Logics of programs
Modal and temporal logics
Program analysis and type checking
Program development and specification
Proof complexity
Real time and hybrid systems
Reasoning about actions and planning
Satisfiability
Security
Semantics of programming languages
Term rewriting and equational logic
Type theory and constructive mathematics.