关键词:
复杂网络
Java应用系统
小世界网络
幂律分布
类依赖关系
函数依赖关系
摘要:
近年来,计算机科学领域发现利用复杂网络理论可以支持复杂的大型开源系统的程序分析,弥补了传统程序静态分析和动态分析方法的缺陷,并且能够以图论的方式实现可视化的程序结构性质分析。本文以复杂网络理论为基础,从小世界网络性质和无标度网络性质两点对Java应用系统进行程序分析,研究内容共有五点:一、对Java应用系统进行了类型调研,选用了符合常规类型的10种开源系统,并各选取3个系统作为样本,以保证实验数据的多样性和全面性;二、基于复杂网络理论,针对Java应用系统构建程序网络,并定义了明确的类依赖关系和函数依赖关系;三、基于以上所构建的程序网络,设计并实现了具体的依赖关系提取和加权算法,获取依赖关系所对应的有向加权网络;四、提取类依赖关系网络及函数依赖关系网络的拓扑特征值,并刻画其小世界网络性质用以分析和判断程序设计的优劣;五、计算有向加权网络中的出度及入度分布,并进一步通过幂律分布模型验证程序网络是否具有无标度特性,用以归纳Java应用系统的整体结构性质。通过一系列的实验分析,我们发现在Java应用系统中,类依赖关系网络具有小世界性质,而函数依赖关系并不具备该性质。此外,对于绝大多数系统而言,无论是出度还是入度分布都可能满足幂律分布。从这两个实验结论可以看出,在Java应用系统中,类结构符合高内聚低耦合的软件工程设计标准,且每一类系统都可能具有鲁棒性和脆弱性。实验表明,通过分析这两种网络拓扑性质既可以简单评判和呈现系统的结构特征,也可以帮助开发和维护人员利用复杂网络分析结论设计并优化开源软件系统,以实现优秀的软件架构和最佳的系统迭代。