炼就高品质软件

时间:2022-07-05 07:07:19

炼就高品质软件

傅纯一

IBM中国区Rational软件技术经理

在Rational中国工作5年时间,曾经为国家税务总局、香港机场管理局、工行软件开发中心、中远集运、中国移动、华为、中兴通讯等多家客户提供过软件工程技术咨询服务。在软件工程技术方面有着多年的实践经验,对于Rational的软件工程技术有着深刻的理解,目前主要专注于软件开发流程改进和面向对象可视化建模技术的研究。

对于一般物品而言,比如电器、服装等,质量上的缺陷也许会导致功能上的不健全,但一般不会影响常规应用。软件则不然,其系统性强的特点,往往会使其整体功能受制于一个Bug;而作为企业业务的执行者,软件在质量上的任何差池,都会给业务发展带来致命一击。

其实,早在2003年Gartner公司就宣布:“软件质量是中国软件行业的发展瓶颈。”这既表明软件质量是一个足以引起重视的客观问题,也表明质量问题的存在必将阻碍软件在业务应用中的推广。毋庸置疑,品质就是软件的生命,也是软件所业务的生命。

补救不如防范

在与业务关系日益紧密的同时,软件的质量也被赋予更丰富的内涵、人们从更多的角度去考量软件质量:

首先,所交付的软件是否具有健全的功能,以保障业务平稳运行?

其次,服务业务的软件能否按时交付,以为业务发展争取更充裕的时间?

最后,作为业务成本一部分的软件成本是否能得到有效控制,以提升业务的投资回报?

软件质量的外延并非被泛泛拓宽,因为无论是软件的功能、交付的时间,还是软件的成本,都维系在质量之上,质量出了问题,这三个要素都得不到保障。

针对质量瑕疵,用户有两种态度:一种是补救,即对瑕疵的检测没有及时跟进,待瑕疵出现后再采取补救措施;另一种是防范,即在生产过程中采取步步为营的策略,防瑕疵于未然。

针对软件中的瑕疵,前一种态度无异于一句老话“把所有的鸡蛋都放在一个篮子中”,因为所有质量控制的重任都压到“检测”上,一旦质量瑕疵出现,就要采取烦琐的、追溯式的补救措施。后一种态度与质量管理大师戴明博士的全面质量控制(Total Quality Control)理念不谋而合。戴明明确指出:“停止依赖检验来获取质量”,其根本意图是以低代价获取高品质。

毫无疑问,软件生产的系统性已表明,质量控制上的任何补救措施都是低效率、甚至是无济于事的,真正能确保软件高品质的是贯穿软件生命周期的质量管理。

竖起层层质量屏障

品质的重要性注定在质量控制上所做的任何努力都是值得的。质量控制的难度在于它是一项系统性的工作,毫无章法的操作不会带来任何质量上的收益。为此,必须理顺软件开发的流程,在关键环节设置质量屏障,并将检验工作贯穿到软件生命周期的始末,只有这样才能防各种质量瑕疵于未然、获取高品质的软件。

统一流程:理顺质量管理思路

所谓软件生产的统一流程,是用于指导开发团队在开发的不同阶段应该遵循的标准和规范。统一开发流程将日常开发工作中的最佳实践汇总在一起,形成固定的、清晰的流程,让软件生产人员明确在某个阶段应该做什么事情、要达到什么效果,从而让人们能从整体上把握生产的进度,减少不确定因素带来的影响。

应该说统一流程与软件质量没有直接的联系,但这并不影响统一流程在软件质量控制中的重要作用,这主要体现在两个方面:

其一,统一流程细化和固定了质量控制的内容。在统一流程的每一个环节,都有自身的质量要求,从而将质量问题进行合理分解,将整体的质量建立在每一子流程的质量保障之上。

其二,统一流程使软件质量控制更为系统。在统一流程的指导下,才不至于让开发的团队内部各用各的开发方式和方法,质量控制也具备了一脉相承的特性,比如,在前一个环节质量控制上达到的里程碑,在下一个环节依然有效,无须重复工作。

在统一流程方面,IBM Rational软件开发平台将迭代式开发、管理项目需求、使用基于组件的体系架构、可视化建模、管理变更等策略应用于统一流程的构建,也因此将质量控制的整个体系固定下来了,进而控制影响软件质量的各种风险。

此外,IBM Rational的统一流程是一个非常完善的软件开发过程,与著名的质量控制模型CMMI具有相当好的兼容性,根据此流程能快速部署并实现CMMI模型,从而提高软件的品质。

规范建模:质量控制的起点

软件是一种抽象的工程,人们对软件功能的需求也许连其自身也无法表达出来,此时,给出一个根据需求抽象出来的模型就显得尤为重要。事实上,在代表软件开发最新方向的模型驱动架构(Model Driven Architecture,MDA)方法中,整个系统开发过程都是由对软件系统的建模行为来驱动的,这足以凸显建模的重要性。

构造这个抽象的模型的过程就是建模,即构造被构建的真实事物的近似代表。对于一个功能复杂的软件,其数据存取方式是否合理、功能模块是否健全、不同功能模块间的对接是否符合逻辑等,这些都需要在模型的基础上进行探讨。

由此不难看出,建模对于质量控制的重要意义:一方面,建模标志着软件项目进入实施阶段,这是质量控制的起点,如果建模的质量不能满足功能需求,必然导致最终开发出来的软件过不了质量关;另一方面,在缺少一个对照模型的基础上,人们很难描述质量上的要求,因此,需要在建模的基础上实施质量改进计划。

建模本身对于软件开发并非一个陌生概念,关键是人们建模所采用的方式。对统一建模语言(UML)的支持,为建模人员提供了一个标准的建模平台。基于此平台,能够增进来自不同团队的开发者对建模的理解,更有利于模型向实际软件的转化,并保证软件的高品质。同时,基于UML构建的模型,也便于人们以统一标准来考量建模的质量,有利于质量控制工作的有序进行。

持续验证:加重软件质量的砝码

持续的质量验证也体现了全面质量管理的思想,是一种有效的防范而非补救措施。基于统一流程,在每一个子流程都设置质量标准,并根据这些标准对该阶段的成果进行检验,以确保达标,否则返回去重新开始,直至达到质量的标准才步入下一个子流程。如此以来,软件是按品质路线走过来的,在软件开发的每一个环节质量都有保障的情况下,为最终获取高品质的软件加重了砝码。

今天,人们在软件开发中所采用的方法也使持续质量验证更加卓有成效。比如,在迭代式开发中,开发团队根据初始的需求分析,快速开发出一个软件系统的雏形,然后对这个雏形进行检测,一方面看是否达到先前的质量需求,另一方面又会收集一些新的需求,接着在此基础上加以改进,开发出一个有所提高的软件系统去替代先前的雏形。

这样,测试每一次设计迭代,都会确保软件的质量有所提升和改善。

上一篇:我看AJAX 下一篇:怀念我的坐牢生涯