论文部分内容阅读
软件是人类的智慧通过计算机来表达的一种有效手段,其产品质量不像一般的工业产品那样有严格的检测标准,因而难以得到有效的控制和保障。当软件系统在我们的生活中发挥着越来越大的作用的同时,软件的规模和复杂程度随着其功能的日益强大而剧增,软件系统中大量的底层元素及它们之间错综复杂的交互关系已逐渐超出了开发人员的理解能力,软件开发常处于失控状态,致使系统难以维护。如何理解和量化软件日益增长的复杂性,保证软件正确可靠的运行,是软件度量学要解决的关键问题,也是软件工程面临的一个极大的挑战。生理学家丹特-恰尔夫认为:“人类的大脑结构是一个复杂网络,表现出非常强烈的小世界特征,能够形成最有效的连结。”作为人类大脑思维活动的产物,软件网络成为大脑结构的一个分形,其内部结构也表现出了明显的复杂网络特征。通过对系统中元素间纷繁复杂的交互关系的描述,软件网络有助于从全局的角度了解软件结构的基本性质和规律,进而反映出结构特征对系统质量的影响。基于这种思想,本文对软件的内部结构进行抽象,在有向加权的软件网络模型上对影响软件可信属性的结构特征进行研究,从而对相关的可信属性进行分析和度量。本文首先分析了传统软件度量方法在大规模软件度量应用上的不足,结合软件结构特征对软件质量的影响,提出了一个多维度的软件度量方法体系,从软件网络的宏观拓扑、微观构成及基础结构三个角度分别对相应的结构特征进行分析,阐述了这些结构特征在软件结构的复杂性、稳定性及可靠性等方面的影响作用,并根据分析结果确定各维度的基本度量参数和度量手段。接下来,本文依次从度量体系的三个维度上对软件可信性度量分析的原理及相应的方法进行了详细的论述。首先,在软件的宏观拓扑结构上,对大量样本软件的基本宏观拓扑特征值进行了统计分析,并采用K-S检验方法对其分布检验,在此基础上,提出了基于特征值偏差率的软件度量方法,根据特征值对软件的结构复杂性、执行效率和有序性的影响,并通过与相同规模软件的平均水平进行比较,对软件的相对规模质量特征进行度量。另一方面,针对软件的构造方式与特点,提出了一种基于构造特征的结构度量方法,通过对节点辐射度和辐射圈比等概念的定性描述和定量分析,反映出软件系统的构造复杂性及其在结构上存在的设计缺陷,为软件开发人员提供理论指导和数据参考,以降低软件测试和维护的代价。其次,本文从软件的微观构成角度对软件的结构稳定性进行了分析和度量。利用设计模式在面向对象软件中作为典型的微观结构对整个软件网络的影响作用,提出了一种基于设计模式的软件结构稳定性度量方法,从微观结构的稳定性入手,对系统的整体结构稳定性进行分析。论文首先通过对23种设计模式在大量样本软件中应用情况的统计,总结出设计模式的应用规律,然后利用Lyapunov方法对由设计模式构成的微观结构稳定性进行分析,结果发现所有设计模式都具有稳定的结构特征。进一步地,结合软件系统中对设计模式的应用情况,提出模式覆盖率的概念,根据设计模式的微观结构对软件整体结构的影响,反映软件的整体结构稳定性。再次,本文提出了面向对象软件的基础结构——软件的核结构的概念,由于基础结构的可靠性对系统的整体可靠性起到了绝对的影响作用,因此,通过分析软核结构中节点的度分布情况,并结合继承关系的使用对系统可靠性的影响,对软核结构的可靠性进行了分析和度量。基于继承关系的软核结构提取过程反映了系统中继承树的分布及各类节点的继承深度情况,进一步根据类节点的入度,定义了节点的继承依赖属性,用于对系统中对继承深度较深的节点产生过度依赖的结构缺陷进行检测。最后,在上述研究的基础上,本文设计并实现了一个软件可信性度量分析平台。通过该度量平台,可以直接对开源软件的结构进行分析,从三个维度对软件的可信属性进行度量,并通过可视化界面直观的了解软件的内在组织结构及其相关的结构特征,有助于理解和掌握大规模软件的结构的复杂性及其对软件质量的影响,为软件开发和维护提供指导。