OO 2019 第三单元博客作业

1.JML语言的理论基础 & 应用工具链情况

  • JML概述

Java建模语言(JML)是Java程序的规范语言,它使用Hoare风格的前后条件和不变量,遵循契约范式的设计。规范被写成源代码文件的Java注释注释,因此可以用任何Java编译器编译。JML是Java模块的行为接口规范语言。JML提供语义来正式描述Java模块的行为,防止模块设计者意图的模糊性。JML继承了来自Eiffel、LaCH和精化演算的思想,其目的是提供严格的形式语义,同时仍然可以访问任何Java程序员。可以使用各种工具来使用JML的行为规范。因为规范可以被写入Java程序文件中的注释,或者存储在单独的规范文件中,JML规范的Java模块可以与任何Java编译器一起编译不变。Java建模语言(JML)将注释添加到Java代码中,这样我们就可以确定哪些方法在执行,而不必解释它们是如何执行的。使用JML,我们可以在不考虑实现的情况下描述方法的预期功能。这样,JML将延迟过程设想的面向对象原则扩展到方法设计阶段。JML为描述性描述行为引入了许多构造。这些构造包括模型域、量词、断言的可见性范围、前提条件、后置条件、不变量、契约继承以及正常和异常行为的规范。这些构造使JML非常强大,但是不需要理解或使用所有这些构造,也不需要立即使用所有这些构造。

https://en.wikipedia.org/wiki/Java_Modeling_Language

  • 应用工具

实际上JML工具有很多,但常用的工具有OpenJML 、 JUnit 、JMLUnitNG等。Open JML是一个单元测试包,可以通过编写单元测试类和方法,来实现对类和方法实现正确性的快速检查和测试。还可以查看测试覆盖率以及具体覆盖范围(精确到语句级别),以帮助编程者全面无死角的进行程序功能测试。

2.架构设计

 

3.bug和修复情况

 在第一次作业,因为还不明白怎们写就没法写。

在第二次作业Bug在实现Mycontainer的时候出一点BUG

在第三次作业Bug在实现Myrailway的时候出一点BUG,而写不出到底要用什么变量类型。

 

4.心得体会

在这次作业,第一次作业还不太明白要怎么做。第一次作业开源代码里边要实现的类的时候我还不明白要怎么生命变量,或者到底要怎么做。然后第二次作业看了助教发的上机实验样例,大概就明白了要怎么开始做。后来的作业我在声明变量出一点问题,就是要怎么声明变量,而变量类型要用ArrayList,Graph等。过了这段作业以后我学到了关于JML和规格,JML第一次使用可能会不明白要怎么用,但看了一些教程,慢慢就学会了。感觉这工具以后肯定会有用的。我也觉得能学会读写规格是一个好处,而且对我很有帮助。

 

posted @ 2019-05-22 16:10  Michael_张金源  阅读(140)  评论(0编辑  收藏  举报