認識UML工具

熊貓夜未眠發表於2011-09-21

摘要:本文並不會介紹具體的某種UML工具如何操作,總結了一些我使用UML工具的心得體會,希望對大家有幫助!

作者:張傳波
軟體知識園地基地

正文

常見的可以繪製UML的工具有:Rose、XDE、Visio、Enterprise Architeture、JUDE、StarUML,其中可免費使用的是JUDE、StarUML,其他幾種都是需要購買license的。
我與任何UML工具廠商沒有利益關係(至少目前是這樣),為避免廣告的嫌疑,本小節並不會具體介紹某一種或幾種UML工具的細節,也不會說我用得最多的是哪個軟體。況且介紹具體一個UML軟體是如何操作,這是沒啥必要的,這樣只會浪費本書的篇幅,增加書的售價而已。我相信只要你稍加研究,你是可以很快上手的。

我使用過不少UML軟體,我會簡單介紹我的一些心得體會,希望這些體會能幫助你更快上手、更快找到適合你自己或貴公司的軟體。

1. 開始嚮導
很多UML軟體喜歡一啟動就顯示一個開始嚮導,似乎這樣的設計能讓你很快入手,但這樣的嚮導往往會讓新手很困惑,這是這些嚮導的第一個問題!而第二個問題是:嚮導顯示了各種模板,用這些模板建立了一系列內容框架,這些內容框架會讓你很頭暈。第三個問題是:實際工作中這些模板基本沒用,我不喜歡這些模板建立的內容框架,我基本上會刪除掉全部甚至大部分模板建立的內容。
對於開始嚮導,我的建議是:大致看看就OK了,不要糾結於當中,那些模板的內容框架基本上都是基於某些理論來設計的,大多數不適用。而我通常是從空白開始建立工程的,有些軟體還不允許你從空白開始,你可以隨便選一種模板,建立後刪除那些看不懂的內容。

2. 畫圖與建模
如果認為UML軟體就是一種畫圖工具,就是設定好一張圖紙,然後你選擇一些UML元素在上面畫。基於這樣的理解來使用UML軟體的話,一開始可能會很不習慣,甚至摸不著頭腦。大部分UML軟體的思路是一邊畫圖一邊建模的,下面要細分來講解。
大部分UML軟體介面的佈局是這樣的:左邊顯示一堆UML元素,中間是畫圖區,右邊顯示工程檢視和屬性檢視之類的東東。如果你從空白開始建立工程,你可能會發現左邊區域是空的,也不知道從哪開始新建一張圖。
那個工程檢視其實就是用來顯示模型的,最開始裡面什麼內容都沒有,通常需要你右鍵單擊工程那個節點,從右鍵選單中選擇建立一些“節點”(這些節點不同軟體有不同的說法),建立“節點”後再通過該節點的右鍵選單中選擇要新建什麼UML圖,這時中間區域才會出現畫圖區,同時左邊區域才會出現可用的UML元素。
當你開始在畫圖區新增UML元素時,工程檢視也會新增相應的元素,這其實就是畫圖的同時也在建模。請留意,如果你刪除圖形中的UML元素,工程檢視中的對應UML元素並不會刪除。也就是說圖形發生了變化,但模型並沒有變化。你要真正從模型上刪除該UML元素的話,你需要明確地選擇從模型上刪除才行。
我們可以這樣理解UML建模活動,要建模通過圖形來建立是最直觀的,但模式是一種邏輯關係,模型的展示形式可以是多樣的。例如:我們通過某張圖建立了業務概念模型,我們可以另外再建立一張空白的圖,從工程檢視中“拉”出一些類放到這張空白的圖中,這些類放到圖中後就會自動展示出它們之間的關係,而無需你重新繪製一次。當我們為某一系統建模的時候,實際上模型只有一套體系,但我們可以根據不同的需要,用多張UML圖從不同的視覺來展示該模型。

3. 複製的問題
有人曾經問我用某某工具如何複製UML的問題,你可能不是真的要複製,而是想在不同的圖中使用相同的UML元素而已。如果是這樣的話,你完全可以從工程檢視中將這個UML元素“拉”到圖中就可以了。當然你也有可能真的想在模型級別複製該UML,很多UML軟體並不允許你這樣做,因為模型中的東西應該是唯一的不能重名的。當然要視乎具體是什麼軟體才好說明這個問題。
遇到你想複製某些UML元素時,請你先想清楚你只是想在多個圖展示相同的內容,還是真的想在模型級別上覆制一些UML元素。

4. 正向與反向工程
這個問題就是由UML生成程式碼或由程式碼生成UML的問題了。如果你是做需求分析工作而使用UML,這個問題基本上不需要關注。如果你是做軟體設計工作,那是不是需要關注這個問題呢?我的回答是:不需要關注!在實際工作中我極少用正向和反向工程,只是曾經試過將程式碼反向為UML,希望幫助我看清楚程式碼的結構而已。由UML生成程式碼的需求是很低的,理由如下:
1) 架構設計生成程式碼,你需要“額外”指定很多內容,這是很難做到的,也是沒必要的。
2) 詳細設計要生成程式碼的話,則需要將類圖設計到很細的程度,而且需要所有程式碼都必須先保證有對應的類圖。這是毫無必要的,實際工作中並不需要所有程式碼都需要事先有超詳細的設計,搞到這麼複雜,還不如直接編碼。
某些收費軟體可以包含或不包含正向和反向工程功能,如果包含的話你需要付額外的錢,這些錢可以不必花,這是冤枉錢。

5. 面向軟體設計而不是面向需求分析
需求分析工作中應用UML,並不需要用到UML中很深或很細的語法。如:我們用類圖描述業務概念模型時,我希望的效果就是直接用中文表示屬性名稱就可以了,不需要指定為public也不需要指定屬性型別。但大部分UML軟體是面向軟體設計,面向要生成程式碼而設計的,類的屬性需要指定為public,屬性型別需要指定是string還是int或其他什麼的。諸如此類,如果你不指定一些詳細的資訊,軟體還會提示錯誤資訊,讓你無法進行下去,搞到你有些厭煩。遇到這樣情況,只能忍一忍將就一下了。

6. 是否支援UML 2.x?
收費軟體大都支援UML 2.x,免費的有一些不支援,有些部分支援,但我還沒有發現完全支援UML 2.x的免費軟體。儘管本書介紹的內容以UML 2.x為準,實際上在大部分的工作實踐中,需要用到的主要是UML 1.x,部分UML 2.x的內容也不是必須的,可以用UML 1.x來代替。所以看在錢的份上,也不需要太計較是否全面支援UML 2.x的問題了。

7. 收費與不收費軟體的區別
兩者差別其實不大,自己用的話用免費的也就OK了,如果不差錢或者公司出錢,用收費的還是不錯的,收費軟體還是有它獨到的地方的。

8. 多多嘗試
每種工具都有優缺點,你不妨多試試各種軟體,選擇適合你的軟體,你的選擇不一定是某一個軟體,你可以多個軟體同時用!

9. 公司是否需要統一UML工具?
作為公司來說,可能會認為員工都用相同一個UML軟體會有利於溝通。我在以往公司時,並沒有強制要求大家都用什麼UML工具,反而是鼓勵大家用自己喜歡的工具。經過大家的“自然選擇、優勝劣汰”後,最後發現大家基本上都是集中使用其中某一兩款UML軟體。

作者:張傳波
www.umlonline.org/school/

相關文章