PDM的模型驱动架构(MDA),你真的拥有了吗?

       

    说起模型驱动架构(MDA),很多人可能并不熟悉,但是,如果你听说过这样的一些概念后,你已经在与MDA打交道了,这几年,在各个厂家的PDM产品中,大家好像都在提一种这样的理念,所谓“随需而变”,“动态业务建模”,“模型驱动业务”等,在这些概念的背后实际上就是MDA技术。

 

       的确如此,特别是国产PDM经过了很多年的砺练之后,在产品上逐步找到了真正的方向,那就是MDA,其实这并不是什么新的东西,OMG(国际对象管理集团)在很多年以前的PDM Enablers中,已经将MDA阐述得非常清晰了。

 

        在国内PDM厂商的MDA架构之路,基本上是有两种方式,一种是自主开发,例如天河,思普等。其中天河从2002年就开始自主研发基于MDA架构的PDM;思普而是完全抛弃了原有的产品,利用J2EE技术重新打造了新的基于MDA架构的PDM产品;另外就是从国外引进的,例如:神州数码和CAXA。其中CAXA PDM V5 实际上就是将smarteam的基本部分OEM过来,并进行了一定程度的二次开发而来的。神州数码的PDM是从韩国收购而来的,最近北京艾克斯特与Think3组建合资公司,也将Think3 PDM引入到中国,艾克斯特业明确表示看好国外PDM的架构。

 

        MDA的确将管理软件的精髓抓住了,那就是在管理方面“只有最合适,没有最好”;管理软件的实施过程中的个性化是必然的,所以必须有一套能定制企业业务模型的工具来非二次开发的模型定制,然后PDM软件按照这个专门为企业定制的管理模型来运行。当然,现在也有很多PDM提出最佳的行业实践,这也是将比较成功的企业业务模型作为快速在行业中来推广的一种办法。

 

       但是MDA带来软件不仅仅是优势,作为软件的架构师,我经常考虑的和要解决的反而是MDA给PDM开发带来的问题,“如何在不降低MDA的愿景和功能的前提下,尽可能解决由于MDA给软件带来的负面问题”。其中有些问题是很关键的,例如性能, 还有就是如何降低对IT管理员的技能要求。

       很多人用过MDA的PDM产品,包括国外的产品,其中最深的感受莫过于就是性能,MDA架构下的PDM的性能的确是一个挑战。

       例如,很多人都说smarteam在数据量大的情况下速度会比较慢,大家可以看这样一个帖子,http://www.e-works.net.cn/ewkbbs/dispbbs.asp?boardid=50&id=39394&star=1&page=1

  复制如下:

发贴心情
[原創]BOM的生成速度探討
以下是引用mosesi在2005-12-26 9:11:00的发言:

SmarTeam里面取对象常用这一句 Set ThisObject = SmSession.ObjectStore.RetrieveObject(ClassId, ObjectId) 这一句操作以前测试的时候感觉要1秒多,如果80000个对象,还要不停的递归,递归里面还要作取对象之类的慢操作,速度能快吗?这恐怕是所有PDM都要考虑的问题

估計是為了各種look up table, ref class以及不同的資料庫,sql 或是歐囉摳做了前置處理

如果是我來改寫API的話,我會建議多些API選項,例如要不要取ref或是look up

或是說更清楚的讓user(寫程式的人)知道欄位

改寫API(就是first part second part third part可能再增加第四part第五part來分類)

基本上我大多的二次開發都是直接下sql 速度快的不得了,只撈自己要的欄位或值,不管是流程還是bom

只是這樣的開發將會造成升級的困難或問題

兩年半後我要對上面這些說明做些修改

一.如果直接下sql是針對屬性和自行定義的編碼,升級反而下sql的不用改,API的卻都要修改

二.使用預存程序或是批次sql的insert bom的生成是最快速的,尤其是預存程序

三.擔心BOM生成影響原先編碼或OBJECT_ID的話,可以先使用API,再使用SQL的Profiler紀錄檔來追循應添增的數據

例如last_OBJECT_ID的自我控制,以及相關link table的建立等

四.擔心生成或報表速度,或未來修改程式,請多設定View,將View供給程式或報表使用

五.經常使用並設定SQL或ORACLE本身的微調功能,變更index或是離峰時自動重新排序,是必要的

六.程式部份除SM API本身延遲過多外,自行的程式應定義成function或是減少迴圈內宣告變數或問句

 

       有人试图从二次开发的角度解决这个问题。实际上这从本质上是由于MDA带来的结果,由于MDA架构的要求,PDM数据库中真正存储企业业务数据的数据表结构都是动态的。任何数据的读取所真正执行的SQL语句都是PDM在运行过程中自动生成,而数据库表结构是否符合大数据量的存储,sql语句是否适应大数据量的要求都是一种技术上的挑战。有意思的是有人解决速度慢的问题是通过二次开发直接操作数据库的方式来解决,这实际上已经将MDA的所有优势抛弃了。也有公司降低了MDA的能力,比如不完全的支持面向对象的建模,将影响性能的建模功能暂时不去实现,这当然也是我们不愿意看到的。

 

     还有本来一般数据库系统中能很容易实现的数据库双机热备,在MDA架构下也会面临挑战,因为双击热备要求数据库系统能系统发生硬故障时自动切换到另外一台数据同步备份的服务器上。但是以往这种数据的同步是要求数据库结构是一致。但是MDA却要求数据库结构能动态的发生变化,那么如何解决数据库的同步备份问题呢?也许大家说PDM应用有这样严格的要求,但是,随着业务对IT系统的依赖越来越大,这样的要求是必然会到来的!

 

      当然解决了MDA以上这些类似的问题,特别是在解决这些问题过程中用到的思路和方法,就是软件公司的核心技术能力。我也希望国内PDM厂商在拥有新技术的产品的同时,真正形成自己的核心技术能力。

 

 

 

 

 

 

 

发表于: 2008-07-05 22:37 清风明月 阅读(1126) 评论(1)  收藏(0) 好文推荐
# re: PDM的模型驱动架构(MDA),你真的拥有了吗?
2010-03-02 17:51 | 玉人 | 1楼
1105人阅读,竟然没有评论,可见技术性太强了
只有我这个不懂技术的人来评一下喽,呵呵
标题  
姓名  
主页
内容   
请输入验证码:
*
(如果看不到图片,请多刷新几次页面)
  登录   Top
[使用Ctrl+Enter键可以直接提交]