Event-B在工业微处理器开发中的应用经验
1. 工具使用体验
标准的Event - B符号虽能描述指令集架构(ISA)的所有必要方面,但效率不高。模型事件存在过多重复,可通过将多个语句封装成宏公理语句以及使用“extends”函数来缓解,但这种方法与事件细化层次结构的集成不兼容。
与小型复杂学术Event - B模型的典型验证过程不同,ISA规范中的错误通常并非直接通过证明消解发现。而是通过精心构建和模拟事件,在大型但简单的模型中捕获成功的指令执行,然后系统地构建反例(如异常)来实现合理描述。证明消解在确保大量事件的模型合理性方面起着关键作用,模型产生了大量“定义良好性”证明义务,这些义务确保了所有不同组件以兼容的方式组装。不过,也有一些错误是直接发现的,例如地址偏移计算中隐含的模加法,其结果的定义良好性证明失败就表明了这一问题。
在证明消解方面,必须消解所有证明义务,因为给定功能中最后几个待消解的证明义务往往会揭示错误。若不消解所有证明义务,像这样的扁平模型与用非形式化语言编写的模型相比,几乎没有额外价值。
证明消解过程受扩展性问题主导,许多原本可自动消解的证明需要人工干预。为缓解这一问题,投入了大量精力重构模型和增强证明工具,但仍有36%的证明义务需手动消解,且对模型早期水平分区的修改需谨慎考虑。Rodin工具缓存和重新应用轻微修改后的证明的能力有一定帮助,但许多更改(如变量重命名)会破坏大量证明,需要完全重新证明,这在工业领域是个问题。
与许多专有工具不同,Rodin为用户和第三方扩展开发提供了良好支持。其开源模式通过提供丰富且易于获取的示例,促进了新开发(如B2C工具的开发受富文本文档生成器的启发)。除插件开发外,开源还允许修改