软件质量管理往年题
2024-01-03 22:05:24 # NJU # 软件质量管理

1. 选择

  1. “Measure twice, cut once” 描述的是下述哪个软件开发场景:B

    A. 软件设计;

    B. 代码评审;

    C. 需求开发;

    D. V&V;

  2. 整体来看, 我们可以把软件的发展分为三大阶段, 以下不属于三大主要阶段的是:C

    A. 软硬件一体化;(1950s - 1970s)

    B. 网络化和服务化;(1990s - )

    C. 云计算化和云原生;

    D.软件成为独立产品;(1970s - 1990s)

  3. 以下描述中, 不属于软件开发本质困难或者本质挑战的是:A

    A. 质量难题;

    B. 复杂性;

    C. 不可见;

    D. 一致性;

  4. 以下描述中, 哪一种实践是软硬件一体化阶段的典型实践:A

    A. Code and Fix;

    B. 迭代式开发;

    C. 瀑布生命周期模型;

    D. 成熟度模型;

    D 大概是软件成为独立的产品

  5. 对比TSP和SCRUM, 下列说法不恰当的是:C

    A. 都是过程框架, 需要填补具体实践之后才是一个可以工作的过程;

    B. 一种是计划驱动方法, 另外一种是敏捷方法;

    C. SCRUM适合迭代式场景, TSP适合瀑布场景;

    D. 两种方法都需要进行度量数据收集、分析, 从而支持管理决策;

    两者都适合迭代式开发

    B 待定, 真实商业场景的所有项目都是计划驱动的

  6. 以下特征适用麦克勒格Y理论(McGregors Theory Y)激励的场合是:D

    A. 关注工作环境, 薪金等;

    B. 更喜欢经常的指导, 避免承担责任, 缺乏主动性

    C. 自我中心, 对组织需求反应淡漠, 反对变革

    D. 能够自我约束, 自我导向与控制, 渴望承担责任

    X 人性本恶

    Y 人性本善

  7. 以下关于马斯洛的需求层次理论描述不正确的是:AD

    A. 自我实现是寻求自尊(Esteem)

    B. 激励来自为没有满足的需求而努力奋斗

    C. 低层次的需求必须在高层次需求满足之前得到满足

    D. 满足高层次的需求的途径比满足低层次的途径更少

    A 自我实现是第五层, 自尊在第四层;

  8. 以下关于团队动力学的论述, 不恰当的是: A

    A. 马斯洛的需求层次理论可以用来更好地维持激励水平;

    B. 智力工作的激励方式中, 应该尽可能使用鼓励承诺这种方式;

    C. 麦克勒格的X理论适合用马斯洛底层需求激励;

    D. 海兹伯格的激励理论区分为内在因素和外在因素两种

    马斯洛的需求层次理论可用于指导激励手段的选择, 不是激励维持手段

  9. 下述关于WBS的描述中, 哪些说法不正确的?A

    A. WBS应该对应OBS

    B. WBS提供了范围管理的基础

    C. WBS工作分解最底层的要素是实现目标的充分必要条件

    D. WBS分解的时候, 同一层不能应用不同标准

  10. 下述关于EVM的描述中, 哪些说法不正确的? B

    A. EVM不适用于质量管理

    B. EVM的中级实现中引入成本信息

    C. EVM高度依赖估算准确

    D. EVM可以适应需求变更

    挣值管理。顺序:进度信息、日程偏差、实际成本。

  11. 下列关于挣值管理方法的描述中正确的是:ABC

    A. 挣值管理中进度的计算可以区分悲观和乐观两种方式;

    B. 挣值管理的简单、中级和高级实现三种方式中, 只有高级实现才会涉及成本因素;

    C. 挣值管理与项目类型无关;

    D. 挣值管理不适用与需求频繁变更的软件项目管理当中

    D 适合

  12. 关于PSP质量管理策略, 下列说法中正确的是: ABD

    A. 用缺陷管理替代质量管理, 既有必要性, 也有合理性;

    B. 基本无缺陷的开发是通过开展高质量的评审来实现的;

    C. 经过训练, 评审是所有消除缺陷的手段当中最高效的;

    D. PSP质量策略主要解决的是外部质量, 而非内部质量;

    C 编译最高效

    D PSP 使用面向用户的视图, 主要解决外部质量, 关注的缺陷就是外部质量

  13. 【答案待定】关于DRL, 下列说法中不正确的是:CDE

    A. 这是一种模块级开发中质量控制的指标

    B. DRL以单元测试每小时发现缺陷率作为基准, 考察上游其他缺陷消除阶段的消除效率;

    C. DRL以单元测试发现的缺陷个数作为基准, 考察上游其他缺陷消除阶段消除缺陷的效率;

    D. DRL只能预测, 不能度量

    【2022】E. DRL期望值是大于2.0

    C 每小时

    D 可以度量

    E 22年考试新增选项, 对错待定。A/FR的期望值是2.0

  14. 关于PQI, 下列说法中不正确的是:BCD

    A. PQI表征模块级别开发中的过程规范化程度

    B. PQI越高越好, 可以充分保障质量;

    C. PQI越低越好;

    D. PQI不能用作质量规划

    BC 越高成本也越高, 大于0.4即可

    D 可以用作质量规划

  15. 关于PQI, 下列说法中正确的是:AB

    A. PQI可以辅助判断模块开发质量

    B. PQI可以提供过程改进的依据

    C. PQI确保大于1, 从而确保开发质量;

    D. PQI只能预测, 不能度量

  16. 关于Yield, 下列说法中正确的是:ABCD

    A. Yield可以辅助判断模块开发质量

    B. Yield可以提供过程改进的依据

    C. Yield区分为Process Yield和Phase Yield;

    D. Yield只能预测, 不能度量

  17. 关于评审速度, 下列说法中正确的是:C

    A. 进行代码评审的时候, 控制评审速度不超过每小时1000LOC就能实现大部分质量要求;

    B. 实战中, 评审速度应该根据资源水平而定, 时间充分就评审慢一些;

    C. 文档评审速度应该控制每小时不超过4页;

    D. 评审速度与人的技能有关, 技能强的人可以突破 每小时1000 LOC代码这个限制;

    200LOC/h, 4page/h

  18. 关于Humphrey 梳理的Quality Journey, 下列说法中正确的是:CD

    A. Quality Journey中列出的步骤可以在适当的时候更换顺序;

    B. 由于需求是一切工程活动的基础, 因此加强需求开发应该是Quality Journey早期的必备步骤;

    C. Quality Journey仍然仅仅是在“用缺陷管理替代质量管理”这一基本策略之下进行讨论;

    D. Quality Journey中测试应该先于评审得到贯彻和改善

    A 不能更换

    B 质量路径与需求无关

  19. 下述设计模板中用来记录内部动态信息的是:B

    A. OST;

    B. SST;

    C. LST;

    D. FST;

  20. 下述关于PSP四大设计模板和UML典型设计图 的描述中完全正确的是:B

    A.OST在UML中没有对应的设计图;

    B.UML中的类结构以及类之间的关系, 在PSP四大设计模板中无法体现;

    C.LST在UML中可以通过类图来体现;

    D.FST在UML中可以通过类图来体现;

    A 用例图和时序图

    C UML中没有对应图示

    D UML类图中记录了方法的型构, 然而方法的行为没有描述, 而在PSP的FST中有相应的内容

  21. 一个完全正确的状态机应该满足:ABCE

    A.没有死循环和陷阱;

    B.状态转化条件满足正交性;

    C.状态转化条件满足完整性;

    D.状态转化条件满足独立性;

    E.符合设计意图

  22. 下列关于各种设计验证手段的描述中正确的是:C

    A.执行表是唯一一种提供全面设计验证的手段;

    B.跟踪表是唯一一种提供全面设计验证的手段;

    C.受限于手工方式, 都易于出错;

    D.符号化执行不适合复杂的数学计算;

    D 待定

  23. 关于使用程序正确性证明手段验证while-do循环设计的描述中, 正确的是:ABCD

    A. 如果设计是正确的, 那么应满足的条件之一是循环判断条件最后一定可以变为false;

    B. 如果设计是正确的, 那么应满足的条件之一是循环判断条件为真的时候, 单独的循环结构执行结果与循环体再加一个循环结构, 其执行结果一致;

    C. 如果设计是正确的, 那么应满足的条件之一是循环判断条件为false的时候, 循环体内所有变量不能被修改;

    D. 该方法并不能保证循环体算法实现设计意图。

  24. 下述关于质量的描述中, 哪些说法不正确的?C

    A.质量是一种多重属性的组合

    B.最终用户一般不能感知内部质量

    C.安全和保密一般不是质量要素

    D.质量与主观感受有关

  25. 下述关于质量控制指标, 哪些说法正确?C

    A.A/FR应该是越高越好

    B.Yield是一种精确度量模块质量的手段

    C.评审活动应该早于编译或者测试活动而开展

    D.PQI只能事后统计, 不能用于指导质量计划

    A 越高成本也高

    B 发展趋势, 不精确

    D 可以指导

  26. 下述设计验证手段的描述, 哪些是正确的?A

    A.符号化执行容易引入人为错误

    B.状态机验证是唯一一种提供一般意义的上的正确性检验的验证手段

    C.执行表的对设计缺陷的验证能力强于跟踪表

    D.正确性检验是唯一可靠的设计验证手段

    B 应该是符号化执行, 跟踪表基于符号化执行

    C 弱于

    D 不是唯一

  27. 下面描述属于典型客户需求的是:ABC

    A.客户期望;

    B.预算限制;

    C.法律法规限制;

    D.系统功能描述

  28. 在团队设计活动中, 应该注意设计标准, 下列属于典型的设计标准应该约定的是:ABCD

    A.命名规范;

    B.接口标准;

    C.出错或者异常处理信息;

    D.设计表示方式

  29. 典型地, 在团队设计活动中, 应该注意哪些内容:ABCD

    A.设计标准的应用;

    B.复用的考虑;

    C.可测试性支持;

    D.可用性支持

  30. 关于集成策略, 下述描述中正确的是:BCD

    A. 当待集成组件质量普遍不高的时候, 不可以使用扁平化策略;

    B. 当需要尽早获取可以工作的组件的时候, 应该使用集簇式策略;

    C. 当待集成组件质量普通较高的时候, 可以使用大爆炸式集成策略;

    D. 持续集成本质上就是逐一添加策略。

    A 应该使用扁平化, 不该使用大爆炸

  31. 当考虑集成策略的时候, 应该注意如下哪些方面?:ABCD

    A. 待集成组件的质量状态;

    B. 待集成组件的获取方式;

    C. 待集成组件的功能和关系;

    D. 待集成组件的数量;

  32. 关于扁平化集成策略和集簇式集成策略, 下述说法中正确的是:BC

    A. 扁平化策略可以较早地充分地暴露系统级别的错误;

    B. 扁平化策略对于系统级别错误的暴露能力有限;

    C. 集簇式集成策略有助于复用策略的实现;

    D. 扁平化策略和集簇式策略的优缺点正好相反;

    A 较早但并不充分

    D 大爆炸和逐一添加才是相反的

  33. 下述活动是典型的验证(Verification)的是:BC

    A. 需求评审;

    B. 详细设计评审;

    C. 单元测试;

    D. 试运行;

    一头一尾(需求评审, 验收测试)是确认, 其他是验证

  34. 下述活动是典型的确认(Validation)的是:A

    A. 验收测试;

    B. 代码评审;

    C. 系统测试;

    D. 持续集成;

  35. 下述产物中属于典型的确认(Validation)对象的是:BCD

    A.接口设计文档;

    B.源代码;

    C.用户手册;

    D.系统使用培训材料(视频、录像等);

    需要向客户提交的工作产品是确认的对象

  36. 下述关于需求开发的描述中, 哪些是正确的?BC

    A. 客户需求是指客户提出的关于软件功能的具体要求

    B. 工期或者预算往往都是客户需求的一个方面

    C. 产品需求需要跟客户充分讨论才能获取

    D. 客户应该在需求开发活动中起到主导作用

  37. 下述产物中属于典型的配置项是:ABCD

    A. 接口设计文档;

    B. 源代码;

    C. 用户手册;

    D. 系统使用培训材料(视频、录像等);

  38. 团队内部的配置审计通常应该关注什么:ABCD

    A. 物理审计;

    B. 配置项列表;

    C. 配置管理记录;

    D. 基线计划;

  39. 下列关于决策分析的论述中, 不恰当的是:BD

    A. 决策分析指南中最关键的是明确需要开展决策分析活动的判定标准, 即什么场合之下需要开展正式的决策分析活动;

    B.评价方法是体现决策者利益诉求的关键, 因此, 需要谨慎设计;

    C.候选方案的识别应该晚于于评价标准;

    D.现实生活中的项目投标就是一个典型的决策分析活动;

    B 评价标准

    D 招标

    决策分析顺序:建立决策分析指南、建立评价标准、识别候选方案、选择评价方法、评价候选方案、选择解决方案

  40. 下列关于根因分析的论述中, 不恰当的是:AD

    A. 根因分析必须基于丰富的数据来选择合适的问题;

    B. 鱼骨图是根因分析的有效手段;

    C. 典型地, 可以从技术、人员、培训以及过程角度开展根因分析;

    D. 根因分析活动终止的唯一特征就是找到相应的根因的明确解决方案;

    A 没有数据也可以依靠主观判断

    D 或者解决方案明确不存在

  41. 【答案待定】以下关于规模估算和度量的描述中, 正确的是:B

    A. 功能点是一种可提供精确规模度量结果的方式

    B. 规模数据扮演了沟通历史数据的桥梁的角色

    C. 规模估算通常不用于质量计划当中

    D. PROBE 只用于规模估算

    A FP基于主观而非客观数据

    CD 待定

  42. 【答案待定】关于 PSP 缺陷日志, 哪些信息是至关重要的: ACD

    A.缺陷发现时间

    B.缺陷重现方式

    C.缺陷根因描述

    D.缺陷关联的其他缺陷

  43. 关于Brooks提及的软件开发本质难题, 下列说法中不准确的是。AB

    A.本质难题总共有四个, 分别为复杂、不可见、可变和质量挑战

    B.既然是本质难题, 那就说明是根植于软件开发本身, 因而是不可能在软件开发当中得到缓解

    C.严格来说, 只有不可见才是真正的“本质”难题, 其他三个因项目而异

    D.四大本质难题贯穿软件发展的不同历史段, 但是在不同历史阶段, 相互凸显程度不一样

  44. 下列软件应用和开发的典型特征中属于软硬件一体化阶段的是?BC

    A.可以通过引入操作系统, 摆脱了硬件束缚

    B.几乎不需要考虑需求变更

    C.缺乏科班的软件工程师

    D.系统兼容对应软件开发的成败非常关键

    AD 软件成为独立的产品

  45. 下列哪些项不属于管理活动应该包含的要素?ABD

    A.成本

    B.质量

    C.目标

    D.工期

    管理的三大关键要素:目标、状态、纠偏

    软件项目管理的三大目标:成本、质量、工期

  46. 下列名词和术语中不属于软件过程的有哪些?BD

    A.SCRUM

    B.CMM/CMMI

    C.GATE方法

    D.IDEAL

    CMM/CMMI, IDEAL模型是一种软件过程管理/改进模型

  47. 【2015B】CMM的创始⼈是哪位_? C

    A. Boehm

    B. Juran

    C. Humphrey

    D. Crosby

  48. 【2015B】XP规定开发⼈员每周⼯作时间不超过___⼩时, 连续加班不可以超过两周, 以免降低⽣产率?(B)

    A. 30

    B. 40

    C. 50

    D. 60

  49. 下列不属于看板方法典型实践的是?BD

    A.可视化工作流

    B.站立式会议

    C.限定WIP

    D.重构

    KanBan方法活动:可视化工作流、限制WIP、管理周期时间

    B 站立式会议属于TSP实现策略中复用策略

  50. 下列术语描述的技术或者方法是同类型的是?CD

    A.CMMI SPICE PDCA

    B.IDEAL XP SCRUM

    C.Cleanroom Gate TSP

    D.Waterfall SCRUM XP

    C 软件过程

    D 软件实践

  51. 在TSP的团队组建过程中, 确定软件开发策略的是第几次会议?C

    A.第一次

    B.第二次

    C.第三次

    D.第四次

  52. 完成一份完整的项目日程计划, 需要下列哪些信息?ABD

    A.任务清单

    B.任务顺序

    C.质量要求

    D.人员资源水平

  53. 下列描述当中, 属于过程经理的工作内容有哪些?AC

    A.建立团队的开发标准

    B.主持项日周例会

    C.记录周例会的会议记录

    D.制定开发计划

  54. 下列关于挣值管理方法的描述中错误的是?C

    A.这是一种可以用来跟踪项目预算消耗的方法

    B.这种方法高度依赖估算准确性

    C.这种方法可以支持质量管理

    D.这种方法可以用来跟踪项目进度

    C:挣值管理方法不支持质量管理, 因为它们关注的是成本节约而不是质量改进。他们必须找到将质量考虑在内的正确解决方案来支持质量管理。

  55. 为了制定 Schedule plan, 下述描述中, 哪一项是不需要的 A

    A. Task size

    B. Task Order

    C. Schedule Hour

    D. Task hour for each task

  56. 在上题中, 还需要补充下述哪一项数据就可以定义 Schedule Plan 了 A

    A. Task List

    B. Plan Value

    C. Earned Value

    D. Nothing

  57. PROBE方法估算规模的时候, 下列说法不恰当的是:AC

    A. PROBE A 方法要求三组以及三组以上的代理规模数据和实际规模数据, 且要求其相关性R²大于等于 7;

    B. PROBE C 方法仅仅需要根据上一次项目中估算值和实际值的比例进行调整即可;

    C. 应用 PROBE A 方法的估算结果一定会好于 PROBE B 方法;

    D. PROBE 方法的优势之一是采取了相对大小, 而非绝对大小, 辅助估算着思考和判断;

    image-20240102211558227

  58. 【答案待定】下列指标中适合用作风险参数的是:ABC

    A.发生概率;

    B.影响程度;

    C.风险系数;

    D.触发阈值

  59. 【答案待定】下列描述中属于定量管理场景的是:AD

    A.我们通过控制关键子过程的性能来确保项目整体目标的达成;

    B.我们分析了导致生产效率不稳定的因素, 并采取措施避免再次发生;

    C.我们通过每天站立式会议和周例会控制项目进度偏差不超过 20%;

    D.我们通过挣值管理方法来确保进度和成本与预期相符;

  60. 完全基于 Phase Yield 来构建一个缺陷预测模型, 下列数据中必不可少的是:B

    A.每个注入缺陷阶段缺陷注入速度(个/小时);

    B.每个缺陷消除阶段消除的缺陷个数;

    C.每个阶段中从上游阶段遗留下来的缺陷比例;

    D.每个缺陷消除阶段消除缺陷的比例;

    Phase Yield = 100 * (某阶段发现的缺陷个数)/(某阶段注入的缺陷个数+进入该阶段前遗留的缺陷个数)

  61. 【答案待定】通过软件过程建模和仿真, 有助于完成下列哪些工作:ABD

    A.编制项目计划;

    B.编制项目质量管理计划;

    C.项目经理培训;

    D.组织技术革新;

  62. 下列步骤当中, 不属于建模典型步骤的是:C

    A.定义和选择结果变量;

    B.对过程进行抽象;

    C.规划过程改进计划;

    D.选择输入参数;

    仿真建模步骤:确定建模范围、定义结果变量、过程抽象、选择和定义输入参数

  63. 下列方法中, 属于仿真技术的有哪些:BC

    A.专家系统;

    B.蒙特卡洛方法;

    C.系统动力学方法;

    D.假设检验方法;

  64. 上图是控制图的示例图, 中心线(CL)两侧按照±σ, ±2σ和±3σ分成 ABC 三个区域, 以下描述中, 属于要进一步探索的异常过程症状的是:C

    A.连续 4 个点呈现上升或者下降趋势;

    B.连续 8 个点在中心线两侧, 但是没有一个点在 C 区域;

    C.连续 3 个点中有 2 个落在中心线同侧的 B 区以外;

    D.连续 6 个点在中心线同一侧;

    8种异常状况

    1. 1 点落在 A 区以外
    2. 连续 9 点落在中心线同一侧
    3. 连续 6 点递增或递减
    4. 连续 14 点相邻点上下交替
    5. 连续 3 个点中有 2 个落在中心线同侧的 B 区以外
    6. 连续 5 点中有 4 点落在中心线同侧的 C 区以外
    7. 连续 15 点在 C 区中心线上下
    8. 连续 8 点在中心线两侧, 且无一在 C 区中
  65. 下列关于 CMMI 五个成熟度级别的描述中, 不属于任何级别的是:A

    A. Performed;

    B. Managed;

    C. Optimizing;

    D. Defined

2. 判断

  1. 软件过程管理是软件项目管理应该要实现目标。

    错误的。软件过程管理和软件项目管理完全是两回事, 因此并不是实现目标

  2. “在公司导入敏捷过程是我们今年过程改进的主要目标。”

    正确的。过程管理和过程改进是类似的, 这个说法是合理的

  3. XP与CMM/CMMI是对立的两种软件开发方法。

    错误的。CMM和CMMI并不是软件开发方法, 而是软件过程管理和改进, CMM和CMMI是没有较大区别的

  4. CMM/CMMI不适合当今互联网环境的项目管理需求。

    正确的。CMM/CMMI是用来做过程管理和改进的, 根本不是满足项目管理需求的手段

  5. PDCA和IDEAL不适合在敏捷环境中使用。

    错误的。PDCA, IDEAL是软件过程改进参考元模型, 因此是适合在敏捷环境中使用的

  6. 不同的软件开发过程应该使用不同的生命周期模型, 反之亦如此。

    错误的。生命周期模型是由人类划分的, 不一定

  7. CMMI是过程改进模型而非软件过程或者软件过程模型。

    正确的。CMMI是软件过程管理模型, 与过程改进模型意义相近

  8. CMMI不是过程优劣的标准, 也不适合用作公司之间的能力比较

    正确的。CMMI本身是有评级。(美国国防部订单招标要求企业至少达到CMMI的3级。因为公司的能力需要绝对东西, 也就是能力强, 能力弱, 而CMMI衡量的是相对的水平, CMMI仅仅关注在本公司的目标下的等级

3. 主观题

【2022】结合“软件开发作为一种知识工作, 需要领导者而不是一般的经理”, 阐述知识工作领导者应该具备的品质或者特点(至少三项)。

  • 诚实、有能力、有远见、能鼓舞人心

【2022】【2021】【2020】敏捷宣言有哪些内容?我们该如何正确理解敏捷宣言

  • 敏捷宣言
    • 个体和互动 胜过 流程和工具
    • 可以工作的软件 胜过 详尽的文档
    • 客户合作 胜过 合同谈判
    • 响应变化 胜过 遵循计划
  • 尽管右项有其价值, 我们更看重左项的价值

【2022】挣值管理有三种实现方式, 分别是简单、中级以及高级, 请分别阐述上述三种方式的基本要点

【2021】给一个挣值管理的图, 项目进度如何?是提前还是落后?项目有什么风险?

  • 简单:仅仅关注进度信息
    • 首先需要建立WBS, 定义工作范围
    • 其次为WBS中每一项工作定义一个计划价值(PV)
    • 最后按照一定的规则将某一数值赋给已经完成的工作或者正在进行的工作, 该值称为挣值(EV)
  • 中级
    • 在简单实现的基础上, 加入日程偏差的计算
  • 高级
    • 在中级实现的基础上,还需要考察项目的实际成本

一点小补充

  • 0-100原则: 任务完成时才将PV转化为EV
  • 50-50原则: 只需要开始某项任务, 即可以赋原PV值的50%作为EV值, 完成时, 再加上另外的50%
  • 实际完成的工作所需成本AC不对EV值产生任何影响

  • 典型计算方式有

    • 日程偏差SV = EV – PV

      • SV<0表示进度落后;SV=0表示进度正常;SV>0表示进度超前。
    • 日程偏差指数SPI = EV/PV;

    • 成本差异CV = EV - AC
    • 成本差异指数CPI = EV/AC
      • CPI<1说明成本超支;CPI=1说明成本与预期一致;CPI>1说明成本低于预期。
    • 预计完成成本EAC = AC+(BAC-EV)/CPI = BAC/CPI
      • BAC(项目总预算)表示按照PV值的曲线, 当项目完成的时候所需预算或者时间
  • 高级:添加预测线(BAC), 当任务足够多的时候, 我们就可以让预测线尽可能平直, 同时我们延伸挣值(EV), 找到与预测线(BAC)的交点, 我们就可以明确项目的落后时间

【2022】【2021】软件项目规模估算基本要点有哪些

  • 尽可能划分详细一些
  • 建立对结果的信心
  • 依赖数据
  • 估算要的是过程, 而非结果, 估算的过程是相关干系人达成一致共识的过程

【2022】CMMI—DEV V1.3 版本五个不同的成熟度等级分别是什么?为什么四级和五级被称为高等级?与普通等级的本质差别是什么?

【2020】请描述 CMMI 模型的 5 个等级的特征, 并且解释为何 CMMI 模型不应该是敏捷方法的对立面

  • 等级一:初始级
    • 开发相对混乱, 依赖个人英雄主义, 没有过程概念, 救火文化盛行
  • 等级二:已管理级
    • 项目小组体现出项目管理的特征, 有项目计划和跟踪、需求管理、配置管理等
  • 等级三:已定义级
    • 公司层面有标准流程和相应的规范, 每个项目小组可以基于此定义自己的过程, 使得优秀的做法可以在公司共享。
  • 等级四:定量管理级
    • 构建预测模型, 以统计过程控制的手段来管理过程
  • 等级五:优化级
    • 继续应用统计方法识别过程偏差, 找到问题根源并消除, 避免未来继续发生类似问题。

CMMI 是过程改进模型, 大部分敏捷方法都是开发方法, 因此两者是不同性质的事物, 将两者对立是不合适的。

问道ChatGPT:

四级和五级被称为高等级, 主要是因为它们代表了对过程的高度管理和优化。

与普通等级的本质差别在于, 四级和五级强调量化和持续改进。在这两个级别中, 组织不仅仅是在执行标准过程, 而且还在努力通过数据和创新来持续优化。

【2022】随着 ChatGPT 的横空出世, 以大模型为代表的 AI 技术势必对各行各业带来前所未有的影响。具体到软件工程, 人工智能技术的应用也日渐常见, 请结合这一背景畅想下本课程涉及的若干话题可能在这一波 AI 浪潮中的挑战和机遇。至少应该包括如下话题:项目管理、质量管理、过程改进。

  • 瞎编吧

问道ChatGPT:

项目管理:

  • 挑战:整合大模型如ChatGPT带来的复杂性, 需要更高水平的规划和监控。
  • 机遇:ChatGPT可提供更准确的项目信息, 帮助项目经理更好地决策和监测进度。

质量管理:

  • 挑战:引入AI增加了质量管理的复杂性, 需要确保AI系统质量和行为预测的准确性。
  • 机遇:AI可用于自动测试和代码审查, 提高软件质量, 分析用户反馈以快速识别和解决问题。

过程改进:

  • 挑战:引入AI可能需要重新评估软件开发过程, 同时需关注数据隐私和伦理问题。
  • 机遇:AI分析大规模数据, 帮助团队发现潜在改进点, 自动化任务使团队更专注于创新和质量提升。

【2021】【2020】我们该如何正确理解瀑布模型?

  • 瀑布模型不是单一模型, 是一系列模型, 覆盖最简单场景到最复杂场景
  • 软件项目应该结合实际情况选择合适过程元素的瀑布模型, 基本原则是, 项目面临困难和挑战越多, 选择的模型应该越复杂
  • 软件项目团队往往低估项目的挑战, 选择了过于简单的不适用的瀑布模型

【2021】简述至少 5 个 DevOps 实践、方法、技术

  • CI: 将代码频繁集成到共享存储库中, 并通过自动化构建和测试来验证正确性
  • CD: 通过自动化部署和测试实现将软件更频繁、可靠地推送到生产环境
  • 容器: 使用容器技术(如Docker)封装应用程序和其依赖, 实现一致的运行环境
  • 编排工具: 编排工具(例如Kubernetes)用于自动化和管理容器化应用程序的部署、伸缩和运维
  • 微服务架构: 将应用程序拆分为小型、独立的服务, 每个服务都有自己的数据存储和通信机制

【2021】TSP中的典型角色, 描述其中五个角色的职责

  • 项目组长
    • 激励团队成员努力工作
    • 主持项目周例会
    • 每周汇报项目状态
    • 分配工作任务
    • 维护项目资料
    • 组织项目总结
  • 计划经理
    • 带领项目小组开发项目计划
    • 带领项目小组平衡计划
    • 跟踪项目进度
    • 参与项目总结
  • 开发经理
    • 带领团队制定开发策略。
    • 带领团队开展产品规模估算和所需时间资源的估算。
    • 带领团队开发需求规格说明。
    • 带领团队开发高层设计。
    • 带领团队开发设计规格说明。
    • 带领团队实现软件产品。
    • 带领团队开展集成测试和系统测试。
    • 带领团队开发用户支持文档。
    • 参与项目总结。
  • 质量经理
    • 带领团队开发和跟踪质量计划
    • 向项目组长警示质量问题
    • 软件产品提交配置管理之前, 对其进行评审, 以消除质量问题
    • 项目小组评审的组织者和协调者
    • 参与项目总结。
  • 过程经理
    • 带领团队定义和记录开发过程并且支持过程改进。
    • 建立和维护团队的开发标准。
    • 记录和维护项目的会议记录。
    • 参与项目总结。
  • 支持经理
    • 带领团队识别开发过程中所需要的各类工具和设施。
    • 主持配置管理委员会, 管理配置管理系统。
    • 维护软件项目的词汇表。
    • 维护项目风险和问题跟踪系统。
    • 支持软件开发过程中复用策略的应用。
    • 参与项目总结。

【2021】基于Yield构建预测模型, 描述如何建模?需要哪些数据, 有什么要求?⽤什么⽅法构建模型并预测

【2013】基于Yield指标构建缺陷预测模型, 并列举该模型的可能改进方案

  • 总体思想:利用回归技术预测软件开发过程中各阶段的Inject Rate(缺陷注入率)和Yield(缺陷消除率)
  • Yield指标只能用来估算, 不可以用来度量。结合Yield指标和上图, 只需要知道如下指标就可以基于Yield指标构建一个基本的缺陷预测模型:
    • 注入阶段注入多少缺陷
    • 缺陷注入的密度(需求每一页注入多少缺陷)
    • 缺陷注入的速度(每小时注入多少缺陷)
    • 消除阶段的缺陷注入密度和速度。
    • 历史数据中的软件规模、文档规模、开发人员规模
  • 步骤
    • 确定纳入影响因子的数据以及数据度量方法
    • 从系统历史库中收集历史数据, 并进行整理
    • 依照回归技术进行计算
    • 在项目进行过程中不断收集数据, 与预测数据进行比较, 调整回归参数
    • 项目过程中依据实际数据与预测数据的误差进行风险的预防、识别和控制
  • 改进方案
    • 可能的改进是假设注入水平和消除水平都符合正态分布, 计算均值和标准差, 因此, 可以用蒙特卡罗方法模拟结果。

image-20240102224326843

三个消除步骤是需求评审、设计评审和测试评审

【2020】请结合软件发展的三大阶段, 描述不同阶段的典型软件开发方法和实践

【2018】软件发展三大阶段的特点和主流开发方法

  • 软硬件一体化:
    • 特点:软件支持硬件完成计算任务、功能单一、复杂度有限、几乎不需要需求变更
    • 开发方法:线性顺序过程, measure twice cut once, code and fix
  • 软件成为独立产品:
    • 特点:摆脱了硬件的束缚(操作系统)、功能强大、个人电脑出现、需求多变、兼容性要求、来自市场的压力
    • 开发方法:形式化方法、结构化程序设计、瀑布生命周期模型、成熟度运动
  • 网络化和服务化:
    • 特点:功能更复杂、规模更大、用户数量急剧增加、快速演化和需求不确定、分发方式的变化、进一步的服务化和网络化、盛行开源和共享文化
    • 开发方法:迭代式开发、敏捷运动、开源软件开发方式、DevOps

【2020】【2018】生命周期模型和软件过程这两个概念有什么区别和联系

  • 生命周期模型是对一个软件开发过程的人为划分。
  • 生命周期模型是软件开发过程的框架, 是对软件开发过程的一种粗粒度划分。
  • 生命周期模型往往不包括技术实践。

【2020】请简要描述按照通用计划框架, 为了开发合理的项目计划, 应该要做哪些估算?PROBE 方法充当什么角色。

image-20240102225415965

  • 虚线框即为 PROBE, 用来完成规模和资源的评估

【2020】请结合软件开发的特点介绍软件项目管理中自主型团队的必要性以及自主团队应该具备的特征?

  • 软件开发是一项既复杂又富有创造性的知识工作
  • 软件开发是一种智力劳动
  • 自主团队具备如下的特点:
    • 自行定义项目的目标
    • 自行决定团队组成形式以及成员的角色
    • 自行决定项目的开发策略
    • 自行定义项目的开发过程
    • 自行制定项目的开发计划
    • 自行度量、管理和控制项目工作

【2020】请描述一下 PROBE 方法的基本原理和过程, 并解释在应用 PROBE A 方法估算时间的时候, 为什么不用历史数据中的生产效率数据

  • 原理
    • 设立合理的代理作为精确度量和早期规划需要的度量之间的桥梁
    • 相对大小, 而非绝对大小
  • 过程
    image-20240102230117270
  • 不适用生产效率的理由: 在估算资源需求(例如, 人时)的时候, 生产效率一般在分母上, 考虑到个体软件工程师生产效率波动, 易导致的估算偏差范围变大。

【2020】请描述 PROBE ABCD 方法在估算规模的时候,对历史数据的质量有什么要求?

image-20240102230231336

应该不会考吧,我都没在ppt里找到这图

【2018】软件项目管理和软件过程管理

  • 软件项目管理是应用工具、方法、技术和人员能力来完成软件项目,实现项目目标的过程
  • 软件过程管理是为了让软件过程在开发效率、质量等方面有更好性能绩效

【2018】什么是面向用户的质量观?这对质量管理的策略有什么影响?

  • 将质量定义为满足用户需求的程度
  • 需要开发者在开发过程中考虑用户的优先级,衡量质量的高低。

【2014】马斯洛的“人的需求层次理论”描述的需求层次有哪几个?这样分层对软件开发有什么启发?

  • 生理需求、安全感、爱和归属感、获得尊敬、自我实现
  • 马斯洛的需求层次理论可用于指导激励手段的选择

【2015B】【2016】请结合 SCRUM 这种敏捷方法论述敏捷方法应该具备的特征?同时解释为何常见的若干种描述敏捷方法对立面的方法的特征(例如,严格、重型、计划驱动等等)并不合适?

  • 特征
    • 小周期迭代
    • 快速响应变更
    • 价值交付
    • 自动化
  • 特征解释:
    • 严格:所有优秀的工程方法和实践都是严格的。
    • 重型:轻量级和重型其实并没有刻画具体方法,何为重型,并没有严格定义;而且,对于变更这件事情,几乎所有方法都是限制,因此,很难说敏捷方法是轻量级方法。
    • 计划驱动:所有正式的项目都是计划驱动的,否则计划的作用无法体现

4. 十大问题相关

部分问题的答案往年题考过了,不在这里再次总结了,仅列举一下,包括:

软件项目管理和软件过程管理、估算要点、敏捷宣言、瀑布模型、CMM/CMMI

如果规模估算和时间估算都和实际情况相同,能否认为估算准确

  • 规模估算可以认为估算准确
  • 时间估算结果相同有可能是只给了这么长时间

什么叫做XX管理? 管理的要素有哪些? 如何区分有管理(或者好的管理)还是没有管理(或者不好的管理) ? 这种判断如果只能事后从结果判断,有意义吗?

  • 管理三要素:目标、状态、纠偏
  • 目标:需要量化,不能说是高质量开发,太模糊。好的例子是每千行缺陷数不超过1个
  • 状态:要做状态追踪,在项目没有完成时能否回答最终的目标能否实现
    • 例如单元测试时就回答最终每千行缺陷数能不能不超过1个
    • 可以通过构建预测模型来实现(第八讲)
    • 也可以通过数据,例如把单元测试的代码覆盖率,跟最终的交付的结果,去做一个线性回归或相关性检验,看是否强相关,然后直接控制该项数值
    • 还可以通过历史经验,例如A/FR为2.0,PQI在0.4以上
  • 纠偏:第二步中不能回答要进行纠偏

接上一问题,什么叫做软件质量? 当您宣称做了质量管理,实际上真的对质量有管理吗?

  • $Z \leftarrow Y_{i}$, $Y_i \leftarrow X_i$
    • Z 由 Y 支持, Y 由 X 支持
    • Y 关键子过程
    • X 关键子过程的关键影响因素
  • 质量计划需要有质量实践(Y, 例如单元测试阶段),还需要每个质量实践做到的程度(X)

追求高质量,质量路径

  • 各种测试
  • 进入测试之前的产物质量提升
  • 评审过程度量和稳定
  • 质量意识和主人翁态度
  • 个体review的度量和稳定
  • 诉诸设计
  • 缺陷预防
  • 用户质量观

从没有度量就没有管理/改进,到软件项目度量毫无意义,到包含2200多指标项的研发效能度量,到研发效能引发血案,这是想闹哪样? 究竟要不要度量?

  • 要度量
  • 使用 GQM 方法(一种建立软件度量体系的方法),从目标出发
    • 概念层(Goal)
    • 操作层(Question)
    • 量化层(Metrix)

例子一:PM

  • G:确保稳定性、可预测性的开发过程来满足计划的里程碑
  • Q:我的项目是否按照计划的轨迹前进,计划的里程碑都能实现嘛?
  • M:软件项目开发工作的挥发性(分支、流、统计变更管理 UCM 活动)

例子二:QM

  • G:最大化所有团队贡献者的生产力
  • Q:开发人员能够完成分配给他们的任务吗,或者他们遇到障碍了吗?
  • M:由个体或者工作组产生的项目工作的量级

定量管理的本质是什么? 用数据就是定量管理了? DevOps模式下,还需要定量管理吗?

  • 不是用数据就是定量管理
  • 定量管理范式
    • 构建定量模型:子过程能力基线、过程模型
    • 应用模型:监控影响子过程的关键因素
  • 重点:构建预测模型,通过模型指导项目实践
  • 通过各种统计方法优化模型
  • DevOps也需要定量管理,而且会做得更好
    • DevOps模式相较于传统模式:
      • 数据中人的干扰较少(传统模式中使用控制图来消除)
      • 数据量大

关于工程实践。需求分析究竟要解决什么问题? 设计究竟要设计什么? 测试的目的是什么?为实现这个目的,测试实践的重点应该是什么?

  • 需求:客户需求 vs. 产品需求
    • 客户需求:描述客户的期望,即客户对产品的要求。
    • 产品需求:描述开发团队所提供的解决方案。
    • 产品组件需求:描述组成产品的各个组件的需求规格。
  • 设计:OST, FST, SST, LST
    • 填满四个象限
    • 设计标准、复用性、可测试性、可用性
  • 测试:V & V
    • 验证(Verification)和确认(Validation)都是为了提升最终产品的质量而采取的措施。
    • 验证:确保选定的工作产品与事先指定给该工作产品的需求一致。
    • 确认:确保完成的产品或产品组件在将要使用的环境中正常工作。