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.


翻译:正确性可构造(CbC)是一种增量式程序构建过程,用于构造功能正确的程序。程序在构建过程中逐步完善并附带规范,该规范本质上保证了其被满足。由于CbC需要在编程语言基础上额外添加一组固定粒度的预定义精化规则,没有专用工具支持时难以使用。每条精化规则引入特定的编程语句,开发者无法偏离这些规则来构造程序。CbC允许以结构化和增量式的方式开发软件以确保正确性,但灵活性有限是其不足之处。本研究比较了经典CbC与CbC-Block和TraitCbC两种方法。CbC-Block和TraitCbC均与CbC相关,但它们引入了新的语言构造,支持更灵活的软件构造方式。我们为这两种方法提供了编程指南,与CbC类似,该指南可引导生成结构良好的程序。CbC-Block通过增加一条插入任意语句块的精化规则来扩展CbC,因此我们将CbC-Block作为CbC的扩展进行介绍。TraitCbC基于具有指定方法的特质(traits)实现正确性可构造。我们形式化地引入了TraitCbC,并证明了构造策略的可靠性。本文从编程构造、工具支持和可用性三个方面对三种开发方法进行了定性比较,以评估其各自最适合的任务类型与开发者群体。

0
下载
关闭预览

相关内容

【硬核书】矩阵代数基础,248页pdf
专知会员服务
88+阅读 · 2021年12月9日
【Manning新书】C++并行实战,592页pdf,C++ Concurrency in Action
【经典书】贝叶斯编程,378页pdf,Bayesian Programming
专知会员服务
251+阅读 · 2020年5月18日
Python计算导论,560页pdf,Introduction to Computing Using Python
专知会员服务
77+阅读 · 2020年5月5日
【SIGIR2020】学习词项区分性,Learning Term Discrimination
专知会员服务
16+阅读 · 2020年4月28日
这 11 种编程语言,还“活着”吗?
CSDN
2+阅读 · 2022年12月1日
在Java中如何加快大型集合的处理速度
InfoQ
0+阅读 · 2022年9月23日
“我最想要的六种编程语言!”
CSDN
1+阅读 · 2022年7月22日
RoBERTa中文预训练模型:RoBERTa for Chinese
PaperWeekly
57+阅读 · 2019年9月16日
Transferring Knowledge across Learning Processes
CreateAMind
29+阅读 · 2019年5月18日
强化学习的Unsupervised Meta-Learning
CreateAMind
18+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
18+阅读 · 2018年12月24日
Reinforcement Learning: An Introduction 2018第二版 500页
CreateAMind
14+阅读 · 2018年4月27日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
3+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Arxiv
0+阅读 · 2023年5月17日
VIP会员
最新内容
学习数据的几何:形状空间分析数学综述
专知会员服务
7+阅读 · 6月17日
定向能反无人机系统最新发展动态
专知会员服务
8+阅读 · 6月17日
从燃煤战舰到算法战争:水面指挥的永恒要求
专知会员服务
6+阅读 · 6月17日
相关资讯
这 11 种编程语言,还“活着”吗?
CSDN
2+阅读 · 2022年12月1日
在Java中如何加快大型集合的处理速度
InfoQ
0+阅读 · 2022年9月23日
“我最想要的六种编程语言!”
CSDN
1+阅读 · 2022年7月22日
RoBERTa中文预训练模型:RoBERTa for Chinese
PaperWeekly
57+阅读 · 2019年9月16日
Transferring Knowledge across Learning Processes
CreateAMind
29+阅读 · 2019年5月18日
强化学习的Unsupervised Meta-Learning
CreateAMind
18+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
18+阅读 · 2018年12月24日
Reinforcement Learning: An Introduction 2018第二版 500页
CreateAMind
14+阅读 · 2018年4月27日
相关基金
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
3+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员