4.4 软件质量保证
软件质量保证(SQA)就是对于软件开发项目每一个过程的相关的项目构成和产品的可视性,以保证每一个过程的产品质量,这点对化工行业的软件项目尤为重要。软件质量保证通过 QA 组实施,主要工作包括:
(1) 以适用的过程说明、标准和程序为依据,对执行的过程、工作产品及服务进行客观的评估;
(2) 对不符合的议题进行界定和记录;
(3) 将质量保证活动结果反馈给成员和管理人员;
(4) 确保不符合的议题都得到有效的处理;
4.4.1 项目需求阶段的软件质量保证
QA 人员根据需求阶段检查表(如表 4-6 所示)的检查项对已经编写的需求规格说明书进行检查。把检查过程中发现的问题记录到需求规格说明书评审报告中,交给项目经理,并跟踪问题的状态,直到问题最终解决为止。
执行质量保证的人员参与到项目计划、过程以及标准和程序中,能够确保符合的需求,也能够为执行质量保证评估奠定有效的基础。另外,必须对进行评估的特定过程和相关工作产品进行指定。在这里指定应该以抽样或者客观准则为基础,并且符合组织政策及需求。
如上表中,对于完整性监察 2 中对所有输入数据是否定义完善,是否有合法和非法输入规定,如果其界定不符合议题,则必须在项目内处理和解决,然后再进行下一个议题。如果在项目内无法解决不符合议题,则必须将其上报到适当的管理阶层进行解决。
4.4.2 项目规划阶段的过程和产品质量保证
QA 部门的主要职责是计划和实施项目的质量保证活动,其工作的目的是保证软件过程和产品的开发步骤及标准得到遵守。
QA 人员在项目计划做的工作内容如下所示:
(1) 制定质量保证计划
QA 人员根据项目计划制定质量保证计划,并在项目计划更改时更新质量保证计划。
(2) 监督计划是否按规程执行
QA 人员对项目已定义过程进行检查,如果发现不符合,则与项目经理等有关人员讨论发现的问题并就如何解决问题达成一致。
(3) 项目计划问题跟踪
QA 人员对所有问题进行统计和分析,并提出改进意见和建议,形成报告上报给高层领导。跟踪项目计划的修正直到问题全部关闭。
对于计划阶段,QA 人员需要依照如表 4-7 中的要求表逐项进行检查,不能有遗漏,最后由 QA 人员根据检查情况给出报告;如果有遗漏,则相关负责人必须补齐;如果发现问题,则形成问题跟踪表,由 QA 人员跟踪问题,直到问题全部解决为止。
过程域产品质量保证的过程域的客观性评估是基于 CMM 的软件开发项目成功的关键所在。而客观性则必须通过独立与使用准则来实现。对于项目阶段详细计划的时间、人员安排是否与里程碑计划的要求相符的问题,必须以 PROJECT 进度为衡量标准,而评审人则必须是不参与项目进度计划制定的独立第三方。由没有参加生产工作产品的人员依据一定的准则和进度计划进行评估。如果评审出现问题,必须立刻反馈,予以解决了才能进入下一个工作。
产品质量保证工作从立项开始,建立计划、过程、标准和程序,到项目的结束全过程。
如果质量保证成功的只有过程中,能够大大的提升产品质量管理水平。
4.5 软件配置管理
软件配置管理是对软件的组成部分进行界定并且对每部分的变更进行版本控制,维持各部分之间的版本关联,以保证在软件项目开发工程中的每一个过程、每一个环节和每一个时间的内容都能够被追溯。这一功能一般建立和维护软件基线库来实现,该过程域的活动中有明确定义。
4.5.1 配置管理工具和配置库
(1) 配置管理工具
SVN(Subversion)是近年来崛起的版本管理工具,是一种开源的版本控制系统。版本控制是工作组软件开发中的重要方面,它能防止意外的文件丢失,允许反追踪到早期版本,并能对版本进行分支、合并和管理。SVN 具有如下优点:
第一,支持重命名。在开发初期由于需求变更经常进行数据库部分重建,重建就经常涉及到文件的重命名。
第二,支持离线开发,甚至可以带回家开发,回到公司后,提交到服务器即可。
第三,支持多操作平台。
第四,良好的客户端程序。
(2) 建立配置库
根据已定义的过程分别建立各基线库,它们分别为计划基线、需求基线、设计基线、代码基线、测试基线和维护基线库。
在这里只是建立项目级的配置管理,主要负责策划、协调和实施项目的配置管理。配置库信息如图 4-4 所示(限于篇幅,只对列表作了截图):
4.5.2 配置管理
在项目各个阶段,配置管理员需要对该阶段中产生的相关文档项目问题跟踪表等文档进行配置审计,要求逐一检查文档是否存在,命名规则是否符合规范要求,审计通过后提交到配置库中,同时提交配置状态报告给项目组和 QA 组。
各阶段需要审计的文档如下表 4-8 所示:
4.6 软件项目风险管理
风险管理的目的就在于识别并防范潜在风险问题,并在软件产品或者软件开发项目过程中尽快的处理突发的风险。在软件项目开发过程中的风险管理,有助于将不利于任务完成的目标影响降到最低。
风险管理作为一个持续的、超前预测性的过程域,是软件项目质量管理的重要组成部分,方法的科学性决定了风险预测的有效性和降低风险影响的可能性。当然,风险管理必须充分考虑到项目成本、进度和绩效等其他内部和外部的风险来源问题。风险管理的内容可以划分为三个部分,一是定义风险管理策略、二是识别和分析风险、第三则是处理已识别的风险。在软件开发管理的不同阶段,风险管理的定义和内容也不同。具体如下表 4-9 所示:
从上表可以得出 A 软件项目开发风险管理的流程如下图 4-5 所示: