通过软件质量优化(SQO)来提升应用质量
竞争优势开始于在整个软件应用生命周期中执行质量保证
前言
软件行业有一个众所周知的说法:从现在起三年以后,没有人会记得你是否推迟了几个月才发布一个出众的新版本软件,他们将会记得你是否发布了有问题的软件。只要质量有一次不过关,之后就需要多次改良,才能扭转人们对该软件质量的消极印象。
我们已经进入新一轮的经济发展环境中,严格控制预算和投资更谨慎,这些IT挑战逐渐成为企业以发展为导向的愿景策略的组成部分。尽管这类举措产生的积极影响显而易见,不过,目前的技术状况显然不同于我们上一轮经济发展中的状况。我们在对异构系统、信息孤岛和遗留应用进行集成中有所收获,但我们在质量、控制和客户满意度方面却有所损失。我们把这些系统和技术称作“关键任务”。
通过软件质量优化(SQO)来提升应用质量
当今企业的CEO都希望每一次投资决策都能够体现出业务价值。从行政部门到各部门的管理人员,所有的职能部门都要面对与实现上市速度相关的特定目标的挑战,同时还要能交付改善的流程。当然,最终的目标是增大市场份额,而这需要企业所做的所有事情都具有竞争优势才能做到。
当对特定战略目标起支持作用的应用得到更快的开发和部署,并且质量过硬时,竞争优势就产生了。实际上,竞争优势是从如何定义和开发这些应用开始的。然而,需要实施的压力已经造成几种市场状况,使应用管理团队遇到新的障碍。例如,把软件外包到国外去做,会是满足成本限制的合理选择,除非由于缺乏成熟经验、项目的前景不明朗,或是外包商与客户企业之间的协作不理想,未能实现价值承诺。此外,开始使用面向服务体系架构(SOAs)可能会使开发窗口非常小,然而,很快会产生质量问题,直接影响确定的基于价值的目标。
为了获取竞争优势而进行构建
当我们进入新的经济环境后,应用管理团队必须重新思考他们组织的价值体现。他们凡事都要想到应用变得越普遍深入,就越需要构建一种即使当业务需求变化或发展情况下也能够确保一致质量的体系结构。这就意味着使质量保证深入到整个应用生命周期当中。
据美国国家标准与技术研究所(National Institute of Standards and Technology)于2004年的统计,项目80%的软件开发费用是用来确认和修改软件中的缺陷。按照目前企业管理层对速度和灵活性的要求,修理缺陷开支这么大不仅完全不必要,而且它表明企业没有尽职尽责,而且没有足够的能力使IT流程与整体的业务目标保持一致。
软件质量优化(Software Quality Optimization, SQO)是以一种确保软件质量的前瞻性做法,为了达到某一特定的目标将人员、流程和技术整合在一起:它确保软件部署与业务目标保持一致,从而获得竞争优势。软件质量优化是一种贯穿整个应用生命周期的持续、循环往复的流程,从一开始使用就能够发挥作用,最终造就零缺陷的软件。 在本文中,我们将:
• •
探究软件缺陷的实际成本,以及它们对应用性能造成的影响
质疑“测试等同于质量保证”的传统理念,并证明如何在整个应用生命周期中实施质量流程来实现性能的改善
• •
分享优化应用质量的7个最佳实践,确定实施软件质量优化流程的4个步骤
为跨整个企业,提升软件质保效率的质量优化平台下定义,向你说明投资这样的平
通过软件质量优化(SQO)来提升应用质量
台能够帮助您的企业最大程度降低与应用开发相关的成本,并使您的应用投资实现最大的投资回报。
是要更好、更快,还是更省? 您一定知道这句古谚。更有可能的情况的是,您可能亲眼见过在任何特定的软件开发工作中,以上标题中提到的三个因素中常常会实现两个。不过,当今的企业为了能够真正充分把握市场商机,其业务需求会需要同时实现以上三个因素。采用适当的软件质量优化举措之后,这三个因素都可以实现。 要了解如何做到,请继续阅读下文…
修改软件缺陷的实际成本
显而易见,存在缺陷的应用耽搁的时间越久,修改缺陷所花费的成本就越高。不过,成本到底会有多高呢?答案可能会使您大吃一惊。根据一家软件开发企业的CTO说,在开发者桌面上修改一个bug的费用为1美元,而当bug合成到完整的程序后才修改,则要花费100美元,如果等到软件已经部署到实际使用环境中才确认出缺陷,修改bug所要花费的费用就要用成千上万来计算 [1]。
Barry Boehm是软件质保领域最顶尖的专家,他在过去30年中已经出版了好几本软件质保的研究论著,说明在软件开发生命周期的各个阶段中,缺陷发现的时间越晚,消除软件缺陷所花费的成本就会呈指数级地快速增长。[2] 从最初的研究开始,Boehm的结论就在之后的研究报告当中再三得到证实 [3]。此外,据美国商务部和国家标准与技术研究所(National Institute of Standards and Technology, NIST)所作的另一项重大研究项目报告显示,在通常的软件开发项目中,80%的软件开发费用花在修改软件的缺陷上。国家标准与技术研究所的研究也预计,仅在美国,因软件质量问题而给美国国民经济每年造成的损失就高达600亿美元[4]。
120
100 改正缺陷的成本
80
60 40 20 0
需求 设计 代码 测试 运行
图 1 – 修改缺陷的成本迅速提高
通过软件质量优化(SQO)来提升应用质量
既然有那么充足的证据表明修改缺陷的费用高昂,那为什么还有那么多的企业并未采取合适的预防措施,以确保在需求和设计阶段尽早地发现、管理和改正这些缺陷?
许多企业认为软件开发生命周期是一种功能互不连贯的线性流程:设计、开发、测试和部署。实际上。软件开发生命周期是各阶段相互依赖的循环往复的功能。质量保证在生命周期的各个阶段都发挥作用,包括需求审查、测试计划、代码开发、功能测试,乃至性能测试和最终的生产阶段。
根据最近一个软件质量保证圆桌会议中一群CTO们的讨论意见,在整个开发生命周期中自始至终构建质量保证,不仅有非常充分的业务意义,而且它正在快速成为企业的标准运营程序,并且与速度、灵活性和竞争优势等相关的企业业务目标保持一致。不过,这些CTO都明确表示他们很关心流程的变更及其对通常分配给不连贯功能的时间和预算的影响。大家都一致同意,质量和质保绝非只是在开发流程的最后阶段进行严格测试那么简单。要想真正实现零缺陷软件的最终目标,关键是要在开发、部署和生产的工作中尽早开始质保举措和密切关注质保情况。
测试是否等同于质量保证?
那种在开发周期末和部署开始之前挤出一段时间用于快速测试(如果这种方法可行的话)的做法早已经过时了。那种认为可以在软件内部进行质量测试的想法也是如此。质保作为涵盖质量管理所有方面的至关重要的概念,现在已经成为软件开发实践中根深蒂固的组成部分。质保概念的范围远远超出了测试本身。软件质量优化(Software Quality Optimization)是一种整体的解决方案,涵盖整个软件应用生命周期中企业所作的一切事情。
质量框架,如CMM®/CMMI® (软件生产能力成熟度模型/能力成熟度模型集成)和ISO®9001 Quality Management System(ISO® 9001品质管理系统) 充分体现了质量控制理念 ---它们在对生命周期各阶段进行定义和记录的基础上提出流程建议。由于企业规模及所属行业不同,这些质量框架应用时可能会天衣无缝,也可能需要量身定做后才能满足企业需要。对于尊重顾客、负责任的企业来说,无论选择哪种框架,质量总是不变的宗旨。
新近兴起的 Agile 开发规范,其奠基理念就是“测试第一”;不过只有测试还不够,全面质量管理并不止于此。在从需求定义到设计及编码的整个开发过程中,其他质量管理手段,如同事互查和易测试性设计,都可以应用。同时,也可以运用功能日益强大的质量管理自动化解决方案。
在一些人看来,及早测试似乎有点矛盾。毕竟,测试之前需要编码。是不是这样呢?Agile 开发团体“测试第一”这一口号彻底颠覆了这一传统理念。当然,从传统上讲,编码之前是无法测试软件的。
通过软件质量优化(SQO)来提升应用质量
但是可以对其它部分进行测试。例如,可以对需求定义进行完整性测试。如果测试人员、编程人员以及评审需求定义的分析人员之间密切合作,就可以发现并改正上游产品存在的缺陷。这一过程中如果有用户参与,并与开发人员和质量管理人员直接沟通,则更为有效。
这种早期合作使得在需求定义阶段就可以同时制定测试计划和测试用例。在第一批编码出现之前就将这些材料准备好,会明显加快测试进程,使企业获益不少。这样做还有其他好处 ----及早制定出测试计划可以在编码开始之前就找出设计中的逻辑错误,这样就避免了日后无益的改写工作。同时还可以找出软件中无法或难以得到彻底测试的部分。因此,我们鼓励易测试性设计,这样会方便日后的测试工作。
“测试本身并不会提高软件质量。测试结果只是质量指标,不能使软件质量得到提高。试图通过增加测试工作量来提高软件质量的方法,正如想通过频繁称体重来减肥一样。踏上体重计之前你的进食习惯已决定了你的体重,同理,所使用的软件开发技术也会决定能测试出多少错误。所以,如果想减肥,不要更换体重计,而是要改变饮食;如果想提高软件质量,不要单纯加大测试工作量,而是确保开发做得更好。” – Steve C. McConnell [6]
让提高具有可见性
如果想使软件开发更快、更好、成本更低,则质量优化手段应着重于提高开发和质量保证团队的生产力、减少产品中未发现的缺陷,并加强企业对市场需求的应变能力。
“软件质量优化 (SQO)”的理念会为此类工作提供强有力的支持,因为它可以对与定义、衡量、管理及加强应用程序完整性和性能有关的过程实行自动化管理。同时,也能使企业最大限度降低成本,提高成功率,并实现投资的最大潜能。
创造有利于提高软件质量的环境,可以使: 开发工作更有效,产品质量更高,因为:
在设计阶段就可以去除缺陷
工作人员得以专注于开发新功能,而不是去处理计划外返工或改正缺陷,从而提高了人员
的利用率
可以重复利用测试资产,避免了重复工作 显著降低项目失败的风险
通过软件质量优化(SQO)来提升应用质量
部署更快并且明显降低维护成本,因为:
质量控制始终贯穿于软件生命周期,从而避免项目后期出现隐患,影响软件如期发布 不同分工的质量管理人员可以相互协作,使质量资产从早期一直应用到下游阶段 更快的发现错误,从而缩短了改正错误的时间
可以发行零缺陷应用程序,避免了后端修复,从而节省大量开支
提升客户满意度并赢得竞争优势,因为:
机构更灵活,对客户的需求变化及其底层业务流程的变化反应更迅速 加速上线速度并提高企业的上市时间效率
优化软件质量的七种最好途径
软件质量优化有两个重要动因:找出能帮助企业实现业务目标的最佳实践;利用能够实施这些方法的平台。
质量控制方法包括同事互查、测试计划和测试用例开发。可以使用全面严格的测试管理手段和指标来监控应用质量以及测试工作的效果。测试自动化、测试管理及应用性能管理软件解决方案等手段可以使测试资产得到重复利用,使测试结果具有重现性,使质量指标具有可视性,而且能促进各司其职的质量管理人员相互协作,从而显著地提高劳动生产率,最终使企业达到优化软件质量的目的。
令人高兴的是,目前有许多关于系统上线前和上线后的优化软件质量的最佳实践供我们选择。而要达到质量优化目标,最直接的方法就是利用已有知识,找出能够帮助实现质量优化目标的最佳实践。
下面是七种最有效的质量优化途径。
1. 软件开发生命周期中引入同事互查机制。业界专家的研究表明,同事互查能够在软件缺陷
出现之初就将其中60-90%去除,这一数字本身就足以使同事互查列为软件质量优化的首选手段。通过这一手段,软件规范及源代码都将经过大量软件开发及质量保证人员的审查,这样,在数据成为执行代码之前就查出缺陷。
2. 开发计划过程中使用 V-模型。软件质量的 V-模型简单明了,它表明,软件开发工作开始的
同时,测试工作也在平行进行。V-模型建议企业在开发阶段就开始测试工作并对测试用例进行初期开发。在早期需求设计阶段,还不能对软件进行测试,不过这时可以根据需求及设计开始构思测试用例,这样有助于找出开发需求中的错误、含糊编码以及遗漏。
通过软件质量优化(SQO)来提升应用质量
3. 将测试计划提上日程。写出正式的测试计划及测试用例,这样测试工作会目标明确,并具有
可重复性。如果没有测试计划及测试用例,测试工作会散漫而随机,即使发现缺陷也难以再现。再者,即使这些缺陷得以改正,结果也难以验证。良好的测试计划就是一项好的测试策略,能够保证战斗力集中在最需要的地方,解决一线问题,从而最大程度满足应用要求。 4. 提高回归测试可用性。回归测试是对应用的编码进行测试,目的是防止对应用所做的改正影
响到现有功能及性能。回归测试套件通常是在以前产品版本测试用例的基础上积累起来的。开发回归测试架构时应注意其易维护性及可重复使用性。回归测试的可重复使用性对于在测试自动化中提高投资回报率有着重要作用。
5. 充分利用测试自动化解决方案可以减少大量耗时耗力的手工测试,尤其当测试需要重复多
次并占用大量资源时。重复工作多发生在回归测试中,而资源占用量最大的阶段是在QA和开发人员准备定版并发布产品时。自动化测试不仅能节省人力,而且能够记录并重复测试过程,使测试结果得到验证,从而降低了部署的风险性。
6. 质量属性测试。质量属性泛指各种软件要求,这些要求规定了系统的总体质量表现,而不是
指系统所具有的功能。最常用的质量属性包括准确性、性能、稳定性、可用性、可扩展性和易用性。
7. 争取测试管理及应用性能管理的控制权。有效的管理测试工作以及对重要质量指标进行监
控可以保证企业交付的应用达到质量目标。要保证测试应用功能达到一定的覆盖率,测试管理是最佳手段。而监控质量指标能够充分了解到开发过程中应用的质量状况。某一编码模块中的缺陷也可以凸显出应用架构和设计中的不足。同时,对缺陷解决方案趋势及缺陷密度进行监控能够为应用发布时间提供极有价值的参考标准。
通过软件质量优化(SQO)来提升应用质量
如何实施软件质量优化(SQO)
要保证稳定的质量就需要好的质量架构。这项工作需要计划、投入、设计以及制度规定。建议采取下列四步走的方针:
定义 衡量 管理 完善
图 3 - 实施软件质量优化
这一方法符合质量管理有关的行业标准,如目标问题矩阵法及6 Sigma标准。关键是要知道如何准确衡量出应用的质量,这样人们就能看到质量的提高在多大程度上提升了投资回报率。
定义:使用已知的标准体系及企业对成功的定义来明确应用质量目标及指标。
根据业务目标及现有条件确定质量标准 衡量当前质量以设定基线 定义性能的接受水平 构建质量框架
衡量: 根据质量标准衡量应用质量状况
根据定义的指标获取数据 各部分组合为整体后运行情况 衡量或跟踪各组件的性能水平 保证符合规范
保证应用对实现业务目标有促进作用
管理:管理好各方面工作以保证“质量能跟上业务变化的步伐”。
找出质量管理最佳手段
利用构建的共享质量平台实现人力、流程及技术的有效整合 提高软件整个应用生命周期的可视性
完善:了解情况后要开始行动。将改进的质量控制手段再次运用到生产流程中以便进一步提高企业利润。
灵活应对各种商业环境、新兴科技及新的规章制度 确保能预测到客户需求并满足这些变化 不断缩短产品发布周期并加快上市时间
通过软件质量优化(SQO)来提升应用质量
通过加强企业文化来不断提高产品质量
通过不懈的努力,企业将焕然一新,实现业务与软件开发工作的有机整合。这样的企业不仅能够强有力地去实现既定的目标,还可以有效地分配工作力度。长此以往,产品性能、应用质量及投资见效速度都将得到长足发展,企业的成功率总体上也就得到了提高。
质量优化平台提高整个生命周期的应用质量
软件质量优化(SQO)平台是一种自动化构架,使软件在应用生命周期中的质量得到有效提高。此平台用于自动化管理软件开发不同阶段的质量流程,因此流程中与质量控制相关的信息得以流通,整个流程也得到有效整合。此构架分为三层:管理和控制、共享服务和测试引擎。
管理和控制层主要监控应用质量状况;这一层面支持以下工作: 部署前质量整体管理、部署后应用性能管理及整体缺陷/问题管理。共享服务层提供了计划及管理部门所需要的服务。测试引擎层面提供测试及监控功能。每个层面都含有功能区,是开发流程中有机整合的功能元素。
Segue® 与软件质量优化
Segue软件公司是世界上唯一专注于做软件质量优化的企业。当今世界要求企业产品上市速度要快、性价比要高,同时产品质量要好,而 Segue 的目标及战略就是集中精力帮助开发团队在这样的环境中确
通过软件质量优化(SQO)来提升应用质量
保软件的高质量部署。
SilkCentral™是 Segue 的软件质量优化平台。SilkCentral 使开发、测试与生产的工具和平台高度整合,控制软件的整个应用生命周期。管理控制板让用户可以对应用质量实行全天候观测。
结论
将质量控制工作放在开发最后阶段,而且做为见缝插针的工作去做,这样的日子一去不复返了。如今,前沿企业将软件质量优化作为一项战略工作来做。因为企业认识到,重视质量能够缩短生产周期、加快上市时间、促进质量资源的有效使用,并能降低维护成本,最终能够显著提高投资回报率。在应用生命周期中,质量工作开展的越早,越持续有效,那么企业的成功率就越大。此外,高质量的部署也会加强品牌形象并提高客户满意度。
如果应用开发后,既符合战略目标,又能够得到快速部署,则企业就在竞争中就赢得了优势。实际上,竞争优势的争夺开始于应用的定义及开发阶段。
本文详细阐述了质量不过关所造成的成本浪费。对于旧的测试理念,也就是将测试工作放在开发后期进行或者是认为测试就等于质量的做法,我们指出了其中的弊病。与此同时,我们还分析了在整个应用生命周期贯彻执行质量优化手段将如何显著提高产品性能。本文给出软件质量优化的七个最佳范例供读者参考,还由此分析出优化软件质量流程的四个步骤。本文最后对质量优化平台做了详细说明,这一平台能够使企业的质量工作得到有效提高;文章还解释了这一平台如何帮助企业在实现最大投资收益的同时,又能减少应用的开发和部署成本。
现在看一下SQO是如何让企业生产出高质量软件的。SQO的实施要从最高管理层开始,因为这一工作要涉及到企业中与质量有关的所有资源。不过,这一工作的实际效果很可观。零缺陷软件在过去是不可实现的,而使用SQO和适当的支持平台,零缺陷软件不再遥不可及。
Segue 软件公司提供了能够在整个应用生命周期中优化软件质量的解决方案。Segue推出的软件质量优化平台帮助企业降低业务风险,确保软件的高质量部署并提高投资回报率。全球范围内无数企业借助 Segue 的产品保证了服务水平,保持了竞争优势并增强了品牌形象。请访问我们的网站: http://www.segue.com.cn/ 通过软件质量优化(SQO)来提升应用质量
参考文献
本白皮书有以下两位合著者:
Ernst Ambichl, Chief Technology Officer, Segue Software
Geoff Hewson, Chief Knowledge Officer, Software Productivity Center
[1] “Building a Better Bug Trap”, The Economist, June 19, 2003
http://www.economist.com/science/tq/displayStory.cfm?Story_id=1841081
[2] Barry Boehm, Software Engineering Economics, Prentice-Hall, 1981 [3] Robert Grady, Applications of Software Measurement Conference, 1999
[4] National Institute of Standards & Technology, US Dept of Commerce, “The Economic Impacts of
Inadequate Infrastructure for Software Testing”, May 2002 [5] Martin Fowler, The New Methodology, April 2003
http://www.martinfowler.com/articles/newMethodology.html
[6] Steve C. McConnell, Code Complete: A Practical Handbook of Software Construction, Microsoft Press, 1993 [7] Don O'Neill, Peer Reviews. Encyclopedia of Software Engineering, Wiley-Interscience, 2001
Segue is a registered trademark and SilkCentral is a trademark of Segue Software, Inc. All other products and company names are either trademarks or registered trademarks of their respective companies. © 2005 Segue Software, Inc.
赛格瑞销售服务中心,领先技术与本地化服务的完美融合
北京 上海
北京市朝阳区朝外大街16号 上海市淮海中路93号 中国人寿大厦2103-05 大上海时代广场办公楼5层 邮编:100020
邮编:200021
电话:8610-8525 1878 电话:8621-6391 0808 传真:8610-8525 2360
传真:8621-6387 9923
广州
广州市天河北路233号中信广场1705室 邮编:510613
电话:8620-3891 2433 传真:8620-3891 2436
成都
成都市顺城大街308号冠城广场22楼A座 邮编:610017
电话:8628-8658 9986 传真:8628-8652 7908
因篇幅问题不能全部显示,请点此查看更多更全内容