内容


使用应用程序质量量度来提高软件商业价值

Comments

measuring tape随着企业越来越重视 IT 成本与性能,应用程序的质量量度,越来越广泛使用于程序的管理、开发与升级。虽然软件量度已存在了至少 30 多年,但是除了规模(代码行、功能点以及等等)以外的其他量度,应用却并不广泛。应用软件质量对商业价值的影响与日俱增,推动了更佳评价方法的发展。

为什么应用软件质量的影响与日俱增?

应用软件质量的影响,通常与其适用性、逆向及停机相等价。对诸如恢复系统之类的应用程序,CIO 们在历史上一直能够计算,每分钟停电所造成的经济损失。四个协同作用的因素,提升了应用软件质量的重要性,尤其是它对适用性的影响:1)程序崩溃所造成的广泛且严重的后果,2)业务敏捷度的竞争性需求,3)对供货商的依赖性,以及 4)应用软件所有权的高昂成本。

程序崩溃,虽然许多程序上的不足,只对小部分客户造成了不便,但是有时它也能威胁到业务活动。比如考虑当商业网站因故不能运行时,财政数据丢失,个人信用卡记录泄露,一部分账单不能结算,这些只是程序崩溃的部分表现,它们造成的影响,从失去客户到难以估量的损失。应用程序质量量度,为发现出可能造成损失的,潜在程序源缺陷,提供了一种强有力的分析检测手段。只要低质量的应用程序,对业务过程构成了巨大威胁,这些量度就能为企业风险分析提供凭证。

业务敏捷度,业务敏捷度,与其关键程序的软件质量特征紧密相关。今天,业务活动需要不断调整,以适应不断变化的应用程序,从而去支持业务过程及功能的变化,这种需要与日俱增。但是新的技术不需去迁就旧的平台,原有的应用程序也不需适应新的平台。而且,对新功能的追求,通常受阻于从未记录过的,低质量的平台。如果一个应用程序的质量,随时间增长而不断降低,那么它迅速执行新功能的能力,也随之而降低。应用软件的结构整体性,必须贯穿于该软件的整个生命周期内。

供货商依赖性,关键的应用软件,越来越多地由外部渠道那里获得,如承办商、供应商以及外包商。由于服务水平协议通常把注意力放在,软件交货后的表现,外部渠道获得的软件质量,很难得到控制。应用程序质量标准,对供应申请提供了一种深邃的洞察力,并对供货商及其风险提供了一种强大的管理手段。当一个全球分布的公司,发展了一种应用软件的不同组件时,其业务活动也面临着供货商带来的风险。交到用户手中的应用程序服务的质量,取决于当所有元件集成到一个应用软件系统中去时,每个小组,以一样的质量目标去实现这些目标及其评估的程度。

应用程序所有权花费,业务组织不断向其 IT 机构施压,以最小的代价获得更多的服务。降低外源的劳动力成本,只是答案的一部分。如果不去持续关注应用软件的质量,那么今天的艺术之国方案,可能就成为明天的垃圾糟粕。在应用程序生命周期内,投入到理解其结构及修复其缺陷中的时间,越来越与花费到执行新业务功能的时间相关。更糟糕的是,一个应用软件越难被理解,开发员越易在每次升级过程中,引入新的错误。除非一个应用软件的质量长期不变,在其成本及其提供的商业功能之间的关系,会不断的降低。

我们怎样去定义与业务有关过程的应用软件的质量?

为了达到以上四个趋势所需的要求,应用软件质量的定义不能局限于消除缺陷。在有关测试用例方面,可用消除缺陷来定义应用软件质量,在业务机构使用的应用方案方面,消除缺陷也是最好的滞后指示剂。而且,一个应用软件的质量,必须用能向业务机构提供最有效服务的行为及属性来定义。这是 Information Technology Infrastructure Library(ITIL)采取的一种方法,该部门在全球 IT 部门的影响力与日俱增。实际上, ITIL Version 3 定义 Quality 为“提供预定价值服务的能力”。 同样它定义 Effectiveness 为“一个应用软件的目标是否达到的度量”。

ITIL 的质量评价方法,需要业务组织去描述,它对应用软件提供服务的预期要求。历史上,商业合伙人曾致力于描述,对应用软件所提供业务服务的质量预期要求。实际上,他们并不擅长描述对应用软件的预期要求。 因此,他们不能决定,谁去开发和维护这些软件,以及预测该应用软件是否可以满足当前及未来的服务要求。不同种类的业务需求,如对敏捷性、安全性、运行性、适用性的要求,就需要对应用软件质量的不同评价方法 。

通过与 IT 客户的协同工作, CAST Software 公司从 ISO 9126 得到了软件评价方法,并通过其他渠道,得到评价应用软件质量的六项量度。这些量度,可与如表 1 所示的应用软件的商业利益相联系起来。放在一起,这些量度可以描述一个应用软件的总体质量状况,即在何种程度上,该软件是安全有效的,以及它满足当前及未来业务需求的能力。

表1:应用软件质量量度及它们对业务活动的意义

量度描述业务受益举例
可传递性该量度描述支持新团队及成员快速理解应用软件及与应用软件一起工作的能力
  • 提高在团队间应用软件的可传递性,可降低成本,提高效率。
  • 减少学习周期
  • 降低对供货商的依赖性
可变性让软件更易及更快得以修改的量度
  • 提高对市场状况及用户需求响应的业务敏捷度
  • 通过降低修改困难度,来减少应用软件所有权成本
健壮性该量度能影响应用软件的稳定性,以及修改时引进缺陷的可能性
  • 提高业务性能或服务的适用性
  • 降低程序崩溃风险的损失
  • 通过减少重复工作量,减少应用软件所有权成本
性能该量度能影响一个应用软件的性能
  • 降低由于不良服务及响应失去客户的风险
  • 提高应用软件工作人员的生产率
  • 提高作出响应及提供信息的速度
  • 提高评价应用软件的能力,以支持业务的发展
安全性该量度描述了,应用软件抵抗未授权入侵的能力
  • 提高对竞争性信息类财产的保护力度
  • 降低失去客户信任及财政损失的风险
  • 改进对安全有关标准及规则的遵循

每一个应用软件质量量度,可用质量文件中的一系列标准来测量,并在管理板上综合表达出来。它们可被开发团队用于早期检测及缺陷再评估。它们也可以用在维护期间,具体到应用软件某个特定的,需要修改的部分。它们也可用于追踪应用软件质量的变化,以确保对业务而言,软件的有效性提高了。它们也可有助于在应用软件成本及受益之间作出权衡

为什么应用软件质量在今天变得更难控制?

现代的关键业务应用软件,不再用一种,或最多两种语言,来开发一个巨型应用系统。例如,一个简单的 Java 2 平台,及 Enterprise Edition (J2EE)应用软件可能由多种技术构成,包括 JavaServer Pages/JavaServer Faces (JSP/JSF)、JavaScript™、HTML 来构成表现层,XML 来构成协作层,Java 来构成业务层,以及 SQL 来构成数据库层。因此,应用软件是一个多技术产物,并面临了在技术交界面上的产生的诸多协调性问题。由于涉及到多个语言、多个技术、多个方法及多种平台,该综合性应用软件的技术广度,超出了单个开发员,或项目团队所掌握的知识范围 。

复杂应用软件上的开发决策,涉及到了在运行性、维护性、安全性及其他质量参数之间作出权衡,没有对软件组成部分及技术相关关系的综合知识,是不可能对这些质量参数作出综合理解的。结果,诸如测试及同行评审之类的测质行为的有效性,受限于开发团队的专业知识。一次对软件质量的彻底评价,不能只依赖于人控过程,如同行评审及测试用例设计。对软件系统质量的评价必须是自动进行的,并在系统层次上进行,并能对系统的与质量有关属性,提供客观、有效的信息。

很少一部分业务关键软件是在单个项目中开发的。相反,提供功能性、数据管理、网络访问以及其他功能的多个子系统,是由不同的机构在不同的地方开发的不同项目。而大多数质量实践被设计用于单个项目,或为单个项目所用。结果,质量评价通常是在软件子系统的层次下进行的。应用软件质量必须包括了所有的子系统,并且如果业务服务的质量全部能被评价时,应用软件质量应能提供软件的所有业务功能。

我们应该怎样使用应用软件质量量度?

应用软件质量量度是通用的,可用于软件生命周期的全过程中。它们的使用可分类为四个软件生命周期功能:1)治理,2)管理,3)评估,4)改进。

治理,它包括了通常由执行者,或执行者授权后的角色所进行的行为。这些权利来自于 IT 对业务机构的权利,通常条件下是在应用软件投资组合层次上执行。关于需要协同软件质量量度的治理功能的例子,如下所示:

  • 建立投资组合层次的应用软件质量目标,其可以最佳地实现应用软件服务目标和合规需求。
  • 报告完成软件质量目标的进度,及将进度转化为有效业务利益的情况
  • 在对成本及效益等质量量度预测的基础上,作出软件投资或撤资的决定
  • 在业务服务目标、软件质量优先级以及跨应用软件投资组合的业务风险之间,作出权衡
  • 评审跨应用软件投资组合的应用软件质量量度的趋势,识别出需要的政策和行动
  • 与承包商、供货商及外包商达成关于应用软件质量要求的协议

管理,通常由项目及软件管理人员来完成这项活动,以确保软件质量目标被建立、达到,并在每一个软件中得以贯彻。这些活动监督了每一个开发中的软件正在进行的技术工作,并确保执行了必要的补救措施。现将需要与软件质量量度协同发挥作用的管理活动举例如下:

  • 将对业务服务的期望,用所要达到的应用软件质量量度来表达,且此量度可优先作为技术目标
  • 估算及策划开发资源、工作进度,以及基于应用软件质量要求的技术水平
  • 在开发及维护期间,追踪应用软件目标的完成进度,以保证进行补救行动,改正早期出现的一些问题
  • 提供关于软件开发及维护工作的回馈信息,以提高个人及团队的开发效率
  • 预测软件生命周期成本、趋势及由软件质量量度得到的业务影响

评估,这项活动由技术人员进行,使用软件质量量度来进行评估。评估行为通常由那些开发或维护一个软件的人员来进行,或者由那些执行共享技术功能,例如配置或发布管理的人员进行。基于软件质量量度的评估行为举例如下:

  • 在开发及维护过程中,对一个软件的质量目标,进行有规则的评估,以及早进行补救活动,避免在后期进行繁琐的返工工作
  • 深入到量度数据中,以指导作出技术决定,特别是那些,在开发或维护软件时,涉及到在质量量度之间作出权衡的决定
  • 评估应用软件质量量度,以确保软件符合政策及标准
  • 评估由承包商、供货商,及外包商提交的应用软件的质量量度,以确保该软件达到了,合同中对软件质量的要求
  • 评估可以在其他软件中再使用,或在组件库中,可以再利用的软件组件的质量

改进,这项活动通常由技术人员进行,以提高软件符合质量目标的程度 。而且这些活动可以同时在软件和文档中进行。需要由软件质量量度指导的改进活动举例如下:

  • 利用对应用软件质量的回馈信息,提高个人或团队的能力及效率
  • 在描述软件质量现状的文件之间,建立质量基准
  • 由软件质量特征,弄清投资趋势,以确定需要对方法、工具、进程或软件文档中的培训,所做的改进
  • 对为改进目标共同努力的承包商、供货商及外包商,所做的软件质量评估提供结果
  • 对目前的应用软件质量基线与公共基准作出比较,以找出差距和改进目标

我们如何开始?

组织范围内展开崩溃的风险是巨大的。在开发及维护过程中改进软件的丰富经验,以及开发软件技术的基础上,我们的建议很简单:做一次试点实施!通过在一次试点中,和单个软件或一系列相关软件一起,初始使用应用软件质量量度,你将得到:

  • 对部署及使用状况更严格的控制
  • 一个对成功有着坚定信念及追求的赞助者
  • 集中的支持力量以确保成功
  • 从一次成功事件中得到的公信力
  • 得到经验,帮助你调整并改善部署策略

甚至当一个组织范围内的部署已被策划好时,最好的方式仍然是,从一次试点实施开始,从而指导怎样部署是最好的实践方式,什么样的技术是最有效的。为了最好的利用一次试点带来的益处,软件质量改进方案应该由一个坚定的赞助者与项目或软件管理人员发起,他们对执行的结果充满希望,并愿意对部署方案提供领导权。因为被分配到一个应用软件工作的人员,已经对已有的工作应接不暇,所以再向他们增加重要的新职责,收集及说明软件质量量度,可能为部署方案的成功带来不确定的风险。在使用软件质量量度的早期阶段,如果能得到评估及回馈行为的外部支持,则会更加有效。

随着一个开发机构获得了对早期部署的少量经验,它就可以开始集成软件质量活动为标准过程,并确定进行该项操作的工作人员。收集质量度量可以成为一个标准的任务,并纳入构建程序中,一个独立的创建或配置管理的功能能支持该程序。对质量量度的理解及使用,可得到生产及进程保持人员的支持帮助 ,这些人员,拥有组成大多数软件,以及以最有效的方式使用量度结果的渊博知识。

软件质量量度的最终价值,取决于开发员们对它们的使用情况。这些量度的使用,必须集成到定义开发及维护过程中去,从而可以策划及追踪这些量度。在一个技术人员,对他们提供给商业合伙人的软件服务引以为豪的环境下,质量量度被当作一个达到专业目标的有力辅助工具,而不是对某个私人竞争的痛苦评价。

一个机构越自觉地采取措施,控制它的表现及结构时,它提供给商业合伙人的软件增值的速度就越快,它发挥的影响力就越大。对商业机构关键的应用软件的复杂性,使对质量的控制超出了个人的能力,不管这个人是多么的能干,这时就需要软件质量量度提供的深邃的洞察力。他们采用质量量度的速度,最终会转化成业务上的敏捷度及竞争力 。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=331286
ArticleTitle=使用应用程序质量量度来提高软件商业价值
publish-date=08182008