JML】的更多相关文章

一.前言 本单元作业都是关于JML(Java Modeling Language),JML是一种契约式设计(Design by Contract)的语言,契约式设计的主要目的是希望程序员能够在设计程序时明确地规定一个模块单元(具体到面向对象,就是一个类的实例)在调用某个操作前后应当属于何种状态,它强调三个概念:前置条件,后置条件和不变式,要求输入的参数满足前置条件,要求函数完成时的状态满足后置条件,要求函数开始运行和结束运行时满足不变式,即对调用者来说不变式总是为真,而对函数内部来说不变式可以为…
面向对象设计与构造:JML规格单元作业总结 第一部分:JML语言理论基础 JML语言是什么:对Java程序进行规格化设计的一种表示语言 使用JML语言有什么好处: 用逻辑严格的规格取代自然语言,照顾马龙的语文水平.一切挑战规则的行为必将受到严厉惩罚 代码维护性高,让大牛的代码不再晦涩,让轮子制造机无机可乘 JML(Level 0)语法 单行注释 //@ public model non_null int [] elemen[]ts; JML规格所管理的数据(规格变量),并非类的组成部分,non_…
1 JML语言的理论基础及应用工具链 1.1 JML语言 Java建模语言(JML)是一种行为接口规范语言,可用于指定Java模块的行为.它结合了Eiffel的"契约设计(design by contract)"方法和Larch系列接口规范语言的基于模型的规范方法,以及细化演算的一些元素.对JML语言起到理论支撑作用的文章主要是以下三篇: Leavens G T, Cheon Y. Design by Contract with JML[J]. 2006. 这篇文章解释了JML语言作为…
第三单元的课题是JML, 即java建模语言.JML是一种描述接的语言.通过前置条件和后置条件,描述一个模块的行为.本单元我们扮演一个项目中的一员,完成自己的一小部分工作,最终实现整个项目.而限制我们这一小部分工作应该如何进行的正是JML. 一.什么是JML JML是一种java建模语言,有自己独特的语法,通过这套语法对前置条件,后置条件,变量不变式的控制,来描述一个模块的功能和行为.由于JML的语法更像是编程语言和算式,所以相比自然语言,JML虽然稍显复杂,却可以明确无二意的描述出模块的功能行…
目录 写在前面 JML理论基础 JML工具链 JMLUnitNG的使用 架构设计 Bug分析 心得体会 写在前面 OO的第三单元学习结束了,本单元我们学习了如何使用JML语言来对我们的程序进行规格化设计.并对openjml以及JMLUnitNG.JUnit等工具的使用有了初步的了解. JML理论基础 注释结构 JML以javadoc注释的方式来表示规格,每行都以@起头. JML表达式 JML表达式有一下几种: 原子表达式:如\result,\old等. 量化表达式:如\forall,\exist…
一. JML语言 1. 理论基础 首先,JML不是JAVA的一部分,它是一群研究者为JAVA设计的扩展部分,但还没有得到官方的支持.因此,JAVA编译器并不支持JML,所以要想JML起作用,只能采用类似openJML这样的第三方来编译,将JML 规格编译为运行时检查的语句,即RAC code(runtime assertion checking).如果代码实现与其JML规格不一致,将引发运行时JML exception. JML遵从契约式设计范式(DBC),Design by contract是…
• 1.JML语言的理论基础.应用工具链情况 JML(Java Modeling Language)—— java建模语言,是一种行为接口规范语言( behavioral interface specification language, BISL).同时,JML也是一种进行详细设计的符号语言,它鼓励你用一种全新的方式来看待Java的类和方法,既规定了方法或抽象数据类型的接口,也规定了它们的行为. 面向对象的分析和设计(OOAD)的一个重要原则就是过程性的思考应该尽可能地推迟,先以一定的规范建立…
一.JML简介 1.1 JML与契约式设计 说起JML,就不得不提到契约式设计(Design by Contract).这种设计模式的始祖是1986年的Eiffel语言.它是一种限定了软件中每个元素所必需的责任与义务的开发模式,程序设计中的每个元素都需要用规范的语言精准地限定其前置条件(Preconditions).后置条件(Postconditions)和不变式(Invariants).通过这三项限定,我们可以清晰地获得对一个函数功能的刻画,从而达成设计与实现的分离,便于优化.测试和生成文档.…
目录 JML语言学习笔记 理论基础 应用工具链情况 JMLUnit/JMLUnitNG UNIT3 作业分析 作业 3-1 实现两个容器类Path和PathContainer 作业 3-2 实现容器类Path和数据结构类Graph 作业 3-3 实现容器类Path,地铁系统类RailwaySystem 规格撰写的心得与体会 最后,衷心感谢为这门课程辛苦付出的老师和助教.…
梳理JML语言的理论基础.应用工具链情况 JML语言理论基础 JML(Java Modeling Language)是一种行为规范接口语言,通过使用不会被编译的注释形式,和固定关键字的语法,指定Java模块代码的行为.这些行为包括需要满足的前置条件.后置条件,和可能产生的副作用等.它贯彻了契约方法设计理念,通过JML及其支持工具,不仅可以基于规格自动构造测试用例,并整合了SMT Solver等工具 以静态方式来检查代码实现对规格的满足情况. JML的语法.关键字及其释义如下所示: JML以jav…