运行时对象不变式监控与轻量级容器架构
1. 运行时对象不变式监控
在运行时对对象不变式进行监控是确保程序正确性的重要手段。这里介绍一种基于AOP(面向切面编程)的方法,通过自动跟踪依赖关系和验证状态变化来检测对象不变式的违反情况。
1.1 自动依赖跟踪与验证
为了实现自动依赖跟踪,对程序有一些限制条件:
- R1 :在执行 o.Inv()
期间读取的每个字段 f
必须是内置类型或 ObjWInv
的子类型。
- R2 : o.Inv()
的执行不能修改任何状态。
同时,对AOP环境有以下假设:
- A1 :可以检测到类型为 ObjWInv
的对象 p
的字段 p.f
的每次读访问。
- A2 :可以检测到类型为 ObjWInv
的对象 p
的字段 p.f
的每次值变化。
- A3 :可以检测到类型为 ObjWInv
的对象的初始化。
基于这些限制和假设,通过以下步骤实现依赖跟踪和验证:
1. 在对象 o
构造后调用 Star