【IT168 技术文章】
电子信息技术的迅猛发展大大推动了全球经济的增长。与此同时,计算机软件在电子信息技术中的地位日益重要,软件产业作为一个朝阳产业对各国经济的贡献越来越大。在美国,软件产业成为继汽车、电子工业后的第三大支柱产业。90年代后期,美国软件产业以每年12.5%的速度递增着。1998至1999年度,印度的软件销售额已达到40亿美元。我国在1999年的软件销售额也上升到176亿元人民币。此外,软件技术对一个国家的安全和社会稳定也是至关重要的。在信息时代的今天,存储在庞大计算机系统中的天文数字般的信息一旦受到“病毒”感染或“黑客”攻击,就有可能造成难以估量的损失。为此,各国都在积极制定有利于软件产业发展的政策和措施,从宏观上为软件企业的发展营造良好的社会环境。但另一方面,软件企业发展的真正动力应该来自企业内部,软件企业只有加强质量管理,积极创新,才有可能在激烈的竞争中立于不败之地。ISO标准和过程改进技术对加强软件企业的质量管理工作可以起到显著的推动作用。
ISO标准与软件企业的质量管理体系
自从1987年公布ISO 9000族标准以来,ISO 9000族标准已经成为全球最有影响的质量管理和质量保证标准。ISO 9000族标准的制订和实施反映了市场经济条件下供需双方在进行交易活动中的要求。供方只要按ISO 9000族标准组织产品的开发和生产,并通过权威机构的认证,在产品质量方面就会赢得顾客的充分信任。另一方面,顾客在市场上选购产品时,更愿意选择通过质量认证的企业所生产的产品,从而减少一部分多余的或力不从心的繁琐的质量检验活动。
ISO 9000族标准建立在“所有工作都是通过过程来完成的”这样一个认识基础之上。每一个过程都由诸如原材料、设备、组织和人员等作为输入,输出的是过程的结果,如半成品、成品和计算机软件产品等。质量管理是通过对组织内各种过程进行管理来实现的。一个组织的各种职能和各层次管理的一贯目标应该致力于不断地进行质量改进,以满足顾客和社会的需要。
在ISO 9000族标准中,与软件企业关系最密切的是《ISO 9001 质量体系-设计、开发、生产、安装和服务的质量保证模式》和《ISO 9000-3 质量管理和质量保证标准第三部分:ISO 9001在计算机软件开发、供应、安装和维护中的指南》。
ISO 9001标准从20个方面全面定义了质量体系要素,规定了质量体系的要求,如果产品开发、生产者或供应方达到了这些要求,就表明具备了质量保障能力。
尽管ISO 9001标准全面明确地定义了质量管理工作的各个方面,包括了软件开发活动的全过程,但是ISO 9001主要是针对制造业制订的,没能详尽地描述软件企业的质量管理工作。因此,ISO专门制订了ISO 9000-3作为ISO 9001标准的实施指南。
ISO 9000-3作为软件企业实施ISO 9001的指南,对其中的20个质量要素作了进一步的解释与说明。其主要思想是:软件的开发和维护有着一系列的任务。这些任务的顺利完成需要各级管理层和开发人员的共同配合和一致协调。其中高级管理层应该根据其在过去工作中积累的经验来制订总体策略,下一层的管理者负责制订用来实现总体策略的实施计划,并管理他们所制订计划的执行。开发人员在计划时间内、以尽可能低的费用开发出满足功能要求的软件的前提是准确地理解用户需求。
需要指出的是,ISO 9000-3对软件企业的软件开发和维护活动起到的是指导性的作用,不带有强制性,而具有建议性。一个软件企业在贯彻和执行ISO 9000-3的过程中,应该根据企业自身的基础和现状,有针对性地开展软件质量管理和质量保障活动。软件企业影响软件质量的全部因素在软件生命周期内始终处于被监控的状态,实现持续不断的质量改进。
此外,ISO/IEC于1995年制订了《信息技术-软件生存周期过程》(ISO/IEC 12207:1995),全面系统地描述了软件生存周期过程,是ISO 9000-3实施指南的进一步扩展。
软件过程技术及其发展
随着软件工程的深入发展,人们逐渐认识到:提高软件生产率和软件质量的瓶颈在于软件开发和维护过程中的支持和管理问题,意识到关键的是“软件过程”
从1984年开始在计算机界掀起了“软件过程运动”,针对软件过程进行了一系列的研究和讨论,进而诞生了软件过程技术。
过程就是软件生存周期所涉及的一系列相关过程。过程就是活动的集合,活动又是任务的集合,任务是把输入转换为输出的操作。
软件过程技术的基本思想是:软件开发和维护过程的质量对软件产品的质量和软件生产率影响很大。软件过程技术的目标就是通过工程化、标准化和形式化的方法管理软件的开发过程,从而改变目前基于手工的软件生产方式,实现大规模的软件生产。
目前,软件过程技术的研究大致可分为以下三个方面:①软件过程建模语言。提出各种适合于定义和描述软件过程的方法和手段。②软件过程支持。研究在以过程为核心的软件工程环境的设计和实现中所涉及的各种技术问题,如体系结构、实施机制、工具集成、过程可视化、一致性维护、并发控制和事务管理等。③软件过程改进。研究如何对软件开发机构现有的软件过程进行评估和改进。
由美国卡内基?梅隆大学软件工程研究所(SEI)开发的软件过程持续改进模型-能力成熟度模型CMM(Capability Maturity Model)是软件过程改进技术的代表。
CMM描述了一个有效的软件过程中的关键要素,讨论了不成熟的软件机构发展成为有规律的、成熟的软件机构的改进过程。CMM涉及对软件开发和维护活动进行规划、软件过程工程化和对软件过程进行管理的实践活动。通过这些实践活动,能够提高软件机构满足成本、进度、功能和质量要求的能力。
所有软件都是经过一些过程而产生出来的。但这些过程往往是混乱和不一致的,从而导致缺乏可预见性和可重复性,缺乏改进的基础。为此,在软件开发期间需要连贯的、明确的过程,从而使这些过程能够被连续地执行,并被监督和演化。
CMM对于想要控制软件开发和维护过程,以及希望在机构内部形成良好的开发次序和环境的组织,是有很大帮助的。
改进软件过程期望达到下面几个目标:
1.提高软件项目的效率。有效地运用项目所拥有的各种资源,包括人员和时间,以达到提高生产率的目的。
2.提高软件项目的可预见性。根据以往的项目经验和数据,尽可能准确地估计开发软件所需的成本和时间,并使这些估计更具鲁棒性,即项目环境和目标的微小变动不会使这些估计无效。
3.提高软件产品的质量,以更高的准确度和可靠性达到预期的目标。
有关专家通过观察发现:遵循系统的和可重复的演化过程的软件企业,与过程是专设的、混乱的软件企业相比,可以保证类似以往成功项目的可重复性,具有更高的软件生产率,开发出来的软件也具有更高的质量。