您当前的位置:检测资讯 > 法规标准
嘉峪检测网 2022-08-14 21:59
GB/T 19001-2016标准8.5.1条款是关于“生产和服务提供的控制”。该条款对于以硬件产品为主要输出的组织要求比较明确,审核要点也比较清楚,但对于以软件产品为主要输出的组织来说,如何实施该条款要求,不同的组织经常会有不同的理解,不同的审核员对该条款的审核也有不同的要求和审核要点。尤其是对于软件生产的理解,什么是软件的生产,软件的生产包括哪些主要过程,软件生产有特殊过程吗,软件生产的作业指导书怎么编写,如何审核软件生产的环节等,是软件组织贯彻标准中经常会遇到的问题,也是审核员经常面对的问题,本文针对8.5.1条款,重点围绕软件组织如何实施该条款要求以及审核员如何审核该条款内容进行探讨。
条款要求和理解
1.条款要求
8.5.1条款是生产和服务提供的控制,该条款全部要求如下:组织应在受控条件下进行生产和服务提供。
适用时,受控条件应包括:
a)可获得成文信息,以规定以下内容:
拟生产的产品、提供的服务或进行的活动的特性;
拟获得的结果。
b)可获得和使用适宜的监视和测量资源;
c)在适当阶段实施监视和测量活动,以验证是否符合过程或输出的控制准则以及产品和服务的接收准则;
d)为过程的运行使用适宜的基础设施,并保持适宜的环境;
e)配备胜任的人员,包括所要求的资格;
f)若输出结果不能由后续的监视或测量加以验证,应对生产和服务提供过程实现策划结果的能力进行确认,并定期再确认;
g)采取措施防止人为错误;
h)实施放行、交付和交付后的活动。
2.条款的理解
与2008版标准相比,2016版标准8.5.1条款合并了原标准7.5.1和7.5.2条款的内容,同时还进行了适当扩展。关于此条款,对以下几点内容进行详细分析:
a)关于受控条件
所谓受控条件,一般是一组在组织控制下的环境、人员、资源、设施等,通常包括“人、机、料、法、环、测”几个部分;除此之外,标准还强调了对过程确认的要求(f)以及对放行的要求(h)。
b)关于“适用时”
标准的所谓适用,不是自己认为可做可不做,而是产品生产过程客观是否存在标准规定的这样的要求。如果存在,必须满足标准要求;如果不存在,无法提供证据满足标准这个要求,于是标准这条要求就不适用。比如,某一生产过程全部采用机器自动化完成,不可能产生人为错误,那么标准条款中关于“采取措施防止人为错误”就不适用于这一生产过程。同样关于f)条,过程确认,如果生产过程没有需要确认的过程,那么f)条款就不适用。
c)关于a)条“成文信息”
成文信息一般有两类:文件和记录。8.5.1条款规定的成文信息主要是指文件,包括两类文件:其一,“拟生产的产品、提供的服务或进行的活动的特性”,主要是指产品特性指标、技术要求等,包括设计输出的图纸、设计文件、接口文件等,都属于此类成文信息;其二,“拟获得的结果”,主要是指产品的接受准则和过程的控制准则,实际上是生产产品的验收依据和审查过程的控制要求,比如过程的CPI指标,这些属于过程控制要求。适用时,也要形成成文信息,明确下来。
d)关于c)条
c)条,“在适当阶段实施监视和测量活动,以验证是否符合过程或输出的控制准则以及产品和服务的接收准则”,这实际上说了两件事:首先是对过程进行监视和测量,确保过程或输出符合控制准则;其次是对产品进行监视和测量,符合产品的接收准则。其中控制要求和产品接收准则在a)条以成文信息的形式明确,而本条则是要求实施适当的监视和测量活动满足a)条要求。
e)关于f)条过程的确认
这是新版8.5.1的新增条款,合并了2008版中7.5.2条款的要求。按照GJB1405定义,对形成的产品是否合格不易或不能经济地进行验证的过程,通常称之为特殊过程。实际上需要确认的过程不完全是特殊过程。比如汽车行业,按照ISO/TS 16949标准,为了增加安全性、可靠性,对于一些后续可以验证的过程也要求做过程确认,但这显然超出了GB19001要求。对比以上三种情况,可以很明显看出,GB 19001规定的需要确认的过程外延最小,其次是GJB 1405定义的特殊过程,外延最大的是ISO/TS 16949。组织可以根据需要选择即使后续能验证的过程进行确认,但这属于加严要求,标准并不要求一点。
f)关于h)条
注意该条款与8.5.5条“交付后的活动”以及8.6条“产品和服务的放行”的区别。8.5.1强调的是受控条件,意思是关于“实施放行、交付和交付后的活动”必须在受控条件下实施,这种受控条件包括但不限于“放行、交付测试、环境要求、人员要求、成文信息要求等”,而8.5.5说的是在8.5.1的受控条件下实施“交付后的活动”,8.6说的是在8.5.1的受控条件下实施“放行的活动”。8.5.1是给他们策划条件,8.5.5和8.6分别说的是实施这些活动。
条款在软件组织中的实施
1.软件组织关于8.5.1条款的几个相关概念
a)关于软件生产过程
什么是软件的生产过程?软件编码是否属于软件的生产过程?软件生产阶段始于哪一个环节?为了弄清这个问题,我们需要看看软件的生存周期模型。
一般认为,瀑布模型是最基本也是最常用的软件生存周期模型,其他大部分模型可以认为是瀑布模型的延伸和变形。瀑布模型定义的软件生存周期如下图所示:
按照瀑布模型,与硬件生产过程进行对比,会发现软件的生产阶段始于编码有一定道理,因为编码阶段就是在产生实际的软件产品,编码完成后实际上就形成了交付给用户的产品,后面就是对该产品的检验测试阶段。
但是,如果按照生产的定义和要求,软件的编码阶段纳入生产环节是有待商榷的。生产强调的是可重复、一致性。将一份设计文件交给程序员去编码,不同的程序员编出来的代码会有很大区别,但都符合设计要求。那么将软件的复制环节开始作为软件的生产阶段是否合适呢?显然也不合适。因为在复制前,实际上软件必然经过各类测试,而软件的测试是属于典型的生产过程中的检验环节。
实际上,问题出在瀑布模型,上述瀑布模型并没有完整地将软件研制流程展现出来,实际的软件在编码完成后,还有编译、链接、发布、安装等过程,我们将瀑布模型的编码与测试阶段进一步细分,如下图所示。
由上图可以看出,在瀑布模型的编码和测试之间至少还应该有编译、链接及发布等环节。通过这些环节将源代码生产成目标代码,而这些环节是可重复进行的,基于一定的规则,不同的人,对同一段代码编译连接出来的结果也应该是一致的,这个过程其实就是一个软件生产过程。这样看来,软件的生产过程实际上是将源代码经过编译链接发布等环节生产目标代码的过程。将软件的生产阶段定义为从编译环节开始,包括编译、链接、发布、以及后续的安装、复制等环节,其中复制环节属于批量生产。
b)关于f)条软件生产过程的确认
明确了软件生产过程,我们再来对照f)条要求审查软件生产过程是否有需要确认的过程,即是否有特殊过程。
一般情况下,软件的编译、链接以及发布均是工具软件自动完成,基于一定的编译链接规则,对源代码进行编译链接形成目标码,在此过程中,一般不需要人为干预。那么编译后的软件是否可以测试验证呢?显然是可以的。在瀑布模型中,后续的单元测试、集成测试以及配置项测试都是基于目标代码进行测试,因此此过程的输出结果是可以由后续的监视或测量加以验证,显然不属于特殊过程,不需要确认。
同样,关于软件的复制过程,更是有多种手段进行验证复制的准确性,也是可以验证的,因此软件的复制过程也无需确认。
综上,对于软件的生产过程,过程的确认条款f)一般是不适用的。
c)关于g)条款,防止人为错误
如前所述,对于编译链接发布等环节一般自动完成,很少人工干预,这些环节此条基本不适用,但对于软件的复制过程,很容易发生人为错误,例如版本错误、复制不完整等,对于该环节应该制定并采取措施防止人为错误。
d)关于8.5.1其他条款
8.5.1其余条款,包括a)、b)、c)、d)、e)、h)条,对于软件组织都是适用的。
2.软件组织实施8.5.1条款建议
综上分析,对于8.5.1,软件组织适用的条款,包括8.5.1中的a)、b)、c)、d)、e)、g)、h)条。
a)软件的生产环节控制
过程控制活动,例如程序的编译(含链接)准则、编译(含链接)环境、编译(含链接)约束、编译(含链接)工具等;
发布活动,例如生成、发布准则、发布环境控制、发布约束等;
交付后活动,例如操作、维护和客户支持、技术升级等。
b)生成和发布
建立软件的生成、发布、修改和复制流程,以及生成和发布活动的配置管理:
标识构成每个版本的软件项,包括相关的说明;
根据用户使用的频率和(或)影响,识别发布的类型(或类);
制定决策标准,以确定在哪里可以合并本地化的 “补丁”,或在哪里发布完整更新的软件产品副本的。
c)复制
识别主副本,包括格式和版本;
每个软件项目和相关标签的媒介类型;
规定所需的文件,如手册、用户指南、许可证和发布说明,包括标识和包装;
控制复制的可重复性环境;
确保产品副本的正确性和完整性的规定,防止人为错误。
d)交付
交付的形式,例如是通过媒介的物理转移还是通过电子传输来实现。
交付活动,例如交付和安装规则、安装指南等 ;
交付期间软件的保存要求见8.5.4。
e)安装
如果是客户或第三方进行安装,组织应给出客户执行安装所需采取的步骤。如果安装是由组织进行的,可适用以下规定:
组织和用户应明确各自的角色、责任;
应明确每个安装中版本中验证的需求和范围;
应确定具体安装所需的软件和硬件配置;
应明确执行备份和恢复的要求。
软件组织中的审核要点
综上分析,对于软件组织,在8.5.1条款审核时应重点关注以下要点:
a)是否形成了有关成文信息,包括但不限于:
软件的编译链接发布规程;
制定了软件的复制流程;
软件的安装规程;
软件的交付规程;
软件运行维护规程。
b)软件测试条件是否受控,审核要点包括:
软件的各级测试测试说明(单元/集成/配置项/系统测试等);
实施测试的测试环境是否受控;
测试数据是否有效受控;
测试工具是否有效。
c)是否实施了测试,审核要点包括:
是否实施了软件各级测试测试(单元/集成/配置项/系统测试等);
测试记录保留;
测试结论是否符合要求;
测试bug是否回归。
d)关于软件生产过程的基础设施,审核要点包括:
是否识别了软件编译链接发布以及复制测试等过程的基础设施,包括工具、平台、环境要求等;
基础设施的维护是否合理(可结合7.1.3进行审核)。
e)配备胜任的人员,是否包括所要求的资格,包括:
是否识别了软件生产过程(含测试过程)的人员资格要求(可结合7.2进行审核);
软件生产过程的人员是否符合以上要求。
f)采取措施防止人为错误,包括:
对于容易发生人为错误的软件生产环节是否进行了识别;
对于识别处内的会出现人为错误的软件生产环节是否制定并采取了措施。
g)实施放行、交付和交付后的活动,包括:
是否策划了放行、交付和交付后的活动的受控条件,包括人员、资源等;
放行、交付和交付后的活动是否在受控条件下执行(结合8.5.5,8.6条款审核)。
结论
GB/T 19001-2016标准8.5.1条款在软件研制过程中的实施和审核具有一定的难点,如何合理界定软件的生产过程是重点。本文基于8.5.1条款要求,结合软件研制过程的瀑布模型,剖析了软件生产过程的主要环节,在此基础上,给出了软件组织在8.5.1条款的实施建议并给出了审核要点,对于软件组织有效实施该条款要求具有一定的指导作用。
来源:中国认证认可