没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记101(2004)51-72www.elsevier.com/locate/entcs从UML序列图和状态图中提取π演算1Katerina Pokozy-Korenblat2和Corrado Priami3特伦托大学信息与电信系波沃摘要我们提出了一个自动翻译的UML规格组成的序列和状态图到π演算过程。建议翻译的中心点是两种类型的图表的连贯性。我们的案例研究的方法的可行性。保留字:进程代数,π-演算,UML,序列图,状态图,规范。1介绍统一建模语言(UML)[3]是一种用于捕获软件系统高级设计的它给出了结构化的,半形式化的,图形化的规范方法,但是这些方法对于系统的验证和确认来说还不够强大。UML为用户提供了不同种类的图,它们中的每一个都是自然的,用于描述复杂(软件)系统的不同方面。在本文中,我们限制我们的注意力只包括序列和状态图的规格。这样的选择对于指定系统的通信级别通常是足够的,并且可以被认为是处理多图UML规范的第一步1这项工作得到了FET全球计算主动计划资助的DEGAS(全球应用设计环境)项目IST-2001-32072的部分支持2电子邮件地址:pokozy@science.unitn.it3 电子邮件地址:priami@dit.unitn.it1571-0661 © 2004 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2004.09.00752 K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)51-- -−|−为了实现对UML规范的形式化分析,我们建议将其转换为进程代数的形式化符号[13]。 进程代数是用来描述系统的并发和分布式结构的基础演算.它们由几个运算符组成,例如:i)a. -描述动作的顺序组合,ii)是过程的并行组合,iii)+ 这意味着一个不确定的选择。 在这里,我们把过程代数看作是一种中间语言,UML规范可以被翻译成这种语言,以便进行下面的分析。请注意,过程代数是一种自然的形式主义,用于表示通信,这在序列图的翻译中非常重要,也用于组成模型的独立部分,这对于翻译包含多个实体的UML规范是必不可少的。此外,进程代数为性能分析提供了广泛的可能性,这对于通常由序列图指定的模型的通信密集部分从交互作用图解建立模型的综合技术在[15]中,提出了一种用着色Petri网表示协作图的方法。考虑到由状态图和交互图组成的规范,[5]和[8]中提出了一种基于状态图的翻译在这些作品中,状态被表示为过程,而转换被表示为沿着通信信道的动作然而,当我们专注于沟通层面时,这种方法就不够有效。使用消息作为翻译的基本元素会更自然在本文中,我们专注于一个基于序列图的方法,其中对象被认为是π演算进程和消息作为这些进程之间的对象的状态图用于选择出现在序列图中的消息的可行序列。请注意,我们建议的一个结果也是基于π演算的结构操作语义的UML序列图的形式语义的定义。已经提出了许多不同的方法来定义UML的形式语义,特别是序列图和电信行业消息序列图的对应部分其中一种方法生成状态图模型(例如[19],[4])。在[18]中,提出了一种关于标记转移系统和并行合成的语义在[12]中提出的进程代数方法允许组成几个消息序列图。[1]根据系统中发生的事件的偏序给出了消息序列图在[10]中提出了一种通过图转换规则和图过程来形式化协作图的方法。集成K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)5153[9]中给出的图语义允许以统一的方式与其他类型的图一起指定交互图。在[2]中提出了一种基于迹的语义。在[17]中,考虑了将序列图转换为进程代数,其中消息表示为动作。这项工作的重点是翻译一组简单的序列图,对应于单独的方案。相比之下,我们将消息表示为进程之间的通信,并专注于结构(例如分支,分配)的翻译,从而可以在单个图中表达复杂的行为。我们基于进程代数的语义的具体和强大的一面是,在获得的正式模型中,对象之间的消息以自然的通信方式呈现,这对于例如安全分析是必不可少的。但是请注意,形式语义的定义并不是我们主要关心的问题。我们现在简要地讨论目前工作的动机。 我们依靠标准的统一建模语言(UML)在软件生产过程中使用形式化方法。我们在这项任务中所面临的挑战是定义技术,从UML描述中可能过多或不完整的信息中提取规范到过程演算中。最终的目标是有一个设计环境,在这个环境中,用户只与UML进行交互,以便对他/她的应用程序进行形式化分析本文件的结构如下。在第2节中,有一个我们感兴趣的UML方面的描述。在第3节中,给出了π-演算在第4节中给出了从序列图到π-演算的翻译在第5节中,我们讨论了序列图和状态图的联合翻译最后,对所得到的π-演算具体化的使用方法作了一些说明。2简要的UML描述UML是一种半形式化建模语言,是软件系统高级规范的标准。有许多不同类型的UML图,用于指定软件系统的不同方面。在这个简短的介绍中,我们将重点介绍序列图和状态图。序列图通过表示执行的示例来显示对象如何相互交互。序列图有两个维度:垂直维度代表时间,水平维度代表不同的对象。对象可以通过交换由箭头表示的消息来进行通信为了显示不同种类的通信,本文考虑了以下• 棒箭头用于同步通信。 的情况下54 K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)51-µJµ行为:µ.PP Ide:P{y/xµ}−→PJ ,Q(x)=P−→PµJQ(y)−→PJµJPar:−→P,bn(µ)<$fn(Q)=<$Sum:P−→PµµP|Q−→µPPJ|QJP+Q−→PJx(y)JRes:−→P,x/∈ n(µ)Open:P−→P,y xµ(νx)P−→(vx)PJx(y)(νy)P−→Px(y)Px(w)Jx(y)Jx(w)JClose:−→P,Q−→Q,y/∈fn(Q) Com:P−→P,Q−→QP|Q−τ→(νy)(PJ|QJ{y/w})表1P|Q−τ→PJ|QJ{y/w}π演算的后期过渡系统嵌套控制-在外部级别序列恢复之前,必须完成整个嵌套序列。• 带棒状箭头的虚线箭头用于返回消息。消息至少用消息名标记;还可以包括参数和条件,作为发送消息的保护。此外,消息可以与赋值相关联,该赋值将消息之后返回的值与被赋值的变量相消息可以组合在一个分支结构中,由多个箭头表示,离开一个点,意味着这些消息的替代或并发,取决于它们的条件。状态图描述了状态和转换的序列,通过这些序列,建模元素可以在其生命周期中对离散事件做出反应。状态图是表示状态机的图状态图的语义可以用Kripke结构来定义[11]。给定状态图S中的一个状态s,我们用(s·)·表示一组转换对t1t2,使得在S的Kripke结构中存在状态(si)和转换(ti)的序列s1[t1]s2[t2]。3π演算在本节中,我们简要回顾了π演算[13],这是一个提供命名概念的并发通信过程模型。设N是一个可数的有限个名字集合,其范围为a,b,. 关于N{τ}=π。 我们还假设一组A的代理标识符,其范围为A,A1,.。. .过程(用P、Q、R、. ..................... (P)是根据JK.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)5155|∪⟨ ⟩≡语法P::= 0| π.P|P + P|P|P|(νx)P|[x = y] P |A(y1,.,y n)其中π可以是x(y)表示输入,x y表示输出(其中x是主语,y是宾语),ε表示空字符串,或τ表示无声移动。此后,将省略尾随的0前缀π是进程π.P可以执行的第一个原子操作。输入前缀在前缀进程中绑定了名字y。直觉上,沿着名为x的链接接收到了某个名称y。输出前缀不绑定随x发送的名称y。无声前缀τ表示系统的外部观察者不可见的动作。求和表示非确定性选择。操作符描述进程的并行组成。操作符(νx)在它所预置的进程P中充当名称x的静态绑定器。换句话说,x是P中唯一的名字,它不同于所有的外部名字。 最后,匹配[x=y]P是一个if-then运算符:如果x=y,则进程P被激活。 A(y1,.,y n)是常数的定义( 这 里 , after , yt r 表 示 sy1 , .., yn ) 。 Eacha gentidentifierrAhasauniquedefining-ing equation of the form A(y1,.,yn)= P,其中yi是不同的,并且fn(P)={yi,.,y n}(参见下文自由名称fn的定义)。一个并行的进程P1,.,Pn被写为i=1. nP i. 对于名称集合V ={v1,. v n}我们用符号(v V)P表示(v v1)... (vvn)P和(vv1,v2)P对(vv1)(vv2)P.我们在这里使用了π演算的一个新版本,尽管早期的语义学也可以应用。π演算的后期操作语义是以SOS风格定义的,转换的标签是τ表示无声操作,x(y)表示输入,xy表示自由输出,x(y)表示绑定输出。我们将使用μ作为转换标签的元变量(它不同于前缀的元变量π,尽管它在两种情况下是一致的)。我们回想一下标签的自由名称fn(µ)、绑定名称bn(µ)和名称n(µ)=fn(µ)bn(µ)的概念 µ。µ类fn(µ)bn(µ)沉默的乌鸦xy自由输出{x,y}x(y),x(y)输入和绑定输出{x}{y}函数fn、bn和n以显而易见的方式扩展到过程下面我们假设过程的结构同余被定义为满足以下条件的最小同余:• P和Q α-等价(它们只是在选择约束名时不同)意味着帕奎奥,56 K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)51-• (P/N,+,0)和(P/N,|,0)是交换幺半群,• ε.PP,• [x=x]PP,• (νx)(νy)P(νy)(νx)P,(νx)(R|S)(νx)R|S如果x/∈fn(S),(νx)(R|S)R|(νx)S,如果x/∈fn(R);(νx)P<$P,如果x/∈fn(P).µP−→Q的一个变体是一个跃迁,它只在P和Q被结构一致的过程所取代,μ被α-转换,其中以μ绑定的名称在其范围内包括Q我们在Tab中给出了π-演算的后跃迁系统。二、每个规则的结论以及公理中的过渡,代表了它的所有变体。4顺序图在本节中,我们将注意力限制在UML序列图上。请注意,UML的语义允许跳过序列图中的消息。为了简单起见,在本节中,我们考虑非跳过消息的情况,因为这是设计人员的常见做法(我们将在本文的后面处理跳过此外,我们假设消息的名称是唯一的,否则我们在翻译之前重命名它们。首先,我们考虑不带消息条件的序列图。我们将把序列图中的一个对象表示为π演算中的一个进程,并通过并行组合来组合从给定序列图中产生的所有进程两个对象之间的消息表示为相应进程之间的通信对于每个消息,我们在π演算表示中创建一个私有通道,并将消息转换为该通道上的同步。在我们的翻译中,一个自我呼唤是由无声的动作τ来表示的。请注意,对于与自调用相关联的赋值构造,表达我们赋值变量的事实可能是必要的(例如,用于分析安全属性)。在这种情况下,自调用可以被翻译为与附加内部对象的通信就序列图显示一个对象如何与其他对象交互而言,将对象视为发送和接收的序列是很自然的的信息。为了翻译一个对象,我们为每个发送/接收的消息顺序地产生沿着相应通道的信号的输入/输出。给定两个由消息m连接的对象,我们将此消息翻译为K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)5157⇒|=(νm)(m|米)的Fig. 1. 翻译一条信息。= n(v m1,m2)(([x = true] m1. M2|M1. m2)+([x = false] m2|m2))图二. 条件的翻译=(v m,return m)([x = true] m. 返回mM. returnm)图三. 翻译一个回归。在接收消息的对象中的通道m上的输入和在发送消息的对象中的相同通道上的输出(参见图11)。①的人)。现在考虑一条带有条件的消息。如果满足条件,则发送消息,否则跳过消息。给定一个发送消息[x]m,如果条件满足,我们在通道m上获得一个由匹配[x=true]前缀的输出,否则跳过由匹配[x=false]前缀的消息对于一个接收消息[x]m,我们得到一个关于m的输入或跳过它,这取决于x的值。如果条件不满足,则由具有包括其返回的条件的消息初始化的嵌套消息将被丢弃。为了说明条件的转换,考虑一个简单的序列图,图2中只有一个条件x。它被转化为两个子过程的总和,代表x的两个可能的值。我们将消息的显式返回转换为名称为return_message_name_的普通消息。例如,我们将消息[x]m转换为显式返回(图3)作为一个消息序列,返回m。(νm1,m2,m3,syn)(m1. syn|=0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000syn| syn. syn. M3|M1|M2|米3)见图4。分支结构的翻译。多个消息的分支被转换为这些消息的并行组合,这些消息在继续之前同58 K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)51-步,因为所有分支K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)5159PM=(νm,return m)(m. return m(x)|M. 返回mx图五. 翻译一份作业。信息必须被传递。更详细地说,对于发送对象,我们在任何分支消息之后的特殊通道syn上引入一个输入。然后我们构造一个延续过程,它是通过为分支结构中的任何消息发送一个syn信号来最后,我们通过平行合成的方法合成了分支结构和延续过程的翻译。在接收过程中,我们有一个分支消息和连续的并行组合,没有同步。我们使用syn通道强制continuation进程在所有分支消息交付之后启动。我们在一个简单的序列图上说明我们的翻译,该图显示了两个并行的消息,后面跟着一个回复(见图4)。我们使用一个通道syn来迫使m3出现在m1和m2之后。赋值构造通常用于绑定存储消息返回值的标识符它可以被转换为一个带有显式返回的消息,该消息传递的不是信号而是所需的变量(见图5)。换句话说,我们使用真正的通信而不是简单的同步。我们现在正式定义一个从UML序列图到π演算的转换函数。给定一个消息m,我们定义一个嵌套消息集nest(m),在显式返回的情况下,它是在m返回(包括返回)之前发送m而启用的消息集,否则是空集。通过滥用符号,我们使用进程的元变量来表示可能被匹配前缀化的前缀。用一组对象O、一组消息Mes和一组条件C修复序列图SD。设ρ:C <${Λ}→Bool是一个求值函数,对于特殊条件Λ返回真。给定一个消息m,我们将c定义为对应于m的条件,或者如果m上没有条件,则定义为Λ。给定对象O和O中的消息m,我们定义函数trρ:O×Mes→ P60 K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)51-如果O发送sm且c=Λ,则m=m;我⎧⎪⟨⟩我∈{} O × M × P → P我我⟨ ⟩ ⟨⟩最终,对于固定的评估ρ,我们得到P=O∈Sseqρ(O,M).V ={v|v∈M O<$v = syn Mi}.我我J⎪⎨=j=1. ki tr ρ(O,mi).seq ρ(O,m i+1,. ,M n|nest(mj),syn.tail)|作为一个[cm= true] m,如果O发送m和ρ(cm returntrue;trρ(O,m)[cm= f alse|ε,如果O发送m且ρ(c m)= f alse;m,如果O接收m且ρ(cm)=真;如果(O接收m且ρ(cm)=false),则为ε,中文(简体)|m ∈nest(mJ)andρ(cmJ)=false).对于给定的赋值构造x:=m(),我们以一种特殊的方式转换m的返回值。我们将函数trρ(O,returnm)在赋值的情况下重新定义为发送对象的returnm(x),或接收对象的returnmx修复一个求值ρ和一个对象O,对象O由一组发送/接收的消息序列M O=M0,M1,.,M n= 1,其中集合M i={m1,.,m ki}表示分支消息,并且对于每个i∈ {1. n}和j1...基岛我们定义平移函数seqρ:esρ如下所示seqρ(O,尾,尾)=尾,并且seq ρ(0,m i,.,M n,tail)=trρ(O,m1).seq ρ(O,M i+1,. ,M n,tail),如果ki= 1⎪|synM.我. . . . synMi.seqρ(0,rest(mi, . . ,Mnn n),tail),如果ki>1`其中剩余(M i,.,M n)是M i,..,M n的所有消息返回之后开始。ρ OSD的最优解为P=(νV)(λρ∈Cλ {Λ}×BoolP ρ),其中最后,我们给出了简化结果的一些注记• 重复条件。我们在一个过程中只保留一个重复条件的第一个实例,如果这些实例没有被一个可以改变条件值的赋值所除。• 空分支子进程。 在分支结构的翻译中,由于条件的假值,我们可以得到一个只包含条件和接收同步消息的并行子进程。等MiK.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)5161|处理对于翻译是不必要的,并且可以与同步消息的相应发送一起被跳过。在单个活动分支消息的情况下,我们可以将其转换为通常的序列消息。关于这一点的说明,你可以在下一小节的结尾看到。4.1例为了说明我们的翻译,考虑图6中的序列图,它代表了[8]中电话系统的一个微小变体在这个例子中,我们有两个条件c1=[busy]和c2=[not busy]。从而得到两个可能的值ρ1:ρ1(c1)=true,ρ1(c2)=false和ρ2:ρ2(c1)=false,ρ2(c2)=true.显然,只有这两个估值可用。翻译的结果如下所示。调用者ρ1 =升力。拨号音。number. 连接音。忙音。disconnect等。挂断呼叫者ρ2=电梯。拨号音。number. 连接音。铃声。说话1. 说话2.断开连接。挂断Phone ρ1 =(νsyn1)lift.拨号音。number. (连接音。合成1|connect.返回连接(忙)。同步1同步1。syn1. [busy = true]忙音断开连接。挂断)Phone ρ2 =(νsyn1,syn2)lift. 拨号音。number. (连接音。合成1|connect.返回连接(忙)。 合成1|syn1. syn1. 来电)打电话的时候,电话铃响了。同步2|[busy = false]call. 答案返回cal。L同步2|syn2. syn2. 断开连接。挂断接收器ρ1 =连接。 返回连接忙线。ε接收器ρ2 =连接。返回连接忙线。电话答案说话了说话了12回访电话系统=(νV)(P hone ρ1|接收器ρ1|呼叫者ρ1)+(P呼叫者ρ2|接收器ρ2||调用者ρ2),其中V是系统的通道集合。现在,我们来演示一下上一节中描述 在P hone ρ1 中,我们将分支结构{bussy tone,ring tone,call}翻译为单个消息bussy tone,因为在赋值ρ 1上,另外两个消息的条件为假,并且我们获得了它的翻译[busy = true] busy到 ne 而 不 是 [busy = true] syn2|[busy = true] syn2|[busy = true] 忙音.syn2|syn2.syn2.syn2,就像在一般情况下一样。5序列图和状态图每种类型的UML图都有自己最自然的方式来转换为π演算。翻译由不同的图表62 K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)51-见图6。 电话系统的序列图。我们选择一种驱动类型的图(这里是序列图),并且我们从其他类型的图(这里是状态图)中获取关于系统的必要的附加信息。对于序列图和状态图的联合翻译,我们有两种不同的方法,它们在图的驱动类型• 基于序列图的翻译。根据我们的翻译,每个赋值被单独考虑和翻译,使得所获得的π-演算表示是所有可能赋值的子过程的总和。来自状态图的附加信息有助于确定可行的计算。这里的问题是表示来自状态图的更详细的信息,因为如何转换未在序列图中表示的状态图的内部动作可以忽略这种细节,并在沟通层面上获得翻译。• 基于状态图的翻译。 状态图(对于每个对象)被翻译成一个由状态名参数化的过程,并表示从一个状态到另一个状态的转换。来自序列图的附加信息对于组成对应于不同状态图的进程是必要的。这种方法在[5]中用于生成Per的翻译。K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)5163⟨ ⟩ ⟨⟩见图7。 Phone系统的对象Phone的状态图。评估过程代数(PEPA)。最后一种方法需要对系统的每个对象进行非常详细的描述。然而,有时候我们更愿意有一个高层次的规范,它不包含所有对象的详细规范。这就是为什么我们在翻译中选择基于序列图的方法5.1基于序列图的翻译在上一节中,我们考虑了非跳过消息的情况然而,在一般情况下,序列图中的消息可以被跳过. 例如,在一个序列图中呈现替代用例是很有用的。如果我们在这个范例中考虑一个单独的序列图,我们就得到了给定消息序列的所有可能的连续性。因此,我们只能看到消息的顺序,但没有信息表明在允许的行为中必须跳过哪些消息。为了说明这种情况,我们在图6的电话系统中添加了一个从呼叫者到P电话的消息超时音,该消息超时音位于消息拨号音和号码之间。它可以解释如下。如果呼叫方没有拨打号码,在等待一段时间后,它会收到超时提示音并结束呼叫。在超时提示音之后,呼叫者不能拨打号码,但是序列图并没有给我们这样的信息,我们有一个消息序列,它包含了一个消息序列。拨号音,超时音,号码.. . 除了正确的序列外,...拨号音、超时音、挂断和 ...拨号音,号码.. . .为了只考虑正确的消息序列,我们需要一些额外的信息,这些信息可以从其他类型的图中获得。也就是说,我们需要关于系统行为模型中的分支点的信息。默认情况下,我们顺序地考虑序列图中的消息,并假设对于每两个顺序的消息,存在一种执行方式,64 K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)51-包括这两条信息当我们跳过一个消息时,我们有两种选择:一个接一个地执行序列图的消息,或者跳到图的其他消息我们将把这种情况称为分支点。在我们的翻译信息的分支点将获得从状态图描述的行为的单个对象。我们将状态图限制在一组表示通信的转换上,称之为受限状态图。我们可以讨论一个受限状态图的分支点,如果对于一个给定的状态,我们有对应于多个分支消息集的传出转移。 状态图的骨架是受限状态图对属于某个分支点的一组变迁的约束。对于孤立的序列图和状态图,我们可以用π演算或其他形式表示语义。然而,不同图之间的相关性在UML中并没有被正式指定因此,我们必须对这些图之间的关系做一些假设,以便在整个规范的翻译中正确这些假设是关于在不同的图表中呈现相同通信的名称的给定由序列图SD和状态图OD1组成的UML规范,...对应于对象O1,. SD的O k。 如果序列图中的消息和状态图中的转换之间存在以下关系,我们就说一个规范是一致的(i) SD中的消息名称是唯一的(这对于序列图中的消息和状态图中的转换之间的(ii) SD中的消息m与对象Oi和Oj相关,ODi(ODj)表示指定系统中的同一事件(iii) 如果在对应的状态图中存在跳过转换m的路径,则可以跳过SD中的消息m(iv) 消息mJ跟在mi之后,如果存在一对顺序转换,m,m,J在对应的状态图的骨架中。最后一点意味着我们不需要在状态图中显示所有的消息,并且可以跳过图中连续部分的消息。注意,状态图可以包括比相应的序列图更详细的信息但在这种转换中,我们使用状态图只是为了获得关于可用消息序列的附加信息。因此,状态图的内部动作对于我们的翻译是不必要的为了可读性,我们在这里提供了一个不包含分支结构的简化版本的序列图修复一个K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)5165⎧⎨∪∃/∈B(m)=⟨⟩⎩Σ对象O与发送/接收的消息序列M O= m1,.,m n.转换的第一步是计算分支点。我们递归地将消息mi+1的一组起始状态定义为在执行对应于mi的转换之后从mi的起始消息获得的一组状态。分支点B(mi)包含一对(mi,mi+1),并且进一步对于mi的每个起始状态s以以下方式构造:B(mi)(m(t),m(tJ)),如果m(t)=mi,并且 tJJ= tJ. intN (n);我B(m i)(skip m i,m(t)),如果m(t)/= m i。然后,我们修改了第4节中提出的序列图的翻译,通过使用关于分支点的信息来挑选出正确的执行序列。与原始算法的区别在于函数seqρ的定义。给定一个求值ρ,我们计算平移函数seqρ:O ×Mes→ P如下:seqρ(O,M es)=0,并且seq ρ(O,m i,.,m n)={j|(mi,mj)∈B(mi)}Σ..,m n)+seq ρ(O,m j,.,m n nn)。{j|(skip mi,mj)∈B(mi)}让我们用电话系统来说明这种方法,电话系统已经在第4节中讨论过了。现在我们用对象Phone的序列图(图6)和状态图(图7)来表示它。关于跳过消息的假设直观地意味着呼叫者可以在他的任何动作之后挂断在赋值ρ1上平移对象P hone的结果是:P hone ρ1 =升力。拨号音。(挂断+号码。挂断+号码。(连接音。合成1|connect.return connect(busy). 合成1|syn1. syn1. [busy =true]忙音hangsup))另一个问题是部分描述系统的翻译。如果序列图中与消息相关的对象之一没有被状态图描述,我们可以从现有的状态图中提取信息。为了说明这一时刻,让我们考虑基于对象Phone的序列图(图6)和状态图(图7)从PhoneSystem转换对象Caller7):调用者ρ1 = lift t。拨号音。(挂断+号码。挂断+号码。连接音。忙音。挂断)在这里,我们假设接收消息号码有三种情况:“忽略消息并完成”,“在消息之后完成”和“在消息之后继续”,那么我们对于发送此消息具有相同的情况。66 K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)51-我的天{sJ|s[sJ}{|}⎪Σ{sJ|s[<$sJ}τ。 sJ(),如果<$$>SD(s)和nd<${sJ|sort[SORT];⎪⎩见图8。 抽象层次状态图。5.2成分翻译为了提取一个序列图和它的一些对象的一组状态图的情况,在第4节中介绍了我们需要一个组合多个序列图的可能性。我们将通过添加一个抽象级别的状态图来实现,该图显示了不同序列图之间的关系。这些信息也可以从对象的状态图中获得。我们可以从对象的状态图集合中构造一个抽象层次的状态图,如下所示。如果在一个对象的状态图中,有两个顺序转换对应于来自不同序列图的消息,我们在抽象级别的状态图中产生表示这些序列图的状态之间的转换在本节中,我们提出了一个连贯规范的翻译,该规范由一个抽象级状态图、一组对应于其某些状态的序列图和一组对应于序列图对象的状态图组成。抽象状态图的自然翻译方式是对应于每个状态,一个代理开始于描述该状态的动作,并作为代理延长,其中一个状态继承到所考虑的状态。如果存在对应于给定状态的序列图,则描述状态的动作是用于初始化和结束对应于序列图的代理的一对控制信号。否则,我们假设一个无声的行动。序列图的翻译与第4节中所示的一样,除了这样一个事实,即这种翻译的结果必须是可重新执行的,因为它可以用作抽象状态图翻译的一部分。因此,我们必须将序列图表示为递归代理,该递归代理为它的每个对象表示单独的代理确定一个抽象级状态图AD,它具有一组状态S、一个初始状态sinit和一组序列图SD(s),这些序列图SD(s)用于来自S的一些状态s。对于AD的每个状态s,我们构造一个agents()如下:伊尼湾结束S. sJ(),如果SD(s)和sJs[sJ];s()=intis. ends,ifnD(s)a n<$d {sJ|sort[SORT];τ,如果<$SD(s)和<${sJ|s [sJ}。修复一个序列图SD(s)与一组对象O1,. O k和一个对象K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)5167ρ我1KJ12Oj接收SD中的最后一条消息。给定SD(s)的条件的评估ρ,我们将序列图翻译如下:SDs()=(νV)<$ρ∈C<${Λ}×Boolsort();SD s()=(v VJ)ini s. ini Oρ. ini Oρ.结束Oρ。结束S. sort();ρ1kjρOi()=ρ∈C<${Λ}×Boolintn();O ρ()= ini O ρ。seq(O ρ,M Oρ). O ρ()∈ {1... &i = j;i iρiiiρOρOj()= ini Oj. seq ρ(Oj,M j). 结束Oj. Oj()。系统的整体平移为P =(νVJJ)s init()|s∈S(SD s()|O∈SDsO()这里,V J={ini 0 p. ,ini O ρ,end O ρ},V JJ={ini s i,end s i|SD(s i)}V是给定序列图的一组内部变量,正如在第4节中序列图的翻译中所定义的那样。作为所提出的组合转换的一个例子,考虑一个由图8中的抽象级状态图和图8中的序列图组成的系统。1对应于状态s2。翻译的结果是:s1()= τ. s2()s2()= inis2.结束s2. s1()+ini s2.结束s2. s2()SD s2()=(v ini O1,ini O2,end O2,m)ini s2. i i O1. ini O2。结束O2。结束s2. SD s2()0 s2()= ini 01. M.结束O1。O s2()1 1O s2()= ini O2. M. O s2()2 2P=(ν ini s1,ini s2,end s1,end s2)s1()|SD s2()|O s2()|O s2()6使用翻译6.1进程代数规范分析UML规范到π演算的转换的目的正在将进程代数可用的分析技术应用于UML规范。在这里,我们描述了如何使用我们的翻译结果对UML中指定的系统进行性能分析。对于这种类型的分析,我们在序列图中的消息中添加速率,从而在随机π演算中产生翻译(参见例如[16])以表达这些定量测量。随机π-演算与第3节中的经典π-演算不同,只适用于形式为λπ,λπ的前缀,其中λ是指数分布的唯一参数。在图9中,你可以看到一个按速率扩展的消息到随机π演算过程的转换。指数分布使我们能够恢复一个连续时间马尔可夫链,通过使用标准的数值技术[14]计算性能指标68 K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)51-=(νm)(λm,λ λm |m,λ见图9。 随机信息的翻译。6.2基于WEB的微型企业案例研究在这里,我们将我们的翻译应用于在DEGAS项目背景下开发的真实案例研究[6]。这个案例研究是一个基于WEB的服务,分发给社区的用户,并实现基于对等认证和通信范式的微业务。序列图用于详细描述系统中通信密集的部分。我们在这里介绍了一个翻译的一部分规范,描述了电子商务过程,因为它从买家。在卖家被选中后然后,买家将搜索销售列表,以获得可用的项目,他可以准备其篮子购买,并进行电子商务交易。该规范由电子商务抽象级状态图(图10)和描述握手(图12,上图)、认证(图12,下图)和搜索卖方列表(图11)的序列图组成。翻译结果见附录。对于给定的案例研究,性能方面至关重要。由于通信链路受到不可预测的吞吐量变化的影响,因此会出现性能问题。用箭头上的定量度量扩展序列图,我们可以分析,例如,请求时间与系统中可能并发出现的请求数量的依赖关系,如我们在[7]中提出的。7结论在本文中,我们讨论了非齐次UML规范的π演算的转换我们提出了一种基于序列和状态图的方法。作为这项研究的延伸,提取其他类型的UML图的翻译以呈现更复杂的软件系统将是有趣的。此外,我们目前正在实现我们的翻译,并将其与开源UML工具集成。本文是在当前的软件开发实践中使用形式化方法的一个步骤。 我们从UML图中提取进程代数规范的主要贡献是在执行分析时对设计人员隐藏了形式细节。最后,我们隐式地定义了UML序列定义的形式语义。K.波科济-科伦布拉特角Priami / Electronic Notes in Theoretical Computer Science 101(2004)5169基于π演算的操作语义的语法。最后,假设序列图的语义模型在[18]中给出,我们声称序列图在行为上等价于通过我们的翻译获得的π引用[1] 巴尔河,Etessami,K.,Yannakakis M.:消息序列图的推理。Proc. ICSE[2] 阿雷多,D.B.: PVS中UML序列图的语义。Proc. UML2000[3] Booch,G.,Rumbaugh ,J.Jacobson ,I.:UML 符号指南,版本1.1。Rational SoftwareCorporation,Santa Clara,CA(1997)[4] Broy,M.等:从MSC 到Statecharts。分布式和并行嵌入式系统。KLUWER 学术出版社(1999)[5] Canevet,C.,Gilmore,S.,Hillston,J.,Stevens,P.:使用UML和随机过程代数进行性能建模。Proc. 02 The Dog(2002)[6] Caraguili C.,D广场,穆拉岛等:案例研究的UML 规范。DEGAS 项目可交付成果24,http://www.omnys.it/degas/(2002)[7] Caraguili C. , 普 里 阿 米 角 等 : 静 态
下载后可阅读完整内容,剩余1页未读,立即下载
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- VMP技术解析:Handle块优化与壳模板初始化
- C++ Primer 第四版更新:现代编程风格与标准库
- 计算机系统基础实验:缓冲区溢出攻击(Lab3)
- 中国结算网上业务平台:证券登记操作详解与常见问题
- FPGA驱动的五子棋博弈系统:加速与创新娱乐体验
- 多旋翼飞行器定点位置控制器设计实验
- 基于流量预测与潮汐效应的动态载频优化策略
- SQL练习:查询分析与高级操作
- 海底数据中心散热优化:从MATLAB到动态模拟
- 移动应用作业:MyDiaryBook - Google Material Design 日记APP
- Linux提权技术详解:从内核漏洞到Sudo配置错误
- 93分钟快速入门 LaTeX:从入门到实践
- 5G测试新挑战与罗德与施瓦茨解决方案
- EAS系统性能优化与故障诊断指南
- Java并发编程:JUC核心概念解析与应用
- 数据结构实验报告:基于不同存储结构的线性表和树实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)