呼唤高质量软件
孙志永、李松、黄子河 (转载自中国计算机报)
[url=http://www.21cmm.com/prelogin.asp?page=/bbs/index.asp?Type=H][/url]
计算机和通信技术的迅速发展为我国的IT行业带来了空前发展的机遇,特别是为软件行业。软件企业能否抓住这个难得的发展机会,需要多方面的努力。软件质量保障在软件企业发展中占有重要位置。
软件是人造的最复杂系统。软件中微小的失误,可能会导致质量事故、产品报废甚至人员伤亡。软件质量的极大重要性早已为世人所知。另一方面,随着软件自身价值的提升,软件修复费用也在攀升。我们要重视软件质量,加大软件质量研究。
随着人们对软件认识的逐步加深,软件是“产品”的概念也在人们的印象中逐步清晰化。软件既体现了设计者的思维、智力等逻辑上的东西,同时也像桌椅板凳一样是一种实实在在的“产品”,进一步讲,是“商品”。既是商品就分三六九等,就要按质论价,就要经受市场竞争的考验。实事求是地说,目前国内软件产品与外国软件产品相比,在质量上不占竞争优势。尤其是我国加入WTO之后,竞争是在国际化的大舞台上进行,国内软件公司在过去相对封闭环境下占有的一点优势将不存在。如果国内的软件生产企业不能够迅速提高软件产品的质量,那么在未来几年软件行业内的激烈竞争中很可能被残酷淘汰。
虽然中国软件产业现在已经有了飞速发展,但与印度等软件生产大国相比,还有相当大的差距,特别是在软件质量上。
我国软件企业的质量控制体系尚待完善。虽然ISO9000质量体系在软件企业中得到广泛认可,但少数企业只是把获取证书当作目的,并没有把质量控制体系真正贯彻落实。
对软件品质的多样性重视不够。软件产品的质量度量有很多方面体现,而一些软件企业对此却重视不够,往往只注意一个或者几个方面而忽略了其他方面。
不能很好地处理灵活与严谨的关系。软件灵活性应该表现为可以满足企业不断增长的业务需求,扩展能力较强;但这并不等于说可以存在明显的管理流程方面的漏洞。
文档化程度与商品化程度有待进一步提高。少数企业的用户文档、操作说明的缺乏、文档资料版本控制的混乱,说明软件产品的商品化意识还有待加强。 软件企业的测试水平偏低。一些企业还没有建立一支测试队伍,没有把项目产品测试放在与开发并重的位置。
开发周期较短。有些企业为了能够尽早收回开发成本或与同行业企业竞争,产品尚未测试并验收就急于推向市场。
软件设计需求不明确,新技术应用还不成熟。一些软件企业的需求分析能力尚待提高,由于需求分析阶段出现缺陷而导致重复开发的例子并不鲜见。软件技术更新常常令软件企业目不暇接。
国内软件企业要直接参与国际软件市场的竞争,开发高质量软件产品的关键是软件企业自身的能力。我国软件企业生产力的提高应依赖于有关软件人员的积极参与和创造性活动。软件企业应重视效率、质量、面向用户的快速反应,加强软件的需求管理,降低软件产品的开发风险和质量目标的失效。软件企业还应进一步建立产品质量度量和质量体系度量的现代质量评价观念,坚持走质量求效益的推动产业发展的道路。
追根求源 旨在提升
可能许多用户在使用软件时都有过这样的体验,例如:按常理应该输入数字的地方却可以任意输入汉字或者其他字符,还可以进行统计汇总,在这些过程中间丝毫没有提示或者告警,最后留给用户的是系统崩溃或者整个数据库的混乱;或者当安装了某些软件后,原先正常运行的软件就无法正常运行了,整个系统也伴随出现不稳定的现象;某些软件一旦安装之后,另外的一些软件就无法安装了,也就是两种或者多种软件无法并存运行。
到底是什么原因使得软件产品产生这些问题呢?如果仅仅认为是程序员个人能力的缺陷,那么眼光未免太过狭隘。软件产品的质量不可能通过提高某个人的素质而获得提升。这里面有更深层次的原因。 首先是产品开发过程不规范。许多国内软件产品来自于某个项目中的软件编程部分。由于项目的成功或者项目中软件部分使用比较稳定,开发者便认为不再需要进行市场调研和大规模开发,而把这段程序稍作修改就变成了一个通用的软件产品。问题也就由此产生。
某个项目中的软件编程部分具有该项目的独特性,由此转化而来的产品可能在通用性上有很大欠缺。而且由于开发当初没有考虑到通用的问题,有可能这段程序根本就不具备扩展成为通用程序的基础条件。
为项目进行开发时,重点考虑的是在特定硬件、软件、操作人员范围内的功能实现,而忽略兼容性、容错性、速度与效率等问题。在极端情况下,甚至为了配合特殊硬件或者实现某种特定功能,而采取某种非常规手段编写代码,这使得系统其它功能缺失。由此带来的问题会在整个项目开发阶段潜伏下来,直到变为通用产品。
其次是对产品的测试过程不规范。在人们的惯性思维中,检测只是针对成品。许多软件开发者直到认为产品开发完成,甚至连说明书和包装盒都作完才对产品进行测试,以期取得一个结论性的结果。这就完全丧失了测试的意义和作用。开发者应该认识到测试是开发过程的一部分,应该逐步开发逐步测试,这样才能真正达到最短时间、最少投入和最高质量的目的。开发者应该区分“评”和“测”的内涵,把针对市场宣传和针对产品质量的不同工作加以区分。只有这样,才能让“评”和“测”各自起到应有的作用。 最后还要指出的是,国内的软件开发者应该注意服务和市场跟踪。在国产软件的发展历程中,曾经出现过许多优秀的软件产品,其中一些也曾经凭借完善的功能和优良的品质一统天下。最著名的就是DOS版的WPS软件,还有汉字平台系统、多媒体视频解压缩软件、翻译软件、手写输入软件等。每个产品都闪烁着开发者的智慧光芒和对中国化软件的精准理解。但是到了Windows加互联网的今天,它们中的一些已经风光不再。究其原因,不外乎服务不精,市场跟踪不紧。
保证质量 多管齐下
应该从哪几个方面保证软件产品的质量呢?这是一个软件工程的问题。软件产品质量的提高应该从方方面面入手,同时也是一个可以细化、可以量化的问题。具体到某一个软件产品,可以从以下8个方面详细考察产品质量:功能度、兼容性、安全性、可扩充性、性能、资源占用率、易用性、用户文档。其中,功能度、兼容性、性能、易用性会给用户带来更直接的质量感受。
功能度是首要检测指标,主要应该考察三个方面。首先该软件产品的功能是否满足需求;其次现有功能是否达到设计要求;最后,所有功能是否实现正常。粗看起来,这三个要求比较简单,但是要实现起来却有相当的难度。
困难和问题主要有以下表现。首先,搞清楚用户到底需要什么功能就不是一个简单的课题。这关系到庞大的市场需求调查、用户群定位和需求分析。不要说小型软件企业,就是国外的大型软件公司花巨资投入也不一定有明确的结果。对国内的软件开发者来说,在这一点上可能没有捷径,但是有优势。国内的工程师对中国文化、计算机使用现状以及用户心理有着天然的理解力,只要稍加用心就可以达到事半功倍的效果。其次,为了在最短时间、最少投入的前提下达到设计要求,开发者可能放弃了太多的东西,使得软件的扩展能力受到严重限制,甚至于没有办法开发出兼容的第二版,无论资源的损失还是用户的损失都是巨大的。
再说兼容性,按照测试类型分为硬件兼容性和软件兼容性,按照测试方法分为交叉兼容性和向下兼容性。许多软件开发商本身并不具备进行兼容性测试的环境和经验。兼容性测试要进行大量繁重的重复性工作,所以通常这个环节会被忽略掉,也时常有以偏概全的现象发生。对于工作量大这个问题,目前还没有好的解决办法。国外由专业测试工具可以代替人来进行这种重复性工作,但是现象、问题、方法选择等却是千变万化的。人的因素必不可少。
性能指标是另外一个重要的质量数据。一个软件产品无论功能多么完美,如果不能够达到一定的性能,也无法被用户接受。面向不同领域的软件有不同的性能指标系统,但是所有的性能指标系统都有一个共同点,即全部是限定于某种特定环境和要求之下,采用共同的测试工具与测试用例所得到的量化结果。一般来说,性能测试一般要由专业的测试机构来进行。同样,性能测试也不应该仅仅看作是对成品的检验。如果对开发阶段的产品就有计划地进行性能试验会带来更大的收益。
性能测试的另外一个目的就是寻找软件产品的最优化设定,比如操作系统、数据库等在某种特定环境下通过修改设定值可以达到最优化效果。目前这类技术还主要集中于国外公司,国内拥有优化技术的软件开发企业实属凤毛麟角。从大环境来讲,更有必要进行性能测试。
易用性可能是对用户来讲首先关注的特性。一般来说易用性要考察软件本地化程度,菜单和界面风格是否符合习惯,在所有的选择处是否具有默认和定制两种方式,帮助文档是否完善等。所有的软件开发商都不会忽视易用性这个方面,只不过是采取不同的方法,得到不同的结果罢了。
引入标准 规范过程
我国软件产品开发存在的主要问题在于一些企业对软件商品化程度重视不够。重视软件商品化工作,有必要加大软件产品质量的投入力度。产品是企业的立身之本,软件产品质量必须有一定资金保证。软件企业应该根据我国国情和市场经济机制,确定多元化的投资策略,以确保软件产品开发生产过程中有足够的资金支持;同时必须扭转目前一些软件企业重功能实现而轻质量保证的现状。
软件企业提高产品质量的关键是要改造手工业作坊式的生产方式,建设工业化生产环境,营造软件工程的文化,改变落后的生产习惯;同时应紧跟国际IT技术的发展,面向市场建立技术创新体系,以适应全球经济一体化时代的需要,使软件产品的质量达到或接近国际先进水平。
适时引入ISO9000质量控制体系和CMM软件产品成熟度体系,有助于软件企业产品的规范化控制。要对软件质量进行全面、全过程的质量控制,软件工程项目监理将从需求阶段开始进行软件项目全过程跟踪评估测试。具有软件工程评估测试实力、科学工具和专业队伍的测试机构,将会是工程监理的主要推动者。
软件能力成熟度模型重点是从组织管理方面研究评估软件生产过程,从而提高软件质量。软件企业通过CMM评估是软件产品质量达标的标志,也是进军国际市场的通行证。国内大型软件企业,财力人力足够强,可借助主任评估师经验,进行评估,发现优点、弱点,制定措施,提高软件质量,培养人才。咨询服务公司可培养软件质量管理人才,开展软件质量管理(包括CMM评估)服务。
我国是软件潜在大市场,未来软件生产大国,应组织开展软件质量研究。在软件质量方面,我们需要投入人力和资金,需要在理论和实践上进行深入研究。软件质量研究需要软件工程知识、统计质量控制方法、软件测试和计量、软件质量管理知识、管理科学和管理工程等。特别地,需要研究全面质量管理思想和方法,并把它用于软件生产过程。 通过软件测量改进软件过程、提高软件质量应该受到我国软件业的重视,而且是应重点发展的方向。在CMM中,第4级成熟级别——定量化软件过程管理和软件质量管理,其核心就是软件测量和计量。CMM2、3级主要内容是组织和管理方面的,在CMM3级中有软件生产工程和仔细审查评估才可以实施生产的要求。软件测量和计量是理解软件生产过程及针对过程存在问题采取措施的基础,从而保证软件产品能够按时、低耗费、高质量的完成。
专业测试 严把质量
国务院2000年颁布的“18号文件”和“双软认定”工作,得到了全国软件业界认真的贯彻落实。全国各地软件行业主管部门积极对本地软件行业进行了有意识的规范和管理,也与经过信息产业部授权的第三方测试机构建立了密切合作,从而为保障我国软件产品质量和促进软件产业的发展提供了坚实的保证。
去年,计算机硬件系统已经发展到一个新阶段,为软件开发和设计提供了更加广阔的硬件平台。随着经济发展和计算机技术、网络技术的普及,用户对软件产品的需求进一步细化,我国软件开发技术和成品软件质量将迈上一个新的台阶。
图1 中国软件评测中心测试需求分布
根据中国软件评测中心2001年对软件产品进行的各类测试(如图1、图2),我们不难发现,国产软件产品数量上升、种类增加、质量提高,形成了一派喜人的局面。
图2 中国软件评测中心测试产品类型分布
从软件类型角度看,嵌入式软件、中间件软件正成为软件业的开发热点。嵌入式软件从以往使用汇编语言、C语言开发单一功能,开始向平台嵌入式操作系统方向发展。而中间件产品是我国软件产品领域新开拓的一个崭新方向。为满足同一应用对不同用户的软件开发需要,使用Java等跨平台技术开发的中间件产品正成为新的宠儿。这些新兴的软件领域也改变着以往我国软件产品长期偏重应用软件,在系统级底层软件设计方面难以抗衡国外软件的局面。
从行业应用角度看,财务类、电子商务类、教育办公类软件依然是行业软件的主要领域。ERP/CRM、工商管理、医疗信息管理、交通管理类软件也日益成熟;另外,值得一提的是电子商务类软件的发展。虽然电子商务还没有成熟到能使用户即刻获取丰厚利益的程度,但技术更新和用户意识的提高,使电子商务类软件依然保持了强有力的发展势头。