CN103605607B - 一种软件复杂度分析系统及方法 - Google Patents

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

Info

Publication number
CN103605607B
CN103605607B CN201310630388.9A CN201310630388A CN103605607B CN 103605607 B CN103605607 B CN 103605607B CN 201310630388 A CN201310630388 A CN 201310630388A CN 103605607 B CN103605607 B CN 103605607B
Authority
CN
China
Prior art keywords
software
data
complexity
analyzed
dependence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310630388.9A
Other languages
English (en)
Other versions
CN103605607A (zh
Inventor
夏磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Standard Software Co Ltd
Original Assignee
China Standard Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Standard Software Co Ltd filed Critical China Standard Software Co Ltd
Priority to CN201310630388.9A priority Critical patent/CN103605607B/zh
Publication of CN103605607A publication Critical patent/CN103605607A/zh
Application granted granted Critical
Publication of CN103605607B publication Critical patent/CN103605607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

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

Description

一种软件复杂度分析系统及方法
技术领域
本发明涉及软件分析技术领域,具体地说,涉及一种软件复杂度分析系统及方法。
背景技术
由于免费开放源代码等优点,开源软件得到广泛应用。开源软件不同于商业软件,它是以开源的方式由分布在各地的软件开发小组协同开发。同时,基于对开源项目代码的获取与重用,会有非常多的组织和个人加入其中,这就使得开源软件的种类和数量急剧增加。它们在功能上相互依赖,基于各自特定的开发语言和组件模型,这些直接导致了开源软件的高复杂度。而软件的复杂度直接影响软件的质量,尤其是稳定性,进而影响软件维护的代价和精力。
所以研究开源软件的复杂度对于研究开源软件的风险性和稳定性是十分必要的,目前尚没有对开源软件复杂度进行量化分析的方便可以用的系统,这使得对于软件的管理和风险评估方面存在不足,影响了开源软件的发展。
根据上述情况,亟需一种用于分析软件复杂度的方便可用的系统。
发明内容
为解决上述问题,本发明提供了一种软件复杂度分析系统,该系统包括:
软件数据收集模块,其用于收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;
标准化模块,其用于接收所述待分析软件数据,并将所述待分析软件数据标准化得到标准软件数据;
软件复杂度分析模块,其用于接收所述标准软件数据,基于其中软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,并基于所述每一软件包的复杂度通过预设模型计算所述待分析软件的复杂度。
根据本发明的一个实施例,所述预设模型包括以下所列项中的任一项:
平均值模型,计算所述各个软件包的复杂度的平均值,作为所述待分析软件的复杂度;
加权模型,对所述各个软件包的复杂度进行加权求和,将所得结果作为所述待分析软件的复杂度。
根据本发明的一个实施例,所述软件包之间的依赖关系包括所述软件包之间的环状依赖关系。
根据本发明的一个实施例,所述软件复杂度分析模块还包括环中出现次数最多边查找单元,其用于根据所述环状依赖关系查找所有环中出现次数最多的边。
根据本发明的一个实施例,所述系统还包括存储器,其连接在所述标准化模块和软件复杂度分析模块之间,用于接收和存储所述标准化模块和软件复杂度分析模块输出的数据。
根据本发明的一个实施例,所述系统还包括图形绘制单元,其用于访问存储器以获取待分析软件的标准软件数据,所述图形绘制单元包括以下所列项中的任一项或几项:
复杂度图形绘制单元、软件包依赖关系有向图绘制单元、软件包环状依赖关系环状图绘制单元。
根据本发明的一个实施例,所述系统还包括:
软件版本数据获取模块,其用于获取待分析软件的各个版本的版本数据;
软件进化趋势分析模块,其用于接收所述待分析软件的各个版本的版本数据,并对所述软件版本数据进行分析,得到待分析软件的进化趋势数据。
根据本发明的一个实施例,所述系统还包括软件进化趋势图形绘制单元,其用于根据所述进化趋势数据绘制相应图形,所述软件进化趋势图形绘制单元包括以下所列项中的任一项或几项:
软件文件数进化曲线绘制单元、软件源代码行数进化曲线绘制单元、软件文件数与源代码行数关系曲线绘制单元、软件圈复杂度进化曲线绘制单元。
本发明还提供了一种软件复杂度分析方法,所述方法包括以下步骤:
待分析软件数据收集步骤,收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;
数据标准化步骤,将所述待分析软件数据按照特定格式进行标准化,得到标准软件数据;
软件复杂度分析步骤,基于接收到的所述标准软件数据中的软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,进而基于所述每一个软件包的复杂度通过预设模型计算所述待分析软件的复杂度。
根据本发明的一个实施例,所述方法还包括以下步骤:
软件版本数据获取步骤,针对待分析的软件获取所述待分析软件的版本数据;
软件进化趋势分析步骤,对所述待分析软件的版本数据进行分析,得到待分析软件的进化趋势数据。
本发明提供的系统结构简单、方便可用,能够准确地分析出软件的复杂度,从而为各个软件包提供风险评估数据,为有效降低大型软件的风险度提供数据依据,有利用提高大型软件的质量(例如稳定性),进而有效降低软件维护的代价。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要的附图做简单的介绍:
图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还可以利用其他合理模型计算得到待分析软件的复杂度。
该系统结构简单、方便可用,能够准确地分析出软件的复杂度,从而为各个软件包提供风险评估数据,并为有效降低大型软件的风险度提供数据依据。
实施例一:
如图3所示,本实施例中,软件复杂度分析系统采用面向服务的体系结构(Service-Oriented Architecture,简称为SOA)的思想,将系统的软件数据收集模块101置于客户端30中,将标准化模块102和软件复杂度分析模块102置于web服务器31中。同时为了满足快速处理大量数据的要求,本实施例中,软件复杂度分析系统还包括存储器304,其置于数据库服务器32中。
为了更好地为用户提供软件复杂度分析的结果,如图3所述,本实施例中,软件复杂度分析系统包括:软件数据收集模块101、标准化模块102、存储器304、软件复杂度分析模块103、图形绘制模块305和分析结果显示模块306。
图4示出了本实施例中软件复杂度分析系统进行软件复杂度分析的流程图。如图4所示,本实施例中,在步骤S402中标准化模块102接收软件数据收集模块101在步骤S401中收集到的待分析软件数据,将该数据按照一定的形式(例如表格)进行标准化得到标准软件数据,随后在步骤S403中将得到的标准软件数据存储到与标准化模块102连接的存储器204中。
表1
包名 标识值 依赖包
demo 1 chart,data,combination,tooltips
ui 2 chart
combination 3 chart,event
data 4 -
chart 5 event,tooltips,ui,combination
event 6 ui
tooltips 7 -
jdbc 8 -
本实施例中,在步骤S401中软件数据收集模块101查询开源软件JfreeChart的核心包org.jfree.chart,得到8个软件包以及各个软件包之间的依赖关系,每个包以数值进行标识。标准化模块102将待分析软件的数据进行标准化,得到标准软件数据,其如表1所示。
本实施例中,各个软件包之间的依赖关系包括各个软件包之间的环状依赖关系,但本发明不限于此,在本发明的其他实施例中,各个软件包之间的依赖关系还可以包括其他合理关系(例如树状关系)。
为了提供关于软件复杂度更为丰富的数据,本实施例中,软件复杂度分析模块103包括环状依赖关系查找单元303a、复杂度计算单元303b和出现次数最多变查找单元303c。
在步骤S404中,当软件复杂度分析模块103需要对软件的复杂度进行分析时,复杂度计算单元303b访问存储器304以获取步骤S402中得到的标准软件数据,该数据包含了标准化后的待分析软件中的软件包数据和各个软件包之间的依赖关系数据。复杂度计算单元303b根据各个软件包之间的依赖关系数据计算每一个软件包的复杂度,其中某个软件包的复杂度等价于以该软件包与根节点按边的方向生长的树中软件包的个数。
本实施例中,复杂度计算单元303b利用平均值模型计算待分析软件中各个软件包复杂度的平均值,将所得平均值作为待分析软件的复杂度。并将各个软件包的复杂度和待分析软件的复杂度数据存储到存储器304中。本实施例中,将待分析软中各个软件包的耦合度作为其复杂度,但本发明不限于此,但本发明的其他实施例中,待分析软件的复杂度还可以包括其他参数(例如内聚度等)。
环状依赖关系查找单元103a同时在步骤S404中访问存储器304以获取步骤S402中得到的标准软件数据,并根据上述标准软件数据得到待分析软件中各个软件包之间的环状依赖关系。
本实施例中,环状依赖关系查找单元103a使用深度优先遍历或广度优先遍历的方法识别随机图中的中的环。从图论的定义,环也称为回路,是第一个顶点和最后一个顶点相同的路径。环状依赖关系查找模块103a以随机图论为基础,将软件中包含的软件包抽象成节点,把包与包之间的依赖关系抽象成有向边。节点Vi按有向边的方向V1、V2、V3、…、Vn组成环,且环的第一顶点和最后一个顶点都是V1,表示为{V1,V2,V3,…,Vn},从节点i到节点j的有向边表示为eij
环状依赖关系查找模块103a根据待分析软件中各个软件包之间的依赖关系分别识别出环{V2,V5}、环{V5,V6}、环{V2,V5,V6}和环{V3,V5,V6},其环状图分别如图5a~图5d所示,最后将查找到的环状依赖关系存储到存储器304中。
出现次数最多边查找单元103c根据环状关系查找模块103a得到的环状图分别计算所有环状图中各个边的出现次数,并查找出出现次数最多的边。各个环的有向边的出现次数如表2所示。
表2
有向边
{V2,V5} e25,e52
{V5,V6} e56,e65
{V2,V5,V6} e25,e56,e65,e52
{V3,V5,V6} e36,e65,e53
出现次数最多边查找单元103c根据各个有向边的出现次数,统计得到出现次数最多边为e65
表3
软件包标识值 复杂度 去除出现次数最多边后的复杂度
1 6 6
2 4 4
3 3 1
4 0 0
5 4 4
6 3 0
7 0 0
8 孤立 孤立
平均值 2.86 2.15
在步骤S404中,环状依赖关系查找单元103a还根据出现次数最多边查找单元103c得到的所有环中出现次数最多的边查找去除所有环中出现次数最多的边后各个软件包之间新的依赖关系,并查找出各个软件包之间新的环状图,最后将新的依赖关系存储到存储器中。复杂度计算单元103根据新的依赖关系计算出去除出现次数最多边后待分析软件中各个软件包新的复杂度和整个待分析软件新的复杂度。随后复杂度计算单元103b将计算得到的复杂度结果存储到存储器304中,并对存储器304中的数据进行更新。复杂度计算单元103b计算得到的复杂度结果如表3所示。
如上表所示,当去除所有环中出现次数最多的边后,软件整体复杂度减小,从而有效降低了软件的风险度。再次如图3所示,为了将复杂度分析模块103中各个单元的结果形象化的呈现给用户以方便用户分析决策,本实施例中,软件复杂度分析系统还包括一系列图形绘制单元305。
本实施例中,图形绘制单元305包括软件包依赖关系有向图绘制单元305a、软件包环状依赖关系环状图绘制单元305b和复杂度图形绘制单元305c。再次如图4所示,本实施例中,在步骤S405中,上述图形绘制单元访问存储器以获取待分析软件的标准软件数据,但本发明不限于此,上述图形绘制单元还可以以其他方式获取所需数据。
在步骤S405中,依赖关系有向图绘制单元305a分别根据标准软件数据和去除出现次数最多边后新的的标准软件数据将各个包抽象成节点,软件包之间的关系抽象成有向线,绘制出软件包之间的环状图,其分别如图6a和图6b所示。
软件包环状依赖关系环状图绘制单元305b与环状依赖关系查找单元103a连接,根据环状依赖关系查找单元103a得到的带分析软件的环状依赖关系数据绘制出待分析软件中的环状图,其绘制出的环状图如图5a到图5d所示。
复杂度图形绘制单元305c与复杂度计算单元103b连接,在步骤S405中,其根据复杂度计算单元103b计算得到的复杂度数据绘制出复杂度计算结果。本实施例中,复杂度计算结果是以表格的形式进行呈现的,复杂度图形绘制单元305c输出的表格如表3所示,表格中包含了待分析软件中各个包的复杂度和软件整体的平均复杂度,同时还包含了去除出现次数最多的边后待分析软件中各个包的新的复杂度和软件整体新的复杂度。
最后为了将图形绘制单元305绘制出的图形向用户呈现,本实施例中,软件复杂度分析系统还包括分析结果显示模块306。在步骤S406中,显示模块将步骤S405中图形绘制单元305绘制出的图像进行显示。
实施例二:
为了更好的对大型开源软件进行管理,本实施例中,软件复杂度分析系统还具有对软件的进化趋势进行分析的功能。
如图7所示,本实施例在实施例一描述的软件复杂度分析系统的基础上,进一步地还包括软件版本数据获取模块707和软件进化趋势分析模块708,但本发明不限于此。软件进化趋势分析模块708与软件版本数据获取模块707以获取软件版本数据获取模块707得到的待分析软件的版本数据。需要说明的是,本实施例中,分析软件进化趋势时的待分析软件可以与上述复杂度分析系统中分析的待分析软件相同,也可以不同,本发明不限于此。
如图8所示,在步骤S801中,软件版本数据获取模块707利用相应数据获取工具获取待分析软件的各个版本的版本数据。如图7所示,本实施例中,软件版本数据获取模块707包括可选软件及版本区间显示单元707a、软件版本数据收集单元707b和软件版本数据存储单元707c。但本发明不限于此,在本发明的其他实施例中,软件版本数据获取模块707还可以通过其他合理方式获取软件的版本数据。本实施例中,可选软件及版本区间显示单元707a为浏览器,但本发明不限于此。
用户根据可选软件及其版本区间确定希望分析的软件及其版本区间,在步骤S801中,软件版本数据收集单元707b从软件版本数据存储单元707c中获取相应软件的版本数据。
软件版本数据收集单元707b根据软件版本数据的不同存储方式而采用不同的数据收集工具。当软件版本数据存储单元707c包括版本管理库时,软件版本数据收集单元707b就相应地包括WinCVS等数据收集工具,以实现从版本数据中收集软件版本数据;当软件版本数据存储单元707c包括FTP服务器等存储器时,软件版本数据收集模块707b就相应地包括SmartFTP等数据收集工具,以实现从FTP服务器等存储器中收集软件版本数据。
在步骤S802中,软件进化趋势分析模块708接收软件版本数据获取模块707发出的待分析软件的版本数据,并利用相应的分析工具对待分析软件的版本数据进行分析,得到待分析软件的进化趋势数据。本实施中,用于分析软件进化趋势的参数包括文件数、源代码行数和圈复杂度,其中文件数能够宏观地反应出软件的进化趋势,源代码行数和圈复杂度能够精确度地反映出软件的进化和软件的算法复杂度趋势。
本实施例中,软件进化趋势分析模块708中采用分析工具Sloccount对软件的源代码行数进行分析,采用CCCC分析工具对软件的圈复杂度进行分析,采用SoftChange对软件包含的文件数进行分析。
如图7所示,为了满足大数据量的需求,本实施例中,软件复杂度分析系统进一步包括了存储器304。在步骤S803中,软件进化趋势分析模块708将分析得到的数据存储到存储器304中,其中,存储器304优选地为数据库。
为了向用户形象地呈现出软件进化趋势的分析结果,如图7所示,本实施例中,软件复杂度分析系统还包括一系列软件进化趋势图形绘制单元709,其能够访问存储器304以获取软件进化趋势分析结果,并根据上述结果绘制出相应的用于反应软件进化趋势的图形,但本发明不限于此,软件进化趋势图形绘制单元709还可以通过其他合理地连接方式来获得软件进化趋势分析结果。
如图7所示,本实施例中,软件进化趋势图形绘制单元709包括软件文件数进化曲线绘制单元709a、软件源代码行数进化曲线绘制单元709b、软件文件数与源代码行数关系曲线绘制单元709c、软件子系统源代码行数进化曲线绘制单元709d和软件圈复杂度进化曲线绘制单元709e,但本发明不限于此,在本发明的其他实施例中,软件进化趋势图形绘制单元709还可以包括其他图形绘制单元。
如图8所示,在步骤S804中,软件文件数进化曲线绘制单元709a根据软件文件数分析工具的分析结果绘制出软件的文件数进化曲线,软件源代码行数进化曲线绘制单元709b和软件子系统源代码行数进化曲线709d根据软件源代码行数分析工具的分析结果分别绘制出软件的源代码行数进化曲线和软件子系统源代码行数进化曲线,软件文件数与源代码行数关系曲线绘制单元709c根据软件文件数分析工具和软件源代码行数分析工具的分析结果绘制软件文件数与源代码行数关系曲线,软件圈复杂度进化曲线绘制单元709e根据软件圈复杂度分析工具的分析结果绘制软件圈复杂度的进化曲线。
最后,在步骤S805中,软件进化趋势图形绘制单元709绘制出的各个图形通过进化趋势显示模块710将结果进行输出。
本实施例中提供的软件复杂度分析系统既能够完成对软件复杂度的分析,还能够完成对软件进化趋势的分析,从而实现了系统的集成化和多功能化,提高了系统的整体性能和可用性。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (8)

1.一种软件复杂度分析系统,其特征在于,包括:
软件数据收集模块,其用于收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;
标准化模块,其用于接收所述待分析软件数据,并将所述待分析软件数据标准化得到标准软件数据;
软件复杂度分析模块,其用于接收所述标准软件数据,基于其中软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,并基于所述每一软件包的复杂度通过预设模型计算所述待分析软件的复杂度;
所述软件包之间的依赖关系包括所述软件包之间的环状依赖关系;
所述软件复杂度分析模块还包括环中出现次数最多边查找单元,其用于根据所述环状依赖关系查找所有环中出现次数最多的边;去除所述所有环中出现次数最多的边后查找各个软件包之间新的依赖关系,根据所述新的依赖关系计算出去除出现次数最多边后待分析软件中各个软件包新的复杂度和整个待分析软件新的复杂度。
2.如权利要求1所述的系统,其特征在于,所述预设模型包括以下所列项中的任一项:
平均值模型,计算所述各个软件包的复杂度的平均值,作为所述待分析软件的复杂度;
加权模型,对所述各个软件包的复杂度进行加权求和,将所得结果作为所述待分析软件的复杂度。
3.如权利要求1或2所述的系统,其特征在于,所述系统还包括存储器,其连接在所述标准化模块和软件复杂度分析模块之间,用于接收和存储所述标准化模块和软件复杂度分析模块输出的数据。
4.如权利要求3所述的系统,其特征在于,所述系统还包括图形绘制单元,其用于访问存储器以获取待分析软件的标准软件数据,所述图形绘制单元包括以下所列项中的任一项或几项:
复杂度图形绘制单元、软件包依赖关系有向图绘制单元、软件包环状依赖关系环状图绘制单元。
5.如权利要求1或2所述的系统,其特征在于,所述系统还包括:
软件版本数据获取模块,其用于获取待分析软件的各个版本的版本数据;
软件进化趋势分析模块,其用于接收所述待分析软件的各个版本的版本数据,并对所述软件版本数据进行分析,得到待分析软件的进化趋势数据。
6.如权利要求5所述的系统,其特征在于,所述系统还包括软件进化趋势图形绘制单元,其用于根据所述进化趋势数据绘制相应图形,所述软件进化趋势图形绘制单元包括以下所列项中的任一项或几项:
软件文件数进化曲线绘制单元、软件源代码行数进化曲线绘制单元、软件文件数与源代码行数关系曲线绘制单元、软件圈复杂度进化曲线绘制单元。
7.一种软件复杂度分析方法,其特征在于,所述方法包括以下步骤:
待分析软件数据收集步骤,收集并输出包括软件包数据和各个软件包之间依赖关系数据的待分析软件数据;
数据标准化步骤,将所述待分析软件数据按照特定格式进行标准化,得到标准软件数据;
软件复杂度分析步骤,基于接收到的所述标准软件数据中的软件包数据和各个软件包之间依赖关系数据计算每一个软件包的复杂度,进而基于所述每一个软件包的复杂度通过预设模型计算所述待分析软件的复杂度;
所述软件包之间的依赖关系包括所述软件包之间的环状依赖关系;
根据所述环状依赖关系查找所有环中出现次数最多的边;去除所述所有环中出现次数最多的边后查找各个软件包之间新的依赖关系,根据所述新的依赖关系计算出去除出现次数最多边后待分析软件中各个软件包新的复杂度和整个待分析软件新的复杂度。
8.如权利要求7所述的方法,其特征在于,所述方法还包括以下步骤:
软件版本数据获取步骤,针对待分析的软件获取所述待分析软件的版本数据;
软件进化趋势分析步骤,对所述待分析软件的版本数据进行分析,得到待分析软件的进化趋势数据。
CN201310630388.9A 2013-12-02 2013-12-02 一种软件复杂度分析系统及方法 Active CN103605607B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310630388.9A CN103605607B (zh) 2013-12-02 2013-12-02 一种软件复杂度分析系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310630388.9A CN103605607B (zh) 2013-12-02 2013-12-02 一种软件复杂度分析系统及方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201410056525.7A Division CN103810100A (zh) 2013-12-02 2013-12-02 一种软件进化趋势分析系统及方法

Publications (2)

Publication Number Publication Date
CN103605607A CN103605607A (zh) 2014-02-26
CN103605607B true CN103605607B (zh) 2017-02-08

Family

ID=50123836

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310630388.9A Active CN103605607B (zh) 2013-12-02 2013-12-02 一种软件复杂度分析系统及方法

Country Status (1)

Country Link
CN (1) CN103605607B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874830B (zh) * 2017-05-15 2022-04-29 富联精密电子(天津)有限公司 软件数据共享系统
CN110580218A (zh) * 2018-06-08 2019-12-17 浙江大学 软件代码复杂度的检测方法、装置及电子设备
CN110795327B (zh) * 2018-08-01 2021-07-30 中国矿业大学 一种基于加权依赖图的并发程序执行轨迹静态简化方法
CN109814921B (zh) * 2019-01-24 2020-10-02 华东师范大学 一种软件结构复杂度降解方法、设备及存储介质
CN109814920B (zh) * 2019-01-24 2020-09-11 华东师范大学 一种软件结构复杂度降解装置
CN110377519B (zh) * 2019-07-22 2023-06-23 中国工商银行股份有限公司 大数据系统的性能容量测试方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法
CN102521126A (zh) * 2011-12-05 2012-06-27 北京邮电大学 基于模块分解技术的软件缺陷检测系统的复杂性分析方法
CN103164643A (zh) * 2011-12-08 2013-06-19 北京深思洛克软件技术股份有限公司 一种通过硬件进行反调试的方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7398187B2 (en) * 2004-12-04 2008-07-08 Lance David Tinseth Method of batching and analyzing of data from computerized process and control systems
WO2008121098A1 (en) * 2005-06-29 2008-10-09 Sue Kunz Software digital fingerprint

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法
CN102521126A (zh) * 2011-12-05 2012-06-27 北京邮电大学 基于模块分解技术的软件缺陷检测系统的复杂性分析方法
CN103164643A (zh) * 2011-12-08 2013-06-19 北京深思洛克软件技术股份有限公司 一种通过硬件进行反调试的方法和装置

Also Published As

Publication number Publication date
CN103605607A (zh) 2014-02-26

Similar Documents

Publication Publication Date Title
CN103605607B (zh) 一种软件复杂度分析系统及方法
CN104899314B (zh) 一种数据仓库的血统分析方法和装置
CN105574730A (zh) 基于物联网大数据平台的智能用户画像方法及装置
CN105550268B (zh) 大数据流程建模分析引擎
Anderson et al. Synthetic data generation for the internet of things
CN109118296A (zh) 活动推送方法、装置及电子设备
CN107341215A (zh) 一种基于分布式计算平台的多源垂直知识图谱分类集成查询方法
CN106709012A (zh) 一种大数据分析方法及装置
CN103631882A (zh) 基于图挖掘技术的语义化业务生成系统和方法
CN107577688A (zh) 基于媒体信息采集的原创文章影响力分析系统
CN105468744A (zh) 一种实现税务舆情分析和全文检索的大数据平台
CN104572833B (zh) 一种映射规则创建方法及装置
CN104796300B (zh) 一种数据包特征提取方法及装置
CN104809246B (zh) 充电数据的处理方法及装置
WO2015085622A1 (zh) 一种物联网终端设备的语义化方法
CN108984155A (zh) 数据处理流程设定方法和装置
US20180121526A1 (en) Method, apparatus, and computer-readable medium for non-structured data profiling
Katukuri et al. Hypotheses generation as supervised link discovery with automated class labeling on large-scale biomedical concept networks
CN107704620A (zh) 一种档案管理的方法、装置、设备和存储介质
CN106547892A (zh) 一种基于互联网数据采集的数据资源管理平台
CN103853844A (zh) 基于Hadoop的关系表非冗余键集合识别方法
CN108121743A (zh) 一种通用网页模版的生成和使用方法、系统
Nguyen et al. sae: A stata package for unit level small area estimation
CN109408643A (zh) 基金相似度计算方法、系统、计算机设备和存储介质
WO2019028149A1 (en) SYSTEMS AND METHODS FOR STRUCTURE EXTRACTION FROM DENSED, LOUD, AND LARGE DIMENSIONS

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant