什么是UML
UML(Unified Modeling Language,UML)是一個通用的可視化建模語言標準,用于對軟件進行描述、可視化處理、構造和建立軟件系統制品的文檔。
提到語言,很多小伙伴開始產生恐懼了,你腦子中可能會飄過English、Java、C#、PHP等這些神獸,它們可能把不少人折騰的夠嗆。
但UML不是一門程序設計語言,而是一種可視化的建模語言。之所以稱它為語言,因為UML提供了用于交流的詞匯及規則,用戶在這些詞匯與規則框架下可以對同一軟件進行無障礙的交流,使各種用戶對于同一事物產生相同的認識。
這要從上個世紀60年代末開始,隨著計算機技術的不斷普及,人們對軟件的需求量與日俱增,軟件的規模也在不斷擴大,軟件的復雜度也在日益增加。由于缺乏科學的理論指導,造成軟件的開發進度難以保障,軟件開發成本在不斷爬升,不斷變化的用戶需求對無法保證質量的軟件也是雪上加霜,又沒有相關的文檔資料作為參考,使軟件維護變得異常困難。人們形象的稱之為軟件危機。
怎么辦?那必須把軟件開發工作當做工程來干。因此,軟件工程的概念也應運而生。軟件工程旨在研究軟件生產的客觀規律,建立軟件生產的有關概念、原則、方法、技術和工具,以指導軟件生產活動。當然取得了令人滿意的效果。
隨著人們對軟件工程研究的不斷深入,面向對象的程序設計進入人們的視野。20世紀80年代到90年代初,誕生了很多面向對象的分析與設計方法,也出現了一大堆介紹面向對象方法的書籍。這有點像百家爭鳴的感覺。
每一位書籍作者都領導者一批實踐者,這些方法有很多相似之處,但又有細微的差別。
這給同一領域的實踐者也帶來困惑,在談論同一事物時,他們可能拿出不同的面向對象表示方法,這嚴重阻礙了他們對同一事物的理解和交流。
這個時候,有人提議,我們統一一下,使用相同的標準吧。眾人似乎沒聽到他的呼聲,無人理睬。有一個組織叫OMG(Object Management Group)也嘗試著對面向對象進行標準化,但只收到所有方法學家的一封公開抗議信。這讓Martin Fowler(UML精粹:標準對象建模語言簡明指南的作者)想起一則笑話:
A:方法學家和恐怖分子之間有什么區別呢?
B:恐怖分子可以談判。
在1995 OOPSLA(Object-Oriented Programming Systems,Languages and Applications)年度會議上,Grady Booch和Jim Rumbaugh首次公開描述了他們合并后的方法,即統一方法文檔0.8。
經過一系列的各方較量,1997年1月,各方組織一起提交了方法標準的建議書,Rational和其他組織一起協作,發布了UML文檔1.0版本。這也是第一次被叫做統一建模語言。
又經過各方掰手腕的過程,OMG采納1.1版作為官方的OMG標準。又經過一系列修改,UML1.4和UML1.5已經比較成熟。
很多人們在談論UML時,會把創造者的功勞主要歸于Grady Booch、Ivar Jacobson和Jim Rumbaugh,把他們稱為“三友”(Three Amigos)。
![]() |
![]() |
![]() |
Grady Booch | Ivar Jacobson | Jim Rumbaugh |
當然也有人表示了反對,認為他們在前期做出了一定的貢獻,但在后期OMG委員會的人員做了很多貢獻,而三人中Jim Rumbaugh在后期是唯一做出貢獻的人。
(1)方法和表示法方面
在以往出現的方法和表示法方面,UML合并了許多面向對象方法中被普遍接受的概念,對每種概念,UML都給出了清晰的定義、表示法和有關術語。使用UML可以對已有的各種方法建立的模型進行描述,并比原來的方法描述得更好。
(2)軟件周期方面
在軟件開發的生命期方面,UML對開發的要求具有無縫性。開發過程中的不同階段可以采用相同的一整套概念和表示法,在同一個模型中,它們可以混合使用,而不必轉換概念和表示法。這種無縫性對迭代的增量式軟件開發至關重要。
(3)在應用領域方面
在應用領域方面,UML適用于各種領域的建模,包括大型的、復雜的、實時的、分布的、集中式數據或計算的、嵌入式的系統等。
(4)編程語言和開發平臺方面
在實現的編程語言和開發平臺方面,UML可應用于運行各種不同的編程實現語言和開發平臺的系統。
(5)開發過程方面
在開發過程方面,UML是一種建模語言,不是對開發過程的細節進行描述的工具。就像通用程序設計語言可以進行許多風格的程序設計一樣。
(6)內部概念方面
在內部概念方面,在構建UML元模型的過程中,應特別注意揭示和表達各種概念之間的內在聯系。試圖用多種適用于已知和未知情況的辦法把握建模中的概念,這個過程會增強對概念及其適用性的理解。這不是統一各種標準的初衷,但卻是統一各種標準最重要的結果之一。
UML的組成可以使用下圖來說明。
新聞熱點
疑難解答