模型驅動體系架構介紹
第三部分:MDA 如何影響迭代開發過程 級別: 初級
2005 年 8 月 01 日
本文來自于 Rational Edge:作為迭代開發框架,Rational Unified Process 或稱為 RUP,足夠靈活地適應多種項目管理方式。隨著基于 RUP 的團隊開始采用模型驅動體系架構(model-driven architecture,MDA)策略,為成功地采用 MDA,他們需要了解 RUP 中的哪些任務、工件和階段需要特別關注。
使用模型驅動體系架構(MDA)方法建立解決方案需要改變開發過程。雖然我們的經驗是許多當前關于企業軟件開發的最佳實踐仍舊適用,但是解決開發過程的模型驅動方法要求對這些實踐進行一些重要的變更。
在本文(關于 MDA 系列文章的第三部分,也就是最后一個部分)中,我們將探究那些變更以及 MDA 在現代軟件開發環境中的應用。在本系列的第一部分中,我們討論了如何將建模應用到當今的行業中,以及 MDA 與現今系統的相關性。在第二部分中,我們用這種設計并使用 IBM 的 MDA 工具包的觀點來檢驗模型驅動開發的方法。當我們從開發過程的角度來結束本系列文章的時候,我們將分析一個眾所周知的開發過程,即 Rational Unified Process 或稱為 RUP,并考慮在 MDA 項目上說明并執行過程的方式。
RUP 概述
Rational Unified Process 是當今使用中的實際標準的軟件工程過程。1RUP 的目標是確保能夠按時并在預算之內生成能夠可預見地滿足最終用戶需求的高質量軟件。RUP 為在開發組織內分配任務和職責提供規程式的方法,并已經應用到許多項目中,這些項目有各種大小和復雜度,開發團隊有大有小,且開發時間有延續幾周的,也有延續幾年的。
圖 1 以二維的形式說明 RUP 的整個體系架構。水平軸代表時間并顯示了過程生命周期的各個方面。生命周期階段的管理視圖在頂部,迭代的軟件工程和項目管理視圖在底部。垂直軸代表按照邏輯分組的規程,表示過程的靜態方面 —— 如何用過程部件、規程、活動、工作流,工件和任務來描述 RUP。
圖 1. 規程、階段和迭代的 RUP 概念
在基于 RUP 項目的任何時間點,都會有按照多種規程發生的活動。區別不同生命周期階段的東西不是缺少某些規程,而是不同規程在整個工作流中所做出貢獻的相對量?;顒拥幕旌蠒S著項目的重點和優先權的變更而隨時變化。例如,在早期的迭代中,您將更多時間花費在需求上,而在晚期的迭代中,您將更多的時間花費在實現上。
RUP 階段和迭代
從管理觀點出發,RUP 軟件生命周期包括四個順序的階段,每個階段都以一個主要的里程碑結束。進行評估以確定是否達到階段的目標。令人滿意的評估結果可以使項目向下一個階段進行。簡要地說,RUP 生命周期的階段是:
RUP 和 MDA
目前,RUP 沒有提供對如何將軟件開發的 MDA 式樣整合到整個過程中的具體指導。這不奇怪,RUP 反映當前行業的最佳實踐,且只有在領域內很好地確定之后才能編制方法。MDA 是一個新興的方法,應用到 RUP 項目中重要的 MDA 最佳實踐僅到現在才變得可以得到。
然而從我們的經驗中可以得來許多重要的方式,我們可以以這些方式用 MDA 項目的最佳實踐來增強 RUP。特別是,RUP 的靈魂,即以體系架構為中心的迭代的開發過程,與 MDA 概念保持高度一致,并為在 MDA 方面取得成功提供極好的基礎。
然而,存在著一些領域對 MDA 提供額外的適當指導。在此,我們考慮許多重要的關于將 RUP 應用到 MDA 項目中的重要方面。
使用 MDA 定制解決方案框架
當今的企業軟件系統很少是(如果有的話)在集成開發環境(IDE)中從零開始,一行行地被開發出來的。相反,它們是通過用具體領域的業務邏輯來擴展現有解決方案框架,通過連接(并利用)來自不同源頭的信息,并通過設計豐富環境的用戶顯示和迭代服務創建而成的。因此,隨后的開發方法不是典型的“瀑布”方案,在瀑布方案中,收集需求之后進行分析和設計,并進行系統的實現。相反,此種開發方法是連續地擴展并細化現有的部分解決方案,通過一組迭代向解決方案中添加值來達到所期望的目標。
這些形成了新系統核心的部分解決方案可能出自以下幾個來源之一:
倘若這些都是可能的,許多 IT 項目管理人所面對的主要任務是生成對領域的清晰理解,在獨立于平臺的領域模型(其支持各種類型的分析以確保正確性和一致性)中表達那種理解,并且將那種領域模型映射到一個具體平臺上,通過擴展解決方案框架進行實現。模型到模型的轉換幫助細化領域,而模型到代碼的轉換將領域模型映射到具體的解決方案框架上。
在模型到代碼的轉換中,解決方案框架起到了關鍵作用,因為它約束并指導那些類型的有意義的轉換。例如,如果您正在使用基于 Struts 的應用程序框架,那么正在創建的應用程序就具有容易理解的結構,包括可以實現業務邏輯的眾所周知的擴展點。您可以根據該知識創建一組轉換。甚至,您可以創建向導驅動的工具來將那些用于包含適當類型信息的領域模型的轉換的創建自動化。這就是方法,例如,以這種方法,工具(如 IBM Rational Application Developer)使用聚焦領域的可視化設計工具來自動生成基于 Struts 或 Java ServerFaces(JSF)的應用程序框架的代碼。更一般的是,通過將解決方案框架作為系統的基礎,撰寫模型到代碼的轉換工作就特別簡單了,并且我們獲得了結果解決方案的更大的效率、可預測性、重復性和易管理性。
總之,我們再次重申,創建軟件很少從零開始,并且模型轉換(到另一個模型或代碼)可以幫助利用現有的解決方案框架。隨著這種建立在現有軟件上的方法不斷提升,通過幫助我們將擴展并定制那些框架的方法自動化來提升 MDA 的作用和價值。一些人將這種“定制自動化”視為創建不斷復雜的系統的唯一可行的選擇,并利用我們部署的組件和技術來回應施加給我們的約束。
總結及未來方向
軟件和系統開發的模型驅動方法已經使用了一段時間了。最近,關注的焦點集中在如何增大基于 OMG 的 MDA 方法的模型驅動技術的自動化。MDA 技術可以使組織為模型到模型和模型到代碼的轉換構建自定義自動化。利用這些轉換,技術專家可以在大型開發團隊中分享他們的專家經驗。特別地,MDA 提供許多優于其他方法的益處:
在本系列文章中,我們已經探究了實現基于我們通常所使用的建模技術的 MDA 方法的許多實際的方面,以及對具體的 MDA Toolkit for IBM Rational XDE for Java 的設計和使用。這些經驗表明,雖然傳統的設計和實現實踐與 MDA 項目有關,但是仍舊存在額外的需求需要滿足以確保方法是最佳應用的。我們已經描述了許多這樣的需求并用實際例子進行了說明。
在第 2 部分中,我們將我們的重要發現分為對 MDA 實際應用的 12 個經驗。然而,這些經驗不是具體針對一組專一的技術。它們還可以應用于其他的 IBM Rational 工具中。根據我們對現有技術和實踐的經驗,包括那些在此敘述的,來自 IBM Rational 的最新一組解決方案通過提供我們認為必要的功能來支持 MDA 開發項目。因此,IBM Rational 工具為所有類型的自動化提供了一組豐富的功能,包括預定義的轉換和用于定制轉換的工具。3支持 MDA 的最新實例出現在 IBM Rational Software Architect 產品中。這是一個大范圍的工作平臺,它可以用來設計并構建支持企業系統的分析、設計和實現的各個方面的服務,包括復雜模型的編制及支持 UML 可視化建模的管理功能。具體到 MDA 項目,IBM Rational Software Architect 產品含有一個靈活的定制模式編寫環境,并支持以許多方式編制模型到模型和模型到代碼的轉換(根據預定義式樣和設計目的):
對這些技術的支持是一組幫助組織采用模型驅動方法的最佳實踐。與 IBM Rational Software Architect 整合到一起的產品利用基于 RUP 的技術來指導具體環境的開發過程。此外,可以用具體項目的額外實踐和來自在線資源(如 IBM developerWorks)的可重用資產來擴充此指導。4
致謝
本文中提到的工作已經由許多人加以貫徹,并且我們很高興對他們的貢獻表示感謝。此處討論的想法反映出 IBM 中一個很大團隊(包括 Grady Booch、Gary Cernosek、Jim Conallen、Pete Eeles、Sridhar Iyengar、Simon Johnston、Grant Larsen、Martin Nally、Jim Rumbaugh 和 Bran Selic)的思想。我們還要感謝 Mike Perrow 對本文進行有幫助地審閱。
參考資料
您可以參閱本文在 developerWorks 全球站點上的 英文原文。
[1] J. Rumbaugh,G. Booch,I. Jacobsen,“The Unified Modeling Language Reference Manual,”Second Edition,Addison-Wesley,2004。
[2] P. Kruchten,“The Rational Unified Process: An Introduction,”Addison-Wesley,1998。
[3] P. Kroll and P. Kruchten,“The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP,”Addison-Wesley,2004。
[4] Evans Data Corp.,“North American Development Survey: Volume 1, "Response to question on "Use of UML in Application Design,”Fall 2003。
[5] Codagen,www.codagen.com。
[6] ArcStyler,www.arcstyler.com。
[7] AndroMDA,www.andromda.org。
[8] openMDX,www.openmdx.org。
注釋
1例如參見 P. Kruchten,“The Rational Unified Process: An Introduction,” Addison-Wesley,1998。
2參見 http://www.accenture.com/xd/xd.asp?it=enweb&xd=services%5Ctechnical%5Ccapabilities%5Cgrnds.xml
3要了解更多細節,請參見 http://www.ibm.com/rational/mda。
4要了解更多細節,請參見 http://www.ibm.com/developerworks/cn/rational。
作者簡介![]() 由于對 IBM Rational 桌面產品的貢獻,以及對軟件行業前途的主要貢獻,他贏得了杰出工程師的頭銜。在超過十年的時間里,Alan 作為行業思想的引導者,通過他的書籍、論文、以及和 IBM Rational 頂級客戶的眾多交流來引導開發人員經驗的發展。要了解更多他的工作和思想,請訪問他的 Web 站點 www.jorvik.com/alanbrown/index.html. 1988 年 Alan Brown 于 Newcastle-upon-Tyne 大學取得博士學位。 |
Jim 已經撰寫過書籍 Building Web Applications with UML 的兩個版本,第一版著重于微軟的 Active Server Pages,最近的一版著重于 J2EE 技術。您可以通過 e-mail 聯系他。 |