基于元数据的Java平台契约式设计框架研究

基于元数据的Java平台契约式设计框架研究

论文摘要

契约式设计方法是面向对象软件工程中用于提高可靠性的形式化方法学。然而,在主流的开发语言中,并没有内建契约式设计的支持。为了使契约式设计方法使用更为方便,就需要在语言层次中加入契约式设计的支持。本文首先探讨了在Java平台上实现契约式设计的可选方案。目前主流的解决方案都实现了声明式编程的契约声明模型。在契约验证的方式上,有代表传统的静态工具的JML,也有采用AOP和JSR-175等较新技术的Contract4J。由于后者在易用性、可扩展性等方面更胜一筹,因此本文着重以后者为对象展开研究。研究发现,Contract4J在自动处理契约继承、保存契约验证时所需的“旧状态”以及性能和可动态管理等方面存在一定的不足。于是,以解决上述问题为目标,设计并实现了一个采用AspectJ和JSR-175元数据机制的动态契约式设计框架,命名为EasyDbC。EasyDbC利用AspectJ和JSR-175的特性,实现了契约的“叠加继承”,从而解决了使用JSR-175的契约元数据无法自动继承的问题。采用对象序列化技术解决“旧状态”的保存问题。同时,通过增加基于JMX的动态管理功能,使得开发及维护人员能够更有效地利用契约验证功能。EasyDbC赋予了开发人员将契约式设计以及契约验证从开发过程到正式运行环境的平滑过渡的能力,使得契约式设计方法得到更广泛的应用。

论文目录

  • 摘要
  • Abstract
  • 1 面向对象软件工程及契约式设计基础
  • 1.1 契约式设计概述
  • 1.1.1 传统面向对象编程语言的不足
  • 1.1.2 契约式设计
  • 1.1.3 继承体系中的契约
  • 1.1.4 契约式设计在工程中的意义
  • 1.2 Java 语言和契约
  • 1.3 在Java 语言中实现契约式设计
  • 1.4 本章小结
  • 2 契约式设计框架的编程模型
  • 2.1 契约式设计框架的外部编程模型和内部编程模型
  • 2.2 外部模型——Java 中表述契约的编程模型
  • 2.2.1 元数据和契约
  • 2.2.2 独立契约模型
  • 2.2.3 声明式编程模型
  • 2.3 Java 中的声明式元数据
  • 2.3.1 Java 5 之前的元数据——XDoclet
  • 2.3.2 Java 5 的元数据——Annotation
  • 2.4 内部模型——契约验证过程的透明化
  • 2.4.1 面向方面软件开发与元数据
  • 2.4.2 以方面织入的形式实现透明的契约验证
  • 2.5 本章小结
  • 3 对目前契约式框架的实现及改进的分析
  • 3.1 基于声明式元数据契约式设计框架的两大派系
  • 3.2 Contract4J 的基本架构
  • 3.3 Contract4J 所存在的不足
  • 3.3.1 Contract4J 在契约模型上的不足
  • 3.3.2 Contract4J 在性能上和可管理性的不足
  • 3.4 EasyDbC 的设计目标
  • 3.5 本章小结
  • 4 EasyDbC 的外部及内部编程模型
  • 4.1 EasyDbC 概述
  • 4.2 EasyDbC 的契约表述模型
  • 4.2.1 契约元数据
  • 4.3 EasyDbC 的契约验证模型
  • 4.3.1 契约验证的联接点
  • 4.3.2 采用LTW 机制织入方面
  • 4.3.3 运行时取得契约
  • 4.3.4 处理契约的继承
  • 4.3.5 改进获取契约的性能
  • 4.3.6 为契约工厂增加缓存
  • 4.4 本章小结
  • 5 契约验证及违约处理
  • 5.1 契约验证机制概述
  • 5.1.1 选择适用的表达式解释引擎
  • 5.2 基于OGNL 的契约求值引擎
  • 5.2.1 契约验证上下文中的关键对象
  • 5.2.2 保存对象的“旧状态”
  • 5.3 契约违约通知机制
  • 5.3.1 处理由于契约声明不正确而引起的异常
  • 5.3.2 处理由于违反契约引起的异常
  • 5.4 EasyDbC 与Contract4J 的性能对比
  • 5.5 可管理性
  • 5.6 本章小结
  • 6 全文总结
  • 6.1 主要结论
  • 6.2 研究展望
  • 参考文献
  • 致谢
  • 攻读硕士学位期间已发表或录用的论文
  • 相关论文文献

    标签:;  ;  ;  ;  

    基于元数据的Java平台契约式设计框架研究
    下载Doc文档

    猜你喜欢