對象圖(Object Diagram)
一般情況下只有在軟件開發中才會使用到對象圖,下面的內容以開發的角度來說明對象圖,如果你沒有開發經驗,閱讀起來可能有一點難度。
圖1.2中的Person類,用代碼實例化如下:
Person person = new Person();
……
類(Class)實例化后就是對象(Object),對象person是類Person的實例,上述代碼可以用對象圖表示如下:
圖 1.3 Person類的對象圖
對象圖和類圖的樣子很相似,對象是類的實例化,“person : Person”表示對象person是類Person的實例。對象圖往往只在需要描述復雜算法時才會使用,畫出來的對象圖往往不會只有一個對象,該圖只畫了一個對象,其目的是盡量簡化以便讀者的理解什么是對象圖。
在需求分析工作中基本上不需要使用對象圖,從嚴謹的角度來看某些情況下應該使用對象圖,但我往往還是會用類圖來處理,這樣更加簡便而且容易理解。我們將在類圖一章再次講解對象圖。
構件圖(Component Diagram)
構件圖也叫組件圖,兩個名字均符合UML中文術語標準。
一輛汽車由輪子、發動機等物理部件組成,一個軟件往往也是由很多“物理部件”(如:控件、重用構件等)組成的,構件圖就是用來描述軟件內部物理組成的一種圖。下圖是某權限構件設計圖:
圖 1.4 某權限構件設計圖
圖1.4右上方有這樣標志 的矩形表示一個構件,構件可以再包含構件。
軟件需求分析工作中,需要用到構件圖的情況不是很多,以下情況除外:
1. 待開發的系統需要與第三方的系統、原有系統、某些老系統等交互,這時可用構件圖描述交互要求。
2. 客戶對軟件設計有某些特殊要求,這時可用構件圖來描述要求。
構件圖有時不會單獨使用,還會和部署圖一起結合使用。
部署圖(Deployment Diagram)
部署圖是用來描述系統如何部署、本系統與其他系統是怎樣的關系的一種圖,如下圖:
圖 1.5 某24小時便利店的管理系統部署圖
圖中一個個立體的矩形是部署圖的“節點”,一個節點表示一個物理的設備,節點之間的線條表示節點間的物理連接關系。
大部分客戶都會具備一定的IT基礎環境(如具備局域網、一些服務器、某些軟件平臺等),軟件系統需要基于當前的IT基礎環境來規劃,這時我們可以使用部署圖來做這個規劃。
分析系統的需求,不能忽略系統架構、部署、IT架構等方面的要求,我們要基于客戶當前的IT基礎環境,做一個最符合客戶利益的規劃。
要活用構件圖、部署圖來分析需求,需要具備一定的IT基礎架構知識和軟件設計知識,如果你還不具備相關知識,那么可以考慮抓緊補充相關知識。不過需求分析工作更多的還是分析業務,提煉功能性需求,這部分工作能做好是相當不容易的事情。對于技術方面的非功能性需求分析,可交由有技術背景的專業人士負責。
包圖(Package Diagram)
Package有“打包”的意思,包圖的主要用途是“打包”類圖。用類圖描述業務概念時,很多時候會因為業務類太多,而導致類圖非常龐大,不利于閱讀,這時可以將某些類放入“包”中,通過包圖來組織業務概念圖。
下圖是包圖的一個示例:
圖 1.6 包圖
圖中好像文件夾樣子的就是一個“包”,包之間的線條表示包之間的關系。
1.3 行為型的UML(Behavior Diagram)
活動圖、狀態機圖、順序圖處于三種不同的角度來描述流程,是分析業務流程的三種不同利器,下面將會逐一說明。
活動圖(Activity Diagram)
我們將起床到出門上班這個過程畫成活動圖,可能是這樣的:
圖 1.7 起床到出門上班的活動圖
活動圖中的一個圓邊框框表示一個“活動”,多個活動之間的帶箭頭線條表示活動的先后順序,該圖只是表達了一個順序流程,活動圖還可以表達分支結構。如果你以前曾學過流程圖的話,你會發現活動圖和流程圖很相似?;顒訄D可能是三種能表示流程的UML圖中最接近我們思維習慣的一種,下面來學習另外兩種能表達流程的圖。
狀態機圖(State Machine Diagram)
狀態機圖又叫狀態圖,但狀態圖這個譯名并沒有譯出Machine的意思。
狀態機圖從某個物品的狀態是如何變化的角度來展示流程,下圖某請假條審批流程:
圖 1.8 請假處理流程
整個請假審批流程是圍繞“請假條”這個物體進行的,隨著不同的審批階段,請假條具備不同的狀態。我們分析業務流程時會發現很多流程其實是圍繞某個物品進行的,這時可考慮使用狀態機圖。
順序圖(Sequence Diagram)
你去餐廳吃飯,向服務員點餐到服務員送菜上來,這個過程用順序圖可表示如下:
圖 1.9 點菜的順序圖
該圖有三個“小人”,每個“小人”下面的文字說明(如:顧客)表示其代表的角色。角色與角色之間有一些線條鏈接,表示角色之間是如何交互的。該圖表示的意思是:顧客向服務員點菜后,服務員將點菜信息傳遞給廚師,然后廚師做菜,最后再由服務員送菜給你。
原文轉自:http://www.anti-gravitydesign.com