论文部分内容阅读
在软件生命周期中,软件系统的需求不断变化,新的需求频繁出现。当需求变更出现时,对于现有软件系统的影响难以评估,尤其是对于较大的系统,很难明确需求变更可能会对整个系统或系统的一部分产生什么样的影响。如果忽略这些影响,可能导致需求变更实施成本高出预期数倍。尽管需求工程对于软件项目的成功至关重要,但大多数需求决策往往取决于开发人员的偏好和权衡,缺乏一种系统的、明确的管理方法。为了衡量和评估需求变更所带来的影响,我们引入了技术债务的概念。技术债务是软件开发项目中短期利益和长期软件质量的权衡。软件技术债务运用了经济学中“债务”的概念来描述软件开发中为了实现项目短期利益而实施的技术折中,但从长期目标来看,技术债务会影响软件的质量、成本和开发效率,因此有必要对其进行系统有效的管理。基于其跨学科的性质,即软件工程和经济学,技术债务管理的研究应该在软件工程和经济理论之间取得平衡。针对软件生命周期中不断出现的需求变更而引起的技术债务,本文首先提出了一种需求变更技术债务的定义,以量化需求变更的技术债务。借助经济学中“边际贡献”的思想得到需求变更的边际贡献,为需求变更的实现顺序提供依据,再利用边际效益分析法为需求变更的实现价值提供参考。以大型项目HADOOP为例,通过对需求变更技术债务的定义、检测,对需求变更边际贡献的量化和排序,为需求变更的实现顺序以及实现方式提供技术支持,并应用到大型开源项目Spring Framework中,通过实验验证了需求变更边际效益概念的可用性和技术的可行性。最后运用GDBT算法对Spring Framework中的需求变更历史记录进行研究,提出了一种需求变更边际贡献能力分析的方法,并且对各字段取值对其边际贡献影响的重要度进行排序。结果表明,该分析方法可以为需求工程师衡量其工作量和风险提供支持。