<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 一直不知道在哪里改模板  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 免费在线精品视频| 日本一道本高清免费| 国产亚洲精品不卡在线| 国产亚洲漂亮白嫩美女在线 | 亚洲一区二区三区无码影院| 亚洲欧美熟妇综合久久久久| 成人A级毛片免费观看AV网站| 亚洲一卡二卡三卡| 国产精品久久久久免费a∨| 亚洲AV无码成人专区| 性色av无码免费一区二区三区| 91在线亚洲综合在线| 日韩电影免费在线| 日韩在线视频播放免费视频完整版| 免费国产人做人视频在线观看| 国产在亚洲线视频观看| 亚洲精品人成无码中文毛片| 五月婷婷免费视频| 亚洲一区二区在线免费观看| 最近中文字幕完整免费视频ww| 亚洲av永久无码精品天堂久久| 妞干网免费视频在线观看| 国产精品国产亚洲区艳妇糸列短篇| 免费观看日本污污ww网站一区 | 中文字幕成人免费高清在线视频| 国产av天堂亚洲国产av天堂| 91香蕉在线观看免费高清| 国产亚洲福利在线视频| 免费一级毛片一级毛片aa| 黄色网址免费在线观看| 亚洲一区免费观看| 天天拍拍天天爽免费视频| EEUSS影院WWW在线观看免费| 亚洲国产综合精品中文第一区| 91在线品视觉盛宴免费| 国产成人亚洲综合在线| 亚洲av日韩av高潮潮喷无码| 成年美女黄网站色大免费视频| 免费看黄网站在线看 | 高清永久免费观看| 亚洲成a人片在线观看中文!!!|