用户手册(GB8567——88) IA4J用户手册.doc

上传人:创****公 文档编号:1947575 上传时间:2019-11-05 格式:DOC 页数:17 大小:235KB
返回 下载 相关 举报
用户手册(GB8567——88)  IA4J用户手册.doc_第1页
第1页 / 共17页
用户手册(GB8567——88)  IA4J用户手册.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《用户手册(GB8567——88) IA4J用户手册.doc》由会员分享,可在线阅读,更多相关《用户手册(GB8567——88) IA4J用户手册.doc(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1国家 863 计划重点课题 可信软件生产工具及集成环境支持软件可信性分析和评估的生产线IA4J 用户手册版本:v1.0支持软件可信性分析和评估的生产线项目组2010 年 06 月 30 日21 引言引言.31.1 编写目的.3 1.2 背景.3 1.3 定义.3 1.3.1 属性的不变性.3 1.3.2 方法的不变性.4 1.3.3 类的不变性.4 1.4 参考资料.42 用途用途.52.1 功能.5 2.2 性能.5 2.2.1精度.5 2.2.2灵活性.53 运行环境运行环境.53.1 硬设备.5 3.2 支持软件.54 使用过程使用过程.64.1 安装与初始化.6 4.2 输入.7 4

2、.3 输出.7 4.3.1 分析结果的统计信息.8 4.3.2 分析结果的详细信息.85 附录附录 部分分析结果的详细信息部分分析结果的详细信息.1031 引言引言1.1 编写目的编写目的本手册是 IA4J 工具的用户手册,旨在帮助该工具的用户正确使用工具所提供的功能。 1.2 背景背景IA4J 是一个分析程序不变性的工具。它能够对 Java 程序的字节码进行静态分析,输出 该程序中所有的类,属性和方法的不变性信息。首先通过对 Java 程序的字节码进行静态扫 描获得程序中的基本信息,然后通过迭代的分析技术分析程序中各个类,属性和方法的不 变性信息。此工具由南京大学计算机系软件工程教研室独立设

3、计与开发完成。1.3 定义定义1.3.1 属性的不变性属性的不变性属性的不变性性质分为三类:不变(immutable) ,可变(mutable)和不确定(undecided) ,在不确定(undecided)的类别中又细分出引用逃逸(reference escape)一类,下面分四种具体情况进行说明(在这些定义中,都不考虑类的构造方法):属性是不变的,当且仅当该属性满足如下任意条件之一:(1)它是基本数据类型,并且没有被重新赋值;(2)它是引用类型,其指向关系没有被重新赋值,并且它所指向的对象所属的类是不变的;(3)它是引用类型,其指向关系没有被重新赋值,并且它所指向的对象所属的类是可变的,但

4、是该引用没有被逃逸,并且该引用没有调用可变的成员方法;属性是可变的,当且仅当该属性满足如下任意条件之一:(1)它是基本数据类型,并且被重新赋值;(2)它是引用类型,其指向关系被重新赋值或者它调用了可变的成员方法;属性是引用逃逸,当且仅当该属性是引用类型,其指向关系没有被重新赋值,但是该引用被逃逸,并且该引用所指向的对象所属的类是可变的;其它情况都是不确定的。41.3.2 方法的不变性方法的不变性方法的不变性性质分为三类:不变,可变和不确定,下面分三种具体情况进行说明:方法是不变的,当且仅当该方法同时满足以下所有条件:(1)该方法中不存在对属性的赋值语句;(2)该方法中没有调用引用类型属性的可变

5、成员方法;(3)该方法没有将那些所指向的对象所属的类是可变的引用类型属性逃逸;方法是可变的,当且仅当该方法满足以下任意条件之一:(1)该方法中存在对属性的赋值语句;(2)该方法调用了引用类型属性的可变成员方法;(3)该方法中存在将引用类型属性逃逸的语句,且这些逃逸的引用所指向的对象所属的类是可变的;其它情况都是不确定的(例如,该方法将引用类型属性逃逸,但是该引用所指向的对象所属的类是不确定的;该方法调用了引用属性的成员方法但是该成员方法是不确定的) 。1.3.3 类的不变性类的不变性类的不变性性质划分成三类:不变,可变和不确定,下面分三种具体情形进行说明:类是不变的,当且仅当该类中定义的所有属

6、性都是不变的;类是可变的,当且仅当该类中至少存在一个属性是可变的;其它情况都是不确定的(例如:该类中所有属性都是不确定的;该类中部分属性是不变的但是其他属性都是不确定的) 。1.4 参考资料参考资料于利前,王林章,雷斌,赵建华,李宣东. 静动态结合的 Java 程序不变性分析方法. 计算机学报,2010 年 4 月,第 33 卷(第四期).52 用途用途2.1 功能功能本工具的开发目的是:为程序员设计一套分析程序不变性的分析工具,方便程序员在 开发程序时能够利用程序中的不变性信息优化他们的程序,并且减少程序中一些隐藏的 bug 和缺陷。 本工具提供的主要功能有: 分析 Java 程序中类的不变

7、性 分析 Java 程序中属性的不变性 分析 Java 程序中方法的不变性2.2 性能性能2.2.1 精度精度IA4J 对时间的统计精确到毫秒级。2.2.2 灵活性灵活性本软件用 Java 语言开发,可在多种操作系统平台上运行,灵活性高。3 运行环境运行环境3.1 硬设备硬设备本系统对硬件设备没有硬性要求,为了性能起见,建议处理器 Pentium 2.0G, 内存1G.3.2 支持软件支持软件IA4J 要求用户平台上安装有 1.3 版本及以上的 JDK。 IA4J 支持在下列操作系统及平台上运行: Microsoft Windows 2000 全系列 Microsoft Windows XP

8、全系列 Linux 全系列64 使用过程使用过程4.1 安装与初始化安装与初始化IA4J 软件可从其主页 http:/ 上下载得到。 下载下来的是 IA4J.rar,解压缩 IA4J.rar 到任意一个目录,双击该目录中的 run.bat 文件,就启动了 IA4J 的主界面。 如下图所示,是 IA4J 的主界面。 标签“字节码目录”后面的文本框用于输入用户需要分析的字节码所存放的目录; 按钮“选择”用于打开目录选择对话框; 按钮“分析”用于启动不变性分析功能,并且将分析后的统计信息输出在界面上部的 文本框中; 按钮“详细信息”用于输出被分析程序中每个类,属性和方法的不变性信息。 按钮“退出”用

9、于推出分析程序。74.2 输入输入IA4J 的输入是被分析程序的字节码存放的目录,首先点击下图中的“选择”按钮。 点击完“选择”按钮就可以弹出如下的文件选择对话框,用于选择被分析的 Java 程序 字节码存放的目录。如下图所示,我们选择了一个被分析的程序的 bin 目录作为 IA4J 的输入。4.3 输出输出在 IA4J 的结果输出中,我们采用了两种方式的输出,一种是对被分析程序中所有的结 果进行一个统计,输出结果中包括如下信息: (1)被分析程序有多少的类,属性和方法; (2)可变的类,属性和方法有多少个; (3)不变的类,属性和方法有多少个; (4)不确定的类,属性和方法有多少个。输出结果

10、的另一种形式是,输出每个类,属性和方法的不变性信息。84.3.1 分析结果的统计信息分析结果的统计信息用户点击“分析”按钮就可以启动分析过程,分析完毕以后就可以输出分析结果的统 计信息。 如下图所示,是对开源的软件包 JUnit 的分析结果的统计信息。下面对分析结果进行一些解释: 总共的类的数目是 197 个,不变的类的个数为 171 个,可变的类的个数为 26,没 有不确定的类; 总共的属性的个数为 247 个,不变的属性的个数为 138 个,可变的属性的个数为 35 个,引用逃逸的个数为 74 个,不确定调用的个数为 0 个; 总共的静态属性个数为 29 个,其中不变的的个数为 26 个,

11、可变的数目为 2 个, 引用逃逸的个数为 1 个,不确定调用的个数为 0 个; 总共的方法个数为 863 个,不变的方法数目为 684 个,可变的方法数目为 50 个, 不确定的方法数目为 129 个。4.3.2 分析结果的详细信息分析结果的详细信息点击“详细信息”按钮,就可以在界面上输出分析结果中,每个类,属性和方法的不 变性的详细信息。如下图所示,是分析结果的详细信息。9由于详细信息的结果太长,无法在界面当中完全展示出来,我们用一个文本文件来保 存详细的统计信息。 我们将部分的分析结果放在了附录部分。105 附录附录 部分分析结果的详细信息部分分析结果的详细信息Total Class Co

12、unt: 197 Immutable Class Count: 171 Mutable Class Count: 26 Undecided Class Count: 0Total Field Count: 247 Immutable Field Count: 138 Mutable Field Count: 35 Escape Field Count: 74 InvokeUndecided Field Count: 0Total Static Field Count: 29 Immutable Static Field Count: 26 Mutable Static Field Count:

13、 2 Escape Static Field Count: 1 InvokeUndecided Static Field Count: 0Total Method Count: 863 Immutable Method Count: 684 Mutable Method Count: 50 Undecided Method Count: 129 Class junit.extensions.ActiveTestSuite$1immutableField null junit.extensions.ActiveTestSuite this$0immutableField private juni

14、t.framework.Test val$testescapseField private junit.framework.TestResult val$resultescapseMethod void (junit.extensions.ActiveTestSuite, junit.framework.Test, 11junit.framework.TestResult)immutableMethod void run()undecidedClass junit.extensions.ActiveTestSuitemutableField private int fActiveTestDea

15、thCountmutableMethod void ()immutableMethod void (java.lang.Class)immutableMethod void (java.lang.String)immutableMethod void (java.lang.Class, java.lang.String)immutableMethod void run(junit.framework.TestResult)mutableMethod void runTest(junit.framework.Test, junit.framework.TestResult)immutableMe

16、thod void waitUntilFinished()immutable12Method void runFinished()mutableClass junit.extensions.package-infoimmutableClass junit.extensions.RepeatedTestimmutableField private int fTimesRepeatimmutableMethod void (junit.framework.Test, int)immutableMethod int countTestCases()immutableMethod void run(j

17、unit.framework.TestResult)immutableMethod java.lang.String toString()immutableClass junit.extensions.TestDecoratorimmutableField protected junit.framework.Test fTestescapseMethod void (junit.framework.Test)immutable13Method void basicRun(junit.framework.TestResult)undecidedMethod int countTestCases(

18、)immutableMethod void run(junit.framework.TestResult)immutableMethod java.lang.String toString()undecidedMethod junit.framework.Test getTest()UndecidedClass junit.extensions.TestSetupimmutableMethod void (junit.framework.Test)immutableMethod void run(junit.framework.TestResult)immutableMethod void s

19、etUp()immutableMethod void tearDown()immutableClass junit.framework.Assertimmutable14Method void ()immutableMethod void assertTrue(java.lang.String, boolean)immutableMethod void assertTrue(boolean)immutableMethod void assertFalse(java.lang.String, boolean)immutableMethod void assertFalse(boolean)imm

20、utableMethod void fail(java.lang.String)immutableMethod void fail()immutableMethod void assertEquals(java.lang.String, java.lang.Object, java.lang.Object)immutableMethod void assertEquals(java.lang.Object, java.lang.Object)immutableMethod void assertEquals(java.lang.String, java.lang.String, java.la

21、ng.String)immutableMethod void assertEquals(java.lang.String, java.lang.String)immutable15Method void assertEquals(java.lang.String, double, double, double)immutableMethod void assertEquals(double, double, double)immutableMethod void assertEquals(java.lang.String, float, float, float)immutableMethod

22、 void assertEquals(float, float, float)immutableMethod void assertEquals(java.lang.String, long, long)immutableMethod void assertEquals(long, long)immutableMethod void assertEquals(java.lang.String, boolean, boolean)immutableMethod void assertEquals(boolean, boolean)immutableMethod void assertEquals

23、(java.lang.String, byte, byte)immutableMethod void assertEquals(byte, byte)immutableMethod void assertEquals(java.lang.String, char, char)immutable16Method void assertEquals(char, char)immutableMethod void assertEquals(java.lang.String, short, short)immutableMethod void assertEquals(short, short)imm

24、utableMethod void assertEquals(java.lang.String, int, int)immutableMethod void assertEquals(int, int)immutableMethod void assertNotNull(java.lang.Object)immutableMethod void assertNotNull(java.lang.String, java.lang.Object)immutableMethod void assertNull(java.lang.Object)immutableMethod void assertN

25、ull(java.lang.String, java.lang.Object)immutableMethod void assertSame(java.lang.String, java.lang.Object, java.lang.Object)immutableMethod void assertSame(java.lang.Object, java.lang.Object)immutable17Method void assertNotSame(java.lang.String, java.lang.Object, java.lang.Object)immutableMethod voi

26、d assertNotSame(java.lang.Object, java.lang.Object)immutableMethod void failSame(java.lang.String)immutableMethod void failNotSame(java.lang.String, java.lang.Object, java.lang.Object)immutableMethod void failNotEquals(java.lang.String, java.lang.Object, java.lang.Object)immutableMethod java.lang.String format(java.lang.String, java.lang.Object, java.lang.Object)immutable

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理手册

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com