統一建模語言(英語:Unified Modeling Language,縮寫UML)是非專利的第三代建模和規約語言。UML是一種開放的方法,用於說明、可視化、構建和編寫一個正在開發的、面向對象的、軟件密集系統的製品的開放方法。UML展現了一系列最佳工程實踐,這些最佳實踐在對大規模,複雜系統進行建模方面,特別是在軟件架構層次已經被驗證有效。
這個語言由葛來迪·布區,伊瓦爾·雅各布森與詹姆士·蘭寶於1994年至1995年間,在Rational Software公司中開發,於1996年又進一步發展。UML集成了Booch,對象建模技術和面向對象程序設計的概念,將這些方法融合為單一的,通用的,並且可以廣泛使用的建模語言。UML打算成為可以對並發和分布式系統的標準建模語言。
1997年,UML被對象管理組織接納為標準,並在此之後受該組織管理。2005年,UML被國際標準化組織接納為一種標準[1],自此,該標準被定期修訂以涵蓋UML的最新版本[2]。然而,在軟件工程中,大多數從業者不使用UML,而是產生非正式的手繪圖;不過,這些圖例中仍往往包括UML的元素[3]:536。
模型
在UML系統開發中有三個主要的模型:
- 功能模型:從用戶的角度展示系統的功能,包括用例圖。
- 對象模型:採用對象,屬性,操作,關聯等概念展示系統的結構和基礎,包括類別圖、對象圖。
- 動態模型:展現系統的內部行為。包括序列圖,活動圖,狀態圖。
區分UML模型和UML圖是非常重要的,UML圖,包括用例圖、協作圖、活動圖、序列圖、部署圖、構件圖、類圖、狀態圖,是模型中信息的圖形表達方式,但是UML模型獨立於UML圖存在。UML的當前版本只提供了模型信息的交換,而沒有提供圖信息的交換。
UML使用一套與Java語言或其他面向對象語言等價物,同時也是本體論等價物的圖形標記。
UML並不是一個方法學,也不要求使用一個方法學,但是UML對於Rational 統一過程來說是必不可少的。
圖形
UML 2.2中一共定義了14種圖示。為方便了解,可分類成右側的結構。
結構性圖形(Structure diagrams)強調的是系統式的建模:
行為式圖形(Behavior diagrams)強調系統模型中觸發的事件:
交互性圖形(Interaction diagrams),屬於行為圖形的子集合,強調系統模型中的資料流程:
UML並不限定UML要素型別非得是某圖形上的型別。一般來說,每個UML要素大約會出現在圖的所有型別。這種彈性在UML 2.0部分被限定。
為了要保持工程圖的傳統,在您的UML圖上加注用途、約束、或意圖永遠無傷大雅。
UML 2為了符合模型驅動架構(Model Driven Architecture)的需求做了大幅度的修改除在圖形基礎上擴充及變化了部份的展現方式外,也增加了一些圖形標準元件,比前一版多出了由循序圖與互動圖所混合而成的互動概圖(Interaction Overview Diagram)、強調時間點的時序圖(Timing Diagram)與合成結構圖(Composite Structure Diagram),此外,在UML2中,UML1合作圖轉變為通訊圖(Communication Diagram),且在循序圖中也添加了互動框(Interaction Frame)的概念,還有增加一些運算子(如sd、loop、alt等)。同時,UML2支援模型驅動架構(MDA)倡議,提供穩定的基礎架構,容許軟件開發程序增添自動化作業。此外,MDA把大型的系統分解成幾個元件模型,並與其他模型保持連結,使得UML更加精確。
概念
UML從來源中使用相當多的概念。下面僅列代表性的概念。
對於結構而言
對於行為而言
對於關係而言
其他概念
-
類圖(Class Diagram)
-
構件圖(Component diagram)
-
複合結構圖(Composite structure diagram)
-
部署圖(Deployment diagram)
-
物件圖(Object diagram)
-
套件圖(Package diagram)
UML應用程序
- ArgoUML,UML設計工具(主頁)
- Dia,可繪製流程圖以及包含UML在內的多種圖形(主頁 (頁面存檔備份,存於網際網路檔案館))
- Draw.io,在線流程圖繪製工具,提供各種圖形模板 (主頁 (頁面存檔備份,存於網際網路檔案館))
- GitMind,可線上繪製心智圖及流程圖包括UML,泳道圖等各種圖 (主頁 (頁面存檔備份,存於網際網路檔案館))
- Umbrello,強大而又界面友好的UML工具。是KDE的一部分。(主頁 (頁面存檔備份,存於網際網路檔案館))
- UMLet,用Java實現的UML簡單繪圖工具(主頁 (頁面存檔備份,存於網際網路檔案館))
- Unimodeler,Linux下支持9種UML圖和向量打印的工具(homepage (頁面存檔備份,存於網際網路檔案館))
- astah*,Java和UML開發者環境(主頁 (頁面存檔備份,存於網際網路檔案館))
- Jumli,用Java實現,支持C++/C#/Java以及解析/生成源代碼(主頁 (頁面存檔備份,存於網際網路檔案館))
- omondo UML,Eclipse的UML插件,提供有限功能的免費版(需註冊)和完整的商業版(主頁 (頁面存檔備份,存於網際網路檔案館))
- Poseidon for UML,專業UML工具,提供免費的社區版(Community Edition)。從開源項目ArgoUML而來。請參見(主頁)。
- Violet是為學生、教師以及只需要快速創建簡單UML的應用者而設計的工具。GPL授權(主頁 (頁面存檔備份,存於網際網路檔案館))
- SiSy, SimpleSystem
參見
參考文獻
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.