技术开发 频道

软件开发过程的定量监理

   2、工作量估算

    估算出软件规模并且对软件的开发周期进行定义后,开始估算软件项目的工作量。软件规模的估算结果是代码量,但是软件项目的开发、实施过程并不是只有编码的工作,实际上编码的工作量在这个过程中是最小的。编写文档、架构设计、系统设计、测试以及实施发布等将占用大量的工作时间。因此,对软件项目工作量的估算就是确定、估算这样一个代码量的项目所需的各种工作,相加得到项目的工作量。从软件规模(代码量)估算出项目工作量主要采用下述的两个方法:

    (1)最好的方法是利用历史数据,根据以前做过的类似项目规模与新项目规模的比例关系,对照以前项目的工作量求出新项目的工作量。

    采用这个方法的前提是:a.对以前项目规模和工作量的计量是正确的;b.至少有一个以前的项目的规模和新项目类似;c.新项目的开发周期、使用的开发方法、开发工具与以前项目的类似,而且开发人员的技能和经验也不能与原来的人员相差太大。

    (2)如果没有历史数据可用,或者新项目与以前做过的项目差别较大,那么可以使用一个成熟的估算模型,如采用IBM模型、COCOMO模型或Putnam方法论,将软件项目规模转换成工作量。

    这些模型通过对大量不同类型组织已完成项目进行研究,得出的项目规模与工作量之间的关系和转换方法。这些行业性的模型可能不如自己的历史数据精确,但是非常有效。目前,还没有一种估算模型能够适用于所有的软件类型和开发环境,在监理活动中,从这些模型得到的结果必须根据项目的实际情况慎重使用,或者采用多个模型进行估算、掌握工作量的基本范围并与实际的工作量计划比较。

    下面以IBM模型为例来进行计算。为了计算,我们应当利用逆向法将功能点转化成一个等价的SLOC数值。这一步可以使用表4的语言等价表来完成:


    所以,使用java2完成上述项目(366功能点)时,将大约需要下列SLOC数:

    L=366×46=16386行=16.386KLOC

    E=5.2×L0.91=5.2×16.3860.91=66人/月

    DOC=49×L1.01=49×16.3861.01=826页

    3、制定计划

    对软件项目进行估算的第三步是根据工作量制定项目计划,包括人员安排、工作量分解、开始和完成时间等等。可以根据自己的历史数据或行业模型决定所需的资源并落实到项目计划。可以采用上述的IBM模型或McConnell给出的方法粗略地给出项目持续时间(以IBM模型为例):

    项目需要的人员S=0.54×E0.6=0.54×660.6=7人

    项目持续时间D=4.1×L0.36=4.1×16.3860.36=11月

    4、成本估算

    项目的成本估算包括许多因素:人力成本、办公费用、管理费用、设备和软件等的购置费用、场地租金、旅差费等等。对项目成本的估算取决于公司所采用的成本核算方法。有的公司某些费用并没有计入项目成本中,而是按管理费用等分摊。有的从历史数据求出生产率度量和每行成本,即行/PM(人月)和元/行,则LOC的值与元/行相乘得到成本,用LOC的值与行/PM相除得到工作量。具体可按公司的具体情况选择。

    注:本文作为示例给出的针对进度等的定量监理的估算方法只是众多方法中的一种。笔者的目的是建议监理单位在项目监理过程中根据实际情况适当采用定量的方法。更多的估算方法,可以参考有关软件评估方面的书籍和其它资料。

    几种估算模型的介绍

    1、IBM模型

    1977年,IBM的Walston和Felix提出了如下的估算公式:

    E=5.2×L0.91,L是源代码行数(以KLOC计),E是工作量(以PM计)

    D=4.1×L0.36,D是项目持续时间(以月计)

    S=0.54×E0.6,S是人员需要量(以人计)

    DOC=49×L1.01。DOC是文档数量(以页计)

    在此模型中,一般指一条机器指令为一行源代码。一个软件的源代码行数不包括程序注释、作业命令、调试程序在内。对于非机器指令编写的源程序,如汇编语言或高级语言程序,应转换成机器指令源代码行数来考虑。

    2、Putnam模型

    这是1978年Putnam提出的模型,是一种动态多变量模型。它是假定在软件开发的整个生存期中工作量有特定的分布。这种模型是依据在一些大型项目(总工作量达到或超过30个人年)中收集到的工作量分布情况而推导出来的,但也可以应用在一些较小的软件项目中。

    Putnam模型可以导出一个“软件方程”,把已交付的源代码(源语句)行数与工作量和开发时间联系起来。其中,td是开发持续时间(以年计),K是软件开发与维护在内的整个生存期所花费的工作量(以人年计),L是源代码行数(以LOC计),Ck是技术状态常数,它反映出“妨碍程序员进展的限制”,并因开发环境而异。其典型值的选取如下表所示。

 


    3、COCOMO模型(COnstructiveCOstMOdel)

    这是由TRW公司开发。Boehm提出的结构型成本估算模型,是一种精确、易于使用的成本估算方法。在该模型中使用的基本量有以下几个:DSI(源指令条数)定义为代码或卡片形式的源程序行数。若一行有两个语句,则算做一条指令。它包括作业控制语句和格式语句,但不包括注释语句。KDSI=1000DSI。MM(度量单位为人月)表示开发工作量。TDEV(度量单位为月)表示开发进度。它由工作量决定。


    (1)软件开发项目的分类

    在COCOMO模型中,考虑开发环境,软件开发项目的总体类型可分为三种:组织型(Organic)、嵌入型(Embedded)和介于上述两种软件之间的半独立型(Semidetached)。

    (2)COCOMO模型的分类

    COCOMO模型按其详细程度分成三级:即基本COCOMO模型、中间COCOMO模型、详细COCOMO模型。基本COCOMO模型是一个静态单变量模型,它用一个以已估算出来的源代码行数(LOC)为自变量的(经验)函数来计算软件开发工作量。中间COCOMO模型则在用LOC为自变量的函数计算软件开发工作量(此时称为名义工作量)的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。详细COCOMO模型包括中间COCOMO模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计等)的影响。

0
相关文章