掌握软件工程基础:知识点全面解析【chap02】
chap02 软件项目管理
1.代码行度量与功能点度量的比较
1.规模度量
是一种直接度量方法。
代码行数 LOC或KLOC
生产率
P1=L/E
其中 L 软件项目代码行数
E 软件项目工作量(人月 PM)
P1 软件项目生产率(LOC/PM)
代码出错率
EQR1=Ne/L
其中 Ne 软件项目的代码错误数
EQR1 每千行代码的错误数
每行代码平均成本C1=S/L
其中 S 软件项目总开销(元/美元)
C1 软件项目每行代码的平均成本
文档与代码比
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中的五个信息量按下列方式取值
计算技术复杂性因子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.代码行度量与功能点度量的比较
- 代码行度量依赖于程序设计语言,而功能点度量不依赖于程序设计语言。
- Albrecht和Jones等人对若干软件采用事后处理的方式分别统计出不同程序设计语言每个功能点与代码行数的关系,用LOC/FP的平均值表示。
- 表2.6表明,一行Ada语言代码的“功能”平均是一行FORTRAN语言代码“功能”的1.4倍。一行四代语言代码的“功能”平均是一行传统程序设计语言代码“功能”的3至5倍.
表2.6 各种语言的LOC/FP(平均值)
程序设计语言 | LOC/FP(平均值) |
汇编语言 | 300 |
COBOL | 100 |
FORTRAN | 100 |
Pascal | 90 |
Ada | 70 |
面向对象的语言 | 30 |
四代语言(4GL) | 20 |
代码生成器 | 15 |
2.软件项目估算中的通讯工作量如何计算?
常用的估算方法
①参照已经完成的类似项目估算待开发项目的成本和工作量。
②将大的项目分解成若干子项目,在估算出每个子项目成本和工作量之后,再估算整个项目。
③将软件项目按软件生存周期分解,分别估算出软件项目在软件开发各个阶段的工作量和成本,然后再把这些工作量和成本汇总估算整个项目。
④根据实验或历史数据给出软件项目工作量或成本的经验估算公式。
软件项目的规模是影响软件项目成本和工作量的重要因素。
软件项目代码行和功能点估算是成本和工作量估算的基础。
e=(a+4m+b)/6 (2-10)
希望LOC或FP的值落在区间[a,b]之外的概率极小
当LOC或FP的期望值估算出来之后,根据以前软件项目开发的平均生产率LOC/PM或FP/PM就可以计算出工作量。
如,软件项目的规模估算为310FP,以前完成的软件项目的生产率为5.5FP/PM,于是工作量估算为E=310/5.5=56PM。
经验估算模型之一 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
软件类型 | a | b | c | d | 适用范围 |
组织型 | 2.4 | 1.05 | 2.5 | 0.38 | 各类应用程序 |
半独立型 | 3.0 | 1.12 | 2.5 | 0.35 | 各类实用程序、编译程序等 |
嵌入型 | 3.6 | 1.20 | 2.5 | 0.32 | 实时处理、控制程序、操作系统 |
2 中间CoCoMo模型
以基本CoCoMo模型为基础,在工作量估计公式中乘以工作量调节因子 EAF
E = aL^b *EAF (2-13)
其中:L是软件产品的目标代码行数
a,b是常数,取值如表2.10所示。
工作量调节因子(EAF)与软件产品属性、计算机属性、人员属性、项目属性有关
² 软件产品属性软件可靠性、软件复杂性、数据库的规模。
² 计算机属性程序执行时间、程序占用内存的大小、软件开发环境的变化、软件开发环境的响应速度。
² 人员属性分析员的能力、程序员的能力、有关应用领域的经验、开发环境的经验、程序设计语言的经验
² 项目属性软件开发方法的能力,软件工具的质量和数量、软件开发的进度要求。
COCOMOⅡ模型调节要素和调节因子的范围
例题:
表2.7 代码行和成本、工作量估算
功能 | 乐观 LOC | 一般 LOC | 悲观 LOC | 加权平均 LOC | $/LOC | LOC/PM | 成本 ($) | 工作量 (人月) |
用户界面控制 | 1790 | 2400 | 2650 | 2340 | 14 | 315 | 32760 | 7.4 |
二维几何分析 | 4080 | 5200 | 7400 | 5380 | 20 | 220 | 107600 | 24.4 |
三维几何分析 | 4600 | 6900 | 8600 | 6800 | 20 | 220 | 136000 | 30.9 |
数据库管理 | 2900 | 3400 | 3600 | 3350 | 18 | 240 | 60300 | 13.9 |
图形显示 | 3900 | 4900 | 6200 | 4950 | 22 | 200 | 108900 | 24.7 |
外设控制 | 1990 | 2100 | 2450 | 2140 | 28 | 140 | 59920 | 15.2 |
设计分析 | 6600 | 8500 | 9800 | 8400 | 18 | 300 | 151200 | 28 |
总计 | 33360 | 656680 | 144.5 |
在例2.2中,目标代码行数为 33.3 KLOC
CAD软件开发属于中等规模、半独立型
从表2.9中查到a=3.0,b=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.5≈11
重点
若干人共同开发一个软件项目还应该增加他们之间相互通信和交换意见的额外工作量。
设N个程序员组成小组,实现相同规模的程序,相互通信数为
C=N(N-1)/2
每次通信和交换意见的平均工作量为μ
则增加的通信开销为
Ec=μN(N-1)/2 (2-14)
例题
3人和5人开发一个程序相互通信和交换意见的关系如图2.2所示
将N=3和N=5分别代入公式(2-14)
Ec(3)=μ3(3-1)/2=3μ
Ec(5)=μ5(5-1)/2=10μ
3.CMM和CMMI模型
1. CMM的能力成熟度级别及关键过程域
(1) L1初始级(initial)
初始级的软件开发组织几乎没有软件过程管理,软件开发是无序和混乱的,软件开发过程是不稳定的,软件项目的成功取决于开发精英个人或小组对软件过程的理解和努力。
(2) L2可重复级(repeatable)
可重复级的关键过程域包括:需求管理、软件项目计划、项目跟踪和监督、分包合同管理、软件质量保证、软件配置管理。
(3) L3己定义级(defined)
- 将管理和工程两方面的软件过程标准化、文档化和制度化。
- 软件开发组织己建立自己的软件过程标准,该组织承制的所有软件项目都使用自己的软件过程标准或根据项目需要剪裁一个子集。
- 项目使用的软件过程标准称为项目定义的软件过程。
- 已定义级的软件组织进行的软件过程应该是标准的、一致的和稳定的,软件开发过程中能对项目的成本、进度和产品的功能、质量进行跟踪和控制。
- 已定义级的关键过程域涉及项目和组织两方面,内容包括:组织级过程焦点、组织级过程定义、培训大纲、综合软件管理、软件产品工程、小组协调、同行评审。
(4) L4己管理级(managed)
(1) 定量的过程管理(quantitative process management)
定量地控制项目的软件过程能够达到的实际结果,从而得到一个稳定的、可定量预测的过程。
(2) 软件质量管理(software quality management)
软件质量管理以产品为中心。目标是定量的评价软件产品的质量,实现具体的质量目标,满足客户和最终用户的需要。
(5) L5优化级(optimizing)
- 重视并利用软件开发和维护过程中的反馈值进行过程和产品质量的定量控制,
- 关键领域:缺陷的预防、技术更新管理、过程变更管理。
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)值
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. 生产率 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弹出窗
目的:实现弹出窗、仅关闭弹窗之后才能操作。自适应宽度与高度、当文本内容太多时、添加滚动条效果。 效果图 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport"…...

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

QGIS二次开发(插件开发)
实习二 QGIS插件开发 2.1 任务要求 a)用C语言编写qgis插件,实现带有x/y坐标的文本文件的地图显示。 用文件流fstream操作文本文件,读取其中的坐标数据。基于QgsPlugin相关类派生出一个插件,并加到插件工厂中。基于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的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 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日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
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模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

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

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