论文部分内容阅读
为了更迅速地响应市场需求,从而获得最大的商业价值,软件开发组织需要进行快速的迭代开发,并频繁发布产品。这种轻量级的敏捷过程强调人、过程和工具之间需要进行频繁交互。这导致软件过程所涉及的相关人员,及其所关注的内容更加复杂,过程的执行更加难于控制。得益于自动化技术的发展,设备的可靠性得到了很大的提高,这使得在过程执行中,直接由机械故障导致的事故比例越来越低。而人的操作行为造成的错误对过程的影响越来越凸显,尤其是在软件过程这一体现人的智慧的生产过程中。据Gartner称,“到2015,80%影响到关键任务服务的中断是由执行者和过程引起的”。 能够或有可能引发不期望事件的,所有人的行为或疏忽被称为错误。在过程中,一个错误的执行操作将无法按照预期把输入转换成输出,而使得步骤输出有缺陷的工作产品。软件过程执行中的错误,有的会导致直接可被识别的问题(失效),有的则会一直潜伏在过程中直到后续步骤的执行才被暴露或探测到。潜在的错误在过程中不断传递,直到某些步骤的失效而使过程偏离期望的路径,从而暴露出来。为了处理过程中发现的错误,需要额外的步骤对其进行诊断和修复。不同的错误探测和修复策略所需要的花费的时间和获得的效果也各不相同。受到时间和资源的限制,项目团队需要权衡修复方案的成本和效果来进行过程决策。 针对上述问题,本文以面向错误探测与修复的过程决策的建模分析和优化作为研究目标,从过程的决策现状分析、面向错误探测与修复的过程建模、影响分析以及决策优化四个方面展开研究。主要贡献如下: 1)调研了软件开发过程决策管理现状。软件项目开发过程中存在着多类任务,主要分为三类:满足客户和市场需求的功能开发任务;修复功能缺陷等显式错误的修复任务;移除代码臭味等潜在错误的重构任务。本研究通过问卷调研,获取人们对各类任务的认知、偏好和决策方法,并通过对比分析了解软件开发过程中不同的角色对各类任务的看法和认知的差异。结果表明,在开发过程的决策中,团队对需求开发任务和缺陷修复任务都进行了很好的规划,但是对于重构任务并没有做一致认同的决策方法;团队各类角色对重构任务的认知存在较大差异,对各类任务的优先级有不同的偏好。对于目前的过程决策,重构任务在实际过程决策中并没有得到应有的重视。研究建议在软件开发过程中需要为重构这类修复潜在缺陷的任务进行决策的支持。 2)提出了面向错误探测与修复的过程模型。建立了面向错误探测与修复过程模型,用以描述过程中的错误及其处理策略。模型包含两部分内容,即错误探测与修复活动的过程模型和过程资源的行为模型。基于滚动升级过程,给出了建模场景并介绍了过程模型中的定义。 3)提出了错误探测与修复策略对过程的影响分析和仿真模型。基于面向错误探测与修复的过程模型,利用离散事件仿真的方法,以错误的注入、影响、探测和修复为基础,建立了仿真模型,模拟过程中不同的错误探测及修复策略对过程的影响。基于云平台应用的连续部署和滚动升级过程进行案例研究,给出了仿真场景、影响分析并与实际环境中的实验结果进行比较验证。结论显示本模型可以准确地仿真错误探测及修复策略对过程执行的影响。 4)提出了软件开发过程中潜在错误修复任务的决策优化模型。利用工作产品之间的依赖关系,描述了对重构任务与其他任务之间的关系以及修复潜在错误的工作量的变化。通过对任务之间的约束及影响进行分析,建立了任务调度模型,从任务完成进度和推迟潜在错误的修复而造成的工作量的变化两个方面对过程决策进行优化。基于开源软件项目和仿真模型,对比分析了调度方法的有效性以及不同的重构决策对过程的影响。结果显示,本模型能够为项目管理者提供有效的决策方案。