软件系统的复杂网络之研究
2017-03-27郭长江
郭长江
摘 要:互联网的出现带来了显著的变化,软件趋于网络化,这一趋势让软件以全局性资源的身份,依托网络面向公众提供丰富的资源。软件的计算和应用模式等也均出现了显著变化。网络化软件已变成衔接网络和数据资源的关键,与此同时,网络化系统将更加复杂,但复杂性亦为质量不能保证的重点。文章将依照理论实践成果,深入研究复杂网络。
关键词:软件系统;复杂网络;数据资源
软件技术的不断发展与互联网的高度普及,促使软件系统规模逐步扩大,复杂度也日益增加,基于此,软件开发时常陷入失控状态,无法保障产品质量。为此,如何辨识、评判与管控软件复杂性便成为软件工程的主要挑战内容。软件产品本是智能化系统,且系统的结构关乎着功能、性能等基本指标。为对系统复杂性展开进一步探究,则一定要详细描述软件的结构,合理量化,但结构信息度量长期以来都不理想。经过长期探索发现,从复杂网络层面着手探究软件,有利于软件复杂性量化。
1 复杂网络的内涵
从网络的角度来描述客观世界最早出现在1736年。其中复杂网络研究的最大不同便是站在统计角度考量网络内部的大规模节点和对应连接性质。在复杂网络中,主要性质与参数是度、度分析以及介数等。一般将网络节点界定成该节点包含的连接边的具体数目,且网络内部节点分布大多通过函数来表示,基本定义是某节点恰巧对应的概率。聚集系数主要用来描述网络内部节点的实际聚集情况。节点聚集系数主要指代整体邻居连边数目在最大连边数目中所占的比例,而网络聚集系数是各个节点聚集系数均值,两节点距离是连接两者最短路径所对应边的数目,网络直径是任意两点对应的最大距离。介数包含边介数与节点介数这两种,代表节点或边的实际影响。
2 软件系统复杂网络剖析
基于互联网的作用,大规模和超大规模软件现已问世。个人电脑刚刚普及时,软件主要依托PC平台;但在互联网正式出现后,促使桌面应用开始朝着网络应用过渡,无论是日常生活,还是工作均发生了较大的转变,与此同时,软件形态也不断改变。软件形成于网络环境中,由最初的服务系统至服务网络,且软件行为也由单一软件工作转换到群体有机协作,软件应用由为我所有至为我所用,不管是个人的日常应用,还是企业的基本应用,软件网络化走向均较为明显。随着软件和网络的逐步融合,其计算和应用模式等均发生了显著变化,基本规模、用户的实际数量和单元交互等均呈现出数量级增长,和传统软件相比,已演变成具有网络化特性的复杂系统。基于此,如何寻求统一、可行的方式来理解与调控系统复杂性亟待攻克。
解决该问题的主要出路是网络,这是因为软件的结构可经由网络拓扑来呈现。软件工程即把系统化与可检验的方法融入到软件开发以及运行维护中。无论对哪一个硬件工程均较为显著,但软件工程并非形成于物理量测度以及物理定律基础之上,为此,帮助认识软件与描述软件属性的基本量化方法便成为预估、完善软件工程的重点。
复杂网路研究主要是利用把研究对象转换成节点和边共同构建形成的网络形式,随即探索真实世界网络的主要特点。软件系统内部的拓扑结构可通过网络来展现,从不同标度而言,软件系统主要包含服务、模块和子系统等不同元素,利用元素交互达成计算功能。站在软件网络模型层面来说,节点主要是各个组成元素,而边指代组成元素内部的利用关系,例如,数据交换和消息传递等。现下,利用复杂网络理论开展的研究活动主要面向开放源代码系统。具体是通过逆向工程方法获取组织结构再分析,明确复杂网络特征,最终得到整体性质。
当下复杂网络研究和软件工程学互相整合的探索工作正处于初级阶段,利用软件系统结构属性剖析为着手点,通过对软件系统内部的拓扑结构与系统形成机理、复杂性评测探究,在此获得了显著的成果。
3 依托于复杂网络形成的软件复杂性评测
复杂系统理论要求从整体层面把控系统,并非仅仅关注局部。大多情况下,复杂系统通常在整体上表现出全新特征,该特征仅仅存在于系统层次,并非系统开发人员特意为之。探究这些特征有利于软件系统复杂性剖析,另外,复杂网络相关理论知识与方法均能较好展现软件系统的具体行为与基本结构,填补原有度量方法的空白,例如,强调微观设计,不具备内部属性与外部整体特征的有效映射等。为此,软件工程领域现有研究人员开始尝试将相关方法整合到软件度量学层面。
Vasa等依照软件网络边数与节点数对应的关系探究系统结构的实际变化,以此来预估软件的基本规模和搭建该系统需付出的代价。在此之后,提出了一套全新的度量指标,以此来检测和评判开发活动中软件结构的实际稳定性变化,同时,找到类的规模与复杂性分布依照时间推移呈现的变化,但那些存在较大入度的类强调被修改,这有利于系统开发工作的进行。Liu等将软件系统比成软件耦合网络来进行研究。
近几年,研究者强调把复杂网络方法与具体的程序整合到一起,以此来科学评判系统与编写的代码。Melton等剖析了81个开源系统类内部的依赖关系,得出其他类访问对应的非私有成员内部的类极有可能形成依赖环,以此来增加系统复杂性,降低稳定性,促进程序编写。Zhao等把社会网分析整合到软件网络自身结构复杂性剖析问题上,获得静态结构复杂性研究和形成于k-score之上的结构定性这两种分析方法,上述度量指标有效性经由开源软件系统得到验证,这有利于系统设计工作的进行,并提供了理论指导。
复杂网络和软件工程之间的交叉探索正处于初级阶段,虽然取得了显著的成果,但现下大部分研究主要停滞在发现与解释内容上,具体是探索软件网络结构整体特性和主要形成机制,这和工程实践存在差距。度量方面的探索虽然从工程层面着手,然而,其实用性亟待进一步探索。换而言之,即便提出某些度量方法,却零散,缺少一定的工具支撑,无法进行有效的检验与综合应用,不能合理指导开发活动,在未来需深入商讨与探究,最终将其解决。
4 结束语
软件结构与软件开发紧密相关,软件结构自身的复杂性决定着软件开发成本,软件工程旨在通过软件结构探究来研制出高质量软件。但因不能直接分析与全面把控软件外部特性,一般利用结构改进来实现设计优良软件的目的。目前,复杂网络研究已积累了一定的经验成果,这为大规模软件系统探究提供了重要保障,并将不断成熟和完善。
参考文献
[1]闫栋,祁国宁.大规模软件系统的无标度特性与演化模型[J].物理学报,2016,55(8):3799-3804.
[2]秦怀斌,郭理.基于用例图的软件系统复杂网络特性度量[J].微电子学与计算机,2015,29(7):72-75,80.
[3]杨峰.基于复杂网络的软件系统设计的研究[D].湖南師范大学,2015.
[4]韩言妮,李德毅,陈桂生,等.软件网络的多粒度拓扑特性分析及其应用[J].计算机学报,2016,32(9):1711-1721.
[5]刘晓林.基于复杂网络理论的软件测试技术研究[D].南京理工大学,2015.