软件规模估算之COCOMO模型应用解读



 

 

 COCOMO模型是由TRW公司开发,Boehm提出的结构化成本估算模型。是一种精确的、易于使用的成本估算方法。
 
模型按其详细程度可以分为三级: 基本COCOMO模型,中间COCOMO模型,详细COCOMO模型。其中基本COCOMO模型是是一个静态单变量模型,它用一个以已估算出来的原代码行数(LOC)为自变量的经验函数计算软件开发工作量。中级COCOMO模型在基本COCOMO模型的基础上,再用涉及产品、硬件、人员、项目等方面的影响因素调整工作量的估算。详细COCOMO模型包括中间COCOMO模型的所有特性,但更进一步考虑了软件工程中每一步骤(如分析、设计)的影响。
 
模型中,考虑开发环境,软件开发项目的类型可以分为3种:
1. 组织型(organic): 相对较小、较简单的软件项目。开发人员对开发目标理解比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬件的约束较小,程序的规模不是很大(<50000行) 
2. 嵌入型(embedded): 要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某种复杂的硬件设备紧密结合在一起。对接口,数据结构,算法的要求高。软件规模任意。如大而复杂的事务处理系统,大型/超大型操作系统,航天用控制系统,大型指挥系统等。 
3. 半独立型(semidetached):介于上述两种软件之间。规模和复杂度都属于中等或更高。最大可达30万行。
 
COCOMO模型中我们定义以下变量:
L-------源指令条数。不包括注释。1KDSI = 1000DSI。
E-------开发工作量(以人月计) 1MM = 19 人日 = 152 人时 =1/12 人年
D-----开发进度。(以月计)
 
根据以上定义,我们分别对基本COCOMO模型,中间COCOMO模型,详细COCOMO模型的应用做出解释如下:
 
基本COCOMO模型
 
1. 我们知道,COCOMO模型是一种基于代码行估算的成本分析方法,因此我们首先估算出软件的代码行规模L(单位是kLoc,即千行代码)
2. 然后我们根据公式  E = a*L^b , D = c*E^d 得到估算出的工作量和开发时间。其中a,b,c,d是固定的参数值,需要注意的是,对于不同类型的软件项目,参数值是不同的,如表。

很显然,这种方法过于粗糙,我们需要对其进行精化,因此就有了中间COCOMO模型。
 
中间COCOMO模型
 
中间COCOMO模型区别于基本COCOMO模型的地方就是对于工作量的估算,计算公式是E=a*EAF*L^b,D=cE^d,其中EAF是指工作量调节因子。EAF是根据可能影响工作量的15个因素产生的,如下,计算公式是15个参数(不同项目的各因素值是不一样的,这个是自定义的)的乘积:
 


 
 
详细COCOMO模型
详细COCOMO模型是在中间模型的又一次细化。详细模型针对每一影响因素,按模块层、子系统层、系统层,有三张工作量因素分级表,供不同层次的估算使用,而每一张表中又按开发各个不同阶段给出。如软件可靠性在子系统层的工作量因素分级表如下:
 


 
详细模型过于繁琐,适用于大型复杂项目的估算,我们不做过多解读,其中的参数项太多。
 
 
COCOMO和COCOMOII的区别
 
COCOMOII是顺应现代软件开发的变化而对COCOMO做出的改进版,把最新软件开发方法考虑在内。现在还在持续的开发中,目前是美国南加州大学的教师带领一个学生团队在开发。
 
COCOMOII实际上是三个不同的计算模型组成的:
 
1. 应用组合模型:适用于使用现代GUI工具开发的项目。
2. 早期开发模型:适用于在软件架构确定之前对软件进行粗略的成本和事件估算,包含了一系列新的成本和进度估算方法。基于功能点或者代码行。
3. 结构化后期模型:这是COCOMOII中最详细的模型。它使用在在整体软件架构已确定之后。包含最新的成本估算、代码行计算方法。
 
 
 

猜你喜欢

转载自wf305.iteye.com/blog/2059546