petri网 系统建模与仿真,基于petri网的建模方法
摘要
在软件的生命周期中,软件过程是整个软件开发和实现的核心。一个成功的软件项目必须基于一个良好的软件过程元模型和相应的软件过程支撑环境。本文提出以下想法
一种基于XML模式定义的以活动为中心的软件过程定义语言SPDL,及其基于Petri网的设计和初步实现。
理论是软件过程执行控制的支撑环境。
关键词:Petri网,软件过程,过程模型,SPDL
摘要
软件
过程是软件生命周期中开发的核心。成功的
软件项目必须基于良好的软件过程元模型和
相应的支持环境。论文提出了一个XML
基于模式和以活动为中心的软件过程定义语言
SPDL,然后设计并实现了一个执行控制支持
基于Petri网理论的环境。
关键词:Petri网,软件过程,过程模型,SPDL
第一章引言
1.1软件过程和过程建模
软件过程是软件生命周期中涉及的一系列相关过程。是过程的集合,活动是任务的集合,任务是将输入转化为输出的操作[3]。软件过程模型是软件过程的静态描述,是软件过程执行的基础。软件过程是软件过程模型的执行实例,是软件过程模型的动态表达。
当执行特定的软件模块时,有必要对它们进行建模。根据L. Osterweil的观点“软件过程也是软件”[3],软件过程需要建模是很自然的。目前对软件模块建模最常用的建模工具是UML[1],它为面向对象的软件模块建模提供了统一的标准。
1.3软件过程支持环境现状
就软件过程建模而言,还没有类似于UML的建模工具。OMG提出的SPEM(软件过程
工程元模型)[16]用于描述软件过程模型,参考文献[17]提出了基于SPEM的CMM。
软件过程元模型,但是它们都缺乏软件过程执行和过程演化的执行支持环境。
文献[3]提出了一种新的软件并行开发模型及其控制模型,并基于Petri网理论对这些模型进行了精确定义,说明Petri网理论是解决软件过程建模和执行控制的有效途径。
1.3本课题的研究内容和意义
1.3.1研究内容
软件过程和软件过程模型
软件过程是指软件生命周期中涉及的一系列相关过程,软件过程模型是软件过程的静态描述。如何准确地描述软件过程模型是最重要的。
软件过程控制
为了准确控制软件过程的执行,基于Petri网的软件过程模型描述和软件过程控制是解决这一问题的有效途径之一。
软件过程支持环境
软件过程建模、软件过程模型修改(模型演化)和软件过程执行管理的最终目的是提高软件生产率,因此提供高质量的支撑环境是必然的。
重要性
近年来,随着社会对软件需求的不断增加,如何控制软件生产过程,如何不断改进和演化软件过程,已经成为软件工程研究的核心问题之一。我认为提出一个准确的
有必要实现可用于这种语言的软件过程支持环境。在这种支持环境下,软件开发人员:
能够准确定义软件生命周期中涉及的各种软件过程模型。
能够根据定义的软件过程模型准确完成相应的软件过程。
当发现已定义的软件过程模型有缺陷时,可以及时修正。
综上所述,通过对软件过程的精确控制和对其模型的不断演化,可以实现软件开发者认为最好的软件过程,从而提高其软件生产率。
1.4 Petri网简介
Petri网是描述离散和分布式系统的数学建模工具。1962年,卡尔亚当佩特里以其著名的论文《自动化的科学》获得了博士学位。在这篇论文中,他正式提出了Petri网理论,并将这一年视为Petri网的诞生年。1970年后,Petri将其网理论发展为一般网理论。如今,世界各地的许多研究人员都专注于Petri网的研究,并且每年都召开关于Petri网的国际会议。
Petri网包含五个基本元素:
地点(图书馆)
一般用圆圈表示,可以描述为容纳标记代码的地方。它的容量可以是有限的,也可以假设容量是无限的。
过渡(过渡)
通常用矩形或短线来表示,它描述了从一种状态到另一种状态的变化。变化的发生通常是原子性的,即不间断的。
弧(定向弧)
一般用有向弧表示,表示从库的变化或从库到库的变化之间的偏序关系。可以设置弧上的权重,即一次消耗的资源数量。
令牌(标志代码)
也就是网络系统中的资源,而标记的数量就是资源的数量。在一个活的网络系统中,资源可以在存储库的变化中不断流动。
标记(标记)
记录了Petri网中令牌的分布,描述了Petri网的状态。
第2章软件过程定义语言
2.1 spdl概述
软件过程定义语言3354SPDL是一种面向软件过程建模者的以活动为中心的模型定义语言。它具有以下特点:
它涵盖了软件过程中涉及的基本元素,并描述了这些元素的相关性、功能和信息。
能够并行描述软件过程中的活动。
能够统一描述软件过程中涉及的角色的职责,并定义每个角色的权限。
使用XML作为过程模型描述的载体,具有良好的可读性和互操作性。
2.2 SPDL元模型
元模型用于定义语义模型的构造和规则,通常称为定义表达模型语言的模型[1]。软件
过程定义语言3354SPDL的元模型用于描述软件过程模型中的元素、元素之间的关系以及元素的属性。
对象管理小组(OMG)使用元对象工具(MOF)来建模UML [4]。MOF是一个模型驱动的项目,具有4层架构[5],如下图所示:
图2.1 MOF模型
在M3层,MOF定义了最基本的元模型;在M2层,使用MOF定义的元模型来定义UML元模型。在M1层中
软件模型建模的UML元模型:在M0层,建模的软件模型被实例化,它描述了现实世界中的对象。
遵循UML元模型建模方法,SPDL元模型建模的架构如下:
图2.2 SPDL模型
在M3层,XML Schema[15]定义了最基本的元模型;在M2层,使用XML Schema定义的元模型来定义SPDL元模型。在M1层,使用SPDL元模型对软件过程进行建模。在M0层,被建模的软件过程模型被实例化,它描述了真实世界的软件过程实例。
下图显示了SPDL的类设计(为了简洁,所有类图中都隐藏了属性和操作)
图2.3 SPDL类图
XML模式
附录1
2.3模式转换
在2001年,对象管理组织(OMG)提出了MDA[2]开发的概念,其中提到了以下两类模型:
平台无关模型
这种模型不涉及任何特定的平台技术。比如我们在讨论SPDL的概念时,只关心什么是过程定义、活动定义、任务定义,而不关心SPDL的支撑环境是如何实现这些概念的。
特定于平台的模型
这种模型非常重视给定平台的特殊性和能力,并使模型转换和代码生成成为可能。例如,一个银行应用程序的PIM可以用UML建模,然后PIM UML模型可以转换成PSM Java EJB模型并生成大部分Java代码。
下图总结了从一种模型转换到另一种模型的原理:
图2.4模型转换原理概述
2.3.1从SPDL域到Java域的转换
SPDL的一个实例是描述软件过程模型的XML文档。SPDL实例部署到支撑环境时,需要解析生成一些相应的Java对象来方便操作,比如Petri网图的生成,过程模型与过程的关联等。
在实现从XML域到Java域的模型转换时,JAXB 2.0(JSR 222)[7]提供了一种标准化的方法。下图总结了这一转换过程的原理:
图2.5概要2.5 JAXB 2.0原理2 . 3 . 2 spdl实例的Petri网图的生成
Petri网可以从两个层次来描述,一个是静态层次,即Petri网图;二是动态层面,即阅卷网络。本节主要阐述Petri网图及其生成。
下面给出了Petri网图的形式定义及其基本术语。
1.1[3]如果一个三元组(S,T,W)被称为Petri网图,那么
s是储存库的有限集合。
t是有限集的变化。
S t ,st=
w:(ST)(TS)N是弧的多重集。
关系是一组弧:F={(x,y) W(x,y) 0}。在一些关于Petri网的文献中,弧的权只定义为1,定义Petri网时用F代替W。
1.2[3]设N=(S,T,F)为Petri网图,x S T,则。x={y S T (y,x) F}
x.={y S T (x,y) F}
. x.=。x x。
其中,x叫x的前提,x叫x的后缀,还有。x称为x的后缀。
根据定义1.1,Petri网图的UML建模如下:
图2.6 Petri网图类图
根据SPDL的元素结构,SPDL定义的软件过程模型可以分为以下三种基本结构:
在实际的软件过程建模中,通常需要结合这三种基本结构来定义一个实用的软件过程模型。
2.3.2.1基本街区
基本块用Petri网描述SPDL过程模型的基本结构。有以下类型的基元块:
顺序块
它描述了活动ei和ej是按顺序执行的,如图所示。
图2.7序列块
选择块
描述活动ei和ej被选择性地执行,如图所示。
图2.8选择块
平行台
如图所示,它描述了并行执行的活动ei和ej。
图2.9平行块
2.3.2.2 Petri网图生成
根据SPDL实例生成的Petri网图,用库存储标准代码,一个标准代码描述一个流程实例;本文描述了SPDL活动,活动的完成会导致跃迁的点燃,从而引起标志码的移动。
下图分别显示了顺序、选择性和并行结构的Petri网图形生成示例。
序列结构
图2.10序列结构的Petri网图的生成
选择结构并行结构
生成并行Petri网图时,会生成连接库的队列结构。这个结构是一个顺序块,其中存储库的数量和转换的数量等于并行活动的数量-1。
图2.12并行结构的Petri网图生成
2.4基于SPDL的软件过程建模方法
基于SPDL的软件过程建模有两种基本策略:
自上而下的
从流程开始建模,进行活动建模、任务建模等。当发现流程模型中所需的活动不存在时。
从下到上
从参与者、属性等开始建模。最后把这些实体组合成一个流程。
两种策略在建模中交替使用,自顶向下策略可以看作是过程建模的逐步细化。自底向上策略可以被看作是过程元素的重用。
下面是一个基于SPDL的软件过程建模方法的UML用例图。
图2.13建模方法的UML用例图
下图是基于SPDL的软件过程建模方法的UML活动图。
图2.14建模方法的UML活动图
第3章软件过程执行
过程是从零开始的。首先,通过过程建模,获得原始过程模型。在部署和执行流程模型之后,将获得流程实例。通过在流程实例执行期间对其进行监控,并分析流程执行中的数据和问题,可以获得改进的流程模型。最后,原始流程模型将被重新建模,流程将被重复。
总而言之,软件过程是动态的。根据过程执行的反馈,根据需要修改过程模型,以达到进一步提高软件生产率的目的。软件过程的生命周期如下图所示。
3.2过程执行控制
SPDL为建模者提供了一种软件过程模型定义语言。软件过程模型实例化一个软件过程后,需要精确控制其执行,基于Petri网的过程控制是解决这一问题的有效途径之一。
在执行过程中,一个活动的完成会导致流程的完成或下一个活动的创建,执行控制是基于Petri网的。一次点火后,流程状态会发生变化,会生成一个新的活动,如下图所示。
图3.2流程执行控制概述
3.2.1标记网络初始化
标记网用于描述Petri网图的状态,在软件过程支持环境中用于描述过程的状态。
标记网的正式定义及其基本术语如下。1.3[3]设N=(S,T,F)为Petri网图=(s,T,F,m)称为标记网,其中
m,称为n的标记或瞬变。
如果S T和,事件x被称为是可触发的。x m,x. m=。
如果事件X被触发(称为点火),则标记网转化为=(S,T,F,M ),其中m M=(M-。x) x,m 也是N的标记,也是标记网。
当一个给定的过程模型被用来实例化一个过程时,就是初始化与给定的过程模型对应的Petri网图中的一个标记网的过程。
流程实例化的UML序列图如下:
点火控制
当执行一个流程,并且其中一个活动满足其完成条件时,将触发与该活动的转换相对应的点火。如果点火成功完成,相关代码也将成功移动,并生成相应的活动或结束整个过程。
根据基本块的类型,点火控制可分为以下三类:
块状点火
选择气缸体点火
平行块点火
控制这三种基本结构中的转换点火基于以下步骤:
检查是否满足过渡点火条件,如果满足,转到步骤2;如果没有,退出点火。
根据需要完成活动的流程,在输入库中选择相应的标记代码。
从输入仓库转移到输出仓库,也就是点火。
下图分别显示了顺序模块、选择模块和并行模块的点火控制示例。
块状点火
图3.4顺序分段点火
选择气缸体点火
图3.5选择块点火(1)
活动1的点火[选择]表示在流程执行期间选择了活动1。
图3.6选择块点火(2)平行块点火
当Start Activity活动完成后,其关联的Petri网将被执行:与完成活动的流程关联的标记代码将被移动到带有Start Activity[Start]库的Fork库中。
图3.7平行分段点火(1)
当标记代码移动到音叉库时,将自动执行音叉转换点火。
图3.8平行块点火(2)
当一个并行活动完成时,相应转换输入库中的标记将被移动到连接输出库中。此时,过渡活动2
它不能被点燃。如果此时activity Activity 2已经完成,那么其对应的transition Activity 2的点燃将在transition Join自动点燃后进行。图3.9平行分段点火(3)
当标记代码移动到加入库时,自动执行加入转换点火,使得标记代码进入加入库的队列。如果并行活动的数量是n,则在该库的队列中执行(n-2)次点火,使得标记代码移动到队列的末尾(加入队列n-1)。
图3.10平行分段点火(4)
当一个并行活动完成时,相应转换输入库中的标记将被移动到连接输出库中。此时,如果transition Join点火无法进行,则意味着所有并行活动都已完成,因为Join库的队列已被标记填满。
图3.11平行块点火(5)
并行活动完成后,连接库中队列的尾部被点燃,整个并行块结束。
图3.12并行块点火(6)3.3历史跟踪
流程是动态的,它的状态随着流程的执行而变化,所以需要记录流程状态的每一次变化。通过追溯历史,我们可以获得许多重要的数据。挖掘和整理这些数据将有助于为过程模型的演化提供信息,并为项目管理提供必要的数据。
根据软件过程的结构[6],历史记录分为以下三个部分:
流程历史
记录操作发生时过程的关键数据。例如流程创建/完成、流程活动执行路径、优先级更改等。
活动历史
当操作发生时,记录流程中活动的关键数据。例如活动创建/完成、活动所有者变更等。
任务历史
记录操作发生时活动任务的关键数据。例如任务创建/完成、参与者、优先级改变等。
第四章软件过程支持环境的设计
4.1超越赛道项目介绍
ByondTrack是一个基于
JavaEE平台的B/S
软件过程支持环境的结构。在这种环境下,用户可以:
基于的可视化软件过程建模
自定义过程变量
流程可变粒度的权限管理
流程和参与者管理
基于Wiki的文档管理
跟踪流程事件历史
4.2架构设计
BeyondTrack项目涉及的主要技术及相应用途如下:
在SPDL处理上使用JAXB 2.0(JSR 222)
在应用框架上使用JBoss Seam framework [8](2.1.1.GA),它是Java上下文和依赖注入的超集实现(JSR 299) [9]。
数据库持久化由JPA 1.0(JSR 220的一部分)[10]的Hibernate[14]实现,使用Seam管理的实体管理和事务管理。
该层选择JSF 1.2(JSR 252)[11]的RichFaces[12]实现,并以Facelets[13]作为JSF视图定义框架。
下面简单介绍一下选择JBoss Seam framework的原因:
出色的组件范围和组件生命周期管理
基于注释的组件配置和框架配置非常简洁。
它集成了许多应用功能,如规则引擎、工作流引擎、PDF生成等。
它是一个全栈的应用框架,提供了表示层、业务逻辑层、数据持久层的整体解决方案。
它是Java企业应用框架的“准标准”。
高级组件设计如下:
图4.1轨道外组件设计
高级包设计如下:
结论
软件过程模型是软件项目可控实施的基本保证,一个优秀的、项目规模合适的软件过程元模型是软件过程模型建模的必要条件。使用SPDL
能够描述一个简单的(顺序/选择性/并行)软件过程模型,并在BeyondTrack中使用它
系统得到流程建模、部署、执行、优化全生命周期的全面支持,在一定程度上提高了软件开发的效率。在今后的工作中,我们将继续改进SPDL。
元模型,可以描述更复杂的软件过程(如子过程),并加入活动转移条件的定义,使其基于Petri网。
网络过程可以自动或半自动控制。
表示感谢/感激
我要向我的导师托马斯李博士表示衷心的感谢。正是由于他的辛勤工作、悉心指导和严格要求,这篇论文才得以顺利完成。
感谢金峰软件公司,在那里我学到了很多在学校学不到的软件工程实践和经验。
感谢BeyondTrack项目组的成员,大家在齐心协力下,顺利完成了这个项目。特别感谢虞照,他给了我们很多建议,并尽了最大努力来实现这个项目。
最后,我要感谢我的家人。是您的深情教诲和无微不至的关怀,成就了我的今天。无论多少言语都无法表达我对你的感激之情!
参考
[1]伦巴夫J,雅各布森I,布赫g统一建模语言参考手册》.艾迪生
韦斯利朗曼公司,1999年
[2]天啊.单色显示适配卡(monochrome display adapter)指南版本1.0.1,文件编号2003年6月1日年
[3] 李彤,孔兵,王黎霞等。软件并行开发过程。北京:科学出版社, 2003
[4]http://en . Wikipedia . org/wiki/meta modeling
[5]http://en . Wikipedia . org/wiki/Model-driven _ engineering
[6] ISO/IEC 12207,软件生命周期过程
[7] JSR 222,用于可扩展置标语言绑定的JavaTM架构2.0版本
8 http://www . seam framework . org
[9] JSR 299,网豆
[10] JSR 220,企业JavaBeansTM 3.0
[11] JSR 252,JavaServer Faces 1.2
12 3358 www . JBoss . org/jbossrichfaces
[13]http://facelets.dev.java.net
14 http://www . hibernate . org
15 3358 www . w3 . org/XML/Schema
[16]http://www . OMG . org/technology/documents/formal/spem . htm
[17] 基于软件过程工程元模型的通信(交流的简写)软件过程元模型,软件学报,2005年,第16卷,第8期
附录
1 SPDL XML模式状态:草稿日期:2009 年四月22 日作者:丁亮
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。