Rose與PowerDesigner:兩款UML建模工具的對比
本文和大家重點討論一下Rose與PowerDesigner:兩款UML建模工具的對比,Rose和PowerDesigner雖然在項目分析設(shè)計領(lǐng)域已經(jīng)成為被高度聚光的明星,但是在不同的公司中被分別要求使用Rose或PowerDesigner進行分析設(shè)計工作,所以對二者有著較為細(xì)致的體驗。
Rose與PowerDesigner:兩款UML建模工具的對比
一、二者的出身
作為世界最著名的兩大CASE工具,RationalRose和PowerDesigner的名聲可謂如雷貫耳。Rose是當(dāng)時全球最大的CASE工具提供商Rational的拳頭產(chǎn)品,UML建模語言就是由Rational公司的三位巨頭Booch、Rumbaugh和Jacobson發(fā)明的,后來Rational被IBM收購,所以Rose可謂出身名門,嫁入豪族。而PowerDesigner也有一段好玩的歷史,作者王曉昀是一位中國人,在法國SDP軟件公司工作時,由于苦覓一個好用的CASE工具未果,干脆自由開搞,整了個AMCDesignor出來,居然一炮打響,在法國賣得個“巴黎紙貴”,后來SDP被Powersoft公司收購,同年Sybase這只大黃雀又吃下了Powersoft這只螳螂,所以PowerDesigner也是驚艷出場,星光四射。
但兩者所走的明星路線卻很不相同,Rose出道是時,走的是UML面向?qū)ο蠼#笤傧驍?shù)據(jù)庫建模發(fā)展,而PowerDesigner則反其道而行之,它先是一個純粹的數(shù)據(jù)庫UML建模工具,后來才向面向?qū)ο蠼#瑯I(yè)務(wù)邏輯建模及需求分析建模進軍,最終變成“演視歌三棲”明星。
由于第一印象的影響,所以Rose常常給人的印象還是只是面向?qū)ο蠓治鲈O(shè)計的工具,而PowerDesigner給人的印象則還停留在數(shù)據(jù)庫UML建模工具上。其實,現(xiàn)在的Rose和PowerDesigner都即可以進行數(shù)據(jù)庫建模,也可以進行面向?qū)ο蠼#皇谴嬖谥С稚系钠囟选?/p>
二、兩款UML建模工具區(qū)別概述
Rose和PowerDesigner雖然在項目分析設(shè)計領(lǐng)域已經(jīng)成為被高度聚光的明星,但是在具體使用哪款工具的問題上,不同的公司,不同的人,出于成本,習(xí)慣抑或個人喜好,往往有自己的判斷。由于筆者在不同的公司中被分別要求使用Rose或PowerDesigner進行分析設(shè)計工作,所以對二者有著較為細(xì)致的體驗。
Rose走大而全,一站式的策略,它沒有將數(shù)據(jù)庫設(shè)計和面向?qū)ο笤O(shè)計清晰地分開,僅以不同的目錄來區(qū)分。而PowerDesigner將兩者劃分到獨立的模型文件中,分別對應(yīng)不同的設(shè)計環(huán)境,并通過模型之間的轉(zhuǎn)換工具建立各模型的關(guān)聯(lián)。即使對于數(shù)據(jù)庫設(shè)計模型,PowerDesigner也需要你選擇一個具體的數(shù)據(jù)庫產(chǎn)品及其版本,以便工作環(huán)境對具體數(shù)據(jù)庫敏感。所以Rose顯得大而化之,而PowerDesigner則比較精細(xì)和一體化。Rose的逆向工程,文檔輸出,代碼生成等輸入輸出功能上表現(xiàn)得比較生硬單調(diào),PowerDesigner在逆向工程,特別是文檔輸出和代碼生成這些功能上提供了精細(xì)的控制,讓用戶擁有高度的自由度。
Rose在操作體驗上存在很多需要改進的地方,Rose偏向于讓用戶用鼠標(biāo)進行操作,對鍵盤操作支持不好。而PowerDesigner在用戶體驗上得分很高,大部分操作都可以通過鍵盤完成,在充分熟悉其快捷鍵的前提下,PowerDesigner將給設(shè)計者一種行云流水的感覺,用戶交互上更加人性化。此外,Rose往往占用更多的資源,容易異常退出,PowerDesigner則顯得輕便穩(wěn)定。所以,我個人對兩者的體驗就是“Rose笨拙,PD利索”。下面將具體列出Rose和PowerDesigner的一系列的區(qū)別,相信大家可以借由這些比較而見微知著,窺斑知豹,以資在選擇工具時,提供參考。#p#
三、兩款UML建模工具在模型組織和層次結(jié)構(gòu)上的區(qū)別
1、模型組織Rose將數(shù)據(jù)庫模型和對象模型放在一起,在進行數(shù)據(jù)表模型設(shè)計時,沒有特性化的東西。而PowerDesigner將兩者分開,其模型組織層級關(guān)系是:工作空間->模型類型->具體語言/數(shù)據(jù)庫的模型->包->文件夾->Diagram->設(shè)計元素。在創(chuàng)建模型文件時,會讓你選擇模型類型,選擇模型類型后,還可以選擇模型類型下語言及版本相關(guān)的細(xì)分類。不同設(shè)計模型對應(yīng)軟件工程的不同階段,如業(yè)務(wù)模型和需求模型屬于項目需求階段,而對象模型屬于概要和詳細(xì)設(shè)計階段,數(shù)據(jù)庫模型屬于詳細(xì)設(shè)計階段。它們之間雖然有很強的內(nèi)在聯(lián)系,但差異性也很明顯,硬將兩者放到一起,就象把猴子和猩猩關(guān)進同一個籠子,為了兼顧和平衡兩者之間的考量,其結(jié)果是兩者都得不到很好的支持。
PowerDesinger可以通過模型轉(zhuǎn)換工具進行數(shù)據(jù)庫建模和面向?qū)ο竽P偷南嗷マD(zhuǎn)換。但Rose不能將對象轉(zhuǎn)換為表,也不能將表轉(zhuǎn)換為對象。
2、工作空間PowerDesigner有工作空間的概念。一個工作空間下可以同時打開多個設(shè)計模型文件;而Rose同時僅能打開一個設(shè)計文件,如果在設(shè)計時,需要參考其他的Rose設(shè)計模型,則需要反復(fù)關(guān)閉現(xiàn)有模型,打開參考模型,顯得設(shè)計上比較欠考慮。這個問題上兩者的差異恰似Eclipse和JBuilder的區(qū)別,Eclipse可以同時打開多個工程,而JBuilder只能同時打開一個工程。
3、設(shè)計界面PowerDesigner的設(shè)計界面可以左右上下移動,而Rose只能向右,向下移動。此外,PowerDesigner可以將模型元素放大很多倍,而Rose只能放大到正常倍數(shù),不過Rose的Overview工具可以使用戶快速定位到設(shè)計區(qū)中特定的區(qū)域,有點類似于游戲界面中常用的小地圖,挺不錯;而在PowerDesigner中,你可以通過F8快捷鍵查看Diagram的總覽圖,不過只得通過放大操作定位到定位區(qū)域。
4、兩款UML建模工具對模型和語言的支持
◆對設(shè)計模型的支持力度和廣度
PowerDesigner對對象模型和數(shù)據(jù)庫建模兩者的支持力度已經(jīng)大抵相等,此外,還支持概念模型、業(yè)務(wù)模型、需求模型、XML模型、信息流模型、自由模型的分析設(shè)計。不過對后面這幾個模型的支持比較初級,而且在實際的應(yīng)用中,這些模型用得也比較少,PowerDesigner的突出亮點還是在數(shù)據(jù)庫建模和對象模型的設(shè)計上。
對于數(shù)據(jù)庫模型,PowerDesigner支持20余種數(shù)據(jù)庫,對于同一數(shù)據(jù)庫的不同版本還提供單獨的支持,以便在設(shè)計數(shù)據(jù)庫模型時,提供數(shù)據(jù)庫和版本相關(guān)的設(shè)計。對于面向?qū)ο竽P?,PowerDesigner支持11種主流語言,為對Java5.0提供單獨的支持。
Rose基本上可以說是一個對象模型設(shè)計工具,對數(shù)據(jù)庫模型的支持相對粗糙,內(nèi)嵌的只支持Oracle8數(shù)據(jù)庫,對其他數(shù)據(jù)庫設(shè)計的支持需要通過安裝插件的方式獲得,且對數(shù)據(jù)庫物理存儲參數(shù)等較細(xì)粒度的內(nèi)容支持得比較粗糙。Rose的對象模型主要支持Java、VC和VB三種語言。
◆對Java語言的支持
Rose對Java語言的支持更好,不但為不同版本的JDK提供了支持(不過Rose2003還不支持JDK5.0),還為Java具體產(chǎn)品及設(shè)計模式(如EJB、Corba、Servlet,GOF設(shè)計模式等)提供了內(nèi)嵌性的支持,這些支持直接反應(yīng)在Rose的主菜單上。正因為如此,使Rose背上的沉重的歷史負(fù)擔(dān),如EJB和Corba這種語言級的東西是易變且不斷更新的,如何在這些具體產(chǎn)品的地位和影響已經(jīng)降低時,對其作出割舍而又保證版本的兼容性,是擺在設(shè)計者面前的難題。
PowerDesigner僅提供語言級對象設(shè)計的支持,不涉及語言內(nèi)部的具體產(chǎn)品。其次因為它的設(shè)計工作區(qū)是和具體的模型類型及語言細(xì)分類相關(guān)的,而非在主菜單中直接提供支持,所以PowerDesigner在升級時顯得更加從容一些。
這也是為什么PowerDesigner能以每年一個版本的速度升級,而Rose在2003版本后,新版本還遲遲投入市場的內(nèi)在原因,否則以IBM的財力,研發(fā)能力不至于對市場反應(yīng)如果緩慢。
5、兩款UML建模工具輸入和輸出功能的比較
◆反向工程
從將程序代碼轉(zhuǎn)換為設(shè)計模型的逆向工程功能上看,Rose更象一個IDE,它會對需要逆向工程操作的程序代碼進行深度語義檢查,如果存在諸如程序代碼引用了類庫之外的類,反向工程將失敗,而且在報告失敗之前,窗口會陷入長時間無響應(yīng)狀態(tài)。
PowerDesigner僅對需逆向工程的程序代碼進行淺度語法檢查,這種淺度語法檢查不涉及包,類之間的關(guān)聯(lián),僅對諸如類名是否和類文件名匹配,是否少了“}”等語法性的內(nèi)容進行檢查。即便存在錯誤,PowerDesigner也允許你忽略錯誤,繼續(xù)進行逆向工程操作,這種寬松的限制帶來了很大的便利。
忽略錯誤后,PowerDesigner會盡量修補錯誤,例如代碼中少了對應(yīng)的“}”,它將會補上,類名和文件名不一致,將忽略類文件名保持類名不變。
Rose一直宣揚的理念是IDE和設(shè)計工程進行雙向互通:在Rose中完成模型設(shè)計后導(dǎo)出為IDE所用的代碼,IDE編碼調(diào)整后又逆向工程到Rose。理念很美,深具吸引力,但是在實現(xiàn)中,往往很少有開發(fā)團隊會這樣做。一般CASE工具只是在分析設(shè)計階段使用,甚至很大比例的設(shè)計師僅把它當(dāng)成畫圖的工具。
真正進入編碼開發(fā)階段后,將加入大量設(shè)計時不涉及的類和方法,如果將這些非骨架性的東西Reverse到CASE工具中,反而會使原來清晰的設(shè)計變得霧里花,水中月。所以即使編碼時,需要對原分析模型進行調(diào)整,一般也是手工去調(diào)整設(shè)計模型,而不是通過逆向工程去同步,畢竟分析設(shè)計是骨架性的,而編碼是血肉性的,兩者有屬性上的區(qū)別。如果真的需要頻繁進行的代碼和UML轉(zhuǎn)換,最好使用類似于Together一樣的工具,它嵌入到IDE中,使代碼和模型轉(zhuǎn)換方便快捷。
◆文檔導(dǎo)出功能
PowerDesigner對文檔導(dǎo)出提供了精細(xì)的控制,你不但可以對文檔所包含的內(nèi)容項進行設(shè)置,還可以對內(nèi)容項的格式進行設(shè)置。如導(dǎo)出的表結(jié)構(gòu)是否包括名稱、數(shù)據(jù)類型、備注等項目,這些項目在表欄中的寬度占比,顏色,字號等等,不一而足。
PowerDesinger12.0還新增了一個多模型文檔整合導(dǎo)出的Milti-ModelReport模型,允許你以多個模型作為輸入生成為統(tǒng)一文檔,實現(xiàn)模型設(shè)計按階段分開,文檔又統(tǒng)一整合的目的。
由于PowerDesigner文檔導(dǎo)出的設(shè)置非常精細(xì),所以要設(shè)置好一個文檔導(dǎo)出模式實非不易。有鑒于此,PowerDesinger提供了三種常用的導(dǎo)出模板,用戶也可以自己定義模板。通過模板可以迅速完成設(shè)計模型文檔的導(dǎo)出工作。
而Rose沒有導(dǎo)出模板的概念,更不能對導(dǎo)出項和格式進行設(shè)置,你只能按Rose的系統(tǒng)內(nèi)置的方式進行模型文檔的發(fā)布。
◆代碼導(dǎo)出
在導(dǎo)出設(shè)計模型的代碼時,PowerDesigner提供了精細(xì)的控制,不但可以進行對象級別,還可以進行代碼級別的控制(如是否要生成字段備注的代碼,外鍵代碼在表體代碼內(nèi)聲明還是在表體外部聲明等),而Rose沒有提供代碼導(dǎo)出的控制,也只能按其系統(tǒng)內(nèi)部設(shè)置的方式導(dǎo)出代碼。
◆生成測試數(shù)據(jù)
PowerDesigner可為數(shù)據(jù)表生成批量的測試數(shù)據(jù),而且你還可以制定測試數(shù)據(jù)的生成規(guī)則。這個功能給初期項目的開發(fā)測試帶來很大的便利。Rose中沒有提供類似的功能。
【編輯推薦】
- 全面認(rèn)識UML建模工具--RationalRose
- 選擇UML建模工具的幾個標(biāo)準(zhǔn)
- UML建模工具在微軟VisualStudio2005使用
- 三大UML建模工具Visio、Rational Rose、PowerDesign的區(qū)別
- UML建模工具Rose與PowerDesigner,兩款建模工具的對比