论文部分内容阅读
软件是一种高度定制化的知识性产品,与普通的工业产品依靠机械的重复工作不同,软件的研发主要依赖于软件开发人员的脑力劳动。而开发人员作为一种具有动态性和不确定性的非物质资源,很难将其视为传统调度问题中的机械资源进行调度分配。在真实的软件项目研发过程中,研发环境存在着一定的动态性,这主要体现在两方面:其一是软件项目研发过程中,人员的学习/遗忘效应导致其技能水平处于一个浮动的状态;其二是软件研发期间动态事件的发生会导致原调度方案无法达到期望的执行效果。这提高了软件项目的调度难度。本文核心研究软件工程项目调度的理论和方法,结合问题特点来对软件工程项目进行合理的调度。首先,分析了软件项目调度问题的特点、调度过程和管理框架,设计了一种软件调度方案的十进制编码方式。针对软件项目调度问题的特殊性,建立软件项目调度基础模型,主要包括网络建模、约束条件、目标函数、人员模型等。其次,考虑到人员为软件项目调度问题的主要调度资料,本文针对人员技能水平的变化特性,建立了人员学习/遗忘模型,并采用NSGA-II进行了多角度仿真实验。面向不同项目规模算例的仿真实验表明,考虑人员的学习能力有利于改善调度方案性能,而遗忘效应则会使调度方案的项目总工期和成本增加。最后,考虑了软件开发环境的不确定性,针对软件开发过程中的三类常见动态事件进行建模,并设计了动态事件的处理策略。此外,鲁棒性作为评价调度方案优劣的第三个目标函数被加入到模型中。作者针对问题特性提出了改进的烟花算法,引入交叉爆炸算子并设计了炸点筛选和保留策略。实验结果显示,改进的烟花算法改善了种群多样性、分布性和收敛性。本文的研究在软件项目调度问题实例基础上进行,能够为软件企业优化资源配置方案提供一定理论依据和指导方案,进而提高软件开发的效益。