灵活的按结构校正编程

IF 0.6 4区 数学 Q4 COMPUTER SCIENCE, THEORY & METHODS Logical Methods in Computer Science Pub Date : 2023-06-07 DOI:10.46298/lmcs-19(2:16)2023
Tobias Runge, Tabea Bordis, Alex Potanin, Thomas Thüm, Ina Schaefer
{"title":"灵活的按结构校正编程","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":"{\"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}","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

摘要

构造正确性(CbC)是一种渐进式的程序构造过程,目的是构造功能正确的程序。程序是逐步构建的,并遵循一个本质上保证被满足的规范。如果没有专门的工具支持,CbC使用起来很复杂,因为它需要一组预定义的固定粒度的细化规则,这些规则是编程语言之上的附加规则。每个细化规则都引入了一个特定的编程语句,开发人员在构建程序时不能脱离这些规则。CbC允许以结构化和增量的方式开发软件以确保正确性,但是有限的灵活性是CbC的缺点。在这项工作中,我们比较了经典CbC与CbC- block和TraitCbC。两种方法CbC- block和TraitCbC都与CbC相关,但是它们具有新的语言结构,可以实现更灵活的软件构建方法。我们为这两种方法提供了一个编程指南,它类似于CbC,可以生成结构良好的程序。CbC- block通过添加精化规则来插入任何语句块,从而扩展了CbC。因此,我们引入CbC- block作为CbC的扩展。TraitCbC在特征的基础上用指定的方法实现构造正确性。我们正式引入了TraitCbC,证明了建设策略的合理性。对所有三种开发方法进行定性比较,包括它们的编程结构、工具支持和可用性,以评估哪一种最适合特定的任务和开发人员。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Flexible Correct-by-Construction Programming
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
Logical Methods in Computer Science 工程技术-计算机:理论方法
CiteScore
1.80
自引率
0.00%
发文量
105
审稿时长
6-12 weeks
期刊介绍: 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.
期刊最新文献
Node Replication: Theory And Practice A categorical characterization of relative entropy on standard Borel spaces The Power-Set Construction for Tree Algebras Token Games and History-Deterministic Quantitative-Automata A coherent differential PCF
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1