软件研制和开发的质量管理——对于GIS软件开发组织的指导

由于计算机技术的发展以及用户需求的增长,GIS软件的研制与开发(R&D,Research and Development)也越来越多,这意味着竞争也愈加激烈。对于GIS软件开发组织,在市场上取得成功的因素包括:技术的先进性、功能的实用性和可靠性、系统操作的便利性、版本的连续性以及技术支持维护等等。为了达到这些目的,唯一的途径就是采用合适的质量管理与控制。

ISO-9000系列标准


质量管理的目的是为了生产高质量的产品,它不是通过检验产品的质量,而是把质量建立在生产过程之中来达到。近年来,国际上影响最为深远的质量管理标准是ISO9000系列标准。ISO9000最初主要针对制造行业,现在已经扩展到硬件、软件甚至服务领域。ISO9000强调控制、可审查性、检验与核实以及过程的改进。其基本要求是:“说你做的(Say what you do)”,“做你说的(Do what you say)”,并“证明你已做的(Demostrate what you have done)”。

ISO-9000系列标准包括:

1)ISO-9000质量管理和质量保证标准——选择和使用的导则;

2)ISO-9001质量体系——设计/开发,生产,安装和服务中的质量保证模式;

3)ISO-9002质量体系——生产和安装中的质量保证模式;

4)ISO-9003质量体系——最终检验和测试中的质量保证模式;

5)ISO-9004质量管理和质量体系要素——导则。

ISO-9000原本为了制造业而规定,不能直接应用于软件行业,后来追加了9000-3标准,成为“使ISO-9001适用于软件开发、供应和维护的指南”。

ISO-9000-3的核心思想是“将质量制作入产品之中”,也就是说,软件的质量提高不能依赖于完成后的测试,而取决于整个软件生存期所有的活动。ISO-9000-3的要点如下:

1)ISO-9000-3标准不适用于面向多数用户销售的程序包软件,仅适合于依照合同进行的单独订货开发软件,它也是用户企业的系统部门在建立质量保证体系时的指南;

2)ISO-9000-3标准对供需双方领导的责任都做了明确的规定,并没有单纯地把义务全部加在供方;

3)在包括合同在内的全部工序中进行审查,并彻底文档化。具体来说,就是需方和供方合作审查,找出含混不清的问题,并记录在文件中;

4)ISO-9000-3叙述了供方和需方如何合作进行有组织的质量保证活动才能制作完美的软件,强调质量保证体系贯穿于整个开发过程,强调防患于未然而不是事后纠正;

6)供方应实施内部质量审核制度,要求供方为了质量管理而整顿其组织机构,建立监督质量体系的机制;

7)供方应对每项合同进行审查。

软件过程改进的CMM模型

由于ISO-9000系列标准并不针对于软件企业,到九十年代初,CMU的SEI(软件工程研究所)提出了软件的能力成熟度模型(CMM-Capability Maturity Model for Software)。

与ISO9000相比,CMM只关注软件,明确强调持续的过程改进,而ISO9000只是解决质量体系的最小保证。

CMM模型较为全面地描述和分析软件过程 [6]_能力的发展程度,建立了描述一个组织的软件过程成熟程度的分级标准。利用该标准,软件组织可以评估自己当前的过程成熟程度,并通过提出更严格的软件质量标准和过程改进,来选择自己的改进策略,以达到更高一级的成熟程度。CMM模型共有五个成熟度级别,其特征为:

1)初始级(Initial)

软件过程杂乱无章,有时甚至混乱,几乎没有明确定义的步骤,成功完全依赖于个人努力和英雄式的核心人物。

2)可重复级(Repeatable)

建立了基本的项目管理过程来跟踪成本、进度和机能,有必要的过程准则来重复以前在同类项目的成功。

3)定义级(Defined)

管理和工程的软件过程已经文档化、标准化,并综合成为整个软件开发组织的标准软件过程,所有的项目都采用根据实际情况修改后得到的标准软件过程来开发和维护软件。

4)管理级(Managed)

制订了软件过程和产品质量的详细度量标准。软件过程和产品的质量都被开发组织的成员所理解和掌握。

5)持续优化级(Optimizing)

加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能够不断持续地改进。

CMM定义了每个成熟度级别的关键过程范围(图15-11),一个软件组织只有满足该范围内的每个目标,才能被认为达到该成熟度级,这实际上也是软件组织达到更高一级成熟度的指导。

../../_images/img_110.png

图15-11:CMM模型中的五个成熟度级别,其关键过程范围[CMU SEI]

CMM建立了一个可用的标准描述,在签定软件项目合同时,可以参考这些标准进行风险评估,而软件企业可以利用CMM框架来改进其开发和维护过程。

尽管CMM列出了每个成熟度级别的特征和关键过程,但是并没有回答如何做才能达到高一级的成熟度级的问题,没有提出特定的软件技术,也没有涉及如何具体的进行人员管理,这些都需要应用CMM的组织在实践过程中,根据其具体情况加以解决。

1

* 在本节中,“用户”并不仅指单纯的系统使用者,也包括为了赢利而销售应用系统的单位。所以一般称为接受方,而软件开发单位则称为供应方。

2

* 到项目开始执行,不再区分用户方和开发方,原因是无论由哪一方进行开发,进行的项目组织管理工作都是相似的。

3

* 马斯洛的需要五层次包括:生理的需要,安全的需要,爱和归属的需要,获得尊重的需要,自我实现的需要。人员在工作中的需求可以归纳到这五个层次中。

4

* 这也正是CMM第五级所强调的。

5

* 采用地理信息系统软件工程技术一章中描述的数据配置管理方法可以更好的避免数据管理混乱。

6

* 软件过程是人们用于开发和维护软件及其相关产品的一系列活动、方法、实践和改造。软件的开发有两种截然不同的方式:“面向过程的(Process Oriented)”和“面向责任的(Commitment Oriented)”,前者强调过程的规范和持续优化,后者更强调个人的能力。目前许多软件企业都开始注重软件过程。