CN111913690A - 一种基于马尔可夫聚类的软件模块划分方法 - Google Patents
一种基于马尔可夫聚类的软件模块划分方法 Download PDFInfo
- Publication number
- CN111913690A CN111913690A CN202010544160.8A CN202010544160A CN111913690A CN 111913690 A CN111913690 A CN 111913690A CN 202010544160 A CN202010544160 A CN 202010544160A CN 111913690 A CN111913690 A CN 111913690A
- Authority
- CN
- China
- Prior art keywords
- function
- probability matrix
- matrix
- software
- markov
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出了一种基于马尔可夫聚类的软件模块划分方法,首先将软件离散为功能集合,通过功能之间的数据流动形成功能关系矩阵,以功能之间直接流动的数据项数表征功能之间的紧密程度;然后以功能关系矩阵为对象,通过马尔可夫聚类形成自适应的模块划分方法。本发明通过上述操作实现了不用事先设定模块个数,快速稳定的软件功能模块划分。
Description
技术领域
本发明属于软件工程技术领域,具体地说,涉及一种基于马尔可夫聚类的软件模块划分方法。
背景技术
软件设计是软件全生命周期中一个非常重要的阶段。在软件设计中,一个重要的工作是进行模块的划分,将各个功能归入相应的功能模块中,形成软件架构。合理的模块划分可以优化软件系统架构,对于软件的开发、使用、维护都有十分重要的意义。软件的模块划分是围绕高内聚、低耦合的目标,对软件功能的一种组合。目前该工作大多仍依赖于设计人员的经验,划分结果不统一、划分结果缺乏依据。如何通过自动化的划分方法,在合理评估软件功能关系的前提下给出划分结果,是亟待解决的问题。
现有技术中,如专利“一种软件模块划分方法,CN 2016111403541”公开了一种基于粒子群算法的软件模块划分方法。该方法利用粒子群算法种群寻优的特性,对软件模块划分问题进行离散编码,通过优化获得软件模块划分的最优方案。该专利在模块划分中主要以代码中的方法、以及方法之间的调用关系为对象,建模过程较为复杂,且粒子群算法耗时较长。因此,有必要从功能及功能之间的数据关系入手,对软件模块进行快速的划分。
发明内容
本发明针对现有技术对软件功能划分结果不统一、划分缺乏依据、划分复杂耗时长等问题,提出了一种基于马尔可夫聚类的软件模块划分方法,通过数据流转间功能对功能的数据关系,实现了对软件模块快速的划分,在划分结果同意的同时其划分可作为划分分析依据。
本发明具体实现内容如下:
一种基于马尔可夫聚类的软件模块划分方法,首先将软件离散为多个功能的功能集合F,然后通过功能集合F中的功能之间的数据流动形成功能关系矩阵R,最后以功能矩阵R为对象,通过马尔可夫聚类形成自适应的软件功能划分模块。
为了更好地实现本发明,进一步地,所述将软件离散为多个功能的功能集合F的具体操作为:对于包含n个功能的软件,构建功能集合F={f1,f2,…,fn},其中fi(1≤i≤n)、fj(1≤j≤n)都是功能集合中的一个功能。
为了更好地实现本发明,进一步地,所述形成功能关系矩阵R的具体操作为:
首先设定功能关系矩阵R=(rij)n×n;
然后设定rij的值为w,所述w为功能fi与功能fj之间直接流动的数据项个数。
为了更好地实现本发明,进一步地,所述以功能矩阵R为对象,通过马尔可夫聚类形成自适应的软件功能划分模块具体操作为:
首先根据功能关系矩阵R构建概率矩阵P;
然后对概率矩阵P进行归一化,得到归一化后的概率矩阵P’;
接着对概率矩阵P’重复进行多次迭代、膨胀操作直到概率矩阵P’稳定;
最后完成聚类,得到聚类结果,即各功能模块m1,m2,…,mk,其中k是功能模块的个数,mi(1≤i≤k)是某一个功能模块。
为了更好地实现本发明,进一步地,所述构建概率矩阵P的具体操作为:
首先设定构建概率矩阵P为P=(pij)n×n;
然后对Pij进行取值计算,具体取值计算方法为,当i=j的时候,Pij值为1,当i≠j的时候,Pij值为rij;
最后将Pij计算得出值概率矩阵P=(pij)n×n中,得到概率矩阵P。
为了更好地实现本发明,进一步地,所述进行归一化的操作具体为:
对概率矩阵P进行归一化得到归一化后的概率矩阵P′=(pij)n×n,其中,所述P′ij的计算过程为:首先对i取值在1到n范围内的Pij求和,然后用Pij除以求和后的值得到P′ij。
为了更好地实现本发明,进一步地,所述迭代的具体操作为:设定迭代参数e,对概率矩阵P进行e次P′=P′×P′操作。
为了更好地实现本发明,进一步地,所述膨胀的具体操作为:设定膨胀系数r,对迭代后的概率矩阵P′进行膨胀,用公式表达为:
本发明与现有技术相比具有以下优点及有益效果:
通过软件功能及功能之间的数据流动关系,将软件转化为功能集合以及功能关系矩阵,形成对软件的描述;然后由马尔可夫聚类的方法对功能进行聚类,获得各个模块,划分不需事先设定模块个数,且划分过程快速、稳定。
附图说明
图1为待划分的功能与功能之间的数据关系示意图;
图2为模块划分结果示意图。
具体实施方式
为了更清楚地说明本发明实施例的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,应当理解,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,因此不应被看作是对保护范围的限定。基于本发明中的实施例,本领域普通技术工作人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
一种基于马尔可夫聚类的软件模块划分方法,首先将软件离散为多个功能的功能集合F,然后通过功能集合F中的功能之间的数据流动形成功能关系矩阵R,最后以功能矩阵R为对象,通过马尔可夫聚类形成自适应的软件功能划分模块;具体操作为:
步骤S1.将软件离散为多个功能的功能集合F:对于包含n个功能的软件,构建功能集合F={f1,f2,…,fn},其中fi(1≤i≤n)、fj(1≤j≤n)都是功能集合中的一个功能。
步骤S2.形成功能关系矩阵R:
首先设定功能关系矩阵R=(rij)n×n;
然后设定rij的值为w,所述w为功能fi与功能fj之间直接流动的数据项个数。
步骤S3.以功能矩阵R为对象,通过马尔可夫聚类形成自适应的软件功能划分模块:
首先根据功能关系矩阵R构建概率矩阵P;
然后对概率矩阵P进行归一化,得到归一化后的概率矩阵P’;
接着对概率矩阵P’重复进行多次迭代、膨胀操作直到概率矩阵P’稳定;
最后完成聚类,得到聚类结果,即各功能模块m1,m2,…,mk,其中k是功能模块的个数,mi(1≤i≤k)是某一个功能模块。
实施例2:
本发明在上述实施例1的基础上,为了更好地实现本发明,进一步地,所述构建概率矩阵P的具体操作为:
首先设定构建概率矩阵P为P=(pij)n×n;
然后对Pij进行取值计算,具体取值计算方法为,当i=j的时候,Pij值为1,当i≠j的时候,Pij值为rij;
最后将Pij计算得出值概率矩阵P=(pij)n×n中,得到概率矩阵P。
所述进行归一化的操作具体为:
对概率矩阵P进行归一化得到归一化后的概率矩阵P′=(p′ij)n×n,其中,所述P′ij的计算过程为:首先对i取值在1到n范围内的Pij求和,然后用Pij除以求和后的值得到P′ij。
所述迭代的具体操作为:设定迭代参数e,对概率矩阵P进行e次P=P×P操作。
所述膨胀的具体操作为:设定膨胀系数r,对迭代后的概率矩阵P进行膨胀,用公式表达为:
本实施例的其他部分与上述实施例1相同,故不再赘述。
实施例3:
本发明在上述实施例1-2任一项的基础上,给出一个具体的实际划分举例:
如图1、图2所示,针对软件中的功能,具体模块划分步骤如下:
步骤1.对于包含30个功能的软件,构建其功能集合F={f1,f2,…,f30},其中fi(1≤i≤30)是软件的一个功能。
步骤2.构建功能关系矩阵R=(rij)n×n,rij表示功能之间直接流动的数据项个数,其取值按照如下规则:
rij=w。
式中:w为fi和fj之间直接流动的数据项个数
得到该软件的功能关系矩阵:
步骤3.构建概率矩阵P=(pij)n×n,其中:
步骤4.对P进行归一化得到P′=(p′ij)n×n,其中:
步骤5.设定迭代参数e=2,通过下列步骤对P′进行迭代:
步骤5-1.计算P′:
P′=P′×P′。
步骤5-2.重复e次步骤5-1。
步骤6.设定膨胀参数r=2,对P′进行进行膨胀,即:
步骤7.重复步骤5和步骤6,直到P′稳定,完成聚类。
步骤8.获得图2中的聚类结果,共包含5个模块,分别为m1、m2、m3、m4、m5。各模块包含的功能如下表1所示:
| 模块 | 功能 |
| m<sub>1</sub> | f<sub>1</sub>、f<sub>2</sub>、f<sub>6</sub>、f<sub>7</sub>、f<sub>8</sub>、f<sub>9</sub>、f<sub>13</sub>、f<sub>14</sub> |
| m<sub>2</sub> | f<sub>3</sub>、f<sub>4</sub>、f<sub>5</sub>、f<sub>10</sub>、f<sub>11</sub>、f<sub>12</sub>、f<sub>15</sub> |
| m<sub>3</sub> | f<sub>21</sub>、f<sub>22</sub>、f<sub>23</sub>、f<sub>24</sub>、f<sub>25</sub>、f<sub>26</sub>、f<sub>29</sub> |
| m<sub>4</sub> | f<sub>16</sub>、f<sub>17</sub>、f<sub>18</sub>、f<sub>19</sub>、f<sub>20</sub> |
| m<sub>5</sub> | f<sub>27</sub>、f<sub>28</sub>、f<sub>30</sub> |
表1
该实施实例表明,本发明提出的基于马尔可夫聚类的软件模块划分方法可用于软件模块划分,并能够取得较好的效果。
本实施例的其他部分与上述实施例1-2任一项相同,故不再赘述。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
Claims (8)
1.一种基于马尔可夫聚类的软件模块划分方法,其特征在于,首先将软件离散为多个功能的功能集合F,然后通过功能集合F中的功能之间的数据流动形成功能关系矩阵R,最后以功能矩阵R为对象,通过马尔可夫聚类形成自适应的软件功能划分模块。
2.如权利要求1所述的一种基于马尔可夫聚类的软件模块划分方法,其特征在于,所述将软件离散为多个功能的功能集合F的具体操作为:对于包含n个功能的软件,构建功能集合F={f1,f2,…,fn},其中fi(1≤i≤n)、fj(1≤j≤n)都是功能集合中的一个功能。
3.如权利要求2所述的一种基于马尔可夫聚类的软件模块划分方法,其特征在于,所述形成功能关系矩阵R的具体操作为:
首先设定功能关系矩阵R=(rij)n×n;
然后设定rij的值为w,所述w为功能fi与功能fj之间直接流动的数据项个数。
4.如权利要求3所述的一种基于马尔可夫聚类的软件模块划分方法,其特征在于,所述以功能矩阵R为对象,通过马尔可夫聚类形成自适应的软件功能划分模块具体操作为:
首先根据功能关系矩阵R构建概率矩阵P;
然后对概率矩阵P进行归一化,得到归一化后的概率矩阵P’;
接着对概率矩阵P’重复进行多次迭代、膨胀操作直到概率矩阵P’稳定;
最后完成聚类,得到聚类结果,即各功能模块m1,m2,…,mk,其中k是功能模块的个数,mi(1≤i≤k)是某一个功能模块。
5.如权利要求4所述的一种基于马尔可夫聚类的软件模块划分方法,其特征在于,所述构建概率矩阵P的具体操作为:
首先设定构建概率矩阵P为P=(pij)n×n;
然后对Pij进行取值计算,具体取值计算方法为,当i=j的时候,Pij值为1,当i≠j的时候,Pij值为rij;
最后将Pij计算得出值概率矩阵P=(pij)n×n中,得到概率矩阵P。
6.如权利要求5所述的一种基于马尔可夫聚类的软件模块划分方法,其特征在于,所述进行归一化的操作具体为:
对概率矩阵P进行归一化得到归一化后的概率矩阵P′=(p′ij)n×n,其中,所述P'ij的计算过程为:首先对i取值在1到n范围内的Pij求和,然后用Pij除以求和后的值得到P'ij。
7.如权利要求6所述的一种基于马尔可夫聚类的软件模块划分方法,其特征在于,所述迭代的具体操作为:设定迭代参数e,对概率矩阵P′进行e次P′=P′×p′操作。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010544160.8A CN111913690A (zh) | 2020-06-15 | 2020-06-15 | 一种基于马尔可夫聚类的软件模块划分方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010544160.8A CN111913690A (zh) | 2020-06-15 | 2020-06-15 | 一种基于马尔可夫聚类的软件模块划分方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN111913690A true CN111913690A (zh) | 2020-11-10 |
Family
ID=73237726
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202010544160.8A Pending CN111913690A (zh) | 2020-06-15 | 2020-06-15 | 一种基于马尔可夫聚类的软件模块划分方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN111913690A (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112540749A (zh) * | 2020-11-16 | 2021-03-23 | 南方电网数字电网研究院有限公司 | 微服务划分方法、装置、计算机设备和可读存储介质 |
| CN116431107A (zh) * | 2023-03-14 | 2023-07-14 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN105893481A (zh) * | 2016-03-29 | 2016-08-24 | 国家计算机网络与信息安全管理中心 | 一种基于马尔可夫聚类的实体间关系消解方法 |
| CN107766076A (zh) * | 2017-11-07 | 2018-03-06 | 西安邮电大学 | 一种概率选择的软件模块聚类方法 |
| US20180260517A1 (en) * | 2015-07-16 | 2018-09-13 | Dnastar, Inc. | Protein structure prediction system |
-
2020
- 2020-06-15 CN CN202010544160.8A patent/CN111913690A/zh active Pending
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20180260517A1 (en) * | 2015-07-16 | 2018-09-13 | Dnastar, Inc. | Protein structure prediction system |
| CN105893481A (zh) * | 2016-03-29 | 2016-08-24 | 国家计算机网络与信息安全管理中心 | 一种基于马尔可夫聚类的实体间关系消解方法 |
| CN107766076A (zh) * | 2017-11-07 | 2018-03-06 | 西安邮电大学 | 一种概率选择的软件模块聚类方法 |
Non-Patent Citations (1)
| Title |
|---|
| MAGLE: "聚类算法—MCL", 《HTTPS://WWW.CNBLOGS.COM/MAGLE/P/7672957.HTML》 * |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112540749A (zh) * | 2020-11-16 | 2021-03-23 | 南方电网数字电网研究院有限公司 | 微服务划分方法、装置、计算机设备和可读存储介质 |
| CN112540749B (zh) * | 2020-11-16 | 2023-10-24 | 南方电网数字平台科技(广东)有限公司 | 微服务划分方法、装置、计算机设备和可读存储介质 |
| CN116431107A (zh) * | 2023-03-14 | 2023-07-14 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
| CN116431107B (zh) * | 2023-03-14 | 2023-12-29 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN107704625B (zh) | 字段匹配方法和装置 | |
| CN112686971B (zh) | 建筑系统关系拓扑无向图有向化方法和系统 | |
| CN111913690A (zh) | 一种基于马尔可夫聚类的软件模块划分方法 | |
| CN118878109B (zh) | 基于支持向量回归机的曝气控制方法、系统、设备及介质 | |
| CN111461400B (zh) | 一种基于Kmeans和T-LSTM的负荷数据补全方法 | |
| WO2020177142A1 (zh) | 一种基于传递关系的本地自适应知识图谱优化方法 | |
| CN104143116B (zh) | 一种基于粒子群算法的系统软防护组合优化方法 | |
| CN113434034B (zh) | 利用深度学习调整计算任务cpu频率的大型集群节能方法 | |
| CN106469318A (zh) | 一种基于L2稀疏限制的特征加权k‑means聚类方法 | |
| CN115658979A (zh) | 基于加权GraphSAGE的上下文感知方法、系统及数据访问控制方法 | |
| CN117828970A (zh) | 活性污泥模型的参数优化方法、装置、设备和存储介质 | |
| CN109709907A (zh) | 基于树的遗传编程算法的锅炉燃烧过程模型集成学习方法及系统 | |
| CN109707658A (zh) | 风机的性能参数的确定方法、装置和电子设备 | |
| CN111309770B (zh) | 一种基于无监督机器学习的自动生成规则系统及方法 | |
| CN111311025A (zh) | 一种基于气象相似日的负荷预测方法 | |
| CN109447131B (zh) | 相似高维目标信息识别方法及系统 | |
| CN116778254A (zh) | 一种图像分类模型生成方法、装置、设备及存储介质 | |
| CN114118289A (zh) | 基于数据驱动的成品油管道运行工况识别方法及系统 | |
| CN114385807B (zh) | 一种基于偏序格的大型语义图近似摘要方法及系统 | |
| CN114154780A (zh) | 评价方法、装置、电子设备及相关产品 | |
| CN120179972A (zh) | 用于稀疏注意力运算的方法 | |
| CN119830984A (zh) | 一种面向空间计算设备的神经网络压缩方法 | |
| Văduva et al. | On solving stochastic MADM problems | |
| HK40088249A (zh) | 集群特徵报文处理方法、装置及电子设备 | |
| Bidram et al. | A Note on Exponentiated�-geometric Distributions |
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 | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201110 |
|
| RJ01 | Rejection of invention patent application after publication |