软件项目开发工作量估算研究

时间:2022-10-28 09:30:10

软件项目开发工作量估算研究

摘要: 准确的工作量估算是保证软件开发正常进行的必要手段。文中采用功能点估算法,通过对软件结构分解和工作结构的分解,利用COCOMO II 2000模型估算初始功能点数、估算调整后的功能点数,最后将功能点转化为源代码行,为软件开发企业提供了进行软件项目开发工作量估算的基本方法。工作量估算是软件开发企业完成成本估算的前提。

Abstract: Accurate workload estimate is an essential method of guaranteeing software development. Function point analysis is used to estimate software scale. After finishing the software structure disassemble and the project workload disassemble, we use COCOMO II 2000 model to estimate software initialization function points and adjustment function points, also transform function point into KSLOC.Thus a basic method is provided for software development company to process workload estimate. Finishing project workload estimate also is the precondition of software cost estimation.

关键词: 工作量估算;成本估算;COCOMO II;项目管理

Key words: workload estimate;cost estimate;COCOMO II;project management

中图分类号:TP31文献标识码:A文章编号:1006-4311(2011)05-0178-02

0引言

软件工作量估算在软件开发项目中有重要的角色。然而,在现今软件项目的开发建设过程中,前期的工作量估算工作往往在项目管理的过程中得不到足够的重视,具体的估算工作缺乏系统科学的方法,开发单位也没有积累估算经验的意识。在面对一个竞标项目时,往往单凭个体经验估算工作量和成本,导致在软件项目的投标中盲目报价或者盲目杀价,获得项目后在实际的开发工作才发现成本估算不合理,与实际需要工作量的相差较大,最终致使项目开发完成后无利可图甚至亏本。因此,没有合理而准确的软件工作量估算,就无法很好地进行软件项目的管理。

1软件结构分解和工作结构分解

软件结构分解是进行软件工作量估算的第一步,工作结构分解是软件结构分解后做的具体细化工作,其将软件规模转变为项目开发的具体工作量[1]。

现今软件项目的开发模式基本都是面向对象的开发设计。面向对象的开发设计要求在进行结构分解时将软件的功能模块按照用户的需求转化为一个个完成功能实现的对象[2]。可以按照阶梯化的操作方式进行分解。首先明确用户需求,其次从用户需求中分解功能点,然后将功能点细分为项目中实际需要完成的工作包,最后将项目的工作人员分配到工作包中,得出项目实行的结构图。

工作结构分解也是进行项目成本计算的基础,不同的工作结构分解将得出不同的项目成本,比如将开发难度较大的任务分配给新手,就会造成开发效率低下,项目进度延后,项目所耗费的工作量增加,项目成本增加。所以从工作结构分解就可以体现好的项目管理团队对提高开发效率、减少开发工作量、降低开发成本的重要作用。

2COCOMO II 2000软件开发工作量估算模型

COCOMO II 2000模型是Barry W.Boehm教授在2000年重新研究和调整原有的COCOMO模型后,并通过对大量软件开发项目进行评估测算提出的符合未来软件市场发展趋势,用于软件成本估算的新型构造性成本模型[3]。

COCOMO II 2000是实现上述软件项目开发工作量估算的具体工具。其估算方法按照上述原则也划分为两个步骤:其一为功能点划分,其二为工作任务分配。

在COCOMO II 2000中,工作量用人月(PM Person Months)表示,即一个人在一个月内从事软件开发的时间数。根据不同情况,工作量可用标称进度(NS,Nominal―Schedule)表示,也可用调整进度(AS,Adjusted―Schedule)。标称进度公式不包括要求的开发进度(SCED,Required Development Schedule)成本驱动因子。SCED反映项目面临的进度压力[4]。具体计算公式如下:

标称进度工作量PM估算公式为:

PM=A×(Size)×EM(1)

调整进度工作量PM估算公式为:

PM=PM×SCED(2)

COCOMO II模型中规模表示为源代码千行数(KSLOC),在公式(1)中用Size表示。

Size=FP×LOC/fp(3)

FP=IFP×TCF(4)

其中LOC/fp为功能点源代码转换系数,具体值参照模型的《初始功能点数估算表》,FP为调整后的功能点数,IFP为初始功能点数,TCF为技术复杂因子。项目管理人员首先确定开发软件中包含的初始功能点基本数N,然后根据初始功能点数估算表结合以往项目经验判断加权因子。根据公式(5):

IFP=N×加权因子(5)

得出初始功能点数[5]。

对于TCF则是根据公式(6),由14个技术复杂因子加权求和而成。具体加权值可以结合项目经验参考COCOMO II的权重表。

TCF=0.65+0.01×F(6)

完成了软件规模Size的估算后,在成本估算中就需要涉及到规模估算和功能点分配的问题了,根据公式(1):

PM=A×(Size)×M(1)

指数E体现了不同规模的软件项目具有的相对规模经济和不经济性。当E的值大于1时,所需工作量的增加速度大于软件规模的增加速度,体现出规模不经济性;E值小于1时表示规模经济性。指数E的计算公式为:

E=0.91+0.01×SFj(7)

公式中的比例因子SF涉及先例性、开发灵活性、体系结构/风险化解、团队凝聚力、过程成熟度。比例因子涉及到开发规模控制的问题。EM 是工作量乘数,表示成本驱动因子对开发工作量的影响程度。在公式(1)中如果作为乘数的成本驱动因子等级导致更多的软件维护工作量,则相应的EM高于1.0。相反,如果等级减少开发工作量,则相应的EM小于1.0。成本驱动因子涉及到产品、人员、项目和平台四大因素,具体又分为16个小类,这里具体的乘数就涉及到项目管理中的项目管理和功能点任务分配问题。

3利用软件工作量估算模型指导开发团队提高开发效率、降低开发成本

COCOMO II 2000模型不仅可以对软件项目开发工作量进行估算,对于软件公司的项目团队建设,项目管理提升,项目开发成本的降低也有着积极的指导作用。在COCOMO模型中,首先需要确定的是待开发软件的KSLOC(千行代码),因此COCOMO模型要进行准确的成本估算需要等到详细设计阶段结束后,因为只有详细设计完成后,才能根据详细设计的结果对每个模块和类的代码数量和复杂程度进行较准确的估算。根据模型公式,从某种程度上来说,概要设计和详细设计极大的影响了软件开发的成本。比如公式(5)中和功能点相关的加权因子与软件需求确认和概要设计中的功能点划分相关,TCF计算公式(6)中涉及的14个技术复杂因子和详细设计中具体实现有关,功能点转化成开发语言代码行数的系数和项目采用的实现语言有关。在项目管理方面,组织良好的项目团队,高素质的项目管理经理,对降低公式(1)中的16个EM因子也可以起到不可忽视的作用。

从COCOMO II 2000模型中可以看到,参与熟悉的开发领域;稳定开发人员队伍、积累开发力量;进行合理的项目分工、务实的需求分析、简洁高效的项目设计,实施严格的项目开发计划都能够有效的减少项目工作量,降低开发成本,获得合理的项目利润,进一步将软件开发企业带入自身发展的良性循环。

4结束语

COCOMO II 2000模型是进行软件项目工作量估算的一种基本方法,为我们进行具体的估算工作提供了明确的方向和要点。模型中包含了许多重要的计算公式、参数因子和参考数值。文章认为,在软件成本估算中不仅需要具体的模型指导,也需要丰富的经验累积,经验累积越多,相关系数越准确,则估算结果越准确。如果能够建立一个软件成本估算的知识库,对模型中的相关参数因子的参考数值进行积累和调整,不仅可以让软件企业在项目投标中准确的估计自己的工作量,更重要的是,为企业的软件过程改进提供了很好的基础资料。同样,加强对软件估算工作的重视,实现软件开发及管理人才的积累,对于软件企业的发展也有着重要的意义。

参考文献:

[1]熊耀华,陈传波.软件项目工作分解结构模型研究[J].计算机应用研究,2006,(8).

[2]郑明辉.基于UML需求分析模型的软件规模估算方法[J].计算机应用与软件,2004,(3).

[3]Barry W.Boehm,李师贤等译.软件工程经济学[M].北京:机械工业出版社,2004.

[4]高英慧,任永昌,叶景楼.COCOMO模型在软件维护成本及进度估算中的应用[J].渤海大学学报:自然科学版,2007,(1).

[5]加莫斯.赫伦,苏薇,盛轶阳译.功能点分析――成功软件项目的测量实践[M].北京:清华大学出版社,2003.

上一篇:模拟仿真技术在工程造价课程中的应用 下一篇:网络环境下教学模式探讨