Tobias Runge, Tabea Bordis, A. Potanin, Thomas Thüm, Ina Schaefer
{"title":"Flexible Correct-by-Construction Programming","authors":"Tobias Runge, Tabea Bordis, A. Potanin, Thomas Thüm, Ina Schaefer","doi":"10.48550/arXiv.2211.15261","DOIUrl":null,"url":null,"abstract":"Correctness-by-Construction (CbC) is an incremental program construction\nprocess to construct functionally correct programs. The programs are\nconstructed stepwise along with a specification that is inherently guaranteed\nto be satisfied. CbC is complex to use without specialized tool support, since\nit needs a set of predefined refinement rules of fixed granularity which are\nadditional rules on top of the programming language. Each refinement rule\nintroduces a specific programming statement and developers cannot depart from\nthese rules to construct programs. CbC allows to develop software in a\nstructured and incremental way to ensure correctness, but the limited\nflexibility is a disadvantage of CbC. In this work, we compare classic CbC with\nCbC-Block and TraitCbC. Both approaches CbC-Block and TraitCbC, are related to\nCbC, but they have new language constructs that enable a more flexible software\nconstruction approach. We provide for both approaches a programming guideline,\nwhich similar to CbC, leads to well-structured programs. CbC-Block extends CbC\nby adding a refinement rule to insert any block of statements. Therefore, we\nintroduce CbC-Block as an extension of CbC. TraitCbC implements\ncorrectness-by-construction on the basis of traits with specified methods. We\nformally introduce TraitCbC and prove soundness of the construction strategy.\nAll three development approaches are qualitatively compared regarding their\nprogramming constructs, tool support, and usability to assess which is best\nsuited for certain tasks and developers.","PeriodicalId":314387,"journal":{"name":"Log. Methods Comput. Sci.","volume":"150 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2022-11-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Log. Methods Comput. Sci.","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.48550/arXiv.2211.15261","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 1
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.