• 1. 软件质量保证
  • 2. 讲授内容软件项目案例 软件质量 软件质量保证 软件质量保证计划及其实施 CMM对软件质量保证的要求 (软件过程能力成熟度模型)©Copyright Xinjun Mao 20052第8讲 软件质量保证
  • 3. 软件项目案例案例角色和人物小王:软件项目负责人老王:公司技术老总开发小组:小李,老赵,小田,小谢©Copyright Xinjun Mao 20053第8讲 软件质量保证
  • 4. 要确保软件系统的质量(1/4)软件项目已经开始实施,工作完全按照计划的要求进行,一切似乎非常顺利 按照计划要求,需求分析小组在需求分析截至时间的前一天撰写好了软件需求规格说明书,项目经理对他们的进度感到满意,因为他们没有拖延时间和进度 由于进度的紧迫性,需求分析完成后的第二天,项目开发组马上转入到了软件设计阶段的工作,令人欣慰的是软件设计的工作同样进展顺利,并且提前一周完成软件设计工作,撰写了软件设计规格说明书 尽管软件设计提前完成,项目组仍然决定立即进入编码阶段的工作,期望能够尽快完成在进度约束范围内完成编码工作,提交软件产品©Copyright Xinjun Mao 20054第8讲 软件质量保证
  • 5. 要确保软件系统的质量(2/4)各个程序员工作的非常卖力,已经编写了各个软件模块并且对所编写的各个软件模块进行了测试,认为软件已经没有什么大的问题,即使有也是微不足道的,最终将目标软件提交给了用户 用户在使用了该软件后发现了诸多的问题,用户对项目组的工作很有意见,于是项目组不得不重新作需求分析 软件没有完全满足他的要求 有些软件功能与他所想象的不一致 软件系统不稳定,经常出现死机现象 在将用户需求了解清楚之后,设计小组对该软件重新进行改造,发现软件结构不好,要对软件进行调整和修改非常困难©Copyright Xinjun Mao 20055第8讲 软件质量保证
  • 6. 要确保软件系统的质量(3/4)然而为了完成项目的要求,设计小组只好硬着头皮对软件设计进行修改和调整 经过调整后的软件系统问题更多,系统不稳定,有大量的错误,软件变得极为脆弱,为此项目组不得不推翻原有的设计,对整个软件重新进行设计和编码 项目最终在拖延了8个月后交货,然而此时项目组成员已经筋疲力尽 回顾整个项目的历程,项目组成员发现导致这种状况的主要原因是在整个项目实施过程中,项目组没有对项目进行有效的质量监控 软件开发项目如果不吸取该项目的经验教训,相信会重新犯这样的错误,经历这样的恶梦©Copyright Xinjun Mao 20056第8讲 软件质量保证
  • 7. 要确保软件系统的质量(4/4)有关软件质量的一些数据 20世纪80年代欧洲的“亚利安娜”火箭发射的失败 由于软件出现问题,美国DoD推迟B1轰炸机的部署 由于软件出现问题,美国DoD取消了耗资580亿美元的A12飞机的计划 大量的软件由于质量得不到保证,在交付给用户使用之后不得不被抛弃©Copyright Xinjun Mao 20057第8讲 软件质量保证
  • 8. 案例提示我们质量保证是极为重要的 在软件项目实施过程中必须提供待开发软件质量的可视性 缺乏质量保证,将会导致所开发的软件不能满足用户的期望和要求 缺乏质量保证,将会导致整个软件项目延期,甚至失败©Copyright Xinjun Mao 20058第8讲 软件质量保证
  • 9. 软件项目管理问题什么是软件质量? 如何确保所开发软件的质量?©Copyright Xinjun Mao 20059第8讲 软件质量保证
  • 10. 讲授内容软件项目案例 软件质量 软件质量保证 软件质量保证计划及其实施 CMM对软件质量保证的要求©Copyright Xinjun Mao 200510第8讲 软件质量保证
  • 11. 软件质量什么是软件质量? 为什么需要关注软件质量? ©Copyright Xinjun Mao 200511第8讲 软件质量保证
  • 12. 什么是软件质量(1/3)软件质量的概念定义 软件产品满足用户要求的程度 注意 要从客户(而不是开发人员或者企业)的角度看质量 测试 软件质量的内外因素 外在因素:软件所提供的功能、性能、人机交互界面是否美观、易于操作 内在因素:软件的设计好坏、故障的数目和严重程度©Copyright Xinjun Mao 200512第8讲 软件质量保证
  • 13. 什么是软件质量(2/3)影响软件质量的具体因素 ©Copyright Xinjun Mao 200513第8讲 软件质量保证
  • 14. 什么是软件质量(3/3)用户对软件质量的评价 没有××功能(功能) 运行速度太慢(性能) 有太多的错误(故障) 软件不好改动(维护) 界面不美观(人机界面) 这个软件不好使用(易用性) ……©Copyright Xinjun Mao 200514第8讲 软件质量保证
  • 15. 为什么需要关注软件质量?高质量的产品才能 提高客户满意度,占领市场 降低软件开发的风险 确保软件项目按照计划实施 防止软件项目由于质量问题而流产或者失败 提高企业的影响力©Copyright Xinjun Mao 200515第8讲 软件质量保证
  • 16. 讲授内容软件项目案例 软件质量 软件质量保证 软件质量保证计划及其实施 CMM对软件质量保证的要求 ©Copyright Xinjun Mao 200516第8讲 软件质量保证
  • 17. 软件质量保证什么是软件质量保证 从哪些方面关注软件质量 谁来保证软件质量 如何保证软件质量©Copyright Xinjun Mao 200517第8讲 软件质量保证
  • 18. 什么是软件质量保证(1/2)什么是软件质量保证 为管理层提供为获知产品质量信息所需的数据,从而获得产品质量是否符合预定目标的认识和信息 软件质量保证是要为软件产品的质量提供某种可视性,知道哪些地方有质量问题,便于改进方法和措施,提高软件产品的质量 例如,对软件进行测试,发现有哪些错误,这些错误的性质(严重、一般)©Copyright Xinjun Mao 200518第8讲 软件质量保证
  • 19. 什么是软件质量保证(2/2)软件质量保证要做的事情 了解产品质量(例如,软件测试) 提交软件质量报告(例如,软件测试报告),说明质量问题 为项目组和管理层服务(例如,告诉问题所在,便于改进管理和技术) ©Copyright Xinjun Mao 200519第8讲 软件质量保证
  • 20. 从哪些方面关注软件质量(1/3)文档程序代码软件产品需求分析软件设计编码标准和规程开发活动©Copyright Xinjun Mao 200520第8讲 软件质量保证
  • 21. 从哪些方面关注软件质量(2/3)软件产品 软件需求规格说明书 软件设计规格说明书 源程序代码,…. 开发活动 需求分析 软件设计 编码 标准和规程©Copyright Xinjun Mao 200521第8讲 软件质量保证
  • 22. 从哪些方面关注软件质量(3/3)组织内部或者在项目开始之时要制定软件开发的标准和规程 软件产品 文档类:审核,产生审核报告 代码类:测试,产生测试报告 开发活动 审查,产生审查报告©Copyright Xinjun Mao 200522第8讲 软件质量保证
  • 23. 谁来执行和实施软件质量保证软件项目质量保证小组(SQA小组) 独立于项目开发小组 具有比较大的权限©Copyright Xinjun Mao 200523第8讲 软件质量保证
  • 24. 如何保证软件质量正确理解用户的要求 制定标准和规程 审查软件开发活动 审核软件工作产品 测试源程序代码 记录开发活动和软件产品的偏差 记录所有不符合项,报告高级管理者©Copyright Xinjun Mao 200524第8讲 软件质量保证
  • 25. 正确理解用户的要求理解客户的要求和需要 让客户参与开发,随时和客户交流,验证客户的需求 可用性测试(版) 合作开发 伙伴关系 软件原型©Copyright Xinjun Mao 200525第8讲 软件质量保证
  • 26. 制定标准和规程在组织内部或者项目组内部制定标准和规程,限制和约束软件开发活动,有助于得到规范化的软件产品,从而提高软件质量 软件开发过程规程 需求管理规程 软件需求规格说明书编写规范 C++编码规范 Java编码规范,……©Copyright Xinjun Mao 200526第8讲 软件质量保证
  • 27. 审查软件开发活动审查每个活动是否遵循软件开发过程规范 审查每个活动的输入条件是否都得到满足 审查活动的执行是否遵循规范 审查每个活动的输出是否都已经产生©Copyright Xinjun Mao 200527第8讲 软件质量保证
  • 28. 审核软件工作产品审核软件工作产品 遵循规范 正确 一致 准确 可追踪性 ….©Copyright Xinjun Mao 200528第8讲 软件质量保证
  • 29. 测试源程序代码制定测试计划对软件进行测试 单元测试 集成测试 确认测试 系统测试©Copyright Xinjun Mao 200529第8讲 软件质量保证
  • 30. 记录开发活动和软件产品的偏差形成报告 记录软件开发活动的偏差 记录软件产品的偏差-软件测试报告 目的 发现问题,纠正偏差,提高质量©Copyright Xinjun Mao 200530第8讲 软件质量保证
  • 31. 报告高级管理者目的 为管理者管理了解软件的质量提供可视性©Copyright Xinjun Mao 200531第8讲 软件质量保证
  • 32. 讲授内容软件项目案例 软件质量 软件质量保证 软件质量保证计划及其实施 CMM对软件质量保证的要求©Copyright Xinjun Mao 200532第8讲 软件质量保证
  • 33. 软件质量保证计划及其实施(1/2)为了确保软件系统的质量,在软件开发早期就要制定软件质量保证计划©Copyright Xinjun Mao 200533第8讲 软件质量保证
  • 34. 软件质量保证计划及其实施(2/2)1.计划和目的 2.参考文献 3.管理 3.1 组织 3.2 任务 3.3 职责 4.文档 4.1目的 4.2 所需的软件工程文档 4.3 其他文档 5. 标准、实践和约定 5.1目的 5.2 约定6.复审和审查 7.测试 8.问题报告和改正行动 9.工具、技术和方法学 10.代码控制 11.媒体控制 12.供应商控制 13.记录收集、维护和保留 14.培训 15.风险管理 ©Copyright Xinjun Mao 200534第8讲 软件质量保证
  • 35. 讲授内容软件项目案例 软件质量 软件质量保证 软件质量保证计划及其实施 CMM对软件质量保证的要求 ©Copyright Xinjun Mao 200535第8讲 软件质量保证
  • 36. CMM对软件质量保证的要求(1/3)软件质量保证是CMM 2级的一个关键过程域 所谓软件质量保证是指为管理者提供有关软件项目过程和产品的适当的可视性 软件质量保证包括评审和审核软件产品和活动,以验证它们是否符合相应的规程和标准,同时给项目和其它有关负责人提供这些评审和审核的结果 在软件项目的早期阶段,软件质量保证组就应参与制定计划、标准和规程等。它们能够降低软件项目成本,并满足项目和组织和策略的约束条件©Copyright Xinjun Mao 200536第8讲 软件质量保证
  • 37. CMM对软件质量保证的要求(2/3) SQA小组在整个生存周期中评审项目各种活动,审核各种软件工作产品,并就软件项目是否正遵守已制定的计划、标准和规程等给管理者提供可视性 对于那些无法在软件项目内部解决的问题,软件质量保证组逐级上递该问题到恰当的管理者以求得解决 ©Copyright Xinjun Mao 200537第8讲 软件质量保证
  • 38. CMM对软件质量保证的要求(3/3)共17个关键实践关键实践类关键实践数目制定方针政策1确保必备条件4实施软件过程8度量和分析1检查实施情况3©Copyright Xinjun Mao 200538第8讲 软件质量保证
  • 39. 目标软件质量保证活动是有计划的 软件产品和活动与其适用的标准、规程和需求的一致性已得到客观地验证 受影响组和个人接到软件质量保证活动和结果的通知 高级管理者处理在软件项目内部不能解决的不符合问题 ©Copyright Xinjun Mao 200539第8讲 软件质量保证
  • 40. 制定方针政策项目遵循一个书面的、由组织制定的实施软件质量保证(SQA)的方针,一般规定 对全部软件项目,SQA功能都应到位 SQA应有一个向高级管理者报告的渠道,它独立于项目负责人和项目软件负责人 高级管理者定期地评审SQA活动和结果 ©Copyright Xinjun Mao 200540第8讲 软件质量保证
  • 41. 确保必备条件(1/4)存在一个SQA小组,负责协调和实施软件项目的质量保证©Copyright Xinjun Mao 200541第8讲 软件质量保证
  • 42. 确保必备条件(2/4)为进行SQA活动提供足够的资源和经费 指派一个负责人专门负责项目的SQA活动 指派一个在SQA任务方面是博学的,并有权力采取适当的监督行动的高级负责人接受和处理软件的不符合问题 能得到支持SQA活动的工具 ©Copyright Xinjun Mao 200542第8讲 软件质量保证
  • 43. 确保必备条件(3/4)SQA小组的成员受到培训以便完成他们的SQA活动,培训内容包括: 软件工程技巧和实践; 软件工程组和其它软件有关组的作用及职责; 用于软件项目的标准、规程和方法; 软件项目相关的应用领域; SQA的目的、规程和方法; SQA组如何参与软件活动; SQA方法和工具的有效使用; 人员间的交流 ©Copyright Xinjun Mao 200543第8讲 软件质量保证
  • 44. 确保必备条件(4/4)软件项目的成员接受有关SQA组的作用、职责、权力和价值等方面的定向培训©Copyright Xinjun Mao 200544第8讲 软件质量保证
  • 45. 实施软件过程(1/8)按照文档化的规程,为软件项目制订SQA计划,一般规定 SQA计划的制定是在整个项目策划的早期阶段进行,并且平行于整个项目计划 受影响组和个人评审该SQA计划 SQA计划应受管理和控制 ©Copyright Xinjun Mao 200545第8讲 软件质量保证
  • 46. 实施软件过程(2/8)按照SQA计划进行SQA组的活动,SQA计划的内容包括 SQA组的职责和权力 SQA组的资源需求(包括职员、工具和设施) 项目的SQA组活动的进度表和经费 SQA组参与制定项目软件计划、标准和规程的安排 将由SQA组完成的评价 将由SQA组执行的审核和评审 将用作SQA组评审和审核的的标准和规程 对不符合性问题写成文档并进行跟踪直至结束的规程 要求SQA组生成的文档 SQA活动给有关组提供反馈信息的方法和频率 ©Copyright Xinjun Mao 200546第8讲 软件质量保证
  • 47. 实施软件过程(3/8)SQA组参与准备和评审项目的软件开发计划、标准和规程 SQA组就下列几个方面对计划、标准和规程提供咨询和评审 与组织制定的方针的符合性 与外部强加的标准和要求的符合性(例如工作说明所要求的标准) 适合项目使用的各种标准 应在软件开发计划中应阐述的论题 SQA组验证软件开发计划、标准和规程已经到位,并可用于评审与审计软件项目©Copyright Xinjun Mao 200547第8讲 软件质量保证
  • 48. 实施软件过程(4/8)SQA组评审软件工程活动以验证其符合性 对照软件开发计划和指定的软件标准和规程,评价各项活动 对与软件开发计划、标准和规程的偏差进行标识和写成文档,并跟踪到结束 对纠正结果进行检查验证 ©Copyright Xinjun Mao 200548第8讲 软件质量保证
  • 49. 实施软件过程(5/8)SQA组审计指定软件工作产品以验证其符合性 在交付给顾客之前,评价可交付的软件产品 对照指定的软件标准、规程和合同要求,评价各种软件工作产品 对与软件开发计划、标准和规程的偏差进行标识和写成文档,并跟踪到结束 对纠正结果进行检查验证 ©Copyright Xinjun Mao 200549第8讲 软件质量保证
  • 50. 实施软件过程(6/8)SQA小组定期向软件工程组报告其活动的结果 ©Copyright Xinjun Mao 200550第8讲 软件质量保证
  • 51. 实施软件过程(7/8)按照文档化的规程,对软件活动和软件工作产品中标识出的偏差写成文档,并加以处理 将不符合软件开发计划和指定的项目标准及规程的问题写成文档,并与有关人员一起加以解决 将那些不符合又不能解决的问题,写成文档并递交给分管质量保证的高级管理者处理 定期评审不符合问题,直至解决它们为止 不符合问题的文档应受管理和控制 ©Copyright Xinjun Mao 200551第8讲 软件质量保证
  • 52. 实施软件过程(8/8)合适时,SQA组与顾客的SQA人员一起对其活动和发现进行定期评审©Copyright Xinjun Mao 200552第8讲 软件质量保证
  • 53. 度量与分析进行度量,并将度量结果用于确定SQA活动的成本和进度状态 SQA活动的里程碑的完成情况与计划作比较 在SQA活动中完成的工作、花费的工作量和消耗的资金与计划作比较 进行产品审计和活动评审的次数与计划相比较 ©Copyright Xinjun Mao 200553第8讲 软件质量保证
  • 54. 验证实施(1/3) 高级管理者定期参与SQA活动的评审©Copyright Xinjun Mao 200554第8讲 软件质量保证
  • 55. 验证实施(2/3)项目经理既定期地也事件驱动地参与SQA活动的评审 ©Copyright Xinjun Mao 200555第8讲 软件质量保证
  • 56. 验证实施(3/3)独立于SQA组的专家们定期对项目SQA组的软件工作产品和活动进行评审 ©Copyright Xinjun Mao 200556第8讲 软件质量保证
  • 57. 教学目的理解 软件质量和软件质量保证概念 软件质量保证的重要性和意义 掌握 软件质量保证的方法和手段 软件质量保证计划 运用 在软件项目开发过程中对软件质量进行保证©Copyright Xinjun Mao 200557第8讲 软件质量保证