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