当前位置: 首页 > news >正文

掌握软件工程基础:知识点全面解析【chap02】

chap02 软件项目管理

1.代码行度量与功能点度量的比较

1.规模度量

是一种直接度量方法。

代码行数   LOCKLOC

             生产率

               P1=L/E

     其中  L   软件项目代码行数

              E   软件项目工作量(人月  PM)

              P1  软件项目生产率(LOC/PM)

代码出错率            

            EQR1=Ne/L    

 其中    Ne     软件项目的代码错误数

            EQR1   每千行代码的错误数

每行代码平均成本

           C1=S/L

    其中  软件项目总开销(元/美元)

               C软件项目每行代码的平均成本

文档与代码比

          D1=Pd/L

    其中 Pd  软件项目文档页数

            D1  每千行代码的平均文档数

用软件代码行数估算软件规模简单易行

缺点

代码行数的估算依赖于程序设计语言的功能和表达能力;

采用代码行估算方法会对设计精巧的软件项目产生不利的影响;

在软件项目开发前或开发初期估算它的代码行数十分困难

代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等等。

2.面向功能的度量

涉及多因素的间接度量方法,在欧共体使用较多。          

   FP=CT*[0.65+0.01*∑Fi]        (2-5)

   其中:CT按表2.3计算

                 Fi 是复杂性调节值

                 Fi 取值 0,1,...,5  

                当 Fi = 0 时,表示 Fi 不起作用

                         Fi = 5 时,表示 Fi 作用最大

2.3  功能点度量

测量参数    权值
用户输入数     *4=
用户输出数     *5=
用户查询数     *4=
文件数*7=
外部界面数*7=
CT=

2.3中的五个信息量按下列方式取值

u 用户输入数   用户为软件提供的输入参数个数
u 用户输出数   软件系统为用户提供的输出参数个数
u 用户查询数   一个联机输入确定一次查询,软件以联机输出的形式,实时地产生一个响应
u 文件数           统计逻辑的主文件个数
u 外部界面数   统计所有机器可读的界面,利用这些界面可将信息从一个系统传送到另一个

计算技术复杂性因子TCF(了解)

Fi(1≤i≤14)的取值为:(0(不存在或对软件规模无影响)-5(有很大影响))

用功能点定义的概念

生产率

                    Pf=FP/E         (2-6)

  其中Pf表示每人月完成的功能点数

软件规模的功能点度量没有直接涉及软件系统本身的算法复杂性。1986年Jones把软件项目中的算法复杂性因素引入到功能点计算中来,为了避免混淆,我们把Albrecht定义的功能点称为简单功能点,用FPs表示,把Jones推广的功能点称为功能点,用FP表示。推广的功能点包括计算机程序中用于各类问题求解的算法因素,如求解线性代数方程组、遍历二叉树的各个结点、处理中断等等。功能点计算仍用公式(2-5),其中CT按表2.5计算。

2.5  功能点度量

测量参数    权值
用户输入数    *4=
用户输出数    *5=
用户查询数    *4=
文件数*7=
外部界面数*7=
算法*3=
CT=

优点

①与程序设计语言无关,它不仅适用于过程式语言,也适用于非过程式的语言;

②软件项目开发初期就能基本上确定系统的输入、输出等参数,功能点度量能用于软件项目的开发初期。

缺点

①它涉及到的主观因素比较多,如各种权函数的取值;

②信息领域中的某些数据有时不容易采集;

FP的值没有直观的物理意义。

3.代码行度量与功能点度量的比较

  1. 代码行度量依赖于程序设计语言,而功能点度量不依赖于程序设计语言。
  2. AlbrechtJones等人对若干软件采用事后处理的方式分别统计出不同程序设计语言每个功能点与代码行数的关系,用LOC/FP的平均值表示。
  3. 2.6表明,一行Ada语言代码的功能平均是一行FORTRAN语言代码功能1.4倍。一行四代语言代码的功能平均是一行传统程序设计语言代码功能35倍.

2.6  各种语言的LOC/FP(平均值)

程序设计语言

LOC/FP(平均值)

汇编语言300
COBOL 100
FORTRAN100
Pascal90
Ada70
面向对象的语言        30
四代语言(4GL)                     20
代码生成器15

2.软件项目估算中的通讯工作量如何计算?

常用的估算方法

①参照已经完成的类似项目估算待开发项目的成本和工作量。

②将大的项目分解成若干子项目,在估算出每个子项目成本和工作量之后,再估算整个项目。

③将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,然后再把这些工作量和成本汇总估算整个项目。

④根据实验或历史数据给出软件项目工作量或成本的经验估算公式。

软件项目的规模是影响软件项目成本和工作量的重要因素。

软件项目代码行和功能点估算是成本和工作量估算的基础。

采用上述四种估算方法可以估算出LOC FP 乐观值 a 悲观值 b 和一般值 m 然后根据下列加权公式计算出期望值

       e=(a+4m+b)/6          (2-10)

  希望LOCFP的值落在区间[a,b之外的概率极小

当LOCFP的期望值估算出来之后,根据以前软件项目开发的平均生产率LOC/PMFP/PM就可以计算出工作量。

        如,软件项目的规模估算为310FP以前完成的软件项目的生产率为5.5FP/PM于是工作量估算为E=310/5.5=56PM

如果当前估算的软件子项目比以前完成的项目 复杂 ,那么所用的生产率值可以 低于平均生产率 ,反之也可以高于平均生产率。

经验估算模型之一  CoCoMo模型

1981年 Boehm 提出“构造性成本模型”( Constructive  Cost Model), 简称 CoCoMo 模型。它是在 静态、单变量模型 的基础上构造出来的。
CoCoMo模型分为 基本、中间、详细 三个层次,分别用于软件开发的三个不同阶段。
基本CoCoMo模型  用于系统开发的初期,估算整个系统的工作量(包括软件维护)和软件                                开发所需要的时间。
中间CoCoMo模型  用于估算各个子系统的工作量和开发时间。
详细CoCoMo模型  用于估算独立的软部件,如子系统内部的各个模块。
1 基本CoCoMo模型

静态、单变量模型

                E =  aL^b                      (2-11)

                D =  cE^d                      (2-12)

其中:E表示工作量,单位是人月(PM)

              D表示开发时间,单位是月(M)

              L是项目的代码行估计值,单位是千行代码

              a,b,c,d是常数,取值如表2.9所示。

  Boehm把软件划分为组织型、半独立型和嵌入型三类,允许不同应用领域和复杂程度的软件按照三类软件的适用范围选取相应的参数a,b,c,d

软件类型     abcd适用范围
组织型2.41.052.50.38         各类应用程序
半独立型3.01.122.50.35

各类实用程序、编译程序等

嵌入型3.61.202.50.32

实时处理、控制程序、操作系统

中间CoCoMo模型

以基本CoCoMo模型为基础,在工作量估计公式中乘以工作量调节因子 EAF

                E = aL^b *EAF         (2-13)

其中:L是软件产品的目标代码行数

              a,b是常数,取值如表2.10所示。

工作量调节因子(EAF)与软件产品属性、计算机属性、人员属性、项目属性有关

² 软件产品属性   

      软件可靠性、软件复杂性、数据库的规模。

² 计算机属性

      程序执行时间、程序占用内存的大小、软件开发环境的变化、软件开发环境的响应速度。

² 人员属性  

      分析员的能力、程序员的能力、有关应用领域的经验、开发环境的经验、程序设计语言的经验

² 项目属性     

      软件开发方法的能力,软件工具的质量和数量、软件开发的进度要求。

COCOMOⅡ模型调节要素和调节因子的范围

例题:

2.7   代码行和成本、工作量估算

功能乐观 LOC一般 LOC悲观 LOC加权平均 LOC$/LOCLOC/PM成本 ($)工作量 (人月)
用户界面控制179024002650234014315327607.4
二维几何分析40805200740053802022010760024.4
三维几何分析46006900860068002022013600030.9
数据库管理2900340036003350182406030013.9
图形显示39004900620049502220010890024.7
外设控制1990210024502140281405992015.2
设计分析66008500980084001830015120028
总计33360656680144.5

在例2.2中,目标代码行数为 33.3 KLOC

CAD软件开发属于中等规模、半独立型

     从表2.9中查到a=3.0b=1.12

         代入公式(2-11)

                     E = 3.0*L^1.12

                         = 3.0*33.3^1.12

                         = 152 PM

E的估算值代入公式 (2-12)

  取  C=2.5         d=0.35

           D=2.5*E^0.35

              =2.5*152^0.35

              =14.5 M

  建议参加项目开发的人数

           N=E/D=152/14.511

重点

若干人共同开发一个软件项目还应该增加他们之间相互通信和交换意见的额外工作量。

         设N个程序员组成小组,实现相同规模的程序,相互通信数为

C=N(N-1)/2

每次通信和交换意见的平均工作量为μ

则增加的通信开销为

                                 Ec=μN(N-1)/2             (2-14)

例题

3人和5人开发一个程序相互通信和交换意见的关系如图2.2所示

      将N=3N=5分别代入公式(2-14)

 Ec(3)=μ3(3-1)/23μ  

 Ec(5)=μ5(5-1)/210μ

3.CMM和CMMI模型

1. CMM的能力成熟度级别及关键过程域

CMM 的能力成熟度共分五级, L1初始级、L2可重复级、L3己定义级、L4己管理级、L5优化级

(1) L1初始级(initial)

    初始级的软件开发组织几乎没有软件过程管理,软件开发是无序和混乱的,软件开发过程是不稳定的,软件项目的成功取决于开发精英个人或小组对软件过程的理解和努力。

       (2) L2可重复级(repeatable)

可重复级的软件开发组织
为了跟踪软件开发过程的进度、成本和产品功能,根据自身的经验和实际情况建立了基本的项目管理体系
制订了基本的软件过程管理和控制措施。这些措施包括:必要的规章制度和纪律、软件开发过程的论证和定义、人员的分工和培训、软件过程的阶段评审並用评审结果指导下一步的工作等。
软件开发组织能够重复以前开发类似软件项目取得的成功。

可重复级的关键过程域包括:需求管理、软件项目计划、项目跟踪和监督、分包合同管理、软件质量保证、软件配置管理。

        (3) L3己定义级(defined)

  1. 将管理和工程两方面的软件过程标准化、文档化和制度化。
  2. 软件开发组织己建立自己的软件过程标准,该组织承制的所有软件项目都使用自己的软件过程标准或根据项目需要剪裁一个子集。
  3. 项目使用的软件过程标准称为项目定义的软件过程。
  4. 已定义级的软件组织进行的软件过程应该是标准的、一致的和稳定的,软件开发过程中能对项目的成本、进度和产品的功能、质量进行跟踪和控制。
  5. 已定义级的关键过程域涉及项目和组织两方面,内容包括:组织级过程焦点、组织级过程定义、培训大纲、综合软件管理、软件产品工程、小组协调、同行评审。

        (4) L4己管理级(managed)

重视软件度量、注意采集软件过程和产品质量的度量值、对软件过程和产品有定量的理解,并以此为基础进行决策和控制。 关键领域包括:定量的过程管理、软件质量管理。

(1) 定量的过程管理(quantitative process management)

定量地控制项目的软件过程能够达到的实际结果,从而得到一个稳定的、可定量预测的过程。

(2) 软件质量管理(software quality management)

    软件质量管理以产品为中心。目标是定量的评价软件产品的质量,实现具体的质量目标,满足客户和最终用户的需要。

        (5) L5优化级(optimizing)

  1. 重视并利用软件开发和维护过程中的反馈值进行过程和产品质量的定量控制,         
  2. 关键领域:缺陷的预防、技术更新管理、过程变更管理。

2.能力成熟度模型集成CMMI

1) L2可重复级

(1) 需求管理 REQM

      管理项目的产品需求和产品构件需求。

(2) 项目计划 PP

      制定和维护定义项目活动的计划。

(3) 项目监督和控制 PMC

      按计划监督项目,管理、纠正存在的问题。

(4) 供应商合同管理 SAM

      建立并执行供应商合同。

(5) 度量和分析 MA

     度量和分析过程的目的是,开发和维护项目信息管理需要的度量能力。

(6) 过程和产品质量保证 PPQA

     客观的评价过程及其相关的工作产品,并将报告和记录提供给项目成员和管理部门。

(7) 配置管理 CM

     利用配置标识、配置控制、配置状态报告、配置审计保持工作产品的完整性。

2) L3己定义级

(1) 需求开发 RD

      生成和分析客户、产品和产品构件的需求。

(2) 技术解决方案 TS

     根据“需求”开发、设计和实现问题求解方案,包括:产品、产品构件和开发产品的相关过程。

(3) 产品集成 PI

     对产品构件进行组装,生成最终产品并交付给客(用)户。

(4) 验证 VER

       确保选择的工作产品满足特定的需求。

(5) 确认 VAL

        证实产品或产品构件置于预期环境时能够满足预期的用途。

(6) 组织级过程焦点 OPF

       建立和维护对组织的过程和过程资产的理解。

(7) 组织级过程定义 OPD

      建立和维护组织级可用的过程资产集。

(8) 组织级培训 OT

      增加开发人员的技能和知识,提高他们完成本职工作的能力和有效性。

(9) 集成化项目管理 IPM

      按照集成化、己定义的过程,管理项目和项目的参与人员。

(10) 风险管理 RSKM

      标识软件生命周期中潜在的问题,采取必要措施缓解风险的影响。

(11) 集成化的团队 IT

    为完成项目产品的开发和维护,在组织内将人员按照某种原则和分工,系统的建立任务组。

(12) 决策分析和解决方案 DAR

    利用结构化方法、制定标准的评价方案并进行决策。

(13) 组织级集成环境 OEI

     建立IPPD的组织级平台和过程资产。

3) L4己管理级

(1) 组织级过程性能 OPP

    对组织标准过程集的性能给出定量的描述,提供过程性能数据、基线和模型,对组织的项目实施定量的管理。

(2) 项目定量管理 QPM

    为达到己定义项目的质量和性能指标,对项目过程进行定量管理。

4) L5优化级

(1) 组织级改革和实施 OID

        选择和实施改革、创新活动,改善组织的过程和技术,并能够量化和度量。

(2) 因果分析和解决方案 CAR

        标识产生缺陷和问题的原因,并采取措施预防这些问题再次发生。

4.结构图复杂性度量值V(G)的确定

McCabe 用程序控制结构图的巡回秩数V(G) (Cyclomatic Complexity)作为程序结构复杂性的度量 

                    V(G) = e-n+2           (2-20)

        其中:e为结构图的边数

                  n为结构图的结点数

可以证明 V(G) 等于结构图中有界或无界的封闭区域个数

例题:

计算程序控制结构的V(G)

E = 1                                                               E = 3

N = 2                                                               N = 3

V = 1                                                                V = 2

E = 4                                                                 E = 3

N = 4                                                                 N = 3

V = 2                                                                 V = 2

计算程序控制结构的V(G)

E = 6

N = 5

V = 3

习题

⼀、单项选择

1.软件项⽬管理必须( )介⼊。
A )从项⽬的开头 B)在可⾏性研究之后 C)在需求分析之后 D)在编码之后

解析:软件项目管理应当自项目启动之初就介入,以确保项目规划、组织、资源分配和风险管理等各方面工作能够系统化、协调化地进行。早期介入有助于识别和解决潜在问题,确保项目按计划推进。
2. 下列选项中,属于成本管理的主要任务的是( )。
A )⼈员的分⼯   B)估算软件项⽬的成本
C)对控制软件质量要素  D)对软件阶段产品进⾏评审

解析:成本管理的主要任务包括成本估算、预算编制和成本控制。估算项目的成本是成本管理的核心,旨在预测项目所需的资源和资金,以便进行有效的财务规划和控制。

3.下列选项中,不属于质量管理的主要任务的是( )。
A )制定软件质量保证计划 B)按照质量评价体系控制软件质量要素
C)增加软件产品的功能 D)对最终软件产品进⾏确认

解析:质量管理关注的是确保软件产品满足既定的质量标准和用户需求,包括制定质量保证计划、控制质量要素以及最终产品的确认。增加软件功能属于需求分析或功能设计,而非质量管理的直接任务。
4.下列选项中,属于软件配置管理的任务的是( )。
A )⼈员的分⼯ B)估算软件项⽬的成本
C)对软件阶段产品进⾏评审 D)对程序、数据、⽂档的各种版本进⾏管理

解析:软件配置管理的主要任务包括版本管理、变更控制和配置状态记录等,旨在确保软件产品及其相关文档的各个版本得到有效管理和跟踪,以维护软件的完整性和一致性。
5.( )是对产品或过程的某个属性的范围、数量、维度、容量或⼤⼩提供⼀个定量的指示
A )测量 B)度量 C)估算 D)指标

解释:

  • 度量(Measurement):是对事物可量化属性进行测量的过程,它强调的是量化精确。例如,测量长度、重量、时间、温度等。

  • 测量(Measure):通常指测量行为测量方法,是获取度量数据的过程或手段。例如,“进行测量”、“使用尺子测量长度”。它更侧重于动作或方法。

  • 估算(Estimate):是对事物进行粗略的估计或推算,通常在无法进行精确测量或不需要精确测量时使用。例如,估计人数、估计成本等。估算通常带有一定的误差范围。

  • 指标(Index/Indicator):是用于衡量或评价事物某种状态或特征的参考值或标准。例如,GDP是衡量一个国家经济发展水平的指标,CPI是衡量通货膨胀程度的指标。指标通常是基于度量数据计算或得到的。

6.( )是对系统、部件或过程的某⼀特性所具有的程度进⾏的量化测量
A )测量 B)度量 C)估算 D)指标
7.( )是对软件产品、过程、资源等使⽤历史资料或经验公式等进⾏预测
A )测量 B)度量 C)估算 D)指标
8.( )是⼀个度量或度量的组合,它可对软件产品、过程或资源提供更深⼊的理解。
A )测量 B)度量 C)估算 D)指标
9.下列选项中属于产品的内部属性的是( )。
A )模块耦合度 B)软件可靠性 C)软件有效性 D)软件可维护性

解析:内部属性指的是软件内部结构和设计方面的特性,如模块的耦合度、内聚性等。模块耦合度反映了模块之间的依赖关系,是内部属性的典型代表。其他选项如可靠性、有效性和可维护性更多涉及外部质量属性。
10.下列选项中属于过程的外部属性的是( )。
A )⼯作量 B)成本 C)事件 D)计划及进度
11.下列选项中属于资源的外部属性的是( )。
A )经验 B)⼈员 C)⽣产率 D)⼯具
12. 基于代码⾏的⾯向规模的度量⽅法适合于( )。
A )过程式程序设计语⾔和事前度量 B)第四代语⾔和事前度量
C)第四代语⾔和事后度量 D)过程式程序设计语⾔和事后度量

解析:基于代码行(如代码行数)的度量方法适用于过程式语言,因为这些语言的代码结构较为线性,便于事后度量。而第四代语言通常具备更高的抽象度,不适合通过代码行数来度量。
13. 下列说法中,不正确的是( )。
A )功能点度量⽅法与程序设计语⾔有关 B)功能点度量⽅法适合于过程式语⾔
C)功能点度量⽅法适合于⾮过程式语⾔ D)功能点度量⽅法适合于软件项⽬估算

解析:功能点度量方法是一种与具体编程语言无关的度量方法,主要基于软件的功能需求来评估软件规模。因此,选项A的说法是不正确的。
14.下列说法中,不正确的是( )。
A )软件项⽬⼯作量分布曲线不是线性的
B)到开发后期临时增加⼈⼒可加快进度
C)适当推迟交货时间可⼤幅度降低开发⼯作量
D)在软件⽣存周期的不同阶段各类⼈员的参与情况是不同的。
15.在软件质量要素中,程序满⾜需求规格说明及⽤户⽬标的程度指的是( )。
A )完整性 B)可⽤性 C)正确性 D)灵活性

解析:“正确性”指的是软件是否准确地实现了需求规格说明及用户的目标,确保软件功能的实现无误。
16.在软件质量要素中,改变⼀个操作的顺序所需的⼯作量的多少指的是( )。
A )完整性 B)可⽤性 C)正确性 D)灵活性

解析:“灵活性”指的是软件在需求变更时能够适应的能力,如改变操作顺序所需的工作量,体现了软件的适应性和可扩展性。
17.在软件质量要素中,对未授权⼈员访问程序或数据加以控制的程度指的是( )。
A )完整性 B)可⽤性 C)正确性 D)灵活性

解析:“完整性”在信息安全中指的是防止未授权访问和修改,确保程序和数据的准确性和一致性。
18.在软件质量要素中,学习使⽤软件(即操作软件、准备输⼊数据、解释输出结果等)的
难易程度指的是( )。
A )完整性 B)可⽤性 C)正确性 D)灵活性

解析:“可用性”指的是用户在使用软件时的便利性和易学性,包括操作的简便程度、界面友好性等。
19. 在软件质量要素的评价准则中,程序源代码的紧凑程度指的是( )。
A )简单性 B)准确性 C)简明性 D)执⾏效率
20.在软件质量要素的评价准则中,软件运⾏的效率指的是( )。
A )简单性 B)准确性 C)简明性 D)执⾏效率

解析:“执行效率”指的是软件在运行时所需资源(如时间、空间)的合理利用程度,反映了软件的性能表现。
21.在软件质量要素的评价准则中,程序易于理解的程度指的是( )。
A )简单性 B)准确性 C)简明性 D)执⾏效率
22.在软件质量要素的评价准则中,计算和控制的精确程度指的是( )。
A )简单性 B)准确性 C)简明性 D)执⾏效率

解析:“准确性”指的是软件在计算和控制过程中所达到的精确程度,确保输出结果的正确性和一致性。
23.在软件质量要素的评价准则中,在各种异常情况下软件能继续提供操作的能⼒指的是( )。
A )容错性 B)检测性 C)安全性 D)可操作性

解析:“容错性”指的是软件在遇到错误或异常情况时,仍能继续运行并提供服务的能力,避免系统崩溃或数据丢失。
24.在软件质量要素的评价准则中,程序监视⾃身运⾏并标识错误的程度指的是( )。
A )容错性 B)检测性 C)安全性 D)可操作性

解析:“检测性”指的是软件识别和报告错误的能力,程序能够监控自身运行状态,并在出现错误时及时标识和反馈。
25.在软件质量要素的评价准则中, 控制或保护程序和数据不被破坏、⾮法访问等机制的
能⼒指的是( )。
A )容错性 B)检测性 C)安全性 D)可操作性

解析:“安全性”指的是软件保护资源免受未经授权的访问、使用、修改或破坏的能力,包括数据加密、访问控制等措施。
26.在软件质量要素的评价准则中,操作该软件的难易程度指的是( )。
A )容错性 B)检测性 C)安全性 D)可操作性

解析:“可操作性”指的是软件在实际使用过程中,操作的便捷性和用户体验,包括界面设计、操作流程等方面。
27.下列选项中,不能进⾏并⾏⼯作的是( )。
A )需求复审 B)过程设计 C)单元测试 D)编码

解析:需求复审通常需要在整体需求文档完成后,由相关人员集体审查,难以与其他活动并行进行。其他选项如过程设计、单元测试和编码可以在不同模块或团队间并行进行,提高开发效率。
28.在整个软件项⽬定义与开发各阶段⼀种典型的⼯作量分布原则,称为 40-20-40 分布原
则,其中 20%的⼯作量指的是( )。
A )需求分析⼯作量 B)编码⼯作量 C)详细设计⼯作量 D)测试⼯作量
解析:

40-20-40 原则是一种在软件项目生命周期中估算工作量分配的经验法则。它将软件开发过程分为三个主要阶段,并分别分配了相应的工作量比例:

  • 第一个 40%: 指的是编码前的准备工作,主要包括需求分析、概要设计、详细设计等阶段。这个阶段的工作是为后续的编码工作打下基础,因此需要投入较多的时间和精力。
  • 20%: 指的是编码(Coding)阶段,即编写实际代码的过程。虽然编码是软件开发的核心环节之一,但由于前期的充分准备,编码本身所占的工作量相对较少。
  • 第二个 40%: 指的是编码后的工作,主要包括测试、集成、部署、维护等阶段。这个阶段的工作是为了验证代码的正确性、可靠性和可用性,并最终将软件交付给用户使用,因此也需要投入大量的工作量。因此,40-20-40 原则中的 20% 明确指的是编码工作量

⼆、填空

1 .软件项⽬管理的对象主要包括             
答案:产品、过程和资源等
2.对不依赖于其他属性的软件的简单属性的测量称为             
答案:直接度量
3.对涉及若⼲个其他属性的软件要素、准则或属性的度量,称为             
答案:间接度量
4.⾯向规模的度量是以软件的              为基础的直接度量。
答案:代码⾏数
5 Albrecht ⾸先提出了功能点度量⽅法。这是⼀种⾯向功能的              ⽅法。
答案:间接度量
6.在软件项⽬管理过程中的第⼀个活动应当是             
答案:估算
7 .估算⼯作量的公式: E = L3/ (Ck3td4) ,式中的 td 是对应于              时的时间,它正好是 ⼯作量曲线的峰值,说明此时的⼯作量最⼤、参加项⽬的⼈最多。
答案:软件交付
8 .软件开发项⽬每年所需的⼈年数与开发时间的关系满⾜ Rayleigh-Norden 分布,即软
件项⽬的⼯作量分布曲线              的,因此,参加软件项⽬的⼈员就不能⼀成不变。
答案:不是线性
9 .开发软件项⽬的⼯作量和交货时间 td 4 次⽅成反⽐,如果条件允许,适当地推迟交
货时间(即使 td 增⼤),可⼤幅度降低             
答案:开发⼯作量
10 Putnam 模型的优点是揭示了软件项⽬的              、软件开发时间和⼯作量三者之间的
关系,在理论上有重要意义。
答案:源程序代码⻓度
11 CoCoMo 模型按其详细程度分为基本 CoCoMo 模型、              和详细 CoCoMo 模型三 个层 次。
答案:中间 CoCoMo 模型
12 .基本 CoComo 模型主要⽤于              估算整个系统开发和维护的⼯作量以及软件开发所需要的时间。
答案:系统开发的初期
13 .⼀般地,由 N 个程序员组成的程序员⼩组在完成相同规模的软件时需要的通信数量 C N )=             
答案: N N-1 /2
14 McCall 等⼈提出了由              、评价准则、定量度量三个层次组成的三层次度量模型。
答案:软件质量要素
15 .程序图 G 的环形复杂度 V G)的值等于程序图中有界和⽆界的              的个数。
答案:封闭区域
16 McCabe 指出, V G )可作为程序规模的定量指标, V G )值越⾼的程序往往是越
复杂、越容易出问题的程序。因此,他建议模块规模以              为宜。
答案: V G 10
17 Halstead 给出了称为⽂本复杂性度量的模型。它是根据统计程序中的              的个数来度 量程序的复杂程度。
答案:操作符和操作数
18.软件可靠性定义为在某个给定              内,程序按照规格说明成功运⾏的概率。
答案:时间间隔
19.软件项⽬⻛险的⼀个显著特点是具有              ,某项⻛险可能发⽣也可能不发⽣。
答案:不确定性
20.⻛险分析的四个主要活动:              、⻛险估算、⻛险评价、⻛险驾驭和监控。
答案:⻛险标识
21 .为了识别⻛险, Boehm 建议使⽤各类              来标识⻛险。
答案:⻛险检测表
22 .为了评价⻛险,常采⽤三元组 [ r i p i x i ] 来描述⻛险。其中 r i 代表              ,p i 表示
i 种⻛险发⽣的概率, x i 代表该⻛险带来的影响。
答案:第 i 种⻛险
23.在整个软件项⽬定义与开发各阶段⼀种典型的⼯作量分布原则,称为              分布原则。
答案: 40-20-40
24.⽬前,软件项⽬的进度安排的两种⽐较常⽤的⽅法是              和关键路径法(CPM ),这两
种⽅法都⽣成描述项⽬进展状态的任务⽹络图。
答案:程序评估与审查技术( PERT
25.在制定进度计划时,应⾸先找到影响进度的              ,并在其上安排⼀定的节假⽇和机动时间,以便应付可能出现的问题和难点。
答案:关键路径
26.正式的技术评审是降低              的重要措施。
答案:软件成本
27.实践表明,向⼀个已经延期的软件项⽬追加新的开发⼈员,可能使项⽬完成得             
答案:更晚

三、简答题

1 .软件项⽬管理的主要任务是什么?
        软件项⽬管理的主要任务是根据选定的软件开发过程框架(即软件开发模型)和对其估算的结果制定软件项⽬实施计划;再根据计划对⼈员进⾏组织、分⼯;按照计划的进度,以及成本管理、⻛险管理、质量管理的要求,控制并管理软件开发和维护的活动,最终以最⼩的代价完成软件项⽬规定的全部任务。
2.成本管理的主要任务是什么?
        成本管理的主要任务是估算软件项⽬的成本,作为⽴项和签合同的依据之⼀,并在软件开发过程中按计划管理经费的使⽤。
3.质量管理的主要任务是什么?
        质量管理的主要任务是制定软件质量保证计划,按照质量评价体系控制软件质量要素,对阶段性的软件产品进⾏评审,对最终软件产品进⾏确认,确保软件质量。
4 .常⽤的软件项⽬的估算⽅法主要有哪 4 种?
1 )⾃顶向下的估算⽅法
2 )⾃底向上的估算⽅法
3 )差别估算法
4 )根据实验或历史数据给出软件项⽬⼯作量或成本的经验估算公式。
5 CoCoMo 模型按其详细程度分为哪三个层次?
        CoCoMo 模型按其详细程度分为 基本 CoCoMo 模型、中间 CoCoMo 模型和详细CoCoMo 模型 三个层次。
6 .软件质量的定义?
        1983 年, ANSI/IEEE std729 标准给出了软件质量的定义如下:
软件质量是软件产品满⾜规定的和隐含的与需求能⼒有关的全部特征和特性,包括:
1 )软件产品满⾜⽤户要求的程度;
2 )软件拥有所期望的各种属性的组合程度;
3 )⽤户对软件产品的综合反映程度;
4 )软件在使⽤过程中满⾜⽤户需求的程度。
7 .简述 McCall 等⼈的软件质量度量模型
        McCall 等⼈提出了由软件质量要素、评价准则、定量度量三个层次组成的三层次度量模
型。其中第⼀层是将对软件质量的度量归结为对直接影响软件质量的若⼲个软件质量要素的度量;由于质量要素很难直接度量,所以第⼆层是⽤若⼲个可度量的评价准则来间接度量软件质量要素;⽽第三层是对相应评价准则的直接度量。
8 .软件质量保证( SQA )活动主要包括哪些内容?
        1)在需求分析阶段提出对软件质量的需求,并将其⾃顶向下逐步分解为可以度量和控制的
质量要素,为软件开发、维护各阶段软件质量的定性分析和定量度量打下基础;
2 )研究并选⽤软件开发⽅法和⼯具; 3 )对软件⽣存周期各阶段进⾏正式的技术评审( FTR );
4 )制定并实施软件测试策略和测试计划;
5 )及时⽣成软件⽂档并进⾏其版本控制;
6 )保证软件开发过程与选⽤的软件开发标准相⼀致;
7 )建⽴软件质量要素的度量机制;
8 )记录 SQA 的各项活动,并⽣成各种 SQA 报告。
9 .正式的技术评审( FTR )的过程⼀般由哪 6 个步骤组成?
①制定评审计划,即安排好评审会议⽇程。
②介绍⼯程情况。
③准备⼯作。评审⼩组成员⾃⼰审阅⽂档资料,并把发现的问题和错误记录下来,以备在评
审会议上讨论。
④正式召开评审会议。
⑤⼯程返⼯。
⑥⼯程复审。
如此反复、直⾄通过复审为⽌。
10 .软件开发各个阶段都需要哪些⼈员?
        在软件项⽬的计划和分析阶段,只需要少数⼈,主要是系统分析员、从事软件系统论证和概
要设计的软件⾼级⼯程师和项⽬⾼级管理⼈员,⼈数虽不多,但都是⾼层次⼈员;
概要设计阶段要增加⼏个⾼级程序员;
详细设计阶段要增加软件⼯程师和程序员;
在编码和测试阶段还要增加初级程序员和软件测试员,在这⼀过程中,各类专⻔⼈员和管理
⼈员也在逐渐增加,到验收测试时,维护⼈员也加⼊其中,使各类⼈员的数量达到了最⾼峰;
在软件产品交付使⽤的初期,参加软件维护的⼈员较多,此时为防⽌给维护活动带来困难,
不应过早地解散软件开发⼈员。
软件经过⼀段时间的纠错性维护后,出错率会明显减少,这时可以逐步撤出软件开发⼈员,
之后,软件维护⼈员也逐步撤离。
11 .在软件项⽬中配备和使⽤⼈员应遵循的 3 个主要原则是什么?
①重质量:使⽤少量有实践经验、素质⾼、有能⼒的⼈员去完成关键性任务,常常⽐使⽤较
多的经验
不⾜的⼈员更有效。
②重培训:花⼒⽓培养所需的技术和管理⼈员是解决⼈员问题的有效⽅法。
③双阶梯提升:⼈员要么按照技术职务提升,要么按照管理职务提升,两者不应兼得。

四、综合题

1 .已知有⼀个国外典型的软件项⽬的记录,开发⼈员 M=5 ⼈,其代码⾏数 =20.2KLOC ,⼯
作量 E=43PM ,成本 S=314000 美元,错误数 N=64 ,⽂档⻚数 Pd=1050 ⻚,每两个⼈之间
通信的平均⼯作量为 0.13PM 。试计算开发该软件项⽬的⽣产率 P 、平均成本 C 、代码出错
EQR 、⽂档率 D 和通讯⼯作量 Ec
解答:

1. 生产率 P

生产率是单位时间内完成的代码量,用公式计算:

2. 平均成本 C

平均成本是单位代码行数的成本,用公式计算:

3. 代码出错率 EQR

代码出错率是单位代码行数的错误数,用公式计算:

4. 文档率 D

文档率是单位代码行数的文档页数,用公式计算:

5. 通信工作量 Ec

通信工作量是人员间通信的总工作量,用公式计算:

团队中的通信组合数可用组合公式计算:

通信工作量为:

Ec=0.13×10=1.3 PM

2、某软件的⼯作量是 20000⾏,由 4⼈组成的开发⼩组开发,每个程序员的⽣产效率是 5000

/⼈⽉,每对程序员的沟通成本是 250/⼈⽉,则该软件需要开发多少⽉ 。

解答:

开发时间由开发人员完成代码的时间和沟通成本的时间共同决定。

1. 基础公式

开发时间 TTT 公式如下:

  • 每个人每月的生产率:已知为 5000 行/人月

  • 总团队生产率(不含沟通成本):

总生产率=4⋅5000=20000 行/月


2. 沟通成本计算

团队内的沟通组合数为:

C(4,2)=4⋅(4−1)2=6

每对程序员的沟通成本为 250 行/人月,则团队总沟通成本为:

沟通成本=6⋅250=1500 行/月


3. 有效生产率

有效生产率为总生产率减去沟通成本:

有效生产率=20000−1500=18500 行/月


4. 开发时间计算

开发时间为:T=代码工作量有效生产率=20000/18500

计算结果:T≈1.08 月

相关文章:

掌握软件工程基础:知识点全面解析【chap02】

chap02 软件项目管理 1.代码行度量与功能点度量的比较 1.规模度量 是一种直接度量方法。 代码行数 LOC或KLOC 生产率 P1L/E 其中 L 软件项目代码行数 E 软件项目工作量(人月 PM) P1 软件项目生产率(LOC/PM) 代码出错…...

公路边坡安全监测中智能化+定制化+全面守护的应用方案

面对公路边坡的安全挑战,我们如何精准施策,有效应对风险?特别是在强降雨等极端天气下,如何防范滑坡、崩塌、路面塌陷等灾害,确保行车安全?国信华源公路边坡安全监测解决方案,以智能化、定制化为…...

闲谭Scala(3)--使用IDEA开发Scala

1. 背景 广阔天地、大有作为的青年,怎么可能仅仅满足于命令行。 高端大气集成开发环境IDEA必须顶上,提高学习、工作效率。 开整。 2. 步骤 2.1 创建工程 打开IDEA,依次File-New-Project…,不好意思我的是中文版:…...

Go语言反射从入门到进阶

一、反射的基础概念 在 Go 语言中,反射是程序在运行时检查和修改自身状态的能力。通过反射,我们可以在运行时获取变量的类型信息、查看结构体的字段、调用方法等。Go 语言的反射功能主要通过 reflect 包实现。 1.1 反射的基本类型:Type 和 …...

【基于rust-wasm的前端页面转pdf组件和示例】

基于rust-wasm前端页面转pdf组件和示例 朔源多余的废话花哨的吹牛那点东西要不要拿来试试事到如今 做个美梦 我觉得本文的意义在于,wasm扩展了浏览器的边界,但是又担心如同java的web applet水土不服. 如同我至今看不出塞班和iOS的不同下载地址:在github的备份 朔源…...

ARM64 Windows 10 IoT工控主板运行x86程序效率测试

ARM上的 Windows 10 IoT 企业版支持仿真 x86 应用程序,而 ARM上的 Windows 11 IoT 企业版则支持仿真 x86 和 x64 应用程序。英创推出的名片尺寸ARM64工控主板ESM8400,可预装正版Windows 10 IoT企业版操作系统,x86程序可无需修改而直接在ESM84…...

开放世界目标检测 Grounding DINO

开放世界目标检测 Grounding DINO flyfish Grounding DINO 是一种开创性的开放集对象检测器,它通过结合基于Transformer的检测器DINO与基于文本描述的预训练技术,实现了可以根据人类输入(如类别名称或指代表达)检测任意对象的功…...

easegen将教材批量生成可控ppt课件方案设计

之前客户提出过一个需求,就是希望可以将一本教材,快速的转换为教学ppt,虽然通过人工程序脚本的方式,已经实现了该功能,但是因为没有做到通用,每次都需要修改脚本,无法让客户自行完成所有流程&am…...

2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36)

参考:2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36) ubantu20.04,mysql5.7.13 navicat 远程连接数据库报错 2002 - Can’t connect to server on ‘192.168.1.61’ (36) 一、查看数据库服务是否有启动,发现有启动 systemctl status mysql…...

【虚拟机网络拓扑记录】

虚拟机网络拓扑记录 虚拟机安装windows到ubuntu的网络拓扑ubuntu到ubuntu里面的虚拟机网络拓扑windows到ubuntu里面的虚拟机网络拓扑 虚拟机安装 本实验宿主机为windos, 安装vmware,虚拟机操作系统使用ubuntu,然后再在ubuntu上面创建新的虚拟…...

【单片机通讯协议】—— 常用的UART/I2C/SPI等通讯协议的基本原理与时序分析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、通信基本知识1.1 MCU的参见外设1.2 通信的分类按基本的类型从传输方向上来分 二、UART(串口通讯)2.1 简介2.2 时序图分析2.3 UART的…...

Vue3 核心语法

1. OptionsAPI 与 CompositionAPI Vue2 的API设计是 Options(配置)风格的。Vue3 的API设计是 Composition(组合)风格的。 1.1 Options API 的弊端 Options类型的 API,数据、方法、计算属性等,是分散在&a…...

LLaMA-Factory GLM4-9B-CHAT LoRA 指令微调实战

🤩LLaMA-Factory GLM LoRA 微调 安装llama-factory包 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git进入下载好的llama-factory,安装依赖包 cd LLaMA-Factory pip install -e ".[torch,metrics]" #上面这步操作会完成…...

GTM023 W.H.Greub线性代数经典教材:Linear Algebra

这本教材是我高中时期入门线性代数的主要教材,我的很多基础知识都来源于这本书,如今看回这本书可以说满满的回忆。这本书可以说,是我读过的内容最为全面且完备的线性代数教材了。而且它的语言风格非常的代数化,没有什么直观可言&a…...

交换机与路由器的区别

交换机和路由器是网络中的两种关键设备,它们各自承担不同的功能,主要区别体现在以下几个方面: 一、工作层次与功能 交换机: 工作层次:交换机主要工作在OSI模型的第二层,即数据链路层。 功能:交…...

springboot502基于WEB的牙科诊所管理系统(论文+源码)_kaic

牙科诊所管理系统的设计与实现 摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定牙科诊所管理系统的…...

soular使用教程

用 soular 配置你的组织,工作更高效!以下是快速上手的简单步骤:  1. 账号管理 可以对账号信息进行多方面管理,包括分配不同的部门、用户组等,从而确保账号权限和职责的清晰分配。  1.1 用…...

纯div+css+js弹出窗

目的&#xff1a;实现弹出窗、仅关闭弹窗之后才能操作。自适应宽度与高度、当文本内容太多时、添加滚动条效果。 效果图 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport"…...

一篇文章学会HTML

目录 页面结构 网页基本标签 图像标签 超链接标签 文本链接 图像链接 锚链接 功能链接 列表 有序列表 无序列表 自定义列表 表格 跨列/跨行 表头 媒体元素 视频 音频 网站的嵌套 表单 表单元素 文本框 单选框 多选框 按钮 下拉框 文本域和文件域 表…...

QGIS二次开发(插件开发)

实习二 QGIS插件开发 2.1 任务要求 a&#xff09;用C语言编写qgis插件&#xff0c;实现带有x/y坐标的文本文件的地图显示。 用文件流fstream操作文本文件&#xff0c;读取其中的坐标数据。基于QgsPlugin相关类派生出一个插件&#xff0c;并加到插件工厂中。基于QgsVectorLaye…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...