一种基于本体的架构模式建模方法与流程

文档序号:14120032阅读:201来源:国知局
本发明涉及软件的逆向工程领域,尤其涉及一种基于本体的架构模式建模方法。
背景技术
::软件架构是早期开发阶段的主要技术成果,描述了系统的功能要素及其相互关系。在系统架构中,有关所使用模式的信息是当今架构知识的重要组成部分。许多架构设计方法考虑将架构模式作为基本设计概念,因为架构模式为系统环境中重复出现的设计问题提供了经过验证的解决方案。关于产品中使用的模式的信息还可以为软件产品评估系统的质量属性,即性能和可靠性等提供有价值的洞见。因此,在软件系统的开发、维护和演进过程中,对系统架构模式的深入了解至关重要。系统的早期决策和专家知识,包括软件体系结构和架构模式,通常会作为指导开发过程的纲领被记录在文档中,以防止误解或丢失。设计文档描述了当前可用的信息,例如现有的成品和专家知识。设计文档是在更高的抽象层面获得对系统的整体理解的主要方法之一,特别是在代码中没有明确信息的情况下。不幸的是,架构文档经常是过时的,更新有很大的延迟,并且在细节和形式上不一致。此外,系统的架构通常在其开发时被记录,进化过程导致初始设计的衰减,并导致设计和已构建的架构之间的分离。在其他情况下,开发团队可能会在长期维护及交接过程中丢失文档,或者它们并不总是可用的,例如某些开源软件。在计算机领域,本体定义为共享概念模型的明确的形式化规范说明。网络本体语言(owl)是一种用于创建本体的知识表示语言,它的基础是描述逻辑(descriptionlogic)。基于本体进行架构模式建模并用于架构模式识别具有诸多优势:(1)概念模型独立于具体实现,建模时可专注于描述架构模式组件及其它们之间的关系,使概念模型具有较强的抽象能力;(2)将领域知识组织为网状的层次结构,使得领域建模可以从少量的领域知识入手,早期工作易于展开,且该结构易于增量的扩展,使得从概念到领域知识的各个层次可以方便的复用;(3)将领域知识与高层概念相关联,用领域知识阐释高层概念,使得在传统模式识别方法中只能手动或半自动化进行工作可以自动化进行,同时提高了识别的精确度。技术实现要素:本发明所要解决的技术问题是针对
背景技术
:中所涉及到的缺陷,提供一种基于本体的架构模式建模方法,目的是通过本体将概念模型和领域知识统一建模,并使用领域知识阐述高层概念,最终用于架构模式的识别,使得架构模式识别的自动化程度及精度得以提升。本发明为解决上述技术问题采用以下技术方案:一种基于本体的架构模式建模方法,包括以下步骤:步骤1),模式库搜索:根据欲使用的概念模型,从预设的模式库中搜索并确定能够被复用的概念模型及领域模型;步骤2),概念建模:在能够被复用的概念模型的基础上,依据架构模式的设计方案,对架构模式的构成组件以及构成组件之间的关系进行概括和表示;步骤3),领域建模:基于概括和表示的组件以及组件之间的关系,在模式库中能够被复用的领域模型的基础上,对软件系统实现中对应的领域知识进行描述,得到扩充的领域模型;步骤4),概念-实现映射:依据步骤3)中构造的扩充的领域模型,利用领域知识将步骤2)中概括和表示的组件以及组件之间的关系映射为软件系统实现中对应的元素;步骤5),新模式入库:将步骤2)中概括和表示的组件以及组件之间的关系、步骤3)中构造的扩充的领域模型、步骤4)中映射的元素添加进模式库,以便在相似场景下复用。作为本发明一种基于本体的架构模式建模方法进一步的优化方案,所述步骤2)中,对架构模式的构成组件以及构成组件之间的关系进行概括及表示的具体步骤为:步骤2.1),使用描述逻辑的概念和角色描述架构模式的组件及组件之间的关系;步骤2.2),将描述逻辑转述为网络本体语言owl中的类和属性,并选取owl为知识表示的载体。作为本发明一种基于本体的架构模式建模方法进一步的优化方案,所述步骤3)的具体步骤为:步骤3.1),参照模式库中能够被复用的领域模型,将软件系统实现中相关的领域知识划分为相对独立的若干部分;步骤3.1),针对模式库中不存在的或不完善的领域知识进行增量建模;步骤3.1),利用领域知识对步骤2)中概括和表示的组件以及组件之间的关系进行阐述,形成owl本体间的网状层次结构。本发明采用以上技术方案与现有技术相比,具有以下技术效果:1.概念模型独立于具体实现,建模时可专注于描述架构模式组件及其它们之间的关系,使概念模型具有较强的抽象能力;2.将领域知识组织为网状的层次结构,使得领域建模可以从少量的领域知识入手,早期工作易于展开,且该结构易于增量的扩展,使得从概念到领域知识的各个层次可以方便的复用;3.将领域知识与高层概念相关联,用领域知识阐释高层概念,使得在传统模式识别方法中只能手动或半自动化进行工作可以自动化进行,同时提高了识别的精确度。附图说明图1是方法的流程示意图;图2是mvc架构模式。具体实施方式下面结合附图对本发明的技术方案做进一步的详细说明:图1给出了基于本体的架构模式建模方法的流程示意图,下面对各个步骤进行展开。1、模式库搜索将已构建的概念模型、领域模型采用owl为表示形式存储起来进行统一管理,形成架构模式的“模式库”,以便重复利用这些模型进行架构模式的识别,以及利用已有本体的组织关系,增量的扩充新的概念、新的领域知识。在利用知识库中已有的模型进行模式识别时,可直接选取合适的模型与待识别的系统进行匹配,也可以基于已有模型进行扩充,再与待识别系统进行匹配。对模式库中已有模型的查找是通过搜索操作进行的,搜索既可以人工进行,也可以通过半自动化、甚至自动化的形式进行。搜索过程以及搜索结果的展示形式与owl本体的存储形式有关。当前本体的存储形式主要有文本文件、传统关系数据库以及专门用于本体存储的三元组数据库等。对模式库的扩充需要开发人员对已有本体有一定的了解。通过搜索模式库获取相关本体后,可以使用本体开发工具加速本体的开发,已知的本体编辑工具有protégé等。对于应用本身以及初级用户来说,更多的情形是通过搜索直接使用已有本体。应用程序可以设计并实现建立在模式库之上的中间层,例如形式良好的可视化工具等,方便初级用户的使用。在这样的工具中,往往对模式库的搜索操作进行了封装,增强了搜索结果的可用性。如图2所示,以下以mvc(modelviewcontroller)架构模式为例,对概念建模、领域建模以及概念-实现映射进行了进一步说明。2、概念建模概念建模对架构模式的抽象概念进行概括,因此概念模型不涉及具体实现,因此具有高度的抽象能力。概念建模的基础是描述逻辑,描述逻辑中不同的构子具有不同的表达能力,不同构子用于推理的性能不一。owl的两个子语言owllite、owldl分别与描述逻辑的扩展语言和具有对应关系。在概念建模阶段,使用描述逻辑对相关概念进行表述。以下先对描述逻辑进行简要介绍,再以mvc架构模式的建模为例,介绍概念建模的过程。dl的一种基本属性语言是除了原子概念a,的构子还包括顶部概念底部概念(⊥),原子否定交值约束和受限存在约束其中r、s是原子角色,c、d是概念描述。中概念描述的语法规则是:令是由域(即非空集合)和解释函数组成的解释。对于每个原子概念a,而对于每个概念角色r,概念描述的语义定义如下:概念和角色的复杂描述可以使用上面的这些构造函数来构建。此外,引入术语公理来描述概念或角色之间的关系,包括包含公理和等价公理(c≡d,r≡s)。对于所有解释如果则c≡d(r≡s);如果则除了基本属性语言之外,还可以应用其他构子来扩展它,包括并完全存在量化和数量约束(≥nr,≤nr)等。在这些构子中,是通过任意概念的否定获得的。而角色层次存在量化和数量约束均是角色构子,因为它们增加了对角色的限制。其他角色构子,如否定传递闭包(r+)和逆(r‐)等,提供更多的表达能力。吸收了dl的思想,本体描述语言owl的两种子语言owllite和owldl对应于基于这些构子的语言扩展。下面使用描述逻辑对mvc架构模式进行描述。mvc的示意图如图2所示。在mvc架构模式中,模型(model)代表核心数据和功能,它通常包含通知机制以便在数据更新时通知关联的视图(view)和控制器(controller)。而视图和控制器如果需要接收这种通知,则需向模型注册。视图一般表现为用户界面,负责向用户展示数据,其数据的来源是通过访问模型获得的。而控制器通常包含了用户操作的处理过程,当用户发出操作时,视图请求控制器的处理。控制器通过解析视图的处理请求,访问模型获取相应的数据,以便更新视图的显式状态。现定义以下概念对mvc架构模式进行概括:1)架构模式:由若干个必要的模式构件构成的整体;2)模式构件:构成架构模式的组成部分,mvc中的m、v和c分别称为mvc模式的模式构件;3)构件元素:构成模式构件的元素,例如多个元素构成了view,则称这些类是v的构件元素;4)构件关联:模式构件之间的关联是通过构建元素的关联体现的。将以上描述使用描述逻辑进行表示:其中定义的概念包括mvc、archpattern(架构模式)、component(模式构件)、model(model模式构件)、view(view模式构件)、controller(controller模式构件)、modelelement(model的构件元素)、viewelement(view的构件元素)以及controllerelement(controller的构件元素)。定义的角色包括containscomponent(关联架构模式与模式构件)以及containselement(关联模式构件与构件元素)。值得指出的是,上述本体描述是对mvc架构模式的一种普通概括。这种概括是普适的,独立于系统的实现,不与特定的领域知识相关联。同时这种概括是对mvc架构模式的一种理解,架构建模允许其他不同的理解共同存在。例如,还可以通过借鉴架构描述语言定义的构件来描述架构模式,在架构描述语言acme中,可以使用的构件包括组件、连接件、端口等。3、领域建模领域建模旨在对特定领域的知识进行描述。以javaswing为例,如图1所示,可以将相关领域知识划分为java以及swing两部分。其中java.owl是对java语言的描述,诸如java语言中的包、类、成员函数等概念,不涉及与swing相关的部分。而java.swing.owl是对swing的描述,诸如哪些类是swing工具包提供的。构建java本体时,并不过多的考虑它怎样被其他本体重用,而仅仅专注于其本身的构建。实际上,它可以重用于基于java的任何领域知识,例如swing。显然swing是特定于java的,因此将swing本体的构建建立在java语言之上,复用java本体,并进行若干扩展,完成swing本体的构建。如果java本体已存在于模式库,则可以通过搜索将其找出,否则需要首先构建java本体,进而构建swing本体,两者处于不同层次,之间具有依赖关系。以下使用“知识网”一词代表这种网状的层次结构。知识网链接不同领域的本体,相互连接的有向边绘制了知识网的一条依赖路径。有向边的尾部(例如mvc.owl)存在于较高的层次,头部(例如java.swing.mvc.owl)存在于较低的层次。在一条依赖路径中,较低层次的本体建立在较高层次的本体之上,因此较低层次的本体结合了更多的领域知识。知识网的结构使其易于选择性的重用以及增量的扩展:首先,对特定领域的建模集中在对其本身知识的描述上。这种建模不将它本身置于考虑如何在更低的层次对其进行复用的上下文中,例如上文java本体的构建。正因为这种建模是特定领域知识的忠实表述,使得它能够复用于任何针对这一领域的其他本体中。其次,知识网不要求在一开始就提供全面且完整的领域知识的描述。例如很难在短时间内对java语言的各个方面进行建模,相反,我们可以立即使用类(class)、域(field)、成员函数(method)等概念建立java的一个简单本体。一旦对知识网中的某一节点进行了扩展,新的知识对依赖路径上的任何下层节点都是可见的。再次,为了更自由地组合本体,概念和角色可以选择性地复用,以防某些知识是不正确的或不需要的。在模式识别过程中,指定的概念和角色可以被隐藏。通过这种方式,与这些概念和角色相关的知识可以被剔除。4、概念-实现映射在架构模式的识别过程中,一个不可避免的问题是架构模式的组件是如何实现的,或者说相应的组件对应于哪些实现。概念-实现映射利用领域知识对概念模型进行阐释,实现了从架构模式的抽象定义到系统实现的映射。将上述步骤中构建的概念模型以及领域知识转述为owl本体,形成了如图1所示的知识网。其中mvc.owl对应于mvc模式的概念模型,java.owl、java.swing.owl为相关的领域知识,而java.swing.mvc.owl基于两种模型进一步描述了从概念到实现的映射关系。利用上述本体即可识别使用javaswing实现的系统中的mvc模式。针对mvc模式,概念-实现映射需要解决模式构件(model、view、controller)的识别问题,以及构件元素(modelelement、viewelement、controllerelement)的识别问题。而模式构件的识别又归结于构件元素的识别,因此从构件元素的映射着手。对于viewelement,由于视图表示用户界面,而在javaswing中,用户界面的开发是通过对swing中的标准组件进行重用实现的。这种重用通常表现为对标准组件的继承、组合等,因此将viewelement映射为系统实现中具有以下特征(不限于)的类:1)继承了java.awt.graphics2d类,或成员方法的参数包含java.awt.graphics2d类(绘图相关);2)继承了javax.swing.jlabel类,或javax.swing.jpanel类,或javax.swing.jtooltip类,或javax.swing.abstractaction类(图形组件、用户操作相关);3)实现了java.awt.event.actionlistener接口,或javax.swing.table.tablecelleditor接口,或javax.swing.tree.treecellrenderer接口(图形组件、用户操作相关)。在owl中对此进行定义的一个示例为,将viewelement定义为如下等价类:●(hasmethodsome(hasparamvaluejava.awt.graphics2d))or(extendsvaluejava.awt.component)or(extendsvaluejava.awt.graphics2d)or(extendsvaluejava.awt.event.mouseadapter)or(extendsvaluejavax.swing.abstractaction)or(extendsvaluejavax.swing.abstractbutton)or(extendsvaluejavax.swing.abstractcelleditor)or(extendsvaluejavax.swing.jbutton)or(extendsvaluejavax.swing.jcheckbox)or(extendsvaluejavax.swing.jdesktoppane)or(extendsvaluejavax.swing.jdialog)or(extendsvaluejavax.swing.jframe)or(extendsvaluejavax.swing.jlabel)or(extendsvaluejavax.swing.jmenu)or(extendsvaluejavax.swing.jmenubar)or(extendsvaluejavax.swing.3panel)or(extendsvaluejavax.swing.jpopupmenu)or(extendsvaluejavax.swing.jtable)or(extendsvaluejavax.swing.jtooltip)or(extendsvaluejavax.swing.transferhandler)or(extendsvaluejavax.swing.border.abstractborder)or(extendsvaluejavax.swing.plaf.basic.basicpanelui)or(extendsvaluejavax.swing.plaf.metal.metalbuttonui)or(extendsvaluejavax.swing.tree.defaultcellrenderer)or(hasfieldvaluejavax.swing.jcheckbox)or(implementsvaluejava.awt.datatransfer.transferable)or(implementsvaluejava.awt.event.actionlistener)or(implementsvaluejava.awt.event.itemlistener)or(implementsvaluejava.awt.event.mouselistener)or(implementsvaluejava.awt.event.mousemotionlistener)or(implementsvaluejava.awt.event.windowlistener)or(implementsvaluejavax.swing.table.tablecelleditor)or(implementsvaluejavax.swing.tree.treecellrenderer)其中的角色hasmethod表示类中声明的成员函数,hasparam表示函数声明的参数类型,extends表示类继承,implements表示接口实现。而some、value等为owl的manchester语法中的关键字。对于controllerelement,由于视图通常注册了图形组件动作(如按钮点击等)的回调函数,在回调函数中又请求控制器进行进一步处理,而在javaswing中通常回调函数具有actionevent参数,因此将controllerelement映射为系统实现中声明在回调函数中的类。在owl中对此进行定义的一个示例为,将controllerelement定义为如下等价类:●declaredinsome(hasparamvaluejava.awt.event.actionevent)其中的角色declaredin表示类声明在函数体中。对于modelelement,由于模型封装了核心数据,因此对于使用文件保存数据的应用,通常会继承、扩展file类,或将file类作为函数参数以读写数据。因此将modelelement映射为具有上述特征的类。在owl中对此进行定义的一个示例为,将modelelement定义为如下等价类:●extendsvaluejava.io.fileorhasfieldvaluejava.io.fileorhasmethodsome(hasparamvaluejava.io.file)5、新模式入库由于不同的架构设计人员对架构模式的理解存在差异,且架构的设计者与实现者通常并非同一人员,因此在现实系统中,架构模式的设计和实现通常不会完全遵循标准的模式定义。知识网的结构允许在概念层次、领域层次甚至粒度更小的层次复用已有知识。对于概念模型,可以定义“标准”模式的变体(例如mvc.varient.owl);对于领域层次,也可以定义概念的不同阐释(例如java.swing.mvc.varient.owl)。而对于概念-实现映射而言,知识网的可扩展性使得概念-实现映射也是可扩展的。从应用的角度看,知识网允许与用户的交互。例如用户可以定义一些过滤器用于实现映射(java.swing.mvc.filter.owl)。因此虽然上述mvc的映射实例并不完善,但它有能力结合更多的领域知识,使得对相关知识的描述更全面、更精确。随着不同模式的建模、已有模型的扩展以及本体开发人员之间的交流,新的知识不断加入模式库,使得模式库不断扩充。这将为模式建模提供更多的素材,而基于模式库的应用也将具有更广的涵盖面,从而进一步提升架构模式的识别范围、自动化程度和精确度。本
技术领域
:技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1