荷兰还有媲美光刻机的软技术:组件建模和分析框架Comma为复杂软件提供了高可靠性 – Bits&Chips


“对于像我们这样的以软件为中心的复杂系统,更改,集成和测试它非常昂贵,尤其是在我们所处的军事领域,您可能必须进行实时射击试验才能真正验证系统,”诺尔特斯说,他是是位于Hengelo的公司的软件架构师,“而且,即使是最微小的更新也可能导致大量的变化。然后归结为一个问题:您如何才能在不影响其余部分的情况下修改系统的一部分?”
要能够持续更新复杂的系统,您需要将更改限制在局部边界内,而要做到这一点,您需要专注于接口。
尽可能少地更改接口,因为它们的更换成本很高。通过接口您无法解决的较大问题最终将得到解决,但小问题还是仍然存在,其结果是代码质量将缓慢下降。因此需要研究不断发展的接口,以促进对变更的需求跟踪。
 
什么是Comma?
由ESI(TNO)和飞利浦发起了一项研究项目,Comma框架已经发展成为一种成熟的产品,用于创建和管理软件接口。Thales以及Thermo Fisher Scientific和Kulicke&Soffa也在寻求使用它来简化软件工程。
Comma(组件建模和分析)是一个生态系统,支持基于模型的组件工程。它是特定于域的语言(DSL)的组合,其中服务器和其客户端之间的接口可以通过三个主要成分指定:接口签名,允许的客户端-服务器交互以及时间和数据约束。
接口签名由命令,信号和异步通知组成。命令是同步的:调用者被阻塞直到收到答复为止,而信号是异步的:它们不会阻塞呼叫者并且不需要答复。状态机用于描述允许的客户端-服务器交互,例如,允许客户端调用的顺序以及在任何状态下来自服务器的允许的通知。

 
Comma在医疗复杂软件系统的应用
飞利浦医疗保健公司Best的软件经理Daan van der Munnik表示:“我们的医疗设备正在变得越来越大。” “我们必须将它们分成较小的子系统,以保持其开发可管理性,同时也用于验证目的。直到一年前,我们还一口气验证了完整的设备-付出了巨大的努力。通过将其切碎成较小的子系统,我们可以将验证工作集中在我们为特定功能而实际修改上。我们还需要证明,当我们将所有内容放在一起时,它仍然可以完成应有的功能。拆卸和重新组装都需要良好的接口管理。”
 
子系统也越来越多地被分包给分包商。Van der Munnik指出:“我们实际上是在进行系统级开发,我们自己制造一些零件,而某些零件则来自外部。” “例如,在我们的一种图像引导治疗系统中,我们有三种类型的患者床。一个是我们开发的,另外两个是其他公司制造的。但是,从用户角度来看,它们都必须看起来是系统的组成部分。例如,在移动或倾斜时,用户体验必须完全相同。这意味着,对于我们的分包商而言,需要在较低的技术水平和较高的子系统水平上明确定义接口。”
 
最后但同样重要的是,良好的接口管理是系统发展的关键。Van der Munnik:“我们的医疗设备使用寿命很长。我们需要确保它们在其生命周期内是可扩展的,并且适合于形式/装配/功能的替换。”
 
真理的单一来源
ESI是荷兰应用科学研究组织(TNO)的高科技嵌入式系统联合创新中心。 ESI高级科学家Jozef Hooman回忆说:我们开始将领域特定的语言用于各种目的,生成代码,分析工具等等。这样做的时候,我们注意到飞利浦软件的许多问题都是由于接口问题引起的,逐渐地,我们发现这些DSL对于描述接口特别有用。因此,只需一小步,我们就可以从通用语言过渡到特定领域的语言:Comma,我们可以在许多不同的接口中重复使用它。
 
我们检查了飞利浦工程师的需求,并相应地调整了语言。我们从描述接口协议(即客户端和服务器之间的交互)的状态机开始。根据用户反馈,我们对其进行了修改以使其更加用户友好,并包括诸如计时和数据约束之类的内容。例如,患者病床对时间和数据都非常敏感–当控制操纵杆停止时,病床应该在一定时间内停止也不要移动太多。 
 
逗号逐步地发展成为现在:“真理的唯一来源”。这个DSL是您表达想要的一切的地方,从那里可以生成所需的一切,例如文档,监视,模拟,可视化以及最近的测试用例。监控尤其重要。您可以使用它通过运行系统,收集跟踪并检查执行是否符合接口来查看您的实现是否满足规范。如果接口发生更改,您可以重新生成所有内容,并且如果您的开发人员或与此相关的第三方供应商引入了软件更新,则可以连续按一下按钮,检查是否符合要求,测试过程中不可或缺的一部分。
 
生态系统
在飞利浦,Comma已牢固地嵌入公司的软件工程实践中。Van der Munnik:“我们使用DSL编写接口规范并生成文档和代码。作为我们持续集成流程的一部分,我们在执行自动化测试方案时会检查接口是否符合Comma规范。我们创建了一个成熟度矩阵,该矩阵针对这些开发阶段设置了我们的接口,现在我们提高了所有这些标准的。由于接口的明确定义和随后的自动验证,在我们早于集成之前就发现接口问题的原因,Comma为我们带来了巨大的商业价值。”
 
两年前,Thales启动了Dynamics项目,与ESI合作研究动态系统更新。“我们正在研究可扩展的接口和所谓的适配器,以使新旧设备保持协同工作,” Noltes澄清说。“因此,当您引入具有更新接口的客户端时,还会生成一个适配器,将其连接到现有服务器,并证明可确保不会发生任何故障。ESI对接口规范进行了一次小型技术调查,然后Comma作为最适合我们需求的解决方案问世。尽管Dynamics仍在继续研究中,但Comma已经开箱即用,我们正忙于将其包含在组件开发框架中。通过在设计时做更多的事情,我们希望消除项目中的大部分风险。”
 
但可以肯定的是,Comma正在慢慢征服荷兰的高科技。“例如,我们还在埃因霍温与Thermo Fisher Scientific合作,” ESI的Hooman说道。“对于某些关键接口,已在夜间烟雾测试中建立了模型并内置了监视器,该监视器会自动检查日志文件。早上,他们可以看到哪些属性已失败。同样来自埃因霍温的Kulicke&Soffa正在考虑为其中间件层生成一个生成器。” ESI与Dynamics项目的联络人高级研究员Benny Akesson补充说:“看到这个生态系统开始形成,这很有趣。”
 
为了进一步扩大传播范围,合作伙伴正在努力将框架开源。Hooman:“我们正在以Eclipse插件的形式定义一种Comma内核,其他人可以扩展,例如使用自己的生成器。” Van der Munnik强调了这一发展的重要性:“它增加了Comma的成熟度。从研究项目开始,现在是开发人员可以实际使用的产品,包括用户界面,速度,安装简便性等。通过将其开源,我们希望其他人能够为Comma做出贡献,从而进一步扩展和改进该框架。”