基于GJB 5000A的软件质量保证
作为现代经济和社会基础之一,软件已毋庸置疑地成为重点发展方向。在对产品实现或服务提供的特性进行决策时,软件是能够提高产品竞争力的重要因素。GJB 5000A-2008提供了优秀的军用软件过程框架及方法,其目的是评价一个软件过程得到明确的定义、管理、测量、控制的有效程度,同时适用于组织的过程改进,目前为军工企业普遍采用。它不仅是承担军用软件研制任务的“敲门砖”,也提供了受到业内认可的最佳实践。通过裁减得到适用于企业的模型,使企业能够持续稳定地提供优质的软件产品。
质量保证的客观性是项目成功的关键,客观性通常通过独立性和准则两方面来达到。通常,独立于项目的质量保证组提供这种客观性。即质量保证人员不能与项目经理存在上下级关系,并具备独立的渠道向最高管理层汇报。同时还要具备组织级质量保证人员,确保公司非项目组的工作规范执行(一些小型组织也可以采用一些组合或更为适用的方法,比如由不同项目组互检等)。
1、 质量保证的职责
质量保证人员的职责是监控项目组成员是否按照定义的标准规范和准则实施相应的工作并履行其职责,同时要在发生偏离时提醒管理者。质量保证的存在并不代表着避免了质量问题的发生,按照标准规范执行可以减少问题的发生,质量保证人员承担监督的职责并提醒管理者注意到偏差并及时解决。
2、质量保证的直接作用
项目实施质量保证的直接作用是为项目组提供帮助。如帮助项目组选择合适的过程描述、标准,遵循体系文件、裁剪指南来定义项目过程;客观评价项目组实际执行的工作过程及工作产品相对于体系文件、过程定义、标准的符合性和不符合性;分析不符合项及质量趋势,向项目组及高层管理者报告不符合项,跟踪问题闭环情况等。
质量保证工作一定是定义的、系统的、规范的、可操作的,并时刻遵循以下原则。
1) “已定义”原则
开展质量保证工作的准则一定要经过组织的定义,比如检查内容、检查频次、检查工具、是否抽检、抽检时机、抽检原则及抽检覆盖率等。
2) “必检(抽检)”原则
所有交付的工作产品及过程活动都要经过质量保证人员的检查,但组织可以对部分频次较高的活动采取抽检,但必须符合“已定义”原则。
3) “留记录”原则
根据组织定义的准则及工具(检查单、工作环境) 开展质量保证活动,记录检查结果。
4) “闭环”原则
对于发现的不符合项开展跟踪,确保闭环。5) “持续改进”原则对问题趋势、质量形势开展统计分析,应用统计学方法,发现薄弱环节,持续改进。
软件质量保证人员依据软件质量保证过程,对软件研制过程中的各个阶段进行过程和产品检查、评审等活动,以验证其是否符合使用的标准和规程,并向项目相关人员报告结果,跟踪发现的不符合项直至问题关闭。典型的软件质量保证活动的流程如图1所示。
按照“已定义”、“必检(抽检)”、“留记录”、“闭环”、“持续改进”5项原则,在组织级对质量保证活动进行定义(包括制定质量保证过程文件、模板文件、检查单等) 的前提下,开展质量保证活动,质量保证的具体内容如下:
1、制定质量保证计划
软件质量保证计划是整个生命周期内过程和产品质量保证活动的依据。项目质量保证人员在项目初期,依据软件任务书、进度安排等,以尚未评审的开发计划为基础,编制质量保证计划,确定应使用的标准规范,定义检查对象、工作量、检查时机、参照标准、检查方法、抽样原则、具体日程安排、输出的工作产品、质量保证报告的形式等。质量保证计划应尽可能的详细,能够指导质量保证人员开展相关工作,同时也便于项目经理对质量保证工作的监督。质量保证计划要通过评审,确保项目经理、项目组成员、项目相关人员具备获得途径。
项目开发计划、质量保证计划、配置管理计划等通常一同提交评审,评审通过后纳入配置管理,必要时可对质量保证计划进行修订。
2、实施质量保证活动
质量保证人员按照质量保证计划,开展“日常检查、阶段检查、参与评审、分析趋势”等质量保证活动。
1)日常检查
质量保证人员根据质量保证计划中规定的对工作过程及工作产品的检查时机,完成规定的检查项目,在发生不符合项时填写不符合项报告并上报各级人员知悉。质量保证人员在完成各项质量保证活动的同时要填写工作日记,记录各项工作时间,作为测量数据保存。质量保证人员要根据项目具体情况对所使用的检查单进行合理剪裁,确保检查单的可操作性,记录问题、追踪问题、闭环问题。
日常检查工作的重点及难点在于质量保证人员应清楚明白不同阶段进行检查的内容,比如应该检查哪些过程,为什么检查这些过程,在检查这些过程时应该检查哪些内容;检查哪些产品,在检查产品时应该检查哪些内容等。
2)阶段检查
质量保证人员在阶段结束后要实施阶段检查,但不是所有阶段都要开展阶段检查,在编制质量保证计划时就应明确阶段检查的时间点。开展阶段检查时要统计按计划应执行却未执行的检查及具体原因,阶段中检查的不符合项有哪些,分配在哪个过程域,统计按时间应该解决却尚未解决的问题及具体原因,后续待解决的问题及重点薄弱环节。
在完成阶段检查后要编制质量保证报告并上报项目组。
3)参与评审
质量保证人员要按照单位职责的分工组织或参与项目评审工作(组织评审可以由单独的组织级质量保证人员完成,取决于软件组织机构的模式)。其基础的职责是要对评审过程的规范性进行检查,验证评审会议是否按照组织制定的规程、标准进行,具体实施时要在评审会议前,进行资料的预审,检查被评的工作产品是否符合规程、标准或文档模板的要求。质量保证人员在评审会议中对评审内容的正确性不负有责任,该责任由评审组负责。
4)分析趋势
质量保证人员的主要职责之一就是分析项目的质量形势,能够在质量形势异常时及时提醒项目经理作出相应的调整与改进,避免项目出现不可挽回的重大失误与偏差。所以质量保证人员对日常检查、阶段检查、参与评审等质量保证活动和活动的结果都要开展质量趋势分析,对问题的分布、数量、原因、类别等进行记录并运用统计学方法进行分析,在质量保证报告中予以阐述并上报项目组,同时也要及时优化组织级质量保证过程及模板,反馈优化意见。
3、不符合项处理
质量保证人员在实施日常检查、阶段检查、评审的过程中,如果发现不符合项,需要对不符合项进行记录,按照质量记录的管理方式进行管理,比如要进行编号、识别严重程度、分类、处理意见等。质量保证人员记录的不符合项记录要提交项目组,项目经理分配人员对不符合项进行处理或拒绝该不符合项并说明原因。
组织级质量保证人员是确保公司非项目组的工作也能按照相应的流程规范执行,如组织级的培训、过程改进等。组织级质量保证工作流程基本和项目级质量保证相同,只在检查对象、范围、频率上有所区别。组织的企业文化通过定义的体系文件、公司员工意识传播、质量保证人员的指导和检查得到传承。
质量保证作为一个过程,也存在着过程是否符合相关标准与定义的问题,即需要有人来检查质量保证过程,组织需要定义该项活动。通常该检查由组织级质量保证人员或项目经理来完成。其检查内容主要包括项目质量保证人员是否按要求完成质量保证活动,是否追踪了不符合项的闭环情况,是否对不符合项进行了分析,对发现的不符合项整改建议是否合理,与项目组、高层管理者之间的沟通渠道是否顺畅等。
在目前实施GJB 5000A-2008 的组织中,软件质量保证已经成为了必不可少的一部分,但往往在组织中实施软件质量保证却是因为评价要求,所以质量保证人员往往由测试人员、不同项目组人员兼职,而实际的软件质量保证是能够提供更高的价值的。兼职直接导致其没有权利叫停有问题的项目,彼此项目的交叉又导致了“双方利好”的局面,也使其没有足够的时间深入挖掘质量保证的广度与深度。所以在组织结构中,独立的、具备叫停权利(或绩效考核权利) 的质量保证机构,成就了独立而活跃的质量保证人员,使质量保证人员可以起到预期达到的作用。