一种基于编织的类图模型合成方法及系统与流程

文档序号:13218867阅读:115来源:国知局
技术领域本发明涉及计算机软件开发技术领域,特别是涉及一种软件开发过程中利用类图模型合并建模技术。

背景技术:
模型驱动架构MDA(ModelDrivenArchitecture)是由面向对象组织OMG提出的一项架构规范,其已经成为主流的面向对象的开发模型。应用MDA框架来开发软件可以将过去以代码为核心的开发方式转换成以模型为核心的开发方式,这样提高了抽象的层次,降低了开发的复杂度,提供软件的可重要性和可维护性,使得软件开发变得更加的效率。随着软件技术的发展和软件应用的深入,软件系统的规模日益庞大,在软件系统开发时往往需要从不同的角度分析系统,建立多个互补或交叠的软件模型。在软件系统开发的最后需要将不同的软件模型进行合成。在MDA框架中,模型合成的一种方法为基于编织合成方法,然,目前现有技术所揭示的基于编织的模型合成技术,只是提供了模型合成过程的一个思想,没有涉及到具体模型合成规则的实现,为此本发明有必要提出一种新的基于编织的类图模型合成技术,以弥补现有编织模型合成技术的缺失。

技术实现要素:
鉴于上述现有技术的缺失,本发明之一目的在于提供一种基于编织的类图模型合成方法及系统,其可对合成规则进行描述,提升软件开发系统的扩展性,提升软件开发效率。为达上述及其他目的,本发明提出一种基于编织的类图模型合成方法,包括:步骤S1:输入多个源模型的文件路径,其中,每一源模型包括多个类、每一类包括属性及行为;步骤S2:遍历所述源模型,根据编织模型所定义的合成规则判断所述源模型是否可以合并,若可以合并则执行下一步骤;步骤S3:将所述源模型进行类合并;步骤S4:将所述源模型进行关系合并;以及步骤S5:输入目标模型的文件路径,生成目标模型文件。较佳地,步骤S2中,该编织模型定义为:WM=(Link,Element,Organization,Constraint),其中,Link定义了将多个源模型合成为目标模型的合成规则;Organization定义合成规则执行的顺序;Constraint定义了Link中的一些限定条件;Element使合成规则能访问源模型和目标模型,并利用所制定的机制对模型元素进行操作。较佳地,步骤S2中,若所述源模型均为类图模型、每一源模型中的类的个数大于两个且关系的个数大于一个,则判定所述源模型满足合成条件。较佳地,上述步骤S3进一步包括:步骤S31:将所述源模型进行同名类合并;以及步骤S32:将所述源模型进行同不名类合并。较佳地,步骤S31进一步包括:步骤S311:执行类名合并,获取源模型中相同类名中的一个类名作为所述目标模型中的类名;步骤S312:执行属性合并,获取源模型中所有同名类中每一类的属性集合,然后将每一属性集合中的属性名称进行遍历,将属性名称一样的属性合并,将属性名称不一样的属性添加到目标模型中目标类的属性中;以及步骤S313:执行行为合并,获取多个源模型中所有同名类中每一类的行为集合,然后将每一行为集合中的行为名称进行遍历,将行为名称一样的行为合并,将行为名称不一样的行为添加到目标模型中目标类的行为中。较佳地,步骤S32中不同名类合并是指获取源模型总不同名类的属性和行为,并将不同名类储存至一列表。较佳地,步骤S4所述的关系合并是指获取源模型中的关系,以及所获取的关系中的关系类型、方法和类,并将所获取关系以预定的数据结构储存至一列表。本发明还提出一种执行本发明方法之基于类图的模型合成系统,包括:导入模块,用于根据输入的多个源模型的文件路径导入所述源模型,其中,每一源模型包括多个类、每一类包括属性及行为;检测模块,用于遍历所述源模型,根据编织模型所定义的合成规则判断所述源模型是否可以合并;合成模块,在所述检测模型检测结果为可以合并时,根据所述编织模型的定义执行所述源模型类名合并及关系合并以形成目标模型;以及导出模块,用于根据输入的目标模型的文件路径导出所述源模型文件。综上所述,本发明主要是透过编织模型定义了模型合成语义,以便在模型检测、合成时按照定义的语义进行模型合成,与现有技术相比,本发明在使得软件开发复杂度降低、开发效率提高的同时,还使得模型合成规则进行形式化描述、,进而使得模型合成规则的描述能力更强、可扩展能力更强。附图说明下面将以明确易懂的方式,结合附图说明优选实施方式,对一种基于编织的类图合成方法及系统的上述特性、技术特征、优点及其实现方式予以进一步说明。图1是显示本发明所述的源模型、目标模型中的类图关系;图2是本发明所定义的编织模型框架图;图3是本发明之基于编织的类图模型合成方法的主要步骤示意图;以及图4是本发明之基于编织的类图模型合成系统主要组成结构示意图。附图标号说明:40.导入模块,41.检测模块,42.合成模块,43.导出模块。具体实施方式为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。本发明所揭示的基于技术方案,用于将两个或多个源模型的所有元素进行合并最后生成目标模型,所生成的目标模型与源模型类型相同且包含源模型中所有元素。本发明所述的源模型、目标模型均为类图模型,以图1所示的类图的继承关系为例:图1所示的(a)原型中源模型1中A继承于B,源模型2中C继承于B,继承关系的类型中不同的类继承于相同的父类B。在进行模型合成生成目标模型的时候将两个不同的子类同时继承于相同的父类。子类的属性和行为保持不变,父类的属性和行为将源模型1和源模型2中属性和行为进行合并。图1所示的(b)为原型(a)所示继承类型的例子。(b)中源模型1为Student继承于Person,Person的属性为name和ID,行为为action1和action2;源模型2中Teacher继承于Person,Person的属性为name,行为为action1。在合成之后的目标模型中,Student和Teacher继承于Person,Person的属性为name和ID,行为为action1和action2。请参阅图2,其定义了本发明所使用的编织模型的框架图,藉由该框架定义了本发明的编织模型语义,形成模型合成规则对图1所示的源模型进行合并。所谓的编织模型就是将所有的模型合成规则表示为一种连接的并将这些连接定义其中的一种模型。编织模型的定义如下所示:WM=(Link,Element,Organization,Constraint)●Link(连接):将源模型和目标模型中的元素连接起来,表示一个合成规则;●Organization(组织):多个连接可能存在于一个编织模型中,组织根据模型合成的语义,将这些合成规则按一定的顺序排列确保转换能够按照一定的步骤执行;●Constraint(约束):定义了连接中的一些限定条件,例如连接的先决条件和连接的几个端点之间的约束等;●Element(模型元素引用):可以使得合成规则能够访问源模型和目标模型,并利用特定的机制对模型元素进行操作。图2中的SrcM为模型合成的源模型,相当于图1所示的(a)原型中的A类和C类,图2中的Link则是上述定义的模型合成的算法,也就是将两个以上源模型合成目标模型的规则,Organization是将规则进行有序的组织,即规则执行的先后顺序。SrcM通过调用Link,按照Organization的顺序执行Link,最终获得目标模型DesM,相当于图1所示(a)原型中的B类。基于上述编织模型定义的语义执行类图模型合成方法的详细步骤如图3所示,该方法以下步骤:步骤S1,输入待合成的两个以上源模型的文件路径。为了方便代码的描述,源模型、目标模型和规则均采用xml进行描述。本发明之其他实施例中,亦可以其他描述语言对源模型及目标模型进行描述。步骤S2,遍历所述源模型,根据上述编织模型定义的合成规则判断待合成的源模型是否满足模型合成的条件,若满足则进行下一步骤,否则接收本方法。本发明中所述模型合成的合并条件主要是从3个方面进行论述的,其一是从源模型的整体来限定,其二是从类的方面来限定模型合成的条件,其三是从关系的方面来限定模型合成的条件。简而言之,要保证待合成的源模型都是类图,每个源模型中的类的个数要大于两个并且关系的个数要大于一个才满足模型合成条件。步骤S3,对源模型进行合成,首先是对同名类的合并。在同名类的合并过程中,主要分为三个部分,分别为类名的合并、类中属性的合并和类中行为的合并。对于类名的合并,由于在合并之前已经检测到同名,所以目标模型类名只取源模型中相同类名中的一个即可。对于类中属性的合并,首先要分别获取源模型中两个同名类中的属性集合,然后将这两个集合中属性的名称进行遍历,如果名称一样的就进行合并,如果名称不一样,则将不一样的属性添加到目标类的属性中。对于类中行为的合并,也是要分别获取源模型中两个同名类中的行为集合,然后将这两个集合中行为的名称进行遍历,如果名称一样的就进行合并,如果名称不一样,则将不一样的行为添加到目标类的行为中。步骤S4,同名类合并完成后进行不同名类的合并。在找出了同名类之后,源模型中剩下来的就是不同名的类。对于不同名类的合并主要分为三个部分,分别为找到除同名类外其他的类,获取不同名类中的属性和行为,将不同名类存入指定的列表中。步骤S5,进行关系的合并。完成关系的合并同样也需要三个部分,分别为获取源模型中的关系,获取关系中的类型、方向和类,将关系按照一定的数据结构存入指定的列表中。请参阅图1,关系合并时,是获取源模型1、2中的关系,以及关系类型(继承关系)、方向(A指向B,C指向B)和类(及类A、C、B)。步骤S6:在完成了模型的合成后,输入目标模型的输出路径,会在指定的路径下生成目标模型的xml文件,从而完成了类图的模型合成。图4所示者为本发明提出的用于执行图3所示方法的系统架构图。如图4所示,本发明之基于编织的类图模型合成系统包括导入模块40、检测模块41、合成模块42以及导出模块43,以下即对该些模块之间的逻辑关系及功能进行详细描述。导入模块40,用于根据输入的多个源模型的文件路径导入所述源模型。检测模块41,遍历所述源模型,根据上述编织模型所定义的合成规则判断导入的源模型是否可以合并,如上述可知,只要导入的源模型都是类图,每个源模型中的类的个数要大于两个并且关系的个数要大于一个则满足模型合成条件,进而启动合成模块42进行模块合成。合成模块42,根据上述编织模型的定义对源模型进行类合成及关系合成形成目标模型,具体的类合成关系合成过程参见上述步骤S3、S4及S5。导入模块43,更加输入的目标模型的文件路径导出所述源模型文件。应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1