0 引言
信息化是当今世界发展的大趋势,是推动经济社会变革的重要力量。进入21世纪,信息化正在越来越深刻地影响着经济社会的发展。党的十七大提出“大力推进信息化与工业化融合”以来,我国不断推进信息化建设,通过信息化手段提升管理水平、推动科技进步、防范经营风险,从而增强核心竞争力。
信息化就是经济、科技和社会各个领域,通过信息技术开发利用信息资源,发展信息产业,不断提供综合实力和核心竞争力。在信息化中,“化”是过程,即通过信息技术的应用推动信息资源的整合、传播和再造的过程。软件是信息社会的重要技术和核心,是信息化过程的载体和实现途径,了解软件这一特殊产品的质量概念并且通过有效手段控制软件质量,对于信息化过程的成败至关重要。
1 软件质量概念
“质量”这一概念在不同时期的定义各不相同。从最初的“符合要求”、“适于使用”到“零缺陷”、“满足客户要求”,人们对质量的认识不断深入。
“质量管理”在现代工业生产中的作用也越来越被人们重视。ISO9000对质量的定义是“一组固有特性满足要求的程度”,这个定义指出:①质量应满足客户要求;②除了产品质量,体系或过程也有质量要求;③质量是不断发展和开放的;④质量的最终检验是通过客户和其他相关方面;⑤质量的本质含义是经济学的,即以最低的成本获得最大的收益。ISO9126的信息技术标准中对软件质量的定义是:与软件产品满足明确或隐含需求的能力有关的特征和特性的总和,根据不同性质可以对软件质量特性进行以下分类,如表1所示。
表1 ISO9126软件质量特性
ISO9126的信息技术标准为软件质量评估定义了六个产品质量特性,通过这六个特性可以有效判断软件产品的质量。
2 信息化过程中软件质量管理现状分析
21世纪,信息化已成为经济社会发展的重要的生产力要素。软件是信息社会的重要基础和核心,是一个国家生产力水平和综合实力的象征,在知识经济中软件是起决定作用的支柱产业。信息化是庞大的系统工程,覆盖企业的方方面面。当前随着信息化的推进和深入,各种问题也不断凸显。如信息化建设中各自为政、重复建设、成果独享、信息孤岛和信息壁垒等问题大良存在,这不仅浪费了资源,也为后期的业务整合、系统集成和移植带来了巨大困难。虽然我国软件产业经过近十余年的快速发展,但产业规模小、资金投入不足、知识产权保护不力等各种原因导致的软件质量不高也是不争的事实。
在信息化过程中,软件质量保证直接关系到信息化水平。特别是需要二次开发的产品,软件质量控制和有效管理将决定开发的成败。
从当前信息化发展过程和软件质量管理之间的关系来看,企业信息化过程中的软件质量管理主要存在以下问题:
(1)缺乏软件质量意识,信息化建设中软件质量问题未被完全重视。无形的软件产品较有形产品隐蔽,软件质量的检查,需要一定的知识基础,对软件进行全面的检测、评估需要系统的方法和相关的标准以及评价体系,长此以往造成软件质量意识的淡化。同时,在项目交付后,软件质量缺乏科学的量化指标。
(2)追求项目进度及工期,从而忽视软件质量和软件过程控制。较之国外长期的信息化实施过程,我国信息化起步晚、底子薄,信息化过程积累的经验相对较少,尚未形成规范的标准和对应的体系,项目实施中不能形成有序的开发组织计划,文档控制和管理不规范,阶段性测试不深人等质量控制问题大量存在。
(3)软件技术处于发展过程,质量管理体系滞后。在开发过程中,对软件技术的发展高于软件质量的要求。软件开发是高智力的创造性活动,更强调开发过程的创新和合作;同时,质量管理过程滞后于软件技术本身。
(4)存在多个软件开发方“转包”,以完成不同规模软件实施的情况。重复调研和局部开发,造成质量体系和开发标准、规范不兼容,数据不能共享,系统难以集成。
(5)信息化全过程缺乏有效质量控制体系。信息化过程的流动模式是:需求→调研→选型→招标→开发→测试→上线→维护。该模式的每一环节的质量控制都很重要。其中,处于开发、测试环节的质量问题是通过软件生产企业对产品的负责而受到一定的控制,但大多数质量控制活动仅限于软件测试,未对信息化过程的各个阶段质量进行控制。
软件企业经营策略和责任心影响软件质量控制的态度,同时也由于甲方信息化知识水平影响鉴别能力,这两个环节的质量控制都具有很大弹性。
针对以上分析可以看出,不同的质量管理问题将影响信息化过程开发的各个方面。这其中,对软件产品和服务、过程规范控制、软件开发效率、时间和进度、资源和费用问题、技术成熟度、标准和规范以及系统的兼容性和集成度的影响在软件质量控制中表现尤为突出,如图1所示。
图1 软件质量控制对实施环节的影响
3 基于过程的软件质量控制
质量及质量管理的理论是在制造业中产生并发展的,建立在生产过程“稳定、受控”的基础上。对软件这一特殊的无形产品,应将质量与质量管理的理论应用于软件产品及其涉及的各个过程,并针对信息化中软件开发的过程进行有效的质量管理与控制。
软件的设计、开发、生产、流通、服务与支持等,涉及管理者、销售者、产品用户以及开发过程的各类人员及组织。因此需要从全面的软件质量观出发(客户观、价值观、服务观),深入分析与软件开发有关的组织、人员、活动、过程对质量的影响,对信息化过程的软件开发按照模块和流程进行划分,建立模块化的过程控制和管理模型,以识别影响软件过程的各种因素。图2概要描述了基于过程的软件质量管理和控制途径。
图2 基于过程的软件质量管理和控制途径
3.1 软件需求过程质量管理
IEEE软件工程标准词汇表中对“需求”的定义为:①用户解决问题或达到目标所需的条件或能力; ②系统或部件满足合同、标准、规范等所需具有的条件或能力;③与①-②相关的一组描述说明文档说明。从实际操作来说,本阶段确定三个重要的需求分析文档:用户需求规格说明书、开发需求规格说明书、项目视图和范围文件。从统一的需求分析过程可以看出,其子过程涉及以下方面:
(1)需求调研、收集、整理、分析。通过程对需求进行划分,重点关注一致性、可行性和功能性要求。
(2)编写用户需求规格说明。根据软件开发的标准模板对开发组织和项目特点进行编写。
(3)需求评审。通过集中评审机制对用户需求规格说明书进行逐条确认,并出具评审结论。高的过程质量特性意味着高质量的需求过程。
提高软件开发前的需求质量,可以从以下方面进行:
①客户管理。通常由于客户不了解相关技术及其需求,从而影响需求的稳定性和一致性,这就需要需求分析人员充分掌握客户内部关系和组织特征以做出正确的需求决策;②目标过程。目标可以理解为客户和开发人员对软件产品的期望。需求目标的有效管理将有助于分析人员对需求进行平衡和取舍,避免需求冲突。③范围控制。软件的功能范围可以看作高级别的功能性需求,通常需要对软件进行结构分解,与客户就范围达成共识。④需求筛选。可以使用客户价值的方法对需求进行筛选,即通过分析和比较实现需求后客户的满意程度和不实现需求后客户的不满意程度,降低主观性对判断的影响。
3.2 软件设计过程质量管理
软件结构设计分为概要设计和详细设计,其任务是以需求分析为基础,使用结构化方法设计出软件的总体结构。软件设计过程在软件生命周期中处于重要位置,设计过程要体现软件需求规格说明的活动确定更低层次的质量目标指导软件设计。过程质量控制的目标分解。如表2所示。
表2 软件设计过程质量控制的目标分解
3.3 软件编码过程质量管理
软件编码是利用具体的编程语言,实现软件详细设计的过程,是软件产品形成的关键阶段,在整个软件生命周期中处于承前启后的重要环节。编码阶段的质量保证主要有开发人员实施,编码过程的质量控制方法有:编码规范、代码审查、单元测试等。源代码的排版属于编码规范的一部分。规范的代码有助于提高程序的可读性、可维护性和一致性等,也使得后期维护和成果共享更加容易;代码评审即以专家小组会议的形式对代码质量进行审查。极限编程中强调的结对编程可以看作是代码评审过程的极端化。代码评审可以较早发现代码中潜在的缺陷和错误,帮助开发人员学习经验、共享知识、有效沟通。
3.4 基于过程的软件测试
软件测试过程验证软件是否符合用户的需求,软件测试过程的科学管理是测试成功的重要保证。软件测试的目的是通过查找软件中的逻辑错误和功能错误提高软件的可靠性。基于过程的质量管理思想对软件测试进行了扩充,扩充后的软件测试贯穿了软件开发的全周期。
软件测试包含三个层次的测试:单元测试、集成测试和系统测试。单元测试以模块的详细设计为依据,对输入、输出和处理进行测试,发现各模块可能存在的各种错误;集成测试是以概要设计为依据,将模块组装后进行测试,用于发现系统功能性错误;系统测试是检查整个软件系统的性能、功能等是否与需求规格说明书一致。
在软件测试质量管理中,两个有效的方法是缺陷度量和采用效率矩阵。按照对软件系统造成的影响和与需求说明不符合的程度来划分缺陷等级,从而对高等级的缺陷进行优先修复或处理。测试效率指单位时间执行的测试用例数、缺陷数或代码量等,通过建立效率矩阵可以反映缺陷的严重程度。
3.5 软件维护过程质量管理
软件维护是在软件交付后为了改正错误或满足新的需求而修改软件的过程。软件的维护活动可以分为四类,分别是:改正性维护、适应性维护、完善性维护和预防性维护。软件维护是软件质量形成和改进的必要环节,是进一步满足客户需求的重要阶段。
软件维护性有三个特性组成:可测试性、可理解性、可修改性。对这三个特性分别进行控制,在软件测试阶段结束后对软件的可维护性进行最终确认,通过这样的过程管理,可以保证软件具有较高的可维护性。在软件维护活动过程中,将这一过程与其所涉及的软件可维护性的质量特性相对应,可以得到表3。
表3 软件维护过程所涉及的质量特性
序号过程涉及的软件可维护性的质量特性软件生命周期主要包括需求、设计、实现、测试、安装和验收、运行、维护等阶段,从全面的软件质量出发,深入分析与软件生产有关的组织、人员、活动、过程对质量的影响,以识别影响软件质量的各种因素。在此之上采用架构基于过程的软件质量体系结构,保证信息化过程中软件质量的控制和有效管理。
4 结束语
信息化是一个长期的过程,信息化与工业化的融合、互补式发展需要不断实践并在实践过程中不断积累经验。文章主要论述了当前信息化建设中软件质量管理存在的问题,并提出基于过程的软件质量管理思想。鉴于篇幅,在软件整个生命过程中,主要讨论了对包括需求定义、设计架构、软件编码、测试和维护过程质量管理的方法和途径,在后续研究中将继续探讨软件质量模型、质量度量以及质量改进等相关内容。