zoukankan      html  css  js  c++  java
  • 软件开发工作量的估算方法

    在讨论软件工作量估算方法前,首先要清楚什么事软件工作量估算。

    我理解的工作量估算,就是估算软件项目所耗费的资源数,这个资源包含人力和时间,一般用人天、人月的形式来衡量。(而软件的成本=耗费的资源*资源的单价)。而且我个人觉得软件工作量与软件规模是不等的,规模是指大小是固定的,而一个软件开发的工作量与许多因素有关,如公司的效率啊,参与开发人员的编程水平等。

     从估算单位角度来说,工作量估算的方法分为两类:直接估算法和间接估算法。直接法指基于WBS的工作量估算方法,直接估算出人天工作量;间接估算法是先估算软件规模,再转换成人天工作量。根据估算角度的不同,间接法又分为基于代码行(SLOC)的工作量估算方法和基于功能点(FP)的工作量估算方法。。

     1、基于WBS的工作量估算

    基于WBS的工作量估算方法,是最常见的一种估算方法,也是厂商最常用的。基于WBS的工作量的估算方法,又称为由底向上法(自下而上法),通常的估算步骤如下:
    1)寻找类似的历史项目,进行项目的类比分析,根据历史项目的工作量凭经验估计本项目的总工作量;
    2)进行WBS分解,力所能及地将整个项目的任务进行分解;
    3)参考类似项目的数据,采用类比法或专家法,估计WBS中每类活动的工作量;
    4)汇总得到项目的总工作量;
    5)与第1)步的结果进行印证分析,根据分析结果,确定估计结果。

    2、基于代码行的工作量估算
    基于代码行(SLOC)的工作量估算,是从开发者的技术角度出发来度量软件。代码行数是软件开发者最早进行规模测量的主要方法。进行工作量估算时,先采用WBS法、类比法等统计出软件项目的代码行数,然后将代码行数转换为人天数。其中,将代码行(SLOC)转换成人天数主要有2种方法。
    (1)生产率方法:要求有开发商每人天开发的代码行数,估算出代码行数后,直接利用代码行数÷SLOC/人天,即得工作量人天数。
    (2)参数模型法:利用模型,将代码行数转换成人天数。
    常见的模型有:
        Putnam模型
          Putnam1978 年提出的一种动态多变量模型。估算工作量的公式是:K = L^3/(Ck^3*td^4)

    其中:L 代表源代码行数(以行计),K代表整个开发过程所花费的工作量(以人年计),td 表示开发持续时间(以年计),Ck表示技术状态常数,它反映“妨碍开发进展的限制”,取值因开发环境而异。
        COCOMOⅡ模型
         COCOMOⅡ模型指出,软件开发工作量与软件规模呈指数关系,并且工作量受16个成本驱动因子的影响。COCOMO Ⅱ的计算步骤如下:
         1)估算软件规模Size,这里以千代码行(KSLOC)计。
         2)评估比例因子SF,求指数E。
         3)求成本驱动因子值EMi。求标称进度工作量PM:

        IBM模型
        IBM模型是1977年IBM公司的Walston和Felix提出的。其中估算工作量的公式如下:E=5.2×L^0.91 ,L是源代码行数(以千行计),E是工作量(以人月计)

    3、基于功能点的工作量估算
    基于功能点(FP)的工作量估算,是从用户的角度来度量软件。进行工作量估算时,先估计出软件项目的功能点数,然后将功能点数(FP)转换为人天数。其中,估算功能点数的主要方法有3种:IFPUG法、MarkⅡ法、COSMIC FFP法。这三种方法现在都已经成为国际标准,并有详细的操作手册。
    将功能点(FP)转换成人天数主要有2种方法。
    1)生产率法:要求有开发商每人天开发的功能点数,估算出功能点数后,直接利用功能点数÷功能点/天,即得工作量人天数。对于开发商每人天开发的功能点数,SPR有统计,中国的值大约在5.5个功能点/人月。
    2)经验模型法
       可以依照本企业的历史数据得到关于功能点和工作量的统计方程;也可以采用已有的经验模型,例如:COCOMOⅡ模型

  • 相关阅读:
    [LeetCode] Wildcard Matching, Solution
    [LeetCode] Add Binary 解题报告
    [LeetCode] Validate Binary Search Tree 解题报告
    [LeetCode] ZigZag Conversion 解题报告
    [LeetCode] Best Time to Buy and Sell Stock II Solution
    [LeetCode] Anagrams 解题报告
    [LeetCode] Word Search 解题报告
    【转载】git/github初级运用自如
    关于实训的那点事儿
    【转载】解决git Push时请求username和password,而不是sshkey验证
  • 原文地址:https://www.cnblogs.com/yzbt/p/5266759.html
Copyright © 2011-2022 走看看