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