UML(Unified Modeling Language)是一個通用的視覺化建模語言標準,用於對軟體進行描述、視覺化處理、建構和建立軟體系統製品的文件。
提到語言,很多小夥伴開始產生恐懼了,你腦中可能會飄過SQL、Java、C#、PHP這些語言,它們可能讓不少人望而卻步。
各種程式設計語言
但UML不是程式設計語言,而是一種視覺化的建模語言。之所以稱它為語言,因為UML提供了用於交流的詞彙及規則,使用者在這些詞彙與規則框架下可以對同一軟體進行無障礙的交流,使各種使用者對於同一事物產生相同的認識。
上個世紀60年代末期開始,隨著電腦科技的不斷普及,人們對軟體的需求量與日俱增,軟體的規模也不斷擴大,軟體的複雜度也日益增加。由於缺乏科學的理論指導,造成軟體的開發進度難以保障,軟體開發成本不斷爬升,不斷變化的使用者需求對無法保證品質的軟體也是雪上加霜,又沒有相關的文件資料作為參考,使軟體維護變得異常困難。人們形象的稱為軟體危機。
怎麼辦?那必須把軟體開發工作當作工程來幹。因此,軟體工程的概念也應運而生。軟體工程旨在研究軟體生產的客觀規律,建立軟體生產的相關概念、原則、方法、技術和工具,以指導軟體生產活動。當然取得了令人滿意的效果。
隨著人們對軟體工程研究的不斷深入,物件導向的程式設計進入人們的視野。從1980年代到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(Unitied Method)。
經過一系列的各方較量,1997年1月,各方組織一起提交了方法標準的建議書,Rational和其他組織一起協作,發布了UML文檔1.0版本,這也是第一次被叫作統一建模語言。
又經過各方較量的過程,OMG採納1.1版作為官方的OMG標準。又經過一系列修改,UML1.4和UML1.5已經比較成熟,如Rational Rose 2003就是基於這樣的標準而發展出來的。
許多人們在談論UML時,會把創造者的功勞主要歸於Grady Booch、Ivar Jacobson和Jim Rumbaugh,把他們稱為「三友」(Three Amigos)。
當然也有人表示了反對,認為他們在前期做出了一定的貢獻,但在後期OMG委員會的人員做了很多貢獻,而三人中Jim Rumbaugh在後期是唯一做出貢獻的人。
在以往出現的方法和表示法方面,UML合併了許多物件導向方法中被普遍接受的概念,對每個概念,UML都給出了清晰的定義、表示法和相關術語。使用UML可以對現有的各種方法建立的模型進行描述,並比原來的方法描述得更好。
在軟體開發的生命期方面,UML對開發的要求具有無縫性。開發過程中的不同階段可以採用相同的一整套概念和表示法,在同一個模型中,它們可以混合使用,而不必轉換概念和表示法。這種無縫性對迭代的漸進式軟體開發至關重要。
在應用領域方面,UML適用於各種領域的建模,包括大型的、複雜的、即時的、分散的、集中式資料或計算的、嵌入式的系統等。
在實現的程式語言和開發平台方面,UML可應用於運行各種不同的程式實作語言和開發平台的系統。
在開發過程方面,UML是一種建模語言,不是對開發過程的細節進行描述的工具。就像通用程式設計語言可以進行許多風格的程式設計一樣。
在內在概念方面,UML特別注意揭示和表達各種概念之間的內在連結。試圖用多種適用於已知和未知情況的辦法來掌握建模中的概念,這個過程會增強對概念及其適用性的理解。這不是統一各種標準的初衷,但卻是統一各種標準最重要的結果之一。
UML的組成可以使用下圖來說明:
UML基本構造區塊與圖形分類
目前,UML的最新版本已發展到了UML2.5版,也從原有的9種類型的圖增加到了13種。有人認為UML本身的複雜性可能超過了軟體建模本身。
以上就是UML的基礎介紹,UML作為軟體工程中不可或缺的建模語言,其發展歷程不僅見證了軟體設計理念的進步,更凸顯了其在促進團隊溝通、優化系統設計、加速開發流程中的關鍵作用。透過本文的基礎介紹,相信你不僅能深刻理解UML的歷史脈絡,更能掌握其在需求分析、系統設計及文件編制等方面的廣泛應用。
相關閱讀: