APP下载

空间飞行器控制软件可信证据与资源管理方法*

2020-12-23张增安

舰船电子工程 2020年11期
关键词:分支飞行器证据

周 宇 徐 建 张增安 张 磊

(1.上海航天控制技术研究所 上海 201100)(2.南京理工大学计算机科学与工程学院 南京 210094)

1 引言

随着信息技术的不断发展,航空航天领域飞行器的控制软件功能越来越丰富,也越来越复杂。为保障软件的整体质量,对开发阶段、提交阶段、应用阶段的软件产品进行质量管控[1~3],合理地评估软件产品的可信性[4~6],是软件工程领域的一个热点问题。然而已有可信证据管理方法不能适应空间飞行器控制系统软件开发过程的具体特点,例如包含大量多变子过程以及涉及大量数据资源等。

针对可信证据的形式化描述和度量,王德鑫等[7]提出基于过程管理的可信证据形式化描述方法,从证据的度量、证据满足的可信级别以及证据的类型定义可信证据。蔡斯博等[8]提出了包括证据模型、证据节点和证据取值的证据描述方法。朗波等[9]从软件开发阶段、软件提交阶段和软件应用阶段构造可信证据模型,依照每种证据预先设定的度量方式,评定可信证据的等级。上述研究都没有考虑空间飞行器控制系统类软件具有的大量可变软件过程的软件开发特点。

软件的可信评估包括静态评估和动态评估两部分。静态评估指通过搜集软件开发过程中一切可采用的可信证据,静态地对软件的可信程度进行评估。动态评估侧重于评估软件运行过程中的稳态和鲁棒性。针对静态评估,王德鑫等[10]提出基于软件需求设计、开发和测试等阶段静态可信证据搜集与管理的软件可信评估方法,通过建立证据集合,采集可信证据,依次评估可信证据、可信原则、软件过程的可信级别。丁学雷等[11]提出一种验证软件的实际行为与预期是否一致的软件可信评估方法,该方法主要根据人对程序的预期来搜集对应的可信证据,通过评估各个预期行为的可信性来支撑软件的整体可信性。卢刚等[12]针对互联网软件,从声誉可信、交互可信和机理可信三个剖面采集用户证据、提供者证据和第三方证据以支持软件的可信评估。针对动态评估,古亮等[13]提出了软件运行时可信证据的采集与管理方法,通过在操作系统层引入可信证据采集模块,动态地对软件程序运行状态信息进行采集并建立可信证据。田俊峰等[14]提出了一种基于软件行为轨迹的软件可信评价性评价方法,通过在检查点设置传感器获取软件的实际运行轨迹,并利用相应的可信评估模型根据运行轨迹执行可信评估。罗新星等[15]利用马尔科夫链对软件运行时软件评价体系中各项属性的权重进行动态调整,以提高评估的精确性。软件的静态和动态评估从不同的侧面验证了软件的可信性,可信证据的可追溯性[7]是提升静态和动态可信证据质量的重要指标,然而已有研究没有考虑支撑可信证据生成的可信资源的形式化定义与管理。

以上软件可信评估方法主要针对具有较少且固定软件开发过程的软件系统,不适用于具有成百上千软件过程和大量分支结构的空间飞行器控制软件。因此,本文首先提出与过程解耦合的可信原则与可信证据管理体系。同时,空间飞行器控制软件开发过程涉及大量数据资源,例如:开发与测试文档、动力系统模型和测试数据等,这些资源是生成可信证据的基础。已有的可信证据的管理方法没有包含对这些数据资源的管理,无法对可信证据进行事后的跟踪与复核。因此,本文提出了可信资源的定义与管理方法,并提出基于可信资源支撑的可信证据管理方法,提升可信证据的可追溯能力与可信证据的质量。最后,基于可信资源支撑以及与过程解耦的可信证据管理体系,提出跨软件分支与过程的可信证据与资源合并方法。

2 面向大规模软件过程的可信证据管理体系

本节首先介绍与软件过程解耦的可信原则与证据管理体系;然后提出可信资源定义与管理方法;其次提出基于可信资源的可信证据管理体系;最后提出可信证据与资源合并方法。

2.1 与软件过程解耦的可信原则与证据管理体系

设计合理的可信原则与证据体系是可信评估的基础。可信原则和可信证据管理体系设计的核心问题是如何将软件开发过程中的可信原则和证据合理地组织、分类和管理。王德鑫等[10]提出基于过程证据的可信评估体系,详细设计了36个面向软件开发过程的可信原则,包含182个可信证据;在软件开发过程中采集可信证据,通过证据支撑可信原则。基于可信原则的达成程度,对软件过程的可信度进行评估。在该软件过程可信度评估模型中,可信原则是定义可信证据的基础。该方法主要针对具体的软件过程设计相应可信原则与证据,不适用于包含大量灵活多变软件过程的空间飞行器控制软件。本文以该可信度评估模型和方法为基础,针对空间飞行器控制软件包含的软件过程灵活多变的特点,提出与软件过程解耦的可信原则与证据管理体系。提出的可信证据管理体系的相关定义如下。

定义1:软件过程(软件活动)代表环境搭建过程、需求分析过程、设计过程、源码实现过程、地面测试过程、在轨运行过程等各种不同的软件开发和运行过程。空间飞行器控制软件需要在不同的环境对可靠性进行验证,因此,与传统软件过程相比,空间飞行器控制系统软件可以包含大量软件过程。我们用a表示一个软件过程。

定义2:软件分支b={ai}是由若干个软件过程ai有序排列构成的一个软件过程集合。一个软件分支通常包含一个功能模块的软件开发过程。不同复杂度的分支所包含的项目过程也不相同。

定义3:软件项目P={bk}是由若干个软件分支bk构成的集合。不同的软件项目包含不同数量的软件分支。不同的软件分支可以对应不同的软件模块,也可以对应不同的模块版本开发过程。基于软件分支的管理体系有利于充分考虑不同模块和版本的可信证据收集。

定义4:可信原则p指的是软件可信评估过程中需要参考的原则。本文将不同软件过程用到的可信原则抽象为有限数量的统一原则。例如地面测试阶段的代码测试完备性原则与在轨运行阶段的黑盒测试完备性原则可以抽象为统一的测试完备性原则。这样可以针对整个项目设计出有限数量的可信原则。可信原则与具体的软件过程解耦,能够有效适应空间飞行器控制软件开发过程中软件过程数量多以及变化多样的特点。

定义5:可信证据是软件开发和运行过程中收集的各类证据数据。本文提出的可信证据管理体系允许同一类型的可信证据在不同的软件分支和软件过程存在不同的实例。最终在可信评估时,这些不同的证据实例将被合并成一个可信证据。该定义能够适应具有大量多变软件开发过程的空间飞行器控制系统软件的特点,降低可信评估方案设计的复杂度。

2.2 可信资源定义与管理

可信评估通常依赖于可信证据,可信证据采集工作需要贯穿整个软件生命周期,为可信评估提供事实依据。开发和测试过程的文档、模型和测试数据等数据资源是可信证据采集的基础。然而,已有评估体系没有将这些数据资源纳入可信评估管理体系,由于空间飞行器控制系统软件包含大量软件过程,随着软件过程数量逐渐增加,容易遗漏关键证据或错误地采集相关可信证据。因此,本文提出可信资源管理体系,对相关的数据资源进行定义和管理,支持可信证据的管理工作。完备的可信资源管理体系可以支撑可信证据的采集、复核和变更。

定义6:可信资源是软件开发生命周期中产生的一切可用于可信评估的数据资源,如:1)需求分析阶段用户方提供的相关业务资料、开发人员整理的系统需求说明书等;2)编码阶段各开发人员分别负责的局部代码块源文件、局部单元测试的测试方案、测试用例和测试结果等;例如空间飞行器各个模块地面测试过程中采用的动力学模型;3)软件验收阶段客户方在软件试运行后的反馈结果、以及软件试运行阶段的各项指标数据等;例如空间飞行器在轨飞行阶段测试使用的动力学模型。可信资源的生产者为软件项目的实际参与者,如:软件开发人员、项目管理人员、客户方外派人员等。可信资源的意义在于尽可能地搜集开发过程中的一切资源,为可信证据的生成与管理提供依据。我们用r=<id,type,a,T> 表示一个可信资源,其中id表示资源的编号,是可信资源的唯一标识符;type表示资源的类型,例如文档、模型和代码等;a表示资源所属的软件过程;T表示资源其他属性及其取值。

可信资源的采集工作按照软件过程划分,各软件过程存在类型相似的可信资源,如:需求阶段的系统需求说明书和概要设计阶段的概要设计说明书都属于说明文档类的可信资源;编码阶段的局部单元测试方案和测试阶段的模块测试方案都属于测试文档类的可信资源。为了更好地组织可信资源,对可信资源做出更高层次的抽象,提出了自定义可信资源类型和自定义可信资源库的概念。自定义可信资源库是一个自定义可信资源类型的集合。自定义可信资源类型由评估方案的设计者根据软件项目单独定制。可信资源的采集工作以自定义可信资源库为依据,规范了可信资源采集的范围,减少可信资源的冗余。

2.3 基于可信资源的可信证据管理

可信证据的采集通常依赖于可信资源的收集与管理。同一个可信证据可以由多个可信资源支撑。可信证据的可信度评估需要依赖不同可信资源的完备程度。王德鑫等[8]提出的可信证据定义包含了证据的度量、证据满足的可信级别和证据类型,但是缺少对证据相关的可信资源的管理,同时也没有指定证据的合并方法,不能够支持可信证据的自动合并。因此,我们用e= <id,ptype,vtype,level,value,combinerule,set<r>> 表 示 可 信 证据。id是证据的唯一标识,ptype为该条证据所属的可信原则;vtype∈{B,L,N,P}表示该证据的数据类型:布尔型(B)、等级型(L)、数值型(N)和百分比型(P),level是该证据满足的可信级别;value是该证据对应的实际值;新增的combinerule属性指定同一证据类型不同证据实例相同属性的合并规则,例如求均值、取最大值、取最小值和求和等,也可以是自定义规则;新增的set<r>是该证据包含的可信资源的集合,建立可信证据与可信资源的联系。例如针对空间飞行器在轨运行管理文档化和在轨运行评审可信原则对应的可信证据:“是否有在轨运行测试文档、在轨测试代码率、在轨测试人员的经验和在轨运行阶段缺陷率等”,需要相关的文档、动力学模型、测试数据和其他相关可信资源的支撑。

2.4 可信证据与可信资源合并方法

软件开发流程中会有新的软件分支产生,例如开始新版本的研发时需要加入新功能模块。新功能模块的开发以软件分支的形式存在,每个分支包含需求分析、设计、开发和测试等多个软件过程,每个软件过程产生大量可信证据。一个软件分支开发结束后,需要与主分支合并,形成软件的一个新的版本。软件分支合并过程也伴随着可信证据的合并。由于主线上的可信证据具有不同的类型,属于不同的可信原则,同时软件分支也包含属于不同可信原则的可信证据,需要根据可信证据的不同类型进行合并。同时很多可信证据由可信数据资源支撑,因此在可信证据合并时需要对可信资源也进行合并。

图1 可信证据与资源合并规则示意图

图1说明了可信证据合并的具体方法。假设现有主分支项目1和分支项目2,需要将分支项目1合并到分支项目2。分支项目1下拥有可信证据A1、B1、E1,分支项目2下拥有可信证据A2、B2、B3、C1、C2、D1。A1、A2同属证据类型α,B1、B2、B3同属证据类型β,C1、C2同属证据类型γ,D1的证据类型为δ,E1的证据类型为θ。对于可信证据A1、A2,依据combinerule属性定义的合并规则实施合并操作,若combinerule属性的取值为average(取平均),则对A1、A2的value属性的值取平均,然后赋值给A1(A1在合并时作为主证据)。合并时不仅需要合并证据的值,还需要将被合并分支项目的证据集合存储于主证据中,具体通过可信证据的set<ref>属性保存其他可信证据的索引(id)。对于可信证据B1、B2、B3,其合并逻辑和A1、A2合并时类似。对于可信证据C1,C2,由于分支项目1并没有同属于类型γ的可信证据,因此,分支项目1会新增可信证据C3,同时将C1的所有信息拷贝至C3,然后以C3为主证据,C2为分支证据,执行合并操作。对于可信证据D1,由于主项目1下没有该类型的证据,因此会新增可信证据D2,同时拷贝D1的所有信息(除id外)给D2。同时,可信资源随可信证据的合并过程一起合并到主项目。

可信证据与可信资源合并方法的主要步骤见算法1,主要包括:1)对分支项目中的可信证据集合branch_evid_set执行遍历操作。2)在遍历过程中,若主项目的可信证据集合main_evid_set为空,则将当前遍历到的分支证据branch_evid拷贝至主项目可信证据集合中。若主项目的可信证据集合不为空,则尝试寻找主项目可信证据集合中是否存在与当前遍历到的分支证据类型相同的可信证据,若存在,则将该分支证据添加到主项目同类型可信证据的引用main_evid_ref中,并根据证据类型指导的合并规则重新计算可信证据的取值。若不存在,则拷贝该分支证据至主项目可信证据集合中。3)将分支项目可信证据对应的可信资源随证据一起合并到主分支的可信资源集合。4)遍历结束,完成主项目和分支项目可信证据和资源的合并。

2.5 原型演示系统

基于本文提出的可信证据管理方法,以管理空间飞行器系统软件开发过程为目标,研发了一套具有分支结构的可信证据与可信资源管理原型系统。系统的整体架构为“总项目、分支项目、软件过程(可信原则)”三级架构。该可信证据与资源管理原型系统,可以对软件开发过程中的可信证据和可信资源进行全面的管理。验证了本文提出的空间飞行器控制系统可信证据与资源管理方法的有效性。

算法1可信证据与可信资源合并方法

/*初始化主分支证据集合*/

1.Intialize main_evid_set

/*初始化其他分支证据集合*/

2.Intialize branch_evid_set

/*遍历分支证据集合中的每个分支证据*/

3.foreachbranch_evid∈branch_evid_set do

/*如果主分支证据集合为空,

复制分支证据,加入主分支证据集合*/

4.ifmain_evid_set=∅then

5. Intialize copy_evid

/*拷贝branch_evid至copy_evid*/

6. copy_evid←branch_evid

/*添加copy_evid到main_evid_set*/

7. main_evid_set←main_evid_set

∪{copy_evid}

8.end if

9.else

10. flag←0

/*遍历主证据集合中的每个主证据*/

11.foreachmain_evid∈main_evid_set do

/*如果主证据和分支证据的类型一致,执行合并操作*/

12.ifgetType(main_evid)=

getType(branch_evid)then

13. flag←1

/*获取主证据的引用集合*/

14. main_evid_ref←

getRefSet(main_evid

/*添加branch_evid到

main_evid的引用集合*/

15. main_evid_ref←main_evid_ref∪

{branch_evid}

/*根据合并规则执行合并操作*/

16. main_evid←

mergeEvid(main_evid_ref)

17.end if

18.end for

/*如果主证据集合中没有与分支证据相同类型的证据,拷贝分支证据,添加到主证据集合中*/

19.ifflag=0

20. Intialize copy_evid

21. copy_evid←branch_evid

/*添加copy_evid到main_evid_set*/

22. main_evid_set←main_evid_set

∪{copy_evid}

23.end if

24.end else

25.end for

26.return

3 结语

本文提出了一种空间飞行器控制软件可信证据与可信资源管理方法。该方法针对空间飞行器控制软件包含大量文档、测试数据与模型等数据资源的特点,提出了可信资源管理方法。同时提出了基于可信资源的可信证据管理方法,提升了可信证据的可追溯能力和质量。通过软件项目、软件分支、软件过程(可信原则)的层次划分,对可信证据和可信资源实施层次化管理。针对空间飞行器控制软件系统开发过程具有大量灵活多变软件过程的特性,提出了与过程解耦合的可信原则与证据管理体系,以及可信证据与资源合并方法。为后续空间飞行器控制软件可信评估奠定了基础。

猜你喜欢

分支飞行器证据
高超声速飞行器
一类离散时间反馈控制系统Hopf分支研究
软件多分支开发代码漏合问题及解决途径①
基于支持向量机的飞行器多余物信号识别
巧分支与枝
手上的证据
家庭暴力证据搜集指南
手上的证据
神秘的飞行器
硕果累累