|
1.1 质量和质量认识论
质量的重要性是显而易见的,客户不可能去购买一个存在质量问题的产品,生产厂商如果生产出存在质量问题的产品就不可能卖出去。因此,有不少人说质量是决定产品存在的价值,质量是企业的生命。那么,什么叫质量呢?
质量这一概念有许多不同的定义,不同的立场,不同的观念,对质量的定义就会不同。抛开这些因素,举例说明。《辞海》和《辞源》中,把质量解释为“产品或工作的优劣程度”。世界著名质量管理专家Juran博士,在他的经典著作《质量控制手册》中,把质量定义为“产品在使用时能成功地适合用户目的的程度”。再如,国际标准化组织(ISO)把质量定义为:“反映实体(可单独描述和研究的事物,如活动、过程、产品、组织、体系或人,以及它们各项的任何组合)满足明确和隐含需要能力的特性总和”。那么,人们是如何认识质量的呢?
狭义的质量概念就是产品质量。所谓产品质量好,往往被人们认为生产出最佳产品,即在尽可能充分利用现代生产技术水平的条件下,制造出最好的产品。而且,所谓“好”,常常仅从产品性能着眼。这种概念不能反映质量的全部内容。
广义的质量概念包括产品质量和工作质量两个组成部分,即全面质量。它既要反映客观的要求,又要考虑到设计、制造、销售服务的水平和能力。
在这里,需要对产品作一解释,产品可分为4种类别,即硬件、流程性材料、软件和服务。硬件是不连续的具有特定形状的产品,如空调、洗衣机、电视机等;流程性材料是将原料转化为某一预定状态的有形产品,如流体、气体、粒状、块状、线状或板状,其典型的交付方式有桶装、袋装、罐装、瓶装或通过管道;软件是通过支持媒体表达的信息所构成的一种智力创作,软件的形式如概念、信息、程序、规划、记录、计算机程序等,可见此处的软件是泛指,不单指计算机软件;服务是为满足客户的需要,供方和顾客之间在接触时的活动,以及供方内部活动所产生的结果。因此,产品的提供和使用可构成服务提供的一部分。服务可以与产品的制造和提供相关联。当然,服务亦需投入资源和活动,也是一种价值的增值。
影响质量的因素是什么?其包括5大因素:人、材料、设备、方法和环境。显而易见,人的因素第一,有了人的主动性、对质量的深刻认识,就会非常重视质量的各个环节;材料也非常重要,半导体的收音机和集成电路的收音机取材不同,质量也就有天壤之别;设备的先进程度和工作状态的好坏也能够深刻影响产品质量;方法包含内容更广泛,它可以是生产方法、设计方法、管理方法、检验方法,这就是技术因素;环境也非常重要,集成电路的生产就与环境密切相关,如尘埃就能决定集成电路块是否报废。
任何一个机构,都必须确定质量目标,质量目标就是产品和工程质量在一定时间内可达到的水平,产品和工程质量目标的制订需做3个方面的调查。
(1)用户对开发新产品或改进老产品的意见和要求,包括产品性能、可靠性、安全性、价格、使用维修、外观包装和运输储存等。
(2)生产过程中老产品曾经出现过的问题及新产品开发中可能发生的问题。
(3)国内外有关的技术与经济情况。
制定质量目标还需考虑成本的增加。任何一个产品或者工程项目,其价格是由销售成本所决定的,销售成本包括生产成本、质量成本和利润。就质量成本而言,包括损失成本、检验成本和预防成本。损失成本是因产品未能达到质量要求而造成的各项损失费用,一般包括内部损失(如报废、返修、降级等)和外部损失(如拒收、索赔、声誉破坏等);检验成本是用于检验产品质量所需的各项费用;预防成本是用于预防产生不良产品所需的各项费用,如员工培训、质量管理开销、检测设备购置等。
现在人们不仅从技术层面上去思考产品质量,也从质量管理的角度去思考产品的质量保证,ISO 9000、CMM等都可以看作质量管理所引发的对机构在质量保证方面的考核。所谓质量管理就是为保证和提高产品或工程质量所进行的调查、计划、组织、协调、控制、检查、处理及信息反馈等各项活动的总和。按照国际标准化组织的定义,则包括确定质量方针、目标和职责,并在质量体系中通过例如质量策划、质量控制、质量保证和质量改进,使其实施全部管理职能的所有活动。质量体系是为实施质量管理所需的组织结构、程序、过程和资源;质量策划是确定质量以及采用质量体系要素的目标和要求的活动,包括产品策划、管理和作业策划,以及质量计划的编制和质量改进的准备工作;质量控制是为达到质量要求所采取的作业技术和活动;质量保证是为了提供足够的信任表明实体能满足质量要求,而在质量体系中实施并根据需要进行证实的全部有计划有系统的活动;质量改进是为向本机构及其顾客提供更多的收益,在整个机构内所采取的旨在提高活动和过程的效益和效率的各种措施。有关这些概念的认识,读者可以参考清华大学出版社于1999年出版的《软件企业ISO 9000质量体系的建立和认证》一书。
1.2 软件产品和其他产品的差异
1.1节中所讲的产品包括4种类别,其中的软件还不是单指计算机软件,其范围亦大得多。自从1968年提出软件工程这一概念以来,就希望能够借助传统的工程方法来研发出软件产品。因此,软件产品在某些方面的确相似于其他工程中的有形产品,但毕竟不相同,它们之间存在一些重要的差别。所以,在软件工程中,人们认识到不能够简单地把一般工程中的知识、方法和技术直接应用到软件工程上来。那么软件产品和其他产品有什么不同呢?
(1)软件是逻辑产品而不是实物产品。可以粗略地说软件不是有形产品,磁盘、集成电路块只是软件的载体。这一事实就意味着费用集中在研制开发上而不在生产上。当然,由于是逻辑产品,软件就不会用坏、磨损、老化,而且可以不断地改进、优化,其可靠性由逻辑确定。开发软件在许多方面更像进行数学证明,可是软件产品的评价却主要决定于它们在问题求解中是否有用,而不是决定于抽象的正确性判定标准。换句话说,开发软件产品时主要使用的是工程标准,而不是数学标准。
(2)由于软件是逻辑产品,使得它的功能只能依赖于硬件和软件的运行环境,以及人们对它的操作,才能得以体现。没有计算机相关硬件的支持,软件难有实用价值。同样,没有软件支持的计算机硬件,也只是毫无使用价值的机器。软件与硬件的密切相关的程度是一般工程所没有的。
(3)对软件产品的要求比一般有形产品要复杂。其一,软件产品要完成的多种多样功能,用户难以清晰、准确地表达。凭此一项,软件系统的复杂性可以比得上历史上任何一个工程项目:即使保守估计,一个100万条汇编语句的软件,至少有1万个分功能,其中每一个分功能至少可以用两种不同方式制定。所以,在功能上,软件设计者也得要从210000(相当于103000)种功能组合中进行挑选。其二,对软件产品的要求,如可靠性、易移植性、易使用性等是隐含的,也是难以表达的,而且也缺少度量的具体标准,和有形产品的质量检验的精度相距甚远。其三,软件设计不仅涉及到技术复杂性,也涉及到管理复杂性。 美国Hetgel曾讲过,当他负责一个软件研制小组时,认为关键的问题是方法学问题;当他负责50人的软件开发项目组时,逐渐理解到除方法学之外,程序文档变得越来越重要了;后来他又领导200人的软件开发项目组时,他的认识又有了变化,认识到最关键的问题是管理问题。这是很有代表性的认知过程。即使在今天软件工程已有很大进展的情况下,许多人都不愿意去领导一个庞大的项目组。能像其他工程项目那样进行规模化生产并非易事。
(4)在软件设计时发生的复杂性,引起的软件特征包括4方面。其一,功能的多样性。软件提供的功能比一般工程产品提供的功能更加多种多样,以致用户一时难以掌握。为此,使用软件产品,往往还会伴随一个培训任务,而且软件产品的用户手册还不一定能全面描述其功能。其二,实现的多样性。对软件产品的要求不仅仅包括功能和性能要求,还必须包括在符合功能和性能要求的各种实现中作出选择,更有实现算法上的优化带来的不同,所以实现上的差异会带来使用上的差异。其三,能见度低。要看到软件进度比看到有形产品的进度难得多,这里涉及到如何使用文档(document)表示的概念能见度,这又为软件管理复杂性增加难度。其四,软件结构的合理性差。结构不合理使软件管理复杂性随着软件规模增大而呈指数增长,换句话说,软件规模的增长所引起的管理复杂性成了设计的难题。总之,前两方面属于技术复杂性。后两方面属于管理复杂性。为了控制软件复杂性,人们进行了各种研究,这在一般工程中是前所未有的。
(5)任何一种工程,在其年轻时代总是人工密集的,而到其成熟时期却成为资金密集的。但是软件工程却也有它自己的特点,尽管今后可能有许多活动可以自动化,而软件的资金密集程度终究会比其他工程学科中的资金密集程度高,其中包含更多的人的成分,可以说软件工程是智力密集型。从而,它的知识产权保护就显得极为重要,软件本身会越来越值钱,逐步体现出它应有的价值。
1.3 软 件 质 量
1.2节讨论了软件产品与其他产品的差异,那么软件产品质量与其他产品的质量有没有区别呢?先来看软件质量的定义:反映软件系统或软件产品满足明确或隐含需求的能力有关的特性总和。其含义有四:其一,能满足给定需要的性质和特性的全体;其二,具有所期望的各种属性的组合程度;其三,顾客和用户觉得能满足其综合期望的程度;其四,确定软件在使用中将满足顾客预期要求的程度。简言之,软件质量是软件一些特性的组合,它依赖软件的本身。
后续内容
^……见附件内容 |
|