面向 Java 程序的形式化技术与面向对象软件开发方法自动化
一、Java 程序形式化技术相关研究
- 脆弱基类问题分析
- 问题提出 :当有一个正确的基类和一个正确的派生类,对基类进行修改后,基类仍然正确,但派生类可能不再正确,这就是脆弱基类问题。基类开发者可能不清楚派生类的存在,难以确保派生类的正确性,这反映了基类规范的弱点。
- 解决方案 :Kees Huizing 和 Ruurd Kuiper 提出“合作契约”规范形式和“强化行为子类型”概念。强化行为子类型要求从基类继承的非私有方法(在派生类中未被重写)必须保留派生类可能更强的不变式。开发者可使用基类源代码进行证明,也可重写基类方法。“合作契约”允许方法的后置条件引用其调用的其他方法的后置条件,基类开发者可通过这种方式为未来派生类做规划。
- 顺序 Java 的精化演算
- 精化演算概念 :精化演算是用于系统开发正确程序的形式化方法,包括算法精化和数据精化。数据精化是用不同的数据结构和方法替换原有的。
- 研究内容 :Cavalcanti 和 Naumann 将精化演算思想扩展到类,允许用另一个实现替换类的实现。精化步骤需通过前向模拟关系证明正确性,该关系将原(抽象)类的状态与替换(具体)类的状态关联起来。研究中有两个意外发现:一是前向模拟必须是满射的;二是如果语言有天使变量,
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



