药群论坛
标题: 【计算机验证专题十一】真正的计算机系统(软件)验证与确认 [打印本页]
作者: 北京-丹丹 时间: 2014-7-4 06:56 AM
标题: 【计算机验证专题十一】真正的计算机系统(软件)验证与确认
申明:% t6 F# ?9 K6 m/ g4 P- S
本人虽然学的是电气自动化专业,而且做过计算机控制系统的设计(单片机智能电度表、微机控制工业陶瓷窑路、计算机控制煤矸石电厂……),也在专业的自控公司混过,做过计算机控制系统的确认和验证,但是由于多年未曾接触专业,现在已经完全变成了“计算机白痴”,所以,关于纯粹的、真正的计算机专业上的计算机系统验证与确认,我还是不敢胡言乱语,本文只是给出一些地址、文章,供大家自学!
0 A$ P, k; l6 z: F; l
摘录:
目的:
* 验证的目的是证实设计阶段输出是否确保设计阶段输入要求。
* 确认的目的是通过产品确认设计是否满足使用要求。
对象:
* 验证的对象是设计输出文件,计算书或样品等;
* 确认的对象是最终产品(样品)。
参与人员:
* 验证的参与人员通常是设计部门;
* 确认的参与人员必须包括使用者或能代表使用要求的人员。
时机:
* 验证的时机是设计适当阶段,一般是设计阶段输出形成结果时;
* 确认的时机是成功的设计验证后,一般针对最终产品,也可分阶段确认。
% ~/ a2 x, g* F! H3 i9 p i
摘录:
5软件设计验证
软件的设计验证应在软件的初始设计介入。
从设计概念上来说:保证软件安全的关键在于尽可能减少软件的功能,并且简化必要的功能。
软件验证工作首先要解决的问题是依照从系统要求中得到的软件要求规范对照设计大纲。软件的正确与否在软件设计之初就已经决定了。
其目标内容为:
⑴概念设计大纲中是否将目标功能全部包含在内。
⑵设计大纲中的功能设计要求是否相关要求。这些要求的内容应在是响应时间,动作时间 等一系列系统要求中给出的参数。这些参数是否正确也应参照相关核电站安全设计要求。
⑶详细设计大纲中提及的设计方法是否可行。
最安全的软件应该是最简单的软件,最新的编程方法与技术应当在核电站软件设计结束中慎重使用。
在完成对概念设计和详细设计两个部分的审核后,开发团队应提交相应的代码。对于V&V团队来说,代码的测试应该以功能块为基础进行。
代码测试的主要方法是静态测试和动态测试。从IEC60880的角度来说,它推荐使用自动化测试工具(测试工具及平台的质量管理在后面给出)。静态测试的关注目标主要是测试覆盖率,其面向的是软件设计的规范化和一些可能出现的系统错误。
好的自动化测试工具可以帮助测试人员更好的完成任务。动态测试的目标应当是检验软件模块是否正确执行了目标功能,并且没有执行非预期的功能。测试目标功能相对来说简单。由其规定输入得到期望输出进行比较即可。难点应该在于检验非预期功能。个人认为顺序执行功能是不太会带来问题的,因为软件不存在随机误差,所有的故障皆为系统误差。非预期功能的出现主要来自于非预期模块间的相互调用或者来自数据超出设计范围后的非预期影响。因此,在模块测试间进行排列组合进行测试是动态测试的一个重要部分。 在验证阶段所找出的故障需要进行一项额外的分析。就是为什么该错误在软件早期设计没有被发现。如果分析结果显示该错误在早期可以被发现并改正,则这一错误所涉及的相关设计都需要被重新评估,避免整个软件系统出现致命的设计错误。
验证测试主要方法在IEC60880中有明确的要求,其主要方法如下:
⑴测试过程的监督管理。该方法的好处是不需要额外的准备工作,并且不需要具备详细的 相关知识基础。缺点就是,无法得到详细的流程框图,无法对整个软件进行详细的评,只有比较粗矿的理论基础,不够深入。
⑵根据需求进行静态分析。好处是可以给出可靠性框图或类似流程图之类的框图,而不必 详细阅读代码。可以作为对其他程序分析的辅助方法。这类方法在对自动代码生成的软件时会显得有效,可以在早期发现设计上的缺陷。
⑶根据正确性进行静态分析,好处和缺点同上。
⑷编程检验。好处是可以得到软件正确性的详细评估报告。缺点是无法辨别软件中的循环 的相关内容。
⑸编程分析。主要可以分为人工的方法和自动化工具的方法。标准中强烈推荐自动化工具 的方法,尽可能多的使用。
⑹利用测试用例分析软件性能。
⑺崩溃测试。
⑻连接外部硬件进行的测试。
⑼静态测试用例和动态路径来测试软件方法流程。
⑽开关附加软件或外部设备后是否能获得正确的操作。
⑾路径测试:每种状态至少运行一次。每种输出至少执行一次。每种循环在最高最低值时 分别至少执行一次。每条路径至少执行一次。
⑿数据移动测试。每种内存排列至少执行一次。每个内存地址标记至少执行一次。每个输 入到输出的绘制至少执行一次。
⒀时间测试。测试所有时间约束条件。所有可能的中断顺序组合测试。所有重要中断顺序 的组合测试。
⒁其他测试。例如:每一个模块接口测试至少一次。每个模块至少调用一次。高负荷情况 下运行。数学运算的精度测试。输入数据边界值检查等。
在软件验证测试中,IEC60880明确了需要进行基于统计方法的测试。对应不同的PFD要求明确了试验次数。
应用统计测试的方法有如下几个特点需要注意:
⑴试验是基于系统要求而独立设计的测试用例。
⑵测试的顺序和数量不影响每一次单独运行的程序结果。
⑶出现的每一个失效都要被检测到;
⑷测试数量通常来说都会很庞大;
⑸失效次数应该是很少的。
在IEC60880中并没有对测试用例给出明确的要求。从事物的两面性来考虑的话,我觉得为了保证试验的有效性,统计测试是否应该也从两个方面来进行。
在60880中明确指出,软件应准确完成预期的功能,同时,不应该完成非预期的功能。因此,应设计测试用例对于预期功能应进行规定次数的统计测试,同时,设计另一个测试用例对于非法和非预期的功能也进行相同次数的统计测试。
+ X) j. W8 ] w# ~& K* t
三、请下载1楼内容:《CMMI实践解析-软件验证和确认》
$ r! b O5 p" G' T四、请下载2楼内容:《软件验证和确认》
3 Y9 T0 s! x1 B3 P7 l, v五、有条件的,请找到《GJB5234-2004 军用软件验证和确认》标准
. g8 a( M* f6 S7 K4 G/ i) f3 ^* W回到GAMP5中的产品分类:
无论是“基础软件”、“不可配置软件”、“可配置软件”、“定制应用软件”,在开发阶段,开发商肯定也是需要经过以上的计算机系统(软件)验证和确认的,这是跑不掉的。
关键是,作为终端用户,我们需要确认什么?验证什么?
- E3 W- _9 Z5 |5 Q
作者: 王文华 时间: 2014-10-20 02:38 PM
不错。谢谢7 h: I* I% }. W- I: f5 X
欢迎光临 药群论坛 (http://yaoqun.net/) |
Powered by Discuz! X3.2 |