联想公司软件事业部通过了CMM2级认证这件事情让软件界兴奋了许久,近期有消息透露联想公司有意在年底冲击CMM3级认证,这一消息更加振奋了中国软件业。信息产业部“今年电子信息产品投资重点”中提到,软件“开发过程中采用CMM管理模式,提高软件开发效率和质量保证能力”。软件能力成熟度是属于软件质量和软件生产组织管理问题。本文来说说这一问题,并给出我们的观点和想法。
软件质量概念和问题
信息时代,软件质量的重要性越来越为人们所认识。软件是产品、是装备、是工具,其质量使得顾客满意,是产品市场开拓、事业得以发展的关键。近10年来,软件质量研究一直是软件研究发展较快的新方向、新问题。这是因为:软件实践积累了经验,需要加以概括,总结为知识,抽象为科学。另一方面,人们一些实践活动失败,乃软件质量低劣所至,这迫使人们不得不进入这一领域,研究软件质量概念和模型,研究影响软件质量的因素及软件质量控制方法。
软件质量是一模糊的、捉摸不定的概念。我们常常听说:某某软件好用;某某某软件功能全、结构合理、层次分明、语言流畅。这些模模糊糊的语言实在不能算作是软件质量评价,特别不能算作是软件质量科学的定量的评价。但是,软件质量,乃至于任何产品质量,都是一个很复杂的事物性质和行为。对于什么是产品质量,可以从以下几个观点来看:
* 透明性观点:质量是产品一种可以认识但不可定义的性质;
* 使用者观点:质量是产品满足使用目的之程度;
* 制造者观点:质量是产品性能和规格要求的符合度;
* 产品观点:质量是联结产品固有性能的纽带;
* 基于价值观点:质量依赖于顾客愿意付给产品报酬的数量。
产品质量,包括软件质量,是人们实践产物的属性和行为,是可以认识,可以科学地描述的。可以通过一些方法和人类活动,来改进质量。概括地说,有三类方法来改进软件质量:控制软件生产过程、提高软件生产者组织性和软件生产者个人能力,已经应用的著名的方法有:
* 净化软件工程(CLEARNROOM SOFTWARE ENGINEERING):这是把软件生产过程,放在统计质量控制下的软件工程管理过程。其特点是:劳动质量管理、重视生产过程和定量分析。这一方法的本质是干干净净生产,以求提高产品质量。
* 评估软件能力成熟度:用软件能力成熟度模型(CMM:CAPABILITY MARTURITY MODEL)来评估软件生产组织研制软件能力的成熟度。CMM是从软件生产组织过程角度,来评估其生产能力和技术水平。软件能力成熟度分5级,当前一般的软件生产组织的软件能力成熟度水平没超过3级。
* 提高软件生产力和个人技能:用人事软件过程(PSP:PERSONAL SOFTTWARE PROCESS)作为一个工具和方法,它给软件工程师提供了测量和分析的工具,并帮助他(她)们理解自己的软件生产水平和技巧的高低,以求得到提高。
软件质量和很多研究领域及实际问题有关,主要相关领域和因素有:需求工程(RE:REQUIREMENTS ENGINEERING)。理论上,需求工程是应用已被证明的原理、技术和工具,帮助系统分析人员理解问题或描述产品的外在行为。软件复用(SR:SOFTWARE
REUSE)。定义为利用工程知识或方法,由一已存在的系统,来建造一新系统。这种技术,可改进软件产品质量和生产率。还有软件检查、软件计量、软件可靠性、软件可维修性、软件工具评估和选择等。
这里,我们对一些有关研究成果加以概述。先给出软件质量概念;然后讨论软件质量模型;最后评论软件质量控制方法。目的是引发对这一领域的研究和兴趣。
软件质量模型
McCall,J.A. 等人对软件质量因素进行了研究,其模型分为三层:因素、准则、计量。这就是说,软件质量是正确性、可靠性、效率……的函数。正确性、可靠性、效率……称之为软件质量因素,或软件质量特征。每一因素又由一些准则来衡量,例如正确性由跟踪性、完全性、相容性来判断;而每一准则又有一些定量化指标来计量。McCall模型可用图1表达。
软件质量特征,在国际标准化组织软件质量测量标准(ISO9126)“信息技术----软件产品评估----和应用指南”中,给出了一些定义(和McCall,J.A.
等人软件质量因素不尽相同)如下表1。
还有人提出了软件质量计量模型(SQM:SOFTWARE QUALITY METRICS MODEL)。软件质量计量模型是把软件质量因素-准则-计量三者综合的软件质量结构模型;其思路如图2示。
图2
可把SQM改为目标规则检查计量层次结构(GRCM)模型:例如评估可读性、可扩充性。
规则1:可读性----目的在于理解类结构,界面和方法。
规则2:可扩性----目的在于可以扩充,保持先进性。 要进行:
可读性检查.1
查看在一个类中方法数目是否小于20 * 计量1.1 方法个数(NIS)
可读性检查.2
查看在一个类层次机构层次数是否小于6 * 计量2.1 层次结构的层数(HNL)
(从底层开始数)
可读性检查.3
查看在一个子类服务于子类是否合理 * 计量3.1 方法不理会需求的个数(NMO)
……
一般的思路是:
在GRCM结构中,因素(FACTOR)对应于目的(GOAL);准则(CRITERIA)对应于规则(RULES)。关于计量(METRIC)可以参考[2]。SQM综合模型和ISO9216对比如图3所示:
图3
GRCM模型在软件工程过程中的作用和地位如图4所示:
图4
实际上,软件质量特性通过有形的质量载体性质表达。而这可由一些计量(定量化)指标表示。
软件生产部门能力成熟模型
1993年,美国防部设在卡内基-梅隆大学的软件研究所(SEI)正式发表了能力成熟度模型。这是评估软件生产部门(组织、厂家)软件生产能力成熟度的模型,是从软件生产组织过程角度,来评估其达到的水平级别。它分5级(如图5),当前我国一般的软件生产组织的水平没超过3级。
图5
这5个级别包含18项内容:
5(优化):过程变化管理、技术变化管理、缺点防止;
4(管理):软件质量管理、过程定量化管理;
3(确定):仔细观察、整体协调、软件生产工程、集成软
件管理、训练规划、组织过程确定、组织过程
中心点;
2(重复):软件构形管理、软件质量保证、软件合同管理、
软件工程跟踪和统筹、软件工程计划、需求管
理;
1(初始):经验和个人行为。
软件生产组织能力5个水平的18项内容,还可以进一步分解。例如:软件工程跟踪和统筹可分解为13项活动。软件生产组织的这13项活动水平,可进行评分;0分;1分;2分……9分;10分。比如第6项,软件计划费用跟踪并采取修正。评分标准是0~10,分为:差-0分;弱-2分;中等-4分;基本合格-6分;合格-8分;优秀-10分。事实上,每一级别、每一项内容都有丰富的内涵,为CMM实施奠定了基础。CMM起源于美国,引起欧洲、印度注意。我国也要引进和应用这种技术和方法。
目前,SEI研制和保有的能力成熟度模型有:
* 软件集成能力成熟度模型(CMMISM: CMM IntegrationSM );
* 软件能力成熟度模型(SW-CMM :Capability Maturity Model(r) for Software);
* 人力能力成熟度模型( P-CMM :People Capability Maturity Model );
* 软件采办能力成熟度模型(SA-CMM:Software Acquisition Capability Maturity Model );
* 系统工程能力成熟度模型(SE-CMM: Systems Engineering Capability Maturity Model );
* 一体化生产研制能力成熟度模型( IPD-CMM :Integrated Product Development Capability Maturity
Model )。
建立这些模型的指导思想和方法论,都是一样的:评估能力,发现问题,帮助改进。
软件质量—系统工程问题和系统方法
用众所周知的一句话概括:软件质量是一复杂系统工程问题。这就是说,它必需用系统方法(SYSTEMS APPROACH)来研究。软件研制是一过程,是以个人智力为基础的有组织的团队性生产活动。这一过程可用水滴模型或螺旋模型来描述,基本内容是:需求、设计、编程、测试、运用,如图6所示。
图6
用全面质量管理思想方法,把软件研制和运用过程全寿命全系统科学的管理,这就是我们的软件质量管理观点和思路,可称之为软件质量系统管理。这是保证软件质量的必由之路。根本原因在于,影响软件质量的因素太多、太复杂。软件质量系统管理,是要把上述水滴模型的每一阶段、每一步骤都管起来。例如,对设计、编程和测试活动的质量保证,如图7所示。
图7
图7中,拿显微镜这位老专家,代表质量系统管理组,根据质量管理规范、程序和方法,实施其质量管理职责。重要的问题在于质量管理规范、程序和方法制定与选择,必需从三个方面进行研究和实施:
* 软件生产组织;
* 软件生产过程;
* 软件生产者个人。
给定软件生产组织环境和个人水平,研究软件生产规律,通过生产过程质量特性计量,反过来对软件质量进行控制。把软件质量控制和软件可靠性、可维修性、测试和监控接合起来。当前,对软件生产组织可用CMM方法,评估其能力成熟程度;
用个人能力软件评价其软件生产水平。然后,再深入软件生产过程中,研究软件计量(定量)和质量控制方法,就能够取得成功。
|