本文首先提出当前软件质量问题给我们提出的挑战;其次表明了我国软件企业质量管理薄弱的现状;第三,阐述为什么要积极推动软件企业按ISO9000标准建立质量保证体系;最后,希望软件企业以质量认证为新的起点,追求更高的质量目标。
一、 软件质量总是向我们提出的挑战
30多年前美国软件工程师F.P.Brooks把组织开发IBM360操作系统时的失败教训总结出来,写了至今仍为人们常常引用的一本书《难忘的软件开发日日夜夜》(The Mytieal Man-Month)。这本现已成为软件工程重要文献的书告诫我们千万不可忽视软件开发的管理,从何时起由于人们广泛接受了这一忠告,开始重视软件的工程化开发,使得软件项目的成功率大大提高,然而,近年来软件质量问题逐渐突出,有些问题十分严重,不断传来的报道告诉我们,软件质量不佳引发的事故已直接伤害到生命和社会安全。这再一次向我们提出了警告,必须立即重视和认真解决软件质量问题。
让我们看几个典型事例:
–1993年伦敦附近核电站的反应堆内,由于温度控制失灵,致使欧洲人口最为密集的地区面临巨大灾难。后经查明,在反应堆"主要保护系统中"一个10万行代码的控制程序几乎有一半未能通过测试。
–海湾战争中,某个软件故障打乱了"爱国者"导弹雷达跟踪系统,使导弹发射后未能迎击对方的"飞毛腿"导弹,反而轰击了自己的军营,祸从天降,造成28名士兵丧生,98名受伤。
–1996年欧洲航天局阿丽亚娜5型(Ariane5)火箭发射后40秒钟火箭爆炸,发射基地2名法国士兵当场死亡,耗资10亿美元,历时9年的航天计划严重受挫,震惊了国际宇航界。事后专家调查分析报告指出,爆炸原因在于惯性导航系统软件技术要求和设计的错误。
–1998年香港回归,同时香港新建机场投入运营,然而又是软件的问题使新机场不能正常按计划接送客货,而老机场因同时关闭也不能援救,造成相当的损失。
–计算机2000年问题几乎震动了整个社会,其中主要根源在于软件设计考虑不周全。
还可以举出许多类似的事例。这些事例表明,随着计算机应用的普及和深入,使得我们整个社会的经济体系,以至人们的日常生活的各个层面都对计算机,特别是对软件的依赖性越来越大,与此同时,软件质量问题给我们带来的危害也越来越严重。人们正在逐渐认识到软件产品质量正在牵动着社会的命脉,忽视软件质量必将让我们付出更大的代价,受到更为严厉的惩罚。
二、 我国软件开发机构的质量管理仍然薄弱
目前,我国已有5000家软件企业,从业人员约8万人。虽较前些年有了很大发展,但从数量上与国民经济发展相比,与12亿人口的庞大需求相比仍不能适应。我们更要注意到的是软件质量的差距,这在很大程度上表现在软件质量管理上的差距。
近两年来我考察了全国十大软件基地的骨干软件企业,我们发现国内软件企业在产品质量方面的问题主要表现在以下几个方面:
1、对软件工程标准化重视不够。从80年代中期开始我国已制订和公布了20多项软件工程国家标准,其中许多标准是从国际标准转化的,具有很好的指导性。但只有少数部门和行业在参考国家标准的基础上制订和实施了部标和行标(如航空、航天、外贸、石化等)。个别企业制订和实施了自己的企业标准和规范。许多企业缺乏质量意识,缺乏标准化管理意识。
2、软件产品的质量问题时有暴露,有的企业提供用户的手册版本搞错,许多企业开发的程序可读性极差,产品的用户界面不统一,产品测试不充分等等。1995年在申报参加全国优秀软件的产品评测中发现,由于系统兼容性差等质量问题,有30%的产品不具备评测资格。在市场上流通的软件质量更是屡见不鲜。
3、软件开发工具和管理工具的提供与使用不够充分。致使大量的开发工作和开发管理工作停留在手工劳动阶段,不仅效率低而且往往不能保证质量。例如许多软件企业没有采用配置管理工具、测试工具、度量工具等。
4、软件企业质量认证工作仅仅开始,产品评测尚未普及。近年来国内软件企业开始关注ISO9000质量体系认证活动,到目前为止大约有10家企业通过了认证,也有一些企业正在着手准备或正在考虑申请认证。虽比前几年有了前进,但与技术先进国家相比仍有相当大的差距。据了解印度已有2000家企业通过ISO9000质量认证,其差距可想而知。我国四十几家认证机构中有条件开展软件行业审核认证的屈指可数,软件企业质量体系的建立和认证方面的咨询人员奇缺,软件产品评测仅占产品的极小比例。
这些情况值得软件产业界人士深思,并积极采取对策,同时希望政府领导机构积极引导,争取尽快改变面貌。
三、 为什么要积极推动软件企业按ISO9000标准建立并实施质量保证体系
针对我国软件企业质量管理的现状,有必要积极推动贯彻实施ISO9000国际标准,以此为突破口,大力加强质量管理。之所以这样考虑是因为:
1、ISO9000标准具有的特点是
–科学性:它体现了现代质量管理的科学原理。
–实践性:标准的规定以大量的实践为基础,并与实际工作密切结合,可借以指导具体的实施和操作。
–可信性:该标准的实施以质量体系认证制度为后援。
–国际性:标准已为100多个国家和地区采用,被证明是行之有效的。且以此标准为基础的我国质量体系认证已取得了许多国家的多边互认,从而为软件出口开了方便之门。
–完整性:标准包含了术语、质量保证、质量管理到支持性技术标准及实施指南,形成了完整的体系结构。
2、ISO9000标准的科学依据是
–著名管理学专家W.E.Deming提出的"质量形成于生产全过程"。
–著名质量管理专家A.V.Feigenbaum提出的"必须使影响产品质量的全部因素在生产过程中始终处于受控状态"。
–应使企业具有持续提供符合产品要求的能力。
–质量管理必须坚持进行质量改进。
–质量管理应体现计划–实施–检查–改进措施四步的循环,即PDCA循环(Plan-Do-Check-Action)。
–质量管理的核心是预防而不是补救。
3、软件本身的特点和目前软件的开发模式要求我们必须加强质量控制
① 软件本身的特点和目前普遍采用的开发模式使得隐蔽在软件产品内部的质量缺陷不可能完全避免。
–计算机软件是不可见的逻辑实体,不同于任何制造业的其它产品,软件质量难于把握的一个突出因素是软件需求。软件需求的正确性和准确性成为把握软件质量的首要关键问题,然而,我们面临的现实是:用户常常说不清自己的需求,或者用户经常改变自己已提出的要求,这就会埋下软件质量的祸根。
–目前软件开发工作大多仍是智力密集的手工劳动,开发工作需要开发人员集中精力,全神贯注,一丝不苟。小的疏忽都会引发质量问题。
–软件开发无论采用哪一种模型,开发环节之间,人员之间的协调和衔接都必须保证完全正确。
–软件测试方法具有不可克服的弱点,再好的测试技术也只能帮助我们发现和消除错误,但无论如何也不能保证或表明软件内部已不包含错误。
–软件质量对人员的依赖不能避免,这包括人员素质、经验、协调与沟通、及人员流动,甚至开发人员的情绪等。
② 从技术上解决软件质量问题有着局限性
–我们对软件质量本身的认识沿处于初期阶段,一些定性的认识尚未量化,如可维护性、可测试性等难于度量,也就难于控制。
–目前利用软件组件(Computer)或构件(Build)实现可复用性(Reusability),力图提高软件可靠性的作法尚未普及。
–想要采用净室(Clean Room)开发技术,防止错误或缺陷混入开发过程仍然是开发人员的设想,很难绝对净化软件开发环境。用F.P.Brooks的话说,我们没有银弹去制服阻碍软件质量改进的"拦路虎"四、 我国软件企业必须把取得ISO9000质量体系认证当作推行全国质量管理的新起点
必须达到的基本要求:
针对我国软件企业目前质量管理水平普遍较低的现状,大力提倡和积极推动ISO9000标准的实施和认证是十分必要的。
我认为我国的软件企业也能够达到1996年国务院提出的质量振兴目标:"经过5年至15年的努力,从根本上提高我国主要产业的整体素质和企业的质量管理水平,使我国的产品质量、工程质量和服务质量跃。