V1.0
張恂
2003年10月29日
編者按:
一直很難找到中文的、適合國人看的UML FAQ,而英文的UML FAQ往往散落于各處不易收集和消化,導(dǎo)致很多看似簡單卻很基本、很關(guān)鍵的問題在網(wǎng)絡(luò)論壇、BBS上被反復(fù)地提出,既浪費了提問者、解答者不少的時間和精力,也給大家學(xué)習(xí)總結(jié)、進一步提高帶來了困難。于是,結(jié)合自己的所學(xué)所想試著編寫了一個UML中文FAQ供各位參考。眾人拾柴火焰高,有什么不足之處,歡迎大家多多提出寶貴意見,不斷補充,一起來完善!
聯(lián)系郵箱:zhangxun2001@hotmail.com
什么是UML?
UML有哪些特點?
UML有什么用?
UML不能做什么?
為什么要學(xué)習(xí)和掌握UML?
什么情況下不需要或不適合用UML?
什么情況下應(yīng)該用UML?
促進UML普及和應(yīng)用對于加強我國軟件業(yè)的實力有什么重要意義?
UML的統(tǒng)一性表現(xiàn)在哪些方面?
UML是如何誕生的?
UML是一家之言,或少數(shù)派的觀點嗎?
UML之父是誰?
UML標(biāo)準(zhǔn)有哪些最新進展?
初學(xué)者如何開始學(xué)習(xí)UML?
世界上有哪些著名的公司、組織參與了UML標(biāo)準(zhǔn)的制訂?
什么是UML?
Unified Modeling Language(統(tǒng)一建模語言)是國際對象管理組織OMG制定的一個通用的、可視化建模語言標(biāo)準(zhǔn),可以用來描述(specify)、可視化(visualize)、構(gòu)造(construct)和記載(document)軟件密集型系統(tǒng)的各種工件(artifacts,又譯制品)。
UML有哪些特點?
UML的“通用性”主要是指不僅僅可以用它來描述軟件,而且還可以用它來描述一般企業(yè)或組織的業(yè)務(wù)流程以及由軟、硬件共同組成、以軟件為主的復(fù)雜系統(tǒng)(即所謂的軟件密集型系統(tǒng)),甚至還包括非軟件系統(tǒng)。
UML的“可視性”是指可以通過UML一系列的圖形符號,組成多種視圖(view)來直觀、清晰地表達系統(tǒng)分析設(shè)計中方方面面的、許多復(fù)雜的概念。UML主要是為了人的閱讀和使用而設(shè)計的,所以它采用了半形式化的,易于人們理解、交流的形式。
UML是一種分析設(shè)計專用的建模語言,它本身不是編程(programming)語言,不能直接用來生成可執(zhí)行的軟件。UML是一種抽象層次比C、C++、Java、VB、Delphi等文本高級語言更高的圖形語言,通過它我們可以抽象地表示用高級編程語言編寫的文本程序的邏輯結(jié)構(gòu)和行為。相比傳統(tǒng)的高級編程語言,UML能夠更加高效、準(zhǔn)確地反映軟件設(shè)計的方案和思路,是真正用來“設(shè)計程序”(design programs)的語言。從這個意義上看,不妨稱UML為“甚高級”程序設(shè)計語言。
UML基本上不能算作全新的發(fā)明,它并非學(xué)者教授、科研機構(gòu)的研究成果,而是直接來自于產(chǎn)業(yè)界、工程界的實踐總結(jié),是在歸納基礎(chǔ)上進行理論升華的產(chǎn)物,其核心內(nèi)容反映了30多年來全球軟件工業(yè)的領(lǐng)導(dǎo)者在軟件設(shè)計構(gòu)造領(lǐng)域的最佳實踐和成功經(jīng)驗,因而具有很高的實用價值。
實踐證明,OO分析設(shè)計(OOAD)方法比傳統(tǒng)方法能更加準(zhǔn)確、全面地描述現(xiàn)實世界。UML是用來表述OO概念的一種語言工具,而很奇妙,它本身作為一件產(chǎn)品同樣也是用OO方法來設(shè)計的,這使得UML具有傳統(tǒng)建模語言所不具備的很強的語義表達能力和非常靈活的可擴展性。
UML有什么用?
UML的用途非常廣泛,可以概括為“描述、可視化、構(gòu)造、記載”4種基本功能,在業(yè)務(wù)建模、需求分析、系統(tǒng)設(shè)計、實現(xiàn)和測試、數(shù)據(jù)建模、項目管理等階段任務(wù)中均可根據(jù)需要采用。
UML建模是建立軟件開發(fā)文檔的一個有效手段,通過UML可視化地描述系統(tǒng)需求,記載軟件構(gòu)成,能夠顯著地提高文檔的質(zhì)量和可讀性,減少編寫文檔的工作量。
UML實質(zhì)上是一種系統(tǒng)分析設(shè)計專用語言,通過可視化的圖形符號結(jié)合文字說明或標(biāo)記可以幫助業(yè)務(wù)/系統(tǒng)分析員、軟件架構(gòu)師/設(shè)計師、程序員等各種建模者有效地描述復(fù)雜軟件(或業(yè)務(wù))的靜態(tài)結(jié)構(gòu)和動態(tài)行為,包括工作流(數(shù)據(jù)流和控制流)、功能需求、結(jié)構(gòu)元素及關(guān)系、架構(gòu)組成、設(shè)計模式、對象協(xié)作、事件響應(yīng)和狀態(tài)變化等等。
UML不能做什么?
UML不是高度形式化的語言,一般不能用于定理證明。
UML是基于OO方法的通用建模語言,不適合用戶圖形界面設(shè)計、超大規(guī)模集成電路(VLSI)設(shè)計、基于規(guī)則的人工智能等專業(yè)領(lǐng)域。
UML是一種離散型建模語言,適合對由軟件、固件或數(shù)字邏輯構(gòu)成的離散系統(tǒng)建模,不適合對工程和物理學(xué)領(lǐng)域中的連續(xù)系統(tǒng)建模。
本身作為語言,UML僅僅是一種表達形式,不是建模方法,在實際的軟件項目開發(fā)中僅僅掌握一套標(biāo)準(zhǔn)的圖形符號是遠(yuǎn)遠(yuǎn)不夠的。用好UML首先需要掌握OOAD的基本原則和方法,并在一定的軟件開發(fā)過程(如UP/RUP、XP等)的指導(dǎo)下進行有取舍的運用。
為什么要學(xué)習(xí)和掌握UML?
首先,UML對于當(dāng)前大多數(shù)希望進一步改進質(zhì)量的軟件開發(fā)團隊來說是必不可少或必須的。為什么這樣說呢?因為,C++、Java等源碼并不能直觀、方便地反映復(fù)雜程序的設(shè)計:如內(nèi)部邏輯結(jié)構(gòu)、各種隱含的依賴關(guān)系、運行時的狀態(tài)改變和特殊行為等等。寫好的代碼僅僅是一種實現(xiàn)方式,很難反映出現(xiàn)象背后的真實本質(zhì)——設(shè)計,因此對于大多數(shù)稍稍復(fù)雜點的項目來說,僅有代碼是不夠的。
可視化建模歷來是一種成功的工程實踐做法,并非軟件行業(yè)所特有。軟件的設(shè)計方案在用C++、Java實現(xiàn)之前通常隱藏在人們的頭腦當(dāng)中,而設(shè)計正確與否是決定軟件質(zhì)量好壞的要害,一個前提是必須用適當(dāng)?shù)姆绞桨阉磉_出來。通過程序代碼來表達、討論、評估和選擇復(fù)雜軟件的設(shè)計往往是很笨拙的,這一表達
方式的空欠唯有通過類似UML的建模語言來填補。
其次,OO方法是當(dāng)代主流的軟件開發(fā)技術(shù)。世界先進的軟件團隊和個人早已擺脫了對如何使用具體的平臺API、個別編程語言特性的糾纏,而把更多的精力放在了需求、架構(gòu)、設(shè)計機制和模式等對軟件質(zhì)量有重大影響的核心要素——分析與設(shè)計上。UML作為OO建模語言的事實上標(biāo)準(zhǔn)和主要的表達媒介,在這些場合能發(fā)揮關(guān)鍵的作用。所以,熟練地掌握并運用好UML是當(dāng)今系統(tǒng)分析員、架構(gòu)師/設(shè)計師以及程序員等軟件工程師所必備的一項基本技能。
什么情況下不需要或不適合用UML?
對于一個特定的軟件公司或開發(fā)團隊,在下列情況下建議不采用UML:
1)傳統(tǒng)的做法已完全適用,對OOAD的要求也不高,項目非常成功,無任何改進的必要;
2)開發(fā)的系統(tǒng)比較簡單,直接用源碼配上少量的文字就能解決問題,軟件開發(fā)文檔也無需添加圖形來輔助說明;
3)開發(fā)人員更習(xí)慣于直接閱讀源碼,用源碼交流,這樣做不影響工作效率和質(zhì)量;
4)開發(fā)的系統(tǒng)本身不屬于OO方法、UML適用范圍。
什么情況下應(yīng)該用UML?
對于一個特定的軟件公司或開發(fā)團隊,在下列情況下建議采用UML:
1)OO方法是項目決定采用的方法論,是整個項目或產(chǎn)品成功的關(guān)鍵;
2)開發(fā)人員感覺用源碼說明不了真正的問題,希望利用可視化建模語言簡化文檔,提高交流的效率,準(zhǔn)確抓住問題的本質(zhì);
3)系統(tǒng)的規(guī)模和設(shè)計都比較復(fù)雜,需要用圖形抽象地表達復(fù)雜的概念,增強設(shè)計的靈活性、可讀性和可理解性,以便暴露深層次的設(shè)計問題,降低開發(fā)風(fēng)險;
4)公司希望記錄已成功項目、產(chǎn)品的公共設(shè)計方案,在開發(fā)新項目時可以參考、重用過去的設(shè)計,節(jié)省投入,提高成功率。
促進UML普及和應(yīng)用對于加強我國軟件業(yè)的實力有什么重要意義?
OO方法自上世紀(jì)80年代以來已經(jīng)成為軟件開發(fā)的主流技術(shù),標(biāo)準(zhǔn)OO建模語言UML的問世說明OO技術(shù)的發(fā)展達到了一個新的高峰。推廣普及UML的應(yīng)用可以使我國軟件開發(fā)人員、軟件企業(yè)和客戶乃至整個行業(yè)都從中獲益:
1)個人
UML相關(guān)知識體系蘊含了非常豐富的當(dāng)代軟件工程先進知識。軟件開發(fā)人員通過學(xué)習(xí)和掌握UML概念、表示法及相關(guān)的軟件過程、軟件工程技術(shù),能夠加深對OOAD原則、方法的理解,提高抽象思維能力,從而站在更高的層次上分析問題、解決問題,這是一條快速提高個人軟件設(shè)計能力的有效途徑。
2)企業(yè)
對軟件企業(yè)內(nèi)部,用好UML,不但能直接提升企業(yè)的軟件設(shè)計開發(fā)能力,而且由于UML能形象直觀地記錄軟件設(shè)計的核心思想,可以使軟件開發(fā)管理透明
化,促進企業(yè)知識資產(chǎn)的保護和增值,促進軟件重用和整體效益的提升。對外,由于UML是通行的軟件行業(yè)國際標(biāo)準(zhǔn),企業(yè)在業(yè)務(wù)交往中有效運用UML,無論對于開拓國內(nèi)外產(chǎn)品市場還是保障工程承接、項目外包等業(yè)務(wù)的順利開展都大有裨益。
3)行業(yè)
積極采用國際通行的軟件描述和設(shè)計語言UML,一方面能增加信息透明度,顯著降低軟件企業(yè)之間、客戶與開發(fā)商之間的溝通成本,減少項目失敗的風(fēng)險,另一方面能促進行業(yè)市場的規(guī)范化和標(biāo)準(zhǔn)化,增進國際技術(shù)交流,整體提高我國軟件業(yè)的技術(shù)水平和參與國際市場競爭的能力。據(jù)悉,與UML有關(guān)的國家級標(biāo)準(zhǔn)目前正在考慮制定過程當(dāng)中。
UML的統(tǒng)一性表現(xiàn)在哪些方面?
UML的統(tǒng)一性至少表現(xiàn)在以下幾個方面:
1)隨著OO技術(shù)的蓬勃發(fā)展,到上世紀(jì)90年代初OO方法已經(jīng)多達50余種,它們之間既有很多共通之處也存在許多沒有必要的細(xì)節(jié)差異,這妨礙了技術(shù)進步,不利于產(chǎn)業(yè)的發(fā)展。UML統(tǒng)一了多種互補的、最具代表性、最受業(yè)界歡迎的主流OO方法,這既是歷史的必然,也OO方法成熟的一個重要標(biāo)志。UML及與其配套的OO統(tǒng)一過程(RUP)在實現(xiàn)“合并同類項”的基礎(chǔ)上又向前邁出了一大步,不愧為當(dāng)代OO建模方法的集大成者。
2)UML適用于各個行業(yè)的信息化工程,包括電信、銀行、保險、稅務(wù)、辦公自動化、電力、電子、國防、航天航空、制造、工業(yè)自動化、醫(yī)療、交通、商業(yè)、電子商務(wù)等諸多領(lǐng)域的業(yè)務(wù)建模和軟件分析設(shè)計,尤其適合對大中型、復(fù)雜、分布式應(yīng)用系統(tǒng)或軟件產(chǎn)品建模,在這些廣泛的領(lǐng)域中都可以統(tǒng)一使用一套標(biāo)準(zhǔn)的建模語言。
3)作為一種獨立于具體實現(xiàn)的、抽象的表述方式,UML廣泛地適用于各種現(xiàn)代程序設(shè)計語言、數(shù)據(jù)庫和開發(fā)平臺。
4)有了UML標(biāo)準(zhǔn),面向各種不同的軟件開發(fā)方法和過程(如重載/輕載,瀑布式/迭代遞增式),在軟件開發(fā)生命周期各個階段的工作(如業(yè)務(wù)建模、需求分析、設(shè)計、實現(xiàn)、測試)中,都可以采用一套統(tǒng)一的概念和表示法,避免了語言轉(zhuǎn)換的麻煩。
5)UML明確定義了一套公共的內(nèi)部概念,建立了統(tǒng)一的關(guān)于建模語言的元模型,反映了在軟件和信息建模技術(shù)領(lǐng)域的最新成果。
UML是如何誕生的?
識時務(wù)者為俊杰。為了突破上世紀(jì)90年代初OO方法論混戰(zhàn)的局面,1994年杰出的Rational公司OO大師Grady Booch邀請通用電氣公司著名OO大師James Rumbaugh博士加盟Rational,啟動了OO方法的統(tǒng)一歷程。他們于1995年發(fā)表了“統(tǒng)一方法0.8”。與此同時,另一位超一流OO大師、愛立信公司的Ivar Jacobson博士也在該年加入了二人的行列。
1996年,3人正式把他們的統(tǒng)一成果命名為“統(tǒng)一建模語言”,UML于此誕生。同時,他們還做出了一個非常重要的決定——把UML提交到非贏利性的OMG進行標(biāo)準(zhǔn)化,讓全世界的軟件開發(fā)人員都可以自由地分享這一軟件史上的重大成果。
于是,在全球軟件界具有廣泛影響力的國際對象管理組織OMG從此開展了一系列OO建模語言的標(biāo)準(zhǔn)化工作。1997年11月,UML 1.1經(jīng)OMG各成員投票被正式采納為行業(yè)標(biāo)準(zhǔn)。
UML是一家之言,或少數(shù)派的觀點嗎?
否,UML是全球工業(yè)界和學(xué)術(shù)界的領(lǐng)導(dǎo)者協(xié)同努力的成果。自從進入OMG程序后,UML就不再由Rational一家公司所有或由少數(shù)人控制,而成為凝結(jié)了百家之長的公共知識結(jié)晶。具有豐富企業(yè)信息系統(tǒng)和信息工程經(jīng)驗的OO大師、Martin/Odell方法的領(lǐng)軍人物James Odell為此曾表明放棄自己的方法,并直接參與領(lǐng)導(dǎo)了UML 1.x系列標(biāo)準(zhǔn)的制訂工作。另一位OO大師Coad/Yourdon方法的創(chuàng)始人之一Peter Coad,雖然沒有直接參與UML制訂,但卻獨具慧眼創(chuàng)辦了TogetherSoft公司(已被Borland收購),開發(fā)了著名的UML集成開發(fā)環(huán)境Together ControlCenter,成為Rational Rose的有力競爭者。事實說明,UML的確促進了各種OO方法和流派的大融合,在OO建模語言領(lǐng)域具有不可替代的地位。
UML之父是誰?
UML之父有三位:他們是Grady Booch(Booch方法),James Rumbaugh(OMT方法)和Ivar Jacobson(OOSE方法)。人們親切地稱他們?yōu)椤? amigos”(即“三高”,類似于大家給予合作舉辦世紀(jì)音樂會的,世界上3位頂尖男高音歌唱家的稱謂)。
UML標(biāo)準(zhǔn)有哪些最新進展?
UML 1.x系列的最新版本是于2003年3月發(fā)布的1.5版本(www.uml.org)。
OMG(www.omg.org)從2000年起啟動了UML 2.0標(biāo)準(zhǔn)的制定工作。U2P組織(UML2 Partners Consortium,www.u2-partners.org)在UML 2.0標(biāo)準(zhǔn)的制定過程中發(fā)揮了主導(dǎo)作用。目前UML 2.0的上層結(jié)構(gòu)(Superstructure)規(guī)范已經(jīng)在2003年6月12日獲得通過。
OMG已經(jīng)與國際標(biāo)準(zhǔn)化組織ISO開展了合作,預(yù)示著UML將來有望成為ISO標(biāo)準(zhǔn),值得關(guān)注。
初學(xué)者如何開始學(xué)習(xí)UML?
無外乎幾種方式:讀書、上網(wǎng)、實踐、培訓(xùn)。
最近幾年國內(nèi)一窩蜂地出版了不少與UML有關(guān)的中英文書籍,但說實話,有點良莠不齊。初學(xué)者不管自學(xué)還是參加培訓(xùn),選擇合適的UML教材/讀物是很重要的。
Craig Larman的《UML和模式應(yīng)用》是一本非常好的內(nèi)容豐富、真正實用的入門教材,在國際上也是用得最多的一本,無出其右者。縱觀全書,以實案為中心,脈絡(luò)清晰,組織老到,深淺適當(dāng),循循善誘,非常適合UML、UP、設(shè)計模式的初學(xué)者和一直對OOAD、UML的價值存有疑慮的結(jié)構(gòu)化人士一讀。對于熟悉OO的人來說,閱讀此書也是再一次享受梳理知識、進行系統(tǒng)性訓(xùn)練的美妙體驗。本人尤其推薦第2版(內(nèi)容更新了不少,聽說正在引進翻譯,值得期待)。
如果希望與大師對話,全面深入地掌握UML的基本要領(lǐng),通過領(lǐng)悟UML設(shè)計者的思想和意圖來達到在實戰(zhàn)中得心應(yīng)手運用OO建模技術(shù)的目的,建議一定要閱讀UML之父Grady Booch親自撰寫的《UML用戶指南》。本書相當(dāng)全面,偏重理論分析和概念闡釋,這些內(nèi)容和抽象技術(shù)對于真正理解UML是非常基本、必不可少的,所以它適合喜歡認(rèn)真探究一切的讀者。
用好UML離不開有好的過程作指導(dǎo)。RUP極其豐富的內(nèi)容令人生畏,Ivar Jacobson大師在《統(tǒng)一軟件開發(fā)過程》一書中從管理者和系統(tǒng)架構(gòu)師的角度,通過實例分析系統(tǒng)地講解了將UML用于分析設(shè)計實踐的完整過程,深入淺出,言簡意賅,可以說此書正是RUP的精華所在。帶領(lǐng)自己的團隊用好UML,得此書足矣。
此外,IT之源(www.iturls.com)、UMLChina(www.umlchina.com)等網(wǎng)站提供了非常豐富的學(xué)習(xí)資料和參考文章。
UML規(guī)范、《UML參考手冊》內(nèi)容深、篇幅大,主要面向UML工具開發(fā)者、專家和研究人員,不適合初學(xué)者閱讀。
世界上有哪些著名的公司、組織參與了UML標(biāo)準(zhǔn)的制訂?
歷年來,參與UML標(biāo)準(zhǔn)制訂的一些核心公司和組織包括(1.x、2.0):
全能型IT公司:HP, IBM, Unisys
大型軟件公司:CA, Microsoft, Oracle
CASE廠商:I-Logix, Rational(已被IBM收購), Telelogic
電信供應(yīng)商:Alcatel,Ericsson,F(xiàn)ujitsu,Motorola
行業(yè)組織:OMG
IT系統(tǒng)集成商:EDS
等等
UML在業(yè)界的影響力和地位由此可見一斑。
感謝您閱讀此文!紙質(zhì)媒體如需轉(zhuǎn)載請與作者聯(lián)系;本文版權(quán)所有者為張恂,保留所有權(quán)利;您可以從IT之源上獲得本文的最新版本和相關(guān)資料;以上言論僅代表作者本人觀點,與作者服務(wù)的公司無關(guān);歡迎轉(zhuǎn)載本文電子版,轉(zhuǎn)載時請注明出處并保留所有原始信息。