北航oo作业第三单元小结】的更多相关文章

一.梳理JML语言的理论基础 1.jml的注释结构 jml注释语言的每一行都以@作为开始,若是块注释,则需要在注释块的首尾使用/*@ 与@*/ 2.jml的表达式体系 1.原子表达式 表达式可以看作是一个原子类型,常见的有\result表达式(用于表达某个方法执行后的结果).\old表达式(用来表示某个对象执行某操作之前的值). 2.量化表达式 量化表达式是对给定范围内对象批量操作的表达式,其存在大大简化了jml语言,常见的有\forall表达式(范围内对象,都要满足某要求).\exists表达…
1.总结本单元两次作业的架构设计 在我动手开始总结我的设计之前,我看了其他同学已经提交在班级群里的博客,不禁汗颜,我是真的偷懒.其他同学大多使用了新建一个类,用以储存每一个UMLelemet元素的具体信息(当然这个类的形式可能是结构.map等等,但核心思路大体一致).在设计这个类的时候,大多数同学都遇到了困难,耗费了大量的时间精力. 下面我来讲一下,我的第一次作业的架构设计: 最开始,我查看方法描述,考虑如何实现方法的时候,惊喜的发现,UMLelemet数据类型的对象是可以实行操作的!这样一来,…
一.JML理论基础及相关工具链 1.JML理论基础 该部分梳理本单元作业中涉及到的JML知识. 1.1注释结构 JML采用javadoc注释的方式来表示规格,且每行以@开头.通过使用//@annotation来进行行注释,使用/*@annotaion@*/来进行块注释. 1.2JML表达式 1.2.1原子表达式 \result表达式,在方法规格中使用,通过\result来指代返回值.在谓词中使用\result,来表达放回值的限制条件. \old(expr)表达式,返回表达式expr在方法执行之前…
目录 一.JML语言理论基础及应用工具链 二.部署JMLUnitNG,自动生成测试用例 三.架构设计 第一次作业 第二次作业 第三次作业 四.Bug分析 五.心得体会 一.JML语言理论基础及应用工具链 理论基础 官网定义: Java建模语言(JML)是一种行为接口规范语言,可用于指定Java模块的行为 .它结合了Eiffel的契约方法设计 和Larch系列接口规范语言的基于模型的规范方法 ,以及细化演算一些元素 . 用法: (1)开展规格化设计.这样交给代码实现人员的将不是可能带有内在模糊性的…
前言 在经过了三次艰辛的oo作业后,oo课程的第一单元告一段落,这一单元,我作为一个oo小白,开始了解oo的编程思想,也有了自己的一点心得体会.把笔粗成字,不当之处,还请各位大佬多多指教. 一.分析程序结构 第一次作业: 在第一次作业中,由于刚刚开始接触oo的思想,我还不是很了解面向对象的编程方法,还是按照c语言的思路,将deriviation作为main函数,在deriviation中调用number类,完成运算. 具体的操作思路,则是使用正则表达式构造出因子与项,通过正则式匹配来得到每一个项…
目录 总 JML规格化设计 理论基础 工具链 规格验证 验证代码 代码静态检查 自动生成测试样例 生成结果 错误分析 作业设计 第九次作业 架构 代码实现 第十次作业 架构 代码实现 第十一次作业 架构 代码实现 心得体会 参考 总 本博文是2019年北航面向对象(OO)课程第三单元作业(规格化设计)的总结.三次作业的要求大致如下: 第一次作业:实现一个路径管理系统,可以通过各类输入指令来进行数据的增删查改等交互. 第二次作业:实现一个无向图系统,可以进行基于无向图的一些查询操作. 第三次作业:…
一.第四单元架构设计 1.第一次作业 我在本次作业中设置了多个储存结构:Directory,ElementsInName,ElementsInId,Cache. Directory: 顾名思义,这是个目录结构,可以通过一个UmlElement的id来获得他的子元素(储存结构上的子元素).之所以设置这个结构是因为这个结构是UML中最基本的组织结构,通过UmlElement的一些属性可以快速的建立起来. ElementsInName: 在这个结构中,可以通过一个元素的名字,获取所有同名的元素.设置这…
目录 JML理论基础 JML工具链 openjml使用 openjml总结 jmlunitng使用 代码分析 第一次作业 第二次作业 第三次作业 测试&bug分析 黑盒测试 白盒测试(Junit) 总结 JML理论基础 jml是基于一阶谓词逻辑来对类进行形式化描述的语言,jml语言通过表达式.方法规格.类规格三个部分来进行描述.其中表达式是在java语言的基础上扩展了非修改类型的表达式:方法规格中包括了前置条件.后置条件.副作用作用范围三个部分:类规格包含不变式和状态变化约束两个部分.jml相较…
一.JML 语言的理论基础及应用工具链 JML 是一种行为接口规格语言,提供了对方法和类型的规格定义手段.通过 JML 和其支持工具,不仅可以基于规格自动构造测试用例,并整合了 SMT Solver 等工具以静态方式来检查代码实现对规格的满足情况. 1.1 方法规格 JML 中的前置条件指的是在调用方法之前必须要满足的条件: 后置条件指的是该方法返回时必须要满足的条件,即制定了该方法的指责: 副作用范围限定指的是在执行过程中可能(允许)被修改的对象的属性数据或者类的静态成员变量. 1.2 类型规…
一.梳理JML语言的理论基础 (1)理论基础 JMl的出现很大程度上一为了行为接口的规范化,用这种语言来指定特定模块的特定功能.JML的核心部分分为三个部分:前置条件(requires).后置条件(ensures).副作用(assignable).通过JML的使用,程序员可以轻松的描述一个方法的与其功能而不用管具体的实现方法,JML把过程性的思考延迟到了方法的设计中,从而扩展了面向对象设计的这个原则. (2)应用工具链 OpenJML可以检查JML描述语言语法的正确性.以及所实现的代码能否满足J…