论文标题
灵活的正确构造编程
Flexible Correct-by-Construction Programming
论文作者
论文摘要
逐构建(CBC)是一个增量程序构建过程,旨在构建功能上正确的程序。这些程序是逐步构建的,并固有地保证可以满足的规范。 CBC在没有专门工具支持的情况下使用的CBC很复杂,因为它需要一组预定义的固定粒度细胞规则,这是编程语言之上的其他规则。每个改进规则都介绍了特定的编程声明,开发人员不能偏离这些规则来构建程序。 CBC允许以结构化和增量的方式开发软件以确保正确性,但是有限的灵活性是CBC的缺点。在这项工作中,我们将Classic CBC与CBC-Block和Traitcbc进行了比较。两种方法CBC块和质子都与CBC有关,但它们具有新的语言构造,可实现更灵活的软件构建方法。我们提供两种方法,类似于CBC的编程指南,都会导致结构良好的程序。 CBC-Block通过添加改进规则来插入任何块语句来扩展CBC。因此,我们将CBC块引入CBC的扩展。 TraitCBC根据指定方法的性状实现正确性。我们正式介绍了属性,并证明了建筑策略的健全性。在定性上,所有三种开发方法都在其编程结构,工具支持以及评估最适合某些任务和开发人员的可用性方面进行了定性比较。
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.