Page 84 - 《软件学报》2020年第11期
P. 84
3400 Journal of Software 软件学报 Vol.31, No.11, November 2020
management)、计划(planning)、控制与运行管理(control and operational management)、过程改进与技术适应
(process improvement and technology adoption)、理解(understanding)和培训和学习(training and learning).与其他
软件过程仿真方法相比,系统动力学所独有的因果反馈机制以及动态分析特点,使得系统动力学被大量运用于
软件过程改进仿真建模研究.例如,Pfahl 等人 [30] 使用系统动力学方法建模了汽车自动化产业通用的战略软件过
程改进仿真模型;Ruiz 等人 [31] 使用系统动力学方法仿真和建模了基于商用现货(commercial-off-the-shelf,简称
COTS)的软件过程,以帮助理解这种软件开发过程的具体特点,并基于此模型设计和评价软件过程改进;Lin 等
人 [32] 利用系统动力学的反馈原理,模拟软件生命周期开发活动和管理决策过程之间的动态交互,以帮助进行软
件成本、进度和功能的度量;Ali 等人 [33] 面向两个真实的工业案例,提出一个辅助在精益管理方法中进行价值流
分析的仿真框架,用于仿真在软件开发过程中可识别的过程改进,并基于仿真给出改进评估.
当然,系统动力学也常用于软件需求工程领域的研究,例如,Stallinger 等人 [34] 对软件开发早期阶段的需求活
动的 EasyWinWin 过程进行建模和仿真;而在需求易变性(volatility)方面,Thakurta 等人 [35] 在软件需求波动情况
[7]
下,分析需求波动人力变化对软件质量的影响;Ferreira 等人 使用系统动力学方法对需求波动进行建模,并对需
求波动影响软件项目工作量、成本、时间等进行仿真分析;Cao 以及 Abdel Hamid 等人 [24] 对 Abdel-Hamid 模型
进行调整,并加入了敏捷开发中所强调的结对编程、重构、用户参与、需求变更管理等软件活动,以使其能够
适用于敏捷开发软件过程,并在案例中证明改进模型的有效性.Kellner 等人 [21] 以软件可靠性为研究目标进行了
系统动力学的软件过程仿真建模,作为软件项目决策支持系统的一部分,用于协助项目经理以质量驱动的方式
规划或定制软件开发过程.Antoniades 等人 [36] 使用动力学方法对开源软件的软件开发过程进行了一个通用的
仿真模型建模,并使用 Apache 开源服务器中的开源项目数据进行仿真对比,说明其模型的有效性.Dutta 和
Roy [37] 建立了技术和行为安全因素之间相互作用的系统动力学模型,并分析了它们对组织 IT 基础设施业务价
值的影响.
此外,Lehman 提出软件演化的第一定律是持续的变更,因此,Lehman 的研究团队使用系统动力学方法进行
了软件演化仿真方面的相关研究工作,在他们的研究工作中,Lehman 等人 [38] 、Wernick 等人 [16] 、Wernick 等人 [39] 、
Kahen 等人 [40] 、Ali 等人 [41] 开发了多个持续改进的仿真模型,目的是通过仿真找出影响软件演化的主要因素以
及辅助实现更好的软件演化管理.
总之,国外将系统动力学应用于软件领域的研究成果相对较为丰富,且为实际的软件项目节省客观的时间
和成本,带来的巨大的经济效益.根据文献[5],系统动力学方法在软件领域的应用为将近 100 个软件项目节约了
大约 80 亿美元的成本.国内应用系统动力学在软件工程领域的研究包括:何满辉等人 [42] 运用系统动力学方法建
模软件项目进度管理并进行有效的预测,并分析人员配置对项目进度的影响;吴明辉 [15] 介绍基于系统动力学的
连续型软件过程建模与仿真方法,并以 Brooks 法则作为实例描述该方法的基本要素和优势;翟丽等人 [43] 用系统
动力学建模软件开发项目中各因素之间复杂的相互作用关系对项目绩效的影响,为项目管理者提供一个可靠
的工具;杨勇等人 [44] 使用系统动力学方法对软件过程进行建模,并根据仿真结果计算偏离阈值;贾静 [27] 基于软
件项目需求变更进行系统动力学建模,然后模拟不同条件下的需求变更对初始模型的影响,并在此基础上对初
始模型进行改进,并进行需求变更控制的仿真和分析.
与上述相关研究工作相比,我们使用系统动力学方法不仅参考了敏捷过程,同时面向开源软件进行需求变
更管理过程的仿真建模,通过使用真实开源软件项目数据作为模型的基线输入数据,为软件过程分析提供了一
种有效的方法,并且较为完整地对模型进行了系统动力学检测,保证模型可用性.此外,我们还对软件需求变更
管理过程进行了过程改进仿真,为控制项目成本和保证进度,提高软件质量,提供过程改进分析方法.相关研究
方法和成果可应用于组织内软件项目,为项目组织团队保障软件生产的顺利实施提供决策建议.
4 总结与展望
本文首先使用系统动力学方法,参考敏捷过程的开源软件需求变更管理过程进行建模,并对模型进行检测
以发现模型中的错误并改正;然后,以 Spring Framework 项目为研究案例,使用版本分支 3.2.x 的数据作为仿真模