如何提升软件产品质量产品技术部杨学明2008年6月26日决定一个软件项目成败的关键三要素不同角色传统的瀑布模型收集需求传统的V模型收集需求传统的增量开发–迭代模型收集需求敏捷软件开发(AgileDevelopment)20世纪90年代逐渐引起广泛关注的新型软件开发方法它们的具体名称、理念、过程、术语都不尽相同,但是都强调◦程序设计师团队与业务专家之间的紧密协作◦面对面的沟通(认为比书面的文档更有效)◦频繁交付新的软件版本◦紧凑而自我组织型的团队◦能够很好地适应需求变化的代码编写和团队组织敏捷软件开发宣言敏捷开发模式的最佳表述:◦人和交互重于过程和工具。◦可以工作的软件重于求全责备的文档。◦客户协作重于合同谈判。◦随时应对变化重于循规蹈矩。注:其中位于右边的内容虽然也有其价值,但是左边的内容最为重要。敏捷软件开发新挑战越来越多的企业希望采用,但没有把握习惯于传统的瀑布式产品开发流程已不满足快速发展需要,但大规模改动不现实缺少敏捷软件开发专家和人才技术人员需要观念的转变和方法培训缺乏相应的质量控制方法需要经常的和及时的质量度量、测试、决策传统的QA方法程序怎样适应敏捷软件开发?问题的提出问题的提出需求分析需求分析与用户存在语义分歧与用户存在语义分歧对问题域缺乏全面的认识对问题域缺乏全面的认识多变的需求导致效率低下多变的需求导致效率低下开发设计开发设计无法预知和降低风险无法预知和降低风险没有清晰的架构思路没有清晰的架构思路与实现难以平滑衔接与实现难以平滑衔接功能实现功能实现周期过长周期过长与分析设计脱节与分析设计脱节版本之间管理混乱版本之间管理混乱软件测试软件测试测试成本过高测试成本过高无法做到回归测试无法做到回归测试维护成本过高维护成本过高产品产品质量不可靠质量不可靠BUGBUG太多太多重用性低重用性低可维护性差可维护性差兼容性差兼容性差文档混乱文档混乱因软件质量而导致的重大事故1961年,一个简单的软件错误导致美国大力神洲际导弹助推器的毁灭.2007年4月,某软件缺陷导致某地铁系统的火灾.2007年3月,成千上万台某种型号的医疗设备被召回,只是为了修正一个软件错误2007年某天,深圳某银行软件出错,柜员机吐出2倍的金额给客户,客户排队取款。妈妈网站质量的挑战每天线上都有问题产生经常有用户投诉,交易出现异常代码可维护性差缺乏统一架构设计,对将来的扩展是一个很大挑战缺乏业务文档,很多业务流程只有少数人知道流程刚刚建立,存在质量控制方面的漏洞需求、开发和测试缺乏共识,需要培训传统的QA方法程序怎样适应敏捷软件开发?Question:谁应对产品质量负责?1.QA人员2.测试人员3.开发人员4.项目管理人员5.需求人员6.Allabove什么是软件质量用户对软件质量的评价◦没有××功能(功能)◦运行速度太慢(性能)◦有太多的错误(故障)◦软件不好改动(维护)◦界面不美观(人机界面)◦这个软件不好使用(易用性)◦……从哪些方面关注软件质量(1/3)文档文档程序代码程序代码软件产品软件产品需求分析软件设计编码标准和规范开发活动开发活动测试从哪些方面关注软件质量(2/3)软件产品◦软件需求基线文档◦软件设计文档◦源程序代码,….开发活动◦需求分析◦软件设计◦编码标准和规范从哪些方面关注软件质量(3/3)组织内部或者在项目开始之时要制定软件开发的标准和规范软件产品◦文档类:审核,产生评审报告(Review)◦代码类:测试,产生测试报告(TestReport)开发活动◦审查,产生审查报告(Review)构架是软件的蓝图谁来执行和实施软件质量保证软件项目质量保证小组(SQA小组)独立于项目开发小组具有比较大的权限如何保证软件质量项目一开始测试人员应该进入正确理解用户的要求制定标准和规范,Team统一执行审查软件开发活动测试源程序代码记录开发活动和软件产品的偏差记录所有不符合项,报告高级管理者正确理解用户的要求理解客户的要求和需要让客户参与开发,随时和客户交流,验证客户的需求◦形成文字◦软件原型◦用不同的形式表达需求成本成本产品化测试设计需求在产品化阶段,修复软...