论文部分内容阅读
随着互联网络的普及,软件技术的发展,软件的规模和复杂性剧增,开发软件常常处于失控状态,软件产品的质量则无法保障。作为一种人工智能系统,软件产品的功能、性能及可靠性等会受到系统(拓扑)结构的影响。软件体系中大量堆积的底层元素以及这些元素之间错综复杂的关系,让软件系统变得难以维护和理解。已有的软件测试方法可以说是这样一种思维方法:强调宏观可测量与系统所进行的过程之间的关系;我们(Immune-B实验室)现在打算用另外一种思维方法来研究软件系统,也就是利用统计的方法(更确切的说是现代复杂网络的方法)来研究软件系统,强调微观量与宏观量之间的关系。相关研究人员在审视软件结构以及演化规律时,由于相应方法的缺乏,很少从整体和全局的角度出发,所以人们对软件本质的认识并不是很清晰。复杂网络研究的日臻完善,使得我们运用复杂网络的研究成果分析和改善软件系统的稳定性、安全性成为可能。在探索大规模软件系统结构特性方面复杂网络提供了有力的工具支持。复杂网络是居于规则网络和随机网络之间的一种更高级的网络。规则网络和随机网络,这两个极端的简单网络的度分布都呈现某种“均质性”;然而,在实际复杂网络中,节点重要程度的分布是强烈“异质性”的。本文仅以Java JDK的类关系为实例,根据其复杂网络的统计特性,通过分析其集群系数、节点度分布及累积度分布,得到Java JDK演化的统计趋势。我们希望能从复杂网络和复杂系统的角度重新审视软件。我们把软件系统看作人工复杂网络,从全局和整体角度探索、发现软件系统的结构特征、演化规律以及因此产生的功能特征,希望全面、科学地理解和认识JDK本质特征;为量化软件系统的复杂性开辟新思路;为软件开发、软件测试、软件维护与更新提供新视角。本文发现:1、随着JDK版本的升级,其网络集群系数和节点集群系数都增大,说明其小集团特性更加完美。2、在加入和去除接口数据的对比中,我们发现:接口对集群系数的贡献很大。也就是说,接口在使软件小集团化方面有着举足轻重的作用。这和大家在软件开发中的认识是一致的。3、不论版本如何,节点度分布及累积度分布遵从幂率分布。节点度的分布是强烈的“异质性”。这是典型的复杂网络特性。进一步说明:JDK的类关系是一个复杂网络。我们已经从这些JDK的复杂网络参数的统计图形看到了相似和区别,我们希望找到这些复杂网络特性参数的不同之处和软件的稳定性、安全性等的关系;希望对软件开发及软件测试有所帮助。我想,这些就是我们的下一步工作。