UML的9種常用圖與建模工具詳解


UML即Unified Model Language,是一種建模語言,也是標准建模語言。在軟件開發中,當系統規模比較復雜時,需要用圖形抽象地來表達復雜的概念,讓整個軟件設計更具有可讀性,可理解性,以便盡早發現軟件設計時存在的潛在問題,從而降低開發風險。同時,也極大地方便了業務人員與開發人員之間的交流。

UML常用建模圖

UML標准建模語言中5種主要的類型圖:UML的9種常用圖與建模工具詳解-mikechen的互聯網架構 1、用例圖

指的是從用戶角度來描述系統功能,並且指明各功能操作者。

2、靜態圖

包含的是類圖和對象圖。類圖是一種靜態模型類型,是用來表示類之間的聯系、類的屬性以及操作,在系統的整個生命周期都是有效的。對象圖則是類圖的一個實例,使用的標識幾乎與類圖一致,但是其生命周期有限,只能在系統中某一時間段內存在。

3、交互圖

包含的是時序圖和協作圖,是用來描述對象之間的交互關系。時序圖強調的是對象之間的消息發送順序,是對象之間動態合作關系。協作圖則是用來描述對象之間的協作關系,既顯示對象間的動態合作關系,又顯示對象以及它們之間的關系。時序圖用來強調時間和順序,協作圖則用來強強調上下級的關系。

4、行為圖

包含的是活動圖和狀態圖,是用來描述系統的動態模型於組成對象之間的交互關系。活動圖描述的是為了滿足用例要求所進行的活動以及活動間的約束關系,方便識別並進行活動。狀態圖是類的補充,是用來描述類的對象所有可能的狀態以及事件發生時狀態的轉移條件。

5、實現圖

包含的是部署圖和組件圖。部署圖是用來表示建模系統的物理部署。組件圖則用來表示建模軟件的組織以及其相互之間的關系。

UML建模時常見的9種圖

UML的9種常用圖與建模工具詳解-mikechen的互聯網架構

1、用例圖

用例圖是需求分析的產物,主要是用來描述用戶是如何使用一個系統的,是用戶所能觀察和使用到的系統功能的模型圖。

2、類圖

UML類圖,是用來描述系統中的類以及各個類之間的關系。系統中可以有多個類圖,單個類圖則只是表達了系統的一個方面。類圖可以幫助我們在正確編寫代碼之前對系統有個很全面的認識,是建模中最常見的一種類型圖。

3、對象圖

對象圖描述的是一組對象之間的關系,而不是類之間的關系。它是類圖的變體,但是又與之不同,對象顯示的類的多個對象而不是實際的類。

4、活動圖

UML活動圖,顧名思義就是UML的動態模型的一種圖形,對於系統的功能建模特別重要。它用來描述滿足用例要求所要進行的活動以及活動間的約束關系,有利於識別並行活動。簡單來講,就是表示在處理某個活動時,兩個或者更多類對象之間的過程控制流。

5、狀態圖

UML狀態圖,用於顯示狀態機,即描述一個對象所處的可能狀態以及狀態之間的轉移。用狀態圖建模可以幫助開發人員分析復雜對象的各種狀態的轉換,以及對象何時執行怎樣的動作。

6、時序圖

UML時序圖,又叫序列圖或者順序圖,是一種用來描述對象之間傳送消息的時間順序,是用來表示用例中的行為順序。

7、協作圖

UML協作圖(又叫通信圖)是一種作用於顯示對象之間如何進行交互以執行特點用例或用例中特點部分行為的交互圖,它強調的是發送和接收消息的對象之間的組織結構。

8、組件圖

UML組件圖(又叫構件圖),是用來描述在軟件系統中遵從並實現一組接口的物力的、可替換的軟件模塊。它所表現的是一種系統靜態實現的結構,能夠幫助開發人員對系統組成達成一致的認識。

9、部署圖

UML 部署圖是一個用來描述系統的硬件配置和部署以及軟件的構件和模塊在不同節點上分布的模型圖。它能夠幫助系統相關人員了解系統中各個構件部署在什么硬件上以及硬件之間的交互關系。

UML中的各種圖之間的區別:

1、各有其側重點:比如說用例圖側重於描述用戶的需求,而類圖則側重於描述系統的具體實現。

2、所描述的方面各不相同:比如類圖是用來描述系統結構的,序列圖則是用來描述系統行為的。

3、抽象的層次也不盡相同:比如頭見圖是用來描述系統的模塊結構,抽象層次比較高,而對象圖則用來描述具體的模塊實現,抽象層次就比較低。

UML工具

UML的9種常用圖與建模工具詳解-mikechen的互聯網架構1.Enterprise Architect(EA)Enterprise Architect是一個全功能的、基於UML的visual CASE工具,主要用於設計、編寫、構建並管理以目標為導向的軟件系統。它支持用戶案例、商務流程模式以及動態的圖表、分類、界面、協作、結構以及物理模型。EA是個人推薦使用。

2.Umlet

開源的免費UML工具,這個軟件實際上是用JAVA寫的,還有有一套簡化的語言,提供用編碼的方式畫時序圖等各種圖,也可以用code的方式自定義頁面元素。

3.Rational Rose

ROSE是直接從UML發展而誕生的設計工具,它的出現就是為了對UML建模的支持,ROSE一開始沒有對數據庫端建模的支持,但是在現在的版本中已經加入數據庫建模的功能。ROSE主要是在開發過程中的各種語義、模塊、對象以及流程,狀態等描述比較好,主要體現在能夠從各個方面和角度來分析和設計,使軟件的開發藍圖更清晰,內部結構更加明朗(但是它的結構僅僅對那些對掌握UML的開發人員,也就是說對客戶了解系統的功能和流程等並不一定很有效),對系統的代碼框架生成有很好的支持。但對數據庫的開發管理和數據庫端的迭代不是很好。

4.PowerDesign

PowerDesigner原來是對數據庫建模而發展起來的一種數據庫建模工具。直到7.0版才開始對面向對象的開發的支持,后來又引入了對UML的支持。但是由於PowerDesigner側重不一樣,所以它對數據庫建模的支持很好,支持了能夠看到的90%左右的數據庫,對UML的建模使用到的各種圖的支持比較滯后。但是在最近得到加強。

5.Visio 

Visio 原來僅僅是一種畫圖工具,能夠用來描述各種圖形(從電路圖到房屋結構圖),也是到VISIO2000才開始引進軟件分析設計功能到代碼生成的全部功能,它可以說是目前最能夠用圖形方式來表達各種商業圖形用途的工具。

 

下面我就從項目流程管理的角度進行展開介紹:

一、項目流程管理

比方說官網改版這個項目,我們將整個項目流程划分為【需求收集】-【原型設計】-【UI設計】-【WEB研發】-【網站上線】,並將項目拆解為多個任務,每個任務分配給對應的人,並經歷多種任務狀態的流轉。

二、里程碑管理

里程碑,是指完成階段性工作的標志,不同項目的里程碑不同。拿上面官網改版的項目來說,需求列表、產品原型圖、UI設計圖等就是里程碑,里程碑划分的顆粒度可大可小,具體看項目組的人員分工情況。

Worktile中,里程碑可以對應為多種任務狀態。

三、時間跟蹤

前面講到項目拆分成了多個任務,但每個任務的完成時間需要嚴格把控,才能保證整體項目不會延期。在Worktile中,可以給每個任務設置截止時間,並可查看任務的更新時間。

​四、項目甘特圖

用甘特圖把控整體項目進度,如有任務完成不理想,可及時找到相關負責人。

五、文件管理

項目相關的文件,可以上傳到項目文件或任務附件中, 沉淀項目資料。Worktile支持企業網盤、項目文件、任務附件多種方式的文件管理。

六、用戶管理

應該是說項目成員管理,用Worktile可以給每個項目成員添加不同的角色,而每種角色對應不同的權限。比較通用的角色模式如管理員、普通成員、只讀成員,這些都可以在后台自由設置。

就暫時介紹到這,如果大家有疑問,歡迎在評論區交流。

 

UML類圖學習筆記

類圖結構
類封裝了數據和行為,它是具有相同屬性、操作和關系的對象集合的總稱。
在系統分析與設計階段,類通常分為三種:

實體類:實體類是系統需求中的實體,實體類通常保存在永久記憶體中,一般使用數據庫表或文件來記錄,實體類既包括存儲數據的類、傳遞數據的類和操作數據的類。實體類通常來源於需求說明中的名詞(例如:用戶、產品)。
控制類:控制類體現了應用的執行邏輯,提供相應的業務操作,將控制類抽象出來可以降低界面和數據庫之間的耦合度。控制類通常有動詞+名詞來命名(例如:UserRegister)。
邊界類:邊界類用於對外部用戶與系統之間的交互對象進行抽象,主要包括界面類(例如:對話框、窗口、菜單)。
類的組成
- 類名:類的名字
- 屬性:類的成員變量
- 操作:類的成員方法

屬性的表示方式如下所示:
可見性 名稱:類型[=缺省值]

可見性:public、private和protected,在類圖中分別用+、-和#表示。
名稱:屬性的名稱。
類型:屬性的數據類型,可以是基本數據類型,也可以是用戶自定義的類型。
缺省值:可選項,表示屬性的初始值。
在UML類圖中,常見的有以下幾種關系: 泛化(Generalization), 實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)

一. 泛化(Generalization)
【泛化關系】:是一種繼承關系,表示一般與特殊的關系,它指定了子類如何特化父類的所有特征和行為。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。
【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

 

 


二. 實現(Realization)
【實現關系】:是一種類與接口的關系,表示類是接口所有特征和行為的實現.
【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口

 

 

 

三. 關聯(Association)
【關聯關系】:是一種擁有的關系,它使一個類知道另一個類的屬性和方法;如:老師與學生,丈夫與妻子關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。
【代碼體現】:成員變量
【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者

 

 

 

上圖中,老師與學生是雙向關聯,老師有多名學生,學生也可能有多名老師。但學生與某課程間的關系為單向關聯,一名學生可能要上多門課程,課程是個抽象的東西他不擁有學生。

下圖為自身關聯:

 

 

四. 聚合(Aggregation)
【聚合關系】:是整體與部分的關系,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關系,輪胎離開車仍然可以存在。聚合關系是關聯關系的一種,是強的關聯關系;關聯和聚合在語法上無法區分,必須考察具體的邏輯關系。
【代碼體現】:成員變量
【箭頭及指向】:帶空心菱形的實心線,菱形指向整體

 

 

五. 組合(Composition)
【組合關系】:是整體與部分的關系,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關系,沒有公司就不存在部門。
組合關系是關聯關系的一種,是比聚合關系還要強的關系,它要求普通的聚合關系中代表整體的對象負責代表部分的對象的生命周期。
【代碼體現】:成員變量
【箭頭及指向】:帶實心菱形的實線,菱形指向整體

 

 

六. 依賴(Dependency)

【依賴關系】:是一種使用的關系,即一個類的實現需要另一個類的協助,所以要盡量不使用雙向的互相依賴.
【代碼表現】:局部變量、方法的參數或者對靜態方法的調用
【箭頭及指向】:帶箭頭的虛線,指向被使用者

 

 

七、總結
各種關系的強弱順序:
泛化 = 實現 > 組合 > 聚合 > 關聯 > 依賴

下面這張UML圖,比較形象地展示了各種類圖關系:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM