BUAA_OO第三单元总结性博客作业——JML

一、JML

在第三单元的面向对象课程中我们第一次接触了JML语言以及基于JML规范的规格化设计。在之前一系列关于面向对象思想的学习认识中,我们知道了Java是一种面向对象的语言,面向对象思想的一个重要原则就是将过程性的思考尽可能地延迟。而作为Java建模语言,JML给予了我们一种全新的方式来看待Java的类和方法,其通过将一些符号语言显式地插入到Java程序代码中,来描述一个方法所要求的前提以及期望达到的效果,而将过程性的思考延迟到了方法的设计中。

JML理论基础

JML是用于对Java程序进行规格化设计的一种表示语言,是一种行为接口规格语言,基于Larch方法构建,BISL提供了对方法和类型的规格定义手段。

使用JML来声明性的描述一个方法或类的预期行为可以显著提高整体的开发进程,JML引入了大量用于描述方法行为的结构,例如:模型域、量词、断言可视范围、预处理、后出路、条件继承、正常行为规范以及异常行为规范等。将这些建模标记,以JAVA注释的方式加入到程序代码中,对正常编译没有影响,并且能够精确地描述代码、减少bug的出现以及规范用户对类与方法的使用。JML可用于开展规格化设计,在代码工作开始前规范代码行为,也可针对已有的代码实现书写其相应规格,从而提高可维护性。

JML应用工具链情况

可以使用开源的JML编译器来编译含有JML标记的代码,所生成的类文件会在运行时自动检查JML规范,若程序未实现规范中规定的事情,JML运行期断言检查编译器会抛出一个unchecked exception来说明程序违背了哪一条规范。JMLdoc工具与Javadoc工具类似,可在生成的HTML格式文档中包含JML规范,JMLUnit可以生成一个Java类文件测试的框架。SMT Solver工具可以以静态方式来检查代码实现对规格的满足情况。

二、SMT Solver

三、JMLUnitNG/JMLUnit

四、架构设计

五、bug与修复

六、对于规格的心得体会

猜你喜欢

转载自www.cnblogs.com/hkywwr/p/10887810.html