Rose與PowerDesigner:兩款建模工具的對比[1] |
|
一、二者的出身 作為世界最著(zhù)名的兩大CASE工具,Rational Rose和PowerDesigner的名聲可謂如雷貫耳。Rose是當時(shí)全球最大的CASE工具提供商Rational的拳頭產(chǎn)品,UML建模語(yǔ)言就是由Rational公司的三位巨頭Booch、Rumbaugh和Jacobson發(fā)明的,后來(lái)Rational被IBM收購,所以Rose可謂出身名門(mén),嫁入豪族。而PowerDesigner也有一段好玩的歷史,作者王曉昀是一位中國人,在法國SDP軟件公司工作時(shí),由于苦覓一個(gè)好用的CASE工具未果,干脆自由開(kāi)搞,整了個(gè)AMC Designor出來(lái),居然一炮打響,在法國賣(mài)得個(gè)“巴黎紙貴”,后來(lái)SDP被Powersoft公司收購,同年Sybase這只大黃雀又吃下了Powersoft這只螳螂,所以PowerDesigner也是驚艷出場(chǎng),星光四射。 但兩者所走的明星路線(xiàn)卻很不相同,Rose出道是時(shí),走的是UML面向對象建模,而后再向數據庫建模發(fā)展,而PowerDesigner則反其道而行之,它先是一個(gè)純粹的數據庫建模工具,后來(lái)才向面向對象建模,業(yè)務(wù)邏輯建模及需求分析建模進(jìn)軍,最終變成“演視歌三棲”明星。 由于第一印象的影響,所以Rose常常給人的印象還是只是面向對象分析設計的工具,而PowerDesigner給人的印象則還停留在數據庫建模工具上。其實(shí),現在的Rose和PowerDesigner都即可以進(jìn)行數據庫建模,也可以進(jìn)行面向對象建模,只是存在支持上的偏重而已。 二、二者區別概述 Rose和PowerDesigner雖然在項目分析設計領(lǐng)域已經(jīng)成為被高度聚光的明星,但是在具體使用哪款工具的問(wèn)題上,不同的公司,不同的人,出于成本,習慣抑或個(gè)人喜好,往往有自己的判斷。由于筆者在不同的公司中被分別要求使用Rose或PowerDesigner進(jìn)行分析設計工作,所以對二者有著(zhù)較為細致的體驗。 Rose走大而全,一站式的策略,它沒(méi)有將數據庫設計和面向對象設計清晰地分開(kāi),僅以不同的目錄來(lái)區分。而PowerDesigner將兩者劃分到獨立的模型文件中,分別對應不同的設計環(huán)境,并通過(guò)模型之間的轉換工具建立各模型的關(guān)聯(lián)。即使對于數據庫設計模型,PowerDesigner也需要你選擇一個(gè)具體的數據庫產(chǎn)品及其版本,以便工作環(huán)境對具體數據庫敏感。所以Rose顯得大而化之,而PowerDesigner則比較精細和一體化。Rose的逆向工程,文檔輸出,代碼生成等輸入輸出功能上表現得比較生硬單調,PowerDesigner在逆向工程,特別是文檔輸出和代碼生成這些功能上提供了精細的控制,讓用戶(hù)擁有高度的自由度。 Rose在操作體驗上存在很多需要改進(jìn)的地方,Rose偏向于讓用戶(hù)用鼠標進(jìn)行操作,對鍵盤(pán)操作支持不好。而PowerDesigner在用戶(hù)體驗上得分很高,大部分操作都可以通過(guò)鍵盤(pán)完成,在充分熟悉其快捷鍵的前提下,PowerDesigner將給設計者一種行云流水的感覺(jué),用戶(hù)交互上更加人性化。此外,Rose往往占用更多的資源,容易異常退出,PowerDesigner則顯得輕便穩定。所以,我個(gè)人對兩者的體驗就是“Rose笨拙,PD利索”。下面將具體列出Rose和PowerDesigner的一系列的區別,相信大家可以借由這些比較而見(jiàn)微知著(zhù),窺斑知豹,以資在選擇工具時(shí),提供參考。 三、模型組織和層次結構上的區別 1、模型組織Rose將數據庫模型和對象模型放在一起,在進(jìn)行數據表模型設計時(shí),沒(méi)有特性化的東西。而PowerDesigner將兩者分開(kāi),其模型組織層級關(guān)系是:工作空間->模型類(lèi)型->具體語(yǔ)言/數據庫的模型->包->文件夾->Diagram->設計元素。在創(chuàng )建模型文件時(shí),會(huì )讓你選擇模型類(lèi)型,選擇模型類(lèi)型后,還可以選擇模型類(lèi)型下語(yǔ)言及版本相關(guān)的細分類(lèi)。不同設計模型對應軟件工程的不同階段,如業(yè)務(wù)模型和需求模型屬于項目需求階段,而對象模型屬于概要和詳細設計階段,數據庫模型屬于詳細設計階段。它們之間雖然有很強的內在聯(lián)系,但差異性也很明顯,硬將兩者放到一起,就象把猴子和猩猩關(guān)進(jìn)同一個(gè)籠子,為了兼顧和平衡兩者之間的考量,其結果是兩者都得不到很好的支持。 ![]() 圖1:新建模型窗口(PD)
![]() 圖2:新建模型窗口(Rose) PowerDesinger可以通過(guò)模型轉換工具進(jìn)行數據庫建模和面向對象模型的相互轉換。但Rose不能將對象轉換為表,也不能將表轉換為對象。 2、工作空間PowerDesigner有工作空間的概念,一個(gè)工作空間下可以同時(shí)打開(kāi)多個(gè)設計模型文件;而Rose同時(shí)僅能打開(kāi)一個(gè)設計文件,如果在設計時(shí),需要參考其他的Rose設計模型,則需要反復關(guān)閉現有模型,打開(kāi)參考模型,顯得設計上比較欠考慮。這個(gè)問(wèn)題上兩者的差異恰似Eclipse和JBuilder的區別,Eclipse可以同時(shí)打開(kāi)多個(gè)工程,而JBuilder只能同時(shí)打開(kāi)一個(gè)工程。 3、設計界面PowerDesigner的設計界面可以左右上下移動(dòng),而Rose只能向右,向下移動(dòng),此外,PowerDesigner可以將模型元素放大很多倍,而Rose只能放大到正常倍數,不過(guò)Rose的Overview工具可以使用戶(hù)快速定位到設計區中特定的區域,有點(diǎn)類(lèi)似于游戲界面中常用的小地圖,挺不錯; ![]() 圖3:Overview工具(Rose) 而在PowerDesigner中,你可以通過(guò)F8快捷鍵查看Diagram的總覽圖,不過(guò)只得通過(guò)放大操作定位到定位區域。 4、對模型和語(yǔ)言的支持 ◆對設計模型的支持力度和廣度 PowerDesigner對對象模型和數據庫建模兩者的支持力度已經(jīng)大抵相等,此外,還支持概念模型、業(yè)務(wù)模型、需求模型、XML模型、信息流模型、自由模型的分析設計。不過(guò)對后面這幾個(gè)模型的支持比較初級,而且在實(shí)際的應用中,這些模型用得也比較少,PowerDesigner的突出亮點(diǎn)還是在數據庫建模和對象模型的設計上。 對于數據庫模型,PowerDesigner支持20余種數據庫,對于同一數據庫的不同版本還提供單獨的支持,以便在設計數據庫模型時(shí),提供數據庫和版本相關(guān)的設計。對于面向對象模型,PowerDesigner支持11種主流語(yǔ)言,為對Java 5.0提供單獨的支持。 Rose基本上可以說(shuō)是一個(gè)對象模型設計工具,對數據庫模型的支持相對粗糙,內嵌的只支持Oracle 8數據庫,對其他數據庫設計的支持需要通過(guò)安裝插件的方式獲得,且對數據庫物理存儲參數等較細粒度的內容支持得比較粗糙。Rose的對象模型主要支持Java、VC和VB三種語(yǔ)言。 ◆對Java語(yǔ)言的支持 Rose對Java語(yǔ)言的支持更好,不但為不同版本的JDK提供了支持(不過(guò)Rose 2003還不支持JDK 5.0),還為Java具體產(chǎn)品及設計模式(如EJB、Corba、Servlet,GOF設計模式等)提供了內嵌性的支持,這些支持直接反應在Rose的主菜單上。正因為如此,使Rose背上的沉重的歷史負擔,如EJB和Corba這種語(yǔ)言級的東西是易變且不斷更新的,如何在這些具體產(chǎn)品的地位和影響已經(jīng)降低時(shí),對其作出割舍而又保證版本的兼容性,是擺在設計者面前的難題。 PowerDesigner僅提供語(yǔ)言級對象設計的支持,不涉及語(yǔ)言?xún)炔康木唧w產(chǎn)品。其次因為它的設計工作區是和具體的模型類(lèi)型及語(yǔ)言細分類(lèi)相關(guān)的,而非在主菜單中直接提供支持,所以PowerDesigner在升級時(shí)顯得更加從容一些。 這也是為什么PowerDesigner能以每年一個(gè)版本的速度升級,而Rose在2003版本后,新版本還遲遲投入市場(chǎng)的內在原因,否則以IBM的財力,研發(fā)能力不至于對市場(chǎng)反應如果緩慢。 5、輸入和輸出功能的比較 ◆反向工程 從將程序代碼轉換為設計模型的逆向工程功能上看,Rose更象一個(gè)IDE,它會(huì )對需要逆向工程操作的程序代碼進(jìn)行深度語(yǔ)義檢查,如果存在諸如程序代碼引用了類(lèi)庫之外的類(lèi),反向工程將失敗,而且在報告失敗之前,窗口會(huì )陷入長(cháng)時(shí)間無(wú)響應狀態(tài)。 PowerDesigner僅對需逆向工程的程序代碼進(jìn)行淺度語(yǔ)法檢查,這種淺度語(yǔ)法檢查不涉及包,類(lèi)之間的關(guān)聯(lián),僅對諸如類(lèi)名是否和類(lèi)文件名匹配,是否少了“}” 等語(yǔ)法性的內容進(jìn)行檢查。即便存在錯誤,PowerDesigner也允許你忽略錯誤,繼續進(jìn)行逆向工程操作,這種寬松的限制帶來(lái)了很大的便利。
![]() 圖4:逆向工程失敗選擇三種選擇(PD) 忽略錯誤后,PowerDesigner會(huì )盡量修補錯誤,例如代碼中少了對應的“}”,它將會(huì )補上,類(lèi)名和文件名不一致,將忽略類(lèi)文件名保持類(lèi)名不變。 Rose一直宣揚的理念是IDE和設計工程進(jìn)行雙向互通:在Rose中完成模型設計后導出為IDE所用的代碼,IDE編碼調整后又逆向工程到Rose。理念很美,深具吸引力,但是在實(shí)現中,往往很少有開(kāi)發(fā)團隊會(huì )這樣做。一般CASE工具只是在分析設計階段使用,甚至很大比例的設計師僅把它當成畫(huà)圖的工具。 真正進(jìn)入編碼開(kāi)發(fā)階段后,將加入大量設計時(shí)不涉及的類(lèi)和方法,如果將這些非骨架性的東西Reverse到CASE工具中,反而會(huì )使原來(lái)清晰的設計變得霧里花,水中月。所以即使編碼時(shí),需要對原分析模型進(jìn)行調整,一般也是手工去調整設計模型,而不是通過(guò)逆向工程去同步,畢竟分析設計是骨架性的,而編碼是血肉性的,兩者有屬性上的區別。如果真的需要頻繁進(jìn)行的代碼和UML轉換,最好使用類(lèi)似于Together一樣的工具,它嵌入到IDE中,使代碼和模型轉換方便快捷。 ◆文檔導出功能 PowerDesigner對文檔導出提供了精細的控制,你不但可以對文檔所包含的內容項進(jìn)行設置,還可以對內容項的格式進(jìn)行設置。如導出的表結構是否包括名稱(chēng)、數據類(lèi)型、備注等項目,這些項目在表欄中的寬度占比,顏色,字號等等,不一而足。 PowerDesinger 12.0 還新增了一個(gè)多模型文檔整合導出的Milti-Model Report模型,允許你以多個(gè)模型作為輸入生成為統一文檔,實(shí)現模型設計按階段分開(kāi),文檔又統一整合的目的。 由于PowerDesigner文檔導出的設置非常精細,所以要設置好一個(gè)文檔導出模式實(shí)非不易。有鑒于此,PowerDesinger提供了三種常用的導出模板,用戶(hù)也可以自己定義模板。通過(guò)模板可以迅速完成設計模型文檔的導出工作。 而Rose沒(méi)有導出模板的概念,更不能對導出項和格式進(jìn)行設置,你只能按Rose的系統內置的方式進(jìn)行模型文檔的發(fā)布。 ◆代碼導出 在導出設計模型的代碼時(shí),PowerDesigner提供了精細的控制,不但可以進(jìn)行對象級別,還可以進(jìn)行代碼級別的控制(如是否要生成字段備注的代碼,外鍵代碼在表體代碼內聲明還是在表體外部聲明等),而Rose沒(méi)有提供代碼導出的控制,也只能按其系統內部設置的方式導出代碼。 ![]() 圖5:數據庫模型導出設置(PD) ◆生成測試數據 六、易用性上的比較 6.1、元素顯示屬性調整 Rose調整元素的顯示屬性(如類(lèi)圖的顯示樣式,方法入參是否顯示等內容)的設置時(shí),新設置僅對新創(chuàng )建的元素起作用,如需調整已有元素的顯示屬性,只得在設計Diagram中,逐一通過(guò)右鍵的方式一個(gè)個(gè)調整,做法有點(diǎn)刀耕火種的味道。 PowerDesigner在這點(diǎn)上顯得很人性化,在調整完元素顯示設置后,PowerDesigner彈出一個(gè)窗口,提供三個(gè)應用新設置的選擇:
![]() 圖6:元素顯示設置調整后應用范圍(PD) 其一,應用到所有元素;其二,應用到當前選擇的元素,其三,應用到新創(chuàng )建的元素。此外,PowerDesigner對每一類(lèi)元素(如類(lèi)圖,序列圖,表圖,引用等)的構成項(如表名,字段名,主鍵列,索引列等)均可以提供單獨的顯示屬性設置,比Rose的控制要精細很多。 6.2、Undo操作 Rose的Undo操作只能回退一步,有時(shí)甚至連一步都不能回退,假設你不小心刪除了一個(gè)精心設計的模型元素,如果不及時(shí)Undo,就只得重頭再來(lái)了。Rose不給設計者后悔的機會(huì ),這種一廂情愿的呆瓜式設計有時(shí)真讓人捶胸跺足,所以你在刪除或調整元素時(shí),往往得戰戰兢兢,如履薄冰。相比之下,PowerDesigner則顯得寬宏大量,允許你Undo幾十步,自動(dòng)地進(jìn)行工作場(chǎng)景的回溯,所以在PowerDesigner下工作,會(huì )比較輕松自如,因為你不用為誤操作而付出代價(jià)。 6.3、查詢(xún)功能 PowerDesigner的查詢(xún)功能比較強大,可以按模型類(lèi)型,元素類(lèi)型限定查詢(xún)范圍;還可以使用復合條件進(jìn)行精確搜索。 ![]() 圖7:高級搜索窗口(PD) 在元素查詢(xún)結果列表中,可以選擇定位到導航樹(shù),Diagram或者屬性設計窗口,非常方便;而Rose只能按名稱(chēng)進(jìn)行搜索,且從搜索結果列表只能定位到元素所在的Diagram中。
![]() 圖8:搜索窗口(Rose) 6.4、默認字體的問(wèn)題 PowerDesigner有一個(gè)比較讓人討厭的東西,就是字體大小的系統默認值是8號字,對于中文來(lái)說(shuō)這個(gè)字號太小了,需要9號字才比較適合。所以在設計元素時(shí),需要分別調整字體的大小,或者去改變每種元素的默認字體設置,相對來(lái)說(shuō)比較麻煩。而Rose在這點(diǎn)中做得不錯,系統默認的中文字體大小的默認值剛好適合。 6.5、元素布局調整 PowerDesigner對Diagram中元素的布局提供了更多的支持,如元素對齊排列,元素的上下圖層關(guān)系等,并提供了相應的快捷鍵,操作起來(lái)很順手。而Rose僅支持自動(dòng)布局(Auto Layout)功能,毫無(wú)二致地將選擇的元素水平中心對齊,也沒(méi)有圖層前后移動(dòng)的功能。 6.6、用鼠標進(jìn)行元素選取的策略 在Diagram中選擇模型元素時(shí),PowerDesigner采取“完全包含選取策略”,而Rose采取“部分包含選取策略”。在“完全包含選取策略”下,Diagram中的元素需要完全被鼠標選擇的矩形區域包含后,才被選中;而在“部分包含選取策略”下,只要元素的部分區域被鼠標選擇的矩形區域包含,就被選中。依個(gè)人的使用經(jīng)驗,覺(jué)得“完全包含選取策略”是更適合些,Microsoft的產(chǎn)品也采用這種策略。因為在“部分包含選取策略”下,只要一擦邊,元素就被選擇了,其結果往往是選擇了很多不希望選取的東西,如連線(xiàn),周邊元素圖形等。 6.7、代碼預覽功能 PowerDesigner可以在屬性窗口中預覽模型元素(如類(lèi)、接口、表、視圖等)對應的代碼。在類(lèi)圖的屬性窗口中,甚至還可以直接編輯預覽的代碼來(lái)進(jìn)行模型元素的設計,就象Together一樣。在設計諸如類(lèi),接口的模型元素的方法時(shí),對于有著(zhù)豐富編程經(jīng)驗的設計師來(lái)說(shuō),有時(shí)與其通過(guò)一個(gè)又一個(gè)彈出對話(huà)框,還不如直接通過(guò)編寫(xiě)代碼來(lái)得方便,PowerDesigner的這種設計充分地考慮到了分析設計人員同時(shí)也是開(kāi)發(fā)人員出身的特點(diǎn),由此帶來(lái)很大的便利,提高了效率。
![]() 圖9:類(lèi)設計屬性窗口(PD) 而在Rose中,模型元素沒(méi)有代碼預覽功能,更不能通過(guò)代碼進(jìn)行反向設計,只有通過(guò)導出代碼的功能才能看到模型元素的代碼。 6.8、同類(lèi)型元素統一管理窗口 PowerDesigner為每一類(lèi)型元素(如字段,表,對象,索引,主鍵等)提供了集中管理窗口,可以在該列表中對同類(lèi)元素進(jìn)行統一管理。如在設計數據庫模型時(shí),希望將所有的索引存儲到一個(gè)指定的表空間中,你可以打開(kāi)索引的集中管理窗口: ![]() 圖10:索引屬性列表框(PD) 在此管理窗口中調整所有索引的Options設置就可以了。如果沒(méi)有這樣的集中管理窗口,就需要在每個(gè)表的屬性窗口中分別獨自地設置表索引的Options屬性,操作繁瑣暫且不提,如何去保證每個(gè)索引都得到正確的設置就夠讓人傷腦筋了。而在Rose下,你就得逐門(mén)逐戶(hù)查戶(hù)口式的一個(gè)個(gè)去設置,沒(méi)有捷徑可走。 PowerDesigner的這種分散設計,集中管理的設計思路體現對立統一的哲學(xué)思想的完好運用,因為事物有其獨特性,也有其統一性,需要兼顧兩者而不可偏廢。 6.9、批量編輯操作 PowerDesigner的批量編輯操作能夠大大提高的工作效率,這些批量編輯操作包括同時(shí)選中多個(gè)元素項目,同時(shí)編輯選中項的相同屬性值,調整順序等。 ![]() 圖11:批量編輯操作(PD) Rose不支持批量編輯和批量順序調整等操作,需要逐一編輯:
![]() 圖12:不支持批量編輯(Rose) 元素快捷圖示 PowerDesigner可以創(chuàng )建模型元素的快捷圖示,它相當于是元素視圖層上的多份拷貝,使同一個(gè)物理元素對應多個(gè)邏輯的圖示。這對于大型復雜系統的分析設計特別有好處,因為一個(gè)模型元素會(huì )在多個(gè)地方被引用,這時(shí)你就可以通過(guò)Ctrl+C和Ctrl+K的方式來(lái)創(chuàng )建模型元素的快捷圖示,在多個(gè)地方使用它,甚至在同一個(gè)Diagram中使一個(gè)元素在不同的地方出現多次,防止大距離的關(guān)系連線(xiàn)導致蜘蛛網(wǎng)式的設計圖。 Rose也可以創(chuàng )建快捷圖示,即通過(guò)Ctrl+C和Ctrl+V創(chuàng )建,但卻不能復制一個(gè)現有的元素,Ctrl+C和Ctrl+V在PowerDesigner中是創(chuàng )建一個(gè)復制的元素。此外,在同一個(gè)Diagram中,同一元素的不同快捷圖示,Rose是表現為相同的名字,而PowerDesigner則會(huì )添加數字后綴,以示區分。 屬性窗口大小調整 Rose的編輯屬性窗口沒(méi)有放大,縮小按鈕,需要手工拖動(dòng)鼠標調整大小,一直不明白為什么如此簡(jiǎn)單的功能,Rose也要吝嗇不提供。PowerDesinger的屬性窗口則沒(méi)有這個(gè)限制。 ![]() 圖13:屬性窗口(Rose) 7、資源占用和運行穩定性 資源占用 Rose在進(jìn)行面向對象的設計時(shí),由于要加載大量的類(lèi)庫,導致內存資源占用很大,往往達300M以上,PowerDesinger的資源的占用則小得多?! ?div id="u2k6usm" class='imgcenter'> 圖14:資源占用率 穩定性上 Rose常有窗口“抽筋”的反應(窗口變白,不接受任何響應),甚至毫無(wú)征兆地異常退出,容錯性也不太好。如在逆向工程時(shí),如果代碼存在錯誤,甚至僅僅對一個(gè)存在錯誤的類(lèi)進(jìn)行逆向工程,窗口也會(huì )出現“抽筋”現象。 PowerDesigner顯得靈活快捷,很少出現窗口“抽筋”和意外退出的現象。 |
聯(lián)系客服