软件项目管理 第六讲 软件度量

什么是软件度量?

  1. 软件度量(Metrics)是指对软件产品、软件开发过程或者资源的简单属性定量描述。
    产品:软件开发过程中所生成的各种文档和程序。
    过程:与软件开发有关的各种活动,如软件设计等。
    资源:软件开发过程中所需支持,如人员、费用等。
  2. 软件测量(Measure)是对软件产品、软件开发过程和资源复杂属性定量描述,它是简单属性度量值的函数,软件测量用于事后或实时状态, 如软件可靠性。
  3. 估算(Estimation)对软件产品、软件开发过程和资源复杂属性的定量描述,它是简单属性度量值的函数,软件估算用于事前, 如软件开发成本。

为什么需要软件度量?

  1. 项目实施过程中
    提供软件开发的可视性;
    跟踪和控制软件项目的开发;
    评估软件开发质量,进行质量控制;
    加强风险管理。
  2. 项目实施之后
    对项目的实施情况进行评估;
    为后续项目的积累经验数据。

软件度量的内容

  1. 三个方面
    产品:各种文档和程序;
    过程:各种软件开发活动;
    资源:各种资源如人员、费用等;

  2. 两个层次
    软件项目管理 第六讲 软件度量

软件度量的方法

  1. 分解方法,采用“分而治之”的策略,对软件项目进行分解,再采用逐步求精的方式进行估算,最后通过累加获得整体的估算结果。(WBS方法)
  2. 算术模型,通过估算模型来产生估算。
  3. 专家判断或经验法,如德尔菲法(Delphi technique)。
  4. 比例法是比较科学的一种传统估算方法,是基于类比的估算技术,根据过去类似的项目,直接进行类比获得当前项目的估算结果。

面向规模的度量

用软件代码行数目来表示软件项目规模

  1. 优点
    简单易行,自然直观。
  2. 缺点
    依赖于程序设计语言的表达能力和功能;
    软件开发初期很难估算出最终软件的代码行数;
    对精巧的软件项目不合适;
    只适合于过程式程序设计语言。

面向功能的度量

用软件的功能表示软件的规模

  1. 功能点计算方法
    FP = (0.65 + 0.01×Fi)×CT
    CT : 5个信息量的“加权和”;
    Fi: 14个因素的“复杂性调节值” (i =1…14);
    0.65, 0.01都是经验常数。

  2. CT的计算方法
    用户输入数×加权因子(简单=3,平均=4,复杂=6)
    用户输出数×加权因子(简单=4,平均=5,复杂=7)
    用户查询数×加权因子(简单=3,平均=4,复杂=6)
    文件数×加权因子(简单=7,平均=10,复杂=15)
    外部界面数×加权因子(简单=5,平均=7复杂=10)

    CT = 上述计算值的总和

  3. Fi的取值(0,1,2,3,4,5):0-没有影响,1-偶有影响,2-轻微影响,3-平均影响,4-较大影响,5-严重影响

  4. 优点
    与程序设计语言无关, 在开发前就可以估算出软件项目的规模(事前)。

  5. 不足
    没有直接涉及算法的复杂度,不适合算法比较复杂的软件系统;
    功能点计算主要靠经验公式,主观因素比较多;
    数据不好采集。

项目成本和工作量估算

  1. 专家估算法
    由多位专家进行成本估算,一个专家可能会有偏见,最好由多位专家进行估算,取得多个估算值,最后得出综合的估算值。
  2. 经验估算模型

什么是CoCoMo模型?

  1. COCoMo是指Constructive Cost Model,构造性成本模型,巴利·玻姆(Barry Boehm)于1981年提出,用于对软件开发项目的规模、成本、进度等方面进行估算
    CoCoMo模型是一个综合经验模型,模型中的参数取值来至于经验值,并且综合了诸多的因素、比较全面的估算模型
    比较实用、可操作,在欧盟国家应用较为广泛

  2. CoCoMo模型的层次 - 支持不同的阶段
    2.1 基本COCoMo模型
    系统开发的初期,估算整个系统的工作量(包括维护)、软件开发和维护所需的时间
    2.2 中间COCoMo模型
    估算各个子系统的工作量和开发时间
    2.3 详细COCoMo模型
    估算独立的软构件,如各个子系统的各个模块的工作量和开发时间

软件质量度量

  1. 软件质量度量的重要性
    质量是软件的生命,质量不高的软件会带来严重、甚至灾难性的后果
    必须加强对软件质量的管理和监控,如ISO9001和CMM
    必须在软件开发过程中能够可视所开发软件的质量
  2. 软件质量度量存在的困难
    软件质量依赖于软件的内部特性及其组合
    这些特性难以度量

在软件质量模型中,比较有代表性的有McCall提出的软件质量模型。

McCall的软件质量度量模型

  1. 质量要素
    定义了与软件质量相关联的一些要素
  2. 质量要素的评价准则
    定义了能够对质量要素进行度量的一些准则
  3. 软件质量的度量
    定义了如何基于对质量要素的定量描述对软件质量进行度量的方法
    软件项目管理 第六讲 软件度量

在软件开发过程中进行软件度量

小结