上一篇:
BPEL Notes
不小心發(fā)在了文章里面,才知道首頁看不到。。。,請(qǐng)大家注意。
~~~~~~~~~~~~~~~~~~
1.MDA
是什么
模型驅(qū)動(dòng)的框架。簡(jiǎn)單來說就是由原來編程序改成編模型。看起來好像是
4GL
甚至
5GL
的樣子。不過區(qū)別還是很大的,一個(gè)是語言,一個(gè)是模型。
2.MDA 和現(xiàn)有的編程語言的關(guān)系
沒關(guān)系而又有關(guān)系。沒關(guān)系是因?yàn)?/span> MDA 不與任何一種編程語言邦定。有關(guān)系是因?yàn)?/span> MDA 最后生成的還是具體編程語言的代碼。
3.MDA 的流派
轉(zhuǎn)自 Steve Cook :
1. The UML PIM camp: MDA involves the use of UML to build Platform Independent Models (PIMs) which are transformed into Platform Specific Models (PSMs) from which code is generated.
2. The MOF camp: MDA does not involve the use of UML, but instead the crucial technology is MOF, and the definition of modelling languages and language transformations using MOF.
3. The Executable UML camp: MDA involves building a UML compiler, making it a first class programming language.
4. MDD ( Model Driven Development )
個(gè)人覺得:
最好理解的是第一種,直接用 UML 描述 PIM, 然后轉(zhuǎn)換為 PSM ,然后再轉(zhuǎn)成代碼,這當(dāng)中的每一個(gè)轉(zhuǎn)換都會(huì)用到很多已有的 Pattern 或者說技術(shù)細(xì)節(jié)。
從建模方面來講最靈活和能力最強(qiáng)大的是第二種,同時(shí)也是最不好理解的。就像高等代數(shù)誰都能用,但是要從代數(shù)的基礎(chǔ)理論推導(dǎo)出高等代數(shù)的體系就不是人人都能干的了。 MOF 的抽象層次脫離了實(shí)際的世界,不過這也是它能夠靈活和強(qiáng)大的基礎(chǔ)。
最不現(xiàn)實(shí)獎(jiǎng)?lì)C發(fā)給第三種方法,可執(zhí)行的 UML 。 UML 在設(shè)計(jì)之初就沒想過要可執(zhí)行的東西。現(xiàn)在 UML 里面最像可執(zhí)行代碼的就是 OCL ,不過老早之前 Rule-based 系統(tǒng)就已經(jīng)出現(xiàn),而且向我們證明了這種系統(tǒng)只適合特定的需求和環(huán)境。那么我們能否擴(kuò)充UML的動(dòng)作語義來實(shí)現(xiàn)執(zhí)行呢?簡(jiǎn)單的情況是可以的,比如算法的描述即程序流程的描述,動(dòng)作圖或者狀態(tài)圖可以很好的描述這種情況。但是數(shù)據(jù)庫連接呢? UML 是否要擴(kuò)展到連關(guān)系型數(shù)據(jù)庫連接都要用個(gè) notation 的程度?那么 UML 就不是建模語言,而是圖形化類庫了。
第四種我不甚了解,不敢妄加評(píng)論。
4.MDA 的工具
基本上現(xiàn)在的 UML 建模工具都或多或少支持 MDA 的功能。如:
Rational Software Architect
Together
還有很多專門的 MDA 工具,如:
5.RSA 里面的 MDA
這兩天一直在看紅皮書 Patterns: Model-Driven Development Using IBM Rational Software Architect 。郁悶的事情是我手上的 RSA 是 6.0.0.0 ,而需要的版本是 6.0.0.1 而且升級(jí)要 1G 多。。。。只能紙上談兵一下了。
個(gè)人感覺:最重要的就是 transformation 。 RSA 里面是采用擴(kuò)展 profiling 的方式來實(shí)現(xiàn) MDA 的。因此首先要做的就是建立商務(wù)領(lǐng)域內(nèi)的 profile 。之后寫一些 transformation 插件來將用這些 profile 描述的需求轉(zhuǎn)化為 PIM ,之后再利用現(xiàn)有的(或者有需要的話自己擴(kuò)展的) UML to XXX 插件來轉(zhuǎn)化為 PSM 和代碼。這個(gè)方式理解起來比較簡(jiǎn)單,但是需要大量的領(lǐng)域 specific 并且設(shè)計(jì)良好的 Profile 和轉(zhuǎn)換器來支撐整個(gè)系統(tǒng)。
另一方面, transformation 插件是以 eclipse 插件的形式存在的,利用了 eclipse 本身良好的插件系統(tǒng)。有點(diǎn)自己開發(fā)工具自己用的感覺:)不過在我的機(jī)器上真的很慢。。。