winder

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

          AndroMDA 4.x架構(gòu) 翻譯之一

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

          開發(fā) AndroMDA 4 的幾個(gè)原因。實(shí)時(shí)證明AndroMDA 3是當(dāng)今代碼生成任務(wù)最成功的架構(gòu),但已經(jīng)可以看出,它難以應(yīng)付未來新的任務(wù)。AndroMDA 4 架構(gòu)目標(biāo)有:

          可配置和可擴(kuò)展性

          我們應(yīng)該讓我們的用戶比以前更容易(重新)配置和擴(kuò)展AndroMDA。用戶應(yīng)該能夠把AndroMDA作為一個(gè)組件使用,可以組織、鏈接,擴(kuò)展和部署,以實(shí)現(xiàn)他們的代碼生成的目標(biāo)??膳渲煤涂蓴U(kuò)展性,必須支持以下功能:

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

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

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

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

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

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

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

          模型到模型轉(zhuǎn)換

          這些轉(zhuǎn)化為1..n輸入模式到1..m輸出模式,每個(gè)模型包含在一個(gè)元數(shù)據(jù)儲(chǔ)存庫。對(duì)于轉(zhuǎn)換,我們將使用開放源碼框架ATL。然而,AndroMDA不應(yīng)僅僅依賴于ATL的,但必須能夠使用任何模型到模型轉(zhuǎn)換引擎。

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

          支持基于構(gòu)件的開發(fā)

          模型往往是隨著時(shí)間的推移逐漸變大。The generator 需要越來越多的時(shí)間來驗(yàn)證模型和生成代碼。應(yīng)該可以運(yùn)行the generator 處理輸入模型的部分內(nèi)容(請(qǐng)注意,在一部分獨(dú)立元模型上,這是可能的)。在AndroMDA 3中,唯一可能的是,限制只產(chǎn)生UML模型中的包的代碼。在AndroMDA 4中,這應(yīng)該只是一個(gè)特例。AndroMDA 4應(yīng)該能夠隨心所欲的產(chǎn)生輸入模型中部分代碼,如:架構(gòu)的一個(gè)切片(MD,怎么切啊)、一個(gè)子集,(實(shí)在是不會(huì)了)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)

          這需要一個(gè)配置機(jī)制,來增加全局限制,從而找到那些模型元素需要被轉(zhuǎn)換。

          更好的可測性

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

          性能和可伸縮性

          AndroMDA應(yīng)當(dāng)有很好的性能和執(zhí)行成績,因?yàn)橛脩羯纱a的規(guī)模和的形式在不斷發(fā)展(要不產(chǎn)生代碼越來越費(fèi)勁,費(fèi)時(shí),誰還用啊)。兩種可能的方案,以減少執(zhí)行時(shí)間:

          • 僅生成部分模型(參見上面的CBD)
          • 增量生成,reacting to changes(未來的功能)
          主站蜘蛛池模板: 平果县| 六盘水市| 定陶县| 富蕴县| 石楼县| 页游| 郴州市| 昌都县| 镶黄旗| 伊川县| 蒲江县| 馆陶县| 七台河市| 绥德县| 山阳县| 仁寿县| 白河县| 云南省| 应城市| 宁陵县| 宜阳县| 尼勒克县| 龙胜| 凌云县| 清水河县| 旬阳县| 长兴县| 班玛县| 宜州市| 扎兰屯市| 仪陇县| 白山市| 桂阳县| 古浪县| 九江县| 河池市| 武宣县| 定日县| 广河县| 昌吉市| 合阳县|