【IT168 技术文章】
1 什么叫软件项目估计
众所周知,软件项目估计是软件项目开发活动的重要环节,但是,目前国内外还没有一个对软件项目定义的统一概念。大家都知道,软件项目估计包括对软件项目的规模、工作量和成本和BUG数等估计。但一些更细的问题还值得我们去深思和考虑,如
◇ 估计的对象是什么,
◇ 什么时间进行估计,
◇ 什么时候对估计的监视和跟踪,
◇ 估计的准确性标准是什么,什么是有效的估计,
◇ 哪些工作算估计的工作量,
◇ 如何选择估计的方法和工具,
◇ 估计应遵守的原则和态度是什么,什么叫真诚估计,
◇ 什么人才能做估计人员,要有些什么知识和经验,为什么要做软件项目估计,
◇ 更深层次的问题,什么是估计文化,她包含哪些内容等(在英文中评估和估计是同一个词estimations,但从汉角度理解,评估可以是对现有对象预测,如房产评估,整体资产评估,而估计偏向于对未成形的客观事务的预测,如企业产品市场占有率估计等)。
软件项目估计的对象是整个软件项目呢?还是项目的工作产品。根据SEI的SW_CMM模型定义,软件工作产品和软件产品不同,软件工作产品是指在软件项目开发过程中产生的各种工作产品,它包括需求分析说明书、设计说明书,源代码等工程产品也包括项目管理的工作产品如周报,配置管理报告等。而软件产品是指交付给客户的软件工作产品,它是软件工作产品的一个子集,如执行代码,用户手册和维护手册等。我们认为,软件项目估计是一个课题,估计对象必须是客观的,具体来说估计对象可以是需求分析说明书,执行代码和测试用例和最终提交给客户的软件系统或者它的一个子系统等,当然,一般概念的软件项目估计是指提交给客户的软件系统的规模、完成它所需要的工作量和成本估计。软件系统规模可以用功能点,特征点和对象点以及执行程序代码行等数据和单位来度量,需求分析说明书的规模也可以用系统功能点,特征点和对象点等来度量,但也有用需求说明书文档的大小和页数来度量的。同样,设计说明书,测试用例等都可以用系统的功能点,特征点和对象点来度量,也可以用文档的大小和页数来衡量。只是各种度量方法之间要有一个很好的可兑换性。换句话,从理论上讲,需求分析说明书上的规模和最终提交给客户的软件系统的规模是一致的。但BUG数、工作量和成本的估计就不一样, 软件系统的BUG数、所需的工作量和成本,不是需求分析说明书、设计说明书、源代码等对象的估计值 ,而是需求分析说明书、设计说明书、源代码等对象的BUG数、工作量和成本的估计总和。
什么时候进行软件项目的估计?什么时候对估计的监视和跟踪?一般认为,软件项目估计只是在项目启动前的工作,其实不是这样,在整个软件开发和维护都有估计活动。如图1所示。当然,具体估计时间随着估计的方法和估计的对象不同会有区别。因为不同的度量方法要求具备的软件项目资料准确度不一样。
我们认为软件规模估计和软件规模度量不同,软件规模估计是在软件工作产品没有完成之间对软件工程产品的估计,而度量活动应在软件工作产品完成之后。当然,大部分软件度量方法也可以用来进行软件规模估计。同时,软件规模估计和软件规模度量一样可以在软件生命周期的每一个阶段进行。作为估计活动,软件规模估计也应该有计划和跟踪过程。

图例说明:
1=初步估计
2=可信赖的估计(它是软件项目管理如计划的基础)
3...7=估计新对象和对以前估计的跟踪
7=以文档的方式总结以前的估计
8=维护期的估计,如对客户新需求的估计
在软件企业,特别是我国的软件企业,估计人员往往迫于领导要求尽快估计的压力,草率地完成估计,导致错误的估计,影响项目的开发。事实上,估计人员应根据估计对象的具体情况,制定不同的估计计划,计划内容可以包括估计的对象说明,估计人员的角色和职责,估计的方法和估计,估计的风险识别,估计的工作量估计,估计活动进度安排(如收集估计的所需的信息安排,包括软件需求,历史数据等,进行估计,估计结果确定等)。大的估计活动还需要取得参与估计人员对估计计划的承诺,交给机构高级管理者审阅后执行估计活动,确保估计活动顺利进行。
软件项目应在周例会或里程碑会议跟踪项目估计情况。并随着软件开发活动不断深入,在软件开发后阶段要对前一阶段的估计进行跟踪修正。随着软件开发不断进行,开发人员或估计人员对软件项目的具体细节越来越清楚,做出的估计结果也应该越来越精确(当然,软件估计结果首先要求是准确的,而后才追求精确)。
机构应收集这些估计数据(如图1中?所列活动),包括估计活动本身的数据如估计工作量和估计结果,为以后估计活动提供指导。
可以这样理解,软件项目估计是指以准确的调查资料和项目信息(如人员和设备信息)为依据,从估计对象的历史、现状和及其规律性出发,运用科学的方法,对估计对象的规模,所需工作量和成本进行的测定。那些临时凭个人经验一时凭灵感或感觉对软件项目规模和工作量的估计不是真正软件项目估计。软件项目估计是项目决策科学化的工具,是项目组编制计划、预见计划执行情况、加强计划指导的定量依据,也是企业改善经营管理的有效手段之一。同时,软件项目估计在软件贸易估价活动中起到重要的作用。