日前和IBM大牛談到什么是MDA,有所感,記錄下來吧。
如果說到MDA最正宗的定義,當然是來自www.omg.org/mda(圖片貼不上來screen.width/2)this.width=screen.width/2" vspace=2 border=0>)
其中說的是,MDA是為應對業務和技術的變化提供的一種開放的、中立的開發方法。
然后說到了MDA的目的:將業務/程序邏輯與底層平臺技術分離開來,這是為了保護軟件開發投資方的利益。
但如何實現這一點呢?其實說得也有夠清楚了,基于OMG提供的各種標準。這些核心標準包括:UML、MOF、XMI、CWM等(其實現在很重要的標準QVT應該納入其中,QVT正在制定中)。
其它很多地方談到的MDA的定義,包括說它是一個方法論什么的也有,很多是從MDA的目的去說,包括:
MDA的目標是模型的可執行。
MDA是使模型成為開發的核心工件。
……
這些都沒錯。
IMHO,我覺得MDA的定義,或者說Model Driven的定義可以分為兩種:
1)廣義的模型驅動:按目的來看,凡是在模型自動生成代碼、模型可執行、以模型為中心的開發方面的工作,都可以說是模型驅動的。
在這個定義下,微軟的VSTS是模型驅動的,不論它是否支持UML標準,或者用什么形式來支持OMG的標準。國內的KCOM (http://www.kcomsoft.com) 也是模型驅動的……
2)狹義的模型驅動:從實施的方法來看,狹義的模型驅動是指基于OMG制定的這一系列標準所做的工作。這里,核心的概念有兩個:four-layered model architecture和MOF。四層模型結構以MOF為基礎以一致的形式管理各種元模型和模型,并且為這些元模型和模型提供了各種模型操作的標準:如XMI、JMI、QVT等。根據統一定義的標準,有專門的廠商或開源組織去開發這些標準的執行引擎。這樣MDA應用的開發中需要進行模型存儲、數據交換、模型轉換的地方都可以直接使用這些引擎,而不用自己去大包大攬。這其實就是標準化帶來的好處,也是OMG這樣一個標準化組織該干的事情。
從這個意義來說,我認為MDA包括了OMG對模型和元模型的基于MOF的統一管理,以及提供的各方面的模型操作標準。
這個定義下的MDA工具和應用目前也有不少,如Eclipse下的GMT、還有OptimalJ等……,http://www.modelbased.net/列出了不少。
按照這個狹義的定義得到的MDA,并不是一定要用在模型可執行等前面所說的那幾個目的上,同樣可以用在其它領域、其它目的上。
按前面所說,標準化帶來的MDA給模型操作帶來的諸多好處,涉及模型操作的很多應用都可以從中收益良多。例如MDA在MIC(Model Integrated Computing)、MDA在過程建模領域(法國Nante大學的Jean教授有好幾篇論文)的應用。那么這些算不算MDA?笑……
其實概念之爭沒有太大意義screen.width/2)this.width=screen.width/2" vspace=2 border=0>,關鍵是希望從這些辨別中產生更多的想法和加深理解。
延伸閱讀
文章來源于領測軟件測試網 http://www.k11sc111.com/