第37卷第8期 2010年8月 计算机科学 Vo1.37 No.8 Aug 2010 Computer Science 构件化嵌入式软件设计模型非功能性质验证的工具实现 徐丙凤 胡军L。 曹东 黄志球 郭丽娟 张剑 (南京航空航天大学信息科学与技术学院 南京210016) (南京航空航天大学自动化学院 南京210016)。 (南京大学计算机软件新技术国家重点实验室 南京210093)。 摘要嵌入式软件的非功能性质是系统高可靠性的重要构成部分。传统的嵌入式软件可靠性保障技术主要关注于 系统开发后期,缺乏有效工具对系统设计的非功能性质进行分析与验证。对基于接口自动机模型的构件化嵌入式软 件设计验证原型工具T-CBESD(Tool f0r Component—based Embedded Software Designs)进行了资源及能耗等非功能 性质验证功能的扩展设计一与_实现,包括:资源接口自动机和能耗接口自动机模型的输入输出接口设计、UML顺序图模 型的预处理、带非功能语义信息的组合系统状态空间数据结构的设计、非实时资源使用性质与实时相关能量消耗特征 验证算法的实现,以及一个通信构件组合系统的实例应用分析。 关键词嵌入式软件设计,非功能性质验证,构件化设计,软件验证工具,接口自动机 Tool Implementation of Non-functional Verification for Component-based Embedded Software Designs XU Bing-feng HU Jun ’。CAO Dong HUANG Zhi—qiu GUO Li-juan ZHANG Jian (College of Information Science and Technology,Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China) (College of Automation Engineering,Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China)。 (State Key Laboratory for Novel Software Technology,Nanjing University,Nanjing 210093,China)0 Abstract Non-functional properties of the embedded software system are considered as one of the important features for the high reliability assurance of whole system.Traditional reliability methods in embedded computing domain mostly concern the functional implementation and testing phrase,without effective tools supporting the analysis and verification of the system designs,especially for the non-functional properties.In this paper,a prototype T-CBESD(Tool for Compo— nent—_Based Embedded Software Designs)was extended with analysis and verification capabilities considering both of re—- source utilization and energy consumption properties,which include the input/output mechanisms for resource interface automata and energy automata respectively,the pre-translation from a UML sequence diagram to a set of message event sequences,the state space data structure designs with non-functional semantics,the implementation issues of several a— nalysis and verification algorithms for resource and energy consumption properties,and an example of a component- based system design analysis. Keywords Embedded software design,Non-functional property verification,Component-based design,Software verifi— cation tool,Interface automata 嵌入式计算系统已经广泛地应用于生活中的各个领域, 如交通、能源、医疗、控制、通信、军事等。近年来随着计算机 硬件性能的不断提高,嵌入式系统中软件的规模和复杂性不 断增加,使软件对整个系统的影响逐渐占据了统治地位。关 键系统中的嵌入式软件失效将会导致生命与财产的重大损 失。与一般软件系统只考虑功能特征相比,嵌入式软件必须 同时还要满足其在非功能方面的性质要求(如:实时性、系统 个研究热点[1 ]。目前工业界常用的嵌入式软件测试和调试 方法(如:在处理器中嵌入ICE功能、调试代理软件、JTAG模 拟等)主要用于检查系统功能性质;同时,从软件工程角度来 看,这些方法都是在系统的开发中后期使用,而在嵌入式软件 设计与分析的前期还缺乏有效的方法和工具来对系统设计的 非功能性质进行分析与验证。 本文基于接口自动机模型对构件化嵌入式软件设计 (Component-Based Embedded Software Designs,CBESD)的 资源的可使用性、能量消耗特征等)。复杂嵌入式软件中各 类非功能属性的分析与验证已成为当前嵌入式计算领域的一 分析与验证方法展开进一步研究,对一个原型工具T_ lESD 到稿日期:2009—09—04返修日期:2009—11—27 本文受航空基金(2007ZD52043),教育部博士点基金(20070287052)项目资助。 军(1973一), 徐丙凤(1986一),女,硕士生,CCF学生会员,主要研究方向为软件工程、嵌入式软件建模与分析,E-mail:xbfnuaa@yahoo.en;胡男,副教授,CCF会员,主要研究方向为软件分析与验证、嵌入式系统、形式化方法;曹CCF学生会员,主要研究方向为软件工程、UML建模与分析;张东(1972--),男,副研究员,主要研究方向为复杂嵌入式 系统、航空控制工程、软件工程;黄志球(1965一),男,教授,博士生导师,CCF高级会员,主要研究方向为软件工程;郭丽娟(1986一),女,硕士生, 剑(1985一),男,硕士生,CCF学生会员,主要研究方向为嵌入式系统、多核计 算。 ・ 156 ・ (a Tool for CBESD)_5 进行了系统资源和能耗等非功能性质 验证方面的扩展。T-CBESD是我们设计的一个基于Eclipse 在模型设计抽象层次上,我们主要关心的问题包括:整体行为 的资源可满足性,即在给定的资源约束条件下,组合系统中所 开放平台的构件化嵌入式软件设计分析与验证工具,在相关 工作[5 中已完成了基于场景式规约的系统非实时以及实时行 为分析与验证功能部分的实现。本文工作则主要是进一步完 有的交互行为是否都满足资源限制;指定行为的资源可满足 性,即给定资源约束,系统某个重要交互行为是否满足限制。 资源接口自动机模型的形式定义如下。 定义1一个资源接口自动机是一个多元组:P一(Vp, AP,FP,WP,PP),其中: 成对系统非实时资源使用性质以及与时间相关的能耗性质这 两方面的分析与验证功能的实现,使得T-CBESD的验证框 架更为完整。工具最终目的是可以应用于构件化嵌入式软件 开发的设计建模阶段;不仅可以对设计者所关心的关键功能 性质进行验证,同时也可以对重要的系统资源以及与能耗相 关的非功能性质进行严格形式化分析和验证,从而提高系统 1) 是有穷的状态集,每一个状态 ∈Vp,且P的初始 状态表示为 ; 2)AP是一个有穷的动作集,包括Input,Output和Inter— nal 3种动作集合,即Av—A UA UA ,且A},Ao和A'd互 可靠性的可信度。 不相交; 本文第1节给出了针对系统设计的资源以及能耗验证的 3)FP是一个有穷的映射集,Fp一( , ,…, )(K为 理论基础,包括:描述系统动态行为的资源以及能耗接口自动 正整数,表示系统中可使用资源的种类数);其中每一个映射 机模型、基于场景的系统规约描述模型以及形式化分析与验 : R U{0}是将VrP中任意一个状态都映射为一个非 证算法等;第2节中给出了对T-CBESD扩展非功能性质验证 负整数。用FP( )表示有序集( (vi), ( ),…, ( )>; 模块的基本设计与实现思想,包括:资源及能耗接口自动机模 4) 是一个有穷集,每一元素形如Wi一{(vl,FP( ))『 型的输入输出接口设计、状态空间数据接口设计、基于场景的 Vi∈Vp},简记为 一(Vp,F尸( )),其中 一{( ,r,FP 系统规约模型的输入预处理、具体验证算法的设计与实现等; ( ))I ∈ ); 第3节给出了应用实例;第4节给出了相关研究工作;最后对 5)rP是转换集,r尸 ×AP×Wv。 本文工作的意义以及进~步的工作进行了简要讨论。 称w 中的每一个 为一个资源状态,有序数对集Fp一 1 理论基础 ( , ,…, )就是状态"Oi上的资源特征向量。 我们使用资源接口自动机网络(RIA-Networks)作为构 软件工程中的构件化设计方法学通过复用和组合软件模 件化嵌入式软件系统中带资源约束信息的交互行为模型。系 块来构造系统,从而提高系统开发效率和可靠性。通常,一个 统中每一个构件的资源使用行为使用一个相应的资源接口自 复杂的嵌人式系统由多个计算子系统构成,其软件系统也具 动机来表示,整体行为通过构件接口之间的共享动作进行同 有较高的构件化特征,因此,构件化的设计已成为解决嵌入式 步组合。其形式定义如下。 软件设计复杂性问题的一种手段。与此同时,构件接口之间 定义2 RIA-Networks是一个二元组N一(Q,Z),其中: 的交互行为场景也成为体现系统行为复杂性的一个重要方 1)Q一{P ,Pz,…, )为可组合的自动机集; 面。 2)Z一{shared(Pi,Pf)l 1≤ , ≤ ,i=/=j)为所有的共享动 与一般软件系统相比较,嵌入式软件在系统可利用资源 作集,其中任何Pl和P 的共享动作集为shared(P ,PJ)一 方面受到严格约束,使得系统设计开发过程中需要对非功能 A NAp.一(A NAb.)U(Ab n )(1≤ , ≤ , ≠ )。 性质进行合理有效的表达和检验。具体地,在构件化嵌入式 RIA-Networks的状态集、动作集等定义如下。 系统的设计方法中,人们希望可以通过构件的接口来提供与 定义3设N一(Q,Z)是一个RIA-Networks,其中Q一 资源相关的信息,并且能够使用这些资源信息对系统行为进 {P1,P ”, ),且P 一(Vp ,Av , ,Fp..)(1≤ ≤ ),则 行非功能性质方面的分析和检查。此外,由于许多嵌入式系 N中的组合状态集和动作集定义如下: 统都是使用有限能源为系统供电,使得能量成为一类特殊的 1)N的每一个不带资源向量的组合状态都形如 一( , 资源消耗。从本质上看,能量消耗与系统运行时间紧密联系。 vz,…, ),其中,V/∈ .,1≤ ≤ 。组合状态的集合为 一 运行时间越长,能量消耗就越多;并且随着时间的推移,系统 Vp  ̄Vp,×…× ,其中,无资源向量的初始组合状态为 中可使用能量逐渐减少,属于不可回收的资源。因此,需要对 谢 ( ‘, ,…, ); 非实时资源使用相关性质以及与时间相关能耗性质的分析与 2)N的每一个资源组合状态都形如w一( ,FN( )),其 检验方法分别进行研究。 1.1资源接口自动机模型 中,F ( )是一个资源向量标记< ( ), ( ),…, ( )), 接口自动机(Interface Automata,IA)[ ]是用来刻画软 对于每一个i(1≤ ≤K),有A( )一∑产n ( );初始的组 件构件接口交互行为时序特征的一种形式化语言。它描述了 合状态为 舟n一( ,FN( ”));N中所有的资源组合状态 个构件被使用时其对环境的输入假设和输出保证。资源接 集记为WN; 一口自动机(Resource Interface Automata,RIA)_8]对接口自动 3)N的动作集为A 一A UAo UAfj,其中,输入动作集 机模型进行了系统资源语义信息的扩展。考虑到嵌入式系统 为A 一(U Ab,)/z,输出动作集为AU一(U Ao,)/z,内 中常见的资源如:内存、消息队列、缓冲区、传感器以及感应器 部动作集为A;5一(U A} )UZ。 等都具有可量化、独占使用以及可回收再使用等特征,在RIA 定义4 N一(Q,Z)是一个RIA-Networks,其中Q= 模型中引入了资源特征向量来描述构件接口在状态变化过程 {户 ,乡2,…,P },Pi一( , ,FPf, , )(1≤ ); 一 中对资源使用的数量以及资源动态使用归还的特征。目前, ( ,F ( ))和w =( ,FN( ))是N中两个不同资源的组合 ・ 1 57 ・ 状态,其中, =(vl,v2,…, ) :( , ,…, );FN( ) 与FⅣ(I,)是相应的资源向量标记。当满足以下条件之一时, 系统可以通过动作a从状态面到达状态 ,用 示: 行为等的形式定义,详细内容见参考文献[9,10]。 1.3 基于场景的交互行为规约 ;, 来表 在原型工具T_CBESD中主要使用UML的顺序图模型 及其扩展形式的交互概观图模型[1 ]来描述系统设计中的场 景式交互行为规约说明。通常,一个相对独立的系统功能模 1)对于一个动作口 Z,在Pl中存在一个转换(wk,a, Wk )∈Fp ,其中 一( ,Fp (vk)),Wk 一(vk ,Fp (vk )), 块建模为一个场景描述;这个场景表达了参与其中的各构件 之间如何进行交互的特征。在相关工作中 ̄13,14]我们详细讨 论了不同种类的场景式规约,本文以下只简要给出基本顺序 图模型行为的形式化定义。 定义6一个顺序图是五元组D:(C,E,M,L, ),其 中: 且对于任何其它的l(1≠七,l≤z≤ ),有Wi:Wl ; 2)对于一个动作aE shared(只,PJ)(1≤ , ≤ , ≠ ),在 只中存在一个转换( ,n!, )∈rP.(口!表示n是输出动 作);同时,在 中存在一个转换( ,口?,wj )∈rP.(口?表示口 是输入动作),且对于任何的愚(忌≠ ,J,1≤愚≤7z)有wk一 。 N为一个资源接口自动机(RIA-Networks),N的一个行 1)C:有穷的构件集; 为就是一个资源状态转换序列,形如 __兰I÷… ,其满足:1) 一 ;2)对于每一个i(0≤ ≤m),有(wl, a{,wl十1)∈FN。 1.2能耗接口自动机模型 软件系统的能耗本质上是运行过程中所依赖的底层物理 部件的能量消耗,通常的能耗分析都基于底层特定的硬件架 构。由于人们最终关心的是当嵌入式软件完成某功能时的能 耗性质,因此我们希望可以从设计模型这个抽象层次来描述、 分析和检验系统的一些重要能耗性质,而不用涉及底层种类 繁多的硬件平台信息 能耗接口自动机模型(Energy Inter— face Automata,EIA)_9 。]在实时接口自动机(Real—Time In— terfaca Automata,RTIA)[”]的基础上进行了系统能量消耗语 义的扩展。考虑到目前嵌人式系统中的许多硬件设备都具备 多种能耗运行模式(如:忙碌、空闲、休眠等),则从模型设计层 面上可以认为嵌入式软件在不同的系统运行状态上能够具有 不同的单位时间能量消耗率。因此,在EIA模型中引入了状 态功耗因子来描述系统状态变化过程中的能量消耗特征。在 本文工作中主要关心能耗的边界值分析与验证问题,包括:最 少能耗计算,即系统到达某个特定状态时至少需要消耗多少 能量;最大能耗验证,即在给定的时间约束下,到达某个特定 状态时,是否超过预设的能耗限制。 能耗接口自动机模型的形式定义如下。 定义5一个能耗接口自动机是一个五元组:P一( , ,AP, ,rP),其中: 1) 是有穷的状态集,每一个状态vE ,且P的初始 状态表示为 ∈W; 2)FP是一个映射(函数):W卜R ; 3)Ae为有穷的动作集合,包括输入、输出和内部动作集: , 和A ,且三者交集为空; 4) 为有穷的时间区间集,每个时间区间都形如 , ], 其中 ,Y为非负整数,且z≤ , ≠o。; 5)rP Yp×A ×/p×W为有穷的转换集,其中每一个 元素都形如( ,a ,[五,yi3, )。 上述定义中的映射(函数)Fv将EIA中的每一个状态 映射到正实数集合中的某一个数e,即: ( )一e,eER ,其 语义为每一个状态都赋予一个相应的功耗因子(单位时间能 量消耗率)。如上所述,每个状态的功耗因子可以是不一样 的。 与RIA类似,可以给出EIA-Networks的组合状态、组合 ・ 】58・ 2)E:有穷的事件集; 3)M:有穷的消息集;对每一个消息 ∈M,分别使用州 和m?来表示消息m的发送和接收事件; 4)L:E C是一个标记函数,将每一个事件eEE分配给 一个构件L(e)∈C; 5)V:元素形式为(P, )的有穷集,其中P, ∈E,且P≠ , 表示D中的每一个可视序列对。 任意一个事件eEE,都对应一个消息mEM的发送和接 收事件,即r(P)一m!或者r(e)=m?。顺序图刻画了系统运 行的一个场景,其运行过程就表现为一个消息事件的序列 毋矸… ,其中事件ei+ 在事件ei之后发生(1≤i ̄m--1)。此 外,由于在顺序图中可能存在不确定的接收消息的先后次序, 因此一个顺序图场景可能会包含多个不同的消息事件序列。 在顺序图形式化定义的基础上,可以通过附加消息事件 的时间标记和时间布尔表达式来进一步描述系统实时行为的 时间约束需求,其中布尔表达式形如CO(te 一re' )-p。C (re 一 1)+…+ ( 一 )~6; , 0, 1, 1,…, 表示每个消 息事件发生时的时间值,co,C 一,Cn,b为实数,且6≠oo, ~∈{≤,<}。 1.4模型分析与验证算法 基于以上给出的资源接口自动机模型、能耗接口自动机 模型以及交互场景规约模型,在相关工作[9.1o]中分别针对非 实时资源使用以及实时相关能量消耗两方面的问题进行了严 格形式化定义和分析,设计了相关的验证算法。算法的基本 思想是对带有不同语义信息的系统组合行为的状态空间进行 搜索;将每一个可能的系统行为与基于场景的交互规约进行 比较,判断设计模型是否满足各类场景式系统功能规约;然后 对符合要求的系统行为的资源使用以及能量消耗特征进行进 一步的分析与验证。例如,对于系统整体行为的资源使用可 满足性问题,其相应的抽象验证算法框架如图1所示。 图1检验资源可满足性算法 此外,由于能耗自动机模型是建立在实时自动机模型的 基础上,因此,对于系统能耗方面的验证算法,还需要考虑由 于时间与能耗语义引入所带来的将连续时间进行整型化处理 的方法,以及带时间约束与能耗率的投影路径的建立。图2 为EIA-Network的最少能耗路径计算的抽象算法框架。其 中所提到的投影路径则是为了处理状态空间中因环路的出现 CBESD中与非功能性质相关的模型分析与验证的基 本处理流程如图3所示。主要的逻辑处理框架包括:输入输 出接口;UML顺序图模型的预处理;自动机组合模型的建 立;资源相关的分析与验证算法的实现;能耗相关的分析与验 证算法的实现等。以下分别给出详细说明。 而导致所检验的系统行为路径可能是无穷长度的问题。 图2搜索最少能耗路径算法 2非功能性质验证的工具实现 基于以上的理论基础,本文对原型工具T_CBESD进行 了非功能性质分析方面的扩展,设计并实现了非实时相关资 源性质以及实时相关能量消耗这两方面特征的验证功能。其 目的是使得在构件化嵌入式软件开发的设计建模阶段,不仅 可以对设计者所关心的关键功能性质进行验证,也可以对重 要的系统资源与能耗相关的非功能性质进行严格形式化的分 析和验证,从而提高系统可靠性的可信度。T-CBESD的基本 设计原则包括两个方面: 图3 T-CBESD的模型分析与验证流程框图 1)跨平台运行、易扩展:即工具应该尽可能在多种不同运 行平台上运行。因此,选择了面向对象程序设计语言Java作 为工具的实现语言。Java具有良好的跨平台运行特征以及丰 富的类库资源,并可以使用面向对象程序设计思想中的类继 承等方法对工具进行方便可靠的扩展。 2)易使用、易维护:用户可以比较方便地使用工具,或进 行调整;因此,选择了工业界广泛使用的开放集成开发环境 Eclipse作为工具的运行平台,即使用Eclipse的插件(plug- in)技术来设计和开发。用户可以很容易在Eclipse环境中通 过插件技术来安装、配置和使用工具;同时,在T-CBESD的 输入输出接口中所使用的XML语言在Java和Eclipse环境 中也得到了完全的支持。 2.1输入输出接口设计 T-CBESD的输入输出都是以XML文件形式来描述系 统设计模型、系统需求规约以及验证结果信息等。其中,工具 的输入包括:描述系统设计的接口自动机模型的XML文件 和描述系统规约的消息交互序列的XML文件;输出则包括: 描述系统组合行为的接口自动机组合模型的XML文件和包 含验证结果信息的XML文件。这里,最核心的部分是资源 与能耗接口自动机模型的XML文件格式的设计。在图4中 给出了一个资源接口自动机模型的XML文件示例说明;通 过XML的树形标签格式,分别定义了自动机名、自动机个数 (如果这是一个组合自动机)、资源种类、资源名称以及数量、 状态个数、状态名、后继状态名、所需资源的种类以及数量、转 换个数、转换名、转换的出发和到达状态名、转换的出发和到 达状态所需的资源种类和数量、动作个数、动作名、动作类型 等数据信息,用来完整准确地保存接口自动机模型的语义信 息。此外,对于扩展的能耗接口自动机模型,其相应的XML 文件格式定义中还包含与动作相关联的时间区间约束标记以 及能耗标记。 Ivernon 1 0”encodil1g=1,IF.8岬 <automata> <a ̄natalnt'or r ̄mber=…1’> <I.-自动机个聋}_> <namc>RcAutomata<Aname> <f一自动机名—> </automataInfct'> <rmmbe ̄Typelnforroamber=”1’.) <!一资源信息. Type><f一自动机资源种类髌 <^哪bcrO oLⅡ 1 pcIl br> <sumOfSotrceInforr, ̄a'nber= 1’ <f一资源和信思_) <stmlOfgotr ̄ ̄>[t4 ̄Im 4]</stmaOfSotn ̄e> c!一资源的种类以及个数-> </sumOtSotare ̄lr/tor> <stateslnfornumber=”6 <L.自动机状态信l窟.一 <slal ̄> <rmmc>s0</name <f..自动机名. <islnidaI)tme‘ d aI> <!一是否为初始状奄_) <ncxtSta ̄s>sl rmxtStatcs> <!一后继状态-_> <soure ̄Nced>[t0】,【m0]</source.Need> !一所需资源的种类和数量-> </state> <state><,state> </sta ̄slnfor> <tran ̄affe ̄m.nber=‘ *) <!一转换的信息 <transiiton) <from>s0</from> <!一出发状态的状态各 <to>sl to> <!~到达状态的状态备 <action>a?</acfon> (f一转换名- <sotmmOtFromState>[t0 ̄【m0】栅oeOfF枷s眦><!一出发状态资j幕霸#-) <sota ̄cOfToStatc>It41,【m 2】 cC 扭 > <!_到达状态资薄祷求H> </transition <u'an ̄fio.><fa'amiifon (^rar 6On蝴 Ifbr> <!一Inn吐Ac6∞infatuationCt ̄exltomata- <f一输入动作信. (_唧ⅫAc nmnber=”3 <I一输入动作个热 (_啊 c6cn a u 妇> q一输入动作动作名一> ‘h’p Ac ∞><血 ∞> <^nD 枷0nhIfh <I -outlx.A ̄fio.informationofautomata--) <!一输出动作信.电_) aⅢDmAc a l1fbr number=…2) <!一输出动作个热 ‘a 1血 6∞>d oI t ∞> c!—俞出动作动作备.> a 1nAc ∞ e a均x血 ∞> (^1nDmAc6anInfbr’ (!一irm:n a |nfbnl1a6锄ofautomata --> (!一内部动作信尊-) <imemalAcfionInfornumber一…0) <1一内部动作个数 <I..内部动作动作各-) 图4资源接口自动机模型的XML文件示例 在上述定义的XML文件基础上,就可以使用Java类库 中的IX)M(文档对象模型)方法很方便地对自动机模型进行 解析及生成。例如,在T-CBESD中设计了parseReXmlDocu— ment()和parseEnXmlDocument()两个类方法来分别对资源 接口自动机模型Ⅺ儿文件和能耗接口自动机XML文件进 行解析,并根据ReAutomata,ReTransition以及ReState等类 定义在内存空间创建相应的接口自动机对象。其中,资源接 ・ 】59 ・ 口自动机的核心类数据结构ReAutomata,ReTrasition以及 2.3组合模型状态空间的建立 ReState的定义如图5所示。 class ReAutoma ̄a{ s廿- 咖e, 自动机名 础Ⅵ 打 nm 蛔删 6呻 灯. 输A动作集 Pubk vec锄f(s廿mg 伽 山 灯,//输出动作集 衄 Vector(s廿n > 啪 由nvec¨,//内部动作集 础Vector<ReState> ̄teVector, //保存自动机状态集台 Vectm<ReTransi ̄n)ffans ̄onVector,//保存自动机转抉集合 mtntanberOP ̄cvsce pe, //定义资 接口自动机的资源的种类 叫 Vect ̄ ̄ceNode>sumOPSource;//定义资薄总札资源名称以及对应的数量 ) publi ̄class ReTrm ̄ition{ H Stringac由nNaIlle, //转捷名 pI Striqgfrom, 出发结点 洲 String幻, ∥到达结点 蚍Booleanm ̄mtAcfim, 甜入动作 硼 BooleanoutputAc ̄on, //输出动作 硼b Boolean嗽rIalAcb。II, //内部动作 Vectc ̄<So ̄ ̄eNode s伽 0册 lsh , 描述出发状志所需资霸l的数量 Vector<Sot ̄eNode>mmceofros ̄te。 描述到达状态所需的资禄数量 } nlH cla鳞ReS酏{ s mg咖e, //状态的名字 叫 Booleanislniml, 标志该状态是否为初始状态 叫 vec虹(s们 e岫bkd 由Ils,优己录由该状态出发的所有转换thction名 ve 时<ReState>碓 m Veah, 保存该状态的下一状态 vec幻f<sa叫 )so ̄ceOfNeed; //定义所需资 酩称以及对应的数量 图5 RIA的ReAutomata,ReTransition和ReState类定义 2.2顺序图模型的输入预处理 虽然T-CBESD的输入输出定义为标准XML文档格式, 但在工具中加入了从uML建模环境Rational Rose的顺序图 模型到T_CIjESD的XML输入文件(描述消息交互序列集) 的自动转换处理。其原因有二: 一,现在工业界已存在较为成熟的图形化建模工具,可以 快速方便地绘制UML模型图,可以利用这些工具作为T_ CBESD的前端,而不用在T-CBESD中重新设计复杂的用户 接口来支持图形化建模设计。 二,在1.3节中提到,一个顺序图场景可能会包含多个不 同的消息事件序列;显然,如果让系统设计与分析人员从每一 个顺序图中手动地生成所有可能的消息事件序列,并不是件 容易的事情。因此,需要提供一种从顺序图模型自动化生成 所有可能的消息事件集合的方法。 图6 UML顺序图消息序列抽取流程 在Rational Rose中所生成的顺序图模型文件是MDL格 式,需要先转换成XML格式文件,然后进行相应消息序列的 抽取。其处理过程如图6所示,首先通过在Rational Rose中 加载XMI插件将MDL格式的文件转换为XML格式;然后 对XML文件进行解析,建立文档解析树,提取消息事件节 点,并根据顺序图中的事件发生先后顺序构造一个相应的有 向无环图(在此,定义了顺序图的参加者类(Element Class)、 消息类(Message Class)以及结点类(Node Class)用于图的构 造);最后设计了一个拓扑排序算法,对该有向图中的消息事 件节点进行拓扑排序,从而得到一个顺序图中所有可能的消 息事件序列的集合。 ・ 】6O・ 接口自动机组合过程与一般自动机组合的语义存在不同 之处。在两个接口自动机组合的状态空间中,有可能存在两 个构件接口之间交互不同步的所谓的“非法状态”,在应用验 证算法之前必须将这些非法状态找出来并从状态空间中去 掉。文献E73中给出了一个识别非法状态集合的基于不动点 (Fixpoint)的抽象算法框架,其基本思想是先构造出所有可能 的组合状态的空间,然后逆向搜索非法状态集。在T-CI狐SD 的实现中则采用正向的合法状态集合构造方法,其好处是避 免了需要首先生成所有的状态空间。在资源接口自动机组合 的过程中,还需考虑两个状态所需要的资源的种类以及数量 的计算。图7给出了工具中资源接口自动机组合算法流程 图。此外,在能耗接口自动机组合过程中需要考虑时间约束 以及能耗率的计算。 图7资源接口自动机组合算法流程图 2.4资源验证算法的实现 在建立以上的接口自动机组合状态空间的基础上,T_ CBESD中实现了包括资源可满足性验证以及特定功能行为 的资源可满足性验证算法。图8给出了工具中资源验证模块 的类图框架,主要包括两大部分:一部分是自动机模型核心 类,包括ReAutomata class,ReTransition Class,ReState Class 以及组合模型的ReComposition Class;另一部分则是与验证 算法相关的类,包括ReSatisfiabilityChecking Class,FucSpe- SatisChecking Class,以及辅助类ReActionString Class,Re— AdjacentMatrix Class,ReTransitionNode Class。 图8 T-CBESD中资源验证模块的类图 在FucSpeSatisChecking类的实现过程中,一个关键问题 是:当在系统组合状态空间中搜索与UML顺序图交互序列 所对应的投影路径时,有可能出现一个满足条件的投影路径 其一部分出现在某个环内部,而另一部分却出现在此环路的 外部路径上的情形[9,1o]。如果只采用经典的深度优先遍历或 接收输入 组合 广度优先遍历方法对组合状态空间进行搜索判定,将会遗漏 这种情况。为此,设计了动作名表(ReActionStrinN Class)和邻 接矩阵(ReAdjacentMatrix Class)。其中,动作名表是以RIA的 动作名作为表头向量,并以执行该动作名的转换作为表结点的 !塑墨塑墨堡型! 能耗接13自动机组合 创建动作名表1 f分解消息序列为消息名教组l l创建邻接炬阵 一张哈希表,其定义如图9所示(注:未包含类方法说明)。 图9动作名表(ReActionString Class)的定义 基本思想为:对于所给出的一个消息交互序列,先根据消 息名从动作名表中依次取出与消息名所对应的表头结点以及 表结点,构成一张与消息序列中消息次序对应的消息名表。 然后遍历这张消息名表来搜索投影路径,搜索过程中需要根 据邻接矩阵来判断两个结点之间是否可达。资源验证算法执 行的流程框架如图1O所示。 ................ Jf .......一 资源接口自动机组合 (资 可满足性验证) {无资源使用非法状态} 火f存在资源使用非法状态) 创建动作名表l f分解消忠序列为消忠名数组1一 输入功能序列 f创建邻接矩阵 由消息数组的次序从动作名表中取元素构造新表 根据新动作名表进行图搜索 搜索出所有的投影路径 从集合中筛选出无资源使用非法状态的投影路径 镰 ——厂 l 验证结束卜————————— 显示验证结果 图1O资源验证活动图 2.5能耗验证算法的实现 在能耗验证算法的实现中,需要首先搜索出所有与给定 的消息序列对应的投影路径。在此基础上对所有搜索到的投 影路径进行筛选,找出能耗最大值路径以及能耗最小值路径。 能耗验证模块的类图结构与资源验证模块的类图结构类似, 验证过程实现的活动图如图1l所示。图12则给出了能耗验 证算法中搜索所有投影路径的具体算法。 由消息数组的次序从动作名表中取元素构造斯表 图11能耗验证活动图 N为消息序列中消息个数 数组A(A为Vcc自口r(Ac 讲 类型琢存消息序列中的动作名在动作名表中所对应的元 鼓组Tfr为Tr鲫 d蛐类型)保存表头元隶 b】的第一爪表结 O《J寸 , i=啦 repe疵 N=l then保存当前动作名对应的所有转抽re ̄c; ifi=N-I 表明搜索到一条与消息序列对应的投影路程 then将搜索到的路径片段连接为完整的搜索路径井继续拽下一条路径 elsebe豳 repeat ifi=0 then保存该转换的出发结点 repesg ifT[il 卸 onT0,1Ii+l】 璐姗r锄之间无合法可达路径 thenⅡi+l】: T l】rmxtNo ̄, ebehem. ix ̄h[i]保存该合法可达路径 break; end untB Tf_+l1;null T『 l1;null then be豳 将已保存的部分路径删除 T【|+l】=A【l+】1的第一个表结点 T[i】:=Till nextNode, ifi>0 thell i-- end elsehe珈 H: ifi=N-I then将搜索到的路径片段连接为完整的搜索路径继续找下一条路径 e nd untilT[i1=lILIII T『j】=nullthen bre出 end nn词l> 图12能耗验证实现算法 3实例应用 T-CBESD的设计开发和运行环境是:Windows XP操作 系统平台,Eclipse SDK 3.4.0,Java SDK 1.6,所引用的MDL 文件是由Rational Rose 2003生成的。本节中分别给出 CBESD的与时间无关的资源性质验证和与时间相关的能耗 性质验证两方面的实例应用说明。 首先,对文献[7]中所给出的两个通信构件接口自动机模 型增加资源使用语义信息的描述,如图13所示。图13(a)的 接口自动机模型描述了构件Communication与环境交互的行 为特征:当msg被外部调用时,构件将先调用send方法与其 他的通信信道构件交互,并获得从信道返回的ack;然后向调 用者返回通信成功:ok;若连续两次send动作都收到nack,则 返回通信失败:fail。Communication一共拥有两类资源,资源 名称分别为r1和r2,r1和r2的总数量都为4,用资源向量描 述为<Jr1,4],[r2,4]>。状态s1上的资源向量([rl,4],I-r2, 2]>表示在状态s1上需要4个r1类资源和2个r2类资源;图 ・ 】6] ・ 13(h)的接口自动机模型描述了一个Communication构件的 使用者:User的行为特征,User拥有r1和r3两类资源,总数 量分别为2和3,用资源向量描述为<[r1,2],Er3,3]>;图13 (c)的顺序图模型则给出了这两个构件的组合系统的一个交 互行为规约说明。 一 上 f销 L— — r1.0]lIr2 ,>< l。l1,D——— 鲢—_j2。I】> ‘IrJ,o斟j,t rz, ̄ Pl n+ 1 \、 口l^1,[f2,sp // Co)U ̄r的资器接口自动机摸型 (c)组合系统的功能规约 图13通信构件资源接口自动机模型及系统功能规约 在T-CBESD中所构造的构件Communication和User的 合法组合状态空间(去除了非法状态集)包括6个组合状态: (sOI sO),(sll s1),(s2l s1),(s3I s1),(s4l s1),(s51 s1)。组合 系统所拥有的资源种类以及数量应该为两个资源接口自动机 资源种类与数量的叠加,用资源向量描述为<Frl,6],Jr2,4], Er3,3]>。基于该组合空间进行资源方面的验证,首先进行资 源可满足性验证,验证结果显示有一个资源使用非法状态: s4i s1,其资源需求量为[rl,2],I-r2,5],Jr3,3]。s4【s1状态对 资源r2的需求量是5,而组合系统中r2资源的总数量为4,判 定该状态不满足资源限制。因此,从整体行为来观察,系统不 满足资源约束。其次,挑选特定功能行为来进行资源使用合 法性验证。示例中的特定功能使用图13(c)UML顺序图所 描述的消息交互序列来描述。验证结果显示在组合状态空间 中确实存在一条与该功能序列相符合的投影路径,但该路径 中仍然存在资源使用非法状态。这意味着该交互行为在组合 系统中是不满足资源限制的,需要设计者进行系统设计模型 修改。图14为T_CBESD的资源验证模块的界面。界面左边 部分为操作区,主要提供组合、查看、工具输入、验证类型等功 能选择,界面右边为分析与验证过程中工具所反馈的数据信 息。 图14 T-CBESD资源验证界面 图15中给出了一个上述通信构件接口自动机的带能耗 信息的版本,其中Communication和User的每一条转换边上 都添加了一个时间区间标记,用以表达系统状态转换的时间 约束需求;并且在每一状态上都添加了一个浮点数,用以标记 状态上的能量消耗率。例如,状态sO上的1.2表示在该状态 上的能耗消耗率为1.2个单位。s2一s3上的时间标记[1,2] 表示构件在s2上至少停留1个时间单位,至多停留2个时间 单位,即从状态s2到状态s3的转换必须在此时间区间发 生;其他依次类推。经过T-CBESD中能耗接口自动机的组 合构造,去除掉交互行为的非法状态集以及与时间相关的 非法状态集之后,可以得到22个带时间标记的合法组合 状态。 ・ 162 ・ ok fail (b)uscr的能耗接口自动机模型 图15通信构件能耗接口自动机模型 根据图13(c)所给出的功能规约,T_CI;ESD在验证的过 程中,首先搜索出符合非实时功能行为的路径一共有19条。 然后对这19条路径当中的能耗值进行计算比较。验证结果 显示,其中能耗最大的为45.2,对应的投影路径为sOIOS(O O) 2.7-一>sl}sl(0 0)5.4-->s2l s1(O 2)3.9一>s3f s1(O 4)5.2_-> s4I s1(O 7)5.5-->s5l s1(O 9)4.6,能耗值最小的为29.1,对应 的投影路径为s0 lsO(O 0)2.7-->sl ls1(O 0)5.4->s2 I sl(0 1) 3.9-->s3 I sl(0 3)5.2-->S4 lsl(0 5)5.5一>S5 lsl(0 9)4.6。 图16所示为T-CBESD的能耗验证模块插件的界面 类 似地,界面左边部分为操作区,主要提供组合、查看、工具输 入、验证类型等功能选择,界面右边部分为分析与验证过程中 工具所反馈的数据信息。 图16 T-CBESD能耗验证界面 4相关研究工作 与接口自动机相关的工具包括Chic[ ],SPIN,UPP AL 和OpenEmbeDD。Chic是第一个基于接口自动机理论的原 型工具。它是作为Jbuilder集成环境下的一个插件模块来设 计开发的,其目的只是用于对相关理论工作的一个初步验证。 Chic中包括了接口自动机基本模型的一个扩展模型Re— source Intedace(RI)_1。]的实现,但RI模型中只是通过在非实 时IA的状态上附加整型数值来表达状态的资源消耗数量, 语义描述能力不够;在后续的一个工具Ticc/lz,ls]中已经没有 RI的相关工作。目前Chic已经被Ticc所替代。Ticc的理论 基础是接口自动机的一个最新扩展版本:Sociable Inter- face[1 ,其基本思想仍然是检验构件接口组合中非实时以及 实时交互行为是否兼容。Ticc中并未包括资源和能耗等非功 能性质的验证。Ptolemy II[20,21]中也实现了基本接I:I自动机 模型的组合兼容性分析工作,不过Ptolemy II,一个包含了多 种不同工具集的混成系统建模、分析、合成和代码生成的开发 环境。此外,SPIN/ ]是一个经典的分布式系统模型检验工 具。系统设计模型是否满足规约性质是通过组合系统和时序 公式相对应的Buchi自动机进行同步积,然后检验其结果是 否为空。目前SPIN在工业界硬件设计以及通信协议规约的 验证领域得到了较广泛的应用,但对同时具有功能和非功能 需求的嵌入式软件验证领域,SPIN并未提供相应的支持。 UPPAAL[2。。‘]是一个基于时间自动机理论[25]的实时系统仿 真和验证工具。其基本思想是将实时系统的行为建模为一个 实时自动机网络,并进行了数据类型的扩展,采用时间 算 子作为系统的规约语言,主要对系统进行安全性和活性等性 dings of the Joint 8th European Software Engineering Confe- 质的检验。UPPAAL具有良好的图形化编辑和模拟功能。 rence and 9th ACM S1GS0Fvr International Symposium on the 目前,已有一些工具以UPPAAI 为核心作进一步扩展,如: Foundations of Software Engineering(ESEC/FSE 01).2001: TIMESE26,27]是以时间自动机模型验证为基础的一个工具集 109—120 环境,可以进行建模、可调度分析、系统合成以及特定平台上 [8]胡军,黄志球,曹东,等.网构软件的资源自适应性的形式化分析 与验证[J].软件学报,2008,19(5):1186—1200 的代码生成;Save IDE_2 ]则是基于构件模型SaveCCME ]所 [9]Hu J,Li X D,Zheng G L,et a1.Modeling and analysis of power 建立的一个支持构件化嵌入式系统开发的工具集,等等。 consumption for component-based embedded software[C]}f Pro— OpenEmbeDI ̄30_则是以法国INRIA为中心的欧洲多个研究 ceedings of the EUC workshops,LNCS 4097.Berlin:Springer, 机构正在构建的一个以Eclipse为开放平台的模型驱动嵌入 2006:795—804 式系统开发工具集。这是一个庞大的开源工具组合环境,可 [1O]曹东,胡军,徐丙凤.构件化嵌入式软件设计的能耗性质分析与 提供嵌入式系统设计(包括软件和硬件)、模拟、验证、合成以 验证[J].南京理工大学学报,2009,33(1):26-31 及测试等各个阶段的开发支持。 [11]Hu J,Yu X F,Zhang Y,et a1.Checking component-based am— bedded software designs for scenario-based timing specification 结束语本文对一个构件化嵌入式软件设计分析与验证 [c]∥Proceedings of the EUC 2005,LNCS 3824.Berlin:Spirnger, 的原型工具T-CBESD进行了非功能性质验证方面的扩展, 2005:395—404 包括:系统非实时资源使用性质以及与时间相关的能耗性质 [12]0MG.UML 2.0 Superstructure specification[OL].0MG docu— 两方面的分析与验证功能的设计与实现;使得T-CBESD的 ment ptc/05—07—04.httpt|| N .um1.org,August 2005 验证框架更为完整。论文主要内容包括:资源属性验证以及 [13]Hu J,Yu X F,Zhang Y,et a1.Scenario-based verification for 能耗属性验证的理论基础,T-CBESD的基本设计思想,工具 component-based embedded software systems[C]{}Proceedings 的输入输出接口、状态空间数据结构、验证算法等的设计与实 of 2nd embedded computing workshop(ICPP—ECO5).IEEE oCmputer Society Press,2005:240—247 现,以及应用实例分析。 [14]胡军,于笑丰,张岩,等.基于场景规约的构件式系统设计分析与 进一步的工作包括以下几个方面: 验证[J].计算机学报,2006,29(4):513—525 1)扩展工具的输入和输出接口形式 使用Rational Rose [15]Chic.http://、】ln eecs.berkeley.edu/ ̄arindam/Chic/.2006一 等图形化建模环境作为前端工具来方便用户进行系统各类接 O8—13 口自动机模型的设计。资源与能耗接口自动机与UML状态 r16]Chakrabarti A,de A1faro L,Henzinger T A,et a1.Resource In— 机的语法和语义存在不同之处,需要重新设计一个中间转换 tel'faces[C] Proceedigns of Third Intemational conference on embedded software,LNCS 2855.Berlin:Springer,2003:117—133 过程来处理。输出方面,将设计更为完整的验证结果信息 [17]Ticc.http://dvlab.cse.UCSC.edu/Tic ̄2008—05—15 XML文件格式,并考虑与软件测试技术相结合,利用验证结 r18]Adler B T,Alfaro L D,da Silva L D,et a1.Ticc:A tool for inter— 果给出的系统出错(验证失败)行为轨迹来指导生成相应的测 face compatibility and composition[R].ucsc-crl一06—01.School of 试用例。 Engineerign,University of California,Santa Cruz,2006 2)应用复杂的多构件系统设计实例,来对工具的性能进 [19]Alfaro L D,da Silva L D,Faella M,et a1.Sociable interfaces[C]∥ FR0C0S 2005:5th International Workshop on Frontiers of 行检验和提高。目前所运行的实例相对比较简单,主要目的 oCmbinign Systems,LNCS 3717.Berlin:Springer-Verlag,2005: 是为了检查实现算法的正确性,还需要在复杂多构件系统模 81—105 型情形下对算法性能作进一步的检验和改进。现在我们正在 [2O]Ptolemy.http://ptolemy.eecs.berkeley.edu/ptolemylI/index. 对某飞行控制软件系统进行模型分析和抽取工作,准备将其 Htin.2008—-02——07 作为T-CBESD的一个复杂实例验证。 [21]Cheng C P,Fristoe T,Lee E八Applide verification:The ptolemy 3)进一步完善原型工具的操作界面。目前本文的工作主 approach[R].UCB/EECS-2008—41.EECS Department,Univer— 要关注于基本的输入输出处理和核心算法的设计与实现,还 sity of California,Berkeley,2008 [22]Holzmann G J.Software model checking with SPIN[J].Journal 需要考虑工具用户界面接口设计的实用性和有效性。此外, of Advances in Computers,2005,65:78—109 我们正在整理相关的文档和源码,准备建立一个Wiki网站以 [23]UPPAAL http://www.uppaa1.corn/.2006—09—08 开放源码的形式来对工具进行维护和进一步开发。 [243 Behrmann G,David A,Larsen K G,et a1.UPPAAL 4.O[c]// Proceedings of Third Internationa1 Conference on the Quantita— 参考文献 tive Evaluation of Systems(QEST 2006).IEEE Press,2006: 125—126 -11]Lee E Cyber physical systems design challengesEC]}f Pro— ceedings of 1lth IEEE International Symposium on Object一 [253 Alur R,Dill D L.A theory of timed automata[J].Journal of Theoretical Computer Science,1994,126:183—235 riented Real-time,Distributed Computing(IS0RC 2008).2008: [26]TIMES.http://、^r、v眦timestoo1.corn/.2008—11-06 363—369 [2]Lee E A Embedded software[J].Journal of Advances in oCm— r27]Amnell T,Fersman E,Mokrushin L,et a1.TIMES:A tool for schedulability analysis and code generation of real—time systems puters,2002,56:56—97 E3]Lee E八What’s ahead for embedded software?[J].IEEE [c]∥Proceedings of Formal Modeling and Analysis of Timed Systems:First International Workshop,F0RMATS 2003, oCmputer,2000,33(9):18—26 LNCS 2791.Berlin:Springer-Verlag,2003:60—72 [4]Peled D八Software reliability methods[M].Berlin:Springer- r28]Sentilles S,Pettersson A,NystrOm D,et a1.Save_IDE_A tOO1 for Verlag,2001 design,analysis and implementation of component-based embed— [5]徐丙凤,胡军,曹东,等.T-CBESD:一个构件化嵌入式软件设计 ded systems[c]∥Proceedings of Intenrational Conference of 模型验证工具EJ].小型微型计算机系统,2009 oSftware Engineering(ICsE 2009).IEEE Press,2009:607—610 [6] faro D L,Henzinger T八Interface theories for component— 1-29]Kerholm M A,Carlson J,Fredriksson J,el a1.The SAVE ap- based design[C] {Proceedings of Embedded oSftware,First In— proach to component-hased development of vehicular systems ternational Workshop,EMSOFT 2001,LNCS 2211.Berlin: [J].Journal of System and Software,2007,80(5):655—667 Springer-Verlag,2001:148—165 [3O]INRIA.OpenEmbeDD.http://openembed&ihria.fr/home—ht— [7]A1faro D L,Henzinger T八Interface automata[c]∥Procee- m1.2008—1 O一22 ・ 163・