APP下载

飞行器任务规划软件可靠性研究

2023-12-13胡雯婷HUWenting史福波SHIFubo田志玮TIANZhiwei宋毅杰SONGYijie于龙YULong

价值工程 2023年33期
关键词:软件可靠性飞行器可靠性

胡雯婷 HU Wen-ting;史福波 SHI Fu-bo;田志玮 TIAN Zhi-wei;宋毅杰 SONG Yi-jie;于龙 YU Long

(航天科工智能运筹与信息安全研究院(武汉)有限公司,北京 100074)

0 引言

计算机在航空航天事业中发挥越来越重要的作用,有着逐渐广泛的应用,并且和航天航空安全息息相关。与之相对应的,软件的规模也越来越大,层次越来越复杂,从而软件出现故障的概率也随之增大。

1977年9月,由于软件故障,某国三叉戟导弹飞行试验失败。1999年9月,由于软件故障,欧洲空间局新型Ariana运载火箭宣告失败。可见,在飞行器设计中,软件所发挥的作用和价值越来越大,但是同时软件一旦发生故障也会带来十分巨大的损失。对于飞行器而言,在一些关键应用方面使用质量有问题的软件,如任务规划软件、飞行控制软件、导航软件等,很可能造成灾难性的后果。为此,当前工程人员需要深入分析如何提高飞行器软件的可靠性,保证软件使用安全。

飞行器任务规划软件,是飞行器性能的“倍增器”,能够极大地提升飞行器的性能。飞行器任务规划需求主要包含以下功能:任务规划准备、规划预处理、航迹规划、规划检验、结果校验[1]。随着飞行器任务规划需求的增加,其软件规模越来越大,在设计上同样面临着如何最大限度提高软件可靠性的问题,任务规划软件一旦发生故障,造成的损失将是毁灭性的。本文结合飞行器任务规划的特点,对影响其软件可靠性的因素和提高其可靠性设计的方法进行探讨。

1 任务规划软件特点

1.1 任务规划软件技术需求

从功能上来看,飞行器任务规划软件应该具备多项功能,比如任务设定、规划决策、方案评价、过程播放、方案展示等,这些功能在具体应用中可以体现在如下方面:

①有能力按照指派的计划任务及计划决策资源,完成任务计划,并据此制订计划计划;

②能够设定并修改任务内容;

③某些问题可通过计算机软件进行独立规划并求解,而非结构性问题则可根据决策者的经验,采用人机交互方式求解。在规划实施之前,必须由决策者认真评估、确认,之后方可落实方案;

④能够有效地控制和管理工作的规划过程;

⑤能够可视化检查验证飞行计划方案。

在技术层面上,任务规划软件必须具有可重用性,其中可重用性不仅体现在代码本身,而且体现在设计框架上。在此基础上,对任务规划软件的扩展性需要进行深入探讨。任务规划软件可重用性是任务规划软件设计和开发过程中的一个重要环节。因为软件系统本身是由多个模块构成的,所以在软件开发过程中,必须保证各个功能模块之间的相互独立、互不干扰。任何复杂软件的开发都需要很长的时间。软件中的每一部分都是相互联系的。软件功能的实现并非一朝一夕之功,而是需要随着应用和需求的不断增长,不断地对软件功能进行优化。这就要求软件具有很高的可伸缩性,采用模块化方法能更有效的解决这个问题。因此,在软件开发过程中,应遵循模块化的思想,尽可能地将系统划分为若干模块,并按照一定的次序进行。另外,软件中的各个功能模块之间应该有一个很好的接口,同时软件应该具备联网、协同规划等外部通信接口,这样在软件面向应用时,才能有更高的灵活性。

1.2 任务规划软件架构

软件从实用性的角度出发,主要由四个方面组成,即:飞行任务的设置与编辑、任务的规划设计、任务目标的设置,以及编辑与模拟推演评估[2]。其中,飞行任务规划是实现该系统功能的关键环节,同时也是其难点所在。飞行任务的设置与编辑主要是对飞行任务进行详细的描述,并进行可视化展示;任务规划模块采用任务规划算法,根据任务分配的任务,对任务进行规划;任务计划中的目标设置与编辑模块,根据任务计划结果对飞行任务进行编程与展开;仿真推演模块可以在2D和3D两个维度上模拟推演飞行计划,从而对总体计划方案做出深入的评估。为满足软件可重用性与可扩展性的要求,本项目拟将各功能模块作为一个整体来处理,包括飞行任务设想编辑器、任务规划器、任务计划目标设想编辑器以及飞行计划评价器,且每个模块又可由若干个较小模块组成。然后,对软件体系结构模型进行设计,包括体系结构框架、运行环境框架和数据库表结构。图1所示为该软件的结构示意图。

图1 任务规划软件结构示意图

2 任务规划软件可靠性

2.1 软件可靠性定义

定义[3]:软件在规定条件和时间内完成任务的能力即为软件的可靠性。所谓规定条件是指在规定的要求下使用软件的方法,使用可靠性和使用方法有着密切关系。任务规划软件有着很多的使用方式,在一些条件下会导致软件故障暴露出来,在另外一些用法下不会显示出软件故障。为此,相关工作者要深入研究的是如何合理地定义软件用法并且控制不同环境对软件产生的影响。

指定的时间指的是软件循环运行。在软件维护过程中,应针对不同情况,确定相应的时间区间。软件的稳定性和时间有着密切的关系,软件的失效概率随工作时间而增加。软件运行的时间、日历时间和电脑使用的时间均是十分常用的时间概念。任务规划软件贯穿整个飞行器的工作时间,在设计过程中,需要根据飞行器的技术指标来进行考核。

完成规定功能指的是没有出现失效情况的软件。如果软件不能完成某项功能,就意味着该软件是无效的。为了确定一项失败,必须明确要求执行的功能。具体的功能通常由软件需求规范来定义。

对于软件可靠性的概念,仅仅实现定性的定义是不够的,还需要对软件质量指标——软件可靠性进行数量化,也就是运用定量的数学方法对软件产品的可靠性进行研究分析。早在1975年,Musa就指出了可靠性度量的重要性:可靠性是一个迫切需要量化的重要性能指标。

然而软件的可靠性定量描述不同于硬件,无法比较直观和容易实现,任务规划软件是飞行器指挥中枢,其可靠性直接关系到飞行器技术指标的达成度,任务规划软件的量化方法研究成为可靠性研究的重要方向之一。

2.2 任务规划软件可靠性影响因素

因为软件内部逻辑比较复杂,运行环境千变万化,并且不同的软件之间存在着很大的差异,所以软件失效机理也会表现出不同。如一些故障过程比较简单,便于后续分析;而且有些失败的过程非常复杂,难以用语言来描述和分析。为了避免在使用术语时出现不必要的混乱,在对软件失效机理进行详细阐述之前,必须先明确一些相关概念[4]。

人为错误是指在软件的生命周期中,出现的非预期或不能接受的人为错误,其后果会导致软件难以正常使用。人为差错是人类在软件开发活动中难以规避的过失。

软件缺陷:是指在软件中,存在着的偏差不能预期的或不能接受,当软件在一定的条件下运行时,会出现诸如激活软件缺陷等类型的软件故障。软件缺陷是软件开发过程中人为失误所造成的一种静态现象,其主要类型如图2所示。

图2 软件缺陷主要类型

软件故障:指软件在运行过程中出现的不可接受的、非预期的、内部的状态,如果不采取容错等相应的处理措施,那么将会导致软件失败。软件失效是软件启动时发生的一种动态现象,一旦软件发生故障那么将难以继续运行。

软件失效:指软件运行过程中出现的不符合预期或不能接受的外部行为的结果。软件失效后其形同虚设,无法使用。

软件缺陷和软件失效在某种程度上分别代表了两个不同层次的软件问题。软件缺陷是软件本身的问题,也是软件开发者能够察觉到的缺陷;软件故障是一种外因,也是一种可以被用户感知到的问题。

软件错误将导致软件失效,任务规划中的软件错误主要由设计人员在各个阶段的错误造成,具体表现为:

①软件需求。用户如果在实际应用过程中,任务要求不够全面、不合理、甚至有误;由于软件开发者无法及时跟踪需求变化而导致输入条件不合理;软件开发人员和需求提出者之间存在认知偏差等问题,导致软件的使用无法满足需求。

②错误的设计。比如,对功能和性能的描述有误等;不正确的工作流或算法;设计中没有正确处理软件的输入量和输出量之间的关系等。

③不正确的代码。比如,程序的逻辑错误,错误的编码等等。

④不正确的测试定义和不正确的测试执行。

⑤软体档案有误。例如,不完整的软件文件,内容不一致的文件,版本不一致的文件,文件缺乏完整性和一致性。

从软件开发的角度来看,软件缺陷的发现越晚,其影响越大。软件经过长时间使用后可能产生诸多信息,其产生的影像主要体现在软件质量的大幅下降;寻找和修改的难度越来越大,成本也越来越高。因此,我们应该尽可能地在软件开发的早期就把错误排除掉。

3 提高任务规划软件可靠性方法

3.1 建立以可靠性为核心的质量标准

在软件项目规划与需求分析过程中,必须建立一套以可靠性为核心的质量标准。在软件开发过程中,为了保证软件开发效率和质量,必须确定一些关键的性能指标。这个质量标准包括了很多方面,包括功能的实现、可维护、安全可靠。虽然软件质量评价尚未形成一个完整的系统,但是我们还是可以用一系列具体的指标为基准来确定。以这些性能指标为依据,评价产品,找出影响产品质量的因素,并确定改进的方向。在后续发展阶段,在满足特定需求的情况下,可以确定产品的性能等级,以便合理的评价和管理软件。制定质量标准后,设计质量报告及评价表,严格执行,并及时完成质量评价报告。

3.2 选择开发方法

软件开发方法对软件可靠性有很大的影响。因此,在软件开发过程中,必须采用适当的软件开发方法,以确保软件程序既能满足特定的要求,又能保证软件的可靠性。已有的软件开发技术中,Parnas法被公认为最早的软件开发方法,由Parnas于1972年提出。其核心思想是在设计初期就对未来可能发生的变化进行预测,并采用信息隐藏策略来提高软件的稳定性和可维护性。该方法对软件的维护有一定的帮助。在软件设计阶段,首先要明确未来可能发生的变动因素,在划分模块时,要把这些变动因素隐藏起来,使其它模块不受影响。这样既提高了软件的可维护性,又避免了错误信息的传播,提高了软件的总体可靠性。该方法降低了对开发者的依赖性,降低了开发成本。在使用面向对象的策略中,由于对高可靠性数据库的依赖程度较高,从而保证了软件的可靠性;因此,我们提出了一种面向对象的战略,并将Parnas与Rayleigh模型相结合,在开发阶段融合其它技术,吸收它们的优势。

3.3 软件重用

充分利用已有的成熟软件资源,不仅缩短了开发周期,提高了开发效率,而且提高了软件的可维护性和稳定性。通常情况下,软件工件的再利用最为普遍。在此基础上,提出了一种基于组件复用技术的软件体系结构设计方法。在选择可再用零件时,一定要严格按照挑选零件的标准。这些可再用组件必须经过严格测试,或已被证实可靠度及正确性。他们应该是模块化的,能完成一个完整的功能,结构应该清楚,易于阅读、理解,合适的比例,以及高度的适应性。

3.4 使用开发管理工具

作为开发大型软件系统必备的内容,开发管理工具至关重要,如果单纯地依靠人力进行管理难以达到预期的效果,为此,需要充分借助开发管理软件、工具,借助这些工具将系统开发过程中出现的问题及时解决,实现开发效率和产品质量全面提升的目标。在国内当前依然缺乏高效的开发管理工具,很多软件公司依然采取的是人工管理的模式,开发出的软件质量也有待进一步提升。

3.5 增强探测

在软件开发前期各阶段完成之后,只有加强测试,才能进一步提高软件的可靠性(图3)。为了最大限度地消除软件中的bug,提高软件的可靠性,必须进行全面的测试。为了实现对大型软件系统的全面测试,需要确定最小测试个数和最大测试个数的关系,前者属于技术决策,后者属于管理决策,实践中需要设置测试个数的下界。一般来说,如果条件允许,应尽可能地进行全面的检查。

图3 软件单元测试

3.6 容错设计

提高软件可靠性的方法一般可分为两类:避免错误的发生;该方法采用了冗余思想来实现容错,其基本思想就是尽量减少软件中可能存在的错误对系统可靠性的影响。被动防错技术是指当某一计算机程序到达检验点之后,对该检验点的信息进行检验。主动的错误预防技术,可以定期的检查整个过程和数据,也可以在使用的时候发现异常。作为一个项目管理员,应该使用这种方法,虽然它的设计很费时,但它对提高可靠性很有帮助。

4 小结

不同于硬件可靠性评估,对于软件可靠性定量进行评估尚无统一有效的方法。对于飞行器系统来说,任务规划软件的可靠性直接关系到整个飞行任务的成败。本文根据飞行器任务规划软件的特点,对影响其可靠性的因素进行了分析,并针对这些因素,对能够提高飞行器任务规划软件可靠性的方法进行了探讨。

猜你喜欢

软件可靠性飞行器可靠性
高超声速飞行器
可靠性管理体系创建与实践
软件可靠性工程综合应用建模技术研究
复杂飞行器的容错控制
5G通信中数据传输的可靠性分析
数控系统软件可靠性设计与故障分析技术
神秘的飞行器
基于可靠性跟踪的薄弱环节辨识方法在省级电网可靠性改善中的应用研究
可靠性比一次采购成本更重要
简谈使用BoundsChecker进行计算机联锁系统人机界面软件可靠性测试