码迷,mamicode.com
首页 > 其他好文 > 详细

OO第三单元总结

时间:2019-05-22 22:28:37      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:jks   方法   测试文件   结果   rac   运行时   数据   文件   面向   

技术图片1.JML语言的理论基础,应用工具链情况

 

JML 预言是一种能够用于约束 Java 模块行为的行为接口规范语言。它以特殊格式的注释块形式写在java代码中,描述java类中各方法模块的行为,实现对java程序进行规格化设计的目的。

 

契约式设计(Design by Contract)要求软件设计者为软件组件定义正式的,精确的并且可验证的接口。为传统的抽象数据类型又增加了先验条件、后验条件和不变式。Eiffel语言首先提供了按契约设计的概念,它关注的是用程序规定软件模块的权利和责任,以确保程序正确性。

JML语言具有以下特点:

  ·JML语言以注释的形式存在,对java程序的编译与运行没有影响。

  ·JML语言是逻辑语言,无二义性,便于团队之间交流和理解模块的功能。

  ·JML语言通过验证运行结果描述模块的功能,而不必描述中间过程的具体实现,为描述模块功能提供便利。

  由于JML语言的无二义性和验证结果的功能,可以通过程序解释JML语言并在运行过程中检测程序模块的正确性。

常用的JML工具有:

  • OpenJML:它能够检查JML中使用规范注释的Java程序,并为JML的许多功能提供强大的支持。是集合 JML 规格语法检查、一致性检查等功能的工具。
  • JML4C:能够指定并做运行时断言检查Java和AspectJ程序。Ajmlc使用面向方面的编译技术来提供显着改进的运行时断言违规消息,并且还可以与JavaME一起使用。基于 Eclipse Java编译器的 JML 编译器。
  • JMLUnitNG:为使用了 JML 注解的 Java 代码生成自动化测试文件的工具。
  • JMLOK:使用随机测试检查代码规格一致性并指出出可能的错误原因。
  • owa State JML:提供了断言检查编译器jmlc,可以将JML注释转换为运行时的断言

2、三次作业的架构分析

第一次作业:

uml类图:

 技术图片技术图片

 

 

第二次作业:

uml类图:

 技术图片技术图片

技术图片

 

 

 

第三次作业:

Uml类图:

技术图片

技术图片技术图片

 

 

 

 

 

3.按照作业分析代码实现的bug和修复情况

  • 第一次作业没有出现bug
  • 第二次作业没有出现逻辑上的bug,但由于dfs和dijkstra设计的问题,没有采用缓存,导致每次调用都要重新计算,使得程序效率较低,数个点超时
  • 第三次作业和第二次作业差不多,主要是因为没有缓存和优化不够导致的超时问题

 

4.心得体会

通过本单元的作业,我学习了jml的规格化表示,理解了规格化的概念,并深刻体会到了jml在程序设计方面的重要性。

但另一方面,jml也存在着一些问题,如表达过于繁琐,有些语句较难理解,有时候为了实现一个较为复杂的方法需要额外描述好几个简单一些的方法,同时还要为这些方法分别写jml语句,在复杂度和效率方面都不如自然语言,前两次的作业我仅仅通过jml就能很好的完成,但到了第三次,部分方法的jml实在难以理解,只能通过指导书,理解了该方法所要实现的功能,再结合jml才加以实现。

在这一单元的学习中,我深刻体会到了程序架构的重要性。对于相同的jml,不同人写出来的程序在性能和正确性方面都有着很大的区别,因此我认为jml的实现应该与程序架构的设计相结合,这样才能编写出更好的程序

 

OO第三单元总结

标签:jks   方法   测试文件   结果   rac   运行时   数据   文件   面向   

原文地址:https://www.cnblogs.com/shensuanzi/p/10908749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!