MDA模型转换

 

    MDA的一个重要思想就是将系统的功能描述和系统在特定平台上的实现分离把系统模型划分成与平台无关的模型( PIM)和与平台有关的模型( PSM) ,并建立这两种模型之间的映射关系。P IM是对系统功能和结构的形式化描述,是抽象的,代表了业务功能和行为,不受具体实现技术的影响。PSM是在特定平台上对系统功能和结构的描述,是具体的,它在PIM中添加了与平台有关的信息。PIMPSM都是通过UML来描述的。

 

    MDA还定义了模型之间的四种映射关系。①P IMP IM。该映射是对P IM的精化,主要是从分析模型到设计模型的转换。②P IMPSM。该映射主要是把抽象模型转换到与目标平台相关的模型。③PSMP IM。该映射类似于逆向工程,主要是从PSM中提取抽象模型。④PSMPSM。该映射是对PSM的精化,主要包括组件的实现、封装和配置。

     MDA中描述的PIMPSM属于概念层次上的模型,它们仅仅对模型给出了性质上的描述,没有给出具体的模型结构。如在描述P IM,指出了P IM是一种平台无关的模型,是对系统功能和结构的形式化描述,它不受实现技术的影响,但是没有描述P IM的具体模型结构。同样它也没有给出PSM的具体模型结构。然而在实现MDA思想的过程中,需要知道P IMPSM的具体模型结构,这也是实现P IMPSM转换的前提。

在下面的例子中基于J2EE平台的模型转换技术

给出了一个属于PIMDomain Model和一个属于PSMApplication Model

基于J2EE平台的模型转换技术

     DomainModel主要用来捕获在P IM中的功能,它定义的业务功能不涉及任何特定技术细节。DomainModelServiceModelClassModel组成。Service Model描述了系统对用户或外部系统提供的功能,类似于系统的APIClassModel指定了系统中必要的类,以支持业务的正常开展。通常,当一个用户需要使用某一个系统功能时,用户首先直接与ServiceModel交互,调用其中的某一个功能,然后Service Model使用ClassModel中的若干个类来共同完成这个功能。由此可见,DomainModel是独立于实现技术的面向业务模型,属于MDA模型中的P IMApp licationModel被设计用于开发基于J2EE架构的分布式多层Web 应用。它由DBMS Model, EJB ModelWebModel三个子模型组成,内容覆盖了J2EE开发的相关领域。DBMSModel描述了系统的数据持久性,对应着后台数据库。EJB Model描述了系统的业务逻辑,对应着J2EE多层架构中的业务层。WebModel描述了系统的展现,对应着J2EE多层架构中的Web 层。App lication Model的定义是基于DomainModel,它的三个子模型也对应到DomainModel中的相关部分,可以从Domain Model生成App lication Model。由此可见,ApplicationModel是基于某些技术或应用程序框架的,但是又独立于具体的代码,属于MDA模型中的PSMDomainModel是问题领域中独立于技术的模型。App licationModel是实现了Domain Model功能的软件模型。App licationModel不仅实现了DomainModel,而且也符合J2EE应用的多层架构。

Domain Mode lApplication Model的转换

     DomainModelService ModelClassModel组成,是两层结构。App licationModelDBMSModel, EJB ModelWebModel组成,是三层结构,其中EJB Model又细分为EJBEntityBeanEJBSessionBeanDomainModelApp licationModel的自身结构决定了Domain ModelApp lication Model转换的步骤和方法。具体转换方法如图3所示。总的转换方法包括两个方面: ClassModel映射到DBMSModelEJB Model中的EJBEntityBean。②Service Model映射到EJB Model中的EJB2SessionBeanWebModel

Application Model到代码的转换

     DBMSModel对应后台数据库。在转换过程中, 将根据DBMSModel中的类生成创建数据库表的SQL语句,同时要根据类中关键字属性确定表的关键字。

  EJB Model对应J2EE多层架构中的EJB层。在转换过程中, EJB Model中的每个EJBEntityBeanEJBSessionBean分别生成一个EntityBean和一个SessionBean,同时还要生成一个XML配置文件。每个EntityBean SessionBean 分别由三个Java文件组成:一个Home接口、一个Remote接口和一个实现接口的Bean类。在EJBEntityBean生成EntityBean,需要在Home接口中加入CreatefindByPrimaryKey方法;Remote接口中加入EJBEntityBean的所有方法;在实现接口的Bean类中,除了需要把EJBEntityBean的所有属性和方法加入到其中之外, 还要加入ejbCreate, ejbPostCreate, ejbLoad, ejbStore, ejbRemove, ejbActivate, ejbPassivate, setEntityContextunsetEntityContext方法。在EJBSessionBean生成SessionBean,需要在Home接口中加入Create方法;Remote接口中加入EJBSessionBean的所有方法;在实现接口的Bean类中,除了需要把EJBSessionBean中的所有属性和方法加入到其中之外,还要加入ejbCreate, ejbRemove, ejbActivate, ejbPassivatesetSessionWebModel对应J2EE多层架构中的Web层。

在转换过程中,WebModel中的每个WebServlet生成一个Servlet。在Servlet,包括Init, doGet, doPostDestroy方法,以及WebServlet中的方法。另外,为了生成完整的基于J2EE架构的程序框架,还需要产生前台用户界面。前台用户界面可以由Servlet来产生一一对应的HTML 页面,同时用户可以进行适当的设置,使页面形成特定的风格。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值