软件项目估算中分解技术与经验模型比较

时间:2022-10-13 05:34:31

软件项目估算中分解技术与经验模型比较

摘 要:为了得到软件项目可靠的成本和工作量的估算,有很多选择,分解技术和经验模型是也可行的办法。文章通过对分解技术和经验模型中常使用的估算方法分别做了定义。最后通过对一个机械CAD软件进行估算,比较了分解技术的估算方法和经验估算模型中的软件方程式模型结果,理想的情况是同时使用多种技术,相互进行交叉调和,能得到更精确地估算。

关键词:软件项目;分解技术;经验模型;估算;软件成本

中图分类号:TP311 文献标识码:a DoI: 10.3969/j.issn.1003-6970.2012.02.020

Decomposition Technique And Comparison Of Experience Model In Software Project Estimation

ZHANG Chenxiang

( Huaian College of Information technologyJiangsuHuaian 223003 )

【Abstract】In order to get the estimation of reliable cost and workload,we have many choice. Decomposition technique and comparison of experience model also are feasible measures.This paper defines the measures of Decomposition technique and comparison of experience model.With a estimation of a mechanical CAD software,we compare the model equations between the decomposition technique and comparison of experience model.The best situation is to use several techniques,crossing blend with each other,and getting more precise estimation.

【Key words】software project; decomposition technique ;experience model; estimation; software cost

0 引 言

在软件项目开始前,项目经理和软件团队必须估算将要完成的工作、所需的资源,以及从开始到完成所需要的时间。对软件工程工作的资源、成本及进度进行估算时,需要经验,需要了解有用的历史信息,还要有当只存在定性的信息进行定量预言的勇气。对于复杂的定制系统,如果成本估算误差很大,就会使赢利变成亏损,对于开发者来说,成本超支可能是灾难性的。

软件成本和工作量的估算从来都没有成为一门精确的科学,因为变化的因素太多――人员、技术、环境和行政,都会影响软件的最终成本和开发所用的工作量。为了得到可靠的成本和工作量的估算,有很多选择。近年来,出现了很多对软件整个生命周期的软件成本和进度估算模型,目的就是为了保证在预算和质量的基础上,通过软件开发的管理,能够按时的交付产品。本文主要介绍应用于CAD软件的两大类软件估算方法:分解和经验建模,并分析比较两种估算方法的结果。

1 分解技术

分解技术需要划分出主要的软件功能,接着估算LOC的数量、用例的数量等。软件项目估算是一种解决问题的形式,在多数情况下,要解决的问题非常复杂,不能作为一个整体考虑。因此,我们要对问题进行分解,把它分解成一组较小的问题,再定义他们的特性。通常所使用的估算方法有:基于问题的估算;基于过程的估算;基于用例的估算。

1.1 基于问题的估算

项目计划人员从界定的软件范围陈述入手,根据该陈述将软件分解成一些可分别独立进行估算的功能问题。然后估算每个功能的LOC或FP(估算变量)。不管使用哪一种估算变量,项目计划人员都要首先为每个功能确定一个估算的范围。利用历史数据得到一个不确定程度的隐含指标。接着,计算三点(估算值):乐观值(Sopt)、可能值(Sm)和悲观值(Spress),通过三

个值估算的加权平均值来计算估算变量的期望值S。

1.2 基于过程的估算

最通用的项目估算技术是根据将要采用的过程进行估算。即,将过程分解为一组较小的任务,并估算完成每个任务所需 的工作量。

同基于问题的估算一样,基于过程的估算首先从项目范围中抽取出软件功能。接着给出为实现每个功能所必需执行的一系列的框架活动,这些功能和相关的框架活动可以用表格的形式给出。

一旦将问题功能与过程活动结合起来,计划人员可以针对每个软件功能,估算完成各个软件过程活动所需的工作量,这些数据写在表的中心部分。然后,将平均脑动力价格应用于每个软件过程活动的估算工作量,就可以估算出成本。

1.3 基于用例的估算

用例能使软件团队深入的了解软件的范围和需求。Smith提出用例可以用于估算,但只有在用例描述的“结构层次”的情况下来考虑,并且该结构层次中的任一层次都可以由不超过10个用例来描述,每个用例包括的场景不超过30个。

因此,在用例能够用于估算之前,首先要建立结构层次内的层次,确定每个用例的平均长度,定义软件的类型,考虑系统的大致体系结构。一旦确定了这些特性,就可以利用经验数据确定估算值,利用以下关系式进行计算:

其中,N:实际用例数。LOCavg:校正值。Sa:每个用例包含的实际场景数。Sh:每个用例包含的平均场景数。Pa:每个用例的实际页数。Ph:每个用例的平均页数。

任何估算技术,不管他有多先进,都必须与其他方法进行交叉检查。所以在分解技术中,必须要对这些估算方法进行调和,以得到对工作量或成本的一致估算。

2 经验模型

经验估算模型使用由经验导出来的公式来预测工作量的,工作量是 LOC (Lines of code)或FP(function point)的函数。是将LOC或FP的结果值代入到估算模型中。用以支持大多数估算模型的经验数据都是从有限的项目样本中得出的。因此,还没有一种估算模型能够适用于所有的软件类型和开发环境。所以,从这些模型中得到的结果必须慎重使用。应该对估算模型进行调整,以反映当前项目情况。

软件方程式是一个多变量模型,它假定在软件开发项目的整个生命周期中有特定的工作量分布。该模型是根据从4000多个当代的软件项目中收集的生产率数据导出的。根据这些数据,估算模型具有以下形式:

其中,

E为工作量,以人・月或人・年为单位。T为项目持续时间,以月或年为单位。

B为“特殊技能因子”。

P为“生产率参数”,它反映了:总体的过程成熟度及管理实践;采用良好的软件工程实践程度;使用的程序设计语言的水平;软件环境的状态;软件团队的技能和经验、应用系统的复杂性。

对于实时嵌入式软件的开发,典型值P=2000;对于电信及系统软件,P=10000;而对于商业系统应用,P=28000。当前情况下的生产率参数可以根据以往开发工作中收集到的历史数据导出。

软件方程式有两个独立的参数(1)规模的估算值;(2)项目的持续时间。为了简化估算过程,并将该模型表示成更通用的形式,Putnam和Myers又提出了一组方程式,把最短开发时间定义为:

3 CAD软件估算

CAD软件接受工程师输入的二维或三维几何数据。工程师通过用户界面与CAD 系统进行交互并控制它,该用户界面应表现出良好的人机界面设计特征。所有的几何数据和其他支持信息都保存在一个CAD数据库中。

3.1 分解技术估算CAD软件

3.1.1 基于问题的估算

为了进行估算,我们假定已经做了进一步的细化,并确定了该软件包应具有的主要的软件功能,遵照LOC的分解技术,能够得到如表1的估算,表中给出了每个功能的LOC估算范围。

假如三维几何分析功能的估算范围:乐观值――4600,可能值――6900,悲观值――8600,应用公式(1),得到三维几何分析功能的期望值是6800。对LOC估算一列求和,得到该CAD系统的LOC估算值是33200。回顾历史数据可以看书,这类系统的组织平均生产率是620LOC/pm。

3.1.2 基于过程的估算

为了说明基于过程的估算的使用方法,我们再考虑CAD软件的配置和所有软件功能都保持不变,并已在项目范围中说明,如表2,对CAD软件每个功能,都给出了其各个软件工程 活动的工作量估算(人・月)。其中,工程和构造活动又被细分成表中所示的主要软件工程任务。对客户沟通、策划和风险分析活动,给出了总工作量的估算。

3.1.3 基于用例的估算

从以上的功能描述可以看出CAD软件包括三个子系统:

用户界面子系统(包括UICF)。

工程子系统(包括2DGA、3DGA、DAM)。

底层子系统(包括CGDF、PCF)。

用户界面子系统用6个用例来描述,每个用例的场景不超过10个,用例的平均长度为6页。工程子系统用10个用例来描述,每个用例场景不超过20个,用例的平均长度为8页。底层子系统用5个用例来描述,每个用例的场景6个,平均长度为5页。

利用公式 (2),令n=30%,就产生了表3所示的表格,分别算出每个子系统的LOC估算值,最后对估算进行汇总,得到CAD软件总规模的估算值为42500LOC。

表3 用例估算Tab.3 case estimate

3.2 经验模型估算CAD软件

使用经验估算模型中的软件方程式,令P=12000(对科学计算软件的推荐值),分别利用公式(4)(5)

4 相关估算结果分析

假设,一个劳动力价格是每月8000元,则每行代码的成本约为13元。

分解技术中

(1)基于问题的估算:根据LOC估算及历史生产率数据,该项目总成本的估算值是43.1万元,工作量的估算值是54人・月。

(2)基于过程的估算: 对应表2,计算出项目总成本的估算值是368000元,工作量的估算值是46人・月。

(3)基于用例的估算:根据用例估算和产生的历史数据,项目总成本的估算值是552000元,工作量的估算值是68人・月。

对以上三种估算方法进行调和,最低值是46人・月,最高值是68人・月。平均估算值为56人・月。

由此可见,软件方程式得到的结果与上述分解技术调和后的估算大概一致。分解技术采用“分而治之”的方法进行软件项目估算,经验估算模型可以作为分解技术的补充。

5 结束语

对项目作精确的估算时,一般会使用多种技术,通过对不同技术导出的估算值进行比较和调和,计划人员更有可能得到精确的估算。软件项目估算永远不会是一门精确的科学。但是,把可靠的历史数据与系统化的技术结合起来能够提高估算的精确度。

参考文献

[1] 李树明, 等. 软件成本估算方法及应用[J] . 软件学报,2007,( 4) .

[2] Carbone M, Santucci G. Fast & Serious: A UML Based Metric for Effort Estimation[C]//Proc. of the 6th ECOOP Workshop on Quantitative Approaches in Object-oriented Software Engineering. Malaga, Spain: [s. n.], 2002.

[3] Barry W. Boehm, ChrisAbts, A. Winsor Brown. Software cost estimation with COCOMO[M] . Prentice2Hall, July 2000.

[4] Whitmire S A. An Introduction to 3D Function Points[J]. Software Development, 1995, 3(4): 43-53.

[5] Boehm BW. Understanding and controlling software costs[J] .IEEE Trans. on Software Engineering, 1988, 14( 10) : 1462-1477.

[6] Chidamber S R, Kemerer C F. A Metrics Suite for Object Oriented Design[J]. IEEE Transactions on Software Engineering, 1994, 20(6): 476-493.

[7] Gautam Banerjee.Use Case Points -An Estimation Approach[J].Gautam Banerjee,2001(8).

[8] Marsha Pomeroy-Huff, Robert Cannon, Timothy A Chick, et al. The Personal Software ProcessSM(PSPSM) Body of Knowledge,Version 2.0[R]. Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 2009:5-63.

上一篇:某型飞机特种设备虚拟仿真训练系统设计 下一篇:基于vSphere的虚拟计算机实验平台建设探索