一种软件复杂度分析系统及方法技术方案

技术编号:9718663 阅读:100 留言:0更新日期:2014-02-27 05:21
本发明专利技术公开了一种软件复杂度分析系统,该系统包括:软件数据收集模块,其用于收集并输出描述待分析软件中软件包和所述软件包之间依赖关系的软件数据;标准化模块,其用于接收待分析软件数据,并将待分析软件数据标准化得到标准软件数据;软件复杂度分析模块,其针对待分析软件中的每一个软件包,基于该软件包与待分析软件中其他软件包之间的依赖关系计算每一个软件包的复杂度,并根据每一软件包的复杂度基于预设模型计算待分析软件的复杂度。本发明专利技术结构简单、方便可用,能够准确地分析出软件的复杂度,从而提高软件的质量和降低维护软件的代价。

【技术实现步骤摘要】
一种软件复杂度分析系统及方法
本专利技术涉及软件分析
,具体地说,涉及一种软件复杂度分析系统及方法。
技术介绍
由于免费开放源代码等优点,开源软件得到广泛应用。开源软件不同于商业软件,它是以开源的方式由分布在各地的软件开发小组协同开发。同时,基于对开源项目代码的获取与重用,会有非常多的组织和个人加入其中,这就使得开源软件的种类和数量急剧增加。它们在功能上相互依赖,基于各自特定的开发语言和组件模型,这些直接导致了开源软件的高复杂度。而软件的复杂度直接影响软件的质量,尤其是稳定性,进而影响软件维护的代价和精力。所以研究开源软件的复杂度对于研究开源软件的风险性和稳定性是十分必要的,目前尚没有对开源软件复杂度进行量化分析的方便可以用的系统,这使得对于软件的管理和风险评估方面存在不足,影响了开源软件的发展。根据上述情况,亟需一种用于分析软件复杂度的方便可用的系统。
技术实现思路
为解决上述问题,本专利技术提供了一种软件复杂度分析系统,该系统包括:软件数据收集模块,其用于收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;标准化模块,其用于接收所述待分析软件数据,并将所述待分析软件数据标准化得到标准软件数据;软件复杂度分析模块,其用于接收所述标准软件数据,基于其中软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,并基于所述每一软件包的复杂度通过预设模型计算所述待分析软件的复杂度。根据本专利技术的一个实施例,所述预设模型包括以下所列项中的任一项:平均值模型,计算所述各个软件包的复杂度的平均值,作为所述待分析软件的复杂度;加权模型,对所述各个软件包的复杂度进行加权求和,将所得结果作为所述待分析软件的复杂度。根据本专利技术的一个实施例,所述软件包之间的依赖关系包括所述软件包之间的环状依赖关系。根据本专利技术的一个实施例,所述软件复杂度分析模块还包括环中出现次数最多边查找单元,其用于根据所述环状依赖关系查找所有环中出现次数最多的边。根据本专利技术的一个实施例,所述系统还包括存储器,其连接在所述标准化模块和软件复杂度分析模块之间,用于接收和存储所述标准化模块和软件复杂度分析模块输出的数据。根据本专利技术的一个实施例,所述系统还包括图形绘制单元,其用于访问存储器以获取待分析软件的标准软件数据,所述图形绘制单元包括以下所列项中的任一项或几项:复杂度图形绘制单元、软件包依赖关系有向图绘制单元、软件包环状依赖关系环状图绘制单元。根据本专利技术的一个实施例,所述系统还包括:软件版本数据获取模块,其用于获取待分析软件的各个版本的版本数据;软件进化趋势分析模块,其用于接收所述待分析软件的各个版本的版本数据,并对所述软件版本数据进行分析,得到待分析软件的进化趋势数据。根据本专利技术的一个实施例,所述系统还包括软件进化趋势图形绘制单元,其用于根据所述进化趋势数据绘制相应图形,所述软件进化趋势图形绘制单元包括以下所列项中的任一项或几项:软件文件数进化曲线绘制单元、软件源代码行数进化曲线绘制单元、软件文件数与源代码行数关系曲线绘制单元、软件圈复杂度进化曲线绘制单元。本专利技术还提供了一种软件复杂度分析方法,所述方法包括以下步骤:待分析软件数据收集步骤,收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;数据标准化步骤,将所述待分析软件数据按照特定格式进行标准化,得到标准软件数据;软件复杂度分析步骤,基于接收到的所述标准软件数据中的软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,进而基于所述每一个软件包的复杂度通过预设模型计算所述待分析软件的复杂度。根据本专利技术的一个实施例,所述方法还包括以下步骤:软件版本数据获取步骤,针对待分析的软件获取所述待分析软件的版本数据;软件进化趋势分析步骤,对所述待分析软件的版本数据进行分析,得到待分析软件的进化趋势数据。本专利技术提供的系统结构简单、方便可用,能够准确地分析出软件的复杂度,从而为各个软件包提供风险评估数据,为有效降低大型软件的风险度提供数据依据,有利用提高大型软件的质量(例如稳定性),进而有效降低软件维护的代价。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要的附图做简单的介绍:图1是根据本专利技术一个实施例的软件复杂度分析系统结构图;图2是根据本专利技术一个实施例的分析软件复杂度的流程图;图3是根据本专利技术一个实施例的基于SOA思想的软件复杂度分析系统结构图;图4时根据本专利技术一个实施例的基于SOA思想的软件复杂度分析系统进行软件复杂度分析的流程图;图5a至图5d分别是根据本专利技术一个实施例的软件包的环状图;图6a是根据本专利技术一个实施例的软件包之间依赖关系的有向图;图6b是根据本专利技术一个实施例的去除出现次数最多的边后软件包之间依赖关系的有向图;图7是根据本专利技术一个实施例的具有软件进化趋势分析功能的软件复杂度分析系统的结构图;图8是根据本专利技术一个实施例的软件复杂度分析系统进行软件进化趋势分析的流程图。具体实施方式以下将结合附图及实施例来详细说明本专利技术的实施方式,借此对本专利技术如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本专利技术中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本专利技术的保护范围之内。如图1所示,本实施例基于随机图论提供了一种软件复杂度分析系统,其包括:软件数据收集模块101、标准化模块102、软件复杂度分析模块103。其中标准化模块102连接在软件数据收集模块101和软件复杂度分析模块103之间。图2示出了利用上述软件复杂度分析系统进行软件复杂度分析的流程图。首先,在步骤S201中软件数据收集模块101收集并输出包括待分析软件中软件包数据和各个软件包之间依赖关系数据的待分析软件数据。其中软件包数据包括软件包的名称和软件包的标示值,但本专利技术不限于此。随后,在步骤S202中标准化模块102接收软件数据收集模块101发出的待分析软件数据,并将待分析软件数据按照特定的格式进行标准化,得到标准软件数据。本实施例中,标准化模块102将待分析软件数据标准化为表格形式。最后在步骤S203中,软件复杂度分析模块103根据步骤S202中得到的标准软件数据中的软件包之间的依赖关系对待分析软件的复杂度进行分析,得到待分析软件的复杂度结果。在步骤S203中,软件复杂度分析模块103针对待分析软件中的每一个软件包,基于该软件包与待分析软件中其他软件包之间的依赖关系计算每一个软件包的复杂度,并根据每一软件包的复杂度基于预设模型计算待分析软件的复杂度。其中,上述预设模型可以为平均值模型,即将各个软件包的复杂度的平均值作为待分析软件的复杂度。上述预设模型还可以为加权模型,即将各个软件包的复杂度通过预定的加权系数加权求和,并将得到的结果作为待分析软件的复杂度。但本专利技术不限于此,在根据本专利技术的其他实施例中,软件复杂度分析模块103还可以利用其他合理模型计算得到待分析软件的复杂度。该本文档来自技高网...
一种软件复杂度分析系统及方法

【技术保护点】
一种软件复杂度分析系统,其特征在于,包括:软件数据收集模块,其用于收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;标准化模块,其用于接收所述待分析软件数据,并将所述待分析软件数据标准化得到标准软件数据;软件复杂度分析模块,其用于接收所述标准软件数据,基于其中软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,并基于所述每一软件包的复杂度通过预设模型计算所述待分析软件的复杂度。

【技术特征摘要】
1.一种软件复杂度分析系统,其特征在于,包括:软件数据收集模块,其用于收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;标准化模块,其用于接收所述待分析软件数据,并将所述待分析软件数据标准化得到标准软件数据;软件复杂度分析模块,其用于接收所述标准软件数据,基于其中软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,并基于所述每一软件包的复杂度通过预设模型计算所述待分析软件的复杂度;所述软件包之间的依赖关系包括所述软件包之间的环状依赖关系;所述软件复杂度分析模块还包括环中出现次数最多边查找单元,其用于根据所述环状依赖关系查找所有环中出现次数最多的边;去除所述所有环中出现次数最多的边后查找各个软件包之间新的依赖关系,根据所述新的依赖关系计算出去除出现次数最多边后待分析软件中各个软件包新的复杂度和整个待分析软件新的复杂度。2.如权利要求1所述的系统,其特征在于,所述预设模型包括以下所列项中的任一项:平均值模型,计算所述各个软件包的复杂度的平均值,作为所述待分析软件的复杂度;加权模型,对所述各个软件包的复杂度进行加权求和,将所得结果作为所述待分析软件的复杂度。3.如权利要求1或2所述的系统,其特征在于,所述系统还包括存储器,其连接在所述标准化模块和软件复杂度分析模块之间,用于接收和存储所述标准化模块和软件复杂度分析模块输出的数据。4.如权利要求3所述的系统,其特征在于,所述系统还包括图形绘制单元,其用于访问存储器以获取待分析软件的标准软件数据,所述图形绘制单元包括以下所列项中的任一项或几项:复杂度图形绘制单元、软件包依赖关系有向图绘制单元、软件包环状依赖关系环状图绘制单元。5.如权利要求1或2所述的系统,...

【专利技术属性】
技术研发人员:夏磊
申请(专利权)人:中标软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1