1、2007 级 软件项目管理 研究性学习期末论文软件项目工作量估算 COCOMO 和 SLIM 模型的应用研究赵燕君(浙江师范大学 数理与信息工程学院 ,浙江 金华,321004)摘 要:工作量估算 对于软件 项目计划制订、项目进度管理、人力资源调配、项目成本控制有着重要意义。文章重点介 绍了 COCOMO 模型和 SLIM 模型方法,再对这两个不同模型估算方法进行综合分析比较, 总结出比较准确的估算方法。关键词:工作量估算;COCOMO 模型;SLIM 模型0 引言项目经理把工作量分配给具体的工程师,把工作量分布在详细的项目计划中,这就是依据工作量所进行的项目管理 1。工作量的估算是软件项目计
2、划的关键环节。很多组织更愿意使用分解或建模方法而不愿听取专家建议或使用类推分析方法。通过构造对工作量或成本起关键作用的参数模型(如普遍使用的建模) ,当软件工程师将估计值与实际值比较时,他们就拥有可以用来检验的东西。通过在过程中合成一个模型,估计师检查模型和准确性之间的关系,以便能够调整模型,提高未来预测的准确性。有两种类型的模型已经用来进行工作量的估计:成本模型(cost)和约束模型(constraint) 。成本模型提高了工作量或持续时间的直接估计,如 COCOMO 模型就是一个经验成本模型。相反,约束模型显示了随着时间的流逝两个或多个参数之间的关系,这些参数是工作量、持续时间或人员水平等
3、。Rayleigh 曲线在几个商业产品(包括 Putnam)中作为约束模型被使用 2。文章主要是对两个正确率较高的典型模型:COCOMO 和 SLIM 模型进行介绍,并将两者分析比较,提出了综合运用这两种模型计算工作量的方法。1 COCOMO 模型估算法在 20 世纪 70 年代,Barry Boehm 研究了从加利福尼亚 TRW 咨询公司的大量项目中收集了数据。使用这些数据,他道出了构造性成本模型(COnstructive COst MOdel, COCOMO) 。后来他和他的同事提出了升级版 COCOMO2.0,是对原始版的彻底更新。1.1 原始的 COCOMO 模型 原始的 COCOMO
4、 模型按其详细程度分为 3 级 3:2007 级 软件项目管理 研究性学习期末论文(1)基本 COCOMO 模型,静态单变量模型,用已估算出来的源代码行数(LOC)为自变量的函数来计算软件开发工作量。(2)中间 COCOMO 模型,在用 LOC 为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。(3)详细 COCOMO 模型,包括中间 COCOMO 模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响。当对项目了解很少时,使用基本模型;明确需求以后,使用中级模型;当设计完成时,使用高
5、级模型。这三个模型具有相同的形式,。FaSEb其中 是按人月计算的工作量, 是按千行交付源指令(KDSI)测量的规模, 是调整E F因子(在基本模型里等于 1) 。 和 的值见表 1-1,与开发方式有关,而开发方式取决于所构造的软件类型(有机系统、嵌入式系统和半分利系统) 2。通过选择一种开发方式和使用恰当的工作量公式,COCOMO 生成了对工作量的初步估计。当知道项目的更多情况时,估计师可以应用 COCOMO 的中级模型。Boehm 假设了15 中相互独立的成本驱动因素,每个成本驱动器按照最多 6 点的序数标度分等级:非常低、低、正常、高、很高、极高,每个点对应一个调整因子(EAF)值,见表
6、 1-2。工作量的最后估计值是乘以 15 个成本驱动器的值。每个成本驱动器的调整因子是 Boehm 从 TRW的开发环境中推导出来的。因此模型必须按照你自己的开发环境进行校准。表 1-1 三个 COCOMO 模型的工作量参数方式 a b有机式 2.4 1.05半分离式 3.0 1.12嵌入式 3.6 1.20表 1-2 各种影响 EAF 的值级 别成本驱动因素很低 低 正常 高 很高 极高产品因素2007 级 软件项目管理 研究性学习期末论文软件可靠性 0.75 0.88 1.00 1.15 1.40数据库规模 0.94 1.00 1.08 1.16产品复杂性 0.70 0.85 1.00 1
7、.15 1.30 1.65硬件因素执行时间限制 1.00 1.11 1.30 1.66存储限制 1.00 1.06 1.21 1.56虚拟机易变性 0.87 1.00 1.15 1.30环境周转时间 0.87 1.00 1.07 1.15人的因素分析员能力 1.46 1.19 1.00 0.86 0.71应用领域实际经验 1.29 1.13 1.00 0.91 0.82程序员能力 1.42 1.17 1.00 0.86 0.70虚拟机使用经验 1.21 1.10 1.00 0.90程序语言使用经验 1.14 1.07 1.00 0.95项目因素现代程序设计技术 1.24 1.10 1.00 0
8、.91 0.82软件工具的使用 1.24 1.10 1.00 0.91 0.83开发进度限制 1.23 1.08 1.00 1.04 1.101.2 COCOMO2.02模型COCOMO2.0 模型广泛适用于新技术新工艺的应用。在阶段 1,项目通常通过构造原型来解决具有高风险的问题:包括用户界面、软件和系统的交互、性能或技术成熟度。因此,COCOMO2.0 用对象点来估计规模。为了计算对象点,首先需要对应用涉及到的屏数、报告数、第三代语言的组件数进行计算,来生成一个初始的规模度量。表 1-3 展示了将所有对象分成简单、适中和复杂的分类指导。表 1-4的权值所反映的是实现该复杂性等级的某个实例所
9、需要的相对工作量。与功能点相似,需要把经过加权的实例相加,以产生一个单一的对象点数。接下来是一个不同于功能点的规程,其中考虑用到了重用的情况,因为我们要把对象点拥有工作量的估计。假定 r%的对象是从以前的项目中重用的,新对象点数的计算公式为: 10/)( 对 象 点 )新 对 象 点 r2007 级 软件项目管理 研究性学习期末论文表 1-3 对象点复杂性等级屏幕数据表的数量和来源包含的视图数总数3 服务器,5 客户机)3 服务器,5 客户机)6 个月的情况,其中 tm 以月表示。43.14.8OmPBLt,以人月表示,对于 E=20 的情况,其中 ty 以年表示30ytE3 分析比较两种模型
10、估算方法对运用 COCOMO 模型估算所得工作量 PMC 和运用 SLIM 模型所得工作量 PMS 进行比较、分析,主要计算两种估算方法的差异系数 来检查两种方法所得结果差异的大小。10%PM-SC然后分析 ,如果技术所得 10%,就说明两种方法所得结果偏差过大,很可能估算过程中存在较严重的问题,就需要从多方面对两种估算方法进行检查、分析,再次计算差异系数 ,可以进行多次循环检查,不断完善。另外,得出的估算结果还应与期望工作量作比较。软件期望工作量指根据项目开发经验对项目最可能工作量进行估算的值 PMQ,观察差异系数 ,若 20%,在很可能估算过程有问题,需重新检查。 QSCPM2需求规格说明
11、阶段时间管理阶段维护阶段确认和测试阶段项目设计和编码阶段人员级别(人数)td2007 级 软件项目管理 研究性学习期末论文对于这两种估算方法的有效性进行比较分析,可以从以下几个方面来看:1.两种估算方法的估算范围。由于两种模型解决问题的角度不同,所以经常出现而这的内容范围不一致,这也是两种估算结果相差较大的主要原因。只有对估算范围进行合理取舍,仔细分析,才能保证估算结果保持在合理范围内。2.两种模型的假设前提。两种模型都有自己的假设前提,必须在项目中得到满足。特别是 COCOMO2.0 模型假设前提比较多,应该仔细从管理方式、项目规模、开发流程等方面进行分析。如果实际项目某些方面不符合模型的某
12、些假设,就应进行必要的修改,以保证模型估算应用的有效性。3.两种模型所需数据来源的有效性。要保证估算的正确性,必须保证数据来源的真实性、一致性。以客观数据位基础,忠于事实。经过多次分析和模型修改后,对新故事所得工作量重新计算 和 。通常情况下, 和 的范围控制在 5%以内,也可以根据实际情况自己修改范围。最后,利用如下公式可以取得项目的最终工作量: CSPM214 结束语软件项目的工作量估算方法有很多种,一般可以根据历史数据和软件规模估算的结果进行估算。原始的 COCOMO 模型基于源代码行数进行估算,后来改进的 COCOMO模型又把功能点分析方法应用于规模估算,使得工作量估算的精确度进一步提
13、高。Putnam的 SLIM 模型也是一种估算准确度比较高的方法。由于工作量估算是项目后期能够顺利实施、按预先计划的进度前进的关键影响因素之一,因此设法找到相对有效的估算方法是必要的。综合分析利用 COCOMO 和 SLIM 这两种模型方法,并对两种估算结果进行比较,分析两种模型方法中存在的问题,不断修正估算,多次循环,最终得到可以接受的较符合实际的工作量估算结果。这样不仅保证了更准确的估算结果,也避免了只使用一种方法的片面性。参考文献:1张家浩.软件项目管理.机械工业出版社,2005.2:932芬顿,弗莱格( 著);杨海燕等 译.机械工业出版社, 2004.9:202-203,206-207,334-3422007 级 软件项目管理 研究性学习期末论文3朱少民,韩莹.软件项目管理.人民邮电出版社,2009.11:86-884Barry W.Boehm.Software Cost Estimation With COCOMOM.Pearson Education:2005