C語言花費了二十年從蠻荒之中殺出一條血路,Java苦心耕耘了近十年方成大氣,C#在Beta版本推出兩年前就開始通過各種途徑營造氣氛,砸下了數不清的美金,直到現在還未被主流應用所完全接受。而MDA(Model Driven Architecture 模型驅動架構)自從2002年被OMG(Object Management Group 國際對象管理集團)提出以后,"隨風潛入夜,潤物細無聲",未見轟轟烈烈宣傳,各大廠商卻驚人一致地爭相跟進,關于MDA的話題轉眼之間在網絡上也如火如荼地繁榮起來了。
然而MDA是什么?究竟是什么帶來了MDA?究竟MDA為IT業帶來了什么?MDA又揭開了一個怎樣激動人心的大時代的序幕呢?
挑燈看劍
Michael Guttman,CORBA的創始人,他在為《應用MDA》(國內第一本關于MDA技術的譯著)寫的序言中說道:
"是什么使得MDA同其它無數泛濫于軟件社區的三字母縮寫相比顯得如此與眾不同?第一個理由,MDA是由OMG推動的,OMG是軟件產業界最大的聯盟,OMG擁有令人羨慕的光輝的過去--它發布并維護了業界一些最成功的標準,比如CORBA和UML。"
OMG是一個獨立于各廠商的非盈利性組織,其主要宗旨是要統一不同的商業產品和標準之間的數據交換及相互操作,從而改善各廠商的軟件產品之間不兼容的情況。CORBA是OMG在中間件層次上一個顯著的工作成果,然而,這個技術上的成功的作品在商業應用上卻稱不上成功,數年之間,J2EE和DotNet相繼在中間件的層面上異軍突起。OMG的工程師們開始把眼光放到更遠的地方,他們希望在更高的層面上一統這兵荒馬亂的局面,因此,基于OMG另外一個非常成功的作品--UML,他們提出了MDA的概念。
OMG的構想是將目前的開發行為提升到更高的抽象層級--分析模型級,把針對特定計算平臺的編碼工作交由機器自動完成,這樣的情況下,業務邏輯與實現技術被成功地解耦,二者相對獨立變化,因此模型的價值在包容已有技術的條件下被最大化。這種目的根源于軟件開發的現狀,在傳統的軟件開發方法中,隨著項目的進展,設計階段產生的UML模型和代碼之間的同步變得越來越困難--代碼為了應付新增加的需求和新產生的想法而不斷變化,模型卻一直停留在原地不動,這是的模型在一段時間之后就失去了它的價值。OMG提出了一個最根本的解決方案--在MDA中,模型不再是一種輔助工具,而是開發過程的產品。一個完整的MDA應用程序包含:
一個權威的PIM;
一個或者多個PSM;
一個或者多個完整的實現 - 開發人員決定支持的所有平臺上的應用程序實現。
MDA在目前技術的基礎上,分離出了兩個抽象級別的模型:PIM(Platform Independent Model 平臺無關模型)和(Platform Specialize Mode 平臺相關模型),PIM是一個純粹的不考慮實現技術的分析模型,而PSM可以視為一個基于特定實現技術,比如J2EE的設計模型。工程師們只需要建立表達業務邏輯的PIM,剩下的工作都將由MDA引擎自動完成。描述業務邏輯的PIM將具有長久的價值,而針對特定平臺的PSM則可能會隨著平臺技術的進步而快速地遷移。在MDA開發過程中,系統的開發工作的最終產品是PIM,從PIM到PSM及至代碼實現都是由第三方的自動化工具來完成的。
為了實現MDA這一宏大構想,OMG制定了一系列的標準:
UML:UML被MDA用來描述各種模型。它并不是為MDA而生,但是作為目前最為風行的建模語言,UML已經占據了全球建模語言領域90%的市場份額,成為了建模語言事實上的標準,因此OMG將它作為MDA技術的基礎是自然而然的明智選擇。它是MDA的基礎,也是MDA最有力的武器。
MOF:MOF(Meta Object Facility 元對象機制)是比UML更高層次的抽象,它的目的是為了描述UML的擴展或者其它未來可能出現的類UML的建模語言。由此我們可以看到OMG的"野心",雖然MOF也不是為MDA而生的,但是我們可以體味到OMG的工程師們良苦的用心和長遠的目光。
XMI:XMI(XML-based metadata Interchange)是基于XML的元數據交換。它通過標準化的XML文檔格式和DTDs(Document Type Definitions)為各種模型定義了一種基于XML的數據交換格式。這使得作為最終產品的模型可以在各種不同的工具中傳遞,這一點是非常重要的,它保證了MDA不會在打破了一種束縛之后再被加上一層新的束縛。
CWM:CWM(Common Warehouse Metamodel 公共倉庫元模型)提供了一種數據格式變換的手段,在任意級別的模型上都可以使用CWM來描述兩種數據模型之間的映射規則,比如將數據實體從關系數據庫變換為XML格式。在MOF的框架下,CWM使得通用的數據模型變換引擎成為可能。
在OMG的藍圖中,UML、MOF、XMI、CWM等一系列標準分別解決了MDA的模型建立、模型擴展、模型交換、模型變換這幾個方面的問題。OMG試圖通過標準化的定義,擴大MDA的應用范圍。同時通過這樣一個可擴展的建模語言環境,IT廠商可以自由實現自己的建模語言,以及語言到可執行代碼的映射,然而不管怎么樣,都必須處于OMG的標準化框架之下。 烽煙再起
"中間件戰爭已經結束,下一個戰場是模型轉換!"
--來自于中國第一個MDA研究組織MDAChina.net的這條標語明確地闡釋了軟件開發的下一個重心。
嗅覺靈敏的IT巨頭們比誰都先看到這一點,OMG的MDA思想推出不久,IBM、Oracle、IONA等等都急忙宣稱將在自己的企業級軟件解決方案中融入MDA的思想,兩大建模工具廠商Rotional和Together也聲明自己的產品開始加入對MDA的支持,甚至連國內ERP軟件領袖企業之一的金蝶軟件也不甘寂寞,在其BOS基礎平臺的發布會上說BOS系統成功實現了MDA。且不管各位巧舌如簧的發言人是如何滔滔不絕的,單從MDA這個詞越來越頻繁地從他們口中出現這一點,就可以看出MDA已經成為了引發下一輪競爭的導火線,下一個戰場的制高點。
對于計算市場的商業個體來說,技術領域的競爭就是沒有硝煙的戰場,從計算機被發明IT產業興起以來就從來沒有停止過激烈的競爭,時至今日,人們已經在計算的戰場上征戰了五十多年。
50年前,計算機的歷史還停留在石器時代的時候,人們用把指令和數據以0/1序列的形式輸入計算機,因為那些真空管組成的龐然大物只能識別原始的機器碼。不但如此,人們還不得不為每個字節的內存絞盡腦汁,為每個時鐘周期冥思苦想--高昂的硬件成本使得機器成為計算的重心。
隨后,匯編語言的出現把人們從0和1的比特流中解放了出來,簡單的指令集代碼卻徹底地避免了人腦的思維方式二進制化。但是,不得不承認在這同時,它也延續了以機器為中心的計算方法的壽命。
20世紀60年代到70年代,硬件技術的巨大進步帶來的晶體管、超大規模集成電路、隨機存儲技術使得人們不需要再為了幾個字節的內存空間和幾個周期的時間片而花費大量精力,這使得第三代編程語言(3GL)的出現成為可能,程序員們放下了手工敲入匯編代碼這個龐大的包袱,開始花費更多的精力在應用邏輯上,之后結構化程序設計幾乎完全統治了第二次計算機浪潮后軟件開發的黃金時代。
結構化編程帶給人集中于創造性思考的快感的同時,也帶給程序員們松散凌亂的代碼和難循其蹤的復雜流程,人們還是不得不更多地從計算機的角度考慮問題,直到面向對象技術的出現。OO思想使得人們終于可以從盡可能自然的角度計算這個世界,直到現在,OO思想依然是整個程序開發行業的支柱。
最近的十年,企業級的分布式應用飛速成為主流,帶來了對系統性能、可伸縮性的嚴格要求,大量分布式系統的出現,大量異構平臺的整合需求,引發了中間件戰爭的爆發,過去的十年,是企業應用系統和中間件技術的十年。人們不再像匯編的時代那樣關心一點一滴的內存得失,而開始把更多的精力用于搭建靈巧的架構、實現變化多端的業務邏輯,因此Java得以大行其道,設計模式、AOP等等更高抽象層級的軟件理論方興未艾。
文章來源于領測軟件測試網 http://www.kjueaiud.com/