基于搜索的软件维护:方法与工具
在软件开发和维护过程中,软件模块化是一个重要的环节,它有助于提高软件的可维护性、可扩展性和可理解性。本文将介绍几种基于搜索的软件模块化方法和工具,以及如何使用这些方法来实现不同的软件模块化目标。
1. 单目标模块化
单目标模块化旨在找到一个(接近)最优的解决方案,以优化单个目标,即模块质量(MQ)。MQ 是在高内聚和低耦合之间取得平衡的一个指标。
可以使用以下几种搜索算法来解决模块化问题:
- 爬山算法(HC) :从随机生成的初始解开始,逐步向局部最优解移动。但这种方法容易陷入局部最优。
- 模拟退火算法(SA) :与 HC 不同,SA 并不总是朝着(局部)更好的解决方案前进,因此可以缓解局部最优问题。
- 遗传算法(GA) :进化多个解决方案,而不是单个解决方案。例如,Bunch 的基于 GA 的方法 Gadget,使用选择算子、单点交叉算子和变异算子来进化种群。
对于孤立集群的问题,可以将其随机分配到另一个集群中。
在评估模块化解决方案的质量时,有以下两种方法:
- 有参考解时 :可以使用 MoJoFM 有效性度量(MoJoFM)来比较模块化技术产生的解决方案与参考解。MoJoFM 的计算公式如下:
[MoJoFM(A,B) = 100 - \left(\frac{mno(A,B)}{max(mno(\forall A,B))} \times 100\right)]
其中,(mno(A,B)) 是
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



