CADP新闻稿-编号16
2023年7月24日
此新闻稿可从CADP主页.
目录
2023年4月26日,CADP团队(首次)接受了时间测试ETAPS授予的工具奖,欧洲年度最重要、最引人注目与软件科学相关的活动。
一些学术链接:
Marieke Huisman和Bettina Könighofer对CADP团队的采访-转载自ETAPS博客
这个ETAPS时间测试工具奖成立于2023年,旨在表彰杰出的工具,五岁以上并连接到ETAPS。
对于这个奖项的第一版来说,竞争很激烈,没有少于12名提名候选人。这是休伯特写的加拉维、弗雷德里克·朗、拉杜·马泰埃斯库和温德琳·塞维都在工作在INRIA(法国格勒诺布尔)开发CADP工具该奖项颁发于ETAPS 2023巴黎宴会。
在2023年4月27日ETAPS上就CADP进行了讨论之后,我们安排了对四位获奖者的采访,以了解他们的更多信息工作和动力。
你能自我介绍并介绍一下CADP软件的过去和现在吗?
我们是四名科学家,在INRIA和在CONVCS公司团队位于格勒诺布尔。我们的背景结合了理论和软件工程。
CADP公司代表“构造和分析它是一个长期项目,始于20世纪80年代,此后稳步扩张。目前,CADP是一个综合工具箱收集了50个工具和17个软件库。它用于建模和验证异步并发系统:通信协议、软件系统、硬件电路等。
基于并发理论的合理概念(过程演算,互模拟,模态微积分,通信自动机,嵌套单元Petri网等),CADP提供了丰富的功能,包括编译和快速原型制作、交互式和制导仿真、,模型检查、等价性检查、测试用例生成,以及绩效评估。
CADP由谁使用,用于哪些应用?
CADP是分布式的世界范围内和,迄今为止,已经发放了15000多个许可证。主要有三种使用类型:
- 讲师使用CADP支持他们的大学课程,例如设置教学生如何过程计算、互模拟、模型检查和合成验证可以在实践中部署。
- 学术研究人员使用CADP作为一组软件组件来快速开发新的形式方法工具或实现新的语言(例如,特定领域的建模语言)翻译为LNT或洛托斯。到目前为止,超过100研究工具已在CADP之上建造。
- CADP还用于正式描述和验证多种电信系统中常见的并发问题,软件程序和硬件电路。因为CADP是建立在通用概念,其应用的调色板非常多样,包括通信协议、分布式算法、云以及fog计算、物联网、系统和网络芯片,甚至人类大脑中的认知过程。200多箱研究使用CADP已经出版,其中许多与谷歌、诺基亚贝尔实验室、,Orange Labs、ST微电子、Tiempo等。
您如何将CADP与其他模型检查器进行比较?
CADP的开发始于80年代。CADP一起SPIN是目前仍在使用的两种最古老的模型检查器之一。CADP公司基于欧洲并发理论学派的概念:过程微积分、微积分、互模拟等。因此,它是不同的从传统模型检查器至少三个点:
- 为了描述并发系统,CADP不使用一些特殊的输入专门为模型检查量身定制的语言。相反,它支持从托尼·霍尔和罗宾·米尔纳关于过程计算的开创性著作:LOTOS(ISO国际标准8807)、FSP(一种语言在帝国理工学院设计,用于大学并行教学学生)和LNT。后者基于E-LOTOS(ISO国际标准15437)和Occam,将功能和带有进程计算的命令式编程语言。对于每个这三种语言,CADP提供编译器和翻译器远远超出了模型检查的通常需要。例如,许多CADP中的编译器,包括LNT翻译器本身,是用LNT编写的,它既是建模又是编程语言。
- 为了表示并发系统的状态空间,CADP使用标记转换系统和嵌套单位Petri网。这些模型是基于行动的(而不是基于状态的),在某种意义上可以观察到转换及其标签,而内容的状态(例如状态变量)不可见,除非明确显示在转换上。基于行动的模型有很多优点:特别是,当模型从一种基于动作的建模语言转换为另一种。此外,还可以存储状态空间(即标记的转换系统)在计算机文件中,并使用各种转换进行抽象。
- 为了表示并发系统的预期属性,CADP需要不使用传统的时态逻辑CTL或LTL,但提供了一个名为MCL的富语言,它是一种基于动作的分支时间属性语言(与基于状态和线性时间)。MCL依赖于(无交互)模态微积分一方面,使用正则表达式进行扩展(允许简明扼要地描述执行序列,并被硬件和软件工程师),另一方面,使用数据语言(可以表达有用的属性,例如消息序列号严格增加的事实任何执行序列)。
除了模型检查之外,CADP还支持等价性检查(即。,用于验证两种状态空间是等价的或包含在另一个中。联合使用过程计算、基于操作的模型和互模拟为我们铺平了道路对于成分验证,一种有效的分治策略为了对抗国家空间爆炸。为此,CADP提供了名为SVL的脚本语言,允许轻松表达复杂的大部分成分验证场景。
此外,CADP还支持许多验证技术,包括显式、实时和分布式生成状态空间,属性相关约简、部分模型检查等,可以可以单独使用或组合使用。这种独特的功能支持CADP扩大并解决无法解决的复杂问题传统模型检查器。例如,CADP在ETAPS的RERS 2019挑战(通过正确评估360大型并发自动机网络上的CTL和LTL公式)和3RERS 2020挑战赛金牌(通过正确评估88%的90种CTL配方奶粉,仅11种配方奶粉的答案未知)。
CADP不是单片软件,而是许多工具和以模块化结构组织并定义良好的库编程接口。最后,CADP做的不仅仅是验证,因为它还支持交互式仿真、快速原型制作和测试生成。
有没有开发具有影响力的软件的方法?
我们不需要说明适用于任何类型软件的一般法律,而是可以根据我们在CADP的经验,就正式方法。
正式验证工具对于安全和安全系统的复杂性往往超过人类能力。然而,这些工具本身很复杂,需要用户的专业知识和技能。目前,该行业似乎不愿在这些工具上投入足够的资源,留下了大量学术研究空间。
我们认为软件开发不应该被欲望所驱动获得学术认可;相反,它应该基于坚信为相关问题提供有效解决方案缺乏哪些切实可行的方法。
在正式的方法中,大多数低垂的水果已经被采摘:进一步的进步需要努力工作和坚韧,从早期开始转变先进工具的原型,可扩展到大型工业应用。这来之不易:必须承担使用许多耗时的辅助工具进行长期软件开发职责,例如将软件移植到不断发展的处理器和操作系统,编写大量文档,修复报告的错误由用户创建和维护大型测试套件,创建和管理网站等。
不幸的是,这些强制性活动可能会对学术生涯。事实上,它们中的大多数是“无形的”,从这个意义上说它们不适合出版。此外,致力于大型长期软件使采用新研究变得不那么容易目标,拥抱最新的“热门话题”,关注最新的来自资助机构的趋势。开发软件以推广特定密钥无论是较慢的职业发展还是减少资源。
最后,即使正式验证工具的开发是长期企业,这不应阻止这些工具定期使用挑战现实问题,例如工业案例研究或来自软件竞赛的基准测试。
你是如何维护这么大的软件的?
出版和软件之间有一个根本的区别:曾经发表了一篇科学论文,完成了工作;曾经的研究工具已经释放,重型维护工作开始。
长期维护科学软件是一个难题,Reiner Hähnle在他的引人注目的采访2023年4月发布在ETAPS博客上。在CADP的特殊情况下,我们解决这个问题有六种组合方式:
-
开发商:长期生存的一个关键方面研究工具是一个长期团队的存在维护负责。正式验证工具需要不同的专业知识,即善于理解和推进理论vs擅长高效地实现复杂算法。这个通常导致分工(例如,研究人员与工程师,教授vs学生等),通常在非永久居民离开。相反,CADP受益于INRIA全职研究职位,长期研究人员能够维护和发展所有CADP工具。
-
用户社区:CADP在教学、开发中的多种用途研究软件和解决案例研究提供了有用的利用反馈修复错误并增强语言和CADP工具。我们不花在教学承诺上的时间与许多同事和学生进行富有成效的互动全世界。
-
简单性:为了降低维护成本,我们做出了激烈的选择制造的。CADP是使用稳定语言(C、Bourne shell、,Tcl/Tk),可移植且变化缓慢,而不是使用新颖、快速发展的技术。CADP具有简单的图形用户接口,以避免复杂接口的高成本。这个CADP网站只使用静态页面,以避免频繁出现web框架的更新和安全问题。我们还要求用户每年至少升级一次CADP版本以避免支出关于很久以前就被解决的错误的报告。
-
稳定性:CADP多年来不断增长,从2增长到50个工具。我们尽可能支持永久接口和避免破坏兼容性。多年前学习CADP的用户可以仍然可以找到他们所知道的工具以与以前相同的方式工作。当需要不兼容的更改时,我们寻求提供迁移解决方案,例如,用shell脚本替换弃用的工具提供相同的功能,但在或通过提供更新用户程序的脚本自动反映CADP支持的语言更改。
-
质量:我们试图遵循软件工程的原则和严格的开发,通过设计可以多年来使用,变化有限。我们非常重视代码质量:用C编写的CADP工具编译时没有警告在严格的分析选项下使用各种编译器;CADP用LNT编写的工具在编译时也不会收到来自LNT和C编译器。
-
验证:开发了CADP的最关键部分在代码评审期间使用对等编程或校对。我们还执行密集的非回归测试。每天晚上,所有CADP演示示例在各种操作系统上执行和检查。对于每个CADP工具,我们都维护大型测试套件(总共几个数十万个模型和数百万行代码)用于检查工具的新版本。
你接下来面临的挑战是什么?
我们感谢ETAPS对我们工作的杰出贡献:时间的考验工具奖是对我们进行研究的有力激励。目前,我们看到至少三大挑战:
-
继续开发可供使用的语言和工具非专业人士。我们的本地LNT编译器已经迈出了重要一步朝这个方向。然后我们将考虑LNT和MCL,即用于建模并发系统的命令式语言以及用于表示系统属性的声明性语言。我们也在寻求提高自动化程度,例如通过协助用户用于成分验证。
-
利用现代处理器的功能提供更强大的性能。这是并行和分布式的目标验证工具,利用多核处理器和机器集群。这是一项具有挑战性的任务:顺序验证算法已经很复杂了,但它们并行或分布式增加了其复杂性的另一个维度。
-
缩小模型检查和定理证明之间的差距。LNT语言已经配备了断言顺序代码和并行代码中的后置条件。其中许多可以传递给SAT求解器和定理证明器进行检查他们的正确性。鉴于CADP的最新工具是用LNT(“自托管”)编写,这为形式化方法工具本身就是使用形式化方法开发的。
返回CADP主页