Page 67 - 《软件学报》2020年第11期
P. 67
康燕妮 等:软件需求变更管理的系统动力学仿真建模 3383
需要说明的是,在 issue tracking system 中,需求变更请求以及系统中的缺陷都统称为 issue.本文将需求变更
请求与系统中的缺陷加以区分,本文中的 issue 专指需求变更类型的 issue,而系统的缺陷类的 issue 则称为 bug.
1.2 开源软件需求变更过程关键因素抽取及因果关系分析
根据上述分析及相关文献整理,选取软件需求变更相关关键因素后,确定各关键因素之间的因果关系,绘制
如图 3 所示的因果关系图.因果关系分析起始于需求变更请求(requirement change request),由于需求变更的影
响通常直接反映在项目工作量的变化上,为了能够较为详细地分析需求变更对软件项目造成的影响,因果图中
将需求变更引起的工作量(requirement change effort)变化细分为 3 类:对需求变更请求分类所需的工作量(triage
effort)、实现和修改需求变更请求所需的工作量(implement & modify effort)以及修复 bug 所需的工作量(fix
effort).Triage effort 指的是需求变更请求提交后,项目组的成员需要对需求变更请求进行分类(triage),以区分出
请求的合理性和有效性所需的工作量,也就是传统软件项目中需求变更评审活动所花费的工作量.目前,大中型
开源软件项目通常都使用需求变更管理工具或 issue tracking system 进行软件需求变更管理,这些工具可以在
[7]
一定程度上帮助项目管理人员进行请求的初步过滤 ,这也是因果图中自动识别有效性(automatic recognition
effectiveness)的作用.当需求变更请求被接受,在花费人力和时间去实现或修复这个变更时,就形成了因果图中
实现或修改变更请求所需的工作量.另外,在完成需求变更过程中可能会造成 bug 的产生,为了修复这些 bug,相
关工作量是修复 bug 所需的工作量(fix effort).
Fig.3 Cause graph for open source software requirement change
图 3 开源软件需求变更因果关系图
随着需求变更请求的增加,需求变更所需消耗的工作量也随之增加,并进一步引起项目持续时间(project
duration)的增加以及项目进度压力(excessive schedule pressure)的变化.而项目持续时间的增加,则需要对敏捷
过程中每一个 sprint 的迭代周期(duration of sprint)的长短进行调整,以适应完成需求变更所需的工作量要求,从
而达到减轻项目压力的目的.项目进度压力作为项目开发过程中的重要影响因素,受 sprint 的迭代周期和完成
需求变更所需工作量的共同影响,通过两者的共同控制,把项目进度压力控制在合理有效的范围内,从而保证软
件的较低缺陷量(code bugs)以及人员的较高生产力(productivity).另外,软件的低缺陷量是软件高质量(software
quality)的特征之一,当软件的质量较高时,能够从一定程度上提升项目对用户的吸引力(user attraction),从而最