李龙飞
摘要:近年来,随着科学技术的进步,计算机技术发展速度的加快,使得软件价值也逐步提高,不管是软件系统的应用领域,还是其规模均获得了相应的扩大,且软件系统也便得非常复杂。而这些也在一定程度上加大了软件系统的开发、维护与测试工作的难度。鉴于这种情况,为有效地解决这些问题与难题,更加深入地了解在系统生命周期范围内系统变化规律,该文就基于复杂网络的Java程序分析工具设计以及实现思路进行详细地阐述。
关键词:复杂网络;设计;Java程序;思路;分析工具;实现
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)06-1246-02
1 概述
随着社会经济发展速度的加快,信息技术水平与人们生活水平的提高,使得复杂网络也越来越被人们所关注,对其的研究也逐步增多,且在社会学、生态学以及统计物理学等各个领域也获得相应的发展以及延伸。复杂网络自身具有大平均聚集系数小世界效应、幂律度分布物的无标度特性及小平均路径长度,这种网络为复杂系统演化规律以及整体行为的研究与描述提供了相应的工具。常见的软件系统主要由不同的粒度单元以及这些单元之间所存的这种交互关系所组成,基于此,也可将复杂系统看作是复杂网络。下面笔者基于自身多年工作经验的积累以及总结,就基于复杂网络的Java程序分析工具—JPAC工具为例,就其设计以及实现进行详细地阐述。
2 基于复杂网络的Java程序分析工具——JPAC工具
2.1 结构
JPAC工具就是建立一个复杂网络供于Java软件系统结构。该工具需分析Java程序代码,同时分析所建网络的网络特征,显示出其特征,并基于此模拟软件系统结构的演化规律。除此之外,该工具还可提供一种比较抽象的网络。基于上述内容,可将该工具按照层次来划分,其结构主要划分为三个模块,主要如下:
第一,数据分析层。在该工具中,数据分析层是最底层,该层不仅可与XML文档交互,同时还可与Java代码交互,最后再将交互过程封装。该层可不用依靠高层而存在,对此,用户可在数据分析层的基础上,结合自身的实际需求增加相应的功能。
第二,数据运算层。该层在数据分析层的基础上提供各种运行功能,比如统计分析或者演化模拟等。在此所指的运算为操作以及计算网络计算机,该层能够实现扩展。
第三,用户界面层。该层位于最上层,其主要的任务是可视化网络计算机,并可视化所得到的运算结果,以此为不同用户提供相应的操作等。
2.2 设计
1)数据分析层
第一,JPAC工具中数据分析层主要有三个方面的功能,即分析Java代码、生成网络计算机内部表示以及存取文件。当数据分析层读入的是Java文件,则判断为字节码文件还是为源文件,若为源文件,则先把其翻译并生成为字节码文件,并通过BCEL技术来进行分析,将基于该技术所获得的类信息来进行网络图的构建。若在工具运行过程中,读入的是XML类型的文档,则可用DOM技术来进行分析,同时基于此构建相应的网络图,该网络图不仅可应用于系统结构中的高层,同时还可借助于之前的文档形式来储存。数据分析层主要包含离五个类图,即ProgInput、XMLParse、DataLayer、JavaBinDataLayer、RandomDataLayer,其中ProgInput属于抽象类,其主要的功能为Java文件的读入和解析,为文件读入提供了抽象方法;XMLParse可实现XML文档的读入以及保存,在DOM技术的基础上解析XML文档;DataLayer为保存所建网络的一种抽象类;JavaBinDataLayer为保存在Java 系统结构的基础上建立网络的具体类;RandomDataLayer为保存随机网络具体类。
第二,JPAC工具在实际应用中,事实上只分析Java字节码文件,在对Java源代码文件进行处理的时候,应事先进行编译,以免做重复工作,且也便于在程序中分析以及管理大量的类。对于字节码的分析主要采取的是两种方式,即借助于Java虚拟机来进行间接分析和对Java字节码文件直接进行分析,由于前一种分析方式易受到虚拟机性能的约束以及限制等,因此,在本文所阐述的这一工具所用的分析方式后一种,即直接分析字节码文件,采用了BCEL技术,该技术分析起点为Java Class 类,基于BECL所提取得到的关于Java软件系统结构中各类的相关信息,可为系统建立Java SCG。
第三,XML 属于一种数据存储语言,其较为简单, 一般是通过标记的方式来描述数据。这种语言相对于以往的二级制语言来讲,尽管其占用的空间较多,但是由于其自身的简单性也使得其更加容易应用于各种应用程序来完成数据的读写。因此,在本次研究中,所介绍的JPAC工具,其存储形式为XML文档形式,该文档结合Java SCG的邻接表具体形式来描述全部节点,其中包含每一个节点的名字、图形显示位置以及实现的接口等。当JPAC按照XML文档来构建Java SCG时,需一次性将整个XML文档读入,对此,该工具借助于DOM技术来对XML文档进行解析,这种技术在一次性解析文档的同时,还可读入内存,将其保存为文档对象,以供于用户来访问,以此为每一个属性、元素以及文本等均构建相应的对象。当该文档转换为Java SCG以后,应马上将该文档所占的各个空间释放出来。
2)数据运算层
从上述内容可知,数据分析层其实就是一个独立的层次,是一种分析上层的网络软件系统。基于此,数据运算层能够实施各种运算。此外,数据预算层还是个能够扩充层次,在实际应用中,用户可结合自身需求来扩充功能。在统计分析和运算上,该工具主要从元素级特征以及网络级特征来计算Java SCG网络统计特征,该运算主要类图如下:DegreeData可达到度分布统计,其包含出度、入度以及总的度分布;StaGraph可统计网络级特征,其包含平均路径的长度与平均聚集系数;VertexSta可统计元素级中相关节点特征,其包含聚集系数与介数;EdgeSta可统计元素级中相关边的特征,其主要包含介数。在演化模拟运算上,主要是在模块软件演化模型的基础上来进行演化模拟。
3)用户界面层
在本次研究中,所介绍的这一工具,其界面所用框架为Eclipse RCP。其中RCP是基于Eclipse所开发的一种客户端应用平台,这一平台可为操作者提供一个功能强大以及快速的应用平台。借助于上述这一框架来进行开发,可使工具借助于扩展点来实施配置,便于用户扩展工具的。同时借助于Eclipse与Java所具备的跨平台性,能够使工具在不同平台下,甚者在掌上电脑或者嵌入式设备中运行,且Eclipse也为不同操作系统的运行提供了相应的本地图形接口包,在RCP正常运行的过程中,Eclipse事先通过本机窗口组件的直接调用,只有在无本机要求的组件时才实施模拟,其具备本地观感。
2.3 实现
基于上述内容,下面利用上文所介绍的这一JPAC工具,将1.5版本JDK作为例子来分析,建立Java SCG,,对其复杂网络统计特征进行计算。从应用过程与结果来看,网络中心为一个度数较大的节点,且靠近中心附近还存在度数较大的一些节点,在网络结周围则存在大量度数相对较小的节点。就这些结果分析情况来看,这些节点都属于一种无标度特性迹象,同时也验证了上述的这一系统结构的网络除了具有小世界效应以外,还具有一定的分布特征。此外,从另外一个侧面也说明了所举系统具有复网络的相关特征,且其复杂网络还具备演化特性。
参考文献:
[1] 王树森,顾庆,陈焘,等.基于复杂网络的大型软件系统度量[J].计算机科学,2009,36(2):287-290,302.
[2] 马楠.网络课程开发的研究与实践——以《高级程序语言(JAVA)》课程为例[D].北京:北京邮电大学,2009.
[3] 许楠,刘丽杰.基于C/S模式使用JAVA编程语言编写网络通信程序[J].中国科技博览,2009,(6):108.
[4] 徐念祖,陈铭南,袁明,等.Java程序设计课程教学方案研究[J].计算机时代,2012(5):57-58.
[5] 王瑞娥.网络课程的教学设计模式研究——以《高级语言程序设计(基于Java)》课程为例[D].北京:北京邮电大学,2010.