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