第3章 UML統一塑模語言 3-1 塑模與塑模語言 3-2 UML的基礎 3-3 UML的4+1觀點 3-4 UML塑模工具 3-5 Software Ideas Modeler塑模工具
3-1 塑模與塑模語言 3-1-1 塑模的基礎 3-1-2 塑模語言
3-1-1 塑模的基礎-說明 模型(Models)就是一種抽象化的真實事物(Real Thing),以軟體系統來說,它是使用文字或圖形來描述系統規格和其環境,一種簡化的真實系統。當我們將現實生活中的真實事物抽象化成模型,這個過程稱為「塑模」(Modeling),如下圖所示:
3-1-1 塑模的基礎-基本原則 在進行軟體系統開發時,我們常常需要建立模型(Models)來進一步了解未來建立的系統,不過,我們建立的模型永遠不會等於真實系統,因為塑模有兩個基本原則,如下所示: 強調(Emphasizing):強調哪些必要的部分。 省略(Omitting):忽略哪些不相關的部分。
3-1-1 塑模的基礎-為什麼需要建立模型 我們替系統建立模型是為了執行三種工作,如下所示: 溝通(Communication):在所有涉及系統開發專案的使用者建立一個溝通橋樑,因為不是所有使用者都了解資訊科技的專用術語,我們需要讓客戶了解需求;開發者了解需求,而且他們所認知的需求是一致的,有了模型,就算過了一段很長的時間,他們共通決定的需求一樣可以了解,而不會各說各話。 視覺化(Visualization):為了讓所有參與者都了解系統,詳細的文字描述比不上一張圖形來的有效,換句話說,視覺化呈現的模型(即使用圖形來表示),更容易讓使用者了解系統。 驗證(Verification):模型可以幫助我們驗證最後完成系統是否完整(Completeness)、一致(Consistency)和正確(Currectness)。
3-1-1 塑模的基礎-塑模方法 軟體塑模(Software Modeling)基本上可以使用兩種方式來替軟體系統建立模型,如下所示: 演算法塑模(Algorithmically Modeling):傳統結構化程式設計的軟體分析就是建立演算法,這種方法建立的系統彈性很差,當需求變更或升級時,我們很難更新或維護系統。 物件導向塑模(Object-Oriented Modeling):目前主流的軟體開發方式是物件導向方式,物件導向塑模是使用更接近真實世界的方式來建立模型,軟體系統就是物件集合,因為我們本來就是生活在物件的世界,思考模式也遵循著物件導向方式。
3-1-2 塑模語言-說明 「塑模語言」(Modeling Language)是一種使用字彙和規則來呈現概念和實際系統的語言,它可以使用虛擬碼(Pseudo-Code)、程式碼、圖形、一大段文字或任何可以幫助我們了解系統的方式來描述資訊或知識。 事實上,塑模語言就是使用一致的規則集合來定義系統結構,其元素稱為符號(Notation),而這些規則可以解釋結構中各元件的意義。
3-1-2 塑模語言-種類 一般來說,塑模語言分為圖形和文字兩種,其說明如下所示: 圖形塑模語言(Graphical Modeling Languages):使用圖形加上命名的符號來呈現觀念,以連接線連接符號來表示之間的關係,和各種其他符號來表示限制條件,UML是一種圖形塑模語言。 文字塑模語言(Textual Modeling Languages):主要是使用標準的關鍵字(Keywords)加上參數(Parameters)來建立電腦可理解的運算式。
3-2 UML的基礎 3-2-1 UML簡介 3-2-2 UML圖形 3-2-3 UML與方法論
3-2-1 UML簡介-說明 「UML」(Unified Modelling Language)並不是一種程式語言,它是一種塑模語言,可以讓我們使用圖形描述系統來建立模型。如同工程師閱讀藍圖來蓋房子,程式設計師只需看到UML圖形繪出的模型,就可以寫出所需的程式碼。 UML的中文名稱是統一塑模語言,UML的出現是三位OO理論大師:Grady Booch、James Rumbaugh和Ivar Jacobson(通稱3 Amigo)所提倡。三人本來各自提出物件導向的方法論(即OOA和OOD設計方法)和專屬表示的圖形和符號。換句話說,同樣問題,使用三人方法論建立的模型會有三種不同的表示方法。
3-2-1 UML簡介-歷史 UML的發展始於1994年10月Grady Booch和Jim Rumbaugh同在Rational軟體公司時,他們開始統一Booch(Grady Booch提出的方法論)和OMT(Object Modeling Technique,Jim Rumbaugh提出的方法論)。 UML草案版本0.8版在1995年10月提出,1995年底Ivar Jacobson加入Rational公司後,再整合他的OOSE(Object-Oriented Software Engineering)方法論,1997年1月UML正式產生。 UML規格在1998年1月推出1.2版,2000年3月推出1.3版,2001年9月是1.4版,2003年3月是1.5版,ISO是在2004年7月推出1.4.2版ISO/IEC 19501。2005年7月正式推出UML 2.0版,2007年8月和11月是UML 2.1.1和2.1.2版,2009年2月是UML 2.2版,2010年5月是2.3版。
3-2-1 UML簡介-如何使用UML UML的使用方法有很多,Martin Fowler描述三種我們最常使用UML的方式,如下所示: UML如同藍圖:使用UML圖形描述詳細的系統規格,如同藍圖,我們可以使用UML塑模工具將它轉換成程式碼,或使用反向工程(Reverse Engineering)將程式碼轉換成UML圖形,維持模型與程式碼之間的一致性。 UML如同程式語言:使用UML圖形建立的模型是一個可執行的程式碼,UML如同程式語言般可以將UML建立的模型變形轉換成不同平台環境的程式碼。
3-2-2 UML圖形-說明 UML圖形(UML Diagrams)是使用視覺化方式來描述不同的模型元素,可以建立物件導向分析和設計結果的模型。每一種UML圖形都有特殊的用途,它是使用符號來視覺化呈現系統的某些觀點。 UML 2.x版比1.x版支援更多種類的圖形,在本節如果沒有特別說明,表示這是從UML 1.x版就支援的圖形。UML 2.2版共有14種圖形,可以分成兩種:7種結構圖(Stucture Diagrams)和7種行為圖(Behavior Diagrams)。
※ 3-2-2 UML圖形- 結構圖 圖形 說明 類別圖(Class Diagrams) 物件圖(Object Diagrams) 描述物件實例的靜態結構,可以顯示某一個時間點,系統一組物件之間的關係 元件圖(Component Diagrams) 描述系統重要元件之間的組織架構,元件可以包含其他元件或多個類別 部署圖(Deployment Diagrams) 描述系統實際執行時的軟硬體環境配置 套件圖(Package Diagrams) 使用階層架構來組織一組類別和元件,UML 2.0版支援的圖形 組合結構圖(Composite Structure Diagrams) 描述模型元素類別或元件的內部結構,UML 2.0版支援的圖形 輪廓圖(Profile Diagrams) 處理meta-模型層次的模版(Stereotype)資訊,可以使用UML圖形來自訂模版、標籤和限制條件
※ 3-2-2 UML圖形- 行為圖 圖形 說明 活動圖(Activity Diagrams) 類似流程圖,可以描述系統商業流程、作業流程和系統各活動的流程,例如:使用案例的主流程和操作 使用案例圖(Use Case Diagrams) 描述系統功能和其提供的服務,和哪些使用者或外部系統會與之互動,可以幫助我們找出系統需求 循序圖(Sequence Diagrams) 使用時間軸方式描述物件之間的互動,強調物件之間訊息傳遞的時間順序 通訊圖(Communication Diagrams) 描述物件的互動,強調物件之間的關係、訊息流向和控制流程,在1.x版稱為合作圖(Collaboration Diagrams) 狀態機圖(State Machine Diagrams) 描述物件生命周期的事件與狀態轉換,1.x版稱為狀態圖(Statechart Diagrams) 時序圖(Timing Diagrams) 描述詳細的時間資訊,互動元素之間的條件資訊和狀態改變,UML 2.0版支援的圖形 互動概觀圖(Interaction Overview Diagrams) 使用循序、通訊和時序圖以高階方式來描述系統發生的重要互動,UML 2.0版支援的圖形
3-2-2 UML圖形- 圖形與模型之間的差異 模型和圖形的差異說明,如下所示: 模型(Models):模型是使用抽象化方式來描述欲塑模事實的所有元素,包含所有關於商業、系統和關係等觀點。 圖形(Diagrams):每一張圖形是使用一種特殊觀點來檢視我們欲了解系統的特定部分,換句話說,一張圖形只能使用一種觀點來檢視所有或部分模型。
3-2-3 UML與方法論-說明 UML統一塑模語言並不是方法論,其主要目的是使用統一的文字和圖形來建立模型。事實上,UML只統一Grady Booch、James Rumbaugh和Ivar Jacobson三人的表示方法,並沒有統一方法論,UML需要搭配適當的方法論,才能幫助我們進行軟體系統開發。 軟體系統開發方法(Methods)是一種可靠且可複製的方式來描述如何塑模和建立軟體系統的過程。
3-2-3 UML與方法論-說明 物件導向分析與設計的主要方法論,如下表所示: 方法論名稱 開發者 OMT(Object Modeling Technique) James E. Rumbaugh Booch方法(Booch Method) Grady Booch OOSE(Object Oriented Software Engineering) Ivar Jacobson Shlaer-Mellor方法(Shlaer-Mellor Method) Slly Shlaer與Stephen J. Mellor
3-3 UML的4+1觀點-說明 對於複雜的軟體系統來說,我們需要透過一組UML圖形才能完整描述系統的所有資訊,目前有相當多方法將UML模型建立的圖形分類成多種觀點或透視方式來取得系統的真實面貌,簡單的說,我們可以從不同觀點來檢視一個系統,每一個觀點使用特定種類的UML圖形來呈現。 Kruchten’s的4+1觀點(Philippe Kruchten,1995)能夠幫助我們呈現不同種類UML圖形在描述整個系統模型時扮演的角色,稱為「觀點模型」(View Model),它可以同時使用多個不同觀點來描述系統架構。
※ 3-3 UML的4+1觀點-圖例 圖例的4+1觀點是從使用者、開發者和專案管理者的角度來看這個系統,如下圖所示:
※ 3-3 UML的4+1觀點-觀點說明1 使用案例觀點(Use Case View):使用一組使用案例(Use Cases)來描述系統,這是外面世界看到的系統功能,在此觀點需要描述系統準備要做什麼,與其他4個觀點都相關,所以稱為+1觀點。我們主要是使用UML使用案例圖和情節(Scenarios)來呈現此觀點。 邏輯觀點(Logical View):這是使用結構元素描述系統功能的靜態結構和動態行為,說明系統組成的結構和之間的互動,此觀點關注系統提供使用者的服務和功能需求。我們主要是使用UML類別圖、物件圖、狀態機圖和互動圖來呈現此觀點。
※ 3-3 UML的4+1觀點-觀點說明2 開發觀點(Development View):這是程式設計者角度的觀點,著重於程式碼管理的模組與元件,也就是描述系統內部模組和元件的結構。我們主要是使用UML套件圖和元件圖來呈現此觀點。 流程觀點(Process View):此觀點是系統非功能需求的效能和可擴充性等,包含系統處理流程的並行和通訊,可以幫助我們了解系統發生了什麼事。我們主要是使用UML活動圖來呈現此觀點。 實際觀點(Physical View):這是從系統工程師觀點呈現的系統,即真實世界的系統拓樸架構,可以描述最後部署的實際系統架構和軟體元件。我們主要是使用UML部署圖來呈現此觀點。
3-4 UML塑模工具-說明 UML塑模工具(UML Modelling Tool)是CASE工具(Computer-Aided Software Engineering Tools,CASE Tools)之一,可以幫助系統開發者使用UML圖形進行物件導向分析與設計,快速建立軟體系統所需的模型。 目前巿面上的UML塑模工具相當多,依使用者的授權方式,可以分為商業和免費版本UML塑模工具。
3-4 UML塑模工具-商業版本的UML塑模工具 一般來說,商業版本的UML塑模工具都提供強大功能,而且很多都提供Community社群版,可以讓非商業用途的使用者免費使用,不過,其功能會打一些折扣,而且通常都需要線上註冊啟動後才能使用。常見商業版本的UML塑模工具,如下所示: IBM Rational Software Architect(RSA) PowerDesigner MagicDraw UML Astah UML Visual Paradigm for UML(VP-UML) Poseidon for UML Enterprise Architect
3-4 UML塑模工具-免費版本的UML塑模工具 除了商業版本的UML塑模工具外,巿面上還有一些Open Source開放原始碼與類似授權的免費UML塑模工具,和一些非商業用途使用者可全功能免費使用的UML塑模工具,其說明如下所示: StarUML ArgoUML Umbrello BOUML Software Ideas Modeler
※ 3-5 Software Ideas Modeler塑模工具 3-5-2 建立與儲存專案 3-5-3 新增模型與UML圖形 3-5-4 SIM的使用介面說明 3-5-5 SIM塑模工具的基本操作
3-5 Software Ideas Modeler塑模工具 Software Ideas Modeler(SIM)塑模工具一套速度快、輕量、操作簡單和功能強大的CASE工具,其強大的UML繪圖功能,可以輸出漂亮的UML圖形和產生精美的模型文件。 SIM塑模工具是一套免費軟體(Freeware)的UML塑模工具,它是由Dušan Rodina開發,支援中文使用介面(筆者所翻譯),對於非商業用途的使用者可以全功能免費使用(如果覺得好用,記得捐助些款項支持此開發計劃)。
3-5-1 安裝與啟動Software Ideas Modeler-安裝 在書附光碟的SIM工具是免安裝版本,並不需要進行安裝程序,不過,因為SIM是一套.NET應用程式,在執行前,請先確認Windows作業系統已經安裝.NET Framework 3.5以上版本。
3-5-1 安裝與啟動Software Ideas Modeler-啟動 在書附光碟的SIM是免安裝版本,我們只需將ZIP檔解壓縮至硬碟的資料夾,就可以切換至SIM解壓縮至硬碟的資料夾,按二下【SoftwareIdeasModeler.exe】執行檔,稍等一下,因為是第一次啟動,需要選擇使用介面的語言,可以看到「Language」對話方塊。
3-5-2 建立與儲存專案 SIM是使用專案(其副檔名為.simp)來管理我們塑模的模型,在模型之中是繪製的各種UML圖形,如下圖所示:
3-5-3 新增模型與UML圖形-新增模型 在SIM建立專案後,我們就可以執行「檔案/開啟專案」指令開啟存在的SIM專案,新增模型與UML圖形。 在同一個SIM專案可以建立多個模型,例如:在Ch3_5.simp專案新增名為【邏輯觀點】的模型,如右圖所示:
3-5-3 新增模型與UML圖形-加入UML圖形
3-5-4 SIM的使用介面說明 SIM使用介面是由功能表、工具列、標籤頁的編輯視窗和各種功能視窗所組成,如下圖所示:
3-5-5 SIM塑模工具的基本操作 在這一節筆者準備簡單說明SIM塑模工具的基本操作,包含基本設定、樣式編輯、輸出圖檔、產生文件和UML註解與模版的編輯。 切換使用介面的語言 顯示格線與貼齊格線 樣式編輯 在UML符號加入註解 替UML符號元素新增模版 將UML圖形匯出成圖檔 產生報告或規格文件
End