一、学习目的与要求
- 软件质量是软件项目管理是否成功的标志;
- 质量管理是软件项目管理的关键内容;
- 了解软件项目质量管理的概念及其重要性;
- 了解质量管理过程及包含的主要活动;
- 掌握软件项目之力计划的编制依据和主要内容;
- 初步具备编制软件项目质量计划的能力。
二、学习内容
1. 质量管理概念
1. 软件质量
- 含义(识记):每千行代码中包含的缺陷数是衡量软件质量的指标;
- 特性(理解):
(1)功能性:是与一组功能及其制定的性质有关的一组属性,包括合适性、准确性、互操作性、依从性和安全性;
(2)可靠性:是与在规定的一段时间和条件下,软件维持其性能水平的能力有关的一组属性;即一个系统按照用户需求和设计者的相应设计,执行其功能的正确程度,包括成熟性、容错性和易恢复性;
(3)易用性:以一组规定或潜在的用户为软件使用对象,所需做的努力和对这样的使用所做的评价相关的一组属性,包括易理解性、易学习性和易操作性;
(4)效率:是与在规定条件下,软件性能水平与所使用资源量之间有关的属性,包括时间特性、资源特性。
(5)可维护性:是与进行制定的修改所需的努力有关的一组属性,包括易分析性、易更改性、稳定性和易测试性。
(6)可移植性:是与软件从一个环境转移到另一个环境的能力有关的一组属性,包括适用性、易安排性、一致性和易替换性。
2. 软件产品质量与过程质量
3. 软件质量保证(理解)
- 目标:
(1)通过适当的监控系统及其开发过程来保证软件质量;
(2)确保软件及其开发过程与已定的标准和规章要求完全一致;
(3)确保能及时发现产品、过程和标准的任何不足并提醒管理者注意,以便及时弥补。 - 职责:
(1)对所有开发计划和质量计划的完整性进行评审;
(2)作为审核主持人,参与设计和代码的审查;
(3)对所有测试计划是否符合标准进行评审;
(4)对所有测试结果的显著样本进行评审,以确定是否按计划执行;
(5)定期审核软件配置管理的执行情况,以确定是否符合标准;
(6)参与所有项目的各类阶段评审,如果没有达到相关标准和规程的要求,应对不符项及缺陷进行登记并跟踪解决情况。
2. 软件评审(次重点)
1. 软件评审概念(识记)
软件评审又称技术评审或同行评审,指由开发人员的技术同行在项目实施各个阶段进行的有组织的软件浏览、文档与代码审读活动,验证工作是否符合预定标准,其目的是协助软件开发人员在项目早期找出工作的错误。
2. 软件评审的实施(理解)
- 确定参加评审的人员
- 人员培训
- 评审准备
- 分发评审材料,评审员审读评审材料
- 评审会议
- 评审报告
3. 取得评审成功的关键(理解)
- 应为评审及改成评审发现的问题预留项目资源;
- 评审应以发现问题为重点;
- 保证评审的技术化;
- 制定检查单和标准;
- 限制会议人数并且检查事先做准备;
- 对所有的评审者进行有意义的培训。
3. 软件测试(重点)
1. 软件测试的概念(理解)
- 软件缺陷内容:
(1)软件未达到产品说明书标名的功能;
(2)软件出现了产品说明书指名不会出现的错误;
(3)软件功能超出产品说明书指明的范围;
(4)软件未达到产品说明书虽未指出但应达到的目标;
(5)软件界面或操作方式违反相关标准或习惯;
(6)软件测试人员认为软件难以理解,不易使用,运行速度缓慢,或者最终用户认为不好等。 - 软件测试是保证软件质量的重要组成部分。
2. 软件测试类型(理解)
- 单元测试:常采用白盒测试,主要测试程序的内部逻辑路径。
- 集成测试:按系统的构造方式分为自底向上和自顶向下测试,
- 功能测试:
- 回归测试:
- 验收及按照测试:
- Beta测试
- 配置测试:
- 兼容性测试:
- 语言测试:
- 易用性测试 :
3. 测试的原则(理解)
- 完全测试程序是不可能的
- 软件测试需要由专门的测试人员完成
- 从一开始就执行测试
- 打破对测试的过分依赖
- 为软件测试提供适当的资源
- 注意“杀虫剂”现象
4. 测试计划
- 建立每个测试阶段的目标
- 确定每项测试活动的进度和职责
- 确定工具、设备和测试库的可用性
- 建立用于计划和进行测试以及报告测试结果的规程和标准
- 制定衡量测试成功与完成的准则
5. 测试用例的开发(理解)
- 测试覆盖技术
- 单元测试中的路径选择
- 黑河测试中的路径覆盖
6. 测试的执行与报告(报告信息应有)
- 测试项目和程序名称、ID号、测试目的和对应的测试计划;
- 涉及的项目开发人员和测试人员;
- 具体测试用例名称、ID号、程序和数据,包括标识号、报告参考资料、版本和日期;
- 辅助工具、驱动程序、占位程序等;
- 测试采用的软硬件配置,包括类型、特点、模型、工程变更级别、配置联系、布局以及内存和文件地图;
- 测试结果,包括按类型和报告编号列出的所有问题、所有错误,发现这些问题和错误的测试用例以及测试操作,包括测试的时间、运行次数和人员需求的任何统计资料;
- 测试实施和监督人员的签字,已正确执行有关程序并记录结果的证明。
4. 软件缺陷跟踪(一般)
- 软件跟踪包括缺陷记录和缺陷跟踪;
- 缺陷来源于软件评审、测试的结果和其他缺陷来源;
- 缺陷的跟踪要从缺陷的发现开始,一直到缺陷改正为止;
- 缺陷报告中的跟踪信息:
(1)缺陷标识号;
(2)缺陷描述;
(3)使该缺陷出现的步骤;
(4)硬件平台信息;
(5)缺陷当前状态(是否已改正);
(6)缺陷的发现者;
(7)缺陷发现日期;
(8)缺陷的严重程度;
(9)缺陷产生的阶段(需求、体系结构涉及、详细设计、构造或集成等阶段);
(10)缺陷改正人;
(11)改正日期;
(12)改正缺陷花费的项目资源(资金、人数、小时);
(13)其他事项;
5. 软件缺陷预防
1. 问题的提出
- CMM将软件缺陷列为软件过程等级的最高级——优化过程;
2. 缺陷预防的原则(理解)
- 程序员必须对自己的错误作出评价;
- 反馈是缺陷预防的基本组成部分;
- 能解决所有问题的“万灵丹”是不存在的,软件过程改进要求每次只能清楚一个错误原因;
- 过程改进必须是整个软件开发过程的有机组成部分;
- 学会过程改进需要时间。
3. 缺陷预防的步骤(理解)
- 缺陷的发现与报告;
- 缺陷原因分析;
- 缺陷预防行动;
- 预防反馈;
- 改进过程以预防缺陷。
6. ISO 9000:2000质量认证体系(一般)
ISO 9000 族是国际标准化组织耗时多年制定出来的一套关于质量管理的国际标准。
1. ISO 9000 的概念(理解)
- 宗旨:在世界范围内促进标准化及其相关活动的开展,以便于商品及服务的国际交换,在智力、科学、技术和经济领域开展工作;
- 国际标准编号格式:ISO+标准化+[-+分标准号+]+冒号+发布年号;
- 概念:是设计质量保证与质量管理活动的一族标准的总称
2. ISO 9000 标准的8项质量管理原则(理解)
- 以客户为关注焦点:组织依存于客户,因此组织应当理解客户当前和未来的需求,满足客户要求并争取超越客户期望;
- 领导作用:领导者确定组织统一的宗旨和方向,他们应该创造并保持使员工能充分参与实现组织目标的内部环境;
- 全员参与:各级人员都是组织之本,只有他们的充分参与,才能使他们的才干为组织带走收益;
- 过程方法(是质量管理体系的基础):将活动和相关的资源作为过程进行管理,可以有效地得到期望的结果;
- 管理的系统方法:将相互关联的过程作为系统加以识别、理解和管理,有助于组织提高实现目标的有效性和效率;
- 持续改进:持续改进总体业绩应该是组织永恒的目标,其内容有:
(1)分析和评价现状,以识别改进区域;
(2)确定改进目标;
(3)寻找可能的解决方法,以实现目标;
(4)评价这些解决方法并作出选择;
(5)实施选定的解决方法;
(6)测量、验证、分析和评价实施的结果,以确定这些目标已经实现;
(7)正式采纳更改。 - 基于事实的决策方法:有效决策是建立在数据和信息分析的基础上;
- 与供应商互利的关系:组织与供应商是相互依存的,互利的关系可增强双方创造价值的能力。
3. 获得ISO 9000认证的条件和程序
- 条件:
(1)建立了符合ISO 9001:2000标准要求的文档化的质量管理体系;
(2)质量管理体系至少已运行3个月以上,并被审核判定为有效;
(3)外部审核前至少完成一次或一次以上全面有效的内部审核,并可提供有效证据;
(4)外部审核前至少完成了一次或一次以上有效的管理评审,并可提供有效证据;
(5)体系保持持续有效,并同意接受认证机构每年一次的年审和每三年一次的复审,作为对体系是否得到有效保持的监督;
(6)承诺对认证证书及认可标志的使用符合认证机构和认可机构的有关规定。 - 程序:
(1)预评审
(2)初次审核
(3)年审:抽样调查
(4)复审:三年一次审核通过发新证
7. 能力成熟度集成模型CMMI(一般)
1. CMM的提出
2. CMM的基本内容(理解)
- 模型等级:成熟度等级是妥善定义的在向成熟软件组织前景途中的平台,每一个成熟度等级为过程继续改进提供一个台阶和基础;
(1)初始级软件过程的特点是无秩序的;
(2)可重复级已建立基本的项目管理过程去跟踪成本、进度和功能性;
(3)已定义级管理活动和工程活动两方面的软件过程均已文档化、标准化并集成到组织的标准软件过程中;
(4)已管理级已采集详细的有关软件过程和产品质量的度量;
(5)优化级利用来自过程和来自新思想、新技术的先导性实验的定量反馈信息,使持续过程改进成为可能; - 关键过程域(KPA)
(1)可重复级:需求管理、软件质量保证、软件配置管理、软件项目跟踪与监督、软件项目计划、软件分包合同管理;
(2)已定义级:机构过程定义、机构过程焦点、培训大纲、软件产品工程、同行评审、组间协调、综合软件管理;
(3)已管理级:定量过程管理、软件质量管理;
(4)优化级:过程更改管理、技术更新管理、缺陷预防。
3. 从CMM到CMMI
- 软件工程CMM——SW-CMM
- 系统工程CMM——SE-CMM
- 软件采购CMM——SA-CMM
- 集成产品群组CMM——IPT-CMM
- 集成的产品和过程开发CMM——IPDD-CMM
- 人力资源CMM——P-CMM
4. CMMI的表示(理解)
- CMMI有两种表示方式:连续性表示和分阶表示,选择策略有:
(1)可以根据以前采用过的模型的表示方式选择分阶或连续模型;
(2)如果没有进行过程改进或流程重组,建议采用分阶表示;
(3)如果组织在过程改进方面具有经验,建议采用连续性模型;
(4)要注意,有时按照分阶表示方法推荐时,也不一定就不可以跨越成熟度等级进行过程改进。 - 连续性表示——6个能力等级
(1)CL0——不完备级:它的过程是一个未执行或部分执行的过程;
(2)CL1——已执行级:表示组织中有执行这一过程;
(3)CL2——受管理级:管理表示组织具有在项目级别上管理工作的能力;
(4)CL3——已定义级:指可以在组织层上对过程相关流程进行明确的定义,表示组织吸收、总结和提高了项目组的活动过程;
(5)CL5——持续优化级:对相应流程能进一步定量预测和控制,根据组织活动的成本、效率和质量要求,进一步分析流程和优化流程。 - 分阶表示——5个成熟度等级
(1)ML5持续优化级:过程性能的持续改进;
(2)ML4定量优化级:建立了关于产品质量、服务质量以及过程性能的定量目标,运用统计技术和其他定量技术对各个过程实施控制,并且把这些定量目标作为判断过程股那里成功与否的标准;
(3)ML3已定义级:是项目理解和恰当地反应项目特性的过程;
(4)ML2受管理级:该软件组织已经确保有关的过程在项目一级得到策划,形成文件,得以执行,受到监督和控制,并且能实现过程目标;
(5)ML1初始级:专门化且无序的 - CMMI两种表示的对应
(1)ML1中,软件过程的可视性是非常有限的;
(2)ML2中,客户需求和工作产品受到控制,已建立基本的项目管理实践;
(3)ML3中,盒子的内部结构,即项目定义的软件过程中的任务,具有可视性;
(4)ML4中,定义的软件
5. CMMI过程的可视性
- ML1中,软件过程的可视性是非常有限的;
- ML2中,客户需求和工作产品受到控制,已建立基本的项目管理实践;
- ML3中,盒子的内部结构,即项目定义的软件过程中的任务,具有可视性;
- ML4中,定义的软件过程得到定量使用和控制;
- ML5中,不断尝试新的改进的软件开发方法,以受控方式提高生产率和软件质量;
6. CMMI的实施
- ML1到ML2过程改进
- ML2到ML3过程改进
- ML3到ML4层次过程改进的工作展开
- ML4到ML5层次过程改进的工作展开
7. CMMI的评估
- 过程改进的标准CMMI评估方法(SCAMPI)原则
(1)高级主管部门主持
(2)关注组织的业务目标
(3)使用已文档化的评估方法
(4)使用过程参考模型
(5)为被采访者保密
(6)采用分工协作的方法
(7)集中于过程改进的后续措施 - 三个评估阶段
(1)第一阶段包括标识评估范围、拟定计划、准备评估群组、向参与者进行简要介绍、提供并检查评估调查表以及进行最初的文档评审;
(2)第二阶段集中于现场调查、进行访谈、综合信息、准备和提交评估草案、综合结论(有选择地)并确定评定及准备最终结论的提交;
(3)第三阶段涉及向主办者和现场主管提交最终结论,并收集CMMI管理机构需要的所有信息。
三、小结
- 质量是产品的固有属性,是产品性能的度量;
- 软件质量的11特性:正确性、可靠性、效率、完整性、使用性、维护性、测试性、灵活性、移植性、复用性、共运行性;
- 评价软件质量的6特性:功能性、可靠性、可用性、效率、可维护性、可移植性;
- 一个有效的软件质量保证及管理活动主要包括:软件评审、软件测试、软件缺陷跟踪和缺陷预防;
- 软件评审是指由可开发人员的技术同行在项目实施的各个阶段进行的有组织的软件浏览、文档于代码审读活动,验证工作是否符合预定的标准,其目的是协助软件开发人员在项目早期找出工作的错误;
- 软件测试是指为了寻找软件缺陷而执行程序的过程,其目的是尽可能发现软件的缺陷而不是证明软件正确;
- 缺陷跟踪包括记录和跟踪缺陷,缺陷来源于软件评审、测试的成果和其他缺陷来源。