从软件过程到工作流的模型转换方法和系统的制作方法

文档序号:6559057阅读:219来源:国知局
专利名称:从软件过程到工作流的模型转换方法和系统的制作方法
技术领域
本发明涉及一种将软件过程模型转换为工作流模型(SPEM2XPDL)的方法,特别是一种将SPEM描述的软件过程模型转换为XPDL描述的工作流模型的模型转换方法,也涉及支持该方法的实现系统,属于软件生产中的过程技术领域。
背景技术
软件过程建模的主要目的是对软件过程模型提供执行支持,帮助软件组织实施以过程为中心的软件质量管理,从而保证软件产品质量。
软件过程工程元模型(Software Process Engineering Metamodel,简称SPEM)是对象管理组织(Object Management Group,简称OMG)在2002年提出的国际性软件过程建模标准。SPEM定义了软件过程建模所需要的元素集合,适用于描述任何软件过程。当前,SPEM已经取得了广泛应用,出现了很多基于SPEM的软件过程模型。然而,SPEM侧重于过程建模中的过程描述,缺乏对过程的执行支持。
过程定义语言(XML Process Definition Language,简称XPDL)是工作流管理联盟(Workflow Management Coalition,简称WfMC)提出的一种广泛使用的国际性工作流过程定义标准,用于描述工作流参考模型中的接口一部分。该接口分离工作流过程的定义和执行,使得符合XPDL定义的工作流模型可以在任何支持XPDL的工作流管理系统(Workflow Management System,简称WFMS)上被执行。
软件过程和工作流遵循相同的过程范型,将软件过程模型转换为工作流模型是可行的。已有的将软件过程模型转换为工作流模型,并通过工作流管理系统支持软件过程执行的方法有Daniel K.C.Ghan方法和Anthony Barnes方法等。前者将软件过程模型转换为用Valmont语言定义的Liaison模型,在支持Liaison模型的自定义WFMS上执行;后者将软件过程模型转换为用WPDL描述的工作流模型,并在实现工作流参考模型的WFMS上执行。
但是,这些方法都是基于各自特定的软件过程元模型、各自特定的工作流元模型而实现。由于软件过程元模型的不一致性以及工作流元模型的不一致性,那么,必须分别定义软件过程元模型到工作流元模型的映射规则。因而这些方法适用范围有限,难于在软件组织中实际推行和使用,可重用性差。

发明内容
鉴于现有方法的缺陷,为了充分利用将SPEM模型转换为XPDL模型在软件开发工程中的优势,本发明的目的是提供SPEM模型到XPDL模型的转换方法(SPEM2XPDL)以及支持该方法的实现系统。所述的方法提供了SPEM模型到XPDL模型的转换步骤,所述的系统根据方法实现了SPEM软件过程模型到相应的XPDL工作流过程模型的转换,从而基于工作流管理系统对SPEM软件过程模型提供执行支持。
为实现上述的发明目的,从软件过程到工作流的模型转换方法包括4个步骤首先,对输入的SPEM模型文件进行输入预处理,将其简化成SPEM文档内存结构;其次,将简化后的SPEM文档内存结构转换为SPEM JAVA对象,将SPEM模型元素之间的关系表现在SPEMJAVA对象当中;然后,利用预定义的转换规则,将SPEM JAVA对象转换为XPDL JAVA对象;接着,从XPDLJAVA的根对象开始,递归生成XPDL的文档内存结构元素,并最终形成XPDL的文档内存结构;最后,将XPDL的文档内存结构输出到XPDL模型文件中。
其中,对输入的SPEM模型文件进行输入预处理的过程还包括以下几个步骤S1将SPEM模型文件读入内存并形成原始的文档内存结构;S2分析SPEM模型的生成工具,即从文档内存结构的根节点、注释节点和/或其它关键字查找工具信息;S3根据分析出的生成工具,选择SPEM模型净化器;S4利用净化器去除SPEM模型中的冗余信息,即按照预定义的关键字来提取节点信息,忽略不相关的节点,并生成净化后的文档内存结构;S5利用SPEM模型定义文件检验处理后的文档内存结构是否仍然是SPEM模型。如果不是,则说明原始的SPEM模型文件存在错误,如果是,则进行下一步处理。
其中,S2具体的查找过程是首先从根节点开始查找,如果成功则返回;否则,查找注释节点,如果成功则返回;否则,在整个模型中进行查找,如果成功则返回;否则,直接跳转到S5。
其中,S4中的关键字一般包括但不限于以下关键字Package,Discipline,Phase,Lifecycle,Process,Iteration,Activity,Step,WorkProduct,WorkProductKind,ProcessPerformer,ProcessRole。
本发明的SPEM2XPDL模型转换系统,包括预处理器、SPEM对象生成器、XPDL DOM生成器、转换规则库、对象转换器。其中,所述预处理器用于实现对SPEM模型的输入预处理以及XPDL输出预处理;所述SPEM对象生成器将SPEM模型转换为SPEM JAVA对象,所述XPDL DOM生成器将XPDL JAVA对象转换为XPDL DOM(文档内存对象);所述转换规则库定义SPEM JAVA对象和XPDL JAVA对象的转换规则;所述对象转换器根据转换规则库中定义的规则,执行对象转换。
本发明的技术效果是,为软件过程工程元模型到工作流模型的转换提供了一种一般适用的方法,有效地避免了现有技术中因基于各自特定的软件元模型而带来的不可重用的缺陷。将SPEM模型转换为XPDL模型(SPEM2XPDL)的方法可以充分利用SPEM具有的强大过程描述能力以及XPDL具有的丰富过程执行支持能力。同时,SPEM和XPDL都是广泛使用的国际标准,保证了该方法的适用范围,同时保证了方法的可重用性,减少因重复开发模型所带来的巨大时间和成本支出。另外,SPEM和具体的软件开发方法无关,那么,可以对任何具体的软件开发方法,如XP,RUP等提供过程执行支持。


图1为SPEM2XPDL模型转换系统架构示意图;图2为预处理器对SPEM模型的输入预处理流程示意图;图3为预处理器对XPDL模型的输出预处理流程示意图;图4表示SPEM对象生成器对SPEM模型所做的面向对象建模的主要类结构示意图;图5表示XPDL DOC生成器对XPDL模型所做的面向对象建模的主要类结构示意图。
具体实施例方式
以下结合附图,通过一较佳实施例详细说明本发明。如图1所示,是从软件过程到工作流的模型转换系统的架构示意图,其中箭头的方向表示该系统所实现的方法的流程。当SPEM模型输入模型转换系统时,首先由预处理器中的SPEM输入预处理器进行预处理,具体步骤是S1将SPEM模型文件读入内存并形成原始的文档内存结构;S2分析SPEM模型的生成工具,具体是从文档内存结构的根节点开始,按照跟节点—注释节点—其它关键字的顺序查找工具信息,一旦查找到则返回,如果遍历整个模型都查找不到,则直接转入S5;S3根据分析出的生成工具,选择SPEM模型净化器;S4利用净化器去除SPEM模型中的冗余信息,即按照预定义的关键字,如Package,Discipline,Phase,Lifecycle,Process,Iteration,Activity,Step,WorkProduct,WorkProductKind,ProcessPerformer,ProcessRole等来提取节点信息,忽略不相关的节点,并生成净化后的文档内存结构(SPEM DOM);
S5利用SPEM模型定义文件检验预处理后的文档内存结构是否仍然是SPEM模型,如果不是,则说明原始的SPEM模型文件存在错误,如果是,则进行下一步处理。
经过简化的SPEM DOM通过SPEM对象生成器生成SPEM JAVA,然后对象转换器根据转换规则库里的转换规则将SPEM JAVA转换成XPDL JAVA,接着又经过XPDL生成器生成XPDLDOM,最后XPDL DOM经过预处理器中的XPDL输出预处理器处理后就转换成了XPDL模型输出。
其中,所述的转换规则库定义了SPEM JAVA对象和XPDL JAVA对象的转换规则,所述的转换规则包含模型元素的转换规则以及模型元素关系的转换规则。元素转换规则定义SPEM和XPDL主要模型元素以及元素属性之间的转换规则;元素关系转换规则定义SPEM活动元素之间的各种关系到XPDL活动元素的转移关系的转换规则。
其中,元素转换规则如下表所示

表1——元素的转换规则其中,元素关系的转换规则分为四种1.层次关系(LR)SPEM层次关系有两种Package和其包含元素的所属关系以及Activity和Step之间的包含关系。在XPDL中,层次关系转换为Package以及ActivitySet与Activity之间的包含关系。
2.转换关系(TR)SPEM转换关系有两种活动之间的Precedes关系和活动——产品关系。活动——产品关系要求活动a1的输出产品w是活动a2的输入产品w。在XPDL中,转换关系对应于活动和活动的Transition关系,由Transition元素来表示。
3.角色——活动关系(RAR)SPEM角色——活动关系有两种WorkDefinition和ProcessPerformer之间的Perform关系;Activity和ProcessRole之间的Assistant关系。在XPDL中,前者表现为活动的执行者,后者对应于活动的扩展属性。
4.其它关系(OTR)除了上述关系之外,其它关系都用OTR来进行描述如WorkProduct之间的trace,impact等关系。由于XPDL缺少对应语义,将不转换到XPDL中。
其中,所述模型转换方法中还定义了模型的转换算法,转换算法定义SPEM模型到XPDL模型转换步骤。算法如下所示输入SPEM模型输出XPDL模型(1)创建XPDL模型XPDLModel(2)设置Scope=SpemElementSet()//整个SPEM模型元素集合(3)在Scope中,for each层次关系r(3.1)if r∈LR(Package Level)//匹配{Package,Discipline,Phase,Lifecycle}(3.1.1)创建Package元素(3.1.2)创建Package Header和Redefinable Header元素(3.1.3)根据[R11][R12]生成Participant元素(3.1.4)根据[R1][R2][R3][R4]转换成Package,并设置Package的扩展属性,添加Package到XPDLModel中(3.1.5)Scope=PackageElementsSet()//SPEM Package等元素所直接包含的元素集合(3.1.6)Goto(4)(4)在Scope中,for each WorkflowProcess层次关系r(4.1)if r∈LR(WorkflowProcess Level)//匹配{Process}(4.1.1)创建WorkflowProcess元素,根据R[5]设置WorkflowProcess元素(4.1.2)设置WorkflowProcess为Package的子元素(4.1.3)Scope=WpElementSet()//SPEM Process元素所直接包含的元素集合
(4.1.4)Goto(5)(4.1.5)增加“Start”/“End”扩展属性,以及start0,start1,end1,end0四个虚活动到WorkflowProcess元素中;(4.2)if r∈LR(Package Level)//匹配{Package,Discipline,Phase,Lifecycle},含有Package的重复嵌套(4.2.1)Scope=PackageElementSet()(4.2.2)Goto(3)(5)在Scope中,for each Activity层次关系r(5.1)if r∈LR(Activity Level) //匹配{Iteration,Activity,Step}(5.1.1)根据[R6][R7][R8]转换所有的Activity,设置Activity为WorkflowProcess的子元素(5.1.2)if(Activity包含子Activity)(5.1.2.1)创建WorkflowProcess元素(5.1.2.2)设置WorkflowProcess为Package的子元素(5.1.2.3)Scope=ActivityElementSet() //SPEM Activity元素所直接包含的元素集合(5.1.2.4)GoTo(5)(5.1.3)if(Activity包含子Step)(5.1.3.1)创建ActivitySet元素(5.1.3.2)设置ActivitySet为WorkflowProcess的子元素(5.1.3.3)Scope=ActivityElementSet()(5.1.3.4)GoTo(5)(5.1.3.5)增加“Start”/“End”扩展属性,以及start0,start1,end1,end0四个虚活动到ActivitySet元素中;(5.2)if r∈LR(Package Level) //匹配{Package,Discipline,Phase,Lifecycle},含有Package的重复嵌套(5.2.1)Scope=PackageElementSet()(5.2.2)Goto(3)(5.3)if r∈LR(WorkflowProcess Level) //匹配{Process}(5.3.1)Scope=WpElementSet()(5.3.2)Goto(3)
(5.4)遍历Scope中RAR,TR和OTR关系(5.4.1)if r∈RAR(5.4.1.1)if r∈(WorkDefinition::Performer),设置对应activity的“Performer”属性;(5.4.1.2)if r∈(Activity::Asssitant:),根据[R12]设置对应activity的扩展属性;(5.4.2)if r∈TR //匹配{precedes,ActivityParameters{kindinput/output}}(5.4.2.1)创建transitions{TR}->{transition};(5.4.3)if r∈OTR(5.4.3.1);(6)添加约束条件;(7)过程合法性检查;(8)返回XPDLModel。
所述模型转换系统基于所述的模型转换方法,模型转换系统除了要实现转换规则之外,还需要建立包括预处理器、SPEM对象生成器、XPDL DOM生成器、对象转换器在内的功能模块。上述这些功能模块的集合就是本发明所述的SPEM2XPDL模型转换系统。
SPEM2XPDL模型转换系统的体系架构图如图1所示,其中SPEM模型和XPDL模型一般被存储为XML文件格式,但是,系统并不仅限于处理XML形式的模型文件。模型在系统内部有两种形式DOM形式以及JAVA对象形式。DOM形式是模型在内存中的文档结构表示形式,可通过DOM/SAX等文档解析技术对其进行操作;JAVA对象是模型在系统中的对象表示。
针对输入和输出模型的不同,SPEM2XPDL预处理器分为两个部分SPEM模型输入预处理器和XPDL模型输出预处理器模块。
SPEM模型一般是在UML CASE工具中建立的,但具体实现中各UML CASE工具通常在模型中添加了和工具相关的模型信息例如和模型显示相关的坐标信息等,因此各工具产生的SPEM模型文件并不一样。SPEM模型输入预处理的目的是将SPEM模型文件中和UML CASE工具相关的内容清除,以得到真正有效的SPEM模型文件。其工作流程如图2所示SPEM XML文件经过净化后得到净化后的SPEM模型文件。如果该模型文件通过格式验证,则得到简化了的SPEM DOM;否则,系统提示出错信息。
XPDL输出预处理器工作流程如图3所示XPDL DOM生成器输出的DOM经过填充之后生成XPDL XML文件。如果该文件通过格式验证,则输出;否则,提示出错信息。其中对XML文件操作的技术是属于本领域人员所熟知的技术,不在此详述。
SPEM对象生成器将SPEM DOM转换为SPEM JAVA对象,首先对SPEM模型进行面向对象建模。如图4所示,表示SPEM对象生成器对SPEM模型所做的面向对象建模的主要类结构示意图。其中,接口AssocationEnd表示关联关系的关联端,其特定子类分别定义特定的关联端类型如Actor表示过程执行者,是对ProcessPerformer、ProcessRole元素的建模;WorkProduct代表活动的工作产品,是对WorkProduct、WorkProductKind元素的建模;AbstractActivity类的具体子类Activity以及Step则分别表示过程活动以及过程步骤,类Activity以及Step则分别表示过程活动以及过程步骤,是对Iteration、Activity元素以及Step元素的建模。抽象类Assocation表示关联关系,其特定子类分别定义特定的关联关系。如PerformAssocation,AssistAssocation描述了Actor和WorkProduct之间的角色—活动关系;PrecedeAssocation,StepAssocation,InputAssocation以及OutputAssocation关系则分别描述了Activity和Activity,Step和Step,WorkProduct和Activity之间的转换关系;层次关系则通过Package和Activity之间的包含关系,Activity和Activity之间的包含关系,Activity和Step之间的包含关系来表示。类Package用于描述SPEM模型中Package、Discipline、Phase、Lifecycle、Process元素,它包含属于这些元素的元素列表以及关系列表对象。SPEM生成器由Spem类实现,该类提供了模型到JAVA对象的解析方法。
XPDL DOM生成器将XPDL JAVA对象转换为XPDL DOM,需要对XPDL模型进行面向对象建模,如图5所示,表示XPDL DOC生成器对XPDL模型所做的面向对象建模的主要类结构示意图。其中,抽象类AbstractActivity用于描述XPDL模型中的Activity元素,其特定子类分别定义特定的活动类型如BlockActivity子类是对BlockActivity元素的建模,它和ActivitySet类相关联;SubFlowActivity子类是对实现类型为“subflow”的Activity元素的建模,它和WorkflowProcess类相关联;NormalActivity子类是对普通Activity元素的建模。和XPDL元模型结构一样,AbstractActivity类和Participant类相关联,表示活动和参与者之间的关联关系;AbstractActivity类和Transition类相关联,表示活动和活动之间的转换关系。另外,ExtendedAttribute类用于描述模型中的扩展属性,它可以和其它各个类相关联,表示相应模型元素的扩展属性。ActivitySet类用于描述ActivitySet元素,该类包含属于ActivitySet元素的活动列表以及活动之间的转换关系列表。WorkflowProcess类用于描述WorkflowProcess元素,该类包含工作流中的活动(如果活动的类型是BlockActivity,那么WorkflowProcess类中还包含有和该BlockActivity所对应的ActivitySet对象)以及活动的Transition关系列表。Package类用于描述Package元素,该类包含属于此Package元素所在层次的Participant列表以及WorkflowProcess列表。XPDL DOM生成器由Spem2Xpdl类实现,该类提供由JAVA对象到模型的生成方法。
转换规则库由SPEM2XPDL模型转换规则类组成,这些规则类是根据模型转换的目标XPDL对象来构建的,各转换类定义了convert()方法,用于将SPEM JAVA对象转换到XPDL对象。所述的转换规则库包括5个类ParticipantRule、ActivityRule、ActivitySetRule、WorkflowProcessRule和PackageRule,其中ParticipantRule类是对XPDL Participant元素转换规则的封装;ActivityRule类是对XPDL Activity元素转换规则的封装,ActivityRule定义了三种转换方法,分别转换到具体的Activity子类;ActivitySetRule类是对XPDL ActivitySet元素转换规则的封装,它将SPEM中含有Step(s)的Activity转换为NormalActivity,并将Steps转换为ActivitySet中包含的Activity,设置Activity之间的Transition关系;WorkflowProcessRule类是对XPDL workflowProcess元素转换规则的封装,它定义工作流的转换关系、subProcess()方法递归取得SPEM Package所包含的WorkflowProcess以及WorkflowProcess之间的层次关系;PackageRule类是对XPDL package元素的封装。
对象转换器和转换规则库一起实现所述模型转换方法中的模型转换算法,由Spem2xpdl类表示。
以上对本发明所述的SPEM2XPDL模型转换系统及转换方法进行了详细的说明,但显然本发明的具体实现形式并不局限于此。对于本技术领域的一般技术人员来说,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。
权利要求
1.一种从软件过程到工作流的模型转换方法,包括以下步骤对输入的SPEM模型文件进行输入预处理,将其简化成SPEM文档内存结构;将简化后的SPEM文档内存结构转换为SPEM JAVA对象,将SPEM模型元素之间的关系表现在SPEM JAVA对象当中;利用预定义的转换规则,将SPEM JAVA对象转换为XPDL JAVA对象;从XPDL JAVA的根对象开始,递归生成XPDL的文档内存结构元素,并最终形成XPDL的文档内存结构;将XPDL的文档内存结构输出到XPDL模型文件中。
2.如权利要求1所述的方法,其特征在于,所述的对输入的SPEM模型文件进行输入预处理的具体过程为1)将SPEM模型文件读入内存并形成原始的文档内存结构;2)分析SPEM模型的生成工具,即从文档内存结构中查找工具信息;3)根据分析出的生成工具,选择SPEM模型净化器;4)利用净化器去除SPEM模型中的冗余信息,即按照预定义的关键字来提取节点信息,忽略不相关的节点,并生成净化后的文档内存结构;5)利用SPEM模型定义文件检验处理后的文档内存结构是否仍然是SPEM模型。如果不是,则说明原始的SPEM模型文件存在错误,如果是,则进行下一步处理。
3.如权利要求2所述的方法,其特征在于,所述的步骤2)具体的查找过程是首先从根节点开始查找,如果成功则返回;否则查找注释节点,如果成功则返回;否则在整个模型中进行查找,如果成功则返回;否则,直接跳转到步骤5)。
4.如权利要求2所述的方法,其特征在于,所述的步骤4)中的关键字包含Package、Discipline、Phase、Lifecycle、Process、Iteration、Activity、Step、WorkProduct、WorkProductKind、ProcessPerformer、和ProcessRole。
5.一种从软件过程到工作流的模型转换系统,包括预处理器,用于实现对SPEM模型的输入预处理以及XPDL输出预处理;SPEM对象生成器,用于将SPEM模型转换为SPEM JAVA对象;XPDL DOM生成器,用于将XPDL JAVA对象转换为XPDL文档内存对象;转换规则库,用于定义SPEM JAVA对象和XPDL JAVA对象的转换规则;对象转换器,用于根据转换规则库中定义的规则,执行对象转换。
6.如权利要求2所述的系统,其特征在于,所述的SPEM对象生成器包含对SPEM模型的面向对象建模,具体表现形式为JAVA类体系结构;所述的XPDL DOM生成器也包含对XPDL模型的面向对象建模,具体表现形式为JAVA类体系结构。
7.如权利要求2所述的系统,其特征在于,所述的转换规则库包括5个类ParticipantRule、ActivityRule、ActivitySetRule、WorkflowProcessRule和PackageRule,其中ParticipantRule类是对XPDL Participant元素转换规则的封装,ActivityRule类是对XPDL Activity元素转换规则的封装,ActivitySetRule类是对XPDL ActivitySet元素转换规则的封装,WorkflowProcessRule类是对XPDL workflowProcess元素转换规则的封装,PackageRule类是对XPDL package元素的封装。
8.如权利要求2所述的SPEM2XPDL模型转换系统,其特征在于,所述对象转换器包括Spem2Xpdl类,该类通过调用规则库中转换类的转换方法实现SPEM JAVA对象到XPDL JAVA对象的转换。
全文摘要
本发明提出了一种SPEM2XPDL模型转换系统和转换方法。该模型转换系统和转换方法严格定义了SPEM模型到XPDL模型的转换规则,将SPEM软件过程模型转换到相应的XPDL工作流过程模型,从而实现了在工作流管理系统的基础上对SPEM软件过程模型提供执行支持。本发明所涉及的SPEM和XPDL都是被广泛接受的国际标准,可以保证本发明实现的模型转换系统以及转换方法的适用性,同时也能够保证可重用性,减少重复开发模型而带来的时间和成本支出。
文档编号G06F9/44GK1896949SQ200610086659
公开日2007年1月17日 申请日期2006年6月27日 优先权日2006年6月27日
发明者王青, 万志刚, 袁峰, 李明树 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1