2005 年 4 月 01 日 本文來自于 Rational Edge: 在這個由三部分文章組成的系列的第一篇中,Brown 解釋了模型和建模的重要性,并介紹了四個關鍵的 MDA 的原則,同時讓你了解一下 IBM 在定義 MDA 方法和支持標準上扮演的領導者的角色。 ![]() 在最近的幾個月很多組織已經(jīng)開始對模型驅(qū)動的體系架構(MDA) 1 進行關注,MDA 是一種應用系統(tǒng)設計和實現(xiàn)的方法。對于幾個原因來說這都是非常積極的發(fā)展。 MDA 鼓勵在軟件的開發(fā)過程中有效的使用系統(tǒng)的模型,并且它支持創(chuàng)建類似系統(tǒng)的最佳實踐的重用。所謂由對象管理組織 (OMG)定義的標準,MDA 是一種組織和管理被自動化工具支持的企業(yè)體系架構和用于定義模型和推動不同模型類型之間的轉(zhuǎn)換的服務的方法。 當被 OMG 定義的 MDA 標準和用于創(chuàng)建和進化企業(yè)級軟件系統(tǒng)的術語在業(yè)界被廣泛的引用時,僅僅到目前為止, OMG 和它的成員,包括 IBM Rational ,已經(jīng)能夠在 MDA 意味著什么、MDA 將向哪里發(fā)展、MDA 的哪些方面對于今天的技術是可能的和如何在實踐中利用 MDA 上提供清晰的指導。 本文是這個由三篇文章組成的系列的第一部分,這個系列將覆蓋:在現(xiàn)今的工業(yè)中建模將如何被使用和 MDA 與當今軟件系統(tǒng)的關系(第一部分);MDA 工具支持的分類(第二部分);和在 IBM 的模型驅(qū)動的開發(fā)技術環(huán)境中 MDA 的使用樣例(第三部分)。 在這個第一部分的文章中,我們解釋了模型和建模的重要性,并介紹了四個關鍵的 MDA 的原則,同時讓你了解一下 IBM 在定義 MDA 方法和支持標準上扮演的領導者的角色 2 。 有效的企業(yè)軟件開發(fā)
這兩種思想對對象管理組織(OMG)的思想有著重大意義的影響,一個開發(fā)和支持規(guī)范以改進企業(yè)軟件開發(fā)和部署實踐的軟件組織聯(lián)盟(在下一個部分 OMG 將扮演更重要的角色)。OMG 已經(jīng)創(chuàng)建了一個概念性的框架 5 ,這個概念性的框架將平臺選擇與獨立的面向業(yè)務的決定分離開來以使在架構和演進這些系統(tǒng)時允許更大的靈活性。這個概念性框架和幫助實現(xiàn)它的標準就是 OMG 稱為的"模型驅(qū)動的體系架構(MDA)."。 6 應用的架構師使用 MDA 框架作為表示他們企業(yè)架構的藍圖,并且使用在 MDA 中的開發(fā)標準作為他們獨立于供應商和技術的"未來的證明 "。 OMG 的 MDA 的概念通過 OMG 的構建模型的標準對系統(tǒng)的交互性提供了一種開放的、供應商中立的方法:統(tǒng)一建模語言(UML),Meta-Object Facility (MOF), XML Metadata Interchange (XMI) 和 Common Warehouse Meta-model (CWM) 。企業(yè)應用的描述能夠使用這些建模標準被建立并被轉(zhuǎn)化到一種主流的開發(fā)的或者是私有的平臺上,包括 CORBA ,J2EE ,.NET 和基于 Web 的平臺。 在我們開始深入的了解 MDA 之前,讓我們考慮一下在軟件開發(fā)中進行建模的基本概念和好處。
建模的基本原理
系統(tǒng)和模型轉(zhuǎn)換
模型、建模和 MDA
追溯到程序設計的最早的日子,在軟件工程的世界里,建模有著悠久的傳統(tǒng)。多數(shù)近期的革新都是關注于符號和工具的,這些工具允許用戶非常容易的映射到在特定的操作系統(tǒng)上能夠被編譯的編程語言代碼的方式來表示對軟件的架構師和開發(fā)人員有價值的系統(tǒng)透視圖。這些實踐的當前情況是使用統(tǒng)一建模語言(UML)作為首選的建模符號。UML 允許開發(fā)團隊在相應的模型中獲取一個系統(tǒng)的各方面的重要特征。這些模型之間的轉(zhuǎn)換主要是手工進行的。UML 建模工具典型的支持需求的跟蹤和模型元素之間的依賴關系,通過支持文檔和補充的咨詢信息提供如何作為大范圍開發(fā)工作的一部分來維護同步模型的最佳實踐的指導。 一個有用的刻畫當前實踐特色的方法是看一下用于同步模型和源代碼的不同的方法。這在圖 1 中被列舉 7 圖 1 顯示了今天軟件從業(yè)者使用的建模方法的光譜。每一個類型代表了一種獨特的幫助軟件從業(yè)者創(chuàng)建能夠運行在特定運行時平臺上的應用(代碼)和模型與代碼之間的關系的模型的使用。 8 圖 1: 建模的光譜 今天,多數(shù)的軟件開發(fā)人員仍然在使用 單獨-代碼的方法(在建模光譜的左端,圖 1)并且根本沒有分離的定義模型。他們幾乎完全的依靠他們編寫的代碼,并且他們直接在一種集成的開發(fā)環(huán)境(IDE)中(比如,IBM WebSphere Studio , Eclipse 或者 Microsoft VisualStudio 9 )通過第三代的編程語言如 Java 、C++ 或者 C# 直接的表示他們正在建立的系統(tǒng)的模型。他們所做的任何"建模"都是以嵌入在代碼中的編程的抽象形式進行的(比如,包、模塊和接口等等),這些方式是通過程序庫和對象層次的機制進行管理的。任何分離的體系架構的設計模型都是不正規(guī)的和依靠直覺的,并且存在于白板上、PowerPoint 幻燈片上或者開發(fā)人員的腦袋中。然而這種方法對于個體開發(fā)者和小的開發(fā)團隊也許是足夠的,但是這種方法使在業(yè)務邏輯實現(xiàn)的細節(jié)中理解系統(tǒng)的關鍵特性十分的困難。此外,隨著系統(tǒng)的范圍和復雜度的增加,系統(tǒng)的演進或者在原來的設計團隊成員不能直接的與維護系統(tǒng)的團隊溝通時,這種方法對于管理這些方案的演進將是更加困難的。 一個改進是在一些適當?shù)慕7栔刑峁┝?代碼可視化。當開發(fā)人員創(chuàng)建或者分析一個應用時,他們通常希望通過一些輔助理解代碼的結構或者行為的圖形化符號來可視化代碼。作為一種編輯基于文本代碼的可選方式利用圖形化的符號也是可能的, 所以可視化的描寫變成了一種代碼的直接表示。這種描寫有時稱作代碼模型,或者實現(xiàn)模型。在允許這種畫圖的工具中(比如,IBM WebSphere Studio 和 Borland Together/J),代碼的視圖和模型的視圖可以被同時顯示;當開發(fā)人員對其中的一個進行操作時,另一個視圖也將立即進行同步。在這種方法中,圖與代碼表示緊緊的聯(lián)系在一起,并提供了在代碼級別上觀看和編輯的可選方法。 建模的更深層次的利益是通過 雙向工程(RTE)得到的,雙向工程提供了一種在描述系統(tǒng)的架構或者設計和代碼的模型之間進行雙向交換的機制。典型的情況下,開發(fā)人員將系統(tǒng)設計細化到一定的詳細級別,然后通過應用模型-代碼的轉(zhuǎn)換創(chuàng)建第一輪的實現(xiàn),這通常是手工完成的。例如,一個工作在高級別設計的團隊也許會向工作在實現(xiàn)級別上的團隊提供設計模型(也許是通過簡單的打印出模型圖或者為實現(xiàn)團隊提供包含模型的文件)。實現(xiàn)團隊轉(zhuǎn)換這個抽象、高級別的設計成為詳細的設計模型的集合和編程語言的實現(xiàn)。其中表示上的重復將作為錯誤出現(xiàn),這些錯誤既可以在設計模型中更正也可以在實現(xiàn)模型中更正。因此,如果沒有良好的紀律,抽象模型和實現(xiàn)模型常常 — 并很快 — 的因為步調(diào)不一致而結束。 工具能夠自動化的進行最初的轉(zhuǎn)換,也可以在設計模型和實現(xiàn)模型進行演進時幫助他們保持步調(diào)一致。典型的,工具可以從用戶必須進一步細化的設計模型生成代碼的框架。 10 對代碼的更改必須要在一些點上與原有的模型相一致(也就是術語"雙向工程"或者 RTE)。為了實現(xiàn)這一點,你需要一種方法來識別出被產(chǎn)生的用戶定義的代碼;在代碼中放置標記就是一種方法。實現(xiàn)這個方法的工具,比如 IBM Rational Rose 能夠支持在模型與不同實現(xiàn)語言之間雙向提供多種轉(zhuǎn)換服務。 在一種 以模型為中心的方法中,系統(tǒng)模型具有足夠的細節(jié)能夠從這些模型中生成整個系統(tǒng)的實現(xiàn)。為了實現(xiàn)這一點,模型也許應該包括,比如持久數(shù)據(jù)和非持久數(shù)據(jù)、業(yè)務邏輯和表示層元素的表示法。如果存在任何與遺留數(shù)據(jù)和服務的集成,對那些元素的接口也需要被建模。然后代碼生成過程應用一系列的模式將模型轉(zhuǎn)換成代碼,通常允許開發(fā)人員對被應用的模式進行一些選擇(比如,選擇各種不同的部署拓撲)。這種方法常常使用標準的或者私有的應用框架和運行時服務,這些應用框架和運行時服務能夠通過限制被生成應用的類型使代碼生成任務更加容易。因此,使用這種方法的工具典型的專攻于特定應用類型的生成(例如,用于實時嵌入式系統(tǒng)的 IBM Rational Rose Technical Developer 和用于企業(yè) IT 系統(tǒng)的 IBM Rational Rapid developer)。然而,在所有的情況下,模型都是被開發(fā)人員創(chuàng)建和操作的主要產(chǎn)物。 一個 單獨模型的方法在圖 1 中的編碼/建模光譜的最右端。在這種方法中開發(fā)人員把模型純粹的作為理解業(yè)務或者方案領域,或者分析被提議的方案架構的輔助手段。模型通常被作為討論、交流和在一個單獨的組織或者是跨多個組織的項目中進行分析的基礎來使用。這些模型常常出現(xiàn)在新工作的建議中,或者裝飾在辦公室的墻上和在軟件實驗室中作為一種促進對一些復雜領域理解的方法并建立一個共享的在完全不同的團隊中的詞匯表和概念集。實際上,一個系統(tǒng)的實現(xiàn),不論是從打草稿開始還是作為一個已有方案的更新,都可以從模型中分離出來。一個有趣的例子是越來越多的組織將他們的系統(tǒng)的實現(xiàn)和維護進行外包,而他們自己維護整個的企業(yè)架構的控制。 MDA:成長中的公認輿論
MDA 的理論
OMG 已經(jīng)重新關注它的策略、標準和定位來支持 MDA 方法。OMG 正在將 MDA 作為一種開發(fā)更加準確的滿足客戶需要并且在系統(tǒng)的演進中具有更好靈活性的系統(tǒng)方法來促進它的發(fā)展。MDA 方法構建在較早期的系統(tǒng)規(guī)范標準的工作上,并且為定義相互連接的系統(tǒng)提供一種全面的具有互操作能力的框架。 MDA 原則
為了支持這些原則,OMG 已經(jīng)定義了一系列的層次和轉(zhuǎn)換,他們?yōu)?MDA 提供了概念性的框架和詞匯表。特別的,OMG 確定了四種模型類型:計算無關的模型(CIM),平臺無關的模型(PIM),被一個平臺模型(PM)描述的平臺相關的模型(PSM)和一個實現(xiàn)相關的模型(ISM)。 對于 MDA 來說,“平臺”僅僅是相對特定的視圖觀點有意義的 --換句話說,一個人的 PIM 可以是另一人的 PSM 。例如,如果一個模型沒有 規(guī)定一種特定的中間件技術的選擇,那這個模型對于通訊中間件來說就是一個 PIM 。然而,當一個使用特定的中間件(比如CORBA)被決定使用時,這個模型就被轉(zhuǎn)化成了一個 CORBA 相關的 PSM 。新的模型在 ORB 的選擇上也許仍然是一個 PIM -- 在目標操作系統(tǒng)和硬件的方面這個模型也是一個 PIM 。如圖 2 所示。 ![]() 圖 2: PIM 到 PSM 轉(zhuǎn)化的例子 作為結果,一個 MDA 工具也許通過幾個步驟支持轉(zhuǎn)化一個模型,從最初的分析模型到可執(zhí)行的代碼。例如,IBM Rational XDE 的模式工具就支持這種多種轉(zhuǎn)換的開發(fā)。相比之下,一個工具(比如,IBM Rational Rose Technical Developer)能夠僅用一個步驟就將模型從 UML 轉(zhuǎn)化成可執(zhí)行的代碼。 MDA 的從業(yè)者認可轉(zhuǎn)換能夠被應用到一個系統(tǒng)的各個方面的抽象描述以添加細節(jié),使描述更加準確,或者在表示法之間進行轉(zhuǎn)換。不同類型模型之間的區(qū)別允許我們將軟件和系統(tǒng)開發(fā)想象成為一系列在不同模型表示法之間的細化。對于包括了在表示系統(tǒng)不同方面的模型之間的細化,對一個模型的細節(jié)的添加,或者在不同的模型類型之間的轉(zhuǎn)換的情況下,這些模型和他們的細化是開發(fā)方法的重要組成部分。 這里是關于模型的抽象本質(zhì)和模型所表達的詳細實現(xiàn)的三種重要思想:
在這些模型表示法和支持的轉(zhuǎn)換之下是一系列的元模型。分析、自動化和轉(zhuǎn)換模型的能力需要一個清晰、明確的方法來描述模型的語義。因此,對于一個建模方法模型的本質(zhì)本身也必須能夠以模型來表示,我們稱這種模型為元模型。例如,UML 的標準語義和符號就是用元模型描述的,工具的提供商以一種標準的方法使用元模型來實現(xiàn) UML 。UML 元模型精確的描述了類、屬性和這兩個概念之間的關系的細節(jié)。 OMG 認可對于建模來說元模型和正規(guī)語義的重要性,,并且還定義了一系列元建模級別和用于表示元模型的標準語言:Meta Object Facility (MOF)。元模型使用 MOF 正式的定義一系列建模構想的抽象語法。 模型和模型之間的轉(zhuǎn)換將使用開放的標準被說明。作為工業(yè)的聯(lián)盟,OMG 一直擁護多種用于說明系統(tǒng)和系統(tǒng)間的互連性的重要工業(yè)標準。通過這些標準,例如 CORBA、 IIOP、 UML 和 CWM ,軟件行業(yè)能夠?qū)崿F(xiàn)以前不可能的系統(tǒng)互操作能力的級別,此外,工具交換標準,例如 MOF 和 XMI ,也促進了工具的互操作。 一個簡單的例子
![]() 圖 3:PIM 到 PSM 轉(zhuǎn)換的簡單例子 在圖 3 中的簡單的 PIM 表示了一個客戶和賬號。在這個抽象級別上,模型通過類和類的屬性描述了領域的重要特征,但是并沒有描述任何關于什么樣的技術將被使用的平臺相關的選擇。圖 3 指出了三個特定的被定義的映射,或者轉(zhuǎn)換,和一些用來表示這些映射的標準來創(chuàng)建 PSM 。例如,一個方法是使用被 XML Schema Definitions (XSD) 或者 Document Type Definitions (DTD)表示的標準定義將以 UML 表示的 PSM 輸出成為 XMI 格式。然后這能被用作代碼生成工具的輸入,這個代碼生成工具為每一個以 UML 定義的類生成 Java 語言的接口定義。 通常,一系列的規(guī)則被建立在代碼生成工具中以執(zhí)行轉(zhuǎn)換。然而,代碼生成工具往往允許那些規(guī)則通過腳本語言的形式被明確的定義。 11 簡單的介紹 MDA 的理論
IBM 和 MDA
在過去的十多年中, IBM Rational 工具一直強調(diào)建模作為一種提升系統(tǒng)抽象級別的方法的重要性,軟件的從業(yè)者在這個抽象的級別上理解和構建軟件解決方案。在過去的幾年中,軟件開發(fā)行業(yè)不斷的意識到更高級別抽象的價值 — 從在機器語言級別上的代碼描述到 MDA 的出現(xiàn) — 見圖 4 。 ![]() 圖 4: 對于軟件從業(yè)者漸增的抽象級別 我們已經(jīng)看到了一系列的軟件從業(yè)者理解的軟件密集的解決方案的基本轉(zhuǎn)變。這些轉(zhuǎn)變改變了絕大多數(shù)軟件工程師們的思想。從前,他們只是關心他們自己的低級別的操作數(shù)據(jù)位和在 CPU 的寄存器之間移動字節(jié)的細節(jié);現(xiàn)在,他們將主要的時間花費在根據(jù)被支持的用例來理解用戶的問題領域和設計提供行為的服務之間的協(xié)作的方案來實現(xiàn)那些用例上。只有存在著支持高效的允許新概念被清晰的表達和共享的工具,這個在思想上意義深遠的轉(zhuǎn)變才有可能。 這個轉(zhuǎn)變的基礎當然是 UML 。它提供了一個公共概念的單一集合,這些公共概念被廣泛的應用到軟件工業(yè)中,很快的結束了當設計軟件系統(tǒng)時應該使用哪一種概念集合的長期爭論。IBM Rational 在定義 UML 中的領導角色被廣泛的認可,IBM Rational Rose 產(chǎn)品在實現(xiàn) UML 來支持大型軟件系統(tǒng)的架構方面也是同樣出眾的。相同的原則已經(jīng)被應用到了 IBM Rational Rose XDE 產(chǎn)品家族當中,它合并了豐富的建模環(huán)境和面向代碼的工具集以為在各種架構類型和特定的目標運行時平臺中創(chuàng)建方案提供全面的從業(yè)者桌面。 通過 IBM 的支持 OMG 定義的 MDA 可視化建模和開發(fā)工具,和隨著時間的推移對 MDA 的支持, IBM 將繼續(xù)這種在建模支持上的傳統(tǒng)。 IBM 對 MDA 的觀點
IBM 將 MDA 視為一種新興的關注于一種軟件開發(fā)的特殊方式的標準和技術的集合 -- 它指明了某種模型類型被使用,這些模型如何被準備和不同模型類型之間的關系。 MDA 和 實現(xiàn) MDA 的工具提供下面的方法:
總而言之,IBM 相信兩種軟件開發(fā)工具將為 MDA 提供強有力的支持:
IBM Rational 提供了這兩類產(chǎn)品。 13 在第一類產(chǎn)品中,IBM Rational Rose Technical Developer 提供了高度自動化的模型轉(zhuǎn)換和強大的代碼生成能力 — 這種能力對于嵌入式系統(tǒng)和其他技術軟件產(chǎn)品的開發(fā)人員尤其重要。類似的,IBM Rational Rapid Developer 提供了高度自動化的面向 J2EE 應用的 MDA 的實現(xiàn),它能夠集成和擴展已有的遺留系統(tǒng)。在第二個種類中,IBM Rational Rose XDE Developer 提供了模式能力、代碼模板和應用接口的合并,這允許開發(fā)人員和供應商為更加普遍的領域適用性自己開發(fā)他們的 MDA 實現(xiàn)。 IBM 在 MDA 上的領導地位
總結
我們已經(jīng)利用這個機會表明了 IBM Rational 對于 MDA 的觀點和我們的工具是如何支持被 OMG 定義的 MDA 的。基本上,當前我們的可視化和開發(fā)工具以兩種方式支持 MDA:1)通過在特定的方案領域提供高度自動化,和 2)通過允許組織容易的為自己的特定領域構建定制的模型驅(qū)動的方法來提供綜合目的的能力。隨著時間的遷移,我們也將堅定的支持 MDA 。 IBM 將 MDA 視為一系列新興的關注于軟件開發(fā)的特殊方式的標準和技術 -- 這種開發(fā)方式強調(diào)在各種抽象的級別上利用建模,最重要的是通過這些模型的信息整合和信息流。這種方法允許開發(fā)人員通過使用與他們的信息和決定最匹配的模型類型對項目作出貢獻。它也允許高級的項目成員通過他們對模型到模型轉(zhuǎn)換的定義和實現(xiàn)使他們的工作效率最大化。系統(tǒng)的分析人員、測試人員和質(zhì)量保證人員能夠在系統(tǒng)被完成之前利用模型分析系統(tǒng)和系統(tǒng)的性能。 今天,IBM 正積極的與被選擇的客戶一起工作來改進 MDA 的實踐。這些經(jīng)驗將隨著時間的推移驅(qū)動我們支持 MDA 的方法。
鳴謝
進一步的讀物
![]() ![]() ![]() ![]() 注釋
2 對于那些有興趣更多的了解一些在實踐中應用 MDA 的人有一些幫助的資源。本文末尾的"進一步的讀物"部分提供了一個有用的開始點。 3 D.K. Barry, Web Services and Service Oriented Architectures。 Morgan Kaufman , 2003 。 4 P. Clements and L. Northrop , Software Product Lines: Practices and Patterns。Addison Wesley , 2001 。 5 在本文中,一個概念性的框架是指導計劃、理解和企業(yè)方案實現(xiàn)的重要的概念和機構集合。 6 Richard Soley and OMG Staff Strategy Group , "Model Driven Architecture," November 2000 。 7 圖 1 是基于最初被 John Daniels 使用的圖的。 8 許多其他的重要生命周期產(chǎn)物也會從模型驅(qū)動方法中受益(比如,需求列表、測試用例和構建腳本)。為了簡單起見,我們將經(jīng)理放在主要的開發(fā)周期產(chǎn)物上 -- 代碼。 9 對于這個討論我們將忽略代碼本身就是一種編程模型實現(xiàn)的事實,這個編程模型將開發(fā)人員從在內(nèi)存、寄存器中操作單個的位的機器代碼中抽象了出來。 10 在一些情況下,更多的代碼框架根據(jù)模型被真實的產(chǎn)生出來。 11 本文中涉及到的更加詳細的樣例將在本系列文章的后續(xù)部分中被討論。然而,你就=可能希望了解一下 MDA 在商業(yè)工具中的例子,比如 IBM Rational Rose Technical Developer 和 Rapid Developer 產(chǎn)品( http://www.ibm.com/rational)或者應用這種方法的開放源碼的 MDA 工具(比如,AndroMDA ( http://www.andromda.org和 Jamda ( http://jamda.sourceforge.net))。 12 看一下,比如
13 使用 IBM Rational 工具創(chuàng)建 MDA 方案的詳細例子將會在本系列文章的后續(xù)部分被提供。這里提供的是 IBM Rational 工具對 MDA 支持的簡單介紹。 參考資料 T. Sloan, "Business Model Collaborations: Pushing Software Revolution." Software Magazine, September 2003: www.softwaremag.com A. Kleppe, J. Warmer, and W. Bast, MDA Explained: The Model Driven Architecture Practice and Promise. Addison Wesley, 2003. D. Frankel, Model Driven Architecture: Applying MDA to Enterprise Computing. Wiley Press, 2003. Richard Soley and OMG Staff Strategy Group, "Model Driven Architecture." November 2000. P. Harman, "MDA: An Idea Whose Time Has Come." Cutter Consortium, 2003. B. Selic, "The Pragmatics of Model-Driven Development," IEEE Software, Vol. 20, #5, September 2003. T. Gardner, C. Griffin, J. Koehler, and R. Hauser, "A review of OMG MOF 2.0 Query/View/Transformation Submissions and Recommendations Towards the Final Standard." IBM Whitepaper submitted to the OMG, September 17, 2003. D.K. Barry, Web Services and Service Oriented Architectures. Morgan Kaufman, 2003. P. Clements and L. Northrop, Software Product Lines: Practices and Patterns. Addison Wesley, 2001. A. Thomas Manes, Web Services: A Manager‘s Guide. Addison Wesley, 2003. S. Mellor et al., MDA Distilled.Forthcoming from Addison Wesley, 2004. S. Mellor et al., Executable UML: A Foundation for MDA. Addison Wesley, 2003. J. Warmer and A. Kleppe, The Object Constraint Language: Getting Your Models Ready for MDA, second edition. Addison Wesley, 2003. J. Daniels, "Modeling with a Sense of Purpose." IEEE Software, pp8-10, Jan/Feb 2002. 關于作者
|