主要是經過用例圖來描述系統的功能與使用場景;java
對於關鍵的業務流程能夠經過活動圖描述;工具
若是在需求階段就提出要和現有的某些子系統整合,那麼能夠經過時序圖描述新系統和原來的子系統的調用關係;設計
能夠經過簡化的類圖進行領域模型抽象,並描述核心領域對象之間的關係;對象
若是某些對象內部會有複雜的狀態變化,好比用戶、訂單這些,能夠用狀態圖進行描述。繼承
經過部署圖描述系統最終的物理藍圖;接口
經過組件圖以及組件時序圖設計軟件主要模塊及其關係;生命週期
還能夠經過組件活動圖描述組件間的流程邏輯;開發
主要輸出的就是類圖和類的時序圖,指導最終的代碼開發;部署
若是某個類方法內部有比較複雜的邏輯,那麼能夠用畫方法的活動圖進行描述。io
備註:UML畫圖工具推薦,EA、draw.io
關聯、依賴、聚合、組合、繼承、泛化
關聯:對於兩個相對獨立的對象,當一個對象的實例與另外一個對象的一些特定實例存在固定的對應關係時,這兩個對象之間爲關聯關係。關聯關係分爲單向關聯和雙向關聯。在java中,單向關聯表現爲:類A當中使用了類B,其中類B是做爲類A的成員變量。雙向關聯表現爲:類A當中使用了類B做爲成員變量;同時類B中也使用了類A做爲成員變量。(實線+箭頭,箭頭指向關聯的類)
依賴:依賴關係的定義爲:對於兩個相對獨立的對象,當一個對象負責構造另外一個對象的實例,或者依賴另外一個對象的服務時,這兩個對象之間主要體現爲依賴關係。定義比較晦澀難懂,但在java中的表現仍是比較直觀的:類A當中使用了類B,其中類B是做爲類A的方法參數、方法中的局部變量、或者靜態方法調用。(虛線+箭頭,箭頭指向依賴的類)
聚合: 聚合關係是關聯關係的一種,耦合度強於關聯,他們的代碼表現是相同的,僅僅是在語義上有所區別:關聯關係的對象間是相互獨立的,而聚合關係的對象之間存在着包容關係,他們之間是「總體-個體」的相互關係。例如:我的和屬於他的房產是總體和個體的關係。(實線+空心菱形,菱形指向總體)
組合:相比於聚合,組合是一種耦合度更強的關聯關係。存在組合關係的類表示「總體-部分」的關聯關係,「總體」負責「部分」的生命週期,他們之間是共生共死的;而且「部分」單獨存在時沒有任何意義。(實線+實心菱形,菱形指向總體)
繼承:繼承表示類與類(或者接口與接口)之間的父子關係。在java中,用關鍵字extends表示繼承關係。UML圖例中,繼承關係用實線+空心箭頭表示,箭頭指向父類。(實線+空心箭頭)
實現:表示一個類實現一個或多個接口的方法。接口定義好操做的集合,由實現類去完成接口的具體操做。在java中使用implements表示。UML圖例中,實現關係用虛線+空心箭頭表示,箭頭指向接口。(虛線+空心箭頭)
耦合強弱:泛化=實現>組合>聚合>關聯>依賴