发明名称 Java中的可变性分析
摘要 公开了一种检测在一个任意程序组件中字段和类的可变性的系统和方法,所述程序组件用面向对象的编程语言书写。如果其内存储入一个新值的话,及如果它的任何可到达的变量是可变的话则一个变量被认为是可变的。该系统和方法使用一个静态分析算法,它可以应用于任何软件组件而不是整个程序。该分析将字段和类或者分类为可变的、或者为不可变的。为便利开放世界分析,该算法识别这样的情形,即通过在该组件以外的代码暴露变量于可能的修改,以及这样的情形,即由被分析的代码修改变量。介绍了本分析的一个实现,它集中在检测类变量的可变性,以便避免分离问题。该实现结合过程内和过程间的数据流分析,并被证明是可高度缩放的。实验结果演示出该算法的有效性。
申请公布号 CN1754151A 申请公布日期 2006.03.29
申请号 CN01815982.6 申请日期 2001.09.17
申请人 国际商业机器公司 发明人 L·科维德;B·门德尔森;S·珀拉特;M·比伯斯泰恩
分类号 G06F9/45(2006.01) 主分类号 G06F9/45(2006.01)
代理机构 中国专利代理(香港)有限公司 代理人 吴立明;王勇
主权项 1.一种检测一个程序组件中变量、对象、字段、和类的可变性的方法,所述组件用面向对象的编程语言书写,包括步骤:判定在该程序组件中的任何变量是否可以经受第一类型状态修改,所述第一类型状态修改由该程序组件中的至少一种方法进行;执行封装分析以判定在该程序组件中的任何变量是否可以经受第二类型的状态修改,所述第二类型状态修改由不在该程序组件中的至少一种方法进行;其中,如果在一个变量初始化以后它的状态曾经改变的话则所述变量是可变的,所述变量的状态是它的值连同任何引用的对象的状态;其中,如果在一个对象初始化以后它的状态曾经改变的话则所述对象是可变的,所述对象的所述状态是所有相关变量的状态的集合;其中,如果对应于一个字段的任何变量是可变的则所述字段是可变的;其中,如果由一个类实现的任何实例字段是可变的则所述类是可变的。
地址 美国纽约州