Rose與PowerDesigner:兩款建模工具的對比[2]

字號:

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、對模型和語言的支持
    ◆對設(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停琍owerDesigner支持11種主流語言,為對Java 5.0提供單獨的支持。
    Rose基本上可以說是一個對象模型設(shè)計工具,對數(shù)據(jù)庫模型的支持相對粗糙,內(nèi)嵌的只支持Oracle 8數(shù)據(jù)庫,對其他數(shù)據(jù)庫設(shè)計的支持需要通過安裝插件的方式獲得,且對數(shù)據(jù)庫物理存儲參數(shù)等較細(xì)粒度的內(nèi)容支持得比較粗糙。Rose的對象模型主要支持Java、VC和VB三種語言。
    ◆對Java語言的支持
    Rose對Java語言的支持更好,不但為不同版本的JDK提供了支持(不過Rose 2003還不支持JDK 5.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、輸入和輸出功能的比較
    ◆反向工程
    從將程序代碼轉(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)成畫圖的工具。