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

文档序号:6521527阅读:203来源:国知局
一种软件复杂度分析系统及方法
【专利摘要】本发明公开了一种软件复杂度分析系统,该系统包括:软件数据收集模块,其用于收集并输出描述待分析软件中软件包和所述软件包之间依赖关系的软件数据;标准化模块,其用于接收待分析软件数据,并将待分析软件数据标准化得到标准软件数据;软件复杂度分析模块,其针对待分析软件中的每一个软件包,基于该软件包与待分析软件中其他软件包之间的依赖关系计算每一个软件包的复杂度,并根据每一软件包的复杂度基于预设模型计算待分析软件的复杂度。本发明结构简单、方便可用,能够准确地分析出软件的复杂度,从而提高软件的质量和降低维护软件的代价。
【专利说明】一种软件复杂度分析系统及方法
【技术领域】
[0001]本发明涉及软件分析【技术领域】,具体地说,涉及一种软件复杂度分析系统及方法。【背景技术】
[0002]由于免费开放源代码等优点,开源软件得到广泛应用。开源软件不同于商业软件,它是以开源的方式由分布在各地的软件开发小组协同开发。同时,基于对开源项目代码的获取与重用,会有非常多的组织和个人加入其中,这就使得开源软件的种类和数量急剧增力口。它们在功能上相互依赖,基于各自特定的开发语言和组件模型,这些直接导致了开源软件的高复杂度。而软件的复杂度直接影响软件的质量,尤其是稳定性,进而影响软件维护的代价和精力。
[0003]所以研究开源软件的复杂度对于研究开源软件的风险性和稳定性是十分必要的,目前尚没有对开源软件复杂度进行量化分析的方便可以用的系统,这使得对于软件的管理和风险评估方面存在不足,影响了开源软件的发展。
[0004]根据上述情况,亟需一种用于分析软件复杂度的方便可用的系统。

【发明内容】

[0005]为解决上述问题,本发明提供了一种软件复杂度分析系统,该系统包括:
[0006]软件数据收集模块,其用于收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;
[0007]标准化模块,其用于接收所述待分析软件数据,并将所述待分析软件数据标准化得到标准软件数据;
[0008]软件复杂度分析模块,其用于接收所述标准软件数据,基于其中软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,并基于所述每一软件包的复杂度通过预设模型计算所述待分析软件的复杂度。
[0009]根据本发明的一个实施例,所述预设模型包括以下所列项中的任一项:
[0010]平均值模型,计算所述各个软件包的复杂度的平均值,作为所述待分析软件的复杂度;
[0011]加权模型,对所述各个软件包的复杂度进行加权求和,将所得结果作为所述待分析软件的复杂度。
[0012]根据本发明的一个实施例,所述软件包之间的依赖关系包括所述软件包之间的环状依赖关系。
[0013]根据本发明的一个实施例,所述软件复杂度分析模块还包括环中出现次数最多边查找单元,其用于根据所述环状依赖关系查找所有环中出现次数最多的边。
[0014]根据本发明的一个实施例,所述系统还包括存储器,其连接在所述标准化模块和软件复杂度分析模块之间,用于接收和存储所述标准化模块和软件复杂度分析模块输出的数据。[0015]根据本发明的一个实施例,所述系统还包括图形绘制单元,其用于访问存储器以获取待分析软件的标准软件数据,所述图形绘制单元包括以下所列项中的任一项或几项:
[0016]复杂度图形绘制单元、软件包依赖关系有向图绘制单元、软件包环状依赖关系环状图绘制单元。
[0017]根据本发明的一个实施例,所述系统还包括:
[0018]软件版本数据获取模块,其用于获取待分析软件的各个版本的版本数据;
[0019]软件进化趋势分析模块,其用于接收所述待分析软件的各个版本的版本数据,并对所述软件版本数据进行分析,得到待分析软件的进化趋势数据。
[0020]根据本发明的一个实施例,所述系统还包括软件进化趋势图形绘制单元,其用于根据所述进化趋势数据绘制相应图形,所述软件进化趋势图形绘制单元包括以下所列项中的任一项或几项:
[0021]软件文件数进化曲线绘制单元、软件源代码行数进化曲线绘制单元、软件文件数与源代码行数关系曲线绘制单元、软件圈复杂度进化曲线绘制单元。
[0022]本发明还提供了一种软件复杂度分析方法,所述方法包括以下步骤:
[0023]待分析软件数据收集步骤,收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;
[0024]数据标准化步骤,将所述待分析软件数据按照特定格式进行标准化,得到标准软件数据;
[0025]软件复杂度分析步骤,基于接收到的所述标准软件数据中的软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,进而基于所述每一个软件包的复杂度通过预设模型计算所述待分析软件的复杂度。
[0026]根据本发明的一个实施例,所述方法还包括以下步骤:
[0027]软件版本数据获取步骤,针对待分析的软件获取所述待分析软件的版本数据;
[0028]软件进化趋势分析步骤,对所述待分析软件的版本数据进行分析,得到待分析软件的进化趋势数据。
[0029]本发明提供的系统结构简单、方便可用,能够准确地分析出软件的复杂度,从而为各个软件包提供风险评估数据,为有效降低大型软件的风险度提供数据依据,有利用提高大型软件的质量(例如稳定性),进而有效降低软件维护的代价。
[0030]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
【专利附图】

【附图说明】
[0031]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要的附图做简单的介绍:
[0032]图1是根据本发明一个实施例的软件复杂度分析系统结构图;
[0033]图2是根据本发明一个实施例的分析软件复杂度的流程图;
[0034]图3是根据本发明一个实施例的基于SOA思想的软件复杂度分析系统结构图;
[0035]图4时根据本发明一个实施例的基于SOA思想的软件复杂度分析系统进行软件复杂度分析的流程图;
[0036]图5a至图5d分别是根据本发明一个实施例的软件包的环状图;
[0037]图6a是根据本发明一个实施例的软件包之间依赖关系的有向图;
[0038]图6b是根据本发明一个实施例的去除出现次数最多的边后软件包之间依赖关系的有向图;
[0039]图7是根据本发明一个实施例的具有软件进化趋势分析功能的软件复杂度分析系统的结构图;
[0040]图8是根据本发明一个实施例的软件复杂度分析系统进行软件进化趋势分析的流程图。
【具体实施方式】
[0041]以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
[0042]如图1所示,本实施例基于随机图论提供了一种软件复杂度分析系统,其包括:软件数据收集模块101、标准化模块102、软件复杂度分析模块103。其中标准化模块102连接在软件数据收集模块101和软件复杂度分析模块103之间。
[0043]图2示出了利用上述软件复杂度分析系统进行软件复杂度分析的流程图。首先,在步骤S201中软件数据收集模块101收集并输出包括待分析软件中软件包数据和各个软件包之间依赖关系数据的待分析软件数据。其中软件包数据包括软件包的名称和软件包的标示值,但本发明不限于此。
[0044]随后,在步骤S202中标准化模块102接收软件数据收集模块101发出的待分析软件数据,并将待分析软件数据按照特定的格式进行标准化,得到标准软件数据。本实施例
中,标准化模块102将待分析软件数据标准化为表格形式。
[0045]最后在步骤S203中,软件复杂度分析模块103根据步骤S202中得到的标准软件数据中的软件包之间的依赖关系对待分析软件的复杂度进行分析,得到待分析软件的复杂
度结果。
[0046]在步骤S203中,软件复杂度分析模块103针对待分析软件中的每一个软件包,基于该软件包与待分析软件中其他软件包之间的依赖关系计算每一个软件包的复杂度,并根据每一软件包的复杂度基于预设模型计算待分析软件的复杂度。
[0047]其中,上述预设模型可以为平均值模型,即将各个软件包的复杂度的平均值作为待分析软件的复杂度。上述预设模型还可以为加权模型,即将各个软件包的复杂度通过预定的加权系数加权求和,并将得到的结果作为待分析软件的复杂度。但本发明不限于此,在根据本发明的其他实施例中,软件复杂度分析模块103还可以利用其他合理模型计算得到待分析软件的复杂度。
[0048]该系统结构简单、方便可用,能够准确地分析出软件的复杂度,从而为各个软件包提供风险评估数据,并为有效降低大型软件的风险度提供数据依据。
[0049]实施例一:[0050]如图3所示,本实施例中,软件复杂度分析系统采用面向服务的体系结构(Service-Oriented Architecture,简称为SOA)的思想,将系统的软件数据收集模块101置于客户端30中,将标准化模块102和软件复杂度分析模块102置于web服务器31中。同时为了满足快速处理大量数据的要求,本实施例中,软件复杂度分析系统还包括存储器304,其置于数据库服务器32中。
[0051]为了更好地为用户提供软件复杂度分析的结果,如图3所述,本实施例中,软件复杂度分析系统包括:软件数据收集模块101、标准化模块102、存储器304、软件复杂度分析模块103、图形绘制模块305和分析结果显示模块306。
[0052]图4示出了本实施例中软件复杂度分析系统进行软件复杂度分析的流程图。如图4所示,本实施例中,在步骤S402中标准化模块102接收软件数据收集模块101在步骤S401中收集到的待分析软件数据,将该数据按照一定的形式(例如表格)进行标准化得到标准软件数据,随后在步骤S403中将得到的标准软件数据存储到与标准化模块102连接的存储器204 中。
[0053]表1
[0054]
【权利要求】
1.一种软件复杂度分析系统,其特征在于,包括: 软件数据收集模块,其用于收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据; 标准化模块,其用于接收所述待分析软件数据,并将所述待分析软件数据标准化得到标准软件数据; 软件复杂度分析模块,其用于接收所述标准软件数据,基于其中软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,并基于所述每一软件包的复杂度通过预设模型计算所述待分析软件的复杂度。
2.如权利要求1所述的系统,其特征在于,所述预设模型包括以下所列项中的任一项: 平均值模型,计算所述各个软件包的复杂度的平均值,作为所述待分析软件的复杂度; 加权模型,对所述各个软件包的复杂度进行加权求和,将所得结果作为所述待分析软件的复杂度。
3.如权利要求1所述的系统,其特征在于,所述软件包之间的依赖关系包括所述软件包之间的环状依赖关系。
4.如权利要求3所述的系统,其特征在于,所述软件复杂度分析模块还包括环中出现次数最多边查找单元,其用于根据所述环状依赖关系查找所有环中出现次数最多的边。
5.如权利要求1至3中任一项所述的系统,其特征在于,所述系统还包括存储器,其连接在所述标准化模块和软件复杂度分析模块之间,用于接收和存储所述标准化模块和软件复杂度分析模块输出的数据。
6.如权利要求5所述的系统,其特征在于,所述系统还包括图形绘制单元,其用于访问存储器以获取待分析软件的标准软件数据,所述图形绘制单元包括以下所列项中的任一项或几项: 复杂度图形绘制单元、软件包依赖关系有向图绘制单元、软件包环状依赖关系环状图绘制单元。
7.如权利要求1至3中任一项所述的系统,其特征在于,所述系统还包括: 软件版本数据获取模块,其用于获取待分析软件的各个版本的版本数据; 软件进化趋势分析模块,其用于接收所述待分析软件的各个版本的版本数据,并对所述软件版本数据进行分析,得到待分析软件的进化趋势数据。
8.如权利要求7所述的系统,其特征在于,所述系统还包括软件进化趋势图形绘制单元,其用于根据所述进化趋势数据绘制相应图形,所述软件进化趋势图形绘制单元包括以下所列项中的任一项或几项: 软件文件数进化曲线绘制单元、软件源代码行数进化曲线绘制单元、软件文件数与源代码行数关系曲线绘制单元、软件圈复杂度进化曲线绘制单元。
9.一种软件复杂度分析方法,其特征在于,所述方法包括以下步骤: 待分析软件数据收集步骤,收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据; 数据标准化步骤,将所述待分析软件数据按照特定格式进行标准化,得到标准软件数据;软件复杂度分析步骤,基于接收到的所述标准软件数据中的软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,进而基于所述每一个软件包的复杂度通过预设模型计算所述待分析软件的复杂度。
10.如权利要求9所述的方法,其特征在于,所述方法还包括以下步骤: 软件版本数据获取步骤,针对待分析的软件获取所述待分析软件的版本数据; 软件进化趋势分析步骤,对所 述待分析软件的版本数据进行分析,得到待分析软件的进化趋势数据。
【文档编号】G06F11/36GK103605607SQ201310630388
【公开日】2014年2月26日 申请日期:2013年12月2日 优先权日:2013年12月2日
【发明者】夏磊 申请人:中标软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1