CN109814921A - 一种软件结构复杂度降解方法、设备及存储介质 - Google Patents
一种软件结构复杂度降解方法、设备及存储介质 Download PDFInfo
- Publication number
- CN109814921A CN109814921A CN201910069275.3A CN201910069275A CN109814921A CN 109814921 A CN109814921 A CN 109814921A CN 201910069275 A CN201910069275 A CN 201910069275A CN 109814921 A CN109814921 A CN 109814921A
- Authority
- CN
- China
- Prior art keywords
- component
- composite component
- complexity
- software configuration
- constraint
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种软件结构复杂度降解方法、设备及存储介质,涉及软件技术领域。所述方法包括:确定软件结构的条件约束;根据确定的条件约束,对软件结构进行重构,得到多个重构方案;分析得到的多个重构方案,得到最优重构方案;采用最优重构方案对软件结构进行重构。本申请中,通过对软件结构进行重构,不仅能够将松散的软件结构转化为一个高耦合的、更加集中的低复杂度的软件结构,提高软件的内聚性,改善软件质量;而且,对软件结构的改进代价较低,对于系统的开发和后续扩展能够提供一定的帮助,能够节省开发时间和成本;并且提供了可量化的指标来评价经过重构后软件复杂度的降低效果和幅度。
Description
技术领域
本申请涉及软件技术领域,尤其涉及一种软件结构复杂度降解方法、设备及存储介质。
背景技术
随着软件规模不断增大,软件的功能越来越复杂,对软件开发带来了很多困难。软件复杂度是评价软件质量的一项重要指标,人们希望得到一个软件复杂度低且质量高的软件,其不仅具有良好的结构,而且利于后续软件的开发和维护。软件重构是降低软件复杂度的一种技术。它可以在不改变软件接口和功能的情况下,提高代码质量和可读性,降低后续维护成本。然而,当前的软件重构方法很少从软件的全局结构上对软件进行优化;并且大多都是在软件开发周期的末端,即软件基本定型之后,才开始着手对软件进行重构来降低软件的复杂度,而这会导致软件交付日期被迫延长,软件开发成本上升;同时,现有的软件重构方法中缺乏量化指标,不易于软件重构效果的评价。
发明内容
本发明的主要目的在于提出一种软件结构复杂度降解方法、设备及存储介质,旨在至少在第一程度上解决上述技术问题中的技术问题之一。
为实现上述目的,本发明第一方面提供一种软件结构复杂度降解方法,所述软件结构复杂度降解方法包括以下步骤:
确定软件结构的条件约束;
根据所述条件约束,对所述软件结构进行重构,得到多个重构方案;
分析所述多个重构方案,得到最优重构方案;
采用所述最优重构方案对所述软件结构进行重构。
本发明提供的软件结构复杂度降解方法,通过对软件结构进行重构,首先能够将松散的软件结构转化为一个高耦合的、更加集中的低复杂度的软件结构,提高了软件的内聚性,改善了软件质量;其次,对软件结构的改进代价较低,对于系统的开发和后续扩展能够提供一定的帮助,能够节省开发时间和成本;再次,通过可量化的指标来评价经过重构后软件复杂度的降低效果和幅度,可以更容易的在各组装方案中筛选出软件结构最好、复杂度最低的最优组装方案。
另外,本发明提供的软件结构复杂度降解方法还可以具有如下附加技术特征:
优选地,所述确定软件结构的条件约束,包括:
确定软件结构中各原子构件之间的连通性约束;
确定目标复合构件的重级约束及每个重级中含有的原子构件和/或子复合构件的数量约束。
优选地,所述根据所述条件约束,对所述软件结构进行重构,得到多个重构方案,包括:
根据所述连通性约束和所述数量约束,采用不同的组装顺序,对具有连通关系的原子构件进行组装,得到至少一个一重复合构件;
若当前得到的N重复合构件的重级未到达所述重级约束,则将所述N重复合构件作为子复合构件,根据所述连通性约束和所述数量约束,采用不同的组装顺序,对所述子复合构件和当前未组装的原子构件进行组装,得到至少一个N+1重复合构件,其中,N为整数且N≥1;
若当前得到的N重复合构件的重级到达所述重级约束,或者在未到达所述重级约束且不存在新的组装顺序时,停止重构得到多个重构方案和对应的多个目标复合构件。
优选地,所述分析所述多个重构方案,得到最优重构方案,还包括:
分别构建所述多个目标复合构件中各重复合构件的拓扑矩阵;
根据所述拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度;
对所述结构复杂度进行排序,得到最小结构复杂度;
将所述最小结构复杂度对应的重构方案,作为最优重构方案。
优选地,所述分别构建所述多个目标复合构件中各重复合构件的拓扑矩阵,包括:
分别确定组成所述目标复合构件中各重复合构件的原子构件和/或子复合构件;
将所述原子构件和/或子复合构件,分别对应矩阵的一行和一列;
确定任意两个原子构件和/或子复合构件是否具有连通关系,并在相应的元素位置添加相应的数值,得到对应的拓扑矩阵。
优选地,所述根据所述拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度,包括:
若所述拓扑矩阵对应的目标复合构件为一重复合构件,则根据预设的组成所述一重复合构件的各原子构件的构件复杂度、任意两个原子构件之间预设的关系复杂度及所述拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度;
若所述拓扑矩阵对应的目标复合构件为多重复合构件,则自下至上依次根据N重复合构件的结构复杂度计算N+1重复合构件的结构复杂度,并将最终得到的结构复杂度作为对应重构方案所对应的软件结构的结构复杂度。
优选地,所述自下向上依次根据N重复合构件的结构复杂度计算N+1重复合构件的结构复杂度,包括:
将组成所述N+1重复合构件的各N重复合构件的结构复杂度作为相应的N重复合构件的构件复杂度;
统计组成所述N+1重复合构件的各N重子复合构件和/或各原子构件中,任意两个构件之间的各连通关系复杂度之和,作为所述两个构件的关系复杂度;
根据组成所述N+1重复合构件的各N重子复合构件和/或各原子构件的构件复杂度、任意两个构件之间的关系复杂度和对应的拓扑矩阵,计算N+1重复合构件的结构复杂度。
优选地,所述对所述结构复杂度进行排序,得到最小结构复杂度之后,还包括:
判断所述最小复杂度是否小于所述软件结构当前的复杂度;
若是,则将所述最小结构复杂度对应的重构方案,作为最优重构方案;
若否,则判定所述软件结构当前为最优结构,结束。
此外,为实现上述目的,本发明第二方面提供一种设备,包括:存储器和处理器;
所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如本发明第一方面所述的方法。
本发明提供的设备,通过执行其存储的计算机程序,能够对软件结构进行重构,首先将松散的软件结构转化为一个高耦合的、更加集中的低复杂度的软件结构,提高了软件的内聚性,改善了软件质量;其次,对软件结构的改进代价较低,对于系统的开发和后续扩展能够提供一定的帮助,能够节省开发时间和成本;再次,通过可量化的指标来评价经过重构后软件复杂度的降低效果和幅度,可以更容易的在各组装方案中筛选出软件结构最好、复杂度最低的最优组装方案。
此外,为实现上述目的,本发明第三方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现如本发明第一方面所述的方法。
本发明提供的计算机可读存储介质,通过执行其存储的计算机程序,能够对软件结构进行重构,首先将松散的软件结构转化为一个高耦合的、更加集中的低复杂度的软件结构,提高了软件的内聚性,改善了软件质量;其次,对软件结构的改进代价较低,对于系统的开发和后续扩展能够提供一定的帮助,能够节省开发时间和成本;再次,通过可量化的指标来评价经过重构后软件复杂度的降低效果和幅度,可以更容易的在各组装方案中筛选出软件结构最好、复杂度最低的最优组装方案。
本发明的附加方面和优点能够在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
附图1为本申请实施例提供的一种软件结构复杂度降解方法的流程示意图;
附图2为本申请实施例提供的一种软件结构的示意图;
附图3为对附图2所示软件结构进行重构后其中一个目标复合构件的示意图;
附图4为附图3所示目标复合构件中一重复合构件和二重复合构件的拓扑矩阵示意图;
附图5为本申请实施例提供的一种软件结构复杂度降解装置的模块组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1为本发明实施例提供的一种软件结构复杂度降解方法的流程示意图;如图1所示,所述方法包括以下步骤:
步骤S11:确定软件结构的条件约束;
具体的,从软件结构的设计角度出发,结合用户需求及工程需要,确定软件结构的条件约束;其中,软件结构由多个原子构件以及原子构件之间的连通关系组成。
在本申请的一个实施例中,步骤S11包括:
步骤S11-1:确定软件结构中各原子构件之间的连通性约束;
具体的,确定软件结构中各原子构件之间是否具有连通关系,并将该连通关系作为连通性约束,以将不具有连通关系的原子构件分散开,保持功能的相对独立性;
例如,如2所示的软件结构中,包括原子构件c1、c2、c3、c4、c5,确定的连通性约束包括:c1与c2连通、c1与c4连通、c2与c3连通、c2与c5连通等。
步骤S11-2:确定目标复合构件的重级约束及每个重级中含有的原子构件和/或子复合构件的数量约束;
在本实施例中,通过后续对软件结构进行重构,实现软件结构的复杂度降解;通常的,将由原子构件组装得到的复合构件称为一重复合构件,不同的一重复合构件之间可以继续组装得到二重复合构件,一重复合构件与原子构件之间也可以组装得到二重复合构件,并将其中的一重复合构件称为子复合构件;类似的,不同的二重复合构件之间可以组装得到三重复合构件,二重复合构件与原子构件之间也可以组装得到三重复合构件,以此类推。
相应的,步骤S11-2中的重级约束,即为目标复合构件的重级阈值,例如重级约束为四重,则目标复合构件的重级不能超过四重;数量约束即组装得到的每个重级中原子构件和/或子复合构件的数量阈值,例如数量约束为3,则每个重级中原子构件和/或子复合构件的总数量不能超过3个。
需要指出的,步骤S11-1与步骤S11-2的执行顺序可以互换,还可以同时执行。
步骤S12:根据确定的条件约束,对软件结构进行重构,得到多个重构方案;
在本申请的一个实施例中,步骤S12包括:
根据确定的连通性约束和数量约束,采用不同的组装顺序,对具有连通关系的原子构件进行组装,得到至少一个一重复合构件;
若当前得到的N重复合构件的重级未达到确定的重级约束,则将当前的N重复合构件作为子复合构件,根据连通性约束和数量约束,采用不同的组装顺序,对子复合构件和当前未组装的原子构件进行组装,得到至少一个N+1重复合构件,其中,N为整数且N≥1;
若当前得到的N重复合构件的重级到达所述重级约束,或者在未到达所述重级约束且不存在新的组装顺序时,停止重构得到多个重构方案和对应的多个目标复合构件。
例如,按照前述示例的条件约束,对图2所示的软件结构进行重构,得到的其中一种重构方案为将原子构件c1、c2、c3组装成一重复合构件,将该一重复合构件与原子构件c4和c5组装为二重复合构件,该二重复合构件即为目标复合构件,目标复合结构的示意图如图3所示。
在本实施例中,复合构件中可以嵌套着其他复合构件,使得软件结构从原来的单层结构转变为多层结构,即将松散的软件结构转化为了高耦合的、更加集中的软件结构,提高了软件的内聚性,实现了软件结构的优化,改善了软件质量。
需要指出的是,本实施例中的复合构件实现其组装成员的功能和接口,拥有内部结构,但是对外不可见,是一个黑盒。
步骤S13:分析得到的多个重构方案,得到最优重构方案;
在本申请的一个实施例中,步骤S13包括:
步骤S13-1:分别构建各目标复合构件中各重复合构件的拓扑矩阵;
在本申请的一个实施例中,步骤S13-1包括:分别确定组成所述目标复合构件中各重复合构件的原子构件和/或子复合构件;将原子构件和/或子复合构件,分别对应矩阵的一行和一列;确定任意两个原子构件和/或子复合构件是否具有连通关系,并在相应的元素位置添加相应的数值,得到拓扑矩阵。
优选的,若任意两个原子构件和/或子复合构件之间具有连通关系,则在相应的元素位置添加1,若不具有连通关系,则在相应的元素位置添加0。
在本实施例中,将组成各重复合构件的子复合构件和/或各原子构件均称为相应复合构件的组成成员。
例如,构建图3所示目标复合构件中一重复合构件F1的拓扑矩阵,确定包括3个组成成员,分别是原子构件c1、c2、c3,得到对应的拓扑矩阵如图4中的A1;构建图3所示目标复合构件中二重复合构件的拓扑矩阵,确定包括3个组成成员,分别是c1、c2、c3组成的子复合构件(即一重复合构件F1)、原子构件c4和c5,得到对应的拓扑矩阵如图4中的A2。
步骤S13-2:根据构建的拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度;
在本申请的一个实施例中,步骤S13-2包括:
若拓扑矩阵对应的目标复合构件为一重复合构件,则根据预设的组成该一重复合构件的各原子构件的构件复杂度、任意两个原子构件之间预设的关系复杂度及该拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度;
若拓扑矩阵对应的目标复合构件为多重复合构件,则自下至上依次根据N重复合构件的结构复杂度计算N+1重复合构件的复杂度,并将最终得到的结构复杂度作为对应重构方案所对应的软件结构的结构复杂度。
其中,各原子构件的构件复杂度、任意两个原子构件之间的关系复杂度为预先对原始软件结构进行评估后而设定。
进一步的,在本申请的一个实施例中,所述自下至上依次根据N重复合构件的结构复杂度计算N+1重复合构件的结构复杂度,包括:
步骤A1:将组成N+1重复合构件的各N重复合构件的结构复杂度、作为相应的N重复合构件的构件复杂度;
例如,对于图3所示的复合构件,在计算二重复合构件的结构复杂度时,将一重复合构件F1的结构复杂度,作为一重复合构件F1的构件复杂度。
步骤A2:统计组成N+1重复合构件的各N重子复合构件和/或各原子构件中,任意两个构件之间的各连通关系复杂度之和,作为该两个构件的关系复杂度;
具体的,将组成N+1重复合构件的各N重子复合构件和/或各原子构件均作为一个构件集合,统计任意两个构件集合中各构件之间的连通关系复杂度之和,作为该两个构件集合的关系复杂度。其中,构件之间的连通关系复杂度为预先设定。
例如,对于图3所示的复合构件,在计算二重复合构件的复杂度时,其组成成员包括一重复合构件F1和原子构件c4和c5,并将其分为作为构件集合,可得第一构件集合中的构件包括c1、c2、c3,第二构件集合中的构件仅包括c4,第三构件集合中的构件仅包括c5;其中,第一构件集合中的构件c1和c3均与第二集合中的构件c4连通,预设的其连通关系复杂度分别为1和1,相加的和为2,则一重复合构件F1和原子构件c4之间的关系复杂度为2;第一构件集合中的构件c2和c3均与第三集合中的构件c5连通,预设的其连通关系复杂度分别为1和2,相加的和为3,即一重复合构件F1和原子构件c5之间的关系复杂度为3;第二构件集合中的c4与第三集合中的构件c5不连通,则原子构件c4和c5之间的关系复杂度为0。
步骤A3:根据组成N+1重复合构件的各N重子复合构件和/或各原子构件的构件复杂度、任意两个构件之间的关系复杂度和拓扑矩阵,计算N+1重复合构件的结构复杂度。
更进一步的,根据以下公式计算各重复合结构的结构复杂度:
其中,C(n,A)表示含有n个组成成员,对应的拓扑矩阵为A的复合构件的复杂度,αi为第i个组成成员的构件复杂度,βij为第i个组成成员与第j个组成成员之间的关系复杂度,Aij为拓扑矩阵A中第i行与第j列交叉位置的值,E(A)为对拓扑矩阵A进行奇异值分解,得到的半正定对角矩阵中对角线上各元素的绝对值之和。
通常的,通过软件度量来评估一个软件的质量情况,而软件复杂度是软件度量的重要组成部分,它是评估软件产品质量的重要指标。软件的规模越大,其复杂程度也随之增加,产生错误和违背设计原则的可能性也越大。本实施例中,通过计算各重构方案对应的软件结构的结构复杂度,以通过该结构复杂度确定对原始的软件结构进行复杂度降解的最优重构方案。
步骤S13-3:对计算的各结构复杂度进行排序,得到最小结构复杂度;
在本实施例中,可以对计算的各结构复杂度进行升序排序,也可以进行降序排序,得到最小结构复杂度。
在本申请的一个实施例中,步骤S13-3之后,还包括:
判断所述最小复杂度是否小于所述软件结构当前的复杂度,若是,则执行步骤S13-4;若否,则判定所述软件结构当前为最优结构,结束。
在本实施例中,通过将最小复杂度与软件结构当前的复杂度进行比对,以确定当前的软件结构是否为最优结构,并在当前的软件结构不是最优结构时,后续采用该最小复杂度对应的重构方案对当前的软件结构进行重构,降低其复杂度。
步骤S13-4:将最小结构复杂度对应的重构方案,作为最优重构方案。
步骤S14:采用最优重构方案对软件结构进行重构。
由此,通过对软件结构进行重构,即对软件的各个原子构件进行重新组装,并通过计算各重构方案的复杂度得到最优重构方案,从而根据该最优重构方案对软件结构进行重构。该过程中,一方面,将松散的软件结构转化为一个高耦合的、更加集中的低复杂度的软件结构,提高了软件的内聚性,改善了软件质量。另一方面,本申请中只需知道软件的各个原子构件之间的关系,即可进行结构复杂度的计算,这意味着在软件需求分析阶段或软件设计阶段就可以对软件结构复杂度进行分析和改进,同时,由于此时软件不涉及具体的代码设计,因而无需要考虑如何调整代码结构,避免了在重构过程中可能出现的参数冲突和逻辑混乱等代码问题;因此,本申请中的方法对软件结构的改进代价较低,对于系统的开发和后续扩展能够提供一定的帮助,能够节省开发时间和成本。第三方面,本申请中的方法通过可量化的指标来评价经过重构后软件复杂度的降低效果和幅度,因而能够更容易的在各组装方案中筛选出软件结构最好、复杂度最低的最优组装方案。
以上是本申请实施例提供的一种软件结构复杂度降解方法,与上述软件结构复杂度降解方法相对应的,本发明还提供一种软件结构复杂度降解装置,由于所述装置解决问题的实现方案与上述方法相似,因此与方法部分相应的内容,可以参考上述方法实施例的详细描述,后续不做赘述。可以理解的是,本申请提供的装置可以包括能够执行上述方法示例中各个步骤的单元或模块,这些单元或模块可以通过硬件、软件或软硬结合的方式来实现,本发明并不限定。下面结合图5做具体描述。
具体的,如图5所示,本申请实施例提供的一种软件结构复杂度降解装置,包括:
确定模块21,用于确定软件结构的条件约束;
第一重构模块22,用于根据确定模块21确定条件约束,对软件结构进行重构,得到多个重构方案;
分析模块23,用于分析第一重构模块22得到的多个重构方案,得到最优重构方案;
第二重构模块24,用于采用分析模块23得到的最优重构方案对软件结构进行重构。
在本申请的一个实施例中,确定模块21具体用于:
确定软件结构中各原子构件之间的连通性约束;
确定目标复合构件的重级约束及每个重级中含有的原子构件和/或子复合构件的数量约束。
在本申请的一个实施例中,重构模块22具体用于:
根据确定模块21确定的连通性约束和数量约束,采用不同的组装顺序,对具有连通关系的原子构件进行组装,得到至少一个一重复合构件;
若当前得到的N重复合构件的重级未到达确定模块21确定的重级约束,则将所述N重复合构件作为子复合构件,根据确定模块21确定的连通性约束和数量约束,采用不同的组装顺序,对所述子复合构件和当前未组装的原子构件进行组装,得到至少一个N+1重复合构件,其中,N为整数且N≥1;
若当前得到的N重复合构件的重级到达确定模块21确定的重级约束,或者在未到达确定模块21确定的重级约束且不存在新的组装顺序时,停止重构得到多个重构方案和对应的多个目标复合构件。
在本申请的一个实施例中,分析模块23包括:
构建子模块,用于分别构建所述多个目标复合构件中各重复合构件的拓扑矩阵;
计算子模块,用于根据所述拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度;
排序子模块,用于对所述结构复杂度进行排序,得到最小结构复杂度;
作为子模块,用于将所述最小结构复杂度对应的重构方案,作为最优重构方案。
在本申请的一个实施例中,构建子模块具体用于:
分别确定组成所述目标复合构件中各重复合构件的原子构件和/或子复合构件;
将所述原子构件和/或子复合构件,分别对应矩阵的一行和一列;
确定任意两个原子构件和/或子复合构件是否具有连通关系,并在相应的元素位置添加相应的数值,得到对应的拓扑矩阵。
在本申请的一个实施例中,计算子模块包括:
第一计算单元,用于在所述拓扑矩阵对应的目标复合构件为一重复合构件时,根据预设的组成所述一重复合构件的各原子构件的构件复杂度、任意两个原子构件之间预设的关系复杂度及所述拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度;
第二计算单元,用于在所述拓扑矩阵对应的目标复合构件为多重复合构件时,自下至上依次根据N重复合构件的结构复杂度计算N+1重复合构件的结构复杂度,并将最终得到的结构复杂度作为对应重构方案所对应的软件结构的结构复杂度。
在本申请的一个实施例中,第二计算单元具体用于:
将组成N+1重复合构件的各N重复合构件的结构复杂度作为相应的N重复合构件的构件复杂度;
统计组成N+1重复合构件的各N重子复合构件和/或各原子构件中,任意两个构件之间的各连通关系复杂度之和,作为所述两个构件的关系复杂度;
根据组成N+1重复合构件的各N重子复合构件和/或各原子构件的构件复杂度、任意两个构件之间的关系复杂度和对应的拓扑矩阵,计算N+1重复合构件的结构复杂度。
在本申请的一个实施例中,分析模块23包括:
判断子模块,用于判断所述最小复杂度是否小于所述软件结构当前的复杂度,并在判断结果为否时,判定所述软件结构当前为最优结构;
作为子模块,具体用于在判断子模块的判断结果为是时,将所述最小结构复杂度对应的重构方案,作为最优重构方案。
本申请实施例提供的软件结构复杂度降解装置,与本发明前述实施例提供软件结构复杂度降解方法出于相同的发明构思,具有相同的有益效果。
此外,为实现上述实施例,本申请实施例还提供一种设备,包括:存储器和处理器;
所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现前述任一实施例所述的软件结构复杂度降解方法。
本申请实施例提供的设备,通过执行其存储的计算程序,能够对软件结构进行重构,即对软件的各个原子构件进行重新组装,并通过计算各重构方案的复杂度得到最优重构方案,从而根据该最优重构方案对软件结构进行重构。该过程中,一方面,将松散的软件结构转化为一个高耦合的、更加集中的低复杂度的软件结构,提高了软件的内聚性,改善了软件质量。另一方面,本申请中只需知道软件的各个原子构件之间的关系,即可进行结构复杂度的计算,这意味着在软件需求分析阶段或软件设计阶段就可以对软件结构复杂度进行分析和改进,同时,由于此时软件不涉及具体的代码设计,因而无需要考虑如何调整代码结构,避免了在重构过程中可能出现的参数冲突和逻辑混乱等代码问题;因此,本申请中的方法对软件结构的改进代价较低,对于系统的开发和后续扩展能够提供一定的帮助,能够节省开发时间和成本。第三方面,本申请中的方法通过可量化的指标来评价经过重构后软件复杂度的降低效果和幅度,因而能够更容易的在各组装方案中筛选出软件结构最好、复杂度最低的最优组装方案。
此外,为实现上述实施例,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现前述任一实施例所述的软件结构复杂度降解方法。
本申请实施例提供的存储介质,通过执行其存储的计算程序,能够对软件结构进行重构,即对软件的各个原子构件进行重新组装,并通过计算各重构方案的复杂度得到最优重构方案,从而根据该最优重构方案对软件结构进行重构。该过程中,一方面,将松散的软件结构转化为一个高耦合的、更加集中的低复杂度的软件结构,提高了软件的内聚性,改善了软件质量。另一方面,本申请中只需知道软件的各个原子构件之间的关系,即可进行结构复杂度的计算,这意味着在软件需求分析阶段或软件设计阶段就可以对软件结构复杂度进行分析和改进,同时,由于此时软件不涉及具体的代码设计,因而无需要考虑如何调整代码结构,避免了在重构过程中可能出现的参数冲突和逻辑混乱等代码问题;因此,本申请中的方法对软件结构的改进代价较低,对于系统的开发和后续扩展能够提供一定的帮助,能够节省开发时间和成本。第三方面,本申请中的方法通过可量化的指标来评价经过重构后软件复杂度的降低效果和幅度,因而能够更容易的在各组装方案中筛选出软件结构最好、复杂度最低的最优组装方案。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种软件结构复杂度降解方法,其特征在于,包括:
确定软件结构的条件约束;
根据所述条件约束,对所述软件结构进行重构,得到多个重构方案;
分析所述多个重构方案,得到最优重构方案;
采用所述最优重构方案对所述软件结构进行重构。
2.根据权利要求1所述的方法,其特征在于,所述确定软件结构的条件约束,包括:
确定软件结构中各原子构件之间的连通性约束;
确定目标复合构件的重级约束及每个重级中含有的原子构件和/或子复合构件的数量约束。
3.根据权利要求2所述的方法,其特征在于,所述根据所述条件约束,对所述软件结构进行重构,得到多个重构方案,包括:
根据所述连通性约束和所述数量约束,采用不同的组装顺序,对具有连通关系的原子构件进行组装,得到至少一个一重复合构件;
若当前得到的N重复合构件的重级未到达所述重级约束,则将所述N重复合构件作为子复合构件,根据所述连通性约束和所述数量约束,采用不同的组装顺序,对所述子复合构件和当前未组装的原子构件进行组装,得到至少一个N+1重复合构件,其中,N为整数且N≥1;
若当前得到的N重复合构件的重级到达所述重级约束,或者在未到达所述重级约束且不存在新的组装顺序时,停止重构得到多个重构方案和对应的多个目标复合构件。
4.根据权利要求3所述的方法,其特征在于,所述分析所述多个重构方案,得到最优重构方案,还包括:
分别构建所述多个目标复合构件中各重复合构件的拓扑矩阵;
根据所述拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度;
对所述结构复杂度进行排序,得到最小结构复杂度;
将所述最小结构复杂度对应的重构方案,作为最优重构方案。
5.根据权利要求4所述的方法,其特征在于,所述分别构建所述多个目标复合构件中各重复合构件的拓扑矩阵,包括:
分别确定组成所述目标复合构件中各重复合构件的原子构件和/或子复合构件;
将所述原子构件和/或子复合构件,分别对应矩阵的一行和一列;
确定任意两个原子构件和/或子复合构件是否具有连通关系,并在相应的元素位置添加相应的数值,得到对应的拓扑矩阵。
6.根据权利要求4所述的方法,其特征在于,所述根据所述拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度,包括:
若所述拓扑矩阵对应的目标复合构件为一重复合构件,则根据预设的组成所述一重复合构件的各原子构件的构件复杂度、任意两个原子构件之间预设的关系复杂度及所述拓扑矩阵,计算对应重构方案所对应的软件结构的结构复杂度;
若所述拓扑矩阵对应的目标复合构件为多重复合构件,则自下至上依次根据N重复合构件的结构复杂度计算N+1重复合构件的结构复杂度,并将最终得到的结构复杂度作为对应重构方案所对应的软件结构的结构复杂度。
7.根据权利要求6所述的方法,其特征在于,所述自下向上依次根据N重复合构件的结构复杂度计算N+1重复合构件的结构复杂度,包括:
将组成所述N+1重复合构件的各N重复合构件的结构复杂度作为相应的N重复合构件的构件复杂度;
统计组成所述N+1重复合构件的各N重子复合构件和/或各原子构件中,任意两个构件之间的各连通关系复杂度之和,作为所述两个构件的关系复杂度;
根据组成所述N+1重复合构件的各N重子复合构件和/或各原子构件的构件复杂度、任意两个构件之间的关系复杂度和对应的拓扑矩阵,计算N+1重复合构件的结构复杂度。
8.根据权利要求4-7任一项所述的方法,其特征在于,所述对所述结构复杂度进行排序,得到最小结构复杂度之后,还包括:
判断所述最小复杂度是否小于所述软件结构当前的复杂度;
若是,则将所述最小结构复杂度对应的重构方案,作为最优重构方案;
若否,则判定所述软件结构当前为最优结构,结束。
9.一种设备,其特征在于,包括:存储器和处理器;
所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910069275.3A CN109814921B (zh) | 2019-01-24 | 2019-01-24 | 一种软件结构复杂度降解方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910069275.3A CN109814921B (zh) | 2019-01-24 | 2019-01-24 | 一种软件结构复杂度降解方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109814921A true CN109814921A (zh) | 2019-05-28 |
CN109814921B CN109814921B (zh) | 2020-10-02 |
Family
ID=66603713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910069275.3A Active CN109814921B (zh) | 2019-01-24 | 2019-01-24 | 一种软件结构复杂度降解方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109814921B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001290639A (ja) * | 2000-04-07 | 2001-10-19 | Hitachi Ltd | ソフトウェア再構成方式 |
CN102932802A (zh) * | 2011-08-11 | 2013-02-13 | 中国科学技术大学苏州研究院 | 软件无线电环境下基于模糊优选理论的终端重构方法 |
CN103235877A (zh) * | 2013-04-12 | 2013-08-07 | 北京工业大学 | 机器人控制软件模块划分方法 |
CN103605607A (zh) * | 2013-12-02 | 2014-02-26 | 中标软件有限公司 | 一种软件复杂度分析系统及方法 |
CN103853554A (zh) * | 2014-02-20 | 2014-06-11 | 上海大唐移动通信设备有限公司 | 一种软件重构位置确定方法及装置 |
CN106484401A (zh) * | 2016-09-23 | 2017-03-08 | 东北大学 | 一种面向对象软件的自动化重构方法 |
CN106970803A (zh) * | 2017-04-25 | 2017-07-21 | 北京理工大学 | 一种软件系统演化的分析方法和装置 |
CN109814920A (zh) * | 2019-01-24 | 2019-05-28 | 华东师范大学 | 一种软件结构复杂度降解装置 |
-
2019
- 2019-01-24 CN CN201910069275.3A patent/CN109814921B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001290639A (ja) * | 2000-04-07 | 2001-10-19 | Hitachi Ltd | ソフトウェア再構成方式 |
CN102932802A (zh) * | 2011-08-11 | 2013-02-13 | 中国科学技术大学苏州研究院 | 软件无线电环境下基于模糊优选理论的终端重构方法 |
CN103235877A (zh) * | 2013-04-12 | 2013-08-07 | 北京工业大学 | 机器人控制软件模块划分方法 |
CN103605607A (zh) * | 2013-12-02 | 2014-02-26 | 中标软件有限公司 | 一种软件复杂度分析系统及方法 |
CN103853554A (zh) * | 2014-02-20 | 2014-06-11 | 上海大唐移动通信设备有限公司 | 一种软件重构位置确定方法及装置 |
CN106484401A (zh) * | 2016-09-23 | 2017-03-08 | 东北大学 | 一种面向对象软件的自动化重构方法 |
CN106970803A (zh) * | 2017-04-25 | 2017-07-21 | 北京理工大学 | 一种软件系统演化的分析方法和装置 |
CN109814920A (zh) * | 2019-01-24 | 2019-05-28 | 华东师范大学 | 一种软件结构复杂度降解装置 |
Non-Patent Citations (2)
Title |
---|
SITENG CAO: "Software Complexity Reduction by", 《2019 INTERNATIONAL SYMPOSIUM ON THEORETICAL ASPECTS OF SOFTWARE ENGINEERING》 * |
何磊: "基于代码复杂度的软件演化评估与分析", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN109814921B (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cuesta et al. | A critical analysis on hybrid renewable energy modeling tools: An emerging opportunity to include social indicators to optimise systems in small communities | |
Tanriverdi et al. | Research commentary—reframing the dominant quests of information systems strategy research for complex adaptive business systems | |
Meng et al. | Comparing expert elicitation and model-based probabilistic technology cost forecasts for the energy transition | |
Basili et al. | Improve software quality by reusing knowledge and experience | |
CN106095942B (zh) | 强变量提取方法及装置 | |
EP1939731A1 (en) | Method and system for consolidating data type repositories | |
CN107423911A (zh) | 软件成功度评价方法/系统、计算机可读存储介质及设备 | |
Mohd Chachuli et al. | Renewable energy performance evaluation studies using the data envelopment analysis (DEA): A systematic review | |
CN111368259B (zh) | 一种配网电压数据缺失填补方法及相关装置 | |
WO2010138906A1 (en) | Capital asset planning system | |
CN101908019A (zh) | 一种基于贝叶斯网络的网构软件可信性评估模型 | |
CN109102142A (zh) | 一种基于评价标准树的人才评价方法和系统 | |
CN109634997A (zh) | 一种异动渠道的获取方法、装置及电子设备 | |
Venema et al. | Bioenergy systems planning using location–allocation and landscape ecology design principles | |
CN109933515A (zh) | 一种回归测试用例集的优化方法和自动优化装置 | |
CN109814920A (zh) | 一种软件结构复杂度降解装置 | |
Herlin et al. | A deformable region model using stochastic processes applied to echocardiographic images | |
CN109814921A (zh) | 一种软件结构复杂度降解方法、设备及存储介质 | |
CN106230638A (zh) | 一种基于事件的云服务测试与调试方法及系统 | |
CN110287578A (zh) | 一种考虑研制与维修的外场可更换单元划分方法 | |
Zakarija et al. | Discovering process model from incomplete log using process mining | |
Zhang et al. | A hierarchical model for quality evaluation of mixed source software based on iso/iec 25010 | |
CN115801599B (zh) | 基于使用剖面的评估模型构建方法 | |
CN110427234A (zh) | 页面的展示方法及装置 | |
Vereno et al. | Evaluating and improving model-based assessment of contextual data quality in smart grids |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |