在做項目設計方案的時候,理解為需求后,我們都會做技術設計方案,這個時候就需要用到UML建模,涉及到UML常用圖形以及工具畫圖,以下我會詳細介紹UML圖形和我個人推薦的UML建模工具。
UML即Unified Model Language,是一種建模語言,也是標準建模語言。在軟件開發中,當系統規模比較復雜時,需要用圖形抽象地來表達復雜的概念,讓整個軟件設計更具有可讀性,可理解性,以便盡早發現軟件設計時存在的潛在問題,從而降低開發風險。同時,也極大地方便了業務人員與開發人員之間的交流。
UML常用建模圖
UML標準建模語言中5種主要的類型圖:
1、用例圖:指的是從用戶角度來描述系統功能,并且指明各功能操作者。
2、靜態圖:包含的是類圖和對象圖。類圖是一種靜態模型類型,是用來表示類之間的聯系、類的屬性以及操作,在系統的整個生命周期都是有效的。對象圖則是類圖的一個實例,使用的標識幾乎與類圖一致,但是其生命周期有限,只能在系統中某一時間段內存在。
3、交互圖:包含的是時序圖和協作圖,是用來描述對象之間的交互關系。時序圖強調的是對象之間的消息發送順序,是對象之間動態合作關系。協作圖則是用來描述對象之間的協作關系,既顯示對象間的動態合作關系,又顯示對象以及它們之間的關系。時序圖用來強調時間和順序,協作圖則用來強強調上下級的關系。
4、行為圖:包含的是活動圖和狀態圖,是用來描述系統的動態模型于組成對象之間的交互關系。活動圖描述的是為了滿足用例要求所進行的活動以及活動間的約束關系,方便識別并進行活動。狀態圖是類的補充,是用來描述類的對象所有可能的狀態以及事件發生時狀態的轉移條件。
5、實現圖:包含的是部署圖和組件圖。部署圖是用來表示建模系統的物理部署。組件圖則用來表示建模軟件的組織以及其相互之間的關系。
UML建模時常見的9種圖:
1、用例圖:
用例圖是需求分析的產物,主要是用來描述用戶是如何使用一個系統的,是用戶所能觀察和使用到的系統功能的模型圖。
2、類圖:
UML類圖,是用來描述系統中的類以及各個類之間的關系。系統中可以有多個類圖,單個類圖則只是表達了系統的一個方面。類圖可以幫助我們在正確編寫代碼之前對系統有個很全面的認識,是建模中最常見的一種類型圖。
3、對象圖:
對象圖描述的是一組對象之間的關系,而不是類之間的關系。它是類圖的變體,但是又與之不同,對象顯示的類的多個對象而不是實際的類。
4、活動圖:
UML活動圖,顧名思義就是UML的動態模型的一種圖形,對于系統的功能建模特別重要。它用來描述滿足用例要求所要進行的活動以及活動間的約束關系,有利于識別并行活動。簡單來講,就是表示在處理某個活動時,兩個或者更多類對象之間的過程控制流。
5、狀態圖:
UML狀態圖,用于顯示狀態機,即描述一個對象所處的可能狀態以及狀態之間的轉移。用狀態圖建模可以幫助開發人員分析復雜對象的各種狀態的轉換,以及對象何時執行怎樣的動作。
6、時序圖:
UML時序圖,又叫序列圖或者順序圖,是一種用來描述對象之間傳送消息的時間順序,是用來表示用例中的行為順序。
7、協作圖:
UML協作圖(又叫通信圖)是一種作用于顯示對象之間如何進行交互以執行特點用例或用例中特點部分行為的交互圖,它強調的是發送和接收消息的對象之間的組織結構。
8、組件圖:
UML組件圖(又叫構件圖),是用來描述在軟件系統中遵從并實現一組接口的物力的、可替換的軟件模塊。它所表現的是一種系統靜態實現的結構,能夠幫助開發人員對系統組成達成一致的認識。
9、部署圖:
UML 部署圖是一個用來描述系統的硬件配置和部署以及軟件的構件和模塊在不同節點上分布的模型圖。它能夠幫助系統相關人員了解系統中各個構件部署在什么硬件上以及硬件之間的交互關系。
UML中的各種圖之間的區別:
1、各有其側重點:比如說用例圖側重于描述用戶的需求,而類圖則側重于描述系統的具體實現。
2、所描述的方面各不相同:比如類圖是用來描述系統結構的,序列圖則是用來描述系統行為的。
3、抽象的層次也不盡相同:比如頭見圖是用來描述系統的模塊結構,抽象層次比較高,而對象圖則用來描述具體的模塊實現,抽象層次就比較低。
UML工具
Visio
Visio 原來僅僅是一種畫圖工具,能夠用來描述各種圖形(從電路圖到房屋結構圖),也是到VISIO2000才開始引進軟件分析設計功能到代碼生成的全部功能,它可以說是目前最能夠用圖形方式來表達各種商業圖形用途的工具。
Rational Rose
ROSE是直接從UML發展而誕生的設計工具,它的出現就是為了對UML建模的支持,ROSE一開始沒有對數據庫端建模的支持,但是在現在的版本中已經加入數據庫建模的功能。ROSE主要是在開發過程中的各種語義、模塊、對象以及流程,狀態等描述比較好,主要體現在能夠從各個方面和角度來分析和設計,使軟件的開發藍圖更清晰,內部結構更加明朗(但是它的結構僅僅對那些對掌握UML的開發人員,也就是說對客戶了解系統的功能和流程等并不一定很有效),對系統的代碼框架生成有很好的支持。但對數據庫的開發管理和數據庫端的迭代不是很好。
PowerDesign
PowerDesigner原來是對數據庫建模而發展起來的一種數據庫建模工具。直到7.0版才開始對面向對象的開發的支持,后來又引入了對UML的支持。但是由于PowerDesigner側重不一樣,所以它對數據庫建模的支持很好,支持了能夠看到的90%左右的數據庫,對UML的建模使用到的各種圖的支持比較滯后。但是在最近得到加強。
Enterprise Architect(EA)
Enterprise Architect是一個全功能的、基于UML的visual CASE工具,主要用于設計、編寫、構建并管理以目標為導向的軟件系統。它支持用戶案例、商務流程模式以及動態的圖表、分類、界面、協作、結構以及物理模型。此外,它還支持C++、Java、Visual Basic、Delphi、C#以及VB.Net。
這個是我用過的最好的UML工具之一,個人推薦使用。
Umlet
開源的免費UML工具,這個軟件實際上是用JAVA寫的,還有有一套簡化的語言,提供用編碼的方式畫時序圖等各種圖,也可以用code的方式自定義頁面元素。
最后,UML建模除了畫圖本身以外,最重要的是理清整個設計方案思路,這一點才UML畫圖的精髓所在。
想說的:概念的東西講的差不多,我們來說點工作中遇到的問題吧。我文章一般沒有什么規律的,題材都是工作中或者其他人在工作中遇到的問題。然后想給大家提個醒,如果你覺得寫的太淺沒營養,或者寫的太爛, 那請大神繞道。今天說UML跟業務流程、思維導圖的用途。 另外順便說下我們經常會用到哪些,用這些有什么好處。
一般來說我們工作中用到比較龐大的圖形作業就是業務流程圖了。往往一個業務流程圖很大,看起來也比較密密麻麻的,然后每次我發給別人的時候,發現不管是領 導還是什么能耐心看完全局的很少。都是重點看看那個模塊的流程然后確認下ok了。面對這樣的大的業務流程優點是比較清晰是全局的,缺點是修改跟瀏覽起來都 不太方便,所以。我一般都會把流程圖配成文檔或者PPT,把業務拆分成模塊,分別做業務流程,在用一個整圖做一個概括流程。這樣就可以按照部門發出去或者 給某個小組做某個功能模塊的業務,別人也不用全部瀏覽一遍; 這個說的是平時做業務流程的小心得, 接下來說怎么寫作。 很多人把業務流程寫成功能,這里強調下業務流程只是業務不要去涉及到功能,如果你要涉及到功能你就不得不把參數跟數據字典還有類圖做出來。在你不會做那些 以前,先去想做業務層的東西不要太深入干涉別人怎么實現這個業務。
我現在用這個做桌面導航了; 思維導圖在產品這里用到的應該是除了用word寫PRD以外最頻繁的了。它很有效的幫你梳理你的大腦清晰的描述業務關系跟業務模塊。對, 這個是模塊,思維導圖不要做流程走向,只要把業務的模塊分出來,模塊之間的關系列出來就可以了,當然思維導圖也可以做功能或者參數導圖。
今天想側重點說下UML,很多人不明白UML到底能做什么,或者用途是什么。UML多用于復雜的軟件交互關系中,一般產品用到UML的功能大多是做用例跟活動圖。那UML用于最多的途徑是做什么模型的?我分了3類主要的 :
1. 結構性圖形:靜態圖 對象圖 包圖 實現圖 部署圖 組件圖等
2. 行為式圖形: 活動圖 狀態圖 用例圖等
3. 交互性圖形:通信圖 交互圖 時間圖 時序圖等
那么可以看出來產品經理如果用 UML 那就是用靜態圖、 用例圖、 交互圖。 因為你沒辦法寫通信,也沒辦法寫部署。類圖你也寫不了。除非你是個技術轉型過來的。 那么問題來了。 可能在工作中用到UML來做,用什么做最好?
很多人會用一些常規的,比如RationalRose、BorlandTogether、PowerDesigner、MSVisio這些。你百度能搜出來 一大堆。但是做這個是要看你的項目的。里面有道道的,如果你是java的你可以考慮用ModelGoon,如果你是C#的或者微軟項目的你要用 PowerDesigner,或者VS建模工具, 如果是PHP,我一般都會用Navicat Date Modeler。 因為在開發過程中其實程序員也會用到UML建模,通信,部署,組件,用例都可能會用到,但是最多的是數據表關聯的類圖。用這些對應的建模工具來做是可以直 接生成文件的,就是模型可以生成文件或者應用程序的。可以省很多事情。并且不同的數據庫表的數量不同的MSSQL跟MYSQL就差別巨大,一個10萬一個 100萬。分開使用對應的建模工具,是明智的。身為產品,你應該明白這些道理是為什么。不能拖了設計,或者開發的后腿。你的存在是更好的協調工作、優化產 品以及產品線、管控產品的,不是來制造麻煩的。所以很多人抱怨被噴,我覺得有些是活該。因為你自己的能力不得不讓人噴你。你還想如何 ?
說到產品用到的用例圖,這里稍微講一下下。三要素: 參與者、用例、關系。很多人做的很糟糕。因為沒有理解圖形跟箭頭怎么使用,甚至不知道include跟extend是表示什么的。建議多看看。多問問別 人。參考是參考不來的,因為每個行業雖然這些圖形箭頭不會錯,但是他們要表達的東西也是不一樣的。另外說下一些模型工具,比如Axure啊BM啊之類的哪些也屬于交互用例的一種,更立體的模型。在實際的工作中我們用到這個的其實并不多,第一來說很影響工期,特別面對現在中小型企業的快餐項目, 甚至是在大項目中大家也趨向于靜態圖或者紙筆來畫,然后做成圖片或者 PPT,需要交互做成AE或者flash,不清楚為什么這么追捧Axure,我一般只用Balsamiq Mockups、Mark Man、Justinmind。我重點推薦justinmind。很好用的東西。
原文來自:hi,ouzo
作者:ouzo