软件质量保证邹波zoubo1974@sina.com内容软件质量软件质量保证:SQASQA目标SQA模型ISO9001CMMSQA支持工具软件质量•什么是软件质量–软件质量是指软件符合…的程度•明确定义的功能和性能需求•明确规定的开发标准和准则•隐含要求的其他特性–高质量的软件•能够按照预期的时间和成本提交给用户,并能够按照预期要求正确工作的软件–Scope–Time–Cost软件质量•为什么提出软件质量–软件质量不高是导致软件危机的根本原因•进度延误、预算超支•项目失败、项目终止–软件质量高可以降低总成本TOC•软件维护成本–高质量的软件可以降低维护成本,并延长软件的生命期,从而降低总成本•软件失效成本–高质量的软件可以降低软件失效导致的成本损失,从而降低总成本•怎样提高软件质量–目标•减少软件中的bug–策略•GoodEnough•Zero-Bug–方法•防止在软件中引入错误•通过检测找出软件中的错误,并解决这种错误软件质量内容软件质量软件质量保证:SQASQA目标SQA模型ISO9001CMMSQA支持工具软件质量保证:SQA•什么是SQA–SoftwareQualityAssurance–是软件工程领域中的一部分–为了确保软件开发过程和结果符合预期的要求,而建立的一系列规程,以及依照规程和计划采取的一系列活动及其结果评价•软件开发过程是按照计划和规范实施的•软件开发结果包括完整的软件和文档,并且符合可预期的目标和检验标准内容软件质量软件质量保证:SQASQA目标SQA模型ISO9001CMMSQA支持工具SQA目标•SQA总目标–减少并纠正实际的软件开发过程和软件开发结果与预期的软件开发过程和软件开发结果的不符合情况•SQA方法–通过在软件开发周期中尽可能早地预期或检测到不符合情况(错)误,来防止错误的发生,并减少错误纠正的成本•错误发现得越早,造成的损失越小,修改的代价也越小SQA目标•软件开发不同阶段:–需求分析:RequirementsAnalysis–规格定义:SoftwareSpecifications–设计:Design–编码:Coding–测试:Testing–维护:MaintenanceSQA目标•需求分析:RequirementsAnalysis–确保客户提出的要求是可行的–确保客户了解自己提出的需求的含义,并且这个需求能够真正达到他们的目标–确保开发人员和客户对于需求没有误解或者误会–确保按照需求实现的软件系统能够满足客户提出的要求SQA目标•规格定义:SoftwareSpecifications:–确保规格定义能够完全符合、支持和覆盖前面描述的系统需求•可以采用建立需求跟踪文档和需求实现矩阵的方式•确保规格定义满足系统需求的性能、可维护性、灵活性的要求•确保规格定义是可以测试的,并且建立了测试策略•确保建立了可行的、包含评审活动的开发进度表•确保建立了正式的变更控制流程SQA目标•设计:Design:–确保建立了设计的描述标准,并且按照该标准进行设计–确保设计变更被正确的跟踪、控制、文档化–确保按照计划进行设计评审–确保设计按照评审准则评审通过并被正式批准之前,没有开始正式编码SQA目标•编码:Coding:–确保建立了编码规范、文档格式标准,并且按照该标准进行编码–确保代码被正确地测试和集成,代码的修改符合变更控制和版本控制流程–确保按照计划的进度编写代码–确保按照进化的进度进行代码评审SQA目标•测试:Testing:–确保建立了测试计划,并按照测试计划进行测试–确保测试计划覆盖了所有的系统规格定义和系统需求–确保经过测试和调试,软件仍旧符合系统规格和需求定义SQA目标•维护:Maintenance:–确保代码和文档同步更新,保持一致–确保建立了变更控制流程和版本控制流程,并按照这些流程管理维护过程中的产品变化–确保代码的更改仍旧符合编码规范、通过代码评审,并且不会造成垃圾代码或冗余代码内容软件质量软件质量保证:SQASQA目标SQA模型ISO9001CMMSQA支持工具SQA模型质量管理历史质量就是产品、过程、系统符合标准要求的能力质量是生产出来的,不是检测出来的二次世界大战的美国DOD,过程控制质量存在于全部直接/间接相关的环节中Deming,日本的全面质量管理TQMQualityisFreeCrosby,预防为主,第一次就把事情做好是最经济的质量管理的灵魂在于持续改进PDCASQA模型软件质量管理相关标准和技术标准ISO9000族标准国际标准,ISO/TC176制订,适用于所有行业,其中9000-3针对软件开发行业SW-CMM标准行业标准,CMU-SEI制订和管理,针对软件开发行业TickIT标准行业标准,英国软件行业协会制定,针对软件开发行业ISO15504标准国际标准,试图结合ISO9000、CMM与软件工程概念BestPracticesRUP/XP/…项目管理技术项目:目标、起止时间、相关活动定义、计划、实施内容软件质量软件质量保证:SQASQA目标SQA模型ISO9001CMMSQA支持工具ISO9001•ISO9000族标准–一系列关于质量管理/质量保证/质量审核方面的国际标准,1983/1994/2000•9001/9002/9003/9004/9000-3–是管理思想的精华,管理工作的指导原则,也是做事方式•文档管理:写你要做的,做你所写的,记你所做的•过程控制:PDCA---计划性及持续改进–相关标准:QS9000等ISO9001•原则•原则1:以顾客为中心•组织依存于顾客。因此,组织应理解顾客当前和未来的需求,满足顾客要求并争取超越顾客期望•原则2:领导作用•领导将本组织的宗旨、方向和内部环境统一起来,并创造使员工能够充分参与实现组织目标的环境ISO9001•原则•原则3:全员参与•各级人员是组织之本。只有他们的充分参与,才能使他们的才干为组织带来最大的收益•原则4:过程方法•将相关的资源和活动作为过程进行管理,重视输入和输出,可以更高效地得到期望的结果ISO9001•原则•原则5:管理的系统方法•针对设定的目标,识别、理解并管理一个由相互关联的过程所组成的系统,有助于提高组织的有效性和效率•原则6:持续改进•持续改进是组织的一个永恒目标ISO9001•原则–原则7:基于事实的决策方法•对数据和信息的逻辑分析或直觉判断是有效决策的基础原则8:互利的供方关系•通过互利的关系,增强组织及其供方创造价值的能力ISO9001在软件企业的实施案例原则:运用项目管理技术重视质量策划重视培训和工具支持框架:质量手册、规程文件、作业指导书开发管理、体系支持•在软件企业的实施案例•角色分工PM产品经理SA系统分析员DM开发经理其他角色QA(品质保证)、MA(市场分析)、Sales(销售)、Service(服务)...TE测试工程师SE高级软件工程师TE测试工程师ISO9001•在软件企业的实施案例•产品开发规程ISO9001•在软件企业的实施案例•定制项目开发规程ISO9001•在软件企业的实施案例•体系支持规程1.管理评审规程2.质量体系文件控制规程3.内部质量体系审核规程4.纠正措施规程5.预防措施规程6.配置管理规程7.更改控制规程8.产品开发文档控制规程9.质量记录控制规程10.产品度量规程11.过程度量规程12.规则、惯例和约定控制规程13.工具和技术控制规程14.采购规程15.配套软件产品控制规程16.病毒防治规程17.产品加密规程18.培训规程ISO9001•在软件企业的实施案例•ISO9001是品质保证标准,对过程管理提出最低要求•质量保证体系根据软件工程原理自行设计和维持,满足ISO9001要求•质量策划根据项目自身特点,对质量体系进行剪裁和补充内容软件质量软件质量保证:SQASQA目标SQA模型ISO9001CMMSQA支持工具CMM什么是CMM–1980s,CMU-SEI的过程成熟度模型,针对软件企业,目前是CMMICMM与ISO9000–采用与ISO9000一致的管理思想,针对知识密集型/系统复杂型过程,尤其是软件开发过程SW-CMMCMM初始级可重复级已管理级已定义级优化级成熟度风险•作用:CPA与SPICMM•在软件企业的实施案例–历史•1997-1998:iso9001证书•1999-2000:关注CMM、RUP•1999-2001:用CMM检查/补充iso9001•2000-2001:CMM–观点•CMM与iso9001不矛盾、并且可以互补•不拘泥于形式,利用思想、关注目标和效益CMM•在软件企业的实施案例–实施原则•1、改进的原则–不要完全打破旧有体制和流程–体系和流程需要持续的改进和优化,不可松懈•2、控制点原则–注重特殊过程和关键过程,找出控制点•3、角色分工的原则–注重接口,责任落实CMM•在软件企业的实施案例–实施重点•1、风险分析和管理–预防胜于补救–SQA的目标是规避风险–测试的策略也是消除风险•2、质量计划–项目环境多变,不要试图千篇一律,针对每一个项目做出一个质量计划CMM•在软件企业的实施案例–实施重点•3、需求管理–需求管理是软件开发中的第一大风险–需求是软件开发的内在的核心驱动和最活跃因素–需求的表达和传递---UML–管理需求---与用户一同工作–需求管理---好的配置管理支持CMM•在软件企业的实施案例–实施重点•4、配置管理–配置管理是项目中最易见效的要素–要有好的工具支持(Clearcase/SourceSafe)–要有配置管理员的角色CMM•在软件企业的实施案例–实施重点•5、项目组内部工具和编码规范统一–一致比效率和个性更重要–68%的编码错误是因为没有遵从编码规范–避免误解和返工,避免工具间接口和版本不同带来的麻烦CMM•在软件企业的实施案例–实施重点•6、独立的QA和测试–人性使然»自己发现不了自己的错误»自己不愿意发现自己的错误»不愿意报告利益相关人的错误–找错是手段、度量和降低风险才是目的–本身也是管理的手段CMM•在软件企业的实施案例–实施重点•7、重视评审和落实–事先找出关键点和特殊点,注重评审的计划性和强制性,使用Checklist–规程和计划要不折不扣地执行»逐步实施»Pilot方法CMM•在软件企业的实施案例–实施重点•8、强制与培训并重–强制与培训是互补的»行为-习惯-性格-结果/命运–工具的作用»提高执行效率和管理效率»提供强制执行手段CMM•在软件企业的实施案例–实施难点•1、度量与预算–产品质量度量–质量体系有效性度量–项目进度度量–员工工作量度量CMM•在软件企业的实施案例–实施难点•2、管理和技术创新的矛盾–按部就班与反应速度•3、人员激励与规范的矛盾内容软件质量软件质量保证:SQASQA目标SQA模型ISO9001CMMSQA支持工具SQA支持工具•SQA实施要素–规范•规程、模板、指南•文档、记录–人员•分工、接口、培训、检查–技术•知识管理、工具SQA支持工具•支持工具–自行开发–厂商提供•IBMRational–OverviewofRationalProducts.ppt回顾软件质量软件质量保证:SQASQA目标SQA模型ISO9001CMMSQA支持工具