統一建模語言

UML的標誌
統一建模語言（Unified Modeling Language，縮寫UML）是非專利的第三代建模和規約語言。UML是一種開放的方法，用於說明、可視化、構建和編寫一個正在開發的、面向對象的、軟件密集系統的製品的開放方法。UML展現了一系列最佳工程實踐，這些最佳實踐在對大規模，複雜系統進行建模方面，特別是在軟件架構層次已經被驗證有效。
這個語言由葛來迪·布區，伊瓦爾·雅各布森與詹姆士·蘭寶於1994年至1995年間，在Rational Software公司中開發，於1996年又進一步發展。UML集成了Booch method，Object-modeling technique和麵向對象程序設計的概念，將這些方法融合為單一的，通用的，並且可以廣泛使用的建模語言。UML打算成為可以對併發和分佈式系統的標準建模語言。
1997年，UML被對象管理組織接納為標準，並在此之後受該組織管理。2005年，UML被國際標準化組織接納為一種標準，自此，該標準被定期修訂以涵蓋UML的最新版本。然而，在軟件工程中，大多數從業者不使用UML，而是產生非正式的手繪圖；不過，這些圖例中仍往往包括UML的元素536。

**模型**
面向對象分析的歷史
200px
200px
類別圖顯示一般化關係一對多（多維）的實現
在UML系統開發中有三個主要的模型：- 功能模型：從用戶的角度展示系統的功能，包括用例圖。- 對象模型：採用對象，屬性，操作，關聯等概念展示系統的結構和基礎，包括類別圖、對象圖。- 動態模型：展現系統的內部行為。包括序列圖，活動圖，狀態圖。
區分UML模型和UML圖是非常重要的，UML圖，包括用例圖、協作圖、活動圖、序列圖、部署圖、構件圖、類圖、狀態圖，是模型中信息的圖形表達方式，但是UML模型獨立於UML圖存在。UML的當前版本只提供了模型信息的交換，而沒有提供圖信息的交換。
UML使用一套與Java語言或其他面嚮對象語言等價物，同時也是本體論等價物的圖形標記。
UML並不是一個方法學，也不要求使用一個方法學，但是UML對於Rational 統一過程來說是必不可少的。

**圖形**
UML 2.0
使用個案圖實例
狀態圖實例
UML 2.2中一共定義了14種圖示。為方便了解，可分類成右側的結構。
結構性圖形（Structure diagrams）強調的是系統式的建模：
*靜態圖（static diagram）
** 類圖
** Object diagram
** Package diagram
*實現圖（implementation diagram）
** 組件圖
** Deployment diagram- 剖面圖- 複合結構圖
行為式圖形（Behavior diagrams）強調系統模型中觸發的事件：- 活動圖- 狀態圖- 用例圖
交互性圖形（Interaction diagrams），屬於行為圖形的子集合，強調系統模型中的資料流程：- Communication diagram- 交互概述圖（UML 2.0）- 時序圖（UML 2.0）- 時間圖（UML 2.0）
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從來源中使用相當多的概念。下面僅列代表性的概念。
對於結構而言
執行者，屬性，類，元件，接口，對象，包。
對於行為而言
活動，事件，消息，方法，狀態，用例。
對於關係而言
聚合，關聯，組合，相依，廣義化（或繼承）。
其他概念- 構造型—這規範符號應用到的模型- 多重性—多重性標記法與資料庫塑模基數對應，例如：1, 0..1, 1..:* 角色
各式UML

**UML應用程序**

**開源/自由軟件**
 ArgoUML，UML設計工具（ 主頁）- Dia，可繪製流程圖以及包含UML在內的多種圖形（ 主頁 date=20041103095335 ）- Draw.io，在線流程圖繪製工具，提供各種圖形模板 ( 主頁 date=20200229071037 )- GitMind，可線上繪製心智圖及流程圖包括UML，泳道圖等各種圖 （ 主頁 date=20200226070759 ）- Umbrello，強大而又界面友好的UML工具。是KDE的一部分。（ 主頁 date=20080820192815 ）- UMLet，用Java實現的UML簡單繪圖工具（ 主頁 date=20200617023003 ）- Unimodeler，Linux下支持9種UML圖和向量打印的工具（ homepage date=20041206025323 ）- astah*，Java和UML開發者環境（ 主頁 date=20110317072207 ）- Jumli，用Java實現，支持C++/C#/Java以及解析/生成源代碼（ 主頁 date=20050124031653 ）- omondo UML，Eclipse的UML插件，提供有限功能的免費版（需註冊）和完整的商業版（ 主頁 date=20041103090617 ）- Poseidon for UML，專業UML工具，提供免費的社區版（Community Edition）。從開源項目ArgoUML而來。請參見（ 主頁）。- Violet是為學生、教師以及只需要快速創建簡單UML的應用者而設計的工具。GPL授權（ 主頁 date=20041105093327 ）- SiSy, SimpleSystem

**參見**
 集成開發環境- Object Constraint Language（OCL）- Object-modeling technique- 物件導向的程序設計- 物件導向的系統分析- XML Metadata Interchange，為了交換UML模型的基於XML的格式- C4模型

**參考文獻**

**外部鏈接**
  Unified Modeling Language at FOLDOC-  Message board for UML-  A free UML tutorial date=20041026074045 -  UML Jokes- Article  Precise Use Cases date=20170705202632  from  Methods & Tools date=20100629033112 - Article  Database modeling in UML date=20100629033112  from  Methods & Tools date=20100629033112