软件研发质量管理层次模型
摘要:
本文对软件研发质量管理的层次进行了初步的划分,形成了软件研发质量管理层次模型,并对模型中
的各个层次内涵做了简要说明。
关键字:
质量管理、软件研发、层次。
正文:
概述
质量:一组固有特性满足需求的程度,指产品或服务满足规定或潜在需要的特征和特性的总和。他既
包括有形产品也包括无形产品;既包括产品内在的特性、也包括产品外在的特性。即包括了产品的适用性
和符合性的全部内涵。
软件质量:和软件产品满足明确或隐含需求的能力有关的特征和特征的总和。有四个含义:1、能满足
给定需要的特性之全体;2、具有所希望的各种属性的组合的程度;3、顾客或用户认为能满足其综合期望
的程度;4、软件的组合特性,他确定软件在使用中将满足顾客预期需求的程度。
从用户最感兴趣的的角度来说,软件质量能从三个不同的角度来看待:怎么使用软件、使用效果怎么、
软件性能怎么;从软件研发的团队的角度来说,不仅要生产出满足质量需求的软件,也对中间产品的质量
感兴趣,也对怎么运用最少的的资源、最快的进度生产出质量最优的产品感兴趣;从软件维护者的角度看,
对软件维护方面的特性感兴趣;对企业的管理层来说,注重的是总体效益和长远利益,就是说质量好的软
件一般能帮助企业扩大市场;反之,质量差的软件一般会造成企业市场萎缩。
软件质量特性:根据《GB/T16260-1996(idt ISO/IEC9126:1991)信息技术 软件产品评价 质量特性
及其使用指南》软件的质量特性包括功能性、可靠性、易用性、效率、可维护性、可移植性等六个方面,
每个方面都包含若干个子特性:
功能性:适合性、准确性、互操作性、依从性、安全性;
可靠性:成熟性、容错性、易恢复性;
易用性:易理解性、易学性、易操作性;
效率:时间特性、资源特性;
可维护性:易分析性、易改动性、稳定性、易测试性;
可移植性:适应性、易安装性、遵循性、易替换性;
质量管理:在质量方面指挥和控制组织的协调的活动,指对确定和达到质量所必须的全总职能和活动
的管理,其管理职能主要包括制定质量方针和质量目标及质量策划、质量控制、质量确保和质量改进。
软件研发质量管理,就是为了研发出符合质量需求的软件产品,贯穿于软件研发生存期过程的质量管
理工作。
软件研发质量管理层次初步划分如下:
1、技术层次(数据、编程、文件)
2、方法体系层次(措施、项目、过程)
3、社会因素层次(质量环境、技术标准、业务标准、人员)
软件研发质量管理层次模型如下图:
技术层次
1、数据质量管理层次
多数情况下,软件系统的最终目的是对用户关心的各类数据(信息)完成各种各样静态或动态的处理
或管理任务,为用户创造他们所期望和额外的价值。因此数据质量是用户最为关心的,数据质量也反映了
软件系统产品的质量。数据质量是数据抽取、数据转换、数据整合、数据仓库及管理信息系统研发等项目
中质量控制和质量确保必须考虑的主要工作。数据质量管理可分为人工比对、程式比对、统计分析三个层
次。
人工比对
为了检查数据的正确性,测试人员打开相关数据库,对转换前和转换后的数据进行直接的比对,发现
其不一致性,通知相关人员进行纠正。
程式比对
为了自动化地检查数据的质量,更好地进行测试对比,程式员编写查询比对程式给测试人员使用。测
试人员使用此程式对转换前和转换后的数据进行比对,发现其不一致性,通知相关人员进行纠正。
统计分析
为了更加全方面地从总体上检查数据的质量,需要通过统计分析的方法,主要通过对新旧数据不同角
度、不同视图的统计对数据转换的正确程度进行量化的分析,发现其在某个统计结果的不一致性,通知相
关人员进行纠正。
2、编程质量管理层次
软件系统是靠“编”出来的,为了确保软件产品的质量,就必须确保软件程式代码的质量。为了提高编
程质量,应检查源码的逻辑、属性、对象命名标准、语言代码布局等内容;代码的编译、链接、集成和构
建必须得到验证和确认。编程质量管理层次可分为黑盒测试、灰盒测试、白盒测试、编译检查、编程规范、
编程逻辑、编程优化。
黑盒测试
黑盒测试检验是否符合系统需求,也称功能测试或数据驱动测试。他是在已知产品所应具有的功能,
通过测试来检测每个功能是否都能正常使用。在测试时,把程式看作一个不能打开的黑盆子,在完全不考
虑程式内部结构和内部特性的情况下,测试者在程式接口进行测试,他只检查程式功能是否按照需求规格
说明书的规定正常使用,程式是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如
数据库或文件)的完整性。
灰盒测试
灰盒测试介于白盒和黑盒二者之间,关注输出对于输入的正确性,同时也关注内部表现,但这种关注
不像白盒那样周详、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出
是正确的,但内部其实已错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会非常低,因
此需要采取这样的一种灰盒的方法。
白盒测试
白盒测试也称结构测试或逻辑驱动测试,他是在知道产品内部工作过程的情况下,按照程式内部的结
构测试程式,检验程式中的每条通路是否都有能按预定需求正确工作,而不顾他的功能。白盒测试的主要
方法有逻辑驱动、基路测试等。
编译检查
使用研发工具所带的编译功能或专门程式对软件源码进行检查,分析和寻找源码存在的问题。
编程规范
通过人工源码检查判断源码是否符合企业已制定的相关编程规范。制定编程规范,在企业内形成一个
研发约定和规则,有利于整体风格统一、代码的可读性、可维护性和可扩展性。
编程逻辑
所编写的源码是否考虑周全,无矛盾或遗漏之处。常见问题如:忘记定义变量就使用、变量没有赋值
初就直接使用、输入输出的数据类型和所用格式说明符不一致、没有注意数据的数值范围造成数组越界或
数据溢出、输入时数组的组织方式和需求不符、循环语句可能会造成死循环、条件语句只考虑符合的情况
而没有考虑例外的情况、读取文件或数据库中的数据没有考虑例外情况,等等。
编程优化
通过人工或软件检查判断是否可进一步提高源码总体性能和运行可管理性。总体性能如内存管理、数
据库组织和内容、非数据库信息、任务并行性、网络多人操作、关键算法、和网络、硬件和其他系统接口
对性能的影响等等;运行可管理性如便于控制系统运行、监视系统状态、错误处理;模块间通信的简单性
等等。
3、文件质量管理层次
文件(包括模型)是软件研发过程中的中间成果,这些中间结果关系到软件需求的准确性完整性、设
计的合理性,对软件系统的最终结果有决定性作用。文件质量管理层次包括文件规范、文件语法、文件语
义、文件逻辑、文件美学、文件优化。
文件规范
文件成果符合企业或业界已制定的文件模板规范。企业甚至行业应当制定统一的文件规范,形成一个
文件约定和规则,以统一文件内容和风格。
文件语法
文件成果正确使用通用的工具和术语、符合相关行业的技术标准。所有语言都有他的语法,所有质量
合格的文件(包括模型)都应该是语法正确的,不正确的语法会影响规格说明和可视化的质量。
文件语义
文件成果表达正确、无歧义。所有质量合格的文件(包括模型)都代表他期望代表的语义,而且应该
在代表这些语义的时候具有一致性。
文件逻辑
文件成果考虑周全,不矛盾,满足客户的关键需求,特别是要符合相关行业的业务标准。
文件美学
文件成果是最佳表述,文字、图表是均衡和完整的。就是追求平衡的美,每个组成部分应该不大不小,
可解读、可变更、不同时代表太多的元素。
结果优化
通过检查判断文件成果(如项目计划、需求规格、设计方案)是否更有改进的空间,以尽可能达到最
佳方案。所有一项设计,都能有许多不同的方案,通过“方案优化”选定一种最佳的方案。
所有一位设计师在做一项设计的时候总是选择他认为是最佳的方案,都有某种程度上的“优化”,因此
他能说他的产品是经过“优化”的。无论何种意义上的优化,都有一个一起的特点,就是相对性。这个相对
性有两方面的意义,一是优化是相对某种目标的,目标不同优化的结果不同。另一方面是在大多数的情况
下,优化的结果并不是最优的,只能是相对好的。
方法体系层次
1、措施质量管理层次
为提高软件质量企业所采取的相关措施。决定成败的不是目标,而是措施。所有好的规章制度或计划,
最终都需要具体措施才能落到实处。措施层次包括质量检查、质量确保、预防不合格品、完美无缺。
质量检查
确保质量的方式是进行临时性的最后检查,然后消除次品。软件测试是软件质量检查的具体实现环节。
把软件测试有效地组织进软件的生产流程,是软件质量控制规划的主要内容。
质量确保
质量目标仍主要通过生产部门或企业进行生产过程的优化和稳定化来确保质量目标的达成。从软件产
业的发展初期到目前的大型软件研发过程,软件质量确保已成为研发中的一个不可分割的部分。
预防不合格品
整个软件业项目属于需求分析和软件设计的错误和缺陷约占软件错误的 64%,而属于程式代码的错误
仅占 36%。软件错误具有随着阶段的进展而产生积累和放大效应,因此应当尽早消除错误,否则“差之毫厘,
失之千里”。所以在软件研发生命周期的前期就通过对关键过程成果的评审控制来预防不合格品。
完美无缺
这一级上的企业都有一种内在的质量文化氛围,在此氛围下的方方面面工作都有助于质量的提高。每
个员工都意识到质量对企业成功的重要性,都在寻求提高质量的新途径,都在为达到完美无缺而奋斗。同
时,企业始终如一地面向外部客户,通过优越的设计质量来满足客户需要,并从供给商到客户形成一个优
化的管理流程。
2、项目管理质量层次
软件研发任务一般是以项目的形式完成,项目管理质量包括组织资源、组建团队、设定目标、确定范
围、确定优先级、管理风险、建立沟通机制等内容,其层次分为通用术语、通用过程、单一方法、基准比
较、持续改进。
科兹纳博士对项目成功的定义,不仅要满足传统的项目时间、费用和性能的三大目标及满足客户或用
户定义的质量标准,还要满足具有最少的或双方同意的范围变更、没有干扰组织的企业文化或价值观、没
有干扰组织的日常工作进程等条件。
通用术语
企业了解了项目管理的重要性,并需要进一步了解对项目管理基础知识及相关的语言和术语。在企业
内部普及项目管理基础知识,使用业界通语言和用术语进行沟通,使大家形成对问题的正确理解。
通用过程
企业认识到自己需要定义和建立通用过程,以便在一个项目上成功之后,还能将该过程及其成功经验
重复地用于其他许多个项目。在这一层次上,还包括理解项目管理原则对公司所用其他方法的应用和支持。
单一方法
企业尽量通过单一的方法研发,而不是使用多个方法,能最佳地实现协同效应和控制,认识到了把公
司所以方法结合成一个单一方法所产生的协同效应,其核心是项目管理。和使用多个方法相比,只用一个
方法所产生的协同效应使得程控更加容易。
基准比较
不断将本企业的管理实践和行业龙头企业比较,以获得信息来帮助自己改善。企业认识到为了保持竞
争优势,过程改进是必要的。基准比较必须连续进行。公司必须决定以谁为基准点及需要比较什么。
持续改进
质量是“没有最佳,只有更好”。企业持续在必要时评估基准比较中获得的信息,实施为改进过程所必
要的变革。在 ISO9000:2000 中,持续改进不是个独立的过程或质量体系要素,而是管理质量体系的方法。
企业最重要的问题是“明天这样做的比今天好”企业要永不满足,没有终点,永无休止地努力工作,追
求进步和持续改进,为未来努力奋斗。
3、过程质量管理层次
《GB/T8566—2001(idt ISO/IEC12207)信息技术-软件生存周期过程》把软件生存周期的各个过程分
为三类,即基本生存周期过程、支持生存周期过程、组织生存周期过程。
对于质量,强调的是对过程的重视,通过确保每个环节的工作质量,来确保最终质量,而不是通过最
后的检验测试找出缺陷。他们的质量概念,不仅涵盖产品,还包括企业的整个运营过程,贯穿产业链的各
个环节。确保生产出高质量的软件产品,就是遵循一套有质量原则的软件研发过程。目前软件过程改进主
要根据能力成熟度模型集成 CMMI,其层次分为初始级、可重复级、已定义级、已管级、优化级。
初始级
企业的软件过程是无序的,甚至是混乱的。几乎没有什么过程是经过妥善定义的,项目的成功往往依
赖于没写个人的技能和经验。
可重复级
已建立了基本的项目管理过程规范,项目经理能跟踪成本、进度、和产品功能等,项目能重复以前的
成功。企业的过程能力能概括为“有纪律的”。
已定义级
已将管理和研发两个方面的过程文件化,并综合成企业的标准软件过程。所有项目都能通过裁减企业
标准过程而建立适合于本项目的过程规范。此过程能力能概括成“标准的”和“一致的”,他建立在整个企业
对软件过程中的活动、角色、职责的一起理解之上。
已管理级
对软件过程和产品都有定量的理解和控制,有专门的数据库系统来收集和分析数据。此过程能力能概
括成“定量的”和“可预测的”。
优化级
能够有效地识别企业过程的优势和薄弱环节,发现并采用最佳的软件工程实践,预先防范过程和产品
中的缺陷。整个企业强调持续地改进过程能力。
社会因素层次
1、企业质量环境层次
企业质量环境是有关创建和管理质量环境的管理,包括质量规划、资源组织、提供相关工具等,其层
次可分为质量形象、质量制度、质量战略、质量文化、企业文化、全社会质量意识。
质量形象
企业的良好形象和其产品和服务的高质量密不可分。质量、信誉、品牌、服务等构成企业整体形象的
坚实基础,其中质量形象是企业形象的核心。塑造良好的质量形象是企业提高自身核心竞争力的重要手段。
质量制度
企业建立了完善的质量制度,包括 ISO9001 质量管理体系、和质量相关的配套管理、教育、激励制度
的完善程度,及对于质量制度的执行力度。
有些企业或部门制定了太多的规章制度,但都流于形式,最终落到实处的不多。再好的规章制度,再
伟大的计划,都成了一堆废纸。对企业来说,最重要的不是制定了多少制度多少计划,而是做了多少事情。
企业如果强调质量,就要检查质量,不检查质量就是不重视质量,有制度就必须执行好。
质量战略
在企业管理中以人为本,以提高质量为中心,一切活动围绕质量行为,将质量管理提高到战略的高度。
制定质量方针目标。
质量文化
企业在长期的质量管理中形成的具有本企业特色的管理思想和精神理念,同时也是企业员工为实现质
量方针目标而自觉遵守的一条一起的价值观和信念。
企业文化
一个企业中各个部门,至少是企业高层管理者们所一起拥有的那些企业价值观念、经营实践、文化现
象。他以企业的价值观体系为基础,以企业员工的群体意识形态为反映。
全社会质量意识
产品质量不完全取决于企业本身,社会环境、顾客的成熟程度对产品质量起到比较重要的作用。顾客
盲目压低价格、压缩进度,造成的恶性竞争环境严重影响产品的质量。
2、标准层次
国际竞争有三个层次:第一个层次是价格和质量的竞争、第二个层次是专利技术的竞争、第三个层次
是标准和制度的竞争。谁掌控了标准的使用,谁掌控了标准的制定权,谁就能抢占先机。一流企业卖标准,
二流企业卖品牌,三流企业卖产品,四流企业卖企业。我国软件企业要适应更高层次的竞争,就要在标准
领域占据一席之地。
标准主要包括技术标准和业务标准两大类(当然还能其他分类如基础标准、产品标准、质量标准、管
理标准、工作标准、安全标准、术语标准等等)。对标准化领域中需要协调统一的技术事项所制定的标准,
称为技术标准。技术标准包含两个方面:一是作为软件研发企业的软件行业技术标准,包括知识体系指南、
过程标准、建模标准、质量管理标准、程式语言标准、数据库标准;二是软件研发服务对象所在的行业技
术标准,如安全保密标准、技术性能标准。业务标准指的是软件研发服务对象所在的组织或行业制定的业
务流程标准和业务数据标准等。
运用统一的技术和业务标准是对于质量能够做出重大而且显著贡献的因素之一,有助于减少无效的讨
论,有助于不同的产品之间的兼容和衔接。
标准要不断地和时俱进,因此,标准是种动态信息。
标准作用范围级别
项目标准:项目团队在软件研发周期的早期就确定下来的相互达成一致的标准集合;
企业标准:企业自行制定的规范整个企业架构和所有企业级交付产品的标准集合;
地方标准:由一个国家的地方一级行政机构(省、州或加盟共和国)制定的标准,称为地方标准。他
一般由地方所属的各企业和单位执行。同样是个行业,每个地方可能有不同的业务政策、业务数据标准、
业务流程标准;
行业标准(部颁标准):指没有国家标准而又需要在全国某个行业范围内统一的技术需求。行业规定
的全国本行业必须遵守的的业务数据标准、业务流程标准,标准编号一般以行业名称的拼音头个字母打头,
如环境 HJ、电力 DL、公安 GA;
国家标准:是在全国范围内统一的技术需求。由国家规定的标准,主要是数据标准,行业之间的接口
标准,标准编号一般以 GB、GB/T、GB/Z 打头。
国际标准:涉及到国际上多个国家或地区必须遵守的如金融、电信、财务、贸易等业务标准。国际标
准一般由国际标准化组织制定,如 ISO、ANSI、IEEE 等等,这也是标准编号的打头字母,如 ISO9001。
、标准强制程度级别
强制标准:保障人体健康、人身、财产安全的标准和法律、行政法规规定强制执行的标准是强制性标
准,其他标准是推荐性标准;如编号以 GB、HJ、DL、GA 字母开头的标准,一般业务数据标准是强制标
准。
推荐标准:推荐性标准又称非强制性标准或自愿性标准。是指生产、交换、使用等方面,通过经济手
段或市场调节而自愿采用的一类标准。如 GB/T、HJ/T、DL/T、GA/T,一般业务流程标准、工作规范或指
南等是推荐标准。
指导性标准:对标准化工作的原则和一些具体做法的统一规定,称为指导性标准。例如:产品型号编
制规则、各类标准编制导则等。如 GB/Z、HJ/Z、DL/Z、GA/Z 编号的标准。
、软件研发常用技术标准
知识体系:软件工程知识体系指南 SWEBOK2004、项目管理知识体系指南 PMBOK2000(最新的是
PMBOK2004) 、组织管理标准等等;
过程标准:CMMI、PSP、TSP、RUP、软件工程规范国家标准;(AP、XP、ASD 等研发过程思想似
乎还不能称其为标准)
建模标准:UML、软件工程规范国家标准;
质量管理标准:ISO9001:2000、TQC、6σ;
程式语言标准:Java、C++、PB、编程规范;
数据库标准:Oracle 数据库后台规范。
3、人员质量管理层次
人员质量是所有工作质量的基础。要提高工作质量,就要以人为本,根本的问题是提高人的质量。人
员质量就是人员素质,层次分为个人素质、团队素质、组织素质、行业素质、国民素质。
个人素质
软件研发的个人素质的内涵非常广,包含多个方面,包括学习能力、总结能力、学识经验、进取精神、
社交能力、责任心、自我控制、成就动机、灵活性、创造性潜力、管理潜力、工作态度、诚实水平等等。
关键是根据自身特点发挥自己的特长,同时要有过硬扎实基本功的真才实学,不做表面功夫花架子的花拳
绣腿。这一点在做程式员的时候大家都会非常注意学习,但在从程式员提升到设计师、分析师、项目经理
时,往往存在不注意学习新角色所需知识技能,学了皮毛就觉得什么都会的情况。
团队素质
软件研发的团队素质的范围涉及到非常多团队管理方面的知识经验技巧。关键是能够合理地按照成员
的特点分配工作任务,同时计划好各个工作人员的工作接口,鼓励互相补位。团队素质的提高在于团队建
设,团队建设活动包括为提高团队运作水平而进行的管理,及采用的专门的、重要的个别措施。团队精神
就是团队的精神,因此要问某个团队有没有团队精神,不问某个成员有没有团队精神。
软件研发团队素质能学习参考 TSP、RUP、SWEBOK、PMBOK、CMMI、ISO9001 等需求进行提高,
也能借鉴 AP、XP、ASD 等研发经验(不管那种都不一定要完全照搬实施)。
组织素质
软件研发的组织素质内涵涉及到非常多组织管理方面的知识经验技巧。组织应当为实现一起的愿景,
建立学习型的组织,不断持续改进。企业组织高层领导能不必需要那么多软件研发的专业知识,最主要是
要认识到人是一切活动的核心,是一切活动成功的前提,所以要尊重专业人员使其发挥作用。根据彼得原
理,大部分领导因为在某些方面突出而被提拔到他无法胜任的位置,因此有些被提拔上去的领导急于证实
自己样样精通是可笑的。领导最重要的是选对人、用对人、激励人、提高人,使每个人都充分发挥应有的
作用。
行业素质
行业素质有两层意思,一是作为软件研发企业的软件行业,另一个是软件研发服务对象所在的行业。
行业素质能从几个方面看,如行业机构的健全程度,行业学术的活跃程度,行业标准制定的完整程度、适
用程度、先进程度,行业标准规范的推广力度和程度,行业从业人员的规模及总体水平,行业外贸出口金
额,例如,为什么印度的软件外贸出口金额让中国望尘莫及?为什么印度能拥有那么庞大的软件蓝领队伍?
印度软件企业对 CMMI 是什么态度,中国软件企业对 CMMI 是什么态度?为什么对于 AP、XP、“颠覆软
件工程”的片面理解在中国大有市场?
(注意:《软件工艺》实际上是从另一个角度来强调“个人素质”的重要性,实际上是要说明组织性规
范性和创造性特色性之间的平衡,就像《软件工艺》自己所说的那样,“软件工艺并非和软件工程或计算机
科学针锋相对,格格不入。和科学和工程学相比,软件工艺是另一种完全不同的教义,但又能和这两者非
常好地共存,并从中获益,他融合了艺术、科学、工程学三者”。如果因为强调“个人素质”的作用,强调作
坊工艺的作用,而否定团队研发、和使用有效地分析设计方法和过程,就是走向了另一个极端。《软件工艺》
把软件的缺陷狭隘地定义成“程式员所犯的错误”,所以其结论是“真正决定项目成败的,是作为个体的程式
员的技能、知识和经验。”实际上如果在需求、分析或设计上犯了错,或在项目管理上犯了错,其造成的缺
陷比“程式员所犯的错误”的影响不知道要大多少。另外极限编程所需的程式员随时直接和用户交谈的条件
也是大多数软件研发项目非常难满足的。)
国民素质
中国的国民素质和其他国家相比,有些地方是高的,有些地方是不足的。我们要发扬我们的好处,同
时也要学习别人的好处,弥补自己的缺点。自己过去为什么会被人看不起、会被人侵略?发几句牢骚,喊
几句口号起得了什么作用?我们应当从自己和他人两个方面同时查找原因。关键是不断提高自身的整体素
质,增强国力。如果我们看看欧美日等国家的企业是怎么进行质量管理的,就不难理解他们的产品质量为
什么那么好,甚至连印度在软件质量管理等方面也有非常多值得我们学习的地方。
结束语
人是一切人类活动的基础,要提高软件研发质量,就必须以人为本,首先提高人的质量。通过标准化、
规范化的建设和落实,通过创建良好的社会和企业质量环境,在企业内部不断改进研发过程质量、项目管
理质量,改进质量措施。针对具体项目进行良好的分析设计规划,编写出质量优良的系统程式,确保数据
(信息)及其管理的质量,为客户、为社会提供满意的产品和服务。