CN109976727B - 一种基于设计模式的mvc架构模式识别方法 - Google Patents

一种基于设计模式的mvc架构模式识别方法 Download PDF

Info

Publication number
CN109976727B
CN109976727B CN201910254646.5A CN201910254646A CN109976727B CN 109976727 B CN109976727 B CN 109976727B CN 201910254646 A CN201910254646 A CN 201910254646A CN 109976727 B CN109976727 B CN 109976727B
Authority
CN
China
Prior art keywords
mvc
mode
ontology
pattern
target system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910254646.5A
Other languages
English (en)
Other versions
CN109976727A (zh
Inventor
李必信
尹强
王璐璐
孔祥龙
廖力
周颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN201910254646.5A priority Critical patent/CN109976727B/zh
Publication of CN109976727A publication Critical patent/CN109976727A/zh
Application granted granted Critical
Publication of CN109976727B publication Critical patent/CN109976727B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于设计模式的MVC架构模式识别方法,该方法包括:本体构建、本体推理和扩充、以及查询扩充后的本体等四个步骤。构建概念层本体是将Observer模式、Strategy模式以及MVC架构模式组成原理结合起来,构建MVC架构模式本体;构建特定目标系统的MVC架构模式本体是通过信息提取将目标系统源代码中实体之间的关系表示成RDF三元组,再结合MVC架构模式概念层本体构成特定目标系统的MVC架构模式本体;推理是推理机结合推理规则自动化的推理目标系统的架构模式本体,得到扩充后的本体;查询是对推理后扩充的本体采用本体查询语言查询MVC架构模式实例。本方法能够自动化的识别MVC架构模式,并且可实施性高,操作便利。

Description

一种基于设计模式的MVC架构模式识别方法
技术领域
本发明是一种MVC架构模式自动化识别的方法,主要用于解决软件持续演进过程中监测MVC架构模式动态变化的问题,属于逆向工程和模式识别技术交叉领域。
背景技术
架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题,架构模式与软件设计模式类似,但具有更广泛的范围。模型-视图-控制器[(Model-View-Controller,MVC)模式将一个交互式应用程序分为三个组件,即模型、视图、控制器。由Trygve R首创并第一个在Smalltalk-80环境下实现。模型包含核心功能和数据;视图向用户显示信息;控制器处理用户输入。视图和控制器共同构成用户接口,变更传播机制确保了用户接口和模型之间的一致性。MVC模式目前广泛应用于桌面应用程序和Web信息系统中,极大地提高了系统的运行速度和稳定性,同样也使得软件易维护和易扩展。在软件的后期维护和二次开发的过程中,如何理解MVC软件系统的整体架构和如何改进MVC软件系统对于MVC模式软件系统的维护和二次开发是非常重要。
软件架构模式的识别,核心都是要解决两个问题:模式的描述和模式的识别。目前国内外对架构模式识别的研究还不是很广泛,在已有的研究中还存在识别技术自动化程度不高、可实施性差等问题。Thomas Haitzer提出一种基于架构原语的半自动化架构模式识别方法,主要使用DSL(Domain Specific Languages)来表示架构模式,他们将该方法实现为工具Pattern Instance Documentation Tool,但是需要将每个具体系统表示成DSL,需要开发人员了解具体的目标系统,自动化程度和可实施性不高;H.Yan介绍了工具DiscoTect,可识别运行时面向对象系统的架构模式,通过观察系统的运行时行为预测系统的动态架构,而系统的运行又受到各种环境因素的影响,日志不可能真实反应系统的运行状况,导致预测出现误差。
本发明提出来的一种基于设计模式的MVC架构模式识别方法,通过Observer模式、Strategy模式以及MVC架构模式组成原理构建可复用的MVC架构模式概念层本体,结合从源代码中提取出的程序依赖图构建RDF三元组形成特定目标系统的MVC架构模式本体,将本体交由本体推理机自动推理得到扩充的本体,最后通过本体查询语言进行查询,得到MVC架构模式实例。
发明内容
本发明的目的是提出一种基于设计模式的MVC架构模式识别方法,该方法能够自动化识别目标软件系统中所运用的MVC的模式以及MVC模式的运用情况。
为了实现上述目的,本发明的技术方案如下:
一种基于设计模式的MVC架构模式识别方法,包括以下四个步骤:
步骤一:构建MVC概念层本体,针对MVC模式,用描述逻辑给出MVC架构模式形式化定义,根据描述逻辑在本体里描述架构模式;
步骤二:构建特定目标系统的MVC架构模式本体,对目标系统的源码进行信息提取,构建相应的个体及个体之间的关系,两者结合构成特定目标系统的MVC架构模式本体;
步骤三:推理特定目标系统的MVC架构模式本体,根据源码构建出的个体和架构模式的描述,结合推理规则推理得到扩充后的特定目标系统架构模式本体;
步骤四:查询扩充后的本体,采用本体查询语言对推理后的本体进行查询得到MVC模式实例。
构建MVC概念层本体,具体如下:首先将MVC架构模式分解成Observer模式和Strategy模式,MVC架构模式中的视图是Observer模式中的观察者,Strategy中的环境类,在JAVA的GUI应用程序中,视图组件中的类都继承自Swing或者AWT基类;模型是Observer模式中的被观察者;控制器是Strategy中的策略。MVC架构模式的识别就转化成设计模式的识别,构建MVC架构模式的形式化描述是构建两个设计模式的形式化描述并且将抽象的架构模式转化为具体的设计模式,从而将模式组件之间的关系映射到目标系统的源代码中去,利用MVC架构模式的组成原理将Observer模式和Strategy模式结合起来构成了MVC架构模式的抽象描述,最后采用本体中OWL语言描述抽象的MVC架构模式,即MVC架构模式概念层本体。
构建特定目标系统的MVC架构模式本体,具体如下,采用源代码解析工具(JAVA语言主要采用JDT)对目标系统的源代码进行解析,提取出源代码中实体之间有关MVC架构模式的依赖关系,构建程序依赖图。程序依赖图的定义包括节点集合V={v1,v2,v3,…vi…,vn}其中vi表示节点,1≤i≤n,n是节点总数;边的集合包括E={e1,e2,e3,…ej…,em},其中ej表示边,1≤j≤m,m是总的边数;节点的类型包括方法(method)和类(class);边的类型包括继承(extend)、实现(implement)、聚合(aggregation)、组合(composite)、包含(contain)、函数调用(invoke)、实例化(instantiation)。然后利用RDF语言对程序依赖图进行描述构成实例层本体,实例层本体定义包括instance=(vr,es,vq),其中vr和vq表示节点,es表示从vr到vq的边,r和q表示节点的编号,s表示边的编号,最后将实例层添加到概念层本体里面中去,形成特定目标系统的MVC架构模式本体。
推理特定目标系统的MVC架构模式本体,具体如下,首先根据概念层本体编写推理规则,再结合推理规则采用本体推理机对特定目标系统的MVC架构模式本体进行推理,得到扩充后的本体,扩充后的本体相比推理前的本体中个体之间的依赖关系更加全面。
查询扩充后的本体,具体如下:本体在经过推理变成知识库扩充了的本体,采用本体查询语言查询扩充后的本体可以筛选出MVC架构模式实例,即MVC架构模式实例,MVC架构模式定义包括MVC={Mi,Vj,Ck},其中Mi表示模型的实例,Vj包括视图的实例,Ck表示控制器的实例,i表示模型实例中包含的文件个数,j表示视图实例中包含的文件个数,k表示控制器实例中包含的文件个数。
相对于现有技术,本发明的有益效果如下:
1)本发明主要提出一种基于设计模式的MVC架构模式识别方法,主要帮助开发人员在后期维护和重构过程中更加快速地理解目标系统,减少维护成本;
2)该方案采用Observer模式和Strategy模式来描述MVC架构模式,能将抽象的MVC架构模式对应到具体的代码实现中去,使得描述更加精确,提高了识别结果的精度;
3)通过本体推理机可以提高识别的自动化程度,不需要开发人员参与到识别过程当中去;
4)构建可复用的MVC架构模式概念层本体可以运用到不同的目标系统中,提高了识别的可实施性。
附图说明
图1是MVC架构模式示意图。
图2是构建特定目标系统MVC架构模式本体流程图。
图3是MVC架构模式推理过程流程图。
图4是设计模式表示的MVC架构模式图。
具体实施方式
为了加深对本发明的认识和理解,下面以开源软件clone来进一步介绍本实施例,clone是一个采用MVC模式开发的小游戏。
实施例1:参见图1-图4,一种基于设计模式的MVC架构模式识别方法,包括以下四个步骤:
步骤一:构建MVC概念层本体,针对MVC模式,用描述逻辑给出MVC架构模式形式化定义,根据描述逻辑在本体里描述架构模式;
步骤二:构建特定目标系统的MVC架构模式本体,对目标系统的源码进行信息提取,构建相应的个体及个体之间的关系,两者结合构成特定目标系统的MVC架构模式本体;
步骤三:推理特定目标系统的MVC架构模式本体,根据源码构建出的个体和架构模式的描述,结合推理规则推理得到扩充后的特定目标系统架构模式本体;
步骤四:查询扩充后的本体,采用本体查询语言对推理后的本体进行查询得到MVC模式实例。
构建MVC概念层本体,具体如下:首先将MVC架构模式分解成Observer模式和Strategy模式,MVC架构模式中的视图是Observer模式中的观察者,Strategy中的环境类,在JAVA的GUI应用程序中,视图组件中的类都继承自Swing或者AWT基类;模型是Observer模式中的被观察者;控制器是Strategy中的策略。MVC架构模式的识别就转化成设计模式的识别,构建MVC架构模式的形式化描述是构建两个设计模式的形式化描述并且将抽象的架构模式转化为具体的设计模式,从而将模式组件之间的关系映射到目标系统的源代码中去,利用MVC架构模式的组成原理将Observer模式和Strategy模式结合起来构成了MVC架构模式的抽象描述,最后采用本体中OWL语言描述抽象的MVC架构模式,即MVC架构模式概念层本体。
构建特定目标系统的MVC架构模式本体,具体如下,采用源代码解析工具(JAVA语言主要采用JDT)对目标系统的源代码进行解析,提取出源代码中实体之间有关MVC架构模式的依赖关系,构建程序依赖图。程序依赖图的定义包括节点集合V={v1,v2,v3,…vi…,vn}其中vi表示节点,1≤i≤n,n是节点总数;边的集合包括E={e1,e2,e3,…ej…,em},其中ej表示边,1≤j≤m,m是总的边数;节点的类型包括方法(method)和类(class);边的类型包括继承(extend)、实现(implement)、聚合(aggregation)、组合(composite)、包含(contain)、函数调用(invoke)、实例化(instantiation)。然后利用RDF语言对程序依赖图进行描述构成实例层本体,实例层本体定义包括instance=(vr,es,vq),其中vr和vq表示节点,es表示从vr到vq的边,r和q表示节点的编号,s表示边的编号,最后将实例层添加到概念层本体里面中去,形成特定目标系统的MVC架构模式本体。
推理特定目标系统的MVC架构模式本体,具体如下,首先根据概念层本体编写推理规则,再结合推理规则采用本体推理机对特定目标系统的MVC架构模式本体进行推理,得到扩充后的本体,扩充后的本体相比推理前的本体中个体之间的依赖关系更加全面。
查询扩充后的本体,具体如下:本体在经过推理变成知识库扩充了的本体,采用本体查询语言查询扩充后的本体可以筛选出MVC架构模式实例,即MVC架构模式实例,MVC架构模式定义包括MVC={Mi,Vj,Ck},其中Mi表示模型的实例,Vj包括视图的实例,Ck表示控制器的实例,i表示模型实例中包含的文件个数,j表示视图实例中包含的文件个数,k表示控制器实例中包含的文件个数。
应用实施例:
一种基于设计模式的MVC架构模式识别方法,包括以下四个步骤:
步骤一:构建MVC概念层本体,即构建MVC架构模式本体,
MVC模式包含模型、视图和控制器三个组件,MVC模式示意图如图1所示,该模式通过Observer模式(观察者模式)来分离模型和视图,视图是Observer模式中的观察者,模型则是Observer模式中的被观察者,一旦模式的数据发生变化,模型将通知有关视图,利用Observer模式也有利于模型和视图之间的解耦合。MVC的控制器是接受用户输入和响应用户输入的组件,将响应机制封装在控制器对象中,要想实现不同的响应策略只要用不同种类的控制器实例替换即可,视图和控制器之间是用Strategy模式(策略模式)来实现的,视图是Strategy模式中的Context(环境类),控制器则是Strategy模式中的策略。另一方面,绝大部分JavaGUI应用中,都使用了Swing工具包或者AWT工具包,所以视图中的类都必须要继承JavaSwing和AWT中的基类,根据这个特征可以识别出MVC中视图中具体的类。
综上所述,本方法提出的MVC模式识别技术通过识别Observer模式和Strategy模式来实现MVC模式的识别,MVC模式中的视图是Observer中的观察者、Strategy中的环境类;模型是Observer中的被观察者;控制器是Strategy中的策略,具体如图4所示。MVC模式的识别就转化成设计模式的识别,构建MVC模式的本体是构建两个设计模式本体的结合并且将抽象的架构模式转化为具体的设计模式,从而将模式组件之间的关系映射到具体的代码中去。
对应的部分MVC架构模式概念层本体描述如下:
[view_rules1:(?viewJAVA:extendsJAVA:javax.swing.JPanel)
->
(?viewrdf:typeOB:ConcreteObserver)]
[view_rules2:(?viewJAVA:extendsJAVA:javax.swing.JFrame)
->
(?viewrdf:typeOB:ConcreteObserver)]
//relation of observer pattern
[observer_rule:(?observerrdf:typeJAVA:NormalClass),
(?observerJAVA:isA?Aobserver),
(?AobserverJAVA:contain?Aupdate),
(?observerJAVA:contain?update),
(?updateJAVA:override?Aupdate),
(?subjectJAVA:isA?Asubject),
(?subjectrdf:typeJAVA:NormalClass),
(?subjectJAVA:aggregation?Aobserver),
(?AsubjectJAVA:contain?Anotify),
(?subjectJAVA:contain?notify),
(?notifyJAVA:override?Anotify),
(?notifyJAVA:invoke?Aupdate)
->
(?observerrdf:typeOB:ConcreteObserver),
(?Aobserverrdf:typeOB:AbstractObserver),
(?subjectrdf:typeOB:ConcreteSubject),
(?Asubjectrdf:typeOB:AbstractSubject)]
[strategy_rule:(?concretecontextJAVA:contain?addListenMethod),
(?addListenMethodJAVA:invoke?contextMethod),
(?contextMethodJAVA:invoke?controllerMethod),
(?controllerMethodrdf:typeJAVA:AbstractMethod),
(?strategyJAVA:contain?controllerMethod),
(?contextJAVA:aggregation?strategy),
(?addListenMethodJAVA:instantiation?context),
(?strategyrdf:typeJAVA:AbstractClass),
(?concretestrategyJAVA:extends?strategy)
->
(?contextrdf:typeSY:Context),
(?concretecontextrdf:typeSY:Context),
(?strategyrdf:typeSY:Strategy),
(?concretestrategyrdf:typeSY:Strategy)]
[mvc_rule1:(?viewrdf:typeOB:Observer)
->
(?viewrdf:typeMVC:View)]
[mvc_rule2:(?viewrdf:typeSY:Context)
->
(?viewrdf:typeMVC:View)]
[mvc_rule3:(?controllerrdf:typeSY:Strategy)
->
(?controllerrdf:typeMVC:Controller)]
[mvc_rule4:(?subjectrdf:typeOB:Subject)
->
(?subjectrdf:typeMVC:Model)]
步骤二:构建特定目标系统MVC架构模式本体
特定目标系统MVC架构模式本体构建主要分为信息提取、个体构建和合并三个部分,流程图如图2所示。
2.1信息提取
通过源码解析工具生成源程序的AST树,根据AST树上的信息,得到程序关系依赖图。信息提取的主要提取的实体有类和方法,提取的耦合关系有继承(extend)、实现(implement)、聚合(aggregation)、组合(composite)、包含(contain)、函数调用(invoke)、实例化(instantiation)。
部分程序依赖图如下:
boardobject.Ball.Ball
GClassMethodEdge slave:java.awt.Color type=instantiation
GMethodEdge slave:boardobject.Ball.attachObserver type=invoke
GMethodEdge slave:boardobject.Ball.setVelocityY type=invoke
GMethodEdge slave:boardobject.Ball.setVelocityX type=invoke
boardobject.Cezerye
GClassMethodEdge slave:boardobject.Cezerye.Cezerye type=contain
GClassMethodEdge slave:boardobject.Cezerye.1Cezerye type=contain
GClassMethodEdge slave:boardobject.Cezerye.delete type=contain
GClassMethodEdge slave:boardobject.Cezerye.notifyAllObservers type=contain
GClassMethodEdge slave:boardobject.Cezerye.attachObserver type=contain
GClassMethodEdge slave:boardobject.Cezerye.getEvent type=contain
GClassMethodEdge slave:boardobject.Cezerye.setEvent type=contain
GClassMethodEdge slave:boardobject.Cezerye.repOK type=contain
GClassMethodEdge slave:boardobject.Cezerye.setTime type=contain
GClassMethodEdge slave:boardobject.Cezerye.getTime type=contain
GClassEdge slave:boardobject.BoardObject type=extends
GClassEdge slave:boardobject.Observable type=implements
GClassEdge slave:events.Event type=aggregation
GClassEdge slave:java.util.ArrayList type=composition
GClassEdge slave:observer.Observer type=aggregation
2.2个体构建
个体构建过程是将信息提取得到的程序依赖图构建成本体中的个体(RDF三元组)。RDF(资源描述框架)将实体之间的关系用三元组表示,分为主体、谓词、客体三个部分,有效的描述出源代码中类、方法等实体之间的关系。
部分RDF三元组如下:
BuildingPanelextendsjavax.swing.JPanel
GameWindow extends javax.swing.JFrame
GameWindow composite controller.PauseController
ClickHandleaggregationcontroller.Controller
BoardModelaggregationobserver.Observer
BoardModel contain BoardModel.notifyAllObservers
BoardModel.notifyAllObservers invoke Observer.update
BoardModelimplementboardobject.Observable
3.3合并
主要工作是是将目标系统的个体(RDF三元组)作为个体添加到MVC概念层本体中去形成特定目标系统MVC架构模式本体,这一步可以通过本体工具Jena完成。
步骤三:推理特定目标系统的MVC架构模式本体;
本体推理的过程主要依赖本体推理机,本体推理过程最关键的步骤是根据概念本体来生成推理规则,规则中包含已知事实和推理后需要得到的新知识,从而将MVC实例层的个体与MVC概念层的Class对应上,得到扩充后的本体。将概念层本体描述对应到推理机的规则;将实例层构建的个体对应到推理机的事实,也就是已知知识,推理过程如图3所示。目前比较流行的推理机有RACER,FaCT,Pellet等,都是基于Tableau算法。
步骤四:查询扩充后的本体;
本体在经过推理完了后,变成了一个知识库扩充了的本体,针对扩充的知识库,需要从新扩充进来的知识中寻找想要的结果,就要用到本体的查询,采用Jena中的SPARQL语言查询扩充后的本体可以筛选出MVC架构模式实例,即MVC架构模式实例,MVC架构模式定义包括MVC={Mi,Vj,Ck},其中Mi表示模型的实例,Vj包括视图的实例,Ck表示控制器的实例,i表示模型实例中包含的文件个数,j表示视图实例中包含的文件个数,k表示控制器实例中包含的文件个数。
clone的部分MVC实例如下:
view
JAVA:observer.CezmiObserver
JAVA:observer.WinPanelObserver
JAVA:gui.BeginningPanel
JAVA:gui.ClickHandler
JAVA:observer.GizmoObserver
JAVA:observer.PlayerObserver
JAVA:observer.Observer
JAVA:gui.BuildingPanel
JAVA:gui.BoardPanel
JAVA:gui.GameWindow
JAVA:observer.CezeryeObserver
JAVA:observer.BallObserver
controller
JAVA:controller.DeleteGizmoController
JAVA:controller.AddGizmoController
JAVA:controller.RotateGizmoController
JAVA:controller.QuitController
JAVA:controller.PauseController
JAVA:controller.PlayController
JAVA:controller.MoveGizmoController
JAVA:controller.LoadController
JAVA:controller.SaveController
JAVA:controller.Controller
JAVA:controller.ResumeController
model
JAVA:model.BoardModel
JAVA:physics.GeometryReference
JAVA:physics.GeometryInterface
JAVA:physics.SimpleGeometry
JAVA:physics.GeometryCompare$AddStringThunk
JAVA:boardobject.Ball
JAVA:boardobject.Cezerye
JAVA:boardobject.RightTokat
JAVA:physics.GeometryCompare$StringThunk
JAVA:physics.GeometryCompare
JAVA:boardobject.Takoz
JAVA:boardobject.Cezmi
JAVA:boardobject.Firildak
JAVA:boardobject.Observable
JAVA:boardobject.Gizmo
JAVA:physics.GeometryImpl
JAVA:boardobject.TriangleTakoz
JAVA:model.Player
JAVA:boardobject.SquareTakoz
JAVA:boardobject.Tokat
JAVA:boardobject.LeftTokat
需要说明的是,上述实施例仅仅是本发明的较佳实施例,并没有用来限定本发明的保护范围,在上述技术方案的基础上做出的等同替换或者替代,均属于本发明的保护范围。

Claims (2)

1.一种基于设计模式的MVC架构模式识别方法,其特征在于,所述方法包括以下步骤:
步骤一:构建MVC概念层本体,首先将MVC架构模式分解成Observer模式和Strategy模式,再利用MVC架构模式的组成原理将Observer模式和Strategy模式结合起来构成了MVC架构模式的抽象描述,最后采用本体OWL语言描述抽象的MVC架构模式;
步骤二:构建特定目标系统的MVC架构模式本体,采用源代码解析工具对目标系统的源代码进行解析,提取出源代码中实体之间的依赖关系,在利用RDF语言对依赖关系进行描述构成实例层本体,最后将实例层本体添加到概念层本体中去,形成特定目标系统的MVC架构模式本体;
步骤三:推理特定目标系统的MVC架构模式本体,首先根据概念层本体编写推理规则,再结合推理规则采用本体推理机对特定目标系统的MVC架构模式本体进行推理,得到扩充后的本体,扩充后的本体相比推理前的本体中个体之间的依赖关系更加全面;
步骤四:查询扩充后的本体,采用本体查询语言查询扩充后的本体可以筛选出MVC架构模式概念的实例,即MVC架构模式实例,
所述步骤一:构建MVC概念层本体,具体如下:
首先将MVC架构模式分解成Observer模式和Strategy模式,MVC架构模式中的视图需要同时满足如下三个条件:它是Observer模式中的观察者,它是Strategy中的环境类,它继承自Swing或者AWT基类;模型是Observer模式中的被观察者;控制器是Strategy中的策略,MVC架构模式的识别就转化成设计模式的识别,利用MVC架构模式的组成原理将Observer模式和Strategy模式结合起来构成了MVC架构模式的抽象描述,最后采用本体中OWL语言描述抽象的MVC架构模式,即MVC架构模式概念层本体;
所述步骤二:构建特定目标系统的MVC架构模式本体,具体如下,采用源代码解析工具JAVA语言主要采用JDT对目标系统的源代码进行解析,提取出源代码中实体之间有关MVC架构模式的依赖关系,构建程序依赖图,程序依赖图的定义包括节点集合V={v1,v2,v3,…vi…,vn}其中vi表示节点,1≤i≤n,n是节点总数;边的集合包括E={e1,e2,e3,…ej…,em},其中ej表示边,1≤j≤m,m是总的边数;节点的类型包括方法(method)和类(class);边的类型包括继承(extend)、实现(implement)、聚合(aggregation)、包含(contain)、组合(composite)、函数调用(invoke)、实例化(instantiation),然后利用RDF语言对程序依赖图进行描述构成实例层本体,实例层本体定义包括instance=(vr,es,vq),其中vr和vq表示节点,es表示从vr到vq的边,r和q表示节点的编号,s表示边的编号,最后将实例层添加到概念层本体里面中去,形成特定目标系统的MVC架构模式本体。
2.根据权利要求1所述的基于设计模式的MVC架构模式识别方法,其特征在于,所述步骤四:查询扩充后的本体,具体如下,采用本体查询语言查询扩充后的本体可以筛选出MVC架构模式实例,即MVC架构模式实例,MVC架构模式定义包括MVC={Mi,Vj,Ck},其中Mi表示模型的实例,Vj包括视图的实例,Ck表示控制器的实例,i表示模型实例中包含的文件个数,j表示视图实例中包含的文件个数,k表示控制器实例中包含的文件个数。
CN201910254646.5A 2019-03-31 2019-03-31 一种基于设计模式的mvc架构模式识别方法 Active CN109976727B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910254646.5A CN109976727B (zh) 2019-03-31 2019-03-31 一种基于设计模式的mvc架构模式识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910254646.5A CN109976727B (zh) 2019-03-31 2019-03-31 一种基于设计模式的mvc架构模式识别方法

Publications (2)

Publication Number Publication Date
CN109976727A CN109976727A (zh) 2019-07-05
CN109976727B true CN109976727B (zh) 2022-07-08

Family

ID=67081991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910254646.5A Active CN109976727B (zh) 2019-03-31 2019-03-31 一种基于设计模式的mvc架构模式识别方法

Country Status (1)

Country Link
CN (1) CN109976727B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110989340B (zh) * 2019-11-04 2022-03-22 武汉船用电力推进装置研究所(中国船舶重工集团公司第七一二研究所) 一种智能控制器的设计方法
DE102019218458A1 (de) * 2019-11-28 2021-06-02 Robert Bosch Gmbh Verfahren und Software-Werkzeug zum Vornehmen ausführbarer Spezifikationen bei der Systementwicklung oder -Validierung komplexer funktionaler Systeme

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040049505A (ko) * 2002-12-06 2004-06-12 한국전자통신연구원 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법
CN107885528A (zh) * 2017-11-17 2018-04-06 东南大学 一种基于本体的架构模式建模方法
CN108228158A (zh) * 2018-01-18 2018-06-29 东南大学 一种基于本体的架构行为模式识别方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040049505A (ko) * 2002-12-06 2004-06-12 한국전자통신연구원 설계 패턴을 이용한 아키텍쳐 기반의 재공학 방법
CN107885528A (zh) * 2017-11-17 2018-04-06 东南大学 一种基于本体的架构模式建模方法
CN108228158A (zh) * 2018-01-18 2018-06-29 东南大学 一种基于本体的架构行为模式识别方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于逆向工程的本体构建方法研究";张联超等;《计算机工程与设计》;20080407;第28卷(第24期);第6012-6015,6019页 *

Also Published As

Publication number Publication date
CN109976727A (zh) 2019-07-05

Similar Documents

Publication Publication Date Title
CN109976727B (zh) 一种基于设计模式的mvc架构模式识别方法
Gomaa et al. A multiple-view meta-modeling approach for variability management in software product lines
Dunin-Kęplicz et al. Taming complex beliefs
Li et al. Applying Petri nets in active database systems
Chaudhri et al. Object-oriented knowledge bases in logic programming
Cross Fuzzy ontologies: The state of the art
CN103955369A (zh) 一种基于扩展uml的软件模糊自适应建模工具构造方法
Lezoche et al. Conceptualisation approach for cooperative information systems interoperability
CN109976805B (zh) 一种基于本体的事件驱动架构模式识别方法
Tingting et al. Capability-oriented architectural analysis method based on fuzzy description logic
Eriksson The JESSTAB approach to Protégé and JESS integration
Angele et al. A Model of Expertise in KARL
Motz et al. OWL Extended with Meta-modelling.
Nowak et al. Graph-based Rule Editor.
Guerrero et al. Designing lattices of truth degrees for fuzzy logic programming environments
Aguilar et al. An Approach for the Structural Learning of Chronicles
Delugach et al. Representing software component dependencies using conceptual graphs
Textor et al. Automated IT Management using Ontologies
Dehkordi et al. Evaluation of software architecture using fuzzy color Petri net
Hernandez et al. Clio: A schema mapping tool for information integration
Gu et al. Runtime models for analysing and evaluating quality attributes of self-adaptive software: A survey
Rozic Representing spatial and domain knowledge within a spatial decision support framework.
Textor et al. Semantic processing in iT management
Yeh et al. An intelligent solution support system for spatial modelling and decision support
Huang Analysis of artificial intelligence based Petri net approach to intelligent integration of design

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant