当前位置:首页 期刊杂志

基于复杂网络理论的Java 软件特征探析

时间:2024-05-04

镇涛 武昌职业学院

在面向对象语言程序中,对象是基本单元,是类的实例。面向对象语言具有独特的数据结构--封装数据细节与代码以构成类--极大提升了软件程序灵活性、扩展性以及重用性。近年来,这三种特性得到广泛推广,Java 这一完全面向对象的编程语言也成为研究热点。该语言具有强大可移植性,但是随着项目规模的不断扩大,程序漏洞、可读性低等问题也频繁发生。复杂网络理论的引入有助于构建程序网络,提升Java 程序质量以及软件生产效率。基于复杂网络理论的程序分析既全面又能正确定位程序漏洞,能够帮助程序开发者有效治理漏洞。

1 Java 语言特性与程序分析方法

1.1 面向对象特性

当前,大型系统常用的程序设计开发方法是面向对象程序设计。面向对象结构化设计具有封装性、继承性、多态性三大基本特性。其中封装性是指将逻辑和数据操作的程序封装起来,服务供应商隐藏服务细节,用户只需要了解输出的结果而不用知道数据具体的运算、读取过程。封装是一个“黑匣子”,保护对象内部实现过程,防止内部结构被篡改,有效保障软件安全。继承性是指子类继承父类的属性和方法,继承关系使得软件结构更为清晰,提高代码可重复利用率,极大减轻软件开发人员的工作压力。多态性则是方法的重载、重写与动态连接,不同的类对象可以响应同一个信息。多态机制能够极大降低信息冗余量,消除不同类相互影响作用的关系,提升软件可扩充性与可替换性。

1.2 类的关系

面向对象的类有聚合、组合、泛化、依赖以及关联五种关系。其中,泛化的表现方式有继承关系与实现关系,其本质为参数化类型;关联体现在类与接口、类与类之间,不同类的对象之间发生访问,实例就具备对应关系,对象则产生了关联。关联关系具有方向性、长期性以及平等性的特点;聚合反映整体与部分关系,是更强的关联关系,涉及不同层次不同类之间的关系;组合属于关联特例之一,又称为强聚合。组合关系中整体与部分不可分割,两者生命周期一致;依赖则是描述彼此独立的两个对象之间的使用关系,具有临时性与偶然性。

1.3 软件复杂网络的特性

软件网络社区结构的各个节点之间相互作用复杂,这种作用的相关性有所不同,即各节点之间有不同的关联度。不同的关联度便于对社区结构进行划分。为了评估复杂网络的准确性,研究人员抽象出复杂网络的共性,制定了统一的复杂网络参数衡量机制,基本参数有:(1)聚集系数,节点聚集系数反映相邻节点联系的紧密度,由此可推出网络的聚集系数,节点聚集系数与其重要程度成反比;(2)平均路径长度,也是反映各节点之间紧密联系的程度的参数;(3)节点介数,是指网络中经过某一节点最短路径的数量,反映了传递信息过程中该节点的中枢特性,介数的算法较为复杂,既要计算不同节点之间的最短路径还要将最短路径存储起来;(4)网络效率,指各节点之间最短路径距离倒数总和的平均值,主要用于解决节点连接不畅时平均路径长度无限大的问题。

2 分析Java 软件复杂网络特性

2.1 基于复杂网络理论的软件网络

在研究复杂网络理论时,网络性质、网络模型、网络行为以及网络性能是四项主要研究的内容。研究人员认为将Java 软件视为程序网络,通过分析其网络性质以呈现软件结构特征,并利用网络模型定量、定性计算这些特征,计算结果可以作为网络行为分析的依据,进而设计优化网络性能的方案。

2.1.1 图的基本概念

图,是用以表示物体之间关系的一种方式。在图中,一个物体是一个节点,两个节点的关系则是一条边,连接该节点的边数既是节点的度,由其他节点指向该节点的边的数量即是输入度,由该节点指出的边的数量即是输出度。同时,图又包含有向图和无向图,前者是指节点对之间的边具有指向性,如类的调用关系;后者则是指代表节点关系的边不具有指向性。此外,加权图的定义是网络图中每条边具有不同的权重,权重是相似度、重要性、依赖度等的代表。方向与加权是维度不同的两个参数。因而,图主要有四种分类:加权有向图、加权无向图、无权有向图、无权无向图。

2.1.2 图的计算机表达

通常,图结构是由计算机计算而来,其主要表示方法有邻接矩阵与邻接表。Java 软件网络图算法的实现就是通过应用邻接矩阵的图结构,并在此基础上对其网络结构进行分析。在图算法中,用邻接矩阵表示图G 为A=(aij)n*n(即n 阶矩阵),以解决网络结构的数据存储问题。

2.2 构建Java 软件结构模型

构建Java 软件结构模型涉及以下内容:其一,程序的反编译,即转换语言的过程,可以实现机器语言编写的程序转变为高级语言程序。作为8 字节流文件,.class 文件能够为Java 提供独立的二进制服务。通常,.class 文件不可读、不可修改,需要利用Java 反编译工具javap.exe 将其发编译为可提取字节码信息的.txt 文件,反编译前后的代码差异甚小。

其二,代码的静态分析,在编写程序时即对代码做静态分析能够为程序后续的测试工作提供极大便利。研究表明,静态分析代码能够及时检测并修复30%~70%的代码错误。应用Java 静态分析代码工具可以有效定位出错代码的位置,提高软件开发效率与安全性。

其三,构建复杂网络模型,构建流程主要包含查找JDL安装目录、jar 文件解压、遍历.class 文件、反编译、提取依赖关系、类结构解析、集合类节点等。

2.3 两种网络模型

小世界与无标度特性的发现推动复杂网络研究领域实现进一步的发展。由上文可知,网络结构的必要元素包含节点与边,对小世界与无标度网络模型的深度研究便是基于研究各个节点与边的性质。

小世界网络模型的构建是以平均路径长度、聚类系数、度分布等性质为基础。当节点数相同时,两个网络的输出度与输入度平均值则相同,边的数量也相同,这时,区分两者就得依据节点度的大小,度为n 的节点数占整个网络节点数的比例则是该网络结构的特有性质。小世界网络度分布分为离散型与连续型两种形式,前者的典型是泊松分布与二项分布,后者有正态分布。但研究表明,在实际网络中,长尾分布是度的主要分布形式。

长尾分布是指网络结构的节点度分布不具备统一性,在坐标中难以用均匀刻度表示。因而,长尾分布又被成为无标度分布,具有这一度分布性质的即是无标度网络模型。研究表明,长尾分布主要就是幂律分布,因此判断网络结构是否具有无标度性质,应先证明其是否符合幂律分布。

通过分析度分布、聚集系数、平均路径长度可知,Java 软件网络结构具备无标度和小世界性质。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!