Page 75 - 《软件学报》2020年第11期
P. 75
康燕妮 等:软件需求变更管理的系统动力学仿真建模 3391
Table 1 Model test in system dynamics (Contiuned)
表 1 系统动力学模型检测(续)
检测方法 [13] 检测目的 检测步骤/未检测原因 检测结果
评估变化带来的 以变量“review effectiveness”为例,分析采用代码评审的
影响,即当假设 最差情况是经过代码评审后 bug 的报告量未减少,即
灵敏度 在合理的不确定 评审有效性的变量取值为 0,最优的理想情况是经过 模型通过
11 分析 范围内发生 代码评审后所有 bug 都被发现,即评审有效性的变量 灵敏度
检测 变动时,模型 取值为 1,结合现实情况,评审有效性取值范围为[0,1),检测 分析检测
所得出的结论 结果表明基线情况处于最优情况和最差情况之间,故评审
是否事关重大 有效性的基线情况通过单值灵敏度分析检测
系统 建模的过程 仿真结果表明,采用软件
12 改进 帮助系统 从代码评审、激励措施的有效性和需求变更请求评估 过程改进策略,系统
这 3 个方面对软件需求变更管理过程的改进进行仿真
检测 变得更好 质量得到进一步提升
上述对模型的 11 种检测结果表明,模型均通过以上检测,达到建模目的.下面以 Spring Framework 项目为研
究案例,使用版本分支 3.2.x 的数据进行需求变更管理过程的仿真,并对仿真结果进行分析改进.
2 案例研究
Spring Framework 为任何部署平台上基于 java 的现代企业应用系统提供一个全面的编程和配置基础架构
支持,由于其构建了一个企业应用程序的”管道”,使用这个框架的团队就可以专注于应用程序级别的业务逻辑,
而不必在意特定的部署环境.另外,Spring Framework 项目在开源社区软件中是比较活跃且受众面较大的一个
开源项目,相对而言经过长时间的运维,该软件较为成熟,且该项目采用了敏捷开发方法,本文的需求变更模型
也具有敏捷开发的特征,因此选择 Spring Framework 项目为本文的研究案例.
在进行模型仿真前,对 Spring Framework 项目中的相关数据进行收集和清理:首先,收集 Spring Framework
的 issue tracking system(JIRA 系统)中所有 issue 数据,使用 git 工具以及 git clone 命令,通过 url 方式将 spring
framework 的 commit 数据拉取到本地;之后,对于 issue 数据,在删除不需要的字段后,通过数据库导入工具将
issue 数据导入数据库;对于 commit 数据,使用 java 文本处理程序将数据导入数据库中;最后将所有数据导入到
数据库,执行 Sql 脚本,查询导出仿真所需数据,组织为 csv 格式,并执行数据预处理程序,将数据转换成 Vensim 可
以识别的数据格式并输入 Vensim,进行基线实验仿真分析.
2.1 基线实验仿真分析
将收集清理的数据在 Vensim 中进行仿真,得到如图 11~图 15 所示的基线仿真结果.此部分根据基线结果进
行 Spring Framework 项目版本分支 3.2.x 需求变更管理过程分析,提出该项目需求变更管理过程的优缺点.
(a) 开发人员数量 (b) 核心开发人员数量
Fig.11 Baseline simulation results 1
图 11 基线仿真结果 1
图 11(a)和图 11(b)都是开源软件社区人力资源子系统的仿真结果,分别表示外围开发者以及核心开发团队
成员的数量随时间的变化趋势.在分支 3.2.x 的生命周期中,两者都呈现出明显的增加趋势,反映出软件项目组