面向航天领域的模型驱动软件设计开发方法*

2017-11-21 04:23王海鹏梁运畅王智飞
航天控制 2017年5期
关键词:型号航天构件

张 涛 秦 凯 王 楠 王海鹏 梁运畅 王智飞

1.西北工业大学软件与微电子学院,西安 710072 2.北京神舟航天软件技术有限公司,北京 100094

面向航天领域的模型驱动软件设计开发方法*

张 涛1秦 凯1王 楠2王海鹏1梁运畅1王智飞1

1.西北工业大学软件与微电子学院,西安 710072 2.北京神舟航天软件技术有限公司,北京 100094

针对航天嵌入式任务关键软件特点,研究基于AADL模型,实现对其结构模型、行为模型、故障模型和执行模型的多维度描述。通过构造其代码规则模板,实现从模型到源程序的自动化映射,降低编程工作量。研究将AADL模型转换为故障树模型和时间自动机模型,分析验证软件安全性与可调度性;通过构建航天领域模型库,支持大规模软件复用。最后,基于所开发的航天型号软件模型驱动开发平台,对航天飞行器GNC系统的软件开发进行了初步验证,结果表明模型驱动的软件开发方法能有效提高航天型号软件开发效率和质量。

模型驱动软件开发;软件代码生成;软件安全性分析;软件可调度性分析

随着探月工程、空间站等国家重大航天工程的实施,航天型号软件的规模与复杂度也在指数级增加,这对传统航天型号软件开发方法与技术提出了严峻的挑战[1]。例如,航天型号软件属于典型的安全关键软件,其质量将直接影响航天器和航天员安全,而如何系统、全面地分析与测试软件安全性、实时性等质量属性是其技术难点。随着航天型号软件研发工作量剧增,如何提高软件研发效率,保证软件研发质量与进度是目前面临的挑战。航天型号软件研发过程中通常需要多次迭代,如何保证需求、设计和代码的一致性,是软件管理难点。

模型驱动的软件开发方法是一种以模型为核心的软件开发方法,已经在航空、航天及核电等众多领域得到广泛应用[2]。该方法将模型定义为系统在外部环境下完成设计功能的描述或者规范,着重关注软件设计正确性,支持尽早分析和验证系统设计的软件属性,并支持不同级别模型之间的映射与抽取,以及代码的自动生成。研究和应用模型驱动的软件开发方法,有助于提高航天型号软件开发效率和质量,促进我国航天型号软件技术水平的进步。

本文首先给出了模型驱动软件开发方法的基本概念,并与传统软件开发方法进行了对比分析;然后针对航天领域软件开发需求,详细讨论了模型驱动软件开发方法的关键技术;最后介绍了模型驱动软件开发平台框架,并以航天飞行器GNC系统为例,说明了方法的有效性。

1 模型驱动软件开发方法概述

模型驱动软件开发方法是由OMG组织提出的一种软件开发框架,其核心思想是以模型,而非代码为中心的软件开发模式。通过开发模型,达到分离问题域、业务逻辑以及具体实现平台的目标[3]。如图1所示,模型驱动软件开发方法包括4个层次模型:计算独立模型(CIM)、平台独立模型(PIM)、平台相关模型(PSM)和代码模型。其中,CIM是从用户视角描述特定领域所面临的问题即系统需求,例如UML中的用例模型;PIM是与实现平台无关的软件系统结构和功能的高度抽象设计模型;PSM描述了与特定平台技术相关的软件详细设计模型;代码模型即软件源程序代码,通常由PSM模型自动生成。

模型驱动软件开发方法支持PIM到PSM,PSM到源程序代码之间的双向映射与抽取。通过映射,基于上层模型自动生成下层模型和源程序代码,提高软件开发效率。而通过抽取,保证下层模型变化后仍能与上层模型保持一致。因此,模型驱动的软件开发方法有效解决了软件开发各个阶段间不同层次抽象模型之间的一致性问题,使得开发人员集中关注系统业务与设计,减少实现细节干扰,并且通过映射PIM到不同的PSM,实现在不同平台上的快速适配。

图1 模型驱动软件开发过程框架

如图2所示,与传统软件开发方法相比,模型驱动软件开发方法具有显著优势。首先,通过构造模型,使得软件开发参与者能可视化的理解所开发的软件系统,减少因沟通引发的软件故障;其次,通过构造形式化、半形式化软件模型,避免传统软件文档描述的模糊性。并且,基于模型,可以在软件开发的初期阶段,分析验证软件行为、安全性和可调度性等重要质量属性,尽早发现软件设计缺陷,降低软件故障修正成本;最后,基于模型软件开发方法,支持自动化的代码生成,减轻编程工作量,提高软件开发效率,避免了软件设计与实现的不一致。

2 航天领域模型驱动软件开发关键技术

体系架构分析与设计语言AADL是由CMU等机构提出的一种嵌入式软件标准建模方法,已在国外成功应用于航天、航空和核电等嵌入式任务关键领域[4-5]。本文以AADL模型为基础,研究针对航天型号软件的结构、行为、安全性和调度性等特征的建模方法,以及基于模型的航天型号软件质量分析与验证,代码和文档自动生成等关键技术。

图2 模型驱动软件开发方法与传统软件开发方法比较

2.1 基于AADL的航天嵌入式软件建模方法

模型是对软件结构、行为、以及其他质量特性的抽象描述。在航天型号软件开发过程中,针对各个阶段的需求,需要设计和开发不同抽象级别和类型的软件模型。主要的航天嵌入式软件模型包括:硬件环境模型、软件结构模型、行为模型、错误模型及执行模型等。

在嵌入式系统中,软硬件是紧密耦合的,AADL支持构造软硬件一体的系统结构模型。AADL定义了3类构件:软件构件、执行平台构件以及系统构件。软件构件用于软件体系结构建模,包括数据(data)、线程(thread)、线程组(thread group)、进程(process)和子程序(subprogram)构件;执行平台构件用于硬件体系结构建模,包括处理器(processor)、虚拟处理器(virtual processor)、存储器(memory)、总线(bus)、虚拟总线(virtual bus)和外设(device)构件;系统构件组合所有的构件,层次化地建立系统的体系结构。

AADL行为附件则基于状态机,描述线程、子程序构件的具体行为。行为附件通过定义构件的状态、变迁、触发条件和动作等详细建模构件行为。行为附件支持的动作包括:接受/发送数据、子程序调用、异步访问、执行时间和延迟时间等。

AADL提供错误模型附件(Error Model Annex),用于建模和描述构件、连接等系统故障。AADL错误附件的本质是一个随机自动机,通过声明潜在的故障状态、故障事件以及故障传播等,支持分析系统发生故障的概率。AADL错误附件也可以与故障树分析、马尔科夫链和依赖图等方法相互集合,支持对系统的可靠性、安全性和可用性等的定量分析。

AADL提供执行模型用于描述系统的运行环境,管理和支持构件的同步或者异步执行,包括构件分发、同步/异步通信、调度和模式演化等行为。AADL默认调度模式为带同步通信的抢占式调度。基于执行模型,支持对系统的可调度性分析与验证。针对航空领域,已经扩展了对应的ARINC653调度模型。针对航天嵌入式系统的具体应用特性,需要扩展开发相应的调度策略与可调度性分析模型。

2.2 模型驱动的软件代码生成方法

AADL模型到代码的自动生成,有助于提高嵌入式实时系统软件开发的自动化水平,缩短软件开发周期,减少人工写代码的工作量和编码过程中出错的可能性。目前,AADL代码生成方法主要采用基于规则的代码生成方法,即如图3所示,通过模型解析,按照线程、子程序等构件和连接件的代码转化规则,由模板引擎实现从模型到代码的自动化映射与转换。

图3 基于模板的自动代码生成工具结构图

2.3 模型驱动的航天型号软件安全性分析方法

模型驱动的航天型号软件安全性分析方法,通常是将系统的AADL模型转换为软件故障树、马尔科夫链及广义随机Petri网等模型,分析和计算软件的安全性[6]。这里以故障树分析为例,具体描述基于模型的软件安全性分析方法。

故障树是航天领域广泛使用的软件安全性分析方法。传统基于故障树的安全性分析,由人工完成,难以保证故障树的完备性与一致性。模型驱动的软件安全性分析方法,则通过将软件模型直接映射为软件故障树,支持基于割集的软件安全性定性分析[7]。在AADL模型中,根据其结构模型和错误模型,通过所定义的映射规则,生成软件故障树模型,然后采用最小割集方法定性分析。

软件故障树的生成步骤如下:

1)系统错误模型实例提取: 系统错误模型实例包括构件错误模型实例、通信错误模型实例以及系统实例。在生成故障树时,需要提取其构件的Model_Hierarchy, Derived_State_ Mapping, Occurrence 和 Guard_In等属性。并进一步根据其传播路径,以有向图方式描述其故障传播路径;

2)生成中间故障树: 基于故障传播有向图,可以生成中间故障树。在中间故障树中可能存在多余操作符号、崩溃门及故障传播循环路径等问题,需要进行处理;

3)优化中间故障树:针对同一故障树的共享子树问题,以及不同故障树之间的共享子树问题,进行故障树优化处理。

2.4 模型驱动的航天型号软件可调度性分析方法

航天嵌入式软件多属于强实时软件系统,可调度性是其重要属性。在标准AADL模型中,支持对带同步通信的抢占式调度策略分析;而航天型号软件可调度性分析则更为复杂和困难,其根据CPU架构分为:单处理器调度和多处理器调度。针对多处理器,又包括局部调度和全局调度。调度算法又包括:固定优先级调度和最短截止时间调度等。

UPPAAL是一种常用的实时系统模拟与验证工具,其模型是时间自动机[8]。通过将AADL模型映射为UPPAAL的时间自动机模型,可以基于该工具自动仿真和验证系统的可调度性。这里,时间自动机定义为一个六元组,TA=,其中:

L是自动机状态(Location)的集合;

l0(l0∈L)表示自动机的初始状态;

C是时钟(Clock)的集合,时钟默认从0开始,不断自增1,可以在任意时刻被重新赋值;

Var是一系列变量的集合;

E是边(Edge)的集合,E⊆L×G×Act×U×L,其中,G(有可能为空)表示约束条件(guards),只有满足约束条件才能发生状态转移;Act表示同步信号,构成了触发转移的使能条件;U表示对时钟变量或整型变量的更新操作,即在触发转移的同时完成变量的赋值操作;

I表示不变条件(invariant),是状态转移约束函数的集合。

为了实现从AADL模型到UPPAAL模型的自动化映射与转换,需要为其典型任务、调度策略等设计映射模板。转换工具则基于映射模板,将AADL模型中的线程等元素转换为UPPAAL模型,再采用UPPAAL分析工具实现自动化仿真分析,在图4中,给出了AADL-UPPAADL映射模板示例。

图4 AADL-UPPAAL任务模板示例

2.5 面向航天领域模型的软件可复用技术

模型驱动的软件开发方法支持基于模型的大规模软件复用。火箭、卫星等航天产品具有大量的相似特征,这使得开发面向火箭、卫星等典型航天产品线的领域模型成为可能。如图5所示,在航天领域模型中主要包括2类领域模型:1)通用航天组件模型,如典型航天CPU、总线等硬件组件模型;2)面向航天产品族的领域模型,如面向火箭、卫星等,设计开发其软件组件模型、体系结构模型及故障模型等。

图5 航天领域软件模型

在新型号软件研发过程中,可以直接复用领域

模型库中的已有模型。通过复用已有模型,不仅复用了软件设计,同时也复用了软件代码、测试用例及软件安全性报告等模型派生的相关软件资产。并且,这些模型已经得到了充分验证,保证了航天型号软件质量与可靠性。

3 航天型号软件模型驱动开发平台设计

航天型号软件模型驱动开发平台采用开放式Eclipse框架设计,支持动态集成和扩展模型驱动软件开发工具,其系统框架如图6所示。在系统框架中,航天领域模型库提供航天通用组件模型库、火箭模型库和卫星模型库。设计人员在开发软件模型时,可以从领域模型库中直接复用已有产品和组件模型,提高软件建模效率和质量。根据软件规格说明中的功能和安全性等质量需求,分别构造其结构模型、行为模型、环境模型、执行模型和故障模型。然后应用代码转换规则模板,由代码生成引擎自动生成软件源程序。通过将其环境模型和执行模型转换为时间状态机,集成已有分析工具开展可调度性分析验证。通过将故障模型自动映射为故障树模型,应用最小割集等方法开展安全性定性分析。

图6 航天型号软件模型驱动开发平台框架

4 模型驱动软件开发方法的航天应用实例

本文以航天飞行器GNC系统为例,初步验证模型驱动的软件开发方法的有效性。GNC系统主要包含4个周期性任务:控制任务、系统管理任务、遥测任务和空闲任务。图7给出了GNC系统的结构模型,其主要构件包括进程构件、全局共享数据、处理器构件、存储器构件和总线构件等。在结构模型之上,附加其行为描述、错误附件、调度信息及资源信息等,形成完整的GNC系统模型。

图8给出了GNC系统中处理器构件的错误状态转移过程。根据分析,处理器构件中存在6个故障状态和8个故障事件,使用错误附件子语言对处理器构件进行错误建模,如图9所示。基于该系统模型,实现了对GNC子系统设计一致性检查,以及对安全性、可调度性的分析验证,共发现重大设计缺陷和故障7处。最后,基于模型自动生成了82%的源程序代码,有效减轻了编程工作量。通过本实例证明了在航天领域中使用模型驱动的软件开发方法能够有效提高航天型号软件开发效率和质量。

图7 GNC系统AADL结构模型

图8 处理器错误状态转移过程

图9 处理器错误模型

5 结论

针对当前航天型号软件开发遇到的挑战与问题,探讨了模型驱动软件开发方法在航天领域的应用。针对航天嵌入式任务关键软件特点,分别研究了基于AADL的航天型号软件建模方法、模型驱动的软件代码生成、安全性分析及可调度分析等关键技术。提出了构建航天领域模型库,实现大规模基于模型的软件复用思想。最后,描述了面向航天领域的模型驱动软件开发平台框架,并通过GNC系统实例初步验证了模型驱动方法在航天型号软件开发中的有效性。

[1] 李晓凉. 航天型号可靠性分析及软件的实现[D]. 电子科技大学, 2014.

[2] France R, Rumpe B. Model-driven Development of Complex Software: A Research Roadmap [C]// Future of Software Engineering. IEEE, 2007:37-54.

[3] Vanzandt L L. Intentions and Issues of Model-driven Development and an Introduction to the OMG MARTETMProfile[C]// Aerospace Conference. IEEE, 2009:1-13.

[4] Blouin D, Giese H. Combining Requirements, Use Case Maps and AADL Models for Safety-Critical Systems Design[C]// Euromicro Conference on Software Engineering and Advanced Applications. 2016:266-274.

[5] Liu Y, Shen G, Wang F, et al. Research on AADL Model for Qualitative Safety Analysis of Embedded Systems[J]. International Journal of Multimedia & Ubiquitous Engineering, 2016, 11(6):153-170.

[6] Liu Y, Shen G, Huang Z, et al. Quantitative Risk Analysis of Safety-critical Embedded Systems[J]. Software Quality Control, 2016, 40:1-25.

[7] Banach R, Bozzano M. The Mechanical Generation of Fault Trees for Reactive Systems Via Retrenchment II: Clocked and Feedback Circuits[J]. Formal Aspects of Computing, 2013, 25(4):609-657.

[8] Hessel A, Larsen K G, Nielsen B, et al. Time-Optimal Real-Time Test Case Generation Using Uppaal[J]. Lecture Notes in Computer Science, 2003, 2931:114-130.

ResearchonModel-DrivenAerospaceSoftwareDevelopmentMethod

Zhang Tao1, Qin Kai1,Wang Nan2,Wang Haipeng1, Liang Yunchang1,Wang Zhifei1

1. Software College, North-west Industrial University, Xi′an 710072, China 2. Beijing Shenzhou Aerospace Software Technology Ltd.Co., Beijing 100094, China

Somekeytechniquesarediscussedforusingthemodel-deriveddevelopmentmethodinaerospacedomain.TheAADLisusedtobuildarchitecturemodel,environmentmodel,behaviormodel,errormodelandexecutionmodelforaerospacesoftware.BasedonAADLmodel,thesourcingcodesaregeneratedautomatically,whichlightenstheprogrammingworkload.TheauthormanagestoanalyzeandcheckitssafetyandsustainabilitybytransformingADDLmodeltofaulttreeandfiniteautomatamachinemodel.Aaerospacedomainmodelsdatabasecanbedevelopedtosupportlarge-scalere-usebysoftwaremodels.Theframeworkofaerospacemodel-drivensoftwaredevelopmentplatformisalsoprovided.AndthespaceGNCsystemisusedtoverifytheeffectivenessofmodel-derivedapproach.

Model-drivensoftwaredevelopment;Softwarecodegeneration;Softwaresafetyanalysis;Softwareschedulerisk

TP311.5

A

1006-3242(2017)05-0074-06

* 航天科技支撑计划(2014HTXGD);载人航天工程软件工程化基础预研课题(2016XXXX);上海航天科技创新基金(2017XXXX);航天科学技术基金项目(17XXXX);西北工业大学研究生创意创新种子基金(Z2016191);陕西省科技攻关项目(2016GY-100)

2017-03-27

张涛(1976-),男,陕西人,博士,副教授,主要研究方向为软件工程;秦凯(1994-),男,山西人,硕士,主要研究方向为软件工程;王楠(1980-),男,陕西人,硕士,高级工程师,主要研究方向为模型驱动;王海鹏(1975-),男,山西人,博士,副教授,主要研究方向为模型驱动;梁运畅(1993-),男,山西人,硕士,主要研究方向为软件工程;王智飞(1991-),男,山西人,硕士,主要研究方向为模型驱动。

猜你喜欢
型号航天构件
我的航天梦
航天梦,我的梦
“三化”在型号研制中的应用研究
航天型号批生产管理模式的思考
型号产品配套管理模式探索与实践
逐梦航天日
建筑构件
建筑构件
建筑构件
建筑构件