软件项目超期超预算是软件工程领域存在的长期问题。一个主要原因是早期所做的成本预测随着项目的进展变得越来越不实际,而开发过程中面对众多子任务表现出的不确定性和复杂关系用传统方法难以有效预测。因此,研究软件过程子任务的变化规律,在项目开发过程中对未来阶段的成本做出准确预测,及时发现项目存在的风险,是缓解项目超期超预算问题的关键,对软件技术和软件产业的发展具有重要的意义。本项目采用运筹学方法,重点研究软件过程子任务的组合特征,寻找子任务组合特征和项目属性之间的内在联系,同时研究项目子任务组合优化程度的度量方法,以及与项目成本之间的关系。针对软件过程子任务存在的不确定性及小样本特点,采用灰色系统理论研究其建模与预测问题。在前期研究结果的基础上,本项目有望从软件开发子任务层面揭示项目成本的变化规律,避免传统方法因子任务合并而引入更多的复杂性和不确定性,为解决软件阶段成本预测问题提供了新的思路。
software engineering;software cost estimation;software stage effort estimation;software effort distribution;software life cycle
(项目的背景)软件成本预测是软件工程研究领域最有挑战性的任务之一。在世界范围内大量软件项目不能按期完成或者被迫取消,很多项目虽然完成但严重超支。出现如此严重问题的一个重要原因是缺少一致有效的成本预测方法。为减少软件失败造成的巨大损失,需要了解软件成本的分布变化规律,动态预测成本的变化,并在开发过程中不断收集项目信息,及时进行调整,使项目在规定的时间和预算内完成。目前,国际和国内对软件成本分布和阶段成本预测的研究较少,本研究提出的方法均为首次提出。(主要研究内容、结果)本研究致力于软件阶段成本的度量、分布和预测。研究内容主要包括3个方面。(1)构造用于软件成本度量的统一框架。软件阶段成本预测面临的一个主要困难是软件项目的开发方法、使用的生命周期类型、过程数据采集方法不尽相同,造成研究结果难以比较,模型适用性差。本研究基于运筹学、软件工程理论和实际项目数据首次提出了一个软件成本度量的统一框架。该框架包括一个抽象生命周期活动模型,在一个大规模的软件工程数据集上进行了验证,可实现在不同项目间进行成本分布与预测结果的基准比较和数据交换。(2)研究软件生命周期阶段成本、单月成本分布的规律及优化的预测方法。软件阶段成本随机波动很剧烈,没有明显规律。本次研究中利用抽象生命周期方法及运筹学方法,把项目数据进行分类、归一化等处理,从海量数据中发现了较为稳定典型的分布规律。即生命周期阶段成本及单月成本的分布有准正态、单峰的特点,早期和后期阶段成本分布渐进右偏,不同规模项目成本分布主要特征相似,并提出了基于优化方法的预测模型。(3)研究项目属性与阶段成本分布的关系。具体研究了两个重要属性“项目类型”“行业类型”和成本分布间的关系。发现项目属性对成本分布没有显著影响。在5个月、10个月、15个月的项目样本上,不同属性项目阶段成本分布不存在显著差异。(科学意义)本研究中发现的基于生命周期阶段和单月的成本分布规律及项目属性和成本间确定性关系,可用于建立阶段成本预测基准模型,获得稳定且优化的成本预测结果,有较高的可信度。较好地解释了相关研究中普遍存在的成本预测结果不稳定的原因,对软件阶段成本预测逐渐走向成熟起到积极的推动作用。