UML工具選型應(yīng)該注意的九個問題
常見的可以繪制UML的工具有:Rose、XDE、Visio、Enterprise Architeture、JUDE、StarUML,其中可免費(fèi)使用的是JUDE、StarUML,其他幾種都是需要購買license的。
我與任何UML工具廠商沒有利益關(guān)系(至少目前是這樣),為避免廣告的嫌疑,本小節(jié)并不會具體介紹某一種或幾種UML工具的細(xì)節(jié),也不會說我用得最多的是哪個軟件。況且介紹具體一個UML軟件是如何操作,這是沒啥必要的,這樣只會浪費(fèi)本書的篇幅,增加書的售價(jià)而已。我相信只要你稍加研究,你是可以很快上手的。
我使用過不少UML軟件,我會簡單介紹我的一些心得體會,希望這些體會能幫助你更快上手、更快找到適合你自己或貴公司的軟件。
1. 開始向?qū)?/strong>
很多UML軟件喜歡一啟動就顯示一個開始向?qū)В坪踹@樣的設(shè)計(jì)能讓你很快入手,但這樣的向?qū)鶗屝率趾芾Щ螅@是這些向?qū)У牡谝粋€問題!而第二個問題是:向?qū)э@示了各種模板,用這些模板建立了一系列內(nèi)容框架,這些內(nèi)容框架會讓你很頭暈。第三個問題是:實(shí)際工作中這些模板基本沒用,我不喜歡這些模板建立的內(nèi)容框架,我基本上會刪除掉全部甚至大部分模板建立的內(nèi)容。
對于開始向?qū)В业慕ㄗh是:大致看看就OK了,不要糾結(jié)于當(dāng)中,那些模板的內(nèi)容框架基本上都是基于某些理論來設(shè)計(jì)的,大多數(shù)不適用。而我通常是從空白開始建立工程的,有些軟件還不允許你從空白開始,你可以隨便選一種模板,建立后刪除那些看不懂的內(nèi)容。
2. 畫圖與建模
如果認(rèn)為UML軟件就是一種畫圖工具,就是設(shè)置好一張圖紙,然后你選擇一些UML元素在上面畫。基于這樣的理解來使用UML軟件的話,一開始可能會很不習(xí)慣,甚至摸不著頭腦。大部分UML軟件的思路是一邊畫圖一邊建模的,下面要細(xì)分來講解。
大部分UML軟件界面的布局是這樣的:左邊顯示一堆UML元素,中間是畫圖區(qū),右邊顯示工程視圖和屬性視圖之類的東東。如果你從空白開始建立工程,你可能會發(fā)現(xiàn)左邊區(qū)域是空的,也不知道從哪開始新建一張圖。
那個工程視圖其實(shí)就是用來顯示模型的,最開始里面什么內(nèi)容都沒有,通常需要你右鍵單擊工程那個節(jié)點(diǎn),從右鍵菜單中選擇建立一些“節(jié)點(diǎn)”(這些節(jié)點(diǎn)不同軟件有不同的說法),建立“節(jié)點(diǎn)”后再通過該節(jié)點(diǎn)的右鍵菜單中選擇要新建什么UML圖,這時(shí)中間區(qū)域才會出現(xiàn)畫圖區(qū),同時(shí)左邊區(qū)域才會出現(xiàn)可用的UML元素。
當(dāng)你開始在畫圖區(qū)添加UML元素時(shí),工程視圖也會添加相應(yīng)的元素,這其實(shí)就是畫圖的同時(shí)也在建模。請留意,如果你刪除圖形中的UML元素,工程視圖中的對應(yīng)UML元素并不會刪除。也就是說圖形發(fā)生了變化,但模型并沒有變化。你要真正從模型上刪除該UML元素的話,你需要明確地選擇從模型上刪除才行。
我們可以這樣理解UML建模活動,要建模通過圖形來建立是最直觀的,但模式是一種邏輯關(guān)系,模型的展示形式可以是多樣的。例如:我們通過某張圖建立了業(yè)務(wù)概念模型,我們可以另外再建立一張空白的圖,從工程視圖中“拉”出一些類放到這張空白的圖中,這些類放到圖中后就會自動展示出它們之間的關(guān)系,而無需你重新繪制一次。當(dāng)我們?yōu)槟骋幌到y(tǒng)建模的時(shí)候,實(shí)際上模型只有一套體系,但我們可以根據(jù)不同的需要,用多張UML圖從不同的視覺來展示該模型。
3. 復(fù)制的問題
有人曾經(jīng)問我用某某工具如何復(fù)制UML的問題,你可能不是真的要復(fù)制,而是想在不同的圖中使用相同的UML元素而已。如果是這樣的話,你完全可以從工程視圖中將這個UML元素“拉”到圖中就可以了。當(dāng)然你也有可能真的想在模型級別復(fù)制該UML,很多UML軟件并不允許你這樣做,因?yàn)槟P椭械臇|西應(yīng)該是唯一的不能重名的。當(dāng)然要視乎具體是什么軟件才好說明這個問題。
遇到你想復(fù)制某些UML元素時(shí),請你先想清楚你只是想在多個圖展示相同的內(nèi)容,還是真的想在模型級別上復(fù)制一些UML元素。
4. 正向與反向工程
這個問題就是由UML生成代碼或由代碼生成UML的問題了。如果你是做需求分析工作而使用UML,這個問題基本上不需要關(guān)注。如果你是做軟件設(shè)計(jì)工作,那是不是需要關(guān)注這個問題呢?我的回答是:不需要關(guān)注!在實(shí)際工作中我極少用正向和反向工程,只是曾經(jīng)試過將代碼反向?yàn)閁ML,希望幫助我看清楚代碼的結(jié)構(gòu)而已。由UML生成代碼的需求是很低的,理由如下:
1) 架構(gòu)設(shè)計(jì)生成代碼,你需要“額外”指定很多內(nèi)容,這是很難做到的,也是沒必要的。
2) 詳細(xì)設(shè)計(jì)要生成代碼的話,則需要將類圖設(shè)計(jì)到很細(xì)的程度,而且需要所有代碼都必須先保證有對應(yīng)的類圖。這是毫無必要的,實(shí)際工作中并不需要所有代碼都需要事先有超詳細(xì)的設(shè)計(jì),搞到這么復(fù)雜,還不如直接編碼。
某些收費(fèi)軟件可以包含或不包含正向和反向工程功能,如果包含的話你需要付額外的錢,這些錢可以不必花,這是冤枉錢。
5. 面向軟件設(shè)計(jì)而不是面向需求分析
需求分析工作中應(yīng)用UML,并不需要用到UML中很深或很細(xì)的語法。如:我們用類圖描述業(yè)務(wù)概念模型時(shí),我希望的效果就是直接用中文表示屬性名稱就可以了,不需要指定為public也不需要指定屬性類型。但大部分UML軟件是面向軟件設(shè)計(jì),面向要生成代碼而設(shè)計(jì)的,類的屬性需要指定為public,屬性類型需要指定是string還是int或其他什么的。諸如此類,如果你不指定一些詳細(xì)的信息,軟件還會提示錯誤信息,讓你無法進(jìn)行下去,搞到你有些厭煩。遇到這樣情況,只能忍一忍將就一下了。
6. 是否支持UML 2.x?
收費(fèi)軟件大都支持UML 2.x,免費(fèi)的有一些不支持,有些部分支持,但我還沒有發(fā)現(xiàn)完全支持UML 2.x的免費(fèi)軟件。盡管本書介紹的內(nèi)容以UML 2.x為準(zhǔn),實(shí)際上在大部分的工作實(shí)踐中,需要用到的主要是UML 1.x,部分UML 2.x的內(nèi)容也不是必須的,可以用UML 1.x來代替。所以看在錢的份上,也不需要太計(jì)較是否全面支持UML 2.x的問題了。
7. 收費(fèi)與不收費(fèi)軟件的區(qū)別
兩者差別其實(shí)不大,自己用的話用免費(fèi)的也就OK了,如果不差錢或者公司出錢,用收費(fèi)的還是不錯的,收費(fèi)軟件還是有它獨(dú)到的地方的。
8. 多多嘗試
每種工具都有優(yōu)缺點(diǎn),你不妨多試試各種軟件,選擇適合你的軟件,你的選擇不一定是某一個軟件,你可以多個軟件同時(shí)用!
9. 公司是否需要統(tǒng)一UML工具?
作為公司來說,可能會認(rèn)為員工都用相同一個UML軟件會有利于溝通。我在以往公司時(shí),并沒有強(qiáng)制要求大家都用什么UML工具,反而是鼓勵大家用自己喜歡的工具。經(jīng)過大家的“自然選擇、優(yōu)勝劣汰”后,最后發(fā)現(xiàn)大家基本上都是集中使用其中某一兩款UML軟件。
原文鏈接:http://www.cnblogs.com/umlonline/archive/2011/07/15/2106952.html
【編輯推薦】