<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    寫程序,做產品,過日子

    成功其實很簡單,就是強迫自己堅持下去

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      69 Posts :: 1 Stories :: 92 Comments :: 0 Trackbacks

    Powerdesigner是我最喜歡的建模軟件,其功能最全,易用性最好,使用感受最舒服。可擴展性也非常好。

    Powerdesigner對MDA的支持很靈活。其實,MDA工具所要做的事情,就是UML模型與代碼間的雙向轉換:從模型可以生成代碼;從代碼可以生成模型。這里面有兩個關鍵點:
    1、模型生成的代碼不能是垃圾代碼,要正確,還要符合我們所指定的編碼規范——尤其是注釋。
    2、從代碼到模型再到代碼時,原始代碼中的所有內容應當充分保留。不應發生注釋或方法體丟失。

    我根據特定的編碼規范,通過二次定制powerdeisgner的java 5語言成功實現了上述MDA特性。

    在powerdesigner中,編程語言完全是一個定制項。其全部特征信息都記在一個后綴名為xol的xml文件中。比如java5的定制文件是Powerdesigner 12\Resource Files\Object Languages\java5-j2ee14.xol

    專家級牛人可以通過修改這類文件達到任何目錄。對于我來說,xol文件太長,有太多的cdata,不好搞,還是通過powerdesigner中的“edit current langauge"來修改比較好。

    在powerdesigner中點擊language->edit current language,就會出現語言特性編輯界面。要編輯它比較容易,下面就幾個關鍵特性舉例說明。

    1、每個java文件最頭部的聲明性注釋。位于文件最頂部,在package和import語句的前面。

    2、類注釋,也就是javadoc注釋,位于類聲明之前,import語句之后。Powerdesigner直接支持它。

     

    我們的@version內容不是一行代號,而是一個revision history。所以有必要調整輸入框:在上圖中將Data Type由String改為Text。這樣就可以在一個彈出的多行文本編輯框中編輯缺省值。如下圖所示。

     

    如果定制模板,可以引用變量,如%@author%, %Model.Author%, %CurrentDate%等,但上面缺省值編輯中不能引用變量。此外,Powerdesigner對于日期的格式化只是簡單的輸入缺省格式。

    這樣在類和接口的屬性窗口中,java doc version就不再是一個單行文本編輯框了。

     

    3、最后輸入的javadoc注釋格式有點不符規范。可修改如下。

    這樣,最后輸出的結果就很漂亮了。

    上面的@pdOid是可以刪掉的,因害怕影響逆向工程的同步,我沒有動它。

     

    4、上面收尾的"*/"沒有換行,可以在BaseObject.javaDocComment中修改。

     

    5、Javadoc要求每個包有個package.html。

     6、我們不用EJB了,把多余的EJB原型(Stereotype)全部刪掉。類和接口下也有,都可以刪掉。

     

    Powerdesigner生成java代碼的定制雖然強大,但也有不足。比如在模型中給類添加了一些屬性,然后讓其自動生成setter方法。這些setter方法中的參數是以"new"會前綴的,想把"new"改成"p"基本上做不到。究其原因,是這個方法的聲明來自自動生成腳本,我們無從定制。

     

     

    Powerdesigner的逆向工程功能也很棒!不過要注意兩個設置。一是保留@pdOid注釋。二是確認是否刪除代碼中不存在的類、方法和屬性。如下圖所示。

    上面的Deletion缺省是不選中的。就是說不刪除模型中存在,但代碼中不存在的類,屬性和方法及方法中的參數。對于類來說刪不刪各有所好。對于屬性和方法來說有點不合理。對于方法中的參數來說就是個災難性的錯誤。

    比如,模型中的有個方法someMethod(String parameter),在源代碼中、參數的類型由String改成int: someMethod(int parameter),保持名稱不變。如果不選Deletion,最終結果會是:SomeMethod(String parameter, int parameter2)。 

    @pdOid是專為逆向工程服務的。有了它,Powerdesigner就以它為唯一標識來識別類,屬性和方法。即使在類、屬性或方法的名稱發生變化的情況下,它仍能正確逆向的更新模型。

    在沒有@pdOid時,如果發生類名的變化,Powerdesigner會新增一個類,并刪去舊類(當選中Deletion時)。引用這個類的時序圖或類圖將發生類丟失的現象。

     

    除了定制生成代碼的模板外,Powerdesigner也支持自定義逆向工程——從java 代碼到OOM模型。如下圖所示。

    但是,我們并不能擴展Powerdesigner內內置的逆向工程,只能自己做一個全新的。這樣做的工作量就太大了。

    Powerdesigner已有的逆向工程在注釋的轉換上存在較大的問題:只支持有限的注釋聲明。比如Java5中的泛型參數的注釋@param <V>就不支持,Powerdesigner會認為不存在這個參數,而忽略這個注釋。

    這個功能的缺失直接破壞了正向->逆向->再正向的循環——當你再正向時,原來辛辛苦苦寫的注釋有一部分丟失了。



    Powerdesigner是個讓人想愛又想恨的軟件。它的缺點和優點一樣突出:首先就是價格超貴,不是一般的公司能承受的,更別提個人了:( 其次它總是會在重要功能上出現幾個麻煩的bug。比如12.1版本,序列圖中居然無法從調用方法列表中選取方法。這個bug在12.5中已經解決。我使用的是試用版。
    最后還有一個問題就是對java5的新特性的支持還不到位。泛型的注釋在轉換過程中會丟失。

    posted on 2007-05-04 15:57 Welkin Hu 閱讀(1331) 評論(1)  編輯  收藏 所屬分類: 軟件開發

    Feedback

    # re: 定制Powerdesigner Profile,實現個性化的雙向MDA[未登錄] 2011-08-31 09:23 zhou
    太感謝了,這篇文章非常有用,剛剛接觸Powerdesigner 一直不知道在哪里改模板  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日韩在线免费电影| 亚洲欧美国产国产综合一区| 免费观看午夜在线欧差毛片| 99久久免费中文字幕精品| 午夜成人无码福利免费视频| 亚洲日本人成中文字幕| 久久久久亚洲av无码尤物| 亚洲国产综合精品中文字幕| 精品国产一区二区三区免费看| 最近中文字幕mv免费高清视频8| 韩日电影在线播放免费版| 日本一区二区在线免费观看| 亚洲国产成人AV在线播放| 麻豆狠色伊人亚洲综合网站| 亚洲五月激情综合图片区| 亚洲成色在线综合网站| 狠狠亚洲狠狠欧洲2019| 亚洲国产精品嫩草影院久久| 日本二区免费一片黄2019| 全免费a级毛片免费**视频| 亚洲免费网站观看视频| 四虎在线最新永久免费| 久久久精品2019免费观看 | 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 国产AV旡码专区亚洲AV苍井空| 亚洲欧洲日产国码在线观看| 亚洲高清资源在线观看| 亚洲色图.com| 亚洲不卡1卡2卡三卡2021麻豆| 亚洲第一香蕉视频| 亚洲日本久久一区二区va| 亚洲熟女综合色一区二区三区| 日韩亚洲人成在线| 亚洲成a人片在线不卡一二三区| 亚洲中文无码亚洲人成影院| 亚洲码欧美码一区二区三区| 亚洲色成人网站WWW永久四虎| 亚洲国产aⅴ成人精品无吗| 色天使亚洲综合一区二区| 极品色天使在线婷婷天堂亚洲| 污污视频免费观看网站|