您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 软件验证与确认(Verification-and-Validation)简述
软件验证与确认(VerificationandValidation)简述张艾森1,2(上海工业自动化仪表研究院1,国家能源核电站仪表研发(实验)中心2,上海,200233)摘要:计算机设备和信息处理技术正迅速进入仪表和过程控制工程之中,由于其方便的操作和其他诸多优点,更多用户乐于去使用它们。在起初用于基本功能控制后,在更多的安全关键控制中,计算机设备和信息处理技术得到了更多的应用,此时,软件的质量被人们日益重视起来,其好坏如何评判,其质量如何保证是人们最关心的问题。软件的验证与确认技术正是达到质量保证的重要环节。关键词:软件验证与确认(V&V);独立性;管理;文档1111软件软件软件软件V&VV&VV&VV&V的准则的准则的准则的准则软件的验证与确认是数字化仪控系统的关键技术之一,其质量的评估难以量化的给出。从相关标准条款中,可以得到软件V&V的准则如下:⑴计划先于行动,没有计划和大纲无法开展工作。⑵对所有软件开发步骤的验证和确认方案,没有完全可信的东西,没有“免检产品”。⑶所有结果和过程都应详细的记录并保存,确保可追溯性。2222评估独立性的要求评估独立性的要求评估独立性的要求评估独立性的要求通常对于软件质量的评估其出发点来自于对软件开发过程的评估,辅以对软件成品的一系列测试。从验证和确认的角度来说,对过程的逐一评估是软件的验证阶段,而对软件成品的测试归结为软件的确认。在IEC60880中提及,额外的验证活动由第三方来进行。第三方的介入对软件质量而言是提升了信心。在IEEE1012中,V&V团队的独立形式和独立程度被分成了四个等级。IEC60880针对核电站A类软件,其独立性要求应参照IEEE1012中最高级别来制定。但有一点要指出,60880中对于独立评审的要求规定似乎没有IEEE1012中给的具体。在标准中没有给出经济独立性的要求,也没有明确给出第三方是指不同组织间的,还是同一公司的不同部门。在其中只是指出,V&V团队的独立程度应在国家相关规定条款中给出,而国内还没有哪一个具体标准给出了关于团队独立性的明确指导,多数还是遵循IEEE1012中的相关规定。3333软件评估的初始管理软件评估的初始管理软件评估的初始管理软件评估的初始管理从对IEC60880整篇标准的理解中不难看出,软件质量的获得最重要的并不是某几位专家的评估,而是整个开发过程的有序管理。有序管理的几个重要目标应该是:⑴足够的人员配置以及人员对应职责的明确无误。这点可以在第8章中看出,其明确要求了构成人员的能力以及其目标职责的明晰。⑵文档的正确管理。在IEC60880中,无论在软件开发的任何阶段,都会在某一结点明确的要求相应的输出文档。这些文档的存在最大程度的保证了整个过程的可追溯性。针对文档的管理及要求在第7.4条中给出。对于一个V&V团队来说,首先应该建立的是质量保证计划,该质量保证计划中明确给出的是:⑴人员配置结构及人员职责分配。⑵操作流程的规定包括方法的描述。工具的配置情况,采用标准的情况,管理。⑶文档管理计划,包括文档管理,文档统一格式。⑷通讯记录归档管理。⑸安全性管理,涉及保密性的管理条约。4444文档管理的要求文档管理的要求文档管理的要求文档管理的要求在整个软件评估过程中,对于文档的评估和审查占据了非常重要的角色。因此,建立完整的,可追溯的文档系统是非常必要的。文档建立的几个关键注意点在于:⑴要求的记录内容详尽(项目,目标,准则,使用设备,方法,流程,结果等);⑵为了方便查阅而做的标记;⑶完成时间和参与人员可查(人员包括完成人员和审核人员);⑷管理制度的建立。后续文档,例如软件验证计划,软件确认计划等,都需要遵照质量保证计划中的相关内容建立。5555软件设计验证软件设计验证软件设计验证软件设计验证软件的设计验证应在软件的初始设计介入。从设计概念上来说:保证软件安全的关键在于尽可能减少软件的功能,并且简化必要的功能。软件验证工作首先要解决的问题是依照从系统要求中得到的软件要求规范对照设计大纲。软件的正确与否在软件设计之初就已经决定了。其目标内容为:⑴概念设计大纲中是否将目标功能全部包含在内。⑵设计大纲中的功能设计要求是否相关要求。这些要求的内容应在是响应时间,动作时间等一系列系统要求中给出的参数。这些参数是否正确也应参照相关核电站安全设计要求。⑶详细设计大纲中提及的设计方法是否可行。最安全的软件应该是最简单的软件,最新的编成方法与技术应当在核电站软件设计结束中慎重使用。在完成对概念设计和详细设计两个部分的审核后,开发团队应提交相应的代码。对于V&V团队来说,代码的测试应该以功能块为基础进行。代码测试的主要方法是静态测试和动态测试。从IEC60880的角度来说,它推荐使用自动化测试工具(测试工具及平台的质量管理在后面给出)。静态测试的关注目标主要是测试覆盖率,其面向的是软件设计的规范化和一些可能出现的系统错误。好的自动化测试工具可以帮助测试人员更好的完成任务。动态测试的目标应当是检验软件模块是否正确执行了目标功能,并且没有执行非预期的功能。测试目标功能相对来说简单。由其规定输入得到期望输出进行比较即可。难点应该在于检验非预期功能。个人认为顺序执行功能是不太会带来问题的,因为软件不存在随机误差,所有的故障皆为系统误差。非预期功能的出现主要来自于非预期模块间的相互调用或者来自数据超出设计范围后的非预期影响。因此,在模块测试间进行排列组合进行测试是动态测试的一个重要部分。在验证阶段所找出的故障需要进行一项额外的分析。就是为什么该错误在软件早期设计没有被发现。如果分析结果显示该错误在早期可以被发现并改正,则这一错误所涉及的相关设计都需要被重新评估,避免整个软件系统出现致命的设计错误。验证测试主要方法在IEC60880中有明确的要求,其主要方法如下:⑴测试过程的监督管理。该方法的好处是不需要额外的准备工作,并且不需要具备详细的相关知识基础。缺点就是,无法得到详细的流程框图,无法对整个软件进行详细的评,只有比较粗矿的理论基础,不够深入。⑵根据需求进行静态分析。好处是可以给出可靠性框图或类似流程图之类的框图,而不必详细阅读代码。可以作为对其他程序分析的辅助方法。这类方法在对自动代码生成的软件时会显得有效,可以在早期发现设计上的缺陷。⑶根据正确性进行静态分析,好处和缺点同上。⑷编程检验。好处是可以得到软件正确性的详细评估报告。缺点是无法辨别软件中的循环的相关内容。⑸编程分析。主要可以分为人工的方法和自动化工具的方法。标准中强烈推荐自动化工具的方法,尽可能多的使用。⑹利用测试用例分析软件性能。⑺崩溃测试。⑻连接外部硬件进行的测试。⑼静态测试用例和动态路径来测试软件方法流程。⑽开关附加软件或外部设备后是否能获得正确的操作。⑾路径测试:每种状态至少运行一次。每种输出至少执行一次。每种循环在最高最低值时分别至少执行一次。每条路径至少执行一次。⑿数据移动测试。每种内存排列至少执行一次。每个内存地址标记至少执行一次。每个输入到输出的绘制至少执行一次。⒀时间测试。测试所有时间约束条件。所有可能的中断顺序组合测试。所有重要中断顺序的组合测试。⒁其他测试。例如:每一个模块接口测试至少一次。每个模块至少调用一次。高负荷情况下运行。数学运算的精度测试。输入数据边界值检查等。在软件验证测试中,IEC60880明确了需要进行基于统计方法的测试。对应不同的PFD要求明确了试验次数。应用统计测试的方法有如下几个特点需要注意:⑴试验是基于系统要求而独立设计的测试用例。⑵测试的顺序和数量不影响每一次单独运行的程序结果。⑶出现的每一个失效都要被检测到;⑷测试数量通常来说都会很庞大;⑸失效次数应该是很少的。在IEC60880中并没有对测试用例给出明确的要求。从事物的两面性来考虑的话,我觉得为了保证试验的有效性,统计测试是否应该也从两个方面来进行。在60880中明确指出,软件应准确完成预期的功能,同时,不应该完成非预期的功能。因此,应设计测试用例对于预期功能应进行规定次数的统计测试,同时,设计另一个测试用例对于非法和非预期的功能也进行相同次数的统计测试。6666软件修改要求软件修改要求软件修改要求软件修改要求软件的修改在设计过程中通常也是不可避免的,在IEC60880总对于修改有非常严格的规定,在流程需要遵循以下三个顺序:⑴生成修改请求;⑵分析和评估修改请求;⑶商议决定修改请求。以上所有内容都应以正式文档进行归档。7777工具工具工具工具从开发角度来说,IEC60880中明确给出了软件开发和验证中所使用的软件类型,其具体如下:⑴结构工具。用于支持完成软件规范,设计,开发执行等工作。⑵测试编辑工具。⑶图形界面工具。⑷自动代码生成工具。⑸语法分析工具。⑹语义分析工具。⑺形式化证明工具。⑻比较工具。工具的管理依照质量保证计划中的相关要求进行。对于在软件开发中所使用的所有工具都应有相应的质量评估。这些评估结果和建议应详细的记录和归档。对于这些工具的评估主要面向几个方面:⑴适应性的评估。目标工具本身是否适合进行类似的开发工作,包括其功能、精度等。⑵质量评估。质量的评估可以从两个方面着手进行。首先如果工具本身能提供权威第三方的认证信息及相关评估资料,则可以相信工具本身的质量有相应的保证。其次由V&V小组对工具进行必要的测试和评估。平贵的对象内容应包括:工具开发过程与环境。工具功能准确性的测试。使用经验的反馈和外界评价。如果目标工具无法提供完备的资料说明和可测试功能的相关说明的话,对于工具的使用就应有相应的限制措施。⑶工具本身也应有配置管理的相关要求。该配置管理的设立意在加强软件设计的可追溯性。其对应的关注点在于工具的名称,型号/版本,配置构成,错误记录,修改记录和评估报告等。8888软件相关资料评估软件相关资料评估软件相关资料评估软件相关资料评估对于提供资料的评估应遵循以下的几条内容:⑴数据资料的来源应尽可能来自用户和在役设备。(安装在不同设备上,运行一定的时间,无重大修改或重大错误记录)⑵数据资料是遵循良好管理流程得来的。⑶数据资料应提供证明,证明其可信度。⑷数据资料的来源要与预期使用的环境相似。⑸数据资料的来源版本应与目标相同。⑹不同的版本出现的问题也应分析评估。9999软件安全管理软件安全管理软件安全管理软件安全管理软件的安全性设计应从两个方面来考虑:⑴软件的授权使用,应保证授权人员可以顺利进入软件系统,非授权人员无法进入系统。授权人员进入系统的方法应考虑多样性。仅仅使用密码的方法是不够的,还应考虑类似通行证,指纹,身份卡等其他物理方法。非授权人员无法进入系统应考虑在多次无效输入后的系统保护模式以防止进一步的攻击。⑵授权进入系统之后的安全防护。在开发阶段应避免软件后门,隐藏功能的出现。设计完成后重要的系统参数不允许操作人员的修改后者需要修改时的严格程序控制。该程序从进入修改到修改完成后可追溯性都需要加以考虑。传输数据应是系统中安全系数较低的数据。在设计文档中明示重要的安全功能。验证和确认软件功能时,应专门有针对安全功能的相关测试:⑴限制可访问功能的能力。⑵系统参数进出监控的管理。⑶对于软件或相关侧书修改的追溯。⑷系统登入不能仅仅依赖密码保护,应有类似于质问,身份卡等其他方法的帮助。软件转移时,安装,备份时应有相应的手段或发方法以保证其准确性。可以从两个方面来考虑:⑴管理角度。工具的统一管理和质量保证。操作流程的规范和统一。⑵技术角度。比对校验软件设备的使用。软件安装后的功能确认计划。10101010各阶段形成应重点考察的对象各阶段形成应重点考察的对象各阶段形成应重点考察的对象各阶段形成应重点考察的对象对于整个软件生命周期来说,主要分为以下几个阶段:软件设计验证阶段,代码验证阶段,模块验证阶段,集成测试阶段,软件修改阶段,软件测试规范(其贯穿几个阶段,在此分列)。针对每个阶段,分列其考察重点如下:10.1软件设计验证:1不符合软件要求的部分。2不符合核电站设计标准的部分。3模块,数据,结构,运算方法等不适合的问题。(包括方法不适合,或者方法过于先进而没有获得足够使用经验的情况)4设计功能不合理的
本文标题:软件验证与确认(Verification-and-Validation)简述
链接地址:https://www.777doc.com/doc-3627660 .html