Version3.0第一章软件质量保证2本章目标•定义软件质量和软件质量保证•解释软件开发各个阶段SQA的目标•实现软件质量保证―建立质量管理体系―建立质量计划―质量保证―质量控制的输入―质量控制的手段和技巧•3开场白•世界上不存在没有缺陷的软件。•可以通过两种途径开发出没有错误的软件:–在一开始就防止引入错误。–识别潜藏在代码中的错误,找到并消灭它们。4什么是软件质量•软件质量是软件产品满足使用要求的程度。对于软件质量的衡量,就是高质量的软件系统能够准时地交付给用户,所耗费的成本不超出预算,并且最重要的是,能够正常地运行。“正常地运行”意味着该软件必须尽可能没有缺陷(bug)。•理解:–软件需求是质量度量的基础,与需求不符就是质量不高–完成的成本和完成的时间都应该在计划范围内–开发出的软件产品应该是可靠的和可维护的5软件质量保证(SQA)•质量保证是一个活动,它向所有有关的人提供证据以确立质量功能正在按需求运行的信心。•软件质量保证是一系列系统性的活动,它提供开发出满足使用要求产品的软件过程的能力证据。6软件开发各个阶段SQA的目标6-1•需求分析:–确保客户所要求的系统是可行的。–确保客户指定的需求确实能够满足他的真正要求。–避免开发者和客户之间的误解。–向用户提供为满足他所提出的需求而实际构建的适当软件系统。7•软件规格说明:–通过建立需求跟踪文档,确保规格说明书与系统需求保持一致。–确保规格说明书能适当地改进系统的灵活性、可维护性以及性能。–确保已建立了测试策略。–确保已建立了现实的开发进度表,包括预定的评审。–确保已为系统设计了正式的变更规程。软件开发各个阶段SQA的目标6-28软件开发各个阶段的SQA目标6-3•设计:–确保已建立用于描述设计的标准,并且确保遵循这些标准。–确保适当地控制并用文档记录对设计进行的变更。–确保在系统设计组件已按照商定的准则得到批准之后才开始编码。–确保对设计的评审按照进度进行。9软件开发各个阶段的SQA目标6-4•编码:–确保代码遵循已建立的风格、结构和文档标准。–确保代码经过适当测试和集成,同时对编码模块的修改得到适当的标识。–查看代码编写是否遵循既定的进度。–确保代码评审按照进度进行。10软件开发各个阶段的SQA目标6-5•测试:–确保测试计划的建立和遵循。–确保创建的测试计划能够满足所有系统规格说明书的要求。–确保经过测试和返工后软件与规格说明书保持一致。11软件开发各个阶段的SQA目标6-6•维护:–确保代码和文档的一致性。–确保对已建立的变更控制过程进行监测,包括将变更集成到软件的产品版本中的过程。–确保对代码的修改遵循编码标准,并且要对其进行评审,不要破坏整个代码结构。12实施质量管理•质量管理的发展和趋势•质量管理体系•建立质量计划•质量保证•质量控制的输入•质量控制的手段和技巧质量控制的输出13质量管理发展五个阶段1900手工操作者专职检验员1920过程统计技术1931全面质量管理19602000以顾客为中心阶段时间14质量管理发展趋势•核心:由对结果的检验转向对过程精细的控制•改变:-管理范围的改变:由针对以产品生产制造服务质量管理扩大到行政部门工作质量。-关注焦点的转移:由面向以产品生存周期的服务质量管理转向顾客满意为中心质量管理。15软件产业要经历三个不同时代•结构化生产时代(70年代中期至90年代中期):结构化分析;结构化设计;结构化程序设计;结构化测试;结构化审查与走查。•以过程为中心的时代(从80年代中期至2010年前后):寓质量和效率于生产过程之中;关于软件过程的主要流派(ISO9000,CMM)。•软件工业化生产时代(1995年开始):基础技术(软件过程技术,面向对象技术,基于构件的开发技术);主要问题(标准化,产业文化,政策法规);对前途的估计(我国2005年可以进入软件工业化生产时代)。16项目质量管理总览图17项目质量管理定义•项目质量管理–质量管理需要保证整个项目都要满足设计时的需要–项目质量管理包括了所有的活动,这些活动决定了质量策略、质量目标和责任。而这些都需要被质量计划、质量控制、质量保证和质量改进等活动完成。18项目质量管理的核心过程•三个核心过程:–质量管理–确认质量标准是关于项目目的、项目管理者、项目使用者这方面决定的–质量保证–评估整个项目满足相关的质量要求–质量控制–监控记过符合相应质量标准,可以进行检查,满足项目管理者以及整个项目组的要求19制定质量计划•质量计划–描述相关质量标准并且说明如何满足相应标准•输入质量计划–质量策略–一个组织中有关管理层对于质量的定义和方向–范围描述–产品说明–标准和规则–其他过程输出–其他领域的相关知识20质量计划的手段和技巧2-1•质量计划的工具和技巧–效益成本分析–考虑市场,就意味着减少返工;成本是与质量管理活动有关的费用–基本水平标准–比较实际或者计划中其他项目实施中的情况–流程图因果图21质量计划的手段和技巧2-2系统或程序流程图–试验设计–一种分析技巧,有助于鉴定哪些变量对整个项目的成果产生最大的影响22质量计划的输出•质量计划的输出–质量管理计划–说明项目管理小组如何具体执行它的质量策略;–操作性定义–用非常专业化的术语描述各项操作规程的含义,以及如何通过质量控制程序对它们进行检测。–审验单–用以证明一系列步骤是否已经得到贯彻实施–对其他程序的输入–可以在其他领域提出更长远的要求23质量计划中的输出总览图24质量保证•质量保证–为了提供信用,证明项目将会达到有关质量标准,而在质量体系中开展的有计划、有组织的工作活动•质量保证的输入–质量管理计划–质量控制结果–操作性定义25质量保证的手段和技巧•质量保证的手段和技巧–质量计划的手段和技巧–质量审查–质量审查是对其他质量管理活动的结构性复查•质量保证的输出–质量改进–质量提高包括采取措施提高项目的效益和效率,为项目相关人员提供更多的利益26质量控制•质量控制–包括监控特定的项目成果,以判定它们是否符合有关的质量标准,并找出方法消除造成项目成果不令人满意的原因。–预防(不让错误进入项目程序)和检验(不让错误进入客户手中)–静态调查(其结果要么一致,要么不一致)和动态调查(其结果依据衡量一致性程度的一种持续性标准而评估)–确定因素(非常事件)和随机因素(正态过程分布)–误差范围(如果其结果落入误差范围所界定的范围内,那么这个结果就是可接受的)和控制界限(如果其成果落入控制界限内。那么该项目也在控制之中。)27质量控制总览图28质量控制的输入•质量控制的输入–项目成果–包括程序运行结果和生产结果–质量管理计划–操作性定义–审查单29质量控制输入图30质量控制的手段和技巧2-1•检验-包括测量、检查和测试等活动,目的是确定项目成果是否与要求相一致•控制表-控制表是根据时间推移对程序运行结果的一种图表展示。•排列图-是一种直方图,由事件发生的频率组织而成,用以显示多少成果是产生于已确定的各种类型的原因的。如下图。31质量控制的手段和技巧2-2•抽样调查统计•流程图•趋势分析32质量控制的输出•质量控制输出–质量提高–可接受的决定(接受/拒绝)–返工–返工是有缺陷的、不符合要求的产品变为符合要求和设计规格的产品的行为。–完成后的审验单–程序的调整-程序的调整指作为质量检测结果而随时进行的纠错和预防行为。33总结•软件质量的衡量标准是可以准时地交付给用户,所耗费的成本不超出预算,并且最重要的是,能够正常地运行。•SQA的目标是通过在开发周期的早期阶段发现错误来降低解决问题的成本。•SQA应用于软件开发的每个阶段,每个阶段都有其自己的质量标准。•实施质量管理中,要注意构建自己的管理体系,包括:构建质量计划、建立质量保证、建立质量控制等