当前位置:问答库>论文摘要

题目:基于复杂网络的软件静态结构分析

关键词:软件结构分析;软件聚类;软件稳定性;逆向工程;复杂网络

  摘要

软件结构作为影响软件质量属性的重要原因之一,一直受到软件工程研究人员的广泛关注。随着软件规模的不断攀升,错综复杂的底层细节给软件的结构理解和质量评估带来了巨大的挑战。近年来,以复杂网络为代表的复杂系统科学研究取得了丰硕的成果。软件工程领域的研究人员开始从系统科学的角度,运用复杂网络的理论和方法,研究软件的结构特征,旨在理解软件的演化规律,为软件的开发和维护提供支持。本文运用复杂网络的理论和方法,针对软件静态结构的度量和分析技术进行了研究,具体的研究内容和取得的成果包括:1) 提出了一种软件静态结构的依赖网络模型,验证了软件依赖网络的复杂网络特性。针对现有的软件网络研究中模型定义不统一的问题,分析对比了现有方法的特点和不足,提出了一种软件静态结构的依赖网络模型。该模型从代码调用的角度,将软件系统抽象成计算服务提供者以及它们之间的依赖关系,满足了不同编程范型、不同抽象层次上软件的网络化建模需求,实现了不同抽象层次间网络模型的直观映射。实例分析的结果表明,软件依赖网络同样具有小世界特性,入度基本服从幂率分布,出度基本服从带指数截断的幂率分布。2) 基于软件静态依赖网络的子图统计特性,首次发现了软件网络的超家族分类,以及超家族分类与软件规模之间的联系。针对软件网络中局部结构的差异性问题,采用子图显著性剖面法,对比分析了软件网络与其它领域复杂网络中三节点子图的统计特性。研究发现,软件网络大致可以分为3大类,和已发现的4个有向复杂网络超家族中的3个基本一致。在此基础上,本文讨论了3个软件网络超家族的结构特征,发现软件规模是影响网络局部拓扑结构的重要因素。当节点规模小于200时,不同软件的局部结构之间存在明显的差异。随着软件规模的不断增加,软件拓扑的网络化趋势越发明显,局部结构趋于一致。3) 提出了一种基于复杂网络的二阶段软件聚类方法。软件聚类技术的提出,旨在发掘程序中的子系统,通过简化系统结构,提高软件结构的理解效率。但是,现有的方法很少考虑软件结构特征对软件聚类方法、聚类效果的影响,导致聚类效果不佳。针对这个问题,本文将复杂网络社区发现领域的GN算法引入到软件聚类中,结合软件网络的结构特征,提出了一种二阶段软件聚类方法。该方法计算复杂度低,能够避免产生的子系统过于细碎。对比实验表明,二阶段方法在总体上优于Bunch方法和GN算法,可以有效地支持软件维护。4) 提出了一种基于变更传播仿真的软件稳定性评估方法SEMCIS。稳定性是软件可维护性的一个重要的子属性,对它的度量和预测一直是软件度量和软件维护研究的焦点之一。但是,在以往的稳定性预测研究中,人们很少考虑软件自身结构特征对稳定性的影响,导致预测精度不高,无法给软件的设计和维护提供有效的指导。针对这个问题,本文提出了一种基于变更传播仿真的稳定性评估方法SEMCIS,给出了变更的传播模型、评价指标以及指标的仿真计算方法。实例分析表明,降低传播概率、改善软件的体系结构设计可以有效地抵御“涟漪效应”的发生;降低入度hub之间的相互连接、减少入度hub的后继节点数量可以防止大范围变更的频繁发生,提高软件稳定性。这一结论为软件的结构设计和质量评估提供了理论依据。