選擇UML建模工具的幾個標準
本文和打擊重點討論一下選擇UML建模工具的幾個標準,只有掌握了選擇的標準才能在使用過程中選擇正確的,合適的工具,節省不少時間。
選擇一種UML建模工具
以下標準用于評估一種UML工具。當然,除了已被列出的以外,可以用這些標準來評估的產品還很多,但如果你想選擇最好的,請花時間按照清單對產品作測試。如果你特別重視某項標準而在清單中沒有列出,請告訴我們。
信息倉儲支持
對于一個大項目,信息倉儲(Repository)對在開發人員之間共享組件設計是必要的。兩個以上的開發人員可以共享同一模型的的組件,甚至可以通過在適當級別上定義所有權和共享權來合作進行單一組件的開發。信息倉儲通常用提供數據共享和并發控制等特性的數據庫來實現。通過提供鎖定和只讀訪問,信息倉儲允許一個開發人員擁有整個模型而其他人對該模型及其組件只讀訪問,或者將這些組件結合到自己的設計中。重要的是:這種工具應該允許你從另一個模型只引入你所需要的組件而不必引入整個模型。
構造信息倉儲的另一個令人感興趣的方法是利用項目的源代碼,使用源碼控制系統來提供并發控制。這種方法的好處是在源碼和模型之間有更高級別的同步,另一個好處是更除去了另一個數據源--別忘了,如果你為信息倉儲使用了數據庫,你必須對各種存儲數據分別備份并完成在模型、信息倉儲和源代碼之間的三方同步,而不止是在代碼和模型之間的兩方同步。
有了UML建模工具對信息倉儲的支持,對任何組件的修改將被自動傳播到所有引入該組件的設計。
雙向工程
對源代碼(Java,C++,CORBAIDL)的正向和逆向工程的能力是一項復雜的需求,不同廠商在不同程度上成功地支持這一點。對正向和逆向工程這兩方面的成功結合,定義為雙向工程。
正向工程在第一次從模型產生代碼時非常有用,這將為你節省許多用于編寫類、屬性、方法代碼的瑣碎工作的時間。
在以前沒有模型存在的情況下,將代碼轉換成模型;或者在迭代結束,重新同步模型和代碼時,逆向工程非常有用。
在一個迭代開發周期中,一旦一個模型作為迭代的一部分被修改,另一輪的正向工程應允許所有加入該模型的新的類、方法、屬性的代碼被更新。這個步驟通常不被開發者采用,因為許多工具在這個過程中沒有辦法管理源代碼,問題在于源代碼中不只包含與模型有關的信息。工具必須精于對在新一輪正向工程之前已有的源代碼進行重新構造。
至少,UML建模工具應成功支持一開始的正向工程和全過程的逆向工程。同樣,UML建模工具對純Java語言的逆向工程的支持應該毫無問題。一定要針對你自己的源代碼確認這一點,因為我們見到過優秀的工具在對Java的一些特性如內聯類(innerclasses)等進行逆向工程時失敗了,每一次進行逆向工程時,你不得不把討厭的代碼注釋掉----確實非常痛苦。
HTML文檔化
對象UML建模工具應能為對象模型及其組件無縫地產生HTML文檔。HTML文檔提供對象模型的靜態視圖,以便開發者通過瀏覽器迅速查詢而不需要加載UML建模工具本身。另外,通過產生HTML文檔,所需UML建模工具的許可證(licenses)會因減去那些對模型只需要有只讀權限的人而減少。
HTML文檔應包括模型中每個圖形的一張位圖,并允許通過超鏈接瀏覽整個模型。產生HTML文檔所需的時間應是合理的。現在許多產品在不同程度上成功支持這一點。再說一遍,你必須親自測試這個特性,在特征表上有打勾并不能保證成功支持。
完全UML1.3支持
雖然許多工具聲稱完全支持UML1.3,實際上,這是一項復雜的需求,一些工具并不能做到廣告所聲稱的完全支持。至少應支持的圖表有:用例圖(UseCasediagrams),類圖(Classdiagrams),協作圖(Collaborationdiagrams),順序圖(Sequencediagrams),包圖(Packagediagrams),狀態圖(Statediagrams)。
【編輯推薦】