软件质量管理
软件质量,是贯穿软件生存期的一个极为重要的问题,是软件开发过程中所使用的各种开发技术和验证方法的最终体现。因此,在软件生存期中要特别重视质量的保证,以生成高质量的软件产品。
一、软件质量的定义 有多种关于软件质量的定义。例如,ANSI/IEEE Std 729—1983 定义软件质量为“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。M. J. Fisher 定义软件质量为“所有描述计算机软件优秀程度的特性的组合”。也就是说,为满足软件的各项精确定义的功能、性能需求,符合文档化的开发标准,需要相应地给出或设计一些质量特性及其组合,作为在软件开发与维护中的重要考虑因素。如果这些质量特性及其组合都能在产品中得到满足,则这个软件产品质量就是很高的。软件质量反映了以下三方面的问题: (1) 软件需求是度量软件质量的基础。不符合需求的软件就不具备质量。 (2) 在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。 (3) 往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能得到保证。
软件质量是各种质量要素的复杂组合,它随着应用的不同而不同,随着用户提出的质量要求不同而不同。因此,有必要讨论各种质量要素,以及评价质量的准则。
二、软件质量要素
1. 软件质量模型 这里把影响软件质量的因素分成 3 组,分别反映用户在使用软件产品时的 3 种不同倾向或观点,即产品运行、产品修改和产品转移。 2. 软件质量要素 软件质量也可分解成 6个要素,它们是软件的基本特征: (1) 功能性:软件所实现的功能满足用户需求的程度。功能性反映了所开发的软件满足用户陈述的或蕴涵的需求的程度,即用户要求的功能是否全部实现了。 (2) 可靠性:在规定的时间和条件下,软件所能维持其性能水平的程度。可靠性对某些软件来说是重要的质量要求,它除了反映软件满足用户需求正常运行的程度,还反映了在故障发生时能继续运行的程度。 (3) 易使用性:对于一个软件,用户学习、操作、准备输入和理解输出时所做努力的程度。易使用性反映了与用户的友善性,即用户在使用本软件时是否方便。 (4) 效率:在指定的条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效程度。效率反映了在完成功能要求时,有没有浪费资源。 (5) 可维修性:在一个可运行软件中,为了满足用户需求、环境改变或软件错误发生时进行相应修改所做的努力程度。可维修性反映了在用户需求改变或软件环境发生变更时, 对软件系统进行相应修改的容易程度。一个易于维护的软件系统也是一个易理解、易测试和易修改的软件,可方便地纠正或增加新的功能,或允许在不同软件环境上进行操作。 (6) 可移植性:从一个计算机系统或环境转移到另一个计算机系统或环境的容易程度。
三、 软件质量评价准则
评价准则可分成 22 点,包括精确性(在计算和输出时所需精度的软件属性)、健壮性(在发生意外时,能继续执行和恢复系统的软件属性)、安全性(防止软件受到意外或蓄意的存取、使用、修改、毁坏或泄密的软件属性),以及通信有效性、处理有效性、设备有效性、可操作性、培训性、完备性、一致性、可追踪性、可见性、硬件系统无关性、软件系统无 关性、可扩充性、公用性、模块性、清晰性、自描述性、简单性、结构性和产品文件完备 性。评价准则的一定组合将反映某一软件质量要素。
四、软件质量度量
根据软件的需求分析、概要设计、详细设计、实现、组装测试、确认测试和维护与使用 7个阶段,制定了针对每一个阶段的问卷表,以此实现软件开发过程的质量控制。对于企业来说,不管是定制,还是外购软件后的二次开发,了解和监控软件开发过程每一个环节的进展情况、产品水平都是至关重要的,因为软件质量的高低,很大程度上取决于用户 的参与程度。
这里需要说明几点: (1) 不同类型的软件,如系统软件、控制软件、管理软件、CAD 软件、教育软件、网络软件及不同规模的软件,对于质量要求、评价准则、度量问题的侧重点有所不同应加以区别。
应用环境与要素对照表
|
应用环境特性
|
需要考虑的要素
|
|
生存期长
|
可移植性、可维护性
|
|
实时系统
|
可靠性、效率
|
|
要在不同的环境中使用
|
可移植性
|
|
在银行系统中使用
|
可靠性、功能性
|
软件质量保证和评价活动有其不同的侧重点。在需求分析、概要设计、详细设计及其实现阶段,主要评价软件需求是否完备,设计是否完全反映了需求以及编码是否简洁、清晰。而且,每一个阶段都存在一份特定的度量工作表,它由特定的度量元组成,根据度量元的得分就可逐步得到度量准则、要素的得分,并在此基础上做出评价。这一点很适用于同软件开发商合作开发的企业。 (2) 对软件质量各阶段都进行度量的根本目的是以此控制成本、进度,改善软件开发的效率和质量,但是,目前大规模的软件公司在我国并不多,大多数软件开发单位都缺乏软件质量保证与软件质量评价的专门部门,因而企业可以委托专业机构参与帮助软件质量控制与保证。例如,美国的 METRTQS 公司就是专门从事软件质量评价的公司,而日本的NEC 公司是由公司内部的软件质量保证组织进行。 (3) 企业选择软件供应商、开发商,需要考察该公司是否建立起自己的软件质量度量和评价数据,数据库中是否存有与本企业所在行业相关的软件,是否具有相关的开发经验。
五、全面质量管理
质量是产品或服务的生命。质量受企业生产经营管理活动中多种因素的影响,是企业各项工作的综合反映。要保证和提高产品质量,必须把影响质量的因素全面系统地管理起来,全面质量管理,就是企业为了保证和提高产品质量,综合运用一整套质量管理体系、手段和方法所进行的系统性管理活动。具体地说,就是组织企业全体职工和有关部门参加,综合运用现代科学和管理技术成果,控制影响产品质量的全过程和各因素,经济地研制生产和提供用户满意的产品的系统管理活动。 1. 全面质量管理的概念 全面质量管理(total quality management)是一种思想观念,一套方法、手段和技巧,通过全体员工的参与改进流程、产品、服务和企业文化,达到在百分之百时间内生产百分之百的合格产品,以便满足顾客需求(Customer Satisfaction, CS),从而获取竞争优势和长期成功。 2. 实施全面质量控制 1) 实行工程化开发 “信息系统开发方法”一词的广义理解是“探索复杂系统开发过程的秩序”;狭义理解是“一组为信息系统开发起工具作用的规程”,按这些规程工作,可以较合理地达到目标。规程由一系列活动组成,形成方法体系。信息系统是一项系统工程,必须建立严格的工程控制方法,要求开发组的每一个人都要遵守工程规范。 2) 实行阶段性冻结与改动控制 信息系统具有生命周期,这就为划分项目阶段提供了参考。一个大项目可分成若干阶段,每个阶段有自己的任务和成果。这样一方面便于管理和控制工程进度,另一方面可以增强开发人员和用户的信心。 在每个阶段末要“冻结”部分成果,作为下一阶段开发的基础。冻结之后不是不能修改,而是其修改要经过一定的审批程序,并且涉及到项目计划的调整。 3) 实行里程碑式的审查与版本控制 里程碑式审查就是在信息系统生命周期每个阶段结束之前,都正式使用结束标准对该阶段的冻结成果进行严格的技术审查,如果发现问题,就可以及时在阶段内解决。 版本控制是保证项目小组顺利工作的重要技术。版本控制的含义是通过给文档和程序文件编上版本号,记录每次的修改信息,使项目组的所有成员都了解文档和程序的修改过程。广义的版本控制技术称为软件配制管理,并已有功能完善的软件工具支持,如 PVCS和 Microsoft Visual SourceSafe。 4) 实行面向用户参与的原型演化 在每个阶段的后期,快速建立反映该阶段成果的原型系统,通过原型系统与用户交互,及时得到反馈信息,验证该阶段的成果并及时纠正错误,这一技术被称为“原型演化”。原型演化技术需要先进的 CASE 工具的支持。 5) 尽量采用面向对象和基于构件的方法 面向对象的方法强调类、封装和继承,能提高软件的可重用性,将错误和缺憾局部化,同时还有利于用户的参与,这些对提高信息系统的质量都大有好处。 基于构件的开发又被称为“即插即用编程”方法,是从计算机硬件设计中吸收过来的优秀方法。这种编程方法将编制好的“构件”插入已做好的框架中,从而形成一个大型软件。构件是可重用的软件部分,构件既可以自己开发,也可以使用其他项目的开发成果,或者直接向软件供应商购买。当发现某个构件不符合要求时,可对其进行修改而不会影响其他构件,也不会影响系统功能的实现和测试,就好像整修一座大楼中的某个房间,不会影响其他房间的使用。 6) 全面测试 要采用适当的手段,对系统调查、系统分析、系统设计、实现和文档进行全面测试。 7) 引入外部监理与审计 要重视信息系统的项目管理,特别是项目人力资源的管理,因为项目成员的素质和能力以及积极性是项目成败的关键。同时,还要重视第三方的监理和审计的引入,通过第三方的审查和监督来确保项目质量。
进行全面质量管理必须抓好下述方面:
(1) 内容与方法的全面性。不仅要着眼于产品的质量,而且要注重形成产品的工作质量。工作质量是产品质量的保证。通过提高工作质量,不仅可以保证提高产品质量,预防和减少不合格品,而且还有利于达到成本降低、供货及时、服务周到、更好地满足用户各方面使用要求的目的。要注重采用多种方法和技术,包括科学的组织管理工作、各种专业技术、数理统计方法、成本分析和售后服务等。 (2) 全过程控制。即对市场调查、研究开发、设计、生产准备、采购、生产制造、包装、检验、贮存、运输、销售、为用户服务等全过程都进行质量管理。 (3) 全员性。即企业全体人员包括领导人员、工程技术人员、管理人员和工人等都参与质量管理,并对产品质量各负其责。 “把用户需要放在第一位”,牢固树立为用户服务、对用户负责的思想,应该是企业推行全面质量管理始终贯彻的指导思想和根本原则。企业通过全面质量管理,不仅要生产出用户满意的产品,而且要为用户在使用过程中提供各种方便,加强技术服务,以充分发挥产品的效用,提高产品的实际使用价值,达到更好地满足用户需要的目的。
|