一
二者的出身
作為世界最著名的兩大CASE工具
Rational Rose和PowerDesigner的名聲可謂如雷貫耳
Rose是當時全球最大的CASE工具提供商Rational的拳頭產品
UML建模語言就是由Rational公司的三位巨頭Booch
Rumbaugh和Jacobson發明的
後來Rational被IBM收購
所以Rose 可謂出身名門
嫁入豪族
而PowerDesigner也有一段好玩的歷史
作者王曉昀是一位中國人
在法國SDP軟件公司工作時
由於苦覓一個好用的CASE工具未果
干脆自由開搞
整了個AMC*Designor出來
居然一炮打響
在法國賣得個
巴黎紙貴
後來SDP被Powersoft公司收購
同年Sybase這只大黃雀又吃下了Powersoft這只螳螂
所以PowerDesigner也是驚艷出場
星光四射
但兩者所走的明星路線卻很不相同
Rose出道是時
走的是UML面向對象建模
而後再向數據庫建模發展
而PowerDesigner則反其道而行之
它先是一個純粹的數據庫建模工具
後來才向面向對象建模
業務邏輯建模及需求分析建模進軍
最終變成
演視歌三棲
明星
由於第一印象的影響
所以Rose常常給人的印象還是只是面向對象分析設計的工具
而PowerDesigner給人的印象則還停留在數據庫建模工具上
其實
現在的Rose和PowerDesigner都即可以進行數據庫建模
也可以進行面向對象建模
只是存在支持上的偏重而已
二
二者區別概述
Rose和PowerDesigner雖然在項目分析設計領域已經成為被高度聚光的明星
但是在具體使用哪款工具的問題上
不同的公司
不同的人
出於成本
習慣抑或個人喜好
往往有自己的判斷
由於筆者在不同的公司中被分別要求使用Rose或PowerDesigner進行分析設計工作
所以對二者有著較為細致的體驗
Rose走大而全
一站式的策略
它沒有將數據庫設計和面向對象設計清晰地分開
僅以不同的目錄來區分
而PowerDesigner將兩者劃分到獨立的模型文件中
分別對應不同的設計環境
並通過模型之間的轉換工具建立各模型的關聯
即使對於數據庫設計模型
PowerDesigner也需要你選擇一個具體的數據庫產品及其版本
以便工作環境對具體數據庫敏感
所以Rose顯得大而化之
而PowerDesigner則比較精細和具體化
Rose的逆向工程
文檔輸出
代碼生成等輸入輸出功能上表現得比較生硬單調
PowerDesigner在逆向工程
特別是文檔輸出和代碼生成這些功能上提供了精細的控制
讓用戶擁有高度的自由度
Rose在操作體驗上存在很多需要改進的地方
Rose偏向於讓用戶用鼠標進行操作
對鍵盤操作支持不好
而PowerDesigner在用戶體驗上得分很高
大部分操作都可以通過鍵盤完成
在充分熟悉其快捷鍵的前提下
PowerDesigner將給設計者一種行雲流水的感覺
用戶交互上更加人性化
此外
Rose往往占用更多的資源
容易異常退出
PowerDesigner則顯得輕便穩定
所以
我個人對兩者的體驗就是
Rose笨拙
PD利索
下面將具體列出Rose和PowerDesigner的一系列的區別
相信大家可以借由這些比較而見微知著
窺斑知豹
以資在選擇工具時
提供參考
三
模型組織和層次結構上的區別
模型組織Rose將數據庫模型和對象模型放在一起
在進行數據表模型設計時
沒有特性化的東西
而PowerDesigner將兩者分開
其模型組織層級關系是
工作空間
>模型類型
>具體語言/數據庫的模型
>包
>文件夾
>Diagram
>設計元素
在創建模型文件時
會讓你選擇模型類型
選擇模型類型後
還可以選擇模型類型下語言及版本相關的細分類
不同設計模型對應軟件工程的不同階段
如業務模型和需求模型屬於項目需求階段
而對象模型屬於概要和詳細設計階段
數據庫模型屬於詳細設計階段
它們之間雖然有很強的內在聯系
但差異性也很明顯
硬將兩者放到一起
就象把猴子和猩猩關進同一個籠子
為了兼顧和平衡兩者之間的考量
其結果是兩者都得不到很好的支持
圖 新建模型窗口(PD)
圖 新建模型窗口(Rose)
PowerDesinger可以通過模型轉換工具進行數據庫建模和面向對象模型的相互轉換但Rose不能將對象轉換為表也不能將表轉換為對象
工作空間PowerDesigner有工作空間的概念一個工作空間下可以同時打開多個設計模型文件而Rose同時僅能打開一個設計文件如果在設計時需要參考其他的Rose設計模型則需要反復關閉現有模型打開參考模型顯得設計上比較欠考慮這個問題上兩者的差異恰似Eclipse和JBuilder的區別
Eclipse可以同時打開多個工程而JBuilder只能同時打開一個工程
設計界面PowerDesigner的設計界面可以左右上下移動而Rose只能向右向下移動此外PowerDesigner可以將模型元素放大很多倍而Rose只能放大到正常倍數不過Rose的Overview工具可以使用戶快速定位到設計區中特定的區域有點類似於游戲界面中常用的小地圖挺不錯
圖 Overview工具(Rose)
而在PowerDesigner中你可以通過F快捷鍵查看Diagram的總覽圖不過只得通過放大操作定位到定位區域
對模型和語言的支持
? 對設計模型的支持力度和廣度
PowerDesigner對對象模型和數據庫建模兩者的支持力度已經大抵相等此外還支持概念模型業務模型需求模型XML模型信息流模型自由模型的分析設計不過對後面這幾個模型的支持比較初級而且在實際的應用中這些模型用得也比較少PowerDesigner的突出亮點還是在數據庫建模和對象模型的設計上
對於數據庫模型PowerDesigner支持余種數據庫對於同一數據庫的不同版本還提供單獨的支持以便在設計數據庫模型時提供數據庫和版本相關的設計對於面向對象模型PowerDesigner支持種主流語言為對Java 提供單獨的支持
Rose基本上可以說是一個對象模型設計工具對數據庫模型的支持相對粗糙內嵌的只支持Oracle 數據庫對其他數據庫設計的支持需要通過安裝插件的方式獲得且對數據庫物理存儲參數等較細粒度的內容支持得比較粗糙Rose的對象模型主要支持JavaVC和VB三種語言
? 對Java語言的支持
Rose對Java語言的支持更好不但為不同版本的JDK提供了支持(不過Rose 還不支持JDK )還為Java具體產品及設計模式(如EJBCorbaServletGOF設計模式等)提供了內嵌性的支持這些支持直接反應在Rose的主菜單上正因為如此使Rose背上的沉重的歷史負擔如EJB和Corba這種語言級的東西是易變且不斷更新的如何在這些具體產品的地位和影響已經降低時對其作出割捨而又保證版本的兼容性是擺在設計者面前的難題
PowerDesigner僅提供語言級對象設計的支持不涉及語言內部的具體產品其次因為它的設計工作區是和具體的模型類型及語言細分類相關的而非在主菜單中直接提供支持所以PowerDesigner在升級時顯得更加從容一些
這也是為什麼PowerDesigner能以每年一個版本的速度升級而Rose在版本後新版本還遲遲投入市場的內在原因否則以IBM的財力研發能力不至於對市場反應如果緩慢
輸入和輸出功能的比較
? 反向工程
從將程序代碼轉換為設計模型的逆向工程功能上看Rose更象一個IDE它會對需要逆向工程操作的程序代碼進行深度語義檢查如果存在諸如程序代碼引用了類庫之外的類反向工程將失敗而且在報告失敗之前窗口會陷入長時間無響應狀態
PowerDesigner僅對需逆向工程的程序代碼進行淺度語法檢查這種淺度語法檢查不涉及包類之間的關聯僅對諸如類名是否和類文件名匹配是否少了} 等語法性的內容進行檢查即便存在錯誤PowerDesigner也允許你忽略錯誤繼續進行逆向工程操作這種寬松的限制帶來了很大的便利
圖 逆向工程失敗選擇三種選擇(PD)
忽略錯誤後PowerDesigner會盡量修補錯誤例如代碼中少了對應的}它將會補上類名和文件名不一致將忽略類文件名保持類名不變
Rose一直宣揚的理念是IDE和設計工程進行雙向互通在Rose中完成模型設計後導出為IDE所用的代碼IDE編碼調整後又逆向工程到Rose理念很美深具吸引力但是在實現中
往往很少有開發團隊會這樣做一般CASE工具只是在分析設計階段使用甚至很大比例的設計師僅把它當成畫圖的工具
真正進入編碼開發階段後將加入大量設計時不涉及的類和方法如果將這些非骨架性的東西Reverse到CASE工具中反而會使原來清晰的設計變得霧裡花水中月所以即使編碼時需要對原分析模型進行調整一般也是手工去調整設計模型而不是通過逆向工程去同步畢竟分析設計是骨架性的而編碼是血肉性的兩者有屬性上的區別如果真的需要頻繁進行的代碼和UML轉換最好使用類似於Together一樣的工具它嵌入到IDE中使代碼和模型轉換方便快捷
? 文檔導出功能
PowerDesigner對文檔導出提供了精細的控制你不但可以對文檔所包含的內容項進行設置還可以對內容項的格式進行設置如導出的表結構是否包括名稱數據類型備注等項目這些項目在表欄中的寬度占比顏色字號等等不一而足
PowerDesinger 還新增了一個多模型文檔整合導出的MiltiModel Report模型允許你以多個模型作為輸入生成為統一文檔實現模型設計按階段分開文檔又統一整合的目的
由於PowerDesigner文檔導出的設置非常精細所以要設置好一個文檔導出模式實非不易有鑒於此PowerDesinger提供了三種常用的導出模板用戶也可以自己定義模板通過模板可以迅速完成設計模型文檔的導出工作
而Rose沒有導出模板的概念更不能對導出項和格式進行設置你只能按Rose的系統內置的方式進行模型文檔的發布
? 代碼導出
在導出設計模型的代碼時PowerDesigner提供了精細的控制不但可以進行對象級別還可以進行代碼級別的控制(如是否要生成字段備注的代碼外鍵代碼在表體代碼內聲明還是在表體外部聲明等)而Rose沒有提供代碼導出的控制也只能按其系統內部設置的方式導出代碼
圖 數據庫模型導出設置(PD)
生成測試數據
PowerDesigner可為數據表生成批量的測試數據而且你還可以制定測試數據的生成規則這個功能給初期項目的開發測試帶來很大的便利Rose中沒有提供類似的功能
From:http://tw.wingwit.com/Article/program/net/201311/13403.html