论文部分内容阅读
随着计算机科学技术的发展,人们对软件的依赖程度不断的增长。硬件技术的发展使得软件能够解决的问题也越来越复杂,软件的规模也随之快速增长,相应的软件的复杂性也不断的增长。然而软件的复杂性是获取高质量软件最直接的障碍。如何更清楚的理解软件的特性成为设计高质量软件的一项非常重要的工作。软件是一个系统,软件组成单元(包、类、组件、方法等)之间的依赖与联系使得软件的拓扑结构形成为一个网络。近几年,复杂网络研究的兴起引起了软件研究人员的注意。国内外的一些研究也从不同的方面证实了大规模软件系统具有复杂网络的特性。以系统的视角研究软件的特性得到了很多研究人员的重视。软件网络概念的提出为从系统层面研究网络提供了有效的支持。虽然目前将复杂网络理论引入软件工程研究中取得了一定的研究成果,但在这方面的研究毕竟还处于初级阶段,很多研究离软件工程实践尚有较大的距离。其中比较突出的问题有:如何设计出合理的加权软件网络模型,其加权的边能够准确的表示软件实际依赖关系的特性;加权软件网络的统计特性与软件外部特征的关系;软件网络在实际的软件质量属性上的相关应用等。要在软件开发实践中使用软件网络,我们还需要做大量的工作。鉴于此,本文做了如下研究:首先,在大量的分析了软件网络组成单元的特性及组成单元之间的依赖特性后提出了一个加权软件网络模型。该加权软件网络充分考虑了软件组成单元的细节,并将这些信息以权值的方式反映在软件网络的有向边上。利用这个加权软件网络模型旨在保持能在系统层面研究软件的同时也能更准确的反映软件组成单元之间的信息传递的具体特性,包括缺陷的传播、变更的“涟漪效应”、软件结构的容错性等。接着,本文在提出的加权软件网络模型的基础上对软件网络结点之间的影响进行了较全面的分析。在实际的软件开发过程中,复杂软件系统(Complex Software System)很大比例的潜在性软件缺陷(latent software faults)只会导致很少的软件失效(software failures),而观察发现的绝大多数的软件失效是由极少部分的潜在性缺陷所引起的;清除软件中的大部分缺陷对软件的可靠性只有微不足道的影响;只有当清除的缺陷是属于那些占极少比例的“大规模(large size)"缺陷,软件的可靠性才会出现显著的增强。同样,在软件发布前的测试中少数模块包含有大多数的缺陷,而在软件的运行状态下,发现的绝大多数的缺陷包含在极少数的模块中。然而,这个现象既不能用模块的规模(module size)也不能用模块的复杂性(complexity)来解释。本文在分析了软件网络结点之间的影响的基础上提出并验证了四条软件网络结点之间影响的假设。这些研究有助于我们了解上述现象出现的本质原因,并为软件结构优化、降低软件测试成本及软件可靠性增长提供参考和指导。进一步,本文在研究了软件网络结点之间影响的基础上,对软件结构与软件可靠性之间的关系进行了研究,并提出了一个基于软件结构的软件可靠性测量方法。软件可靠性定义为软件在一段持续的运行时间内出现错误的概率,是软件质量属性中的一个非常重要的属性。软件缺陷是不可避免的,而软件的可靠性是软件在运行时错误出现的频率,因此要提高软件的可靠性,其中控制软件缺陷传播、寻找软件的错误倾向模块就显得非常重要。软件的结构决定了软件缺陷传播的强度,好的软件结构能够保障较小的缺陷传播率和较好的软件的容错能力。鉴于此,本文在系统的层面对软件网络进行了较深入的分析,研究了软件结构对软件缺陷传播的影响,给出了一个评估软件缺陷在软件中传播概率的方法,以此来度量软件结构在软件可靠性方面的影响。