装备软件质量监督及检验验收研究
2012-10-29李硕胡山林孙文侠胡文丽
李硕 胡山林 孙文侠 胡文丽
序言
装备软件既可以实现装备的战技术性能,又可以提高装备的综合作战能力,是我军由机械化向信息化转变过程中必须加以重视的一个环节。在有些情况下,软件质量会与硬件质量放在一起进行类别性讨论。但软件质量与硬件质量的不同是软件不会出现物理性老化,也不会随时间的增加而减少。而且,在软件测试和运行过程中,由于软件出问题时软件错误可以被检测出来并加以排除,因此,软件的质量会相应随时间的增长而不断增加。但同时软件的质量也可能因修改软件不正确而牵引出其他软件质量问题。
与硬件问题大多为物理故障不同的是,软件问题主要是因设计缺陷而引起的。这使得软件问题不具有观测性,也更难分析和测量。基于软件存在的这些特点,如何对软件进行质量监督及检验验收一直是装备建设中很重要的问题。
软件质量监督及检验验收过程中存在的问题
软件作为装备质量评价中的重要一环,对于装备整体效能来讲,起着极其重要的作用。但软件质量检验较硬件质量检验来讲,起步较晚,且很多验收方法还不是十分成熟。目前,很多承制单位在检验软件质量时,一般将验收软件的重点放在软件和硬件结合后的功能实现部分。这种验收方法固然大大提高了软件验收的“效率”,但却忽略了软件质量的多重性,忽略了软件编程完毕后装入硬件前的质量。另外,有些软件人员在解决软件问题时,往往忽略了各个软件单元之间的相互影响,从而导致更多的软件问题出现。面对以上问题,军事代表应认识到影响软件质量的因素很多,且错综复杂,不易查明。因此,对于软件的质量监督及检验验收应采取系统化、团队化的质量监督模式。如采取习惯性“头疼医头”的软件质量监督模式的话,对于软件质量的提高来讲,必然是无益的。
软件质量监督方法的几种方式
(一)做好软件编写前后的质量监督工作
软件在编写前,首先要考虑软件与硬件的匹配性,包括软件大小要匹配硬件的容量,编写软件使用的语言应是硬件中能够运行的编程语言等相关问题。同时,要清楚软件在硬件中要实现的功能及有可能出现的软硬件不兼容等问题(如:有些编程语言可以在WINDOWS2000系统中进行编程,但却不能在win7系统中运行)。软件在编写完成后,未装入硬件载体前,是软件质量监督的重要环节,但此过程容易被忽略。实际上,很多软件中的错误语句、语句逻辑不通及语句繁冗等问题,是可以在软件编写完成后的第一时间通过相关软件测评工具避免的。如果软件人员在软件编写过程中不断通过软件测评工具来完善软件,那对于保障软件质量来讲效果是很明显的。但此法有可能破坏软件编程过程的连续性,及因软件未完成而导致测评工具出现的错误逻辑检测。因此,在软件完成后第一时间利用工具软件进行软件测评是十分有必要的。在首次软件测评结束后,软件人员应将相关的软件问题改正,并再次通过工具软件验证无误后,再将软件装入硬件进行功能测试。如功能测试中出现软件质量问题,首先将软件问题解决后,再一次使用工具软件对修改后软件进行软件测评,在工具软件测评无误后,再重新装入硬件中进行验证,如此循环,直到软件程序问题解决为止,如图1所示。通过这种方式,既可以减少软件编写中的逻辑、语病等错误,又可以不断完善软件在硬件中的功能性能,对于保障软件质量来讲,具有极其重要的意义。
(二)使用故障树对软件故障进行分析
对于软件故障,如在发现软件故障后,要求软件开发人员逐条的检查软件的正确性,显然是既费时又费力的。因为一般装备软件的源程序代码至少有一万多条,查起来不可避免地出现一些人为的误操作。为提高复杂软件系统的质量和可靠性,最好的办法是设计软件故障树模型。
故障树模型是事件之间逻辑关系的图形表示。故障树虽然从传统意义上讲是用来分析硬件的,但故障树也可以为软件质量提供监督模式,如图2所示。软件虽不像硬件那样具有可观察性,但软件却和硬件一样具有偶然失效的特点。因此,软件人员可以利用软件故障树模型,通过软件穷举测试的方法,来确定软件的实效原因及恢复修改的方法。
软件故障树和硬件故障树一样,也有可能出现考虑不周全的情况。因此,在利用故障树分析软件的过程中,也应该同时考虑一些极有可能被忽视的软件失效模式。如发现有些软件失效模式未被考虑,则应及时加入故障树中,以保证软件故障树模型的完整性。
(三)在软件质量监督过程中,注重对软件团队的管理
目前,软件的编制往往需要一个团队的通力合作才能达成。因此,在软件的编制中需要良好团队精神才能圆满地完成软件的编制工作。但在日常的软件检验验收过程中,有时会发现因缺乏团队合作精神所引起的质量问题。例如,一个软件由很多分单元组成,而每个分单元都有它的编写人员,当其中的一个软件工程师发现自己的软件存在缺陷,并自行进行修改的话,那么对这软件单元的修改极有可能产生“牵一发而动全身”的影响,从而导致更多的软件问题发生。因为软件是由多个软件分单元组成的一个整体,如果分单元在修改时未能充分考虑与其他分单元相关联系的话,则在软件运行时极有可能出现质量问题,从而影响整个软件的正常运行。并且,这种因分单元软件修改而产生的质量问题,如不能及时发现原因,往往很难发现问题的症结。面对这个问题,军代表应制定严格的软件修改程序,并纳入到承制单位的质量保证体系中。当软件出现问题时,军代表应督促承制单位采取团队分析的方法来分析软件的质量问题,确保软件质量问题得到准确的定位。同时杜绝软件问题未经软件团队分析便擅自修改的情况发生,以达到切实保证软件质量的效果。
图1 软件质量监督图
图2 简单的故障树模型
软件检验验收时应注意的问题
(一)在输入软件参数时,应考虑各种可能出现的情况
在验收软件功能时,有时会涉及软件输入参数的情况。面对这种情况,军代表不应按常规方式进行参数输入,应输入软件处在极限条件下或非正常的条件下可能出现的参数。这样可以防止软件因没有设置参数限制条件保护而导致不必要的软件崩溃。如软件常规输入为1到10,军代表应首先输入1到10,在确认无误后,就应输入除1到10以外的数字,以此达到充分考核软件纠错性的效果。这样做的目的是因为装备交付部队后,可能遇到各种误操作的情况,操作软件人员可能因为紧张等原因而出现输入参数不符合正常条件的情况。所以,在检验装备软件功能的时候应充分考虑软件可能出现的各种情况。
(二)督促承制方充分验证软件问题
由于软件具有逻辑连贯性的特点,因此,在软件问题修改后的验证中往往需要一定的测试手段和时间。但有时会软件人员在修改完软件问题后,便立刻提交进行检验验收,并不对修改后的软件进行大量的测试。这样做往往使旧的问题改过之后,在继续验收过程中又连带出新的问题,从而不仅使军代表检验验收的工作量增加,而且还浪费了本应完善软件的相应时间。面对这种情况,军代表应督促承制单位按照图1的方式,充分验证软件,以达到切实保证软件质量的效果。
(三)加强软件技术状态的管理
当软件质量稳定后,要控制软件质量,最重要的是要控制软件版本。要控制软件版本,就要控制好软件在整个生命周期内的技术状态。如软件出现更改情况,就应在软件更改后,充分验证软件的正确性。待确定软件质量没有问题后,军代表应督促软件人员将定型软件存入相应的软件产品库。对于日后软件的提取及灌注,都应有相关责任人负责监督,以此杜绝软件人员随意修改软件的情况发生。
(四)当软件问题多次出现时,应注意区分硬件问题和软件问题
当软件问题多次出现,而软件人员又多次对软件进行检查却未发现问题,但相同问题却仍旧出现时,应适当分析软件载体是否存在问题。一般情况下,面对重复出现的软件问题,首先应该组织相关人员(包括软件人员和硬件人员)对软件问题进行充分的分析,以此达到区分简单硬件问题和软件问题的目的。如果很难确定是软件问题或硬件问题的话,应在不装载软件的情况下单独对硬件进行检查,如仍未发现问题的话,则可判断为软件问题;如在不装载软件时,硬件仍出现类似问题,则可先将硬件问题解决后再将软件重新装载,再重复进行测试,如图3所示,以达到问题得到真正定位。
(五)确保软件开发环境健康运行
软件开发环境是否健康是保证软件质量的基础。因此,在开发软件前,要切实保证软件开发环境的健康运行。要保证软件开发环境的健康运行。第一要保证使用的编程软件是正版软件,以防止盗版软件中可能存在的解码漏洞影响软件的质量;第二,软件编程环境应是隔离网络的,以防止软件在编辑的过程中受到网络病毒的攻击。同时,军代表要督促承制单位在软件开发环境中装入杀毒软件,并对组建软件开发环境的硬盘、光盘和移动设备等介质进行病毒检查,以此达到隔离软件病毒的效果。
(六)软件验收中,应注重软件的提取、灌注及拷贝过程
在软件功能的验收过程中,如果要验收的软件是定型后比较稳定的软件,则在软件的功能验收中,应将验收的重点放在软件的灌注及拷贝过程上面。对于软件来讲,每一套软件程序都是从软件库中提取的稳定的定型软件。只要灌注及拷贝过程不出现失误,则在理论上是可保证每套软件的质量一致性的。因此,军代表应重点把控软件的提取、灌注及拷贝过程。
图3 软硬件问题区分逻辑图
在软件功能的检验验收过程中,如果第一套软件无质量问题的话,其他套软件的验收可以采取整套软件功能抽检的验收方式。这样做的优点在于从源头控制软件质量同时,提高了软件检验的效率。因此在定型软件质量有保证的前提下,只要保证提取、灌注及拷贝这三个过程没有问题,则可以说基本控制了软件质量。
结束语
软件作为装备建设中的重要一环,它的质量自诞生之日起便受到各个国家的重视。近年来,软件的开发及应用正以极快的速度发展着。但目前相应的软件质量监督及检验验收却仍处在发展探索的阶段,公认的切实可行的方法还未正式确立,还仍需进一步研究和探讨。对此,我军应加快研究软件质量监督及检验验收的相关方法,确保装备质量同步不断提升。