随着软件技术的发展和互联网的普及,基于网络的软件系统的规模和复杂度剧增,导致软件开发经常处于失控状态,软件产品的质量无法得到保证。因此,如何认识、度量、管理和控制软件的复杂性就成为软件工程面临的一个极大的挑战。软件产品作为一种人工的智能化系统,系统的拓扑结构会影响其功能、性能和可靠性等其他指标,要对软件系统的复杂性进行深入、细致的研究,就必须对软件的结构信息进行合理的描述和有效的量化,然而结构信息的度量一直以来都是计算机科学的挑战性问题之一。由于缺乏相应的方法,研究人员很少从整体和全局的角度来审视软件的结构及其演化规律,导致对软件的本质缺乏清晰的认识近年来,一些复杂系统的研究者对大量面向对象软件系统的类图进行研究,发现软件系统的结构并不是随机和无序的,大多数都展现出“小世界”和“无尺度”等复杂网络特性,大大超出了人们的设想,这些发现逐渐受到软件工程领域研究人员的关注。
目前,已有的软件网络模型定义根据研究出发点的不同而有所差异。这主要体现在网络模型的类型(有向或无向)、粒度(编程元素级、文件级或构件级)等方面。钱冠群等人将软件系统抽象为计算服务的提供者以及它们之间的依赖关系,并给出了软件依赖网络形式化定义。对于面向过程软件系统,服务提供者是函数,函数之间的调用关系形成了依赖关系,例如,函数A调用了函数B,则说明A依赖于B所提供的服务。对于面向对象软件系统,服务提供者是类或接口,它们之间的继承、依赖、关联、聚合及组成关系构成了依赖关系。例如,类A关联类B,表明A可使用类B公共属性和方法,即类A依赖于类B提供的服务。为方便后文描述,我们说,如果软件实体A依赖于实体B提供的服务,则实体B的变更对实体A就构成了潜在的影响。
1.1.2 复杂软件网络发展前景
20世纪60年代以来,随机图理论在将近40年的时间里一直是复杂网络结构的基本理论,但绝大多数实际的复杂网络结构并不是完全随机的。事实上,“小世界”实验和弱连接强度在一定程度上证明了这个观点。在20世纪即将结束之际,对复杂网络的科学探索发生了重要的转变,复杂网络的理论研究不再局限于数学领域,人们开始考虑节点数量众多、连接结构复杂的实际网络的整体特征,在众多的学科领域复杂网络研究方法得到了广泛的应用与研究。
在此期间,两篇开创性的论文可以被看做是复杂网络理论兴起的标志:一篇是外特斯和司琼加特斯于1998年6月在Nature杂志上发表的题为《“小世界”网络的群体动力学》的文章;另一篇是巴拉巴斯和艾伯特于1999年10月在science杂志上发表的题为《随机网络中的标度性》的文章,这两篇文章分别揭示了复杂网络的“小世界”和“无尺度”特性,并针对其特点建立了模型来研究其机理。
1.2 本文工作内容
如今,面向对象是用来设计和实施计算机编程语言支持的程序如C++和JAVA这些应用方面最成功的技术之一,许多面向对象的软件度量已经提出并应用到实际软件项目。为了确保所需的软件系统的质量,必须量化和评估软件质量(或一个软件的某些性能),度量与测量软件产品,和它被发展的过程,并依据现代面向对象的软件开发提供一个定量的评价。
软件在不同的层面建立了大量相互作用的部分,例如,包,类和方法。这些部分间的依赖关系和相互作用可以用来定义软件系统的网络模型或图形形成框架的描述。一些物理学家首先从源代码通过使用一些统计方法分析类依赖图(或协作图),并发现他们大多具有全球统计特征,比如小世界和无尺度。因此,梅尔斯认为,软件系统代表另一类重要的复杂网络。 面向对象软件的软件网络构建和可视化(4):http://www.youerw.com/jisuanji/lunwen_4177.html