基于GJB 5000A的软件质量管理研究
2020-06-08匡婷
匡婷
摘要:软件已成为武器装备系统的核心,软件质量影响着武器装备系统的质量。软件过程活动则是决定软件质量的主要因素。GJB 5000A是一种基于过程持续改进的模型,在军用软件研制单位应用广泛。该文基于GJB 5000A通过分析软件工程活动、项目管理活动、质量控制活动对软件质量的影响,并结合软件质量保证的思想,提出一种软件工程、项目管理、质量控制和软件质量保证相结合的软件质量管理框架。为广大有志于制造高质量软件产品的从业者提供参考。
关键词:GJB 5000A;软件质量管理;软件工程;项目管理;质量控制;软件质量保证
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)10-0238-03
1背景
近年来,随着信息产业的发展,软件正成为武器装备系统的核心战斗力。但是,在软件使用规模越来越广泛的同时,软件质量却难以保证,质量问题会引起项目进度滞后、成本超预算、功能无法正常使用,严重的会导致整个项目以失败而告终。要解决软件的质量问题却不容易,软件产品和软件研制过程不可见,软件系统及其应用环境复杂多变,软件测试又不可能穷尽,无法消除所有潜在的缺陷。所以,单靠技术方法不能确保软件的质量,注重过程管理才是重点。
2软件质量管理概述
2.1软件质量管理的重要性
软件是由承载媒体表达的信息所构成的一种知识产物嘲,是一种知识产品,它的开发效率难以预测,开发进度难以估计,产品质量难以保证。软件在开发前期一旦存在较多的质量隐患,在测试阶段需投入更多工作量以消除缺陷和进行回归测试,会影响软件正常交付;即使软件如期交付,常常是以牺牲质量保工期为代价的,势必需要投人更多的工作量用于维护。因此,应借助软件质量管理控制软件生存周期每一阶段的质量,减少影响软件质量的不利因素,从而控制整个软件研制过程,提升软件产品质量。
2.2影响软件质量的因素
软件行业经过多年实践得到,软件质量受人员、过程和技术的影响,是以三者为变量的函数,即Q=f(M,P,T),其中Q表示软件质量;M表示人员;P表示软件生产过程;T表示技术。在文献[4,5]中通过分析得出软件过程才是影响软件开发质量的主要因素。质量专家戴明和朱兰指出一个系统的质量主要取决于用来开发和维护该系统的过程的质量,这一原理同样适用于软件。
3软件质量管理框架
GJB 5000A是一种基于过程持续改进的模型。它给出了软件研制过程中管理活动和工程活动实践的指导。在GJB 5000A过程活动实践指导的基础上,首先分析各过程活动对软件质量产生的影响。
3.1过程活动对软件质量的影响分析
在软件开发过程中,软件工程活动的质量直接决定着最终软件产品的质量;质量控制活动通过同行评审、软件测试等手段有效发现软件质量问题并及时纠正;项目管理活动通过策划、监控等管理手段保障项目顺利开展,减少影响软件质量的不利因素。
3.1.1软件工程活动
1)软件需求开发
需求是产生软件质量问题最重要的原因川。有统计数据表明,在发现的软件错误中,属于需求分析和软件设计的错误约占64%,属于编码的错误仅占36%;另据有关统计,软件产品存在不完整性、不正确性,其中80%以上是需求分析错误导致,而且由于需求分析错误或偏差造成的根本性功能问题尤为突出。满足顾客需求是软件质量达标最基本的要求,如果对顾客的需求理解不正确或有歧义,即使软件设计得再巧妙也不是顾客所需要的,从而会导致项目后期更改频繁,进度滞后,严重时可能导致项目失败,因此进行需求开发是软件工程的首要任务。需求开發从引导、开发顾客需求开始,将顾客需求转化成产品系统需求,再进一步分解成软件配置项需求,并利用仿真、演示、评审、模拟运行等技术手段对需求进行确认。
2)软件设计
软件设计在软件工程活动中处理核心地位,它是软件需求与代码实现之间的桥梁,可以说软件质量是在软件设计中建立的。软件设计本质上是根据需求对代码实现技术和方法进行定义。在进行软件设计时,除了实现功能需求、性能、接口需求外,还需要综合考虑安全性、保密性、可靠性、易用性、效率、可维护性、可移植性等方面的需求。如进行接口设计时,应明确定义接口所传输的数据内容,包括数据类型、数量、取值范围、精度、单位等,若定义不清晰或设计不合理,不但影响功能实现,还会影响软件的可靠性和安全性。软件设计上的缺陷若未及时纠正对软件开发后期的影响是很大的,不但影响代码实现的质量,还会增加测试的工作量,导致进度和成本问题,甚至还影响软件交付后的维护工作。
3)软件实现
软件代码是软件产品的实体,代码质量直接决定了软件质量。宏定义、变量、指针操作、数组下标、函数声明、函数复杂度、浮点数、类型转换、跳转语句等会影响软件的可靠性和安全性,代码注释、指针定义、函数参数、逻辑表达式、循环语句、分支语句等会影响软件的可测试性。软件工程师的编码习惯和组织的编码规范影响着软件代码的可读性、可靠性、安全性和可测试性,从而直接影响软件质量。软件编码一般应遵循符合设计、简洁、低冗余的要求。
软件工程活动还包括软件测试,但软件测试是一种重要的质量控制手段,将在下文中阐述。
3.1.2质量控制活动
同行评审、代码审查、软件测试等质量控制活动是提升软件质量有效的手段。
1)同行评审
同行评审是一种由软件开发同行对软件工作产品进行验证的方法,可发现软件功能、逻辑或实现上的错误,验证软件是否满足需求、设计等要求,是一种有效的发现软件缺陷的手段,已被软件行业誉为提高软件质量的最佳实践。软件开发过程中,上一阶段隐含的缺陷会传递到下一阶段,并扩散放大。因此及时有效开展同行评审,可及早发现并排除缺陷,避免缺陷传递,有效保证软件质量。
2)代码审查
代码审查是常用的验证手段,可高效率的发现代码缺陷。一般通过软件开发人员交叉走读代码或会议讨论的方式开展。通过代码审查,可及时发现软件源代码违背编码规范的问题;违背可靠性、安全性设计准则的问题;与设计文档不一致的问题。
3)软件测试
软件测试是当前业界公认的保证软件产品质量的有效手段。测试的目标是通过尽可能多的发现缺陷并及时纠正来保证质量。这个目标是通过开展一系列的测试活动达到的。单元测试是验证底层的软件单元是否完成了详细设计的要求。集成测试是验证部件是否满足概要设计的要求,软件单元集成后是否实现了功能、性能要求,接口是否一致。合格性测试是将产品置于预期的环境中,确认软件是否完成了预期的用途。
3.1.3项目管理活动
通过对软件开发过程中的各项活动进行管理,减少影响项目质量的不利因素,保证项目井然有序地开展。
1)项目策划
“凡事预则立,不预则废”,只有在开展软件项目前制定可执行的计划,项目方能有条不紊的实施。软件项目在开发过程中存在各种未知的变数,若不加以管理控制,可能造成进度延迟,成本增加,或是嚴重的质量问题。因此,还需要维护项目计划,在计划的各项数据超阈值时应与相关方协调及时调整计划,使项目整体可控。
2)项目监控
项目监控是按照项目计划跟踪项目进展情况、任务完成情况、风险状态、质量问题处理情况、利益相关方参与度等方面,当出现较大偏差时,可采取纠正措施或及时调整计划以确保问题解决,使项目能够顺利开展。
3)风险管理
软件开发过程中存在着某些不确定的因素,当这些不确定的因素发生时会造成损失,甚至是严重的后果。这些不确定因素即为风险。如需求不明确、需求变更频繁、需求内容不合理、设计风格不一致、软件安全性考虑不足、人员能力不足、测试任务无法按期完成等风险均会对软件质量产生负面影响。因此需要采取规范的风险管理手段来降低风险对质量的影响。
4)需求管理
满足需求是保证软件质量的宗旨。需求管理是通过对功能、性能、接口、可靠性、安全性、保密性等方面的需求进行双向追溯来实现的。正向追溯确保无遗漏,反向追溯确保无多余,从而确保工作产品和需求的一致性。当需求发生变更时,通过需求双向追溯矩阵,可清晰明确的处理与其相关的工作产品。需求管理可有效控制需求开发的成果,减少变更带来的不利影响。
5)供方管理
当项目存在供方时,供方提供的产品质量直接影响着整个软件的质量。若未对供方开展有效管理,可能导致最终获取的产品功能、性能等无法满足要求,或进度不满足计划。
6)配置管理
因为需求的不确定性或为修复缺陷,软件变更难以避免。变更本身并不可怕,可怕的是失控的变更。配置管理通过配置控制来管理软件变更,避免项目产生混乱,有助于在变更发生时仍能维护软件质量,保证配置对象的一致性。
3.2软件质量保证
经上文分析,软件工程活动、质量控制活动和项目管理活动均会影响软件质量。如何保证软件工程活动、质量控制活动和项目管理活动有效?
软件质量保证对所有软件过程活动和工作产品开展客观独立的评价,保证过程活动和工作产品符合标准、规范等要求。若存在不符合的情况,通过交流、跟踪等手段确保不符合得到妥善处理。另外,适时地向相关层反馈质量保证的结果,使相关方了解产品质量状况。因此,通过实施软件质量保证评价,可监督控制软件工程活动、项目管理活动和质量控制活动的有效性,从而保证软件质量。
3.3软件质量管理框架
综上所述,得到一种软件工程活动、项目管理活动、质量控制活动和软件质量保证评价四方面结合的软件质量管理框架见图1。
以瀑布模型为例,根据图1,从软件质量管理的角度,给出软件研制过程主要活动建议,见图2。
4结束语
软件研制过程中,人人都需对软件质量承担一份责任。软件开发人员负责制造高品质的软件产品,项目负责人通过组织同行评审控制软件开发过程中的质量,软件测试人员通过开展充分的测试对软件质量严格把关,领导层及项目负责人通过项目管理手段降低影响质量的不利因素,软件质量保证人员通过监控过程和工作产品保证软件质量。因此,高质量的软件产品是扎实的软件工程实践、良好的项目管理技术、全面的质量控制手段和强有力的质量保证措施共同作用的结果。