上海交通大学硕士学位论文

基于契约式设计的Java编译器实现

学校:上海交通大学

院系:软件学院

专业:计算机软件与理论

班级:B0403791

学号:1040379006

作者姓名:张嘉铭

指导教师:赵建军

上海交通大学

2006年12月

基于契约式设计(DesignByContract,DBC)这一理论是由

BetrandMeyer提出的。DBC技术的核心是利用断言使方法及类的行

为受到契约的约束,因此,将DBC与高级语言相结合的方式成为DBC

技术的发展趋势。将DBC技术与现有的高级语言相结合的现有已实

现技术中,或多或少的存在着不足之处。同时,DBC与高级语言相

结合的方式不尽相同也带来了对于环境的不同的要求,在结合方式上

进行转变,为DBC与高级语言的结合寻觅新的途径已成为迫切的需

要。

VeriJava是由标准Java语言结合契约式设计方式而产生的新语

言,这一语言将契约作为语言要素添加入Java语言中,对方法进行

编译和运行时的检验,同时也通过类契约,不变量等契约要素,帮助

开发人员在开发的过程中及时找到设计错误或协调沟通问题,促进交

流与理解,检验与修正开发过程中所出现的各类设计错误等,使开发

过程更为完善。

本文通过实现一个基于VeriJava语法与语义检查,验证的编译器,

试图通过对方法的先决条件,后置条件以及对类契约,不变量等契约

要素的转换进行编译时与运行时验证,在逻辑上保证方法的正确性,契约式设计;Java;编译器DesignbyContract(DBC)ismentionedbyBetrandMeyer.Thekey

technologyofDBCistousethe“assertion”torestrictwhatthemethod

doesorwhatthewholeclassdoes,sothecombinationofDBCand

programminglanguagebecomesthetrendoftheDBCdevelopment.The

combinationtechnologyexistednowhavesomedisadvantagesandthe

differenceofwaysofcombinationbringupthedifficultyofenvironment

requirement.Seekingfornewcombinationmethodcomestobethe

urgentrequirement.

VeriJavaisanewprogramminglanguagewhichiscombinedofDBC

andstandardJavalanguage,itaddsnotonlythecontractasatotally

languagefactorintotheJavalanguagetoverifythemethodduring

runtimeandcompiletime,andalsousecontractintheclassareatohelp

thedevelopertofindouttheproblemofdesignorthemisunderstanding

betweenprogrammers,itcanalsousetocorrectthemistakesmadeduring

designdecadeandcoding,forbettersoftwaredevelopment.

ThispaperrealizeacompilerofVeriJavagra

java契约_基于契约式设计的Java编译器实现相关推荐

  1. java 状态机_基于 RAFT 一致性算法的 Java 实现 SOFAJRaft

    SOFAJRaft 是一个基于 RAFT 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景. 使用 SOFAJRaft 你可以专注于自己的业务 ...

  2. java令牌_基于令牌桶算法的Java限流实现

    项目需要使用限流措施,查阅后主要使用令牌桶算法实现,为了更灵活的实现限流,就自己实现了一个简单的基于令牌桶算法的限流实现. 令牌桶算法描述 令牌桶这种控制机制基于令牌桶中是否存在令牌来指示什么时候可以 ...

  3. 基于流式输入输出 使用Java借助GSON库 实现对大型asc文件的读入解析 并输出为JSON文件

    基于流式输入输出 使用Java借助GSON库 实现对大型asc文件的读入解析 并输出为JSON文件 致谢 1 为什么要使用流式输入输出(使用情景) 2 目标.主要思路及相关方法 2.1 目标 2.2 ...

  4. Java毕设项目基于的智慧小区(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目基于的智慧小区(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webs ...

  5. Java毕业设计_基于SSH的Java EE开发技术课程网站设计

    基于SSH的Java EE开发技术课程网站设计 基于SSH的Java EE开发技术课程网站设计mysql数据库创建语句 基于SSH的Java EE开发技术课程网站设计oracle数据库创建语句 基于S ...

  6. java 非侵入式_非侵入式设计 和侵入式设计 意思?

    非侵入式系介绍DI用语,我得理解是两个组件(类,接口)之间,比较独立,不深入到另一个类内部,哪位大虾能点拨一二? 关于"侵入式"和"非侵入式"设计 有读者讲&q ...

  7. 12306 java程序_基于java httpclient的12306 买票软件

    12306-hunter Java Swing C/S版本12306订票助手 本程序完全开放源代码,仅作为技术学习研究交流之用,不得用于任何商业用途:作者不承担任何由此带来的直接或间接责任 特别说明: ...

  8. java天地道,采用滑盖式设计,金属外壳!这台诺基亚手机,有多少人用过?

    说起诺基亚这款手机品牌,我相信大家或多或少都应该使用过吧?诺基亚曾经发布过不少经典造型的手机,而今天给大家带来"怀旧评测"的主角,则是来自诺基亚2008年发布的一款"E6 ...

  9. 前端设计 响应式设计_如何响应式设计

    前端设计 响应式设计 This guest post about responsive design comes from Krasimir Tsonev! 这个关于响应式设计的来宾帖子来自Krasi ...

最新文章

  1. 边工作边刷题:70天一遍leetcode: day 33-3
  2. 关于UIWebView与js交互的问题
  3. MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集
  4. SAP UI5 get route - local version VS central version
  5. 天池 在线编程 课程表(拓扑排序 + 回溯)
  6. 基于深度学习模型WideDeep的推荐
  7. c语言程序机试题及答案,C语言程序设计试题及答案解析(二)
  8. 数据结构与算法之KMP算法中Next数组代码原理分析
  9. azure云数据库_使用Azure Active Directory和Azure SQL数据库
  10. H5 表格标签基本使用
  11. UVa 714 抄书(贪心+二分)
  12. 今天,一起吐槽容器镜像中那些让人一言难尽的事情
  13. 如何将kux格式的视频转换成我们常用的MP4格式
  14. lcd1602c语言编程原理,简述lcd1602工作原理 lcd1602显示原理
  15. en开头的单词_大道至简:为什么记英语单词要先了解从拉丁语到法语的读音变化...
  16. Python chardet
  17. Linux错误码汇总
  18. iphone通过iTunes12.7怎么设置铃声
  19. 华为HCNA笔记-TO-BE-CONTINUED
  20. 通讯录实时云同步、云备份

热门文章

  1. python能做什么excel-python处理excel总结
  2. 简单python脚本实例-python脚本例子
  3. 自学python要多久-自学Python需要多长时间?
  4. python自动化办公演示视频-2020年最新Python自动化办公视频教程(2020/9/3)
  5. python画3d图-python之画三维图像
  6. python编程是啥-什么是Python编程课程
  7. python代码-让你的Python代码实现类型提示功能
  8. 论文笔记:语音情感识别(三)手工特征+CRNN
  9. 手机语音翻译的小妙招,一步一步教你!一键音频转文字
  10. 你了解语音识别技术吗?