1. 程式人生 > >Rose與PowerDesigner:兩款建模工具對比分析比較

Rose與PowerDesigner:兩款建模工具對比分析比較

三、 模型組織和層次結構上的區別
    1、模型組織Rose將資料庫模型和物件模型放在一起,在進行資料表模型設計時,沒有特性化的東西。而PowerDesigner將兩者分開,其模型組織層級關係是:工作空間->模型型別->具體語言/資料庫的模型->包->資料夾->Diagram->設計元素。在建立模型檔案時,會讓你選擇模型型別,選擇模型型別後,還可以選擇模型型別下語言及版本相關的細分類。不同設計模型對應軟體工程的不同階段,如業務模型和需求模型屬於專案需求階段,而物件模型屬於概要和詳細設計階段,資料庫模型屬於詳細設計階段。它們之間雖然有很強的內在聯絡,但差異性也很明顯,硬將兩者放到一起,就象把猴子和猩猩關進同一個籠子,為了兼顧和平衡兩者之間的考量,其結果是兩者都得不到很好的支援。
 

                                                                                    圖 1新建模型視窗(PD) 
                                           

                                                                            圖 2新建模型視窗(Rose)

     PowerDesinger可以通過模型轉換工具進行資料庫建模和麵向物件模型的相互轉換。但Rose不能將物件轉換為表,也不能將錶轉換為物件。
    
    2、工作空間PowerDesigner有工作空間的概念,一個工作空間下可以同時開啟多個設計模型檔案;而Rose同時僅能開啟一個設計檔案,如果在設計時,需要參考其他的Rose設計模型,則需要反覆關閉現有模型,開啟參考模型,顯得設計上比較欠考慮。這個問題上兩者的差異恰似Eclipse和JBuilder的區別,Eclipse可以同時開啟多個工程,而JBuilder只能同時開啟一個工程。
      3、設計介面PowerDesigner的設計介面可以左右上下移動,而Rose只能向右,向下移動,此外。PowerDesigner可以將模型元素放大很多倍,而Rose只能放大到正常倍數,不過Rose的Overview工具可以使使用者快速定位到設計區中特定的區域,有點類似於遊戲介面中常用的小地圖,挺不錯;
     


                                                                    圖 3 Overview工具(Rose)
   而在PowerDesigner中,你可以通過F8快捷鍵檢視Diagram的總覽圖,不過只得通過放大操作定位到定位區域。
4  對模型和語言的支援
  ? 對設計模型的支援力度和廣度
PowerDesigner對物件模型和資料庫建模兩者的支援力度已經大抵相等,此外,還支援概念模型、業務模型、需求模型、XML模型、資訊流模型、自由模型的分析設計。不過對後面這幾個模型的支援比較初級,而且在實際的應用中,這些模型用得也比較少,PowerDesigner的突出亮點還是在資料庫建模和物件模型的設計上。

      對於資料庫模型,PowerDesigner支援20餘種資料庫,對於同一資料庫的不同版本還提供單獨的支援,以便在設計資料庫模型時,提供資料庫和版本相關的設計。對於面向物件模型,PowerDesigner支援11種主流語言,為對
Java 
5.0提供單獨的支援。
Rose基本上可以說是一個物件模型設計工具,對資料庫模型的支援相對粗糙,內嵌的只支援Oracle 8資料庫,對其他資料庫設計的支援需要通過安裝外掛的方式獲得,且對資料庫物理儲存引數等較細粒度的內容支援得比較粗糙。Rose的物件模型主要支援Java、VC和VB三種語言。

? 對Java語言的支援
Rose對Java語言的支援更好,不但為不同版本的JDK提供了支援(不過Rose 2003還不支援JDK 5.0),還為Java具體產品及設計模式(如EJB、Corba、Servlet,GOF設計模式等)提供了內嵌性的支援,這些支援直接反應在Rose的主選單上。正因為如此,使Rose背上的沉重的歷史負擔,如EJB和Corba這種語言級的東西是易變且不斷更新的,如何在這些具體產品的地位和影響已經降低時,對其作出割捨而又保證版本的相容性,是擺在設計者面前的難題。
PowerDesigner僅提供語言級物件設計的支援,不涉及語言內部的具體產品。其次因為它的設計工作區是和具體的模型型別及語言細分類相關的,而非在主選單中直接提供支援,所以PowerDesigner在升級時顯得更加從容一些。
這也是為什麼PowerDesigner能以每年一個版本的速度升級,而Rose在2003版本後,新版本還遲遲投入市場的內在原因,否則以IBM的財力,研發能力不至於對市場反應如果緩慢。

5  輸入和輸出功能的比較
? 反向工程
從將程式程式碼轉換為設計模型的逆向工程功能上看,Rose更象一個IDE,它會對需要逆向工程操作的程式程式碼進行深度語義檢查,如果存在諸如程式程式碼引用了類庫之外的類,反向工程將失敗,而且在報告失敗之前,視窗會陷入長時間無響應狀態。
PowerDesigner僅對需逆向工程的程式程式碼進行淺度語法檢查,這種淺度語法檢查不涉及包,類之間的關聯,僅對諸如類名是否和類檔名匹配,是否少了“}” 等語法性的內容進行檢查。即便存在錯誤,PowerDesigner也允許你忽略錯誤,繼續進行逆向工程操作,這種寬鬆的限制帶來了很大的便利。
                                
                                               圖 4逆向工程失敗選擇三種選擇(PD)
    忽略錯誤後,PowerDesigner會盡量修補錯誤,例如程式碼中少了對應的“}”,它將會補上,類名和檔名不一致,將忽略類檔名保持類名不變。

    Rose一直宣揚的理念是IDE和設計工程進行雙向互通:在Rose中完成模型設計後匯出為IDE所用的程式碼,IDE編碼調整後又逆向工程到Rose。理念很美,深具吸引力,但是在實現中,往往很少有開發團隊會這樣做。一般CASE工具只是在分析設計階段使用,甚至很大比例的設計師僅把它當成畫圖的工具。
真正進入編碼開發階段後,將加入大量設計時不涉及的類和方法,如果將這些非骨架性的東西Reverse到CASE工具中,反而會使原來清晰的設計變得霧裡花,水中月。所以即使編碼時,需要對原分析模型進行調整,一般也是手工去調整設計模型,而不是通過逆向工程去同步,畢竟分析設計是骨架性的,而編碼是血肉性的,兩者有屬性上的區別。如果真的需要頻繁進行的程式碼和UML轉換,最好使用類似於Together一樣的工具,它嵌入到IDE中,使程式碼和模型轉換方便快捷。

? 文件匯出功能
PowerDesigner對文件匯出提供了精細的控制,你不但可以對文件所包含的內容項進行設定,還可以對內容項的格式進行設定。如匯出的表結構是否包括名稱、資料型別、備註等專案,這些專案在表欄中的寬度佔比,顏色,字號等等,不一而足。

    PowerDesinger 12.0 還新增了一個多模型文件整合匯出的Milti-Model Report模型,允許你以多個模型作為輸入生成為統一文件,實現模型設計按階段分開,文件又統一整合的目的。

    由於PowerDesigner文件匯出的設定非常精細,所以要設定好一個文件匯出模式實非不易。有鑑於此,PowerDesinger提供了三種常用的匯出模板,使用者也可以自己定義模板。通過模板可以迅速完成設計模型文件的匯出工作。
而Rose沒有匯出模板的概念,更不能對匯出項和格式進行設定,你只能按Rose的系統內建的方式進行模型文件的釋出。

? 程式碼匯出
     在匯出設計模型的程式碼時,PowerDesigner提供了精細的控制,不但可以進行物件級別,還可以進行程式碼級別的控制(如是否要生成欄位備註的程式碼,外來鍵程式碼在表體程式碼內宣告還是在表體外部宣告等),而Rose沒有提供程式碼匯出的控制,也只能按其系統內部設定的方式匯出程式碼。
          
                                                              圖 5 資料庫模型匯出設定(PD)

    生成測試資料
    PowerDesigner可為資料表生成批量的測試資料,而且你還可以制定測試資料的生成規則。這個功能給初期專案的開發測試帶來很大的便利。Rose中沒有提供類似的功能。