×

灵活的正确施工规划。 (英语) Zbl 07731927号

概要:基于构造的正确性(CbC)是一个增量程序构造过程,用于构造功能正确的程序。这些程序是逐步构建的,同时还有一个内在保证满足的规范。没有专门的工具支持,CbC很难使用,因为它需要一组预定义的固定粒度的细化规则,这些规则是编程语言之上的附加规则。每个细化规则都会引入一个特定的编程语句,开发人员无法脱离这些规则来构建程序。CbC允许以结构化和增量的方式开发软件,以确保正确性,但有限的灵活性是CbC的一个缺点。在这项工作中,我们将经典的CbC与CbC块特征CbC.两种方法CbC块特征CbC,与CbC有关,但它们有新的语言结构,可以实现更灵活的软件构建方法。我们为这两种方法都提供了一个类似于CbC的编程指南,它可以生成结构良好的程序。CbC-Block通过添加优化规则来插入任何语句块,从而扩展了CbC。因此,我们引入CbC块作为CbC的扩展。特征CbC通过使用指定的方法在特性的基础上进行构建来实现正确性。我们正式介绍特征CbC并证明建设战略的合理性。对这三种开发方法的编程结构、工具支持和可用性进行了定性比较,以评估哪种方法最适合某些任务和开发人员。

理学硕士:

03B70号 计算机科学中的逻辑
68倍 计算机科学
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] ABB+16]沃尔夫冈·阿伦特(Wolfgang Ahrendt)、伯恩哈德·贝克特(Bernhard Beckert)、理查德·布贝尔(Richard Bubel)、雷内尔·哈内尔(Reiner Hähnle)、彼得·施密特(Peter H Schmitt)和马蒂亚斯·乌尔布里希(Mat。演绎软件验证——KeY图书:从理论到实践,第10001卷。斯普林格,2016年。
[2] ABD+14]阿夫申·阿米吉(Afshin Amighi)、斯特凡·布洛姆(Stefan Blom)、赛义德·达拉比(Saeed Darabi)、玛丽克·赫斯曼(Marieke Huisman)、沃伊西奇·莫斯托夫斯基(Wojciech Mostowski)和玛丽娜·扎哈里耶瓦·斯托亚诺夫斯基。用VerCors验证并发系统。在计算机、通信和软件系统设计的形式方法国际学校,《计算机科学讲义》第8483卷,第172-216页。斯普林格,2014年。[ABH+10]Jean-Raymond Abrial、Michael Butler、Stefan Hallerstede、Thai Son Hoang、Farhad Mehta和Laurent Voisin。罗丹:事件建模和推理的开放工具集-B。技术转让软件工具国际期刊,12(6):447-4662010·Zbl 1445.68131号
[3] 让-雷蒙德·阿布里亚尔。《Event-B中的建模——系统和软件工程》,剑桥大学出版社,2010年·Zbl 1213.68214号
[4] 拉尔夫·约翰回来了。基于不变量的程序设计:基本方法和教学经验。计算的形式方面,21(3):227-2442009·Zbl 1178.68334号
[5] 亨德里克·巴伦德里格特。兰姆达微积分,第3卷。荷兰阿姆斯特丹北部,1984年·Zbl 0551.03007号
[6] 约翰·吉尔伯特·普莱斯利·巴恩斯。高完整性软件:安全保障的火花方法。培生教育,2003年。
[7] +05)迈克·巴内特(Mike Barnett)、鲍尔·尤·埃文·张(Bor-Yuh Evan Chang)、罗伯特·德莱恩(Robert DeLine)、巴特·雅各布斯(Bart Jacobs)和K Rustan M Leino。Boogie:面向对象程序的模块化可重用验证程序。在组件和对象形式化方法国际研讨会上,计算机科学讲义第4111卷,第364-387页。斯普林格,2005年。
[8] +塔比亚·博迪斯、洛克·克利奥帕斯、亚历山大·基特尔曼、托比亚斯·隆格、伊娜·谢弗和布鲁斯·沃森。Re-CorC-ing KeY:基于KeY的正确构建软件开发。在软件逻辑中。正式方法品尝菜单。施普林格,2022年。
[9] 洛伦佐·贝蒂尼(Lorenzo Bettini)、费鲁西奥·达米亚尼(Ferruccio Damiani)和伊娜·谢弗(Ina Schaefer)。使用特性实现软件产品线。2010年ACM应用计算研讨会论文集,第2096-2102页,2010年。
[10] 洛伦佐·贝蒂尼(Lorenzo Bettini)、费鲁西奥·达米亚尼(Ferruccio Damiani)、伊娜·谢弗(Ina Schaefer)和法比奥·斯特罗科(Fabio Strocco)。TRAITRECORDJ:一种具有特征和记录的编程语言。计算机程序设计科学,78(5):521-5412013。
[11] 拉尔夫·约翰·巴克(Ralph-Johan Back)、约翰·埃里克森(Johannes Eriksson)和马格努斯·米林(Magnus Myreen)。在SOCOS环境中测试和验证基于不变量的程序。在国际测试与证明会议(TAP)上,计算机科学讲义第4454卷,第61-78页。施普林格,2007年。[BFL+11]迈克·巴内特(Mike Barnett)、曼努埃尔·法恩德里奇(Manuel Fähndrich)、K.鲁斯坦·莱诺(K.Rustan M.Leino)、彼得·米勒(Peter Müller)、沃尔夫拉姆·舒尔特(Wolfram Schulte)和赫尔曼·文特(Herma。规范和验证:规范#经验。ACM通讯,54(6):81-912011年6月。
[12] Mike Barnett、K Rustan M Leino和Wolfram Schulte。Spec#编程系统:概述。在安全、可靠和可互操作智能设备的构建和分析国际研讨会上,第49-69页。斯普林格,2004年。
[13] 维维亚娜·博诺(Viviana Bono)、恩里科·门萨(Enrico Mensa)和马可·纳迪奥(Marco Naddeo)。Java 8中面向特征的编程。《2014年Java平台编程原则与实践国际会议论文集:虚拟机、语言和工具》,第181-186页,2014年。
[14] Tabea Bordis、Tobias Runge和Ina Schaefer。面向特征的软件产品线的正确构建。第19届ACM SIGPLAN生成性编程国际会议论文集:概念和经验,第22-34页。ACM,2020年。
[15] 拉尔夫·约翰·巴克(Ralph-Johan Back)和约阿金·赖特(Joakim Wright)。精化微积分:系统介绍。施普林格科学与商业媒体,2012年·Zbl 0949.68094号
[16] +09]厄尼·科恩(Ernie Cohen)、马克斯·达尔维德(Markus Dahlweid)、马克·希勒布兰德(Mark Hillebrand)、德克·莱恩巴赫(Dirk Leinenbach)、米夏·莫斯卡尔(Micha l Moskal)、托马斯·桑顿(Thomas Santen)、沃尔夫拉姆·舒尔特(Wolfram。VCC:验证并发C的实用系统。在高阶逻辑定理证明国际会议上,计算机科学讲义第5674卷,第23-42页。施普林格,2009年。
[17] +15]陈洪毅、克里斯蒂娜·戴维、丹尼尔·克罗宁、彼得·施拉姆和比约恩·瓦赫特。合成过程间位精确终止证明。在自动化软件工程国际会议(ASE)上,第53-64页。IEEE,2015年。
[18] 西里尔·科恩(Cyril Cohen)、马克西姆·邓内斯(Maxime Dénès)和安德斯·莫特伯格(Anders Mörtberg)。免费精炼!《认证课程和证明:第三届国际会议》,第147-162页。施普林格,2013年·Zbl 1426.68165号
[19] 罗德里克·查普曼。构建的正确性:高完整性软件宣言。第十届澳大利亚安全关键系统和软件研讨会论文集——第55卷,SCS'05,第43-46页,2006年。
[20] +12]帕斯卡尔·库克(Pascal Cuoq)、弗洛伦特·基什内尔(Florent Kirchner)、尼古拉·科马托夫(Nikolai Kosmatov)、维吉尔·普雷沃斯托(Virgile Prevosto)、朱利安·西莫尔斯(Julien Signoles)和鲍里斯·亚科博夫斯基。Frama-C.软件工程和形式化方法国际会议,计算机科学讲稿第7504卷,第233-247页。施普林格,2012年·Zbl 1251.68012号
[21] 大卫·R·科克。OpenJML:JML for Java 7,通过扩展OpenJDK。美国国家航空航天局正式方法研讨会,《计算机科学讲义》第6617卷,第472-479页。施普林格,2011年。
[22] 费鲁西奥·达米亚尼(Ferruccio Damiani)、约翰·多夫兰(Johan Dovland)、埃纳尔·布罗奇·约翰森(Einar Broch Johnsen)和伊娜·谢弗(Ina Schaefer)。验证特性:细粒度再利用的增量证明系统。计算的形式方面,26(4):761-7932014·Zbl 1342.68059号
[23] Edsger W.Dijkstra。程序的保护命令、不确定性和形式派生。ACM通讯,18(8):453-4571975年8月·Zbl 0308.68017号
[24] Edsger W.Dijkstra。编程学科。普伦蒂斯·霍尔,1976年·兹比尔0368.68005
[25] DNS+06]斯特凡·杜卡斯(Stéphane Ducasse)、奥斯卡·尼尔斯特拉斯(Oscar Nierstrasz)、纳撒内尔·施勒利(Nathanel Schärli)、罗尔·伍茨(Roel Wuts)和安德鲁·布莱克(Andrew P Black)。特点:细粒度再利用机制。美国计算机学会程序设计语言与系统汇刊(TOPLAS),28(2):331-3882006。
[26] Sumit Gulwani、Susmit Jha、Ashish Tiwari和Ramarathnam Venkatesan。基于组件的综合应用于Bitvector程序。技术报告,Citeser,2010年。
[27] +17]Sumit Gulwani、Oleksandr Polozov、Rishabh Singh等,《程序综合》。编程语言基础与趋势,4(1-2):1-12017。
[28] 大卫·格里斯。编程科学。施普林格,1987年·Zbl 0614.68002号
[29] 罗伯特·J·霍尔。电子邮件中的基本非模块性。自动化软件工程,12(1):41-792005。
[30] 安东尼·霍尔和罗德里克·查普曼。通过构建实现正确性:开发商业安全系统。IEEE软件,19(1):18-252002。
[31] 弗洛里安·哈夫特曼(Florian Haftmann)、亚历山大·克劳斯(Alexander Krauss)、昂德·伊克·库纳尔(Ondřej Kunčar)和托比亚斯·尼普科(Tobias Nipkow)。Isabelle/HOL中的数据优化。在交互式定理证明国际会议上,第100-115页·Zbl 1317.68212号
[32] 马克西米利安·哈斯贝克(Maximilian PL Haslbeck)和彼得·兰米奇(Peter Lammich)。再花点钱:验证细粒度算法分析,直到llvm。美国计算机学会程序设计语言与系统汇刊(TOPLAS),44(3):1-362022·Zbl 1473.68222号
[33] 查尔斯·安东尼·理查德·霍尔。程序和参数:公理方法。算法语言语义研讨会,第102-116页。施普林格,1971年·兹比尔0221.68020
[34] Atsushi Igarashi、Benjamin C Pierce和Philip Wadler。轻量级Java:Java和GJ的最小核心演算。美国计算机学会程序设计语言与系统汇刊(TOPLAS),23(3):396-4502001。
[35] Bart Jacobs、Jan Smans和Frank Piessens。快速浏览VeriFast程序验证程序。在亚洲编程语言与系统研讨会上,《计算机科学讲稿》第6461卷,第304-311页。施普林格,2010年。
[36] 尤金·科尔贝克(Eugene Kohlbecker)、丹尼尔·弗里德曼(Daniel P Friedman)、马蒂亚斯·费尔莱森(Matthias Felleisen)和布鲁斯·杜巴(Bruce Duba)。卫生宏观扩张。1986年ACM LISP和函数编程会议记录,第151-1611986页。
[37] 曼苏尔·卡泽耶夫(Mansur Khazeev)、维克托·里维拉(Victor Rivera)、曼努埃尔·马扎拉(Manuel Mazzara)和伦纳德·乔哈德(Leonard Johard)。评估验证工具可用性的初始步骤。在国防应用软件工程国际会议上,《智能系统和计算进展》第717卷,第31-40页。斯普林格,2016年。
[38] Alexander Knüppel、Tobias Runge和Ina Schaefer。按结构缩放正确性。在利用形式方法应用的国际研讨会上,第187-207页。斯普林格,2020年。
[39] 德里克·库里(Derrick G Kourie)和布鲁斯·沃森(Bruce W Watson)。程序设计的“以结构为基础的正确方法”。施普林格科学与商业媒体,2012年·Zbl 1278.68006号
[40] 加里·特里文斯(Gary T Leavens)、阿尔伯特·L·贝克(Albert L Baker)和克莱德·鲁比(Clyde Ruby)。JML:一种Java建模语言。Java研讨会的正式基础(OOPSLA’98),第404-420页。Citeser,1998年。
[41] K鲁斯坦·莱诺。走向可靠的模块化程序。加州理工学院,1995年。
[42] K鲁斯坦·莱诺。Dafny:功能正确性的自动程序验证程序。在编程人工智能和推理逻辑国际会议上,第348-370页。施普林格,2010年·兹比尔1253.68095
[43] 路易吉·利科里和阿诺德·斯皮瓦克。FeatherTrait:Featherweight Java的适度扩展。美国计算机学会程序设计语言与系统汇刊(TOPLAS),30(2):1-322008·Zbl 1146.68026号
[44] Peter Lammich和Thomas Tuerk。将一元程序的数据精炼应用于Hopcroft算法。在交互式定理证明:第三届国际会议,ITP 2012,第166-182页。施普林格,2012年·Zbl 1360.68757号
[45] Barbara H Liskov和Jeannette M Wing。亚型的行为概念。美国计算机学会程序设计语言与系统汇刊(TOPLAS),16(6):1811-18411994。
[46] 伯特兰·梅耶(Bertrand Meyer)。艾菲尔:软件工程的语言与环境。《系统与软件杂志》,8(3):199-2461988。
[47] 伯特兰·梅耶(Bertrand Meyer)。采用“合同设计”。计算机,25(10):40-511992。
[48] 卡罗尔·摩根。根据规范进行编程。普伦蒂斯·霍尔,第二版,1994年·Zbl 0829.68083号
[49] Zohar Manna和Richard Waldinger。程序综合的演绎方法。美国计算机学会程序设计语言与系统汇刊(TOPLAS),2(1):90-1211980年1月·Zbl 0468.68009号
[50] 马塞尔·维尼修斯·梅德罗斯·奥利维拉(Marcel Vinicius Medeiros Oliveira)、安娜·卡瓦尔坎蒂(Ana Cavalcanti)和吉姆·伍德科克(Jim Woodcock)。ArcAngel:一种精炼的战术语言。计算的形式方面,15(1):28-472003·Zbl 1093.68565号
[51] 马塞尔·奥利维拉(Marcel Oliveira)、安娜·卡瓦尔坎蒂(Ana Cavalcanti)和吉姆·伍德科克(Jim Woodcock)。马戏团的UTP语义。计算的形式方面,21(1):3-322009·Zbl 1165.68048号
[52] 马塞尔·维尼修斯·梅德罗斯·奥利维拉(Marcel Vinicius Medeiros Oliveira)、亚历山德罗·卡瓦尔坎特·古格尔(Alessandro Cavalcante Gurgel)和C G卡斯特罗(C G Castro)。CRefine:支持马戏团精化演算。2008年第六届IEEE软件工程和形式化方法国际会议,第281-290页。IEEE,2008年11月。
[53] David J Pearce和Lindsay Groves。Whiley:软件验证研究平台。在软件语言工程国际会议上,计算机科学讲稿第8225卷,第238-248页。施普林格,2013年。
[54] 纳迪娅·波里卡波娃(Nadia Polikarpova)、伊万·库拉吉(Ivan Kuraj)和阿曼多·索拉勒扎马(Armando Solar-Lezama)。聚合精制类型的程序合成。ACM SIGPLAN通知,51(6):522-5382016年8月。
[55] 马尔特·普拉斯和马克·瑞安。使用要素构造进行要素集成。计算机程序设计科学,41(1):53-842001·Zbl 0983.68236号
[56] 托比亚斯·隆格(Tobias Runge)、塔比亚·博迪斯(Tabea Bordis)、托马斯·图姆(Thomas Thüm)和伊娜·谢弗(Ina Schaefer)。基于构建和事后验证的教学正确性——在线体验。在正式方法教学研讨会上,《计算机科学讲义》第13122卷,第101-116页。施普林格,2021年。[RKS+22]托比亚斯·伦格(Tobias Runge)、亚历山大·基特尔曼(Alexander Kittelmann)、马可·塞韦托(Marco Servetto)、亚历克斯·波塔宁(Alex Potanin)和伊娜·谢弗(Ina Schaefer)。面向对象语言的信息流控制构造。在软件工程和形式方法国际会议上,计算机科学讲稿第13550卷,第209-226页。施普林格,2022年。
[57] 托比亚斯·伦格(Tobias Runge)、亚历山大·克努佩尔(Alexander Knüppel)、托马斯·图姆(Thomas Thumüm)和伊娜·谢弗(Ina Schaefer)。基于格的信息流控制结构,用于安全设计。FormaliSE@ICSE2020年:第八届软件工程形式方法国际会议,第44-54页。ACM,2020年。
[58] 托比亚斯·伦格(Tobias Runge)、亚历克斯·波塔宁(Alex Potanin)、托马斯·图姆(Thomas Thumüm)和伊娜·谢弗(Ina Schaefer)。特点:免费正确建造。在分布式对象、组件和系统形式化技术国际会议上,计算机科学讲稿第13273卷,第131-150页·Zbl 1499.68067号
[59] +19]托比亚斯·隆格、伊娜·谢弗、洛克·克利奥帕斯、托马斯·图姆、德里克·库里和布鲁斯·沃森。按结构纠正的工具支持。在软件工程基本方法国际会议上,计算机科学讲义第11424卷,第25-42页。斯普林格,2019年。
[60] +托比亚斯·伦格(Tobias Runge)、托马斯·图姆(Thomas Thumüm)、洛克·克利奥帕斯(Loek Cleophas)、伊娜·谢弗(Ina Schaefer)和布鲁斯·沃特森(Bruce W Watson)。基于结构的正确性与事后验证的比较——一项定性用户研究。在形式方法中。FM 2019国际研讨会。Refine,《计算机科学讲义》第12233卷,第388-405页。斯普林格,2019年。
[61] 查尔斯·史密斯和索菲亚·德罗索波卢。Chai:类Java语言的特点。在欧洲面向对象编程会议上,第453-478页,柏林,海德堡,2005年。施普林格柏林海德堡。
[62] Ondrej Sery、Grigory Fedyukovich和Natasha Sharygina。有界模型检验中基于插值的函数求和。《硬件和软件:验证和测试》,计算机科学讲义第7261卷,第160-175页。施普林格,2012年。
[63] 多米尼克·施泰因霍费尔(Dominic Steinhöfel)和雷内·哈内尔(Reiner Hähnle)。摘要执行。在形式方法国际研讨会上,第319-336页。斯普林格,2019年。
[64] 沃尔夫冈·舒尔茨(Wolfgang Scholz)、托马斯·图姆(Thomas Thüm)、斯文·阿佩尔(Sven Apel)和克里斯蒂安·伦高(Christian Lengauer)。使用Java建模语言自动检测功能交互:经验报告。第15届国际软件产品线会议论文集,第2卷,SPLC’11,美国纽约州纽约市,2011年。计算机协会。
[65] +94]马克·斯蒂克尔、理查德·沃尔丁格、迈克尔·洛瑞、托马斯·普雷斯伯格和伊恩·安德伍德。子程序库天文软件的演绎合成。在国际自动扣除会议上,计算机科学讲义第814卷,第341-355页。斯普林格,1994年。
[66] 莫里斯·特尔·比克(Maurice H.ter Beek)、洛克·克利奥帕斯(Loek Cleophas)、伊娜·谢弗(Ina Schaefer)和布鲁斯·沃特森(Bruce W.Watson)。X-by-Construction公司。在利用形式方法应用的国际研讨会上,第359-364页,Cham,2018年。施普林格国际出版公司。
[67] 朱利安·查宁(Julian Tschannen)、卡洛·阿福里亚(Carlo A Furia)、马丁·诺迪奥(Martin Nordio)和纳迪娅·波里卡波娃(Nadia Polikarpova)。自动验证:面向对象程序的自动活动功能验证。在系统构造和分析工具和算法国际会议上,计算机科学讲义第9035卷,566-580页。斯普林格,2015年。
[68] 托马斯·图姆、伊娜·谢弗、斯文·阿佩尔和马丁·亨切尔。基于系列的软件产品线演绎验证。《第11届生成性编程和组件工程国际会议论文集》,GPCE’12,第11-20页,美国纽约州纽约市,2012年。计算机协会。
[69] 布鲁斯·沃森(Bruce W.Watson)、德里克·库里(Derrick G.Kourie)、伊娜·谢弗(Ina Schaefer)和洛克·克利珀斯(Loek Cleophas)。基于构造的正确性和事后验证:方便的结合?在利用形式方法应用的国际研讨会上,计算机科学讲稿第9952卷,第730-748页。斯普林格,2016年。16:36柔性校正施工计划第19:2卷
[70] [WRH+12]克莱斯·沃林(Claes Wohlin)、佩尔·伦森(Per Runeson)、马丁·霍斯特(Martin Höst)、马格纳斯·C·奥尔森(Magnus C Ohlsson)、比约恩·雷涅尔(Björn Regnell)和安德斯·韦森(Anders Wesslén)。《软件工程实验》,施普林格科学与商业媒体,2012年。
[71] 弗兰克·泽达(Frank Zeyda)、马塞尔·奥利维拉(Marcel Oliveira)和安娜·卡瓦尔坎蒂(Ana Cavalcanti)。为ArcAngel提供电源支持。理论计算机科学电子笔记,259:225-2432009。
此参考列表基于出版商或数字数学图书馆提供的信息。它的项目与zbMATH标识符启发式匹配,并且可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不声称其完整性或完全匹配。