(轉)UML學習入門就這一篇文章
1.1 UML基礎知識掃盲
UML這三個字母的全稱是Unified Modeling Language,直接翻譯就是統一建模語言,簡單地說就是一種有特殊用途的語言。
你可能會問:這明明是一種圖形,為什麼說是語言呢?偉大的漢字還不是從圖形(象形文字)開始的嗎?語言是包括文字和圖形的!其實有很多內容文字是無法表達的,你見過建築設計圖紙嗎?裡面還不是很多圖形,光用文字能表達清楚建築設計嗎?在建築界,有一套標準來描述設計,同樣道理,在軟體開發界,我們也需要一套標準來幫助我們做好軟體開發的工作。UML就是其中的一種標準,注意這可不是唯一標準,只是UML是大家比較推崇的一種標準而已,說不定以後有一個更好的標準可能會取代她呢!UML並不是強制性標準,沒有法律規定你在軟體開發中一定要用UML,不能用其它的,我們的目標是善用包括UML在內的各種標準,來提高我們軟體開發的水平。
UML由1.0版發展到1.1、1.2、...,到現在的2.0、2.x,本書將會以2.x版本為基礎開展討論。網路上、書籍、還有各種UML工具軟體,各自基於的UML版本可能會不一樣,大家在學習過程中可能會有一些困惑,不過沒關係,本課程在某些關鍵地方會描述1.x與2.x的差異。
UML有什麼用?
有很多人認為,UML的主要用途就是軟體設計!也有人認為,如果你不是開發人員,是難以理解UML的。
然而我第一次在實際工作中應用UML的卻不是軟體設計,而是軟體需求分析!當時我們和客戶面對面溝通調研需求的時候,直接用類圖、順序圖、活動圖、用例圖等UML。我們並沒有因此和客戶無法溝通,反而是溝通得更加順暢。客戶在我們的引導下,很快就會讀懂這些UML圖,因為UML圖,讓我們和客戶的溝通效率和效果更好!你可能覺得很神奇,在後續章節中,我將會為你逐一揭開神奇背後的「秘密」。
UML可幫助我們做軟體需求分析和軟體設計的工作,在我工作中大概各佔了50%的比例,當然在你的實際工作中不一定是這樣的比例。UML會讓你的需求分析或者軟體設計工作更上一層樓,本書將會介紹UML在需求分析方面的最佳實踐。
告訴你一個秘密,UML應用於軟體需求分析時,其學習門檻將會大大降低!語法複雜度會降低,而且你基本不需要掌握軟體開發的知識。只要你對軟體需求分析感興趣,認真學習和應用UML,就很有機會成為軟體需求分析高手。
UML的分類
結構型的圖(Structure Diagram)
類圖(Class Diagram)
對象圖(Object Diagram)
構件圖(Component Diagram)
部署圖(Deployment Diagram)
包圖(Package Diagram)
行為型的圖(Behavior Diagram)
活動圖(Activity Diagram)
狀態機圖(State Machine Diagram)
順序圖(Sequence Diagram)
通信圖(Communication Diagram)
用例圖(Use Case Diagram)
時序圖(Timing Diagram)
本書所描述的UML的各種圖的名字,以上述的為準。
UML各種圖的中文譯名,因為翻譯的原因可能會有所不一樣,如:Sequence Diagram和Timing Diagram有時候都會被譯成「時序圖」,這是最讓人困擾的地方!Sequence Diagram 除了被譯為順序圖,還有序列圖的譯法。
中國軟體行業協會(CSIA)與日本UML建模推進協會(UMTP)共同在中國推動的UML專家認證,兩個協會共同頒發認證證書、兩國互認,CSIA與UMTP共同推出了UML中文術語標準,該標準全稱為:CSIA-UMTP UML中文術語標準v1.0(本書後文將會簡稱為UML中文術語標準)。本書將會遵循UML中文術語標準,並且我們會同時給出中文譯名和英文原名,大家要留意看英文名字噢,這樣能幫助你不會被眾多的中文譯名混淆。
UML圖為什麼會分為結構型和行為型兩種呢?
顧名思義,結構型的圖描述的是某種結構,這種結構在某段時間內應該是穩定的,「靜態」的;而結構型的圖描述的是某種行為,是「動態」的。
分析系統需求時,我們會面對很多業務概念,它們之間會有某些關係,這些內容可以看成是「靜態」的,我們可以利用UML的結構性的圖來分析。同時,業務會涉及大量的流程、過程等,這些內容是「動態」的,我們可以用行為型的UML圖來分析。
在我們軟體設計時,我們需要考慮需要那些類、哪些構件、系統最後怎樣部署等,這些內容可以看成是「靜態」的,我們可以利用UML的結構型的圖來設計。同時,我們也需要考慮軟體如何和用戶交互,類、構件、模塊之間如何聯繫等「動態」內容,我們可以利用行為型的圖來設計。
所謂「靜態」和「動態」不是絕對的,下文我們將會進一步介紹結構型的UML和行為型的UML。通過下面的學習,你將會初步認識UML的各種圖,你可能還會有很多問題,本章的主要目的是讓你對UML有一個宏觀的認識,帶著你的問題繼續閱讀後面的章節吧!
1.2 結構型的UML(Structure Diagram)
類圖(Class Diagram)
請看下面這個類圖: