📜  软件工程 |可可模型

📅  最后修改于: 2022-05-13 01:56:59.645000             🧑  作者: Mango

软件工程 |可可模型

Cocomo(建设成本模型)是基于 LOC 的回归模型,即代码行数。它是软件项目的程序成本估算模型,通常用作可靠地预测与项目相关的各种参数的过程,例如大小、工作量、成本、时间和质量。它由 Barry Boehm 于 1981 年提出,基于对 63 个项目的研究,这使其成为记录最好的模型之一。

定义任何软件产品质量的关键参数,也是 Cocomo 的结果,主要是努力和进度:

  • 努力:完成一项任务所需的劳动量。它以人月为单位来衡量。
  • 进度表:简单来说就是完成一项工作所需要的时间,当然也和投入的努力成正比。它是以时间为单位来衡量的,比如周、月。

已经提出了不同的 Cocomo 模型来根据所需的准确性和正确性来预测不同级别的成本估算。所有这些模型都可以应用于各种项目,其特性决定了在后续计算中使用的常数值。下面提到了与不同系统类型有关的这些特性。

Boehm 对有机、半分离和嵌入式系统的定义:

  1. 有机的——如果所需的团队规模足够小,问题得到很好的理解并且过去已经解决,并且团队成员对问题有名义上的经验,那么软件项目就被称为有机类型。
  2. 半独立式——如果团队规模、经验、各种编程环境的知识等重要特征介于有机和嵌入式之间,则软件项目被称为半独立式。与有机项目相比,被归类为半独立式的项目相对来说不太熟悉和难以开发,需要更多的经验和更好的指导和创造力。例如:编译器或不同的嵌入式系统可以被认为是半分离类型。
  3. 嵌入式——需要最高级别的复杂性、创造力和经验要求的软件项目属于这一类。此类软件需要比其他两种模型更大的团队规模,并且开发人员需要有足够的经验和创造力来开发这种复杂的模型。

    上述所有系统类型都使用了在努力计算中使用的不同常数值。

    模型类型: COCOMO 由三个越来越详细和准确的表格的层次结构组成。根据我们的要求,可以采用这三种形式中的任何一种。这些是 COCOMO 模型的类型:

    1. 基本 COCOMO 模型
    2. 中级 COCOMO 模型
    3. 详细的 COCOMO 模型

    第一级, Basic COCOMO可用于快速且稍微粗略地计算软件成本。由于缺乏足够的因素考虑,其准确性受到一定限制。

    Intermediate COCOMO将这些成本驱动因素考虑在内,而Detailed COCOMO还考虑了各个项目阶段的影响,即在Detailed 的情况下,它同时考虑了这些成本驱动因素,并且计算也分阶段执行,从而产生更准确的结果。下面将进一步讨论这两个模型。

    工作量估算:计算 –

    1. 基本模型 -

         E= a(KLOC)^b

        time= c(Effort)^d

        Person required = Effort/ time

      上述公式用于基本 COCOMO 模型的成本估算,也用于后续模型。不同系统类别的基本模型的常数值 a、b、c 和 d:

      Software Projectsabcd
      Organic2.41.052.50.38
      Semi Detached3.01.122.50.35
      Embedded3.61.202.50.32

      工作量以人-月来衡量,从公式中可以明显看出,这取决于代码的千行。
      开发时间以月为单位。

      这些公式在基本模型计算中就这样使用,因为没有过多考虑可靠性、专业知识等不同因素,因此估计是粗略的。

      下面是 Basic COCOMO 的 C++ 程序

      // C++ program to implement basic COCOMO
      #include
      using namespace std;
        
      // Function for rounding off float to int
      int fround(float x)
      {
          int a;
          x=x+0.5;
          a=x;
          return(a);
      }
        
      // Function to calculate parameters of Basic COCOMO
      void calculate(float table[][4], int n,char mode[][15], int size)
      {
          float effort,time,staff;
        
          int model;
            
          // Check the mode according to size
            
          if(size>=2 && size<=50)
              model=0;        //organic
            
          else if(size>50 && size<=300)
              model=1;        //semi-detached
            
          else if(size>300)
              model=2;        //embedded
        
          cout<<"The mode is "<
      输出:
      The mode is Organic
      Effort = 10.289 Person-Month
      Development Time = 6.06237 Months
      Average Staff Required = 2 Persons
      
    2. 中间模型 –

      基本的 Cocomo 模型假设工作量只是代码行数和根据不同软件系统评估的一些常数的函数。然而,实际上,任何系统的工作量和进度都不能仅根据代码行来计算。为此,各种其他因素,如可靠性、经验、能力。这些因素被称为成本驱动因素,中间模型利用 15 个这样的驱动因素进行成本估算。

      成本动因的分类及其属性:

      (i) 产品属性——

      • 所需的软件可靠性范围
      • 应用程序数据库的大小
      • 产品的复杂性

      (ii) 硬件属性——

      • 运行时性能约束
      • 内存限制
      • 虚拟机环境的波动
      • 所需周转时间

      (iii) 人员属性——

      • 分析师能力
      • 软件工程能力
      • 应用经验
      • 虚拟机体验
      • 编程语言经验

      (iv) 项目属性——

      • 软件工具的使用
      • 软件工程方法的应用
      • 所需的开发时间表
      Cost DriversVery LowLowNominal

      ;

      HighVery High
      Product Attributes
      Required Software Reliability0.750.881.001.151.40
      Size of Application Database0.941.001.081.16
      Complexity of The Product0.700.851.001.151.30
      Hardware Attributes
      Runtime Performance Constraints1.001.111.30
      Memory Constraints1.001.061.21
      Volatility of the virtual machine environment0.871.001.151.30
      Required turnabout time0.941.001.071.15
      Personnel attributes
      Analyst capability1.461.191.000.860.71
      Applications experience1.291.131.000.910.82
      Software engineer capability1.421.171.000.860.70
      Virtual machine experience1.211.101.000.90
      Programming language experience1.141.071.000.95
      Project Attributes
      Application of software engineering methods1.241.101.000.910.82
      Use of software tools1.241.101.000.910.83
      Required development schedule1.231.081.001.041.10

      项目经理将针对特定项目对这 15 个不同的参数进行评分,评分范围为 1 到 3。然后,根据这些评级,从上表中获取适当的成本动因值。然后将这 15 个值相乘以计算 EAF(努力调整因子)。中间 COCOMO 公式现在采用以下形式:

         E= (a(KLOC)^b)*EAF

      在中间模型的情况下a和b的值如下:

      Software Projectsab
      Organic3.21.05
      Semi Detached3.01.12
      Embeddedc2.81.20
    3. 详细模型 –
      详细的 COCOMO 将中间版本的所有特征与成本驱动因素对软件工程过程每个步骤的影响的评估相结合。详细模型对每个成本动因属性使用不同的工作量乘数。在详细的 cocomo 中,将整个软件分为不同的模块,然后我们在不同的模块中应用 COCOMO 来估算工作量,然后对工作量求和。

      详细COCOMO的六个阶段是:

      1. 规划和要求
      2. 系统设计
      3. 详细设计
      4. 模块代码和测试
      5. 集成和测试
      6. 成本建设模型

      工作量是作为程序规模的函数来计算的,并且根据软件生命周期的每个阶段给出了一组成本驱动因素。

    另请阅读:经典瀑布模型、迭代瀑布模型、原型模型、螺旋模型