软件复杂度

2024-09-04

软件复杂度(共8篇)

软件复杂度 篇1

0 引言

软件产品设计的过程即是对产品进行模块化,然后进行模块设计的过程。模块是指能实现功能的数据和程序说明、可执行程序的程序单元。模块的独立性可以从耦合度和内聚度两个方面来度量[1]。为了提高软件产品的设计研发速度及质量,引入TRIZ进化理论中的理念,对其设计过程进行分析,可得出高质量的软件产品设计方案。

1 TRIZ进化理论

TRIZ(theory of inventive problem solving)是通过全面研究数百万的专利和其他发明获得的大量发明经验方法总结归纳,以分析并阐明问题可能的解决方向。TRIZ认为,产品及其技术的发展总是遵循一定的客观规律,而且同一条规律往往在不同产品领域被反复应用。TRIZ的核心是技术系统进化原理,它可以依据产品中技术系统的进化规律定性预测未来产品的发展趋势,从而帮助企业开发出具有竞争力的新产品[2]。

1.1 理想解

向增加理想化的方向进化是TRIZ理论技术系统进化法则之一[3]。阐明理想解可在第一时间找到正确解决问题的方法。通过描述用户需要或问题产生的根源,理想解可通过设想的解决方案寻找到解决问题的方法。

1.2 雷达图

雷达图又称技术系统进化潜能图,雷达图结构如图1所示,外周表示系统沿各条进化路线的进化极限,阴影面积表示目前产品沿进化路线已完成的进化,而进化极限与阴影面积之间的面积差就代表该产品尚未开发的进化潜能。进化潜能图可直观表示给定技术系统的进化情况,为设计人员确定未来技术开发方向提供了理论依据[4]。

2 对软件复杂度的分析

2.1 软件的复杂度

在理想状态下,人们不希望解决方案的复杂性高于问题本身的复杂性。文献[5]中曾把问题的复杂性定义为问题的最佳解决方案所需要的资源数。解决方案的复杂性被看成是实现一个具体解决方案所需要的资源。软件复杂性的提高会对软件设计的编码、测试、维护以及软件的协同合作带来很大的负面影响。尽管软件复杂度度量方法己经被广泛地研究,各种度量方法都从不同角度量化了软件的一些特性,但却仍然未能形成统一的评估标准[6]。

2.2 模块复杂度的分析

本文从编码复杂性及模块独立性的角度出发,通过分析模块的内聚度和模块间的耦合度来测试软件的复杂性。

首先将软件系统的复杂性归结为系统模块的表达能力和模块间的相互关系。这相当于最小耦合度和最大内聚度的设计方针,以此定义理想的软件系统为系统具有完全独立的元素(模块),完成单一功能的每个模块是具有最小耦合度和最大内聚度的结构,这是理想的系统体系结构。在这种理想的体系结构/设计中,系统具有最小的复杂度。理想的模块应该仅仅完成单一的功能。

再者,系统复杂性还定义了模块复杂性的两个参数,一个是描述模块本身的参数,另一个是描述模块间相互关系的参数。模块所表达的功能越多,其级别就越高。模块与系统间有两种相互依赖关系:1)有多少模块需要依靠整个系统才能表达其功能;2)系统有多少功能需要依靠该模块来表达。

2.3 软件复杂度的计算

耦合矩阵可用以描述模块软件系统中模块间的相互关系。一旦获得了系统中每一个模块所要表达的功能及其耦合矩阵,便可以构造出关于系统复杂度的分析矩阵了。也就是xij的每个元素可以利用下式来计算:

式中:xij是矩阵中的第i行第j列的模块;dij是表1矩阵中第i行第j列元素;Hi是模块j的非内聚力,相当于模块所要表达的功能数;系统的内聚是指完成一个功能时对其他各个组成部分的需要程度。可以用:内聚率=表达系统特定功能的模块数/模块总数来简单定义一个系统的内聚率。

两种相关表格可用来计算两个相应的参数。这些参数在从系统功能出发分析时被叫做模型奉献度,在从模型表达的功能分析时被叫做功能的应用度。

2.4 雷达图在软件系统中的应用

为了直观地表达软件系统的功能与软件模块之间的关系,将TRIZ进化理论中的雷达图引入进来,如图2所示。图中的射线用以表达软件系统的各个子功能;射线上的位置用以表达实现软件系统该功能所要涉及到的模块数;阴影部分表达软件当前的设计状况;而靠近圆心的位置才为软件理想解所在的位置。

3 案例研究

3.1 软件功能分析

Akiva是一个用以隐藏企事业单位数据库的数据干扰工具。它被设计为“识别”私人或敏感数据,在软件开发、启用、测试和外购等多种情况下用于“确定识别”私人的和敏感的数据。它允许产品数据库变相复制的创建,以及提供实际可行的和无折衷隐私的全功能数据库,并且额外提供属于防火墙和加密数据保护的功能。它的主要特点包括:数据的一致性、能够选择任何数据元素的能力、数据安全、辽阔的应用范围、数据的完整性、可靠性[7]。

Akiva工具的主要功能包括:编码、综合混合、选择混合、替换、清空、查找、社会安全号生成、Luhn产生、模式生成。

用J2EE框架发展起了网络基础应用。在甲骨文公司的资料库中使用PL/SQL程序执行隐藏的运算法则。

3.2 基于理想解的分析

现存的Akiva设计大约有8000行代码,18个模块表达系统所有的54个功能;每个模块平均表达3个系统功能。计算出系统总的复杂数是88.7。系统复杂性的雷达图如图3所示。

图3 Akiva软件初始设计的雷达图(参见下页)

阴影区域表达了各模块对软件系统复杂性的影响,从中我们可以看出,“隐藏”模块对整个软件系统的复杂性影响最大。在理想的软件系统中,Akiva的复杂数应该等于所表达的功能数,为54。

3.3 理想化设计

在保证系统有用功能及其功能数的前提下,增加表达系统功能的模块数,可相应降低系统的复杂度。

在此设计中引入路由概念,可取得一个用36个模块表达45个功能的设计,设计雷达图如图4所示,平均每个模块表达1.3个功能。软件系统总体的复杂数从最初设计的88.7减少到81。这是一个更加清晰且更容易维护的设计。

根据这个设计,软件的代码行数从最初的7964行减少到了3866,编码工作量减少超过了50%。表1表达了原设计中的模块和理想化后设计模块中代码行数的比较。

表2总结了理想化设计前后系统的分析。软件并不能仅仅靠功能的数量来判断其质量,也不能仅仅靠模块的数量来判断其复杂度,设计应根据具体需要使软件产品达到最优的性价比。

4 结论

利用TRIZ进化理论中的理想解分析方法对软件产品进行分析,通过借鉴TRIZ进化理论中的雷达图,阐述了TRIZ理论在软件产品设计开发中的应用方法。在软件设计中应用TRIZ理论作指导,可获得具有现实意义的软件设计方案。

参考文献

[1]陈增荣.软件开发方法[M].上海:复旦大学出版社,1997.

[2]吕桂志,任工昌,丁涛.基于TRIZ技术进化分析点胶机的演进[J].工程设计学报2008(10):387-390.

[3]牛占文,徐燕申,林岳,等.发明创造的科学方法论-TRIZ[J].中国机械工程,1999,10(1):84-89.

[4]Mann D L.Better technology forecasting usingsystematic innovation methods[J].TechnologicalForecasting and Social Change,2003,70(8):779-795.

[5]Fenton N E,Pfleeger S L.软件度量[M].杨海燕,赵巍,张力,等.译.北京:机械工业出版社,2004,4.

[6]黄光燕,李晓维,宫云战.变量度量估计软件的复杂度[J].装甲兵工程学院学报2004(2):13-16.

[7]Bhushan N.Case Study:Use of TRIZ in SoftwareDesign[J].The Altshuller Institute's TRIZCON2008.http://www.triz-journal.com/archives/2008/6.

复杂网络下的软件系统设计研究 篇2

关键词:复杂网络;软件系统;系统设计

中图分类号:TP301

作为对复杂系统进行高度化抽象化的复杂网络理论,为网络化的复杂软件系统提供了最新颖、最全面的数学基础。另外,复杂网络理论也根据当今的计算机网络技术等等的发展与进步,提出了一种基于复杂网络的网络化软件工程。软件系统逐渐的在向两个大方面进行了大幅度的转变。第一个方面是软件运行的平台从具有集中和封闭特点的传统单机工作转变为了具有开放、多变、以及动态等等特点的网络工作环境;第二个方面是软件系统的功能已经不再局限于只为公司或者企事业单位提供设计或者仅仅针对公司或者企事业单位提供服务的狭小服务空间,相反,软件系统的功能开发越来越向着多种应用领域转变,或者将提供的综合服务对象转变为大众。

1 网络化软件系统具有复杂网络的特征

在计算机科学中,结构信息的度量一直都是亟待解决的问题之一,并且极度缺乏对软件本质清晰的认识。因此,开发者与设计者们必须对软件系统的复杂性进行深入、细致的研究;对软件系统的结构信息进行合理的描述和有效的量化。通过软件工程与复杂系统的学科交叉研究,从复杂系统和复杂网络的角度来对软件系统进行重新的审视,将软件系统抽象为一种人工的复杂网络,从而进行相应的研究。将兑付在网络下的软件系统的研究分为两个角度进行,分别是整体和全局的角度,以及个体和局部的角度,从而发现和探究复杂软件系统的结构特征、演变规律、以及从这个方面所产生的软件系统的相应的行为特征,为量化软件的复杂性、全面、科学、深刻的认识和了解软件系统的本质特征打下了坚实的基础。在复杂网络下的软件系统的设计中,设计者们通常将若干个复杂问题分为多个部分,再由若干位开发者进行同时的设计与运行。

2 基于复杂网络的网络化软件工程系统设计

2.1 软件建模

建模在每一个设计中都是不可或缺、也是最为基础的组成部分之一。复杂网络的结构特征将复杂系统的根本特征和基本的共有特性进行了详细的概括,同时也鲜明的反映了经过进化形成的网络的真实优势。真实的网络系统是从很多个不同的个体经过互相的影响与作用,经过长时间的筛选与共同反应的演变过程从而形成的最终的稳定的网络结构,最终的相对稳定的网络结构通过长时间的实验与改进,从而形成一种相对合理的组织形式。老式的软件建模方法有很多,其中2002年提出的一个较为有代表性,其主要内容是,将复杂网络的方法与软件系统拓扑结构结合在一起,将面向对象软件系统中的类图作為研究对象,将软件系统的结构,也就是复杂网络的模型中的节点代表类,用无向网络来表示。随着网络技术的逐渐改善与进步,根据软件实体力度的不同,研究人员在不同的层次对大量的开源软件进行了详细精准的分析。例如,在包级对一部分软件所依赖的网络进行了详细的分析,从未得出一部分网络会具有近似幂率分布的特性;或者对软件系统的静态结构和运行时得到的软件对象网络进行分析等等。总而言之,近些年的国内或者国外的相关作者都通过建立软件网络模型,揭示了一些软件网络的普遍拓扑特性。依赖关系作为软件网络拓扑关系中最重要的识别指标之一,使用加权有向网络进行对面向对象软件系统的拓扑结构的描述是十分重要的。利用复杂网络化软件系统这种人工设计与实现的基本方法,建立基于复杂网络拓扑结构的软件系统网络,从而有效的解决在软件设计中,由于涉及的各种不可预知性而产生不具有预知性的问题。

2.2 软件设计

复杂网络理论在软件系统的设计中拥有很重要的作用。在复杂网络下的软件系统设计可以有效的利用复杂网络理论所拥有的信息动力学等等特征,从而进行对信息传输网络的结构设计的改善;在预防控制网络上发生拥塞的概率或者提高信道上的信息的传输速率等等方面都拥有着很积极的作用。与此同时,在复杂网络下的软件系统的设计对网络化数据的知识发现和数据挖掘算法设计、提高算法和传输的准确率与运行效率,都拥有着重要的作用。

2.3 软件测试

在复杂网络下的大多数软件系统中,软件内部的绝大多数的缺陷和问题均集中在二成的软件系统的空间地址中。由此可见,如何正确、有效的的识别和确认出这二成的软件系统空间,在软件的测试中是十分重要的。复杂网络下的软件系统中的一些无标度等等特点可以有助于对软件系统的构建形式与对象的特点进行更加深入的了解,并且可以帮助测试人员了解复杂网络下的软件系统中的各个部分之间的相互关系,并且以软件系统所具有的各类特征和规律作为根本根基,从软件系统中分支出主要的一些构件和代码段,从而对软件测试的方法、步骤、优先级等等进行适当的制定。最终,利用其相互的对应的组织关系进行有选择性的重点测试,以达到对复杂网络下的各类软件系统进行良好的软件测试的目的。良好的、快速的适应复杂的软件系统的规模,最终使得对软件的测试系统更加简单、快速,大大降低测试的成本,提高测试的效率。

2.4 软件度量

在很多复杂网络下的软件系统多有一个共同的缺点——经常处于失控状态,这种情况的发生的一个很重要的原因正是因为复杂网络下的软件系统缺乏合理的软件复杂性的度量操作。复杂网络将传统的从局部上关注软件系统进化为强调在整体上把握系统的结构和相互作用,比较好的对软件系统的整体结构与运行操作进行了良好的、详细的描述与刻画,在很大程度上弥补了成陈旧的软件度量系统中,缺乏内部属性与外部整体特征之间良好的映射关系的缺陷。对于软件的复杂性度量是保证复杂网络下的软件系统的设计与开发科学性进行的一个主要因素。根据复杂网络下的软件系统所具有的典型特征,软件系统的复杂性度量可以得到很大的提升。例如,复杂网络下的软件系统的复杂性度量标准可以由节点间的平均距离、集聚系数、以及节点度的分布组成;通过对于节点度和分布度,可以准确而有效的刻画出软件系统的软件构件交互的复杂性,对于复用度比较大的结点,其入度必定比较大,而对于比较复杂的节点来说,其出度必定比较大;最后,由于复杂网络具有动力学特征的生长和择优连接机制等等特点,因此,可以利用这一点对复杂网络下的软件系统的复杂性进行相应的刻画以及度量。用户的多样性、网络环境的动态化进程、持续变化着的需求、具有自治性和不确定性的资源、以及各类资源之间的相互作用、具有目的性和自主性的各类软件构件以及软件之间的相互关系和作用,这些方面都会对复杂网络下的软件系统的结构、运行方式、系统的性能、以及系统的质量等等的动态演变的形成都有很大的影响,从而完成最终对软件系统的发展和进化的促进和推动。

3 结束语

随着因特网网络技术的快速发展,以及计算机网络、自动控制技术在社会生活、社会经济、政治、军事、以及国防等等领域中的信息化应用越来越广泛,复杂网络中的软件系统应用也正在快速的发展和进化,而软件系统的设计与开发的环境也越来越具有开放性、动态性和多样性,对我国计算机的发展有着十分重要的意义。

参考文献:

[1]吴斌.MapReduce环境下的并行复杂网络链路预测[J].软件学报,2012(12):10-11.

[2]刘杰.复杂网络下面向对象软件种类节点间交互网络的可视化研究[J].现代商贸工业,2010(02):13-14.

[3]钱冠群,张莉.软件静态结构的依赖网络建模方法与特性分析[J].计算机科学,2012(11):22-23.

作者简介:刘定一(1983-),男,硕士,江苏南京人,三江学院计算机科学与工程学院教师,研究方向:计算机软件工程。 臧华中(1978-),男,硕士,江苏沭阳人,三江学院计算机科学与工程学院教师,研究方向:计算机应用。

软件复杂度 篇3

1 网络结点重要性

软件网络结点作为一个基本的网络构成要素, 复杂网络中许多问题都与其有着密不可分的关系, 发现并研究网络结点的重要性, 有着很高的实用性。一般网络中都会有一个核心的网络结点, 这个结点是与其他结点都联系, 起着重要的作用, 相当于一个网络中核心中点, 保护好这个核心, 可以提高整个网络的可靠性和安全性, 营造一个良好的网络环境, 否则就会容易受到攻击, 成为全网的薄弱环节, 更为严重的可能是会摧毁整个网络。因此关注软件网络结点, 更好地保护软件安全, 保护网络安全至关重要。

1.1 评估重要性的意义

既然在复杂软件系统中软件网络结点有着重要的作用, 那么就会有相应的系统去研究这个网络结点, 而一个很重要的研究指标就是评价网络结点的重要度。对复杂软件网络系统中的软件网络结点的重要度的评估是一件非常有意义的事。当网络中出现故障时, 一般来说都是网络结点出现问题, 而最有可能出现问题的地方就是所谓的核心结点。虽然这个结点是被想象出来的、根本不存在的, 但实际上依然存在对系统起到核心作用的网络结点。发生故障时就要去修复这个网络, 在修复时不是盲目地去修复, 而是有先后顺序的。先去修复较为重要的核心结点, 再去修复影响相对较小的结点, 这样的修复方式才不会使系统再次陷入瘫痪, 而且在很大程度上会减少损失。

重要性的评估是一个非常庞大的工程, 需要各个方面的共同努力。在软件系统中, 不仅仅要在维修方面注意维修顺序, 最为重要的是要在软件开发中加大投入力度, 减少软件系统中出现的问题, 这是从根本上解决问题。在网络结点自身方面, 加大对核心结点的保护力度, 减少核心出故障的次数, 将每一次的损失都降到最小。抓住核心结点不是一个容易的事, 在构建时要注意, 如果在软件系统开发时没有注意构建, 就要在实践中找到这个核心。这种情况就要对网络结点进行重要性的评估。核心结点及其周围结点的重要性是呈放射状, 逐渐降低的, 距离核心结点越近的结点重要性也就越大, 在维修时就要越先维修, 反之, 距离越远的是不太重要的, 维修就会越靠后。也就是说, 网络结点的重要性的评估对决定维修先后顺序有着重要的作用, 只有根据结点重要性排定先后顺序, 才会在出现故障时最短时间内找到最为有效、损失最小的维修方法。

1.2 评价方法

软件网络结点有着非常重要的作用, 而核心结点对网络软件系统有重要意义, 判定重要性也就是一个必要的工作。一个工作的展开要有一定的工作方法, 评定网络结点的重要性这项工作也需要行之有效的方法去实现工作目标。一般来说, 最为常用的, 也是最为有效的方法就是中介数法。这种方法是通过计算结点和结点的路径, 并记录, 然后再进行比较各结点间的路径距离大小。经过某一个结点的路径最短的个数越多, 那么这个结点重要性就越大, 反之重要性不大, 距离越远, 维修也就越靠后。经过比较各个结点路径, 有着个数最多而且距离最短的某个结点就是最为理想的核心结点。找到了理想中的核心结点, 并且能够通过这种中介数法排好结点重要性的顺序, 那么这个工作也就能够顺利地展开, 为以后工作中的维修奠定良好的基础。

2 影响分析

软件网络结点之所以重要与它自身的特性分不开, 在复杂软件系统中他担任的是一个桥梁的角色, 起到连接各个网络结点的作用。复杂软件系统彼此间交叉联系, 共同构成一个复杂的网络, 这个网络也就有着复杂性, 它涉及很多方面的知识比如医学、物理等。这个复杂的网络是由复杂的拓扑结构和动学行为通过结点连接起来的。考虑网络的拓扑结构特性和各个相邻节点重要性的反馈, 对于研究复杂软件系统的软件网络结点有重要影响。软件网络结点有着深刻的意义, 能够构建一个复杂的小世界和无标度网络, 这也是软件网络结点的重要影响。

2.1 小世界效应

小世界效应在学术上也被称为六度分离。这个理论与计算机软件网络结点相结合后, 它是指在网络中任意两个结点间的平均距离会随着结点个数的增长呈对数增长, 而且增长的越来越多, 就会形成明显的局部结构。这种结构不会因为结点的增加而使得核心结点远离理想中的位置, 核心结点仍然具有原来的特征, 与每个结点产生联系, 而且在两个结点中距离最近, 距离近的结点数最多。在六度分离理论产生的时候, 是作为一个社会心理学去研究的, 它是通过一封信件来不断与发信的人一步步接近, 形成一个以信件为核心的信件链条, 最后取与发信件人的联系。一般来说, 在逐渐取得联系时平均会经过6个人, 这6个人就相当于网络中核心结点与其他结点之间的联系, 无论是一个结点距离核心结点有多远都会通过其他的结点取得联系。这种联系不是片面地带来好处, 也不会片面地带来坏处, 结点的这种特征应该好好被加以利用, 达到趋利避害的效果, 进而让软件网络系统更加安全可靠地运行。

当一个结点被破坏时, 这个被破坏了的地方就会通过不同的结点, 将这个信号传达出去, 但在传达时, 原来的传递任务就无法完成, 因为还有其他的结点信息要通过这个发生故障的结点去传递信息。做好软件网络结点的保护, 积极维修, 将故障控制在小世界内发生的范围极其重要。

2.2 无标度网络

无标度网络是指在现实网络中, 每一个结点的连接都不是随机的, 大部分结点只与少部分的结点相连接, 在不同地方的结点连接的结点个数有着很大的不同。无标度网络有着异质性的特点, 每个结点连接有较强的分布不均匀性。简单来说就是在复杂软件系统中, 软件网络结点中的核心结点与其他结点连接的个数比较多, 在距离核心结点越远的结点, 它所连接的网络结点也就越少。相对应的, 连接个数越多其重要度也就越高, 在被破坏时也要去先维修。复杂软件系统的软件网络结点在维修时注意无标度网络的特性, 抓住主要的问题, 以及会出现主要问题的结点, 加强维修, 在构建时多加防范。

3 结语

复杂软件系统的软件网络结点对软件系统的安全性有着直接密切的联系。这种联系与网络结点自身的特性是分不开的, 当然在研究网络结点的影响时还要从其他方面着手, 共同寻求网络结点产生影响的原理, 进而可以在保护软件系统时能够采用行之有效的方法, 减少因结点出现故障而产生的损失。通过网络结点重要度的评价, 找到理想中的核心结点, 加强对核心结点的监控力度, 及时发现软件系统中的问题, 以便能够更早地解决问题。

参考文献

[1]汪北阳, 吕金虎.复杂软件系统的软件网络结点影响分析[J].软件学报, 2013 (12) :2814-2829.

[2]严驰.复杂软件系统的软件网络结点影响分析[J].环球人文地理, 2014 (10) :30-32.

[3]支阿龙, 李大兴.网络结点安全加固[D].济南:山东大学, 2008.

[4]张婷.浅析复杂软件的网络结点影响[J].计算机光盘软件与应用, 2014 (10) :60-61.

基于复杂网络的软件稳定性 篇4

软件工程在飞速发展的同时, 也面临着巨大的挑战和压力。一方面软件系统的复杂程度与日俱增, 另一方面软件市场竞争日趋激烈, 在投标时间或上市时间等各方面压力的驱使下, 开发出高质量的软件产品成为当务之急。

复杂网络理论具有极强的交叉学科特色, 其研究涉及各类学科各个领域。研究已经证实复杂网络现象亦存在于大型软件系统中, 复杂的软件系统的拓扑结构也可以用网络的形式表现出来。软件系统的功能、性能和稳定性等很大程度上受到软件拓扑结构的影响。所以, 从复杂网络的角度来重新认识软件工程, 利用复杂网络为工具去探索大规模软件系统的结构。本文以某企业开发的园区管理系统的软件源代码为研究对象, 基于类的层面考虑软件稳定性。利用复杂网络参数, 计算出软件系统网络结构图中的核心节点, 并分析此软件系统在单元测试阶段的测试代码覆盖率, 找出测试不充分的类。结合复杂网络参数和测试代码覆盖率的定义与实际意义, 提出测试优先度的概念以及测试优先策略, 使测试人员清楚认识到测试过程中的不足, 并提高核心节点的测试代码覆盖率, 及时发现问题并解决问题。采取此有效的测试方法、措施进行管理, 一方面能使得企业严格高效地把握软件质量, 提高企业整体实力, 另一方面大大提高用户使用的满意度。

2 复杂网络与软件系统

2.1 复杂网络特征

近年来, 国内外关于复杂网络的研究方兴未艾。1998年, Watts和Strogat引入小世界网络模型[1], 称为WS小世界模型 (如图1所示) 。描述了从完全规则网络到完全随机网络的转变, 发现大量真实网络都具有小世界效应, 即这类网络都具有较短的平均路径长度, 同时又具有较高的聚类系数 (多为0.1~0.8[2]) 。

L=1.6444, 聚类系数C=0.39667, 平均度数<k>=4)

1999年, Barabasi和Albert提出了一个无标度网络模型, 称为BA模型。他们认为许多现实世界中的复杂网络的链接度分布P (k) 服从幂律分布形式 (图2) , 与完全随机网络的泊松分布图的单个尖峰形状完全不同。由于幂律分布的网络不像随机网络和规则网络可以将平均度看作节点度的特征标度, 因此将这类网络称为无标度网络。

2.2 基于复杂网络的软件系统研究

2002年, Valverde等[3]首先将复杂网络方法引入到软件系统拓扑结构分析中, 发现软件系统都表现出非常明显的“小世界”和“无标度”特征。2003年, Myers、Valverde和Moura等进一步使用有向网络来表示软件系统的结构, 并对大量开源软件进行了分析, 不但发现了同样的现象, 还发现软件系统的网络模型中少数节点的度较大, 即软件系统的主要功能由少数节点所掌控, 同时大部分节点的度相对较小, 并推测出由于出度小的节点很少依赖其他节点, 因此通常会比较简单, 所以它被重用的次数就多, 其入度就可能较大。可以利用这个发现优先设计或重点对待高度数的节点所对应的软件系统中的元素, 最大程度提高软件系统的开发、测试效率。2007年后, Jenkins等从软件体系结构的角度来分析软件网络拓扑结构的发展变化, 他们同样发现随着时间的推移, 系统中存在少量出度很大的节点, 同时对软件系统的稳定性量化提出了相应的度量指标。Sudeikat等则发现软件系统的实现结构在一定程度上受到不同的开发方式及策略的影响[4]。

与国外的研究相比, 国内的相关工作才刚刚开始, 但研究人员也进行了一些实例分析, 如闫栋和韩明畅等对Java编写的若干软件系统在类级进行分析, 发现了其中的“小世界”和“无标度”特征, 并根据偏好性连接原理对系统“无标度”特征的形成进行了解释。南京大学计算机科学与技术系的王树森和顾庆等从元素级、模块级、网络级3个不同的粒度提出基于复杂网络的软件系统的各种度量;实现了大型Java程序复杂网络描述和度量工具JPAC[5]。JPAC可用于分析大型Java系统的结构, 并计算基于复杂网络的各度量值, 可以定量地刻画并分析软件的结构、行为。

2.3 软件系统的复杂网络模型

对于软件系统的复杂网络特征研究, 目前主要是针对已有软件的开源代码采用“逆向”工程方法, 根据不同的粒度单元, 可以将整个大型软件系统看成由模块、类、类的方法、包等元素组成。在软件的复杂网络模型中, 网络的节点Vi代表软件的一定层面的要素;网络的有向边Eij代表这些组成元素之间的相互关系, 如类之间的调用、继承关系等;同时引入复杂网络中的权值Wij的概念, 以表示节点Vi到节点Vj边的权值, 更加体现出软件系统中的各组成元素之间的各类关系。为了减少定义的变量数, 以Tij表示带加权值的有向边集合。假设节点ViVj分别表示软件系统中的两个类, 节点Vi调用节点Vj的方法或成员1次, 即可表示为Vi1.0Vj其中带权值的有向边即为Tij.

根据以上对于软件网络节点、边的定义, 可以得到整个大型面向对象软件系统的网络模型G= (V, T) , 其中V= (V1, V2, V3, …, Vn) (0<in) , T= (T11, T12, T13, …, Tij, …Tnn) (0<i, jn) , 图3清晰地显示了大型软件系统抽象为网络模型的分析过程。分为3步:

①根据软件的体系结构设计或者软件开放源代码等, 选取某个粒度单元, 抽取软件系统中此粒度单元下各组成元素之间的关系。

②根据各个元素之间的相互依赖关系, 将复杂的软件系统抽象为清晰的有向图或网络模。

③从而刻画软件系统的一些单个元素的性质累加所无法得到的整体性质[6], 计算所选软件系统的复杂网络参数, 结合软件测试结果进行分析。

软件网络模型能够从整体上把握复杂的软件系统, 弥补了传统度量方侧重微观层面的统计等不足, 为了更加准确地、定量地分析软件系统的基本特征, 结合复杂网络原理通过合理的度量去深层次了解软件网络的拓扑特性。在软件网络研究中, 最常见的被引用度量复杂网络的参数为以下几种:

(1) 节点的度和度分布, 有向网络中一个节点的度分为出度和入度, 从某种意义上讲每个节点的度能够体现该节点的“重要”程度。记<k>为节点的平均度, 表示网络中所有节点Vi的度数的平均值, 并用P (k) 表示网络中某一节点度数为k的概率, 度分布反应网络的整体性质。

(2) 平均路径长度, 以L[7]记为平均路径长度也可称为特征路径长度。不考虑节点到自身的距离,

L=112Ν (Ν-1) ij (i, jV) dij (1)

其中, N表示节点个数, V表示节点的集合, dij表示节点i到达节点j至少需要经过的边数。平均路径长度主要反应各个节点间的紧密程度。具有小世界效应的网络, 即使是非常复杂规模异常庞大, 它的平均路径长度依然很小。

(3) 聚类系数, 以C来表示。指网络中一个节点iki条边将此节点i和其他ki个节点相连, 那么, 这ki个节点之间至多存在Cki2=ki (ki-1) 2条边。由此可得到

Ci=2Eiki (ki-1) (2)

Ei表示ki而过节点之间实际存在的边数。聚类系数表明了与某一节点相邻的其他节点的连接程度, 若此节点代表为软件系统的一个类, 节点的聚集系数越大, 则这个类的相邻类间连接越紧密, 类之间的内聚性越高。

(4) 节点的点介数, 以C* (i) 来表示。其表达式为

C* (i) =ij, kδjk (i) δjk (3)

其中, δjk表示从节点j到节点k的所有最短路径的条数, δjk (i) 表示从节点j到节点k, 且经过节点i的所有最短路径的条数。

软件系统网络中, 一个度数较小的节点Vi所代表的类出现的错误可能会影响与其相连的度数较大的节点Vj所代表的类, 从而影响其他很多类。从度的角度看, Vj理所当然成为核心节点。但从软件系统实际出发, 度数较小的Vi却成为了核心节点。对这类节点做很小的改动, 有可能导致一系列的节点的变动。所以在软件构架、软件开发或者软件测试[8]阶段重点对待此类节点, 从而有效保证整个软件系统的稳定性。

3 园区管理系统实证分析

本文把软件系统抽象为由各个类当作节点, 类之间的调用、继承关系作为有向边的网络模型, 得到如2.3节中所描述的软件网络模型G= (V, T) , V表示节点的集合, T为加权有向边的集合。

3.1 园区管理系统

园区管理系统设计旨在为园区管委会、园区企业以及公众提供节能降耗、安全防护、智能楼宇机电设备与内部管理等一系列网络、设备系统与信息增值服务, 实现园区智能管理, 提高园区内物业管理、设施管理, 以及综合监控管理的效率;为园区业主提供一个安全、舒适及高效的工作、生活环境, 吸引更多企业入驻。

根据不同的功能, 可以将整个系统分为设备管理、 节能减排、 安全防范等几大模块, 其中设备管理模块下包括 DeviceDetailManager类、 DeviceFaultTypeManager类等; 节能减排模块下包括EnergyAlamManagement类、 EnergyContext 类等; 安全防范模块下包括EventManagement类、EventAlarmHandleResultReport类等。系统内部结构复杂, 类与类之间相互作用, 比如设备管理模块中的DeviceDetail类多次被此模块下的其他类调用, 安全防范下的Military类多次被此模块及其他模块下的类调用。所以从宏观上整体把握软件整体结构, 对于软件的架构设计或者软件测试与维护都显得尤为重要。

3.2 园区管理系统复杂网络特性实证分析

分析软件系统中各类之间的调用、继承关系, 以“0”表示类之间没有任何关系, 以大于0的整数表示类之间存在相互关系, 由此得出软件网络的邻接矩阵, 按照复杂网络分析软件Netdraw[9]规定的数据录入格式存储采集到的软件网络的相关数据, 经过分析得出图4 (a) 所示的园区管理系统网络结构图, 其中节点数N=68, 节点的最小度kmin=1, 节点的对大度kmax=29。每个节点ID为每个节点所代表类的类名。从图中亦可以明显看出绝大多数的节点的度相对较低, 但存在少量的度相对较高的节点。

为了更进一步验证软件系统的复杂网络特性, 利用Matlab对软件系统的度分布进行仿真实验。图4 (b) 所示为此软件网络的度分布图, 通过采集到的邻接矩阵经过调用函数得出此图。 从图中可以看出所分析的真实软件系统的网络图的度分布情况, 虽然网络规模不够庞大, 但得出的仿真图与理论度分布的幂律分布形式接近吻合, 从而验证了此软件网络具有明显的无标度特性。根据2.3节给出的复杂网络参数的定义, 可以计算出软件网络具体的度量值, 其中网络的聚类系数C=0.1966; 平均路径长度L=2.749; 节点的平均度值<k>=2.1324。由此可见园区软件系统具有较短的平均路径长度又具有较高的聚类系数, 继而验证了此软件网络又具有明显的小世界效应。

3.3 园区管理系统的测试代码覆盖率分析

作为保证软件质量的一个重要手段, 软件测试在软件的整个生命周期中占据着极为重要的地位。其中单元测试是整个测试过程中的第一阶段, 检验其函数的正确性 (包括功能正常, 输出正确) 。 单元测试的认真完成能给后期的集成测试和系统测试排除很多隐患, 在软件开发阶段就能发现较深层次的问题, 甚至迫使程序员优化代码结构和逻辑, 使软件质量达到一个新的高度并提高用户的交付使用满意度。下图为针对园区管理系统的源代码所写的单元测试用例, 利用单元测试框架Nunit运行的效果图。左边的工作域以树结构表示, 按加号层层展开对应源代码中的各模块名、类名、方法名;右侧区域为运行状态, 如果所有测试用例运行成功, 就为绿色, 反之如果有一个不成功, 则为红色。

单元测试要求单元中的代码的每一行都要被执行, 测试代码覆盖率是评判单元测试好坏的重要标准。完整的测试代码覆盖率可以说是零缺陷软件的决定性因素之一。代码覆盖率在一定程度上起到优化软件测试, 提升软件质量的重要作用。

代码覆盖率是软件测试程度的一种度量方式, 包括语句覆盖、分支覆盖、方法覆盖等。

①语句覆盖率=

②分支条件组合覆盖率=

③方法覆盖率=

100%的斥试覆盖率并不能保证bug的不出现。但一般认为, 基于同一测试覆盖标准, 测试覆盖率越高[10], 软件的稳定性在一定程度上可以说越高。

NCover是 .NET平台下的一个代码覆盖率分析工具, 通过选择NUnit执行程序全路径、包含要测试的程序集的目录以及要测试的程序集, 可以得到图6所示的结果图 (部分) 。图5显示了本文所写的单元测试代码的覆盖率:用黑色表示覆盖率为100%的类, 用蓝色表示覆盖率为小于100%并大于95%的类, 图中用最为显眼的红色表示覆盖率小于95%的类。

4 软件系统测试优先策略及实例分析

基于3.2节和3.3节的讨论, 证实了软件系统的复杂网络特征, 并利用专业软件分析得出所研究的软件系统的测试还不充分, 覆盖率的100%不能说明在后期的系统测试阶段一个bug也没有, 但是测试覆盖率没有达到100%的节点, 其测试程度肯定是不充分的。因此根据分析得出的数据, 针对这些测试还不充分的“节点”可以制定相应的优先策略, 也就是给定不同的节点不同的测试优先级。

定义 测试优先度用Y (i) 为

Y (i) =2-1C*+1-F=C*F+2C*-F+1C*+1 (4)

其中, C* (0<C*≤1) 表示软件系统的网络结构图中节点Vi的点介数, F (0<F≤1) 表示节点Vi的测试代码覆盖率。节点ViF不变的情况下, 其C*值越大则其测试优先度Y (i) 越高;同理在C*不变的情况下, 其F值越小则其测试优先度越小, 可见Y (i) 的定义充分合理的考虑了“节点”的点介数和覆盖率两个重要参数的各自特性。根据上述定义, 由各节点的点介数和覆盖率分别计算出各节点的测试优先度, 在此取点介数最大的前5个节点为例在下表中列出, 分别编号为1~5。表1所示为软件网络中节点的测试优先度评估结果表。

从表1可以发现, 节点介数排名前五的重要核心节点, 其中有三个节点测试覆盖率达不到100%, 根据测试优先度的计算结果, 得到Y (i) 的降幂序列, 其中Y (3) >Y (1) >Y (2) >Y (5) >Y (4) 。由此, 对于测试覆盖率未达到100%的“节点”, 给出测试优先顺序为Y (3) →Y (1) →Y (5) , 即优先设计节点3的单元测试用例增加覆盖率发现代码中存在bug, 然后分别为节点1和节点5。如果直接按照测试覆盖率的由高到低顺序:Y (3) →Y (5) →Y (1) 设计用例进行单元测试, 很显然忽略了重要类测试的及时性。

综上, 总结得出测试优先策略:构建软件系统拓扑模型, 计算软件系统模型的复杂网络参数;对软件系统进行初等单元测试, 利用专业分析软件NCover计算出测试代码覆盖率F;计算测试优先参数Y (i) , 得出测试优先序列;根据测试优先序列, 优先修改测试优先度Y (i) 值较高的类的测试代码, 提高软件测试效率。

采用上述这种优先策略, 针对实际软件系统进行二次测试。图7所示为采用上述优先策略进行测试前后代码覆盖率对比图, ◇表示未采用此策略得出的各节点测试覆盖率, 用覆盖率1 (100%) 表示; □表示采用此策略得出的各节点测试覆盖率, 用覆盖率2 (100%) 表示。

从图7可以明显看出, 采用这种测试优先策略, 大大提升了核心节点的测试覆盖率, 且在实际的测试中, 发现这些先前测试不充分的核心节点中确实存在或大或小的问题。通过此策略指引测试人员加强对待此类核心类, 避免后期由于此类节点修改而带来的一系列改动。据此也可以指导开发人员更多的关注这类节点所代表的类, 提高开发效率与软件质量。

5 结语

为保证软件的稳定性提高软件质量, 从软件测试角度分析, 作为把握软件质量的重要环节, 高效率的测试不但能使得整个团队从质量掌控上而且从时间上赢过竞争者, 使得利益最大化。利用软件系统中的小世界效应和无标度特征, 测试人员可以改变传统的测试思路, 制定优先或是重点测试机制。通过建立软件网络模型, 使得不参与软件设计的测试人员也能尽快地熟悉软件中各个组成元素之间的拓扑关系结构, 从而制定覆盖面100%的测试用例及时完成测试任务。

从软件设计角度看, 架构人员就必须充分考虑每个模块每个类或其他各粒度元素之间的关系。结合复杂网络理论为研究软件复杂性度量的平台, 构件网络化软件系统的关系依赖图模型, 从直观的网络图中去发现实际软件系统设计中不合理的模块, 减少软件耦合度, 合理地划分系统保证软件系统的运行的长效性以及处理数据的正确性, 并能一定程度上减少后期软件的维护成本。

进一步的工作可以通过研究更多的真实软件系统, 结合现有研究从软件结构角度, 去发现更多关于提高软件稳定性的度量指标。

摘要:软件行业的不断发展壮大, 使得软件质量问题日益突出, 复杂网络给软件系统的深入研究带来了崭新的视角。选取真实软件系统为研究对象, 用复杂网络作为工具构建软件系统的复杂网络模型, 证实了软件系统的复杂网络特性;同时依据软件测试结果, 分析了单元测试阶段的测试代码覆盖率。结合复杂网络参数及测试代码覆盖率定义了测试优先度, 提出了测试优先策略, 对于提高软件稳定性给出新的见解。实例结果表明:该优先策略对于提高测试覆盖率, 对及时查找出软件缺陷类是有效的, 有利于软件测试效率的提高。

关键词:复杂网络,测试优先度,软件稳定性,软件测试,代码覆盖率

参考文献

[1]Strogatz S H.Exploring complex networks[J].Nature, 2001, 410:268~276.

[2]Albert R, Barabasi A L.Statistical mechanics ofcomplex networks[J].Review of Modern Physics, 2002, 74:47~97.

[3]Valverde S, Cancho R F, sole R V.Scale freenetworks from optimal design[J].EurophysicsLetters, 2002, 6:512~517.

[4]李冰等.软件系统的复杂网络研究进展[J].力学进展, 2008, 11 (6) :805~814.

[5]王树森等.基于复杂网络的大型软件系统度量[J].计算机科学, 2009, 36 (2) :287~302.

[6]李兵等.基于复杂网络的软件复杂性度量研究[J].电子学报, 2006, 34 (12A) :2371~2375.

[7]汪小凡.复杂网络理论及其应用[M].北京:清华大学出版社, 2006.

[8]韩明畅等.软件中的网络化特征及其对软件质量的贡献[J].计算机工程与应用, 2006, 42 (20) :29~31.

[9]马杰良等.基于复杂网络的软件凝聚度计算[J].电脑知识与技术, 2007, 9:128~130.

软件复杂度 篇5

1 网络化软件的概念及特点

近年来, 我国计算机技术日新月异, 在社会各个领域中发挥着巨大的作用。网络化软件技术的应用作为最突出的部分, 在其应用深度和广度不断拓展的背景下, 人们对软件服务的要求越来越高, 导致网络化软件发展规模和复杂度飞速增长。网络化软件是布置在互联网中的一种复杂软件系统, 以网络信息和资源为基本元素, 主要以拓扑类结构和行为动态演变为主。网络化软件作为面向服务的计算机典型应用形式之一, 通过元素之间的互操作, 为人们提供所需要改变的在线服务, 并根据用户的需求及时地改变服务过程, 实现动态化管理与服务。网络化软件在应用过程中, 除了传统信息、计算机服务外, 其始终坚持以人为本的服务宗旨, 通过引入现实社会的人为载体, 为人们提供更加优质的软件服务, 从而促进我国社会经济飞速发展。

在社会主义现代化基础建设及信息化时代不断进步的背景下, 软件技术发挥着十分重要的意义, 它在服务及其服务态度上坚持严谨、以人为本的原则, 为社会生产生活带来了诸多便利。当前的网络化软件具有个性化、多元化的特点, 是为服务构造、生产提供指导的一项基础性软件。随着互联网技术的发展与普及, 网络资源的整合受到了全社会的关注, 通过虚拟化服务促进网络化软件不断创新和完善, 从而实现整个工作的关键性内容。

2 网络化软件的复杂网络特性实证分析

近年来, Internet和WWW发展十分迅速, 改变了传统PC软件的形态, 逐步与其融合, 网络化软件突出了网络基础设施在系统中的基础位置, 反映出了软件在系统元素中的核心地位, 有利于为用户构建完善的服务体系, 从而更加全面、科学地分析网络化软件的复杂性。

2.1 基础设施

Internet拓扑建模是一项相对复杂的工作, 其核心任务分析其中蕴含的普遍规律, 有利于更加科学地认识Internet, 为其高层次的开发和利用提供依据。Internet拓扑建模作为复杂网络研究实证的关键, 在计算机网络技术不断变化的背景下, 需要通过大量的数值仿真和实证对网络度量指标和网络性及其相关的内在机制进行研究, 从而有效地提高Internet工作效率与水平。

WWW作为人们获取和共享信息资源的平台, 其中链接结构在WWW众多领域中作用越来越大。近年来, WWW规模不断扩大、发展十分迅猛, 成为了复杂网络研究的重要载体, 从微观角度看, 利用WWW复杂网络特性及量化指标, 有利于不断创新和改善现有的搜索、评价及社会发现工具等。从宏观角度看, 应综合集成各种应用工具和系统, 以此挖掘WWW的巨大信息潜能。

2.2 应用服务

2.2.1 面向对象软件

软件是一种人工智能化系统, 其拓扑结构与其功能、性能及可靠性等指标密切相关, 科学地描述和有效地量化软件结构信息, 有利于开发人员对软件系统的复杂性进行深入研究, 从而获取更多的软件结构信息。软件结构表示一种互连内容的复杂网络拓扑形态, 从网络的角度去审视软件结构, 有利于更加全面地认识和理解软件的本质, 为软件复杂特性的量化奠定基础。

2.2.2 web服务

Web服务是基于web环境的自描述、模块化应用程序, 是一种非常重要的信息资源, 主要是通过Internet进行发布和访问的。采用软件技术审视web服务, 可以将其看作是软件技术的延伸, 以便更好地解决功能封装、消息传送以及动态绑定等问题。另外, 由于Internet可用公共web信息资源及服务存在局限性, 那么在搜集和分析数据工作带来的难度。因此研发人员应基于web及Internet的特点, 加大更大数据集web服务的研究与开发。

2.2.3 语义web服务Web服务是一种以服务为核心的技术, 若缺乏对服务的行为约束和属性描述的语义支持, 那么web服务的发现、选择以及组合就难免支持机器处理的精确性, 给web实用化进程的研究造成了阻碍。因此需要从语义层对web服务能力和属性进行描述, 为用户提供更加详细的描述, 从而提高web服务选取与推荐的针对性和准确性, 为服务的自动发现、选择以及执行等奠定良好的基础。

3 结束语

近年来, 我国软件技术及工程发展十分迅速, 一直致力于开发具有正确性、可靠性的高质量、高水平软件产品及服务, 在社会各个领域中发挥着十分重要的作用。随着网络技术的发展, 以Internet为基础, 规模巨大、组成元素复杂、不断变化和改进的网络软件系统正以飞一般的速度发展着, 同时其规模和复杂度也快速增长, 为我国软件技术和工程的发展带来了一系列的挑战。因此应立足于网络化、服务化、社会化的角度, 全面、科学地分析和研究网络化软件的复杂网络特征, 通过研究人员的实证探究, 在网络化软件的基础设施、应用服务等方面发现了复杂网络特征, 从而为我国软件工程事业的发展创造了良好的条件。

参考文献

[1]马于涛, 何克清, 李兵等.网络化软件的复杂网络特性实证[J].软件学报, 2011, 22 (3) :381-407.

[2]苏媛.网络化软件的复杂网络特性实证[J].电脑迷, 2014 (03) :21.

软件复杂度 篇6

为了更有效的保护好计算机系统, 通常在每台计算机中装有带网络同传功能的硬盘保护卡, 计算机每次启动自动还原, 从而实现系统的干净与快速启动。在机房计算机系统批量安装中, 首先保证每台计算机配置相同, 然后将驱动程序和所需软件安装在一台性能较好的电脑中, 以此机为母盘通过网络同传来实现机房所有计算机的软件安装。运用此方法, 大多数软件网络同传后能正常使用, 然而有很多复杂的应用软件, 网络同传后, 由于缺少MAC地址、机器名等本机信息对软件的注册支持, 无法正常使用的, 如PROE3.0及以上版本、SOLIDWORKS2008、UG4.0及以上, MAXPLUS II、3DMAX8.0、用友财务管理等。

为了使这些复杂软件能正常使用, 以往都是网络同船后再逐台进行手动注册, 工作非常繁琐, 而且容易出错。同时为了满足软件的升级、课程设置的变化、各种考试方式改革的需要, 机房计算机需要经常安装替换新软件, 每次改动都需要网络同传, 同传完又需要再逐台手动注册, 工作量非常大。寻找简便快捷的注册方式, 能有效提高安装效率, 保证安装效果。批处理程序为当前机房复杂软件的安装提供了一条便捷的途径, 本文介绍了运用批处理程序安装复杂软件的做法, 摸索出通过编写批处理程序来实现机房复杂软件自动注册的方法, 在实际工作应用中取得了很好的效果。

1 批处理程序的原理与优点

批处理程序也被称为批处理文件, 是指含有一系列命令的文本文件, 文件扩展名是.cmd或.bat, 可以使用Windows的记事本等文本文件编辑工具进行创建和修改, 它是一种简单的程序, 文件的每一行都是一条DOS命令, 每个命令可以包含多条子命令。双击批处理程序, 系统会自动调用cmd.exe, 按照批处理程序中的命令顺序, 依次执行。批处理程序命令一般包括echo命令、@命令、goto命令、rem命令、pause命令、call命令、start命令、choice命令、if命令等。

尽管批处理程序的编程能力十分有限但却具有编写简单, 执行速度快的特点, 可以简化重复性工作。在机房管理中, 由于需要进行大量的简单重复性劳动, 比如给每台机器中的软件网络同传后, 复杂软件必须要逐台进行注册才能正常使用, 可以通过编写自动批处理程序来替代繁琐的手动注册。实现复杂软件自动注册的批处理程序应实现如下功能:

1) 查找并获取复杂软件所需的本机注册信息;

2) 用本机注册信息替换复杂软件注册文件中相应注册信息。

2 软件自动注册批处理程序的编写

PROE3.0软件是一款大型参数化建模软件, 一般采用在母机上安装注册, 然后网络同传到其它机器中, 这款软件要求必须要用本机的MAC地址来替换安装许可文件license.lic中的MAC地址才能正常使用, 如果对每台机器都进行此项操作, 效率非常低下, 通过对PROE3.0软件编写自动注册批处理程序, 可以实现软件的快速注册。该软件的自动注册批处理程序代码如下:

相类似, 对于UG4.0软件需要编写批处理程序用本机的机器名替换注册文件license.lic中的机器名即可, 其它复杂软件同样可以编写相应的批处理程序来实现自动注册, 在此不再赘述。

3 自动注册批处理程序的使用方法

把该机房需要注册的几个复杂软件的自动注册批处理程序集成在一起, 保存成扩展名为bat的文件, 组成自动注册批处理文件。通过双击打开批处理文件, 来执行批处理程序文件中的各个批处理程序的逐条命令, 实现复杂软件的自动注册。在使用过程中, 如果人工逐台执行批处理程序, 效率也不高, 可以借助多媒体教学软件和任务计划方式, 实现网络远程运行批处理程序, 从而实现软件安装管理的网络化、智能化。

1) 借助多媒体教学软件进行发送和运行:使用多媒体教学软件, 把教师机中的批处理文件发送到学生机的桌面上, 然后通过多媒体教学软件逐机点击运行桌面上的批处理文件就可以实现复杂软件的自动注册。这种方法需要逐台机器打开硬盘保护, 运行批处理文件。虽然有些繁琐, 但优点是可靠性好, 稳定性高。

2) 采用在教师机上运行任务计划的方法:在教师机上建立一个目录, 共享该目录, 并把自动注册批处理文件放置其中。并对该批处理文件的运行属性进行相应设置, 如将“运行”改为“最小化”, 并将“退出时关闭”复选框勾上对勾。相应的, 在学生机上建立一个任务计划, 让该任务计划在计算机系统登录时运行教师机的自动注册批处理文件, 从而实现复杂软件的自动注册。这种办法可以避免逐台机器打开硬盘保护, 运行批处理文件的繁琐, 不足之处是每次运行电脑都要先打开教师机, 对教师机依赖性高, 可靠性差。

在实际工作中, 可以根据实际情况灵活选择具体使用方法。实践证明, 利用批处理程序来实现复杂软件的自动注册是一种非常可行的方法, 节省了大量繁琐的工作, 大大提高了工作效率。

4 小结

高校计算机机房软件大多采用网络同传的方法进行批量安装, 但同传后有些复杂软件还需要进行逐台手工注册, 繁琐又费时。通过编写批处理程序, 能实现复杂软件的快速自动注册, 免去了手工逐台注册的麻烦, 有效提高安装效率, 为当前大规模的机房管理提供了新的思路。高校计算机机房管理工作是一项复杂、细致的工作, 也是一项技术含量比较高的工作, 需要我们技术人员不断思索创新, 思索新技术, 开创新方法。

摘要:高校计算机机房软件大多采用网络同传的方法进行批量安装, 但同传后有些复杂软件还需要进行逐台手工注册, 繁琐又费时。该文针对机房复杂软件安装中存在的问题, 结合几个复杂软件自动注册的实例, 探讨使用批处理程序来实现机房复杂软件的自动注册的方法, 为当前机房复杂软件安装注册提供了一种新的思路。

关键词:复杂软件安装,批处理程序,软件注册,自动注册

参考文献

[1]赵艳, 宋书敏.DOS命令行实用精解[M].北京:电子工业出版社, 2007.

[2]廉龙颖, 王希斌.浅谈高校计算机机房管理[J].黑龙江科技信息, 2004 (11) :94.

软件复杂度 篇7

1.1 复杂动力网络的基本概念。

复杂的动力网络系统包含很多的子系统。它们在整体系统内相互之间有较为复杂的关系, 在把这些子系统假设成一个个的节点, 把他们之间的相互作用抽象成的节点之间的边, 通过这种方法, 复杂系统就抽象成一个复杂动力网络。复杂动力网络的复杂性体现在两个方面:其一, 复杂网络的节点数量非常庞大, 包含着庞大的节点;其二, 不同复杂动力网络之间有着各种各样的连接关系, 一般十分复杂。

1.2 复杂网络的基本参数及其含义。

(1) 平均最短路径长度。在网络中, 所有节点对之间的总距离与节点的总数之商, 我们定义为平均最短路径长度。平均最短路径长度所描述的是所有节点之间的分离度。在复杂动力网络中, 通过对平均最短路径长度的研究, 可以度量一个复杂网络的消息传递快慢, 系统响应能力。并且通过对其研究的深入, 还有一个重大的研究发现, 那就是对于绝大多数的大规模真实网络, 其平均路径长度比我们对他们的想象要小得多这就是所谓的“small-world”现象。

(2) 聚集系数。是用来表明网络紧密程度的参数, 可以用来描述网络中所存在的节点的聚集情况, 并且可以以此来度量不同粒度软件实体中的内聚程度。我们通过大量的实践证明, 规模较大且真实网络中的节点倾向于聚集在一起, 聚集系数与随机网络相比要大得多。较大的聚集系数成为了现代软件系统的重要标志之一。

(3) 度分布。先指定某一节点, 在该节点周围, 与之连接的相邻节点的数目被成为度。平常我们所说的网络的平均度指的是在该网络中所有节点的平均值。相比于其他的参数, 大规模真实网络读的分布不是正态分布或者泊松分布, 而是幂律分布。近段时间的研究发现, 与大规模真实网络相同, 幂律分布也适用于软件网络中的节点的度的分布。对于软件系统来说, 度分布主要用于描述在该网络中每一个节点的连通特性, 节点的重用性和复杂度也可以通过度分布来体现, 入度是体现重用度的, 它越大, 则对应节点的重用度越高, 出度是表现复杂度的参数, 该参数越大, 对应节点的复杂度越高。

二、复杂网络理论在软件工程领域的应用

现在的复杂网络理论在软件工程领域主要有以下几个方面的应用。

2.1 软件网络建模。

网络拓扑结构的复杂特征是其本质的体现, 它表现了真实情况下的网络结构和优势。很多网络中的单个用户在不想干扰的情况下组成了不同的真实网络, 它们又在不同的环境下进行发展和进化, 最后形成了比较稳定的复杂网络结构。这种较为稳定的网络结构是经过长时间考察的结果, 在实际应用中得到证明。

2.2 软件设计。

软件系统的内部特征很复杂, 也是决定软件性能的主要部分之一。为了更好地进行软件的开发, 对内部特征的掌握是十分关键的部分, 借助复杂网络理论可以得到相对较为完善的软件系统结构, 指导其设计。在软件结构的分析优化方面, 可以根据稳定的建模来进行完善, 还可以分析计算机病毒的传播。

三、结束语

复杂的动力网络应用于软件系统的开发过程中, 关键是对网络拓扑结构进行深入的开发研究和度量分析, 通过对复杂网络模型进行分析, 将软件系统中的多变交互关系理顺清楚, 更好地观察其中存在的问题, 发现其中的规律。

摘要:本文对复杂动力网络的发展历程做了简单地介绍, 对复杂动力网络在软件工程中的运用做了概述, 希望对以后复杂动力网络和软件工程的交叉研究能有所帮助。

关键词:复杂动力网络,软件工程,计算机应用,网络模型

参考文献

软件复杂度 篇8

近年来,同塔输电技术以其输电走廊窄、占耕地面积小、输电容量大、投资成本低、建设速度快[1]等优点得到了广泛应用。在工程实际中,除全程同塔双回线路外,还衍生有部分同塔、混压同塔等其他多种形式的复杂同塔线路结构[2,3,4,5]。与全程同塔双回线路相比,复杂同塔线路的故障特性和故障类型更复杂,对线路保护的性能提出了更高要求[6,7,8,9,10,11,12,13]。

复杂同塔线路故障特性的理论分析极为困难即使通过复故障分析法可获得线路故障的解析表达,但由于其复杂性,也难以直接用于保护性能分析。因此,数字仿真是进行复杂同塔线路继电保护原理研究和性能评估的重要手段。国内外学者针对同塔线路结构特点,提出了多种线路模型构建方法[14,15,16],但目前的研究均假设同塔各回线的导线参数相同,只适用于全程同塔等简单方式,不能直接应用于混压同塔这类导线参数不一致的复杂同塔线路。此外,故障仿真分析,特别是保护性能的评估分析需考虑不同故障点位置、不同故障类型以及不同运行方式等各种因素的影响,而同塔线路故障情况复杂,仅同塔四回线路的各种故障就有8184种[17]若通过手动修改模型参数,逐个进行仿真,工作量巨大,也难以保证仿真操作的准确性。

本文根据复杂同塔线路保护分析要求,建立了同塔线路仿真系统模型,提出了一种适用于复杂同塔结构的线路仿真模型构建方法,并针对不同故障条件自动切换、仿真软件自动循环仿真以及仿真数据预处理和保护功能模块的规范设计等实现技术问题提出了相关解决方案,工程应用实例验证了所开发的保护分析软件的有效性和正确性。

1 同塔线路仿真系统设计

1.1 同塔线路仿真系统结构

在实际工程中,由于地理环境的限制或输电特殊需求,除全程同塔双回线路外,还存在部分同塔、混压同塔等复杂结构形式。通过对现场同塔线路结构形式的调研分析,在复杂同塔线路中,部分同塔双回、同压同塔四回和混压同塔四回占主导地位。因此,为了满足不同同塔线路保护的分析要求,在仿真软件设计中,构建了图1所示的4种典型仿真系统结构模型。图1(a)中Ⅰ、Ⅱ回线全程同塔,两端共母。与图1(a)不同,图1(b)中Ⅰ、Ⅱ回线在近M侧母线同塔架设,两回线在另一侧分别到达N、Q母线。图1(c)和图1(d)中Ⅰ、Ⅱ回线设为组1,Ⅲ、Ⅳ回线为组2,在虚线中间段组1和组2双回线路构成同塔四回线路。

在仿真模型中,可通过调整母线背侧等值阻抗ZM、ZN、ZP、ZQ模拟系统不同的运行方式,使用母线间阻抗ZMP、ZNQ、ZMN、ZMQ、ZPQ来反映母线各侧外部等值系统之间电气联系的强弱。上述4种仿真系统结构可涵盖绝大多数常见的同塔线路形式,满足复杂同塔线路故障特性分析和保护性能评估的需求。

1.2 复杂同塔线路模型构建方法

为了适应继电保护暂态性能的分析要求,整个仿真分析软件基于PSCAD构成。在图1所示的仿真系统建模中,系统电源、联接阻抗等可直接采用PSCAD基本模块,难点是如何正确构建复杂同塔线路模型。

为了准确反映同塔线路结构参数的影响,同塔线路模型需采用PSCAD中的杆塔模型。对于全程同塔线路,由于各回线一般均采用相同型号的导线,即导线参数相同,其建模方法相对简单,两回线路采用单个杆塔模块统一构建。但对于复杂同塔线路,如混压同塔线路,由于各回线的导线参数不一致,无法通过上述方式建立线路模型,需采用新的建模方法。

针对部分同塔、混压同塔等复杂同塔方式时同塔线路导线参数不一致的问题,可根据导线参数分组构建多个杆塔模块,通过设置对应的导线位置结构参数,使各杆塔模块相互耦合,共同组成符合工程实际的同塔线路模型。如图2所示,以混压同塔四回线路为例,若四回线导线参数不一致,可在参数编辑器中添加4个杆塔模块,分别对4个杆塔模块输入各自的导线及位置结构参数。若同压的两回线路导线参数相同,也可采用2个杆塔模块,每个杆塔模块按同塔双回线路模型设置,共同构成同塔四回线路。另外,通过改变线路模型接口间的连接方式,可以实现不同同塔方式,如中端同塔、送端同塔、受端同塔等仿真建模要求。

2 仿真软件的关键实现技术

2.1 自动循环仿真实现技术

如前所述,复杂同塔线路继电保护动作特性分析与评估需考虑系统运行方式、同塔线路运行方式、故障点位置、故障类型、过渡电阻等众多故障条件变化的影响,仿真的工作量巨大,如何实现不同故障条件的自动切换以及PSCAD软件的自动循环调度控制,是保护分析软件设计中需要重点解决的关键问题。

PSCAD自带有Multiple Run功能,可以解决六变量、六测量量的多重循环仿真,但由于同塔线路故障条件复杂繁多,Multiple Run功能中变量取值有限,而且通道不足,故PSCAD自带的多重仿真功能不能满足应用要求。为此,本文基于MATLAB环境,通过编制专用软件模块,实现故障条件自动切换及PSCAD软件的运行调度控制。

在PSCAD图形界面下建模后,将自动生成psc模型文件,该文件包含了模型内部的详细信息。故障条件的切换实际上对应的是PSCAD仿真模型的改变,因此,可通过修改psc文件来实现。psc文件参数修改的一种直观方法是根据该参数在psc文件中的具体位置,通过文件指针定位移动,对其进行重新赋值。但由于同塔线路故障条件的切换涉及系统阻抗、故障点位置以及模拟不同故障类型的时控开关等众多元件参数,指针定位计算复杂,且一旦定位出现偏差,将导致模型修改错误,甚至导致仿真崩溃。进一步的研究分析发现,PSCAD模型参数除了可使用固定数值表征外,还可将其设置为字符型的全局常量。设置的常量全部保存在psc文件中的子函数Global_Consts中。根据以上特点,可首先将PSCAD同塔线路模型中所有与故障条件切换相关的参数均设为全局常量。在此基础上,通过MATLAB写文件函数修改psc文件,根据所需仿真的故障条件,对Global_Consts中全程常量赋予不同的数值,并保持psc文件的其他部分不变。通过生成不同的psc文件,即可实现不同故障条件的自动切换。上述方法简单可靠,其生成的仿真模型与在PSCAD图形界面编辑的模型完全一致。psc文件全局常量修改示例如下。

PSCAD软件的运行通常是通过人工操作鼠标,点击打开PSCAD软件、加载仿真模型、编译仿真及关闭软件等步骤实现故障仿真。为避免人工干预,提高仿真效率,可通过MATLAB软件模拟鼠标的上述操作步骤,对PSCAD进行调度控制,实现自动循环仿真。以编译仿真为例,首先控制鼠标移动到PSCAD软件的仿真按钮Run,其次控制单击鼠标开始仿真。由于每次打开PSCAD软件后,Run按钮的位置是固定的,因此下一次仿真时鼠标移动到指定位置的坐标保持不变,保证了程序的通用性。参照以上鼠标操作可以实现其他的仿真步骤。

由于PSCAD软件采用分步骤运行方式,在其循环调度控制中需要解决的另一个问题是如何实现PSCAD与鼠标操作时间上的同步,以保证鼠标操作前,上一步骤已经完成。在各操作步骤中,打开PSCAD软件、加载仿真模型、编译仿真等环节的运行时间相对固定,可通过在各个步骤之间添加固定延时来实现时间同步。但上述方式不适用于关闭软件这类鼠标操作的时间控制。由于不同故障条件的仿真完成时间存在差异,在模拟鼠标操作关闭软件前,需确保PSCAD已完成所有仿真计算,而若以最大仿真延时作为鼠标操作等待时间,将会导致仿真效率大幅降低,因此,需采用其他更为有效的同步控制方法。

对PSCAD仿真输出文件分析可知,其.out文件第1列数据记录了当前仿真时间,且该文件是随着仿真时间的推进逐行自动写入。因此,在循环控制软件设计时,可不断读入.out文件的第1行仿真时间数据,一旦该时间与预设的仿真时间相同,则表明PSCAD仿真计算完成,可控制鼠标关闭软件。

采用上述控制技术,可实现PSCAD的自动循环仿真,从而大幅提高仿真效率,并能有效避免手动修改模型参数造成的错误。

2.2 数据预处理及保护功能模块设计

PSCAD仿真软件生成的1个.out文件只能包含10个输出通道数据,当输出通道大于10时,.out文件依次以_01.out、_02.out等输出。同塔线路保护动作特性分析涉及的通道数较多,因此,在分析前需对仿真数据进行预处理,以形成规范的数据格式,以便后续保护功能模块的调用处理。

仿真数据的预处理主要包括以下基本功能。

a.多个.out文件的整合。通过MATLAB读取多个_xx.out文件,并进行整合处理,分线路形成标准化的二次采样值矩。

b.基本参数计算。对采样数据分别进行傅氏变换和对称分量变换,计算并保存保护所需的基础电气参数,如各相基频电压、电流分量、各序分量以及故障分量等,以便不同保护原理根据需要选择调用。

保护功能模块设计是整个软件设计的重要基础。由于保护厂家众多,保护原理各异,为全面评估同塔线路保护动作特性,需要对不同厂家的不同保护原理分别编程实现。在保护软件开发中,借鉴了微机保护软件的模块化设计方法,将保护功能模块分为保护元件计算模块、保护动作逻辑运算模块、保护动作记录模块、仿真条件记录模块等。

a.保护元件计算模块:仿照模拟式保护的结构特点,形成不同的“软件继电器”(保护元件)。利用已计算出的各种基础电气参数,根据各保护元件的动作方程,进行计算判断,其结果作为逻辑量输出。保护元件主要包括各种功率方向元件、电流差动元件、阻抗元件、选相元件、振荡闭锁元件以及时间元件等。

b.保护动作逻辑运算模块:根据保护整体动作逻辑,将相关“保护元件”的输出结果进行逻辑组合运算,以决定保护的最终动作行为。

c.保护动作记录模块:记录各保护元件的输出逻辑结果和保护动作逻辑运算结果,并对拒动或误动的情况加以标记,以为保护动作行为分析提供依据。

d.仿真条件记录模块:依次记录循环仿真的每一种故障条件,以便当保护误动或拒动时,可据此有针对性地开展进一步的详细仿真分析。

上述模块化设计方法,软件结构清晰,开发维护方便。在仿真软件中,设计了差动元件(分相差动、零序差动)、选相元件(单回线选相、双回线选相等)、测量阻抗元件(四边形特性、正序电压极化特性等)以及方向元件(零序方向、负序方向等),并可以根据分析需求加以扩展补充。

2.3 仿真软件基本结构

整个保护分析软件由主控模块、仿真模型自动循环控制模块、仿真数据预处理模块、保护功能模块以及输出显示模块五部分组成,其基本结构见图3。

通过主控模块,用户可根据分析需要选择同塔线路仿真系统类型以及被评估的保护原理。此外,为提高仿真分析效率,在主控模块中设置了“循环条件设置”功能。用户可选择包含所有故障条件的全部遍历仿真或者选择针对某类故障条件的局部重点仿真,如可选择不同故障点位置、不同故障类型或不同运行方式等进行分类仿真。

完成主控模块设置后,软件将通过MATLAB自动循环控制模块实现不同的故障条件的自动切换,并模拟鼠标操作,实现PSCAD的运行调度控制。仿真完成后将生成统一的输出文档。用户可根据研究需求选择输出显示被分析的保护原理在各种故障条件下的动作记录数据,以便综合对比分析;也可对标记的保护拒动或误动情况,利用其对应的仿真条件记录结果,通过主控模块生成此时的仿真模型,对其故障暂态特性以及保护动作性能开展进一步的详细分析。

3 仿真测试与工程应用

仿真分析软件开发完成后,对其进行了全面的功能测试,结果表明其各项性能均达到设计要求,目前已在工程实际中得到应用,并在复杂同塔线路保护动作原理研究和适用性分析中发挥了积极作用。本节以某实际的500 k V/220 kV混压同塔四回线路为例,简述其仿真测试及应用结果。

3.1 线路参数介绍

线路的等效示意图如图1(d)所示,其中500 kV线路采用的导线型号为4×LGJ-630/45,220 kV线路采用的导线型号则为2×LGJ-630/45,子导线直径为33.6 mm、分裂间距为500 mm,20℃时直流电阻为0.045 9Ω/km。500 k V及220 kV线路地线都为36芯OPGW,地线直径为15.6 mm,20℃时直流电阻为0.324Ω/km。同塔四回段的杆塔参数及线路相序排列方式如图4所示,其中G1、G2表示架空地线,A、B、C、a、b、c表示各相导线的相别。

3.2 仿真验证

在仿真系统模型测试中,重点针对所提出的复杂同塔线路建模方法的正确性进行了验证分析。由于与保护分析相关的线路基本参数是正序、负序和零序阻抗参数,而正序与负序阻抗基本相同,因此仿真验证中模拟现场参数测量方法,分别测试线路末端短路时首端的正序、零序等值阻抗,并将仿真测试结果与现场的实测结果进行对比分析,其中Ⅰ回线的对比结果如表1所示。

从表1可知,正序、零序测量阻抗与实测结果的相对误差在6%以内,均处于合理范围。测量误差主要是由于仿真模型中的某些设置参数,如土壤电阻率等与现场运行实际电阻率有关,难以准确给定。上述对比结果表明,所采用的同塔线路模型构建方法正确,满足工程应用要求。

由于保护动作特性仿真分析涉及不同保护原理、不同运行方式、不同故障类型以及不同故障点位置等诸多因素,受文章篇幅所限,难以详细展开分析,将另文详细说明。表2—4给出的是仿真故障条件、某厂家用于全程同塔双回线路的距离保护选相元件和接地距离Ⅱ段的仿真结果。由表3可以看出,全程同塔双回线路选相元件不能直接应用于混压同塔线路,在发生跨线故障时存在误选相情况。表4为Ⅲ回线P侧保护安装处的接地距离Ⅱ段在不同跨线接地故障下的动作结果。可以看出,在跨线故障情况下,正序电压极化的接地阻抗继电器的整体性能优于四边形特性的接地阻抗继电器,但2种阻抗继电器在某些跨线故障下仍存在拒动问题。根据输出结果记录的仿真故障条件(见表2)做进一步的仿真分析,结果表明造成混压跨线接地故障保护拒动的主要原因是上述跨线故障会导致测量阻抗幅值显著增大,或相角发生严重偏移,具体见表5,分析结论可为距离保护的性能改善和工程应用提供重要参考。

注:强表示强电源;p为故障点位置和M侧电源的距离占Ⅰ回线全长的百分比。

注:选相结果中F表示误选相。

注:幅值为测量阻抗与Ⅲ回线正序阻抗的比值。

4 结语

数字仿真是进行复杂同塔线路继电保护原理研究和性能评估的重要手段。本文根据同塔线路的结构特点和保护分析要求,以PSCAD为核心,开发了一套复杂同塔线路保护动作特性仿真分析软件,具有以下特点:

a.构建的4种典型仿真系统结构模型可涵盖绝大多数常见的同塔线路形式,满足复杂同塔线路故障特性分析和保护性能评估的要求;

b.同塔线路模型构建方法较好地解决了导线参数不一致时的建模问题,能准确模拟部分同塔、混压同塔等各种复杂同塔线路的参数特性;

c.自动循环仿真技术可实现不同故障条件的自动切换及PSCAD软件的自动调度控制,大幅提高了仿真效率,并能避免手动修改模型参数造成的错误;

d.保护软件采用模块化设计方法,开发维护方便,并易于功能扩展,为复杂同塔线路保护原理研究和性能评估提供了有力的分析工具。

摘要:根据复杂同塔线路的结构特点和保护分析要求,以PSCAD为核心,提出了一种适用于复杂同塔结构的线路仿真模型构建方法。基于MATLAB环境建立专用软件模块,实现故障条件自动切换及PSCAD软件的循环调度控制。对仿真数据预处理和保护功能模块进行了设计。基于上述工作,开发了一套复杂同塔线路保护动作特性分析软件。工程应用实例验证了该软件的有效性和正确性。

上一篇:愉快教学运用下一篇:智能化设计