AndroMDAMDA建??蚣?/h1>AndroMDA 是一個(gè)遵循模型驅(qū)動(dòng)結(jié)構(gòu)(MDA)范例的代碼生成框架。它從CASE工具中獲得的一個(gè)UML模型并生成一個(gè)完全可部署的應(yīng)用程序和其它組件。

AndroMDA的功能非常強(qiáng)大,主要用途在于從UML模型生成Hibernate,EJB,Spring,WebServices,和 Struts等框架標(biāo)準(zhǔn)對(duì)應(yīng)的代碼, 在開發(fā)過(guò)程的建模階段可以快速生成可運(yùn)行原型,就此而言它是非常實(shí)用有效的工具,但是它的代價(jià)就是增加了很多對(duì)應(yīng)各種框架類的 stereotype,這樣的模型事實(shí)上已不能再算作PIM了,這樣既不利于平臺(tái)的遷移和模型的復(fù)用。而openMDX則僅僅使用了兩個(gè)用于 語(yǔ)義描述的stereotype,這樣的模型顯得更加中立,更面向業(yè)務(wù)建模的視角。
在Struts和Spring已經(jīng)成為事實(shí)上的J2EE框架標(biāo)準(zhǔn)的情況下,AndroMDA能夠滿足很多J2EE項(xiàng)目的框架要求,并且節(jié)約了很多重復(fù)性的編碼工時(shí),特別是,相對(duì)于采用手工編寫此種代碼,避免了可能出現(xiàn)的"手誤"。
AndroMDA的長(zhǎng)處也正是它的短處,因?yàn)橥耆嫦騄2EE平臺(tái)開發(fā),對(duì)于通用、中立的類型沒有定義,也缺少對(duì)于屬性的特性支持,比如持久性屬性和導(dǎo)出屬性的區(qū)分。在模型的表達(dá)上,仍然是更傾向于從技術(shù)框架的角度進(jìn)行建模和描述系統(tǒng)行為。
另外還有一個(gè)通常的"代碼生成器"都有的問題,就是對(duì)于模型的修改生成會(huì)覆蓋掉手工修改的代碼, 這僅僅是因?yàn)闆]有哪個(gè)流行的架構(gòu)會(huì)完全采用JMI或者接口編程的方式,這樣就很難避免在第一次生成代碼之后,需要小心再次生成模型可能會(huì)影響到的手工編寫的代碼。
瀏覽
24
AndroMDA 是一個(gè)遵循模型驅(qū)動(dòng)結(jié)構(gòu)(MDA)范例的代碼生成框架。它從CASE工具中獲得的一個(gè)UML模型并生成一個(gè)完全可部署的應(yīng)用程序和其它組件。
AndroMDA的功能非常強(qiáng)大,主要用途在于從UML模型生成Hibernate,EJB,Spring,WebServices,和 Struts等框架標(biāo)準(zhǔn)對(duì)應(yīng)的代碼, 在開發(fā)過(guò)程的建模階段可以快速生成可運(yùn)行原型,就此而言它是非常實(shí)用有效的工具,但是它的代價(jià)就是增加了很多對(duì)應(yīng)各種框架類的 stereotype,這樣的模型事實(shí)上已不能再算作PIM了,這樣既不利于平臺(tái)的遷移和模型的復(fù)用。而openMDX則僅僅使用了兩個(gè)用于 語(yǔ)義描述的stereotype,這樣的模型顯得更加中立,更面向業(yè)務(wù)建模的視角。
在Struts和Spring已經(jīng)成為事實(shí)上的J2EE框架標(biāo)準(zhǔn)的情況下,AndroMDA能夠滿足很多J2EE項(xiàng)目的框架要求,并且節(jié)約了很多重復(fù)性的編碼工時(shí),特別是,相對(duì)于采用手工編寫此種代碼,避免了可能出現(xiàn)的"手誤"。
AndroMDA的長(zhǎng)處也正是它的短處,因?yàn)橥耆嫦騄2EE平臺(tái)開發(fā),對(duì)于通用、中立的類型沒有定義,也缺少對(duì)于屬性的特性支持,比如持久性屬性和導(dǎo)出屬性的區(qū)分。在模型的表達(dá)上,仍然是更傾向于從技術(shù)框架的角度進(jìn)行建模和描述系統(tǒng)行為。
另外還有一個(gè)通常的"代碼生成器"都有的問題,就是對(duì)于模型的修改生成會(huì)覆蓋掉手工修改的代碼, 這僅僅是因?yàn)闆]有哪個(gè)流行的架構(gòu)會(huì)完全采用JMI或者接口編程的方式,這樣就很難避免在第一次生成代碼之后,需要小心再次生成模型可能會(huì)影響到的手工編寫的代碼。
