2018年《软件过程与管理》试题 解答与解析¶
试题来源: 综合
assets/exams/软件质量往年题目整理.pdf、assets/exams/软件质量管理-习题-EagleBear.pdf、assets/exams/软质管古老往年卷.pdf中标有【2018】或【2018Fall】的题目整理。
一、简答题¶
1. 软件发展三大阶段的特点和主流开发方法¶
点击查看答案与解析
解答:
软硬件一体化:
- 特点:软件支持硬件完成计算任务、功能单一、复杂度有限、几乎不需要需求变更
- 主流开发方法:三思而后行(Measure twice, cut once);Code and Fix(编码+改错)
软件成为独立的产品:
- 特点:摆脱了硬件的束缚(操作系统)、功能强大、个人电脑出现、需求多变、兼容性要求、来自市场的压力
- 主流开发方法:形式化方法、结构化程序设计和瀑布模型
网络化和服务化:
- 特点:功能更复杂、规模更大、用户数量急剧增加、快速演化和需求不确定、分发方式的变化、进一步的服务化和网络化、盛行开源和共享文化
- 主流开发方法:迭代式开发、敏捷开发(XP、Scrum、Kanban)、开源软件开发方式、DevOps
知识点出处:
assets/slides/软件质量与管理.第二讲.pdf——软件发展三大阶段。
2. 软件项目管理和软件过程管理¶
点击查看答案与解析
解答:
- 软件项目管理:是应用方法、工具、技术以及人员能力来完成软件项目,实现项目目标的过程。关注当前项目的成本、质量和工期。
- 软件过程管理:是为了让软件过程在开发效率、质量等方面有着更好性能绩效。关注组织或团队的软件过程能力,使过程在效率、质量、可预测性等方面持续改进。
类比:项目管理像产品生产管理,过程管理像流水线的设计、维护和升级。二者相关但不等同。
知识点出处:
assets/slides/软件质量与管理.第二讲.pdf——软件项目管理与过程管理。
3. 生命周期模型与软件过程的区别和联系¶
点击查看答案与解析
解答:
- 生命周期模型是对一个软件开发过程的人为划分
- 生命周期模型是软件开发过程的框架,是对软件开发过程的一种粗粒度划分
- 生命周期模型往往不包括技术实践
联系:生命周期模型为软件过程提供框架;软件过程在周期模型内填充具体实践。
知识点出处:
assets/slides/软件质量与管理.第二讲.pdf。
4. 请描述一下PROBE方法的基本原理和过程,并解释在应用PROBE A方法估算时间的时候,为什么不用历史数据中的生产效率数据¶
点击查看答案与解析
解答:
基本原理:
- 设立合理的代理作为精确度量和早期规划需要的度量之间的桥梁
- 关注相对大小,而非绝对大小
- 依赖高质量的历史数据和一致过程
过程:
概要设计 → 代理识别和代理规模(E) → 估算并调整程序规模 → 计算预测区间
→ 估算并调整资源 → 计算预测区间
为什么不使用生产效率数据:在估算资源需求(例如人时)的时候,生产效率一般在分母上。考虑到个体软件工程师生产效率波动较大,容易导致估算偏差范围变大。时间估算偏差的原因可能正是估算结果本身(自我实现的预言),使得历史数据中时间偏差的参考价值不大。
知识点出处:
assets/slides/软件质量与管理.第四讲.pdf——PROBE方法。
5. 谈谈你对项目估算的认识,并简要解释应用PROBE方法估算的优缺点¶
点击查看答案与解析
解答:
对项目估算的认识:
- 规模估算往往可以依据历史数据来完成,偏差产生原因相对客观,偏差可以用来修正新的估算结果
- 时间估算的偏差产生原因更加复杂,一方面和规模有关,另外一方面跟人的主观能动性有关
- 估算本质上是一种猜测,追求的目标应该是一致性以及估算结果的使用者对估算结果的信心
PROBE方法的优点:
- 通过定义的估算过程和数据收集以及使用的框架,使得估算结果可以尽可能一致
- 使得一些统计方法可以用来调整估算结果,增强用户对估算结果的信心
PROBE方法的缺点:
- 非常依赖高质量的历史数据
- 一旦数据不完整或者缺失,就可能导致估算结果有显著偏差
知识点出处:
assets/slides/软件质量与管理.第四讲.pdf——PROBE估算方法。
6. 请解释A/FR,PQI的计算方式,并且解释这两个指标有什么用途¶
点击查看答案与解析
解答:
A/FR(Appraisal to Failure Ratio,质检失效比):
- A/FR = PSP质检成本 / PSP失效成本
- 质检成本 = 设计评审时间 + 代码评审时间
- 失效成本 = 编译时间 + 单元测试时间
- 用途:理论上A/FR值越大,质量越高;但A/FR值过大说明评审过多,开发效率低下。PSP中A/FR期望值为2.0
PQI(Process Quality Index,过程质量指标):
- PQI为5个数据乘积(以基准值作为1,最后结果越接近1,质量越高):
- 设计质量:设计时间应该大于编码时间 — min(设计时间/编码时间, 1)
- 设计评审质量:设计评审时间应大于设计时间的50% — min(2×设计评审时间/设计时间, 1)
- 代码评审质量:代码评审时间应大于编码时间的50% — min(2×代码评审时间/编码时间, 1)
- 代码质量:编译缺陷密度应当小于10个/千行 — min(编译缺陷密度+10)/20, 1)
- 程序质量:单元测试缺陷密度应当小于5个/千行 — min(单元测试缺陷密度+5)/10, 1)
PQI的用途:
- 判断模块开发质量
- 规划质量活动计划
- 过程改进
知识点出处:
assets/slides/软件质量与管理.第五讲.pdf——A/FR和PQI指标。
7. DevOps的特点,为什么流行?¶
点击查看答案与解析
解答:
DevOps以敏捷项目管理技术和微服务支持为中心,通过基于版本控制标准的自动化来处理整个软件开发生命周期。
DevOps的好处(流行原因):
- 敏捷团队项目管理:增强网站和移动应用软件开发的管理
- 软件开发过程的优化:通过CI/CD功能实现,快速推出新的软件功能
- 促进协作:Git允许开发人员在具有订单项回滚能力的团队中进行协作
- 通过自动化提高效率:CI/CD通过企业编程工具支持自动化代码测试
知识点出处:
assets/slides/软件质量与管理.第七讲.pdf——DevOps。
二、简述题¶
1. 请结合软件开发特点介绍软件项目管理中自主型团队的必要性¶
点击查看答案与解析
解答:
软件开发是一种智力活动,开发者是智力劳动者,而对于智力劳动者而言,管理的第一准则就是智力劳动者不能被管理,只能实现自我管理:
- 处理和讨论非常抽象的概念
- 把不同的部分整合成一个可以工作的正确的系统
- 全身心地参与
- 努力做出卓越的工作
因此,软件开发项目需要自主型团队,让知识工作者实现自我管理。
知识点出处:
assets/slides/软件质量与管理.第三讲.pdf——自主团队。
知识点分布总结¶
| 考查内容 | 对应课件 |
|---|---|
| 软件发展三大阶段 | 第二讲 |
| 软件项目管理 vs 过程管理 | 第二讲 |
| 生命周期模型 vs 软件过程 | 第二讲 |
| PROBE估算方法 | 第四讲 |
| A/FR, PQI指标 | 第五讲 |
| DevOps | 第七讲 |
| 自主团队必要性 | 第三讲 |