【正确答案】要点点评
软件开发成本估算是一个十分容易被忽视,但却又是十分重要的内容。其重要的原因是没有成本估算,项目计划就会失去基础;容易被忽视的原因却是由于大部分软件开发组织未能够有效掌握它。
软件估算包括规模估算、工作量估算、进度估算和成本估算。整个估算的过程是:首先根据软件需求进行规模估算,也就是估计软件的规模,通常以代码行数、功能点数为单位;然后在估计的规模的基础上,根据项目的特定因素(例如,技术能力、使用的语言和平台、团队稳定性、项目复杂度等)、开发生产率经验数字来估算开发的工作量,这通常以人天、人月、人年为单位;最后根据客户提出的进度需求进行进度估算,根据人员及其他成本(如设备、房租、差旅等)对总的开发成本进行估算。软件估算的基础是经验数字和经验模型。
从上面的描述中,可以看出规模估算是软件开发成本估算的基础(数据来源),而工作量估算则是软件开发成本估算的关键(决定了开发成本)。
规模估算最常用的方法包括LOC(代码行)估算法和FP(功能点)估算法。LOC 估算法主要根据历史项目记录,以经验数据进行推测;FP 估算法则通过一个较严谨的经验模型计算公式来进行估算。FP 估算法是一种比较通行的软件规模估算方法。
工作量估算可以采用的模型、方法和技术就比较多了,大致可以分为算法方法、类比法和自底向上法3 种。
(1)算法方法估算是自顶向下的方式实现,使用数学方式表达出估算所含的各种参数之间的关系,如规模、工作量、进度、复杂度之间的关系。这个模型可以是静态的,也可是动态的。
最常见的算法方法估算模型包括Mark II 估算、COCOMO 81、COCOMOII、COCOMO 组、Putnam 估算模型等。
①Mark II FP 估算:它不是一个严格的算法模型,是基于各种因素和它们的影响的主观评价之间关系的一些理解。
②COCOMO:它是根据软件产品规模和几个特征计算工作量和日历时间的估算算法模型。它是由Barry Boehm 博士开发的,发布于1981 年,即COCOMO 81,而COCOMOII 则是其新版本,不过由于它们各有特色,因此还共同存在于估算实践中。这是一个较严格,并经受了大量实践考验的一个经典估算模型。
③COCOMO 组:包括重点应用于COTS 组件项目的COCOTS 模型;用来预测每 KLOC 或FP 中残留错误的COQUALMO 模型;着重于开发软件的成本在开发活动上的分布的COSSEMO 模型;着重在预测新技术、提高生产率的发明方面最有效的成本分配的COPROMO 模型。
④Putnam 估算模型:它是一个工作量动态的、多变量的估算模型,它对交付时间十分敏感。
⑤静态模型:除了以上动态模型之外,还有一些常用的静态模型,其中最常用的是Watson和Felix 模型。其计算公式是不变的:
