国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
真實世界中開源構(gòu)架的模型驅(qū)動開發(fā)(轉(zhuǎn)與Rational Edge)

Steve Andrews, 總裁, Fountainhead Solutions
Stosh Misiaszek, 戰(zhàn)略聯(lián)盟主管, Number Six Software

2007 年 4 月 16 日

本文來自于 Rational Edge:閱讀 Number Six Software 如何使用的模型驅(qū)動開發(fā)技術(shù)向美國的 Veterans Administration 提供實現(xiàn)顯著的成本和質(zhì)量改進的健康服務(wù)門戶。

組織在競爭中的勝利,甚至是生存能力,越來越受到組織能夠多么快速地構(gòu)想并且向市場交付新的解決方案所推動。這種產(chǎn)品開發(fā)的“速度”正在隨時間顯著的提高,沒有表現(xiàn)出減少的跡象。 1 軟件是一些企業(yè)成功的關(guān)鍵,對于這些企業(yè)來說,產(chǎn)品開發(fā)的速度以特別快的速率增長。因而,IT 組織需要在更短的時間段內(nèi)產(chǎn)生更多的業(yè)務(wù)價值。

好像這是不夠的,業(yè)務(wù)解決方案底層的技術(shù)在不斷的演進。構(gòu)建應(yīng)用程序所依據(jù)的操作系統(tǒng)、數(shù)據(jù)庫、通信協(xié)議,和許多組件總是升級并改進,每種都有其獨立的發(fā)布周期。為了讓商家保持競爭地位,就必須管理應(yīng)用程序所依據(jù)的底層技術(shù)。

軟件開發(fā)不斷增長的速度,以及不斷地適應(yīng)構(gòu)建軟件所依據(jù)的不斷變化的技術(shù)基礎(chǔ)的需要,限制了當今大多數(shù)軟件開發(fā)組織所能完成的東西。不論組織開發(fā)軟件的有效性有多大,如果其不斷地滿足速度的需求,并處理變化的技術(shù)問題,那么它就能保持競爭地位。近來的一個 Gartner Application Development Summit 將其簡潔地概括為:IT 組織不能為其未來的路編碼。 2

一種應(yīng)對這種范型變化的方法是,在更高的抽象層次上處理軟件開發(fā),并且將較大量的代碼開發(fā)自動化。本文的目的是概括一種策略,該策略已經(jīng)證實能夠處理這些問題,并延長了采用該策略的軟件開發(fā)組織的生存能力。

Number Six software 是一個提高客戶開發(fā)軟件能力的組織。我們利用現(xiàn)代軟件開發(fā)最佳實踐,如 IBM Rational Unified Process?,或 RUP?所包含的,交付理想地處理目標組織的業(yè)務(wù)問題的革新解決方案。在本文中,我們將介紹我們是如何實現(xiàn)這一點的。

一開始,我們先回顧模型驅(qū)動體系架構(gòu)(Model Driven Architecture,MDA) 3 的概念,以及 Number Six 的構(gòu)架模型驅(qū)動開發(fā)(Architected Model Driven Development,AMDD)概念,它是 MDA 的特例。然后我們介紹 Atlas,開源的應(yīng)用程序開發(fā)平臺,它是 Number Six 所開發(fā)的,用于將 AMDD 自動化。最后,我們介紹一個出自 Veteran 的 Health Administration(VHA)的案例研究,在 VHA 中,Number Six 成功地利用 Atlas 實現(xiàn)了能夠?qū)崿F(xiàn)顯著成本及質(zhì)量提高的健康服務(wù)門戶。

構(gòu)架模型驅(qū)動開發(fā)

該部分介紹了如何利用 MDA 提升軟件開發(fā)的抽象級別,從而提高開發(fā)人員的生產(chǎn)力、減少開發(fā)成本,并且增長應(yīng)用程序的將來彈性。

模型驅(qū)動架構(gòu)

OMG MDA 概念 4 規(guī)定了從描述應(yīng)用程序的業(yè)務(wù)問題的獨立于平臺的模型(platform-independent model,PIM)到描述如何實現(xiàn)應(yīng)用程序的具體平臺的模型(platform-specific model,PSM)的轉(zhuǎn)換。目標平臺是用與實現(xiàn)語言以及技術(shù)框架相關(guān)的術(shù)語描述的。J2EE 就是一個包含了一系列用 Java 程序設(shè)計語言編寫的接口的技術(shù)框架實例。

技術(shù)框架為應(yīng)用程序的構(gòu)建提供了必要的構(gòu)建模塊。經(jīng)驗表明只是在技術(shù)框架層描述目標平臺是不夠的。一旦確定了技術(shù)框架(例如,J2EE、.NET 等等),就要做大量的工作來定義并實現(xiàn)支持要構(gòu)建的應(yīng)用程序的功能所需的架構(gòu)機制。換句話說,我們必須找出如何最好地匯集應(yīng)用程序,以利用技術(shù)基礎(chǔ)架構(gòu)。架構(gòu)機制的例子包括持續(xù)性、遠程功能、有效性和錯誤處理,及許多其他內(nèi)容。對于應(yīng)用程序的架構(gòu)機制設(shè)計在具體平臺的模型(PSM)中進行描述。

在理論上,將許多轉(zhuǎn)換應(yīng)用到同一個 PIM 上會產(chǎn)生許多 PSM。PSM 可以轉(zhuǎn)換為可執(zhí)行的獨立于平臺的實現(xiàn)。這使應(yīng)用程序的實現(xiàn)可以獨立于具體業(yè)務(wù)模型而演進,從而適應(yīng)變更的技術(shù)的需求。

MDA 與應(yīng)用程序框架

盡管技術(shù)框架提供了大量構(gòu)建應(yīng)用程序所需的框架,我們還是經(jīng)常發(fā)現(xiàn)自己設(shè)計并實現(xiàn)應(yīng)用程序代碼,最好地處理架構(gòu)機制。在這些年中,將這些重現(xiàn)的設(shè)計策略編碼的模式出現(xiàn)了。其中較為著名的實例是 Core J2EE Patterns. 5 這些模式說明如何構(gòu)建應(yīng)用程序,最好地利用底層的技術(shù)框架來完成目標應(yīng)用程序的業(yè)務(wù)目標。

在許多情況下,用于利用平臺服務(wù)的策略可能在許多應(yīng)用程序上復用,這可以將廣泛不同的業(yè)務(wù)功能自動化。事實上,可以將這些設(shè)計及實現(xiàn)策略提煉并重新表示為可復用的應(yīng)用程序框架。應(yīng)用程序框架為利用了它們來實現(xiàn)一組業(yè)務(wù)目標的應(yīng)用程序,封裝了架構(gòu)機制契約和公共的功能。這是為了讓應(yīng)用程序有效所需的應(yīng)用程序的管路,但這個管路往往成為了在處理客戶關(guān)心的業(yè)務(wù)問題的費用上的開發(fā)資源排水管。開源及業(yè)務(wù)領(lǐng)域中有許多應(yīng)用程序框架,而更多的由開發(fā)應(yīng)用程序的組織定制地構(gòu)建出來的。Spring Framework 6 是開源應(yīng)用程序框架的很好實例。

獨立地利用應(yīng)用程序框架可以提高開發(fā)人員的生產(chǎn)力,因為應(yīng)用程序框架為架構(gòu)機制承擔起繁重的工作,并且讓開發(fā)人員更專注于對用戶有價值的業(yè)務(wù)邏輯。此外,它們可以通過約束開發(fā)人員修改代碼的地方來提高應(yīng)用程序的質(zhì)量,以防止他們不注意地破壞架構(gòu)上的重要代碼。良好應(yīng)用程序框架的特點是在必需的地方嚴格,在不必需的地方靈活。

構(gòu)架模型驅(qū)動開發(fā)(Architected Model-Driven Development,AMDD)是利用應(yīng)用程序框架和 MDA 技術(shù)二者的力量的策略。一般的前提是,模型定義了應(yīng)用程序的實體和服務(wù),并且模型被轉(zhuǎn)換為基于技術(shù)框架和應(yīng)用程序框架組合的 PSM。在此方法中,在應(yīng)用程序框架之上直接生成了大量應(yīng)用程序代碼,并且不需要開發(fā)人員的修改。通過提供應(yīng)用程序框架,應(yīng)用程序開發(fā)人員幾乎不需要確定實現(xiàn)細節(jié)。凈效應(yīng)是應(yīng)用程序開發(fā)人員可以更多地關(guān)注業(yè)務(wù)邏輯,而問題和解決方案之間的鴻溝減小了。

圖 1 描述了 AMDD 的完整概念,它利用了應(yīng)用程序框架及 MDA。

圖 1:構(gòu)架模型驅(qū)動開發(fā)

圖 1 中的左邊將獨立于平臺的模型(PIM)作為業(yè)務(wù)問題的表示。在歷史上,圖右邊所顯示的應(yīng)用程序棧是大部分軟件開發(fā)工作展開的地方。

圖中顯示的內(nèi)容說明我們?nèi)绾文軌蚶?MDA 技術(shù)將不涉及技術(shù)的 PIM 轉(zhuǎn)換為基于 PSM 的具體平臺的實現(xiàn)。頂端的箭頭表示抽象級別的下降導致通過模型轉(zhuǎn)換更大的實現(xiàn)具體性。

通過在技術(shù)框架上的應(yīng)用程序框架分層,為應(yīng)用程序的創(chuàng)建提供了必要的構(gòu)建模塊的技術(shù)框架更加具體到實現(xiàn)。實際的業(yè)務(wù)邏輯封裝在位于應(yīng)用程序框架頂端的應(yīng)用程序代碼中。右手邊的箭頭表示關(guān)于技術(shù)實現(xiàn)的正在減少的抽象級別。重要的是應(yīng)用程序框架可以在多個應(yīng)用程序上利用,因為事實上它是貫穿業(yè)務(wù)領(lǐng)域的公共功能,或管路。在 AMDD 方法中,通過現(xiàn)有應(yīng)用程序框架之上的模型轉(zhuǎn)換來生成應(yīng)用程序代碼,這是基于技術(shù)框架的。理論上,許多應(yīng)用程序框架都可以基于技術(shù)框架,而且可以開發(fā)許多模型轉(zhuǎn)換,在那些應(yīng)用程序框架上生成應(yīng)用程序代碼。

兩個箭頭一起,表示下降的模型抽象以及下降的實現(xiàn)抽象形成了最大程度滿足業(yè)務(wù)需求的具體平臺的,可部署的應(yīng)用程序。圖中彩色的代碼表示水平軸上不斷增長的技術(shù)解決方案特異性,以及垂直軸上不斷增長的業(yè)務(wù)問題在解決方案空間上的覆蓋率。

AMDD 和軟件開發(fā)生命周期

雖然 AMDD 為軟件開發(fā)工作帶來了大量好處,但是要注意的是它不是消除對其他軟件工程規(guī)程需求的銀彈。

AMDD 明顯地嚴重依賴模型和轉(zhuǎn)換,將應(yīng)用程序代碼的未來的工程自動化。既然模型和下行的實現(xiàn)工件之間存在這樣一種直接且可復現(xiàn)的相關(guān)性,那么就需要更加強調(diào)模型整體性的維護。這也許實際上要求花在分析和設(shè)計活動上的時間比在設(shè)計作為臨時(或更糟的是丟棄)工件的時候的時間要長。在 AMDD 中,PIM、PSM,和一系列轉(zhuǎn)換是代碼,而這使得模型比原先重要得多。

質(zhì)量需求繼續(xù)成為首要的關(guān)注點。事實上,將信息性的需求表示為實體,以及將粗粒度的業(yè)務(wù)行為表示為 PIM 中的服務(wù)的功能極大的依賴于明確的需求。事實上,使用 AMDD 增加需求規(guī)程的精確度是可能的。通?!安幻鞔_的”需求會導致不適當?shù)慕#Y(jié)果代碼不滿足客戶的需要。在 AMDD 的情況下,通過模型轉(zhuǎn)換取代人工工作,將糟糕需求的影響繁殖給了應(yīng)用程序代碼。

為了應(yīng)用 AMDD,必要的是在 PIM 中將需求建模,否則就不能生成代碼。AMDD 比其他策略更適用于一些問題領(lǐng)域,所以在先啟和 精化階段謹慎應(yīng)用,從而驗證此方法對任意項目的作用是很重要的。

實現(xiàn)規(guī)程會受到 AMDD 方法的嚴重影響,這是由于相對于手動編碼,會生成大量代碼。如果恰當?shù)貓?zhí)行了需求和分析設(shè)計活動,且應(yīng)用程序框架維護了架構(gòu)機制實現(xiàn),那么開發(fā)人員的工作將主要圍繞業(yè)務(wù)邏輯的實現(xiàn)。根據(jù)模型的逼真度,可能也會生成許多業(yè)務(wù)邏輯。舉例來說,如果可以將一個操作完整地建模為活動圖,那么就沒有理由不能生成該操作的實現(xiàn)了。單元測試仍舊是重要的,通過將一系列轉(zhuǎn)換應(yīng)用于模型,生成單元測試也是可能的。

測試規(guī)程仍舊是非常需要的。使用已證實的應(yīng)用程序框架將減少“管路”缺陷的發(fā)生率,然而,業(yè)務(wù)功能仍舊需要測試。已確認的缺陷可能需要在模型中解決,在人工開發(fā)的業(yè)務(wù)邏輯代碼中,要在模型轉(zhuǎn)換,或它們的組合中解決。

Atlas

基于許多軟件開發(fā)的經(jīng)驗,Number Six Software 已經(jīng)開發(fā)出了一個 AMDD 框架,它可以用于簡化基于單個 PIM 的快速應(yīng)用程序開發(fā)。Atlas 是開源的項目,它在不斷地演進,以滿足全世界應(yīng)用程序開發(fā)人員的需求。

Atlas 通過提供以下功能來實現(xiàn) AMDD:

  1. 表示獨立于平臺的模型的標準方法
  2. 確定定義了架構(gòu)機制的應(yīng)用程序框架的能力。支持任意的應(yīng)用程序框架。下面介紹了兩個實例,包括 Spring 和 Atlas-Java 應(yīng)用程序框架
  3. 定義提供架構(gòu)機制接口的具體實現(xiàn)的應(yīng)用程序框架插件的能力。框架插件的實例包括用于持久性的 Hibernate 7 、Struts 8 說明表示層中的模型-視圖-控制器、Axis 9 用于將服務(wù)作為 web 服務(wù),等等,
  4. 用于定義可以將 PIM 元素轉(zhuǎn)換為基于應(yīng)用程序框架和插件的具體平臺實現(xiàn)的模板工具
  5. 將由 PIM 生成的源代碼作為輸入合并到源代碼編譯的構(gòu)建生命周期。

圖 2 Atlas AMDD

Atlas 模型

Atlas 提供對應(yīng)用程序的主要需求建模的通用方法:可維護的狀態(tài)(實體)和展示的行為(服務(wù))。該模型還稱為 應(yīng)用元數(shù)據(jù)。它是用 XML 定義的,且它是基于 OMG Meta-Object Facility (MOF) 10 和統(tǒng)一建模語言(Unified Modeling Language,UML)的。 11

對于 Atlas 的最初版本,決定使用基于 XML 元數(shù)據(jù)的方法,以更加嚴格地遵守 Atlas 轉(zhuǎn)換引擎所需要的建模慣例。從這點上看,模型驗證從本質(zhì)上說就是語法,并且是圍繞著根據(jù)一系列 XML 文檔類型定義(XML Document Type Definition,DTD)的驗證。將來,為了支持可視化的建模,可能會出現(xiàn) UML 概要文件,以及相關(guān)的模型驗證。

Atlas 模型和那些其他的 MDA 解決方案的主要差別在于抽象的級別不同。Atlas 的一個目標是盡可能地解除應(yīng)用程序開發(fā)人員對底層架構(gòu)機制的責任。這意味著,大部分應(yīng)用程序在 PIM 中確定,并且業(yè)務(wù)邏輯主要在所生成的模板方法“的范圍內(nèi)”開發(fā)。PSM 主要在從 PIM 到具體平臺實現(xiàn)(platform-specific implementation,PSI)的轉(zhuǎn)換中定義。通過指定基于應(yīng)用程序框架的目標實現(xiàn),這個框架能夠代替開發(fā)人員完成繁重的應(yīng)用開發(fā)工作,使得這些轉(zhuǎn)換不那么冗長且不那么復雜了。

一些 MDA 解決方案在 PSM 上執(zhí)行轉(zhuǎn)換,生成 PSI,這意味著需要建模人員對架構(gòu)機制有深入的了解。這些工具還提供 PSM 和代碼之間健壯的雙向工程功能。Borland Together 12 是這種開發(fā)環(huán)境的一個實例。其他的,像 AndroMDA 13 包括由 PIM 和 PSM 混合體的模型生成的代碼。舉例來說,在應(yīng)用層傳遞實體信息的一種方法是使用實體的傳遞對象表示。在 AndroMDA 中,為獨立于平臺的實體和具體平臺的傳遞對象進行建模。 14 在 Atlas 中,同樣的模式可以用更簡單的,不需要對傳遞對象分別建模的 PIM 來實現(xiàn)。根據(jù)應(yīng)用程序框架所建立的慣例,可以開發(fā)轉(zhuǎn)換,使其在生成代碼中利用實體恰當?shù)倪M行表示(傳遞對象、業(yè)務(wù)對象,等等)。

其他的 MDA 工具提供比 Atlas 更清楚的 PIM、PSM,和 PSI 之間的描繪。一個實例是 Compuware 的 OptimalJ 15 ,它不是開源產(chǎn)品,且目前只支持基于 J2EE 的應(yīng)用程序的生成。

Entities(實體)

實體表示應(yīng)用程序中具有持續(xù)狀態(tài)的事物。在 UML PIM 中,實體是表示為帶有 <<Entity>> 原型的類的關(guān)鍵抽象。圖 3 描述了帶有兩個字段的樣例實體的 UML 表示。

圖 3 樣例實體 —— UML 表示

Atlas 元數(shù)據(jù)工具能夠利用良好結(jié)構(gòu)的 XML 為同樣的實體建模。該元數(shù)據(jù)要考慮到關(guān)于實體附加信息的說明,例如,數(shù)據(jù)庫表名,以及保存實體狀態(tài)的列。圖 4 表示上面介紹的樣例實體的 Atlas 元數(shù)據(jù)表示。

圖 4 樣例實體 —— Atlas 元數(shù)據(jù)表示

所有標準的關(guān)聯(lián)類型都在元數(shù)據(jù)中表現(xiàn)出來。這些包括一對一和一對多構(gòu)成關(guān)聯(lián),以及多對一和多對多的聚合關(guān)聯(lián)。

Services(服務(wù))

展示應(yīng)用程序分離的業(yè)務(wù)功能的服務(wù)也是用 Atlas 元數(shù)據(jù)工具來建模的。在 UML PIM 中,將服務(wù)建模為帶有 <<Control>> 原型的關(guān)鍵抽象類。圖 5 展示了一個樣例服務(wù)的 UML,該服務(wù)有一個操作,將樣例實體作為參數(shù)并且在響應(yīng)中返回樣例實體。

圖 5 樣例服務(wù) —— UML 表示

這個同樣的樣例服務(wù)是利用圖 6 中的 Atlas 元數(shù)據(jù)工具表示的。

圖 6 樣例服務(wù) —— Atlas 元數(shù)據(jù)表示

Atlas-Java 應(yīng)用程序框架

任何應(yīng)用程序框架都可以與 Atlas 一起使用。為了幫助開始開發(fā)工作,Atlas 項目提供基于 Java 程序設(shè)計語言的應(yīng)用程序框架,可以作為開發(fā) Java 應(yīng)用程序的基礎(chǔ)。該框架是基于 Core J2EE Patterns 的,并且提供接口和抽象基礎(chǔ)類,提供適當?shù)膽?yīng)用程序?qū)哟尾⑶姨幚?Java 應(yīng)用程序的主要應(yīng)用程序基礎(chǔ)結(jié)構(gòu)問題。

Atlas-Java 框架所定義的架構(gòu)機制的一些實例包括:

  • 傳遞對象,在應(yīng)用程序?qū)又g移動實體狀態(tài)
  • 業(yè)務(wù)對象,封裝本質(zhì)的實體業(yè)務(wù)邏輯
  • 數(shù)據(jù)訪問對象,保存實體狀態(tài)
  • 服務(wù)委托,提供對服務(wù)實現(xiàn)的訪問
  • 組件,為服務(wù)響應(yīng)創(chuàng)建錯誤和信息性的消息
  • 工廠,創(chuàng)建以上類的實例

Atlas-Java 框架實際上可以獨立于 Atlas MDA 功能使用。要想這樣做,開發(fā)人員需要手動地實現(xiàn)所提供的接口,并且擴展抽象基礎(chǔ)類。

Atlas-Java 有別于其他開源框架,因為它提供一系列架構(gòu)機制,以及說明它們之間相互聯(lián)系方式的使用模式。通過比較,Spring Framework 的確允許開發(fā)人員提供對同一機制的接口和實現(xiàn),然后使用控制倒置(inversion of control,IoC),在運行時,根據(jù)開發(fā)人員所建立的使用模式注入恰當?shù)膶崿F(xiàn)。這兩個方法的價值是不同的,因為 Atlas-Java 提供現(xiàn)成的機制使用模式,而 Spring 開發(fā)人員仍舊必須實現(xiàn)機制,并且確定它們?nèi)绾谓M合在一起,形成使用模式,這些可以用于實現(xiàn)應(yīng)用程序的業(yè)務(wù)功能。

Atlas-Java 是提供了更高層抽象的高定制的應(yīng)用程序框架,這可以讓開發(fā)人員幾乎立刻就能從事業(yè)務(wù)邏輯的工作?,F(xiàn)有的應(yīng)用程序框架,如 Spring 和其他的,可以用于執(zhí)行具體“管路”功能的 Atlas-Java 插件的實現(xiàn)技術(shù)。

Atlas-Java 應(yīng)用程序框架插件

在一些情況下,應(yīng)用程序框架可能只為特殊的架構(gòu)機制提供接口。在這些情況下,具體的實現(xiàn)可能由應(yīng)用程序框架插件指定。插件可能是基于開源的,第三方的,或者私有技術(shù)的。

Atlas-Java 的應(yīng)用程序框架插件的實例包括:

  • Atlas-Hibernate,提供 Atlas-Java 數(shù)據(jù)訪問對象接口的抽象基礎(chǔ)實現(xiàn)
  • Atlas-Struts,為基于確定實體的用戶輸入形式提供抽象基礎(chǔ)實現(xiàn)
  • Atlas-EJB,能夠提供一些基本的類,這些類能夠幫助客戶端的服務(wù)代理程序訪問服務(wù),例如 EJB。

為 Atlas 項目開發(fā)的 Atlas-Java 框架插件已經(jīng)有許多了。隨著需求的增加,可以很容易地開發(fā)并向項目加入新的插件。

Atlas 模型轉(zhuǎn)換

一旦開發(fā)了框架以及相關(guān)的插件,就必須開發(fā)模型轉(zhuǎn)換來生成利用那些資產(chǎn)的應(yīng)用程序代碼。模型轉(zhuǎn)換著重于根據(jù)在框架或插件中擴展類的應(yīng)用程序元數(shù)據(jù)元素創(chuàng)建源代碼。

對于每種基于 PSM 的實現(xiàn)組件有一個轉(zhuǎn)換。一個框架或插件可能指定許多實現(xiàn)組件。

應(yīng)用到 PIM 中生成具體平臺實現(xiàn)的轉(zhuǎn)換集合被稱為應(yīng)用程序概要文件(application profile)。該概要文件是根據(jù)一個應(yīng)用程序框架和一組插件定義的。

利用 Apache Velocity 16 開源模板引擎將轉(zhuǎn)換本身實現(xiàn)為模板。Atlas 轉(zhuǎn)換引擎在一組與應(yīng)用程序概要文件相關(guān)的模板上迭代,并且將那些模板應(yīng)用于來自 PIM 的恰當?shù)哪P驮亍Ee例來說,傳遞對象、業(yè)務(wù)對象,和數(shù)據(jù)訪問對象模板將應(yīng)用于 PIM 中的每個實體。同樣地,可以將服務(wù)實現(xiàn)和服務(wù)委托模板應(yīng)用于 PIM 中確定的每個服務(wù)。

圖 7 展示了用于生成獲得實體中定義的所有字段的 getter 的 Velocity 模板。

圖 7 樣例 Velocity 模型轉(zhuǎn)換模板

由轉(zhuǎn)換生成的源代碼可能指定為可修改的或不可修改的??尚薷牡拇a只生成一次,從那時起,維護它的責任就交給開發(fā)人員了。這是每個構(gòu)建版本之間保留開發(fā)人員修改的方法??尚薷牡拇a還稱為框架代碼。不可修改的代碼在每次構(gòu)建時重新生成。

圖 8 描述了一些具體平臺的類,這些類是根據(jù)包括 Atlas-Java 應(yīng)用程序框架和 Atlas-Hibernate 插件的概要文件,為圖 3 中定義的樣例實體生成的。注意,所生成的類擴展并實現(xiàn)了來自于框架和插件的類和接口。還要注意的是可修改的業(yè)務(wù)對象表示是具體類,它擴展了不可修改的抽象類,并覆蓋了不可修改的基類中定義的保護的抽象方法。這是一個很好的模式,它令應(yīng)用程序開發(fā)人員在業(yè)務(wù)邏輯的實現(xiàn)過程中具有創(chuàng)造性,卻不讓他們破壞框架中定義的架構(gòu)模式。

圖 8 樣例 Atlas-Java 具體平臺的模型
單擊此處放大

Atlas 構(gòu)建生命周期

在 Atlas 中構(gòu)建應(yīng)用程序總是開始于對不可修改的代碼的再生成,為新的 PIM 元素進行可修改的框架的生成。從那里,構(gòu)建所生成的代碼,以及修改的框架。最后,執(zhí)行確定的單元測試。

關(guān)鍵點是,整個過程的中心是模型。與開發(fā)并構(gòu)建應(yīng)用程序相關(guān)的每件事情都從 PIM 開始。

開源社區(qū)

開源軟件是“公開源代碼,允許公眾使用的軟件,在不需要支付版權(quán)費的情況下,任何人都可以復制、修改,并且再次散布源代碼?!?a > 17

通過使用開源軟件,組織可以將他們自己從廠商的枷鎖中解放出來,并且降低了引入其他組織利用它們指定的知識或經(jīng)驗進入并修改應(yīng)用程序的成本。

這些具體的好處已經(jīng)由世界上許多組織所實現(xiàn)了,它們都加入了 IBM 發(fā)起的 Linux 開源供應(yīng)區(qū)。 18 像 IBM 一樣、Number Six 強烈倡議使用開源軟件,并堅持開源標準。我們自己的開源供應(yīng)區(qū),Atlas,是該領(lǐng)域中我們的承諾和思想領(lǐng)導的實例。

開源的優(yōu)勢

開源軟件的優(yōu)勢非常的明顯,例如引入成本低,并且避免廠商的枷鎖。其他的優(yōu)勢推動,至少一部分,Number Six 的決定,不僅創(chuàng)建開源供應(yīng)區(qū),還要與現(xiàn)有的開源軟件進行整合。

因為使用開源應(yīng)用程序的人都可以使用底層的源代碼,頻繁被使用的應(yīng)用程序被常常被修改。這對整體功能的增長,以及隨時間穩(wěn)定應(yīng)用程序的可靠性具有積極的影響。當然,必須實現(xiàn)可靠的配置管理計劃,從而確保以慎重且受控制的方式引入這些經(jīng)常的變更。當組織將這些應(yīng)用程序引入到它們的關(guān)鍵業(yè)務(wù)過程中時,經(jīng)常的演進和改進就特別的重要。

Atlas 產(chǎn)品有意地極大利用現(xiàn)有的開源組件,進一步詳細描述其功能。Atlas 開發(fā)團隊從現(xiàn)有的開源資產(chǎn)中匯集了 Atlas 產(chǎn)品,而不是從頭進行構(gòu)建。這使得在出現(xiàn)需求時,可以相當快速地引入對 Atlas 的修改。此外,Atlas 隨著被裝配起來的開源資產(chǎn)增長的固有穩(wěn)定性獨立地演進著。

擴展 Atlas,以提供擴展了基本 Atlas 框架的架構(gòu)機制(例如,持久性或安全性)的實現(xiàn)。這些擴展以 Atlas 插件形式實現(xiàn)?,F(xiàn)有的開源資產(chǎn)可以被裝配成 Atlas 插件,在其之上可以生成應(yīng)用程序代碼。該方法,利用開源軟件,比從頭創(chuàng)建(并測試及調(diào)試)這些插件要節(jié)省成本并靈活。以此方式,可以開始應(yīng)用程序開發(fā),并且關(guān)于實現(xiàn)業(yè)務(wù)邏輯的工作仍舊是開發(fā)團隊的重點。

有時候必須從頭創(chuàng)建插件,因為開源社區(qū)中沒人需要預先創(chuàng)建。在這種情況下,Number Six(或者一些其他的擁有同樣需求的組織)可以創(chuàng)建這些組件并返回給社區(qū)。以此方式,該環(huán)境變得對所有用戶更健壯且更有用。

開源 AMDD

Atlas 通過 Tigris.org 被放在了開源社區(qū)中,Tigris.org 是“中型的開源社區(qū),著重于為協(xié)作的軟件開發(fā)構(gòu)建更好的工具”。 19

在前面的部分中,我們討論了如何利用其他的開源技術(shù)構(gòu)建 Atlas 軟件本身。許多技術(shù),無疑,對本文的讀者來說是眾所周知的。

Atlas 模型轉(zhuǎn)換引擎是用流行的開源技術(shù)開發(fā)的。實例包括:Maven 20 、Ant 21 、Velocity、Digester 22 和其他來自 Apache Jakarta Commons 23 項目的內(nèi)容。

Atlas-Java 應(yīng)用程序框架也是用開源技術(shù)開發(fā)的,但其大部分使用的是 Plain Old Java Objects(POJO,也就是非特殊的對象,例如 Enterprise JavaBeans)。輕型技術(shù),例如 Apache Commons 在 Atlas-Java 中得到廣泛使用。

Atlas-Java 框架插件也可以基于開源實現(xiàn)。一些實例包括:Hibernate、Apache Beehive,和 Struts。

雖然核心組件是利用開源技術(shù)實現(xiàn)的,但是事實是大多數(shù)組織已經(jīng)在企業(yè)計算技術(shù)中投入大量投資。同樣地,插件還支持商業(yè)實現(xiàn),例如,IBM WebSphere、BEA WebLogic,和 Oracle TopLink。

VHA 案例研究

在此部分中,我們介紹 Number Six 成功地使用 Rational Unified Process 中嵌入的 Industry Standard Best Practices 和 Atlas 產(chǎn)品的簡要案例研究。客戶是美國政府的退伍軍人健康機構(gòu)(Veteran‘s Health Administration(VHA)),它通過整個國家中醫(yī)院和門診的系統(tǒng)為退伍軍人提供衛(wèi)生保健和其他利益。該產(chǎn)品是 My HealtheVet,它是面向美國退伍軍人的在線健康服務(wù)門戶,可以在http://www.myhealth.va.gov/找到。

VHA 希望創(chuàng)建一個門戶,通過它,所有的退伍軍人都可以訪問他們的醫(yī)療記錄和其他健康相關(guān)的服務(wù)。對組織來說非常重要的是在對來自用戶社區(qū)的請求的響應(yīng)中快速添加新的業(yè)務(wù)功能的能力。相關(guān)的目標是重用最大化、開發(fā)工作的有效性,以及結(jié)果產(chǎn)品的質(zhì)量和彈性。

計劃目標

在項目的開始,VHA 的一些具體目標如下描述。

VHA 要求大量的構(gòu)建和部署選擇。為了適應(yīng)最終用戶對應(yīng)用程序所提出的變更的需求,這是必要的。我們采用的技術(shù)將把整個問題域分離成更易管理的應(yīng)用程序,每一個都有自己的 PIM。

另一個目標是實現(xiàn)組件之間的松耦合。這是非常重要的,是為了避免脆弱性和對變更的敏感性,這會導致可維護性的提高。

在架構(gòu)層,他們期望干凈的應(yīng)用程序分層,為了提高可修改性和可維護性。目標是適當?shù)胤蛛x與應(yīng)用程序每一層相關(guān)的問題 —— 也就是,業(yè)務(wù)邏輯仍舊在實現(xiàn)層,UI 在用戶界面層,等等。這些架構(gòu)目標打算使應(yīng)用邏輯更容易理解及修改。

當一并考慮這些目標時,這些目標將使得對客戶需求的變更更容易地適應(yīng)。與此同時,做出這些變更所用的時間縮短了,并且有越來越短的趨勢。對 VHA 的速度需求在加速,與此同時,組織的響應(yīng)在減速。

Number Six 解決方案

Number Six 方法首先出現(xiàn)在行業(yè)標準軟件工程最佳實踐中,如 Rational Unified Process 所描述的那樣。我們把這看作是任何開發(fā)工作成功的必要因素。

然而,如引言中所描述的,已知可用的時間,甚至 RUP 方法也不足以確保客戶的成功。Number Six 意識到組織的生存能力處于危險中,因此需要應(yīng)用建立在行業(yè)標準最佳實踐,以及創(chuàng)新的開發(fā)技術(shù)之上的新方法。

我們選擇避免“英雄”模式來解決問題 —— 換句話說,簡單地工作過多的小時來到達截止時間。我們知道,在時間期限內(nèi)不會讓我們處理所有的問題。相反,我們?yōu)?VHA 的成功進行了長遠的構(gòu)想。長遠的構(gòu)想包括利用 RUP 和 AMDD 實現(xiàn)新的系統(tǒng)。這需要在細化階段對應(yīng)用程序框架和模型轉(zhuǎn)換引擎投資。在構(gòu)建階段,開發(fā)團隊能夠保持對業(yè)務(wù)邏輯實現(xiàn)的關(guān)注。

VHA 和 Number Six 決定軟件的自動化創(chuàng)建必須以一種方式進行,以該方式完成,就能夠讓其他廠商,在未來的某個時刻,可以修改應(yīng)用程序,并向應(yīng)用程序添加功能。這意味著結(jié)果的自動化機制必須符合開放標準,并且本身是開源的。這是 Atlas 的起源。

結(jié)果的 Atlas 框架和轉(zhuǎn)換在盡可能多的情況下,令開發(fā)團隊走出“人工勞動的循環(huán)”。人會犯錯,是最小化人對編碼過程的參與的時候了,您在他們犯錯之前就去掉了錯誤。此外,利用 Atlas 將對于應(yīng)用程序的底層框架的創(chuàng)建自動化,這具有真正的好處,即令團隊關(guān)注業(yè)務(wù)邏輯,而不是應(yīng)用程序基礎(chǔ)架構(gòu)或“管路”,這可以使開發(fā)團隊在分配的時間期限內(nèi)交付解決方案。

結(jié)果和觀察

此工作的結(jié)果是完美的。應(yīng)用程序中百分之七十的代碼是由 Atlas生成的(與人工的開發(fā)相對比)。根據(jù)上面提出的論點進行推理,可以設(shè)想不再出現(xiàn)大量可能的程序設(shè)計錯誤,促使質(zhì)量上極大的進步。

VHA 估計他們需要對應(yīng)用程序做出的變更需要進行三年。Number Six 可以利用一個最初內(nèi)定團隊的四分之一的人在兩個月內(nèi)完成。團隊可以從 RUP 的細化和構(gòu)建階段中的時間壓縮,觀察到時間的極大節(jié)省。在細化階段的末尾,Atlas 大大地提高了團隊生成真正可執(zhí)行架構(gòu)的首次實例的能力。

雖然關(guān)于應(yīng)用程序?qū)ξ磥碜兏膹椥匀绾谓y(tǒng)計、可維護性及其他更難量化,但是毫無疑問的是在這些領(lǐng)域所做出的提高有多么的驚人。

關(guān)鍵是在非常短的時間內(nèi),該應(yīng)用程序 My HealtheVet,被開發(fā)、部署,并且現(xiàn)在由美國陸??杖姵^ 200,000 的退伍軍人使用。通過此處描述的嵌入了 AMDD 技術(shù)的 Atlas,該應(yīng)用程序達到了上面的問題陳述中所確定的其他目標。

結(jié)束語

不斷增長的軟件開發(fā)速度,以及構(gòu)建軟件所依據(jù)的不斷變化的基礎(chǔ),確實限制了當今大多數(shù)軟件開發(fā)組織所能完成的事情。處理這兩個問題的一個方法是使用構(gòu)架模型驅(qū)動開發(fā)技術(shù)。

AMDD 的使用已經(jīng)證明了它對于 VHA 的實際價值,VHA 是該范例轉(zhuǎn)換價值的真實世界中的實例。在壓縮的時間段內(nèi),使用 AMDD 可以讓應(yīng)用程序具有良好的架構(gòu),對未來變更具有彈性,并且有很高的質(zhì)量。使用 Atlas 和 RUP 令 VHA 充分地提高了它們的速度,項目不僅存活了下來,還能夠為美國軍隊的退伍軍人提供世界一流的門戶。此外,在解決方案中使用開源組件實現(xiàn)了 VHA 對靈活性、可維護性,以及避免廠商枷鎖的額外目標。

Number Six 很高興有機會讓 VHA 如此有效地為納稅人投入資金,并且使我們的退伍軍人得到了它們已經(jīng)掙得且應(yīng)得的好處。我們感到非常激動的是,AMDD 和 Atlas 技術(shù)可能有未來的擴展,并且我們期待對開源社區(qū)不斷的貢獻,以及在其中的不斷討論。

注釋

1 Michael J. Mauboussin,More Than You Know: Finding Financial Wisdom in Unconventional Places。紐約:哥倫比亞大學出版社,2006 年。

2 2005 Gartner Application Development Summit

3 Alan Brown,“模型驅(qū)動體系架構(gòu)介紹,第一部分: MDA 和當今的系統(tǒng)”,Rational Edge,2005 年 4 月

4 http://www.omg.org/mda/

5 核心 J2EE 模式:最佳實踐和設(shè)計策略,Alur,et.al。

6 http://springframework.org/

7 http://hibernate.org/

8 http://struts.apache.org/

9 http://ws.apache.org/axis/

10 http://www.omg.org/mof/

11 http://www.uml.org/

12 http://www.borland.com/us/products/together/index.html

13 http://andromda.org/

14 http://galaxy.andromda.org/docs/andromda-documentation/andromda-getting-started-java/java/create-value-object.html

15 http://www.compuware.com/products/optimalj/default.htm

16 http://velocity.apache.org/

17 Douglas Heintzman,“An introduction to open computing, open standards, and open source”,The Rational Edge,2003 年 7 月。

18 Daren Hanson,“The evolving ecosystem of open source and open computing”,The Rational Edge,2005 年 7 月。

19 Tigris.org 網(wǎng)站

20 http://maven.apache.org/

21 http://ant.apache.org/

22 http://jakarta.apache.org/commons/digester/

23 http://jakarta.apache.org/commons/index.html

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MVC架構(gòu)開發(fā)綜述
開發(fā)架構(gòu)設(shè)計
你離成為優(yōu)秀的架構(gòu)師,就差這份超全路線圖了
微服務(wù)是什么
Java 和微服務(wù)系列:第 1 部分 微服務(wù)
火爆的低代碼開發(fā)具有哪些技術(shù)特點?
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服