winder

          DB&JAVA
          posts - 2, comments - 6, trackbacks - 0, articles - 11
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          AndroMDA 4.x架構 翻譯之一

          Posted on 2010-06-12 14:56 winderain 閱讀(362) 評論(0)  編輯  收藏 所屬分類: JAVA
          AndroMDA 4.x架構
          體系結構目標 打印 電子郵件
          Matthias Bohlen撰稿 winderain 翻譯
          星期三,2006年3月22日17:55

          開發 AndroMDA 4 的幾個原因。實時證明AndroMDA 3是當今代碼生成任務最成功的架構,但已經可以看出,它難以應付未來新的任務。AndroMDA 4 架構目標有:

          可配置和可擴展性

          我們應該讓我們的用戶比以前更容易(重新)配置和擴展AndroMDA。用戶應該能夠把AndroMDA作為一個組件使用,可以組織、鏈接,擴展和部署,以實現他們的代碼生成的目標。可配置和可擴展性,必須支持以下功能:

          可與其他UML metamodels(元模型)配合工作

          AndroMDA 3 是主要用于與UML配合使用。它可以和其他UML元模型配合工作,太糟糕了,沒有人對其進行了測試。

          有些事情不容易在UML表示,例如,圖形用戶界面。domain specific languages (DSLs)能夠更好的表述、形容此類事情AndroMDA 4 應支持任意的基于metamodels (元模型的)模型輸入。

          重用,改造和chaining of off-the-shelf和定制cartridges

          在AndroMDA 3中,有可能從頭開始寫一個cartridge ,使用一個已有的cartridge或在一定范圍內擴展已有的cartridge。然而,一個cartridge輸入模型幾乎總是依賴一個特定的UML配置文件(profile),使用戶被迫以某種方式建模。一個fledged的輸入總是“完全成熟”的模型,輸出總是“準備使用”源代碼。這種方法可以被稱為“百分百方法the always 100% approach”。大面積使用cartridges不可能用非常精細和復用,比如:cartridges A 做30%的工作,cartridges B 拿A的輸出最為輸入,完成50%工作,最后cartridges C完成20%的工作,這樣就100%的完成了。

          在AndroMDA 4中,用戶應該能夠在從模型到代碼的轉換中重用已有的cartridges建立blocks 一個cartridge 把輸入模型轉化為一個或更多的模型或者文本,任何基于元模型的內容,cartridges 建可相互配合、來完成工作。

          一個典型的例子是:一個用戶說:“行,我最喜歡Hibernate的 cartridge ,但我希望所有生成的實體實現某些接口”。 這個用戶可以編寫另一個cartridge 添加了必要的接口生成的實體類。最好的辦法來處理,就是用模型到模型轉換。

          模型到模型轉換

          這些轉化為1..n輸入模式到1..m輸出模式,每個模型包含在一個元數據儲存庫。對于轉換,我們將使用開放源碼框架ATL。然而,AndroMDA不應僅僅依賴于ATL的,但必須能夠使用任何模型到模型轉換引擎。

          這里,可配置性也是一個重要方面。轉型引擎應該能夠訪問AndroMDA配置,以便能夠轉換能夠參數化。我們的解決方式是把AndroMDA配置作為一個模式,可以像任何其他模型一樣進行轉換。因此,AndroMDA必須有一個配置元模型。

          支持基于構件的開發

          模型往往是隨著時間的推移逐漸變大。The generator 需要越來越多的時間來驗證模型和生成代碼。應該可以運行the generator 處理輸入模型的部分內容(請注意,在一部分獨立元模型上,這是可能的)。在AndroMDA 3中,唯一可能的是,限制只產生UML模型中的包的代碼。在AndroMDA 4中,這應該只是一個特例。AndroMDA 4應該能夠隨心所欲的產生輸入模型中部分代碼,如:架構的一個切片(MD,怎么切?。?、一個子集,(實在是不會了)a time or one architectural tier at a time or one server at a time or whatever subset of the content of the input model(s)

          這需要一個配置機制,來增加全局限制,從而找到那些模型元素需要被轉換。

          更好的可測性

          AndroMDA的每個組件應該很容易testable,as isolated as possible。在設計組件的界限和接口時,我們應該注意,一個組件應盡可能少的依賴其他組件的成功測試(其他組件需要測試通過后才能測試這個組件)。

          性能和可伸縮性

          AndroMDA應當有很好的性能和執行成績,因為用戶生成代碼的規模和的形式在不斷發展(要不產生代碼越來越費勁,費時,誰還用?。?。兩種可能的方案,以減少執行時間:

          • 僅生成部分模型(參見上面的CBD)
          • 增量生成,reacting to changes(未來的功能)
          主站蜘蛛池模板: 托克托县| 门头沟区| 积石山| 台东县| 桐柏县| 丹巴县| 互助| 奉贤区| 夏津县| 湾仔区| 潞城市| 安平县| 隆尧县| 兴城市| 平度市| 淳安县| 浦城县| 昌乐县| 莱阳市| 尤溪县| 南宫市| 定结县| 当阳市| 铁力市| 桐梓县| 阳东县| 佛山市| 新营市| 高青县| 曲松县| 砀山县| 永泰县| 安泽县| 布拖县| 佳木斯市| 钦州市| 长白| 台北县| 余江县| 广南县| 金川县|