Transcript 3-2-2 UML圖形
2-1 程式設計方法-說明
一般來說,初學程式設計者在逐漸建立深厚的程式設計功
力前,學習程式設計通常都會經歷數個學習過程,即四種
「程式設計技術」(Programming Techniques),或稱為
「程式設計風格」(Programming Styles),如下所示:
• 非結構化程式設計(Unstructured Programming)。
• 程序式程式設計(Procedural Programming)與結構化
程式設計(Structured Programming)。
• 模組化程式設計(Modular Programming)。
• 物件導向程式設計(Object-Oriented Programming)。
2-1-1 非結構化程式設計
早期BASIC、機器語言或組合語言建
立的程式,很多仍然是使用非結構
化程式設計來建立程式碼。
對於C、C++或Java語言來說,所謂非
結構化程式設計是指初學程式設計
時,不論幾列的小程式或數百列程
式碼的大程式,都只有一個main()主
程式且不包含任何流程控制敘述的
情況。非結構化程式設計的程式碼
是使用線性方式來依序的執行,如
右圖所示:
2-1-2 程序式與結構化程式設計
程序式程式設計是將程式中重
複的程式片斷抽出成為程序(
Procedures,或稱為Subroutine
、Routine)或函數(Functions
),也就是一段執行特定功能
的程式區塊。
程式因為已經分割成程序,所
以在main()主程式的程式碼只是
依序呼叫不同程序或函數的程
序呼叫(Procedure Call)。程
式是使用流程控制連接程序,
即目前程式設計最常使用的結
構化程式設計,屬於程序式程
式設計的子集,如右圖所示:
2-1-3 模組化程式設計
模組化程式設計是程序式程式設計的下一個階段,為了能夠重複使用
程序式程式設計分割建立的程序,我們可以將相同功能的程序或函數
結合在一起建立成獨立的「模組」(Modules),模組是處理指定功
能的子程式,如下圖所示:
2-1-3 模組化程式設計
模組化程式設計是程序式程式設計的下一個階段,為了能夠重複使用
程序式程式設計分割建立的程序,我們可以將相同功能的程序或函數
結合在一起建立成獨立的「模組」(Modules),模組是處理指定功
能的子程式,如下圖所示:
2-1-4 物件導向程式設計
模組化程式設計是物件導向程式設計的前身,只是沒有提
供繼承和多形等物件導向觀念。物件導向程式設計是一種
更符合人性化的程式設計方法,將原來專注於問題的分解
,轉換成了解問題本質參與的東西,也就是「物件」(
Object),如下圖所示:
系統分析師
• 系統分析師扮演的角色有
使用者需求之擷取。
進一步將需求轉換成資訊技術、企業處理與知識等元
件,並且有組織的結合起來。
程式設計師
• 主要是依分析與設計之藍圖設計出程式、建立資料庫
、測試與安裝系統等。程式設計師主要之工作是將分
析與設計文件轉換成電腦可執行的指令。
Slide-7
Understand that software engineering is
not the same as programming.
軟體工程師一般指從事軟體開發職業的人。軟體
工程師跟一般程式設計師的分別,在於一個程式
設計師的工作是按照指定的規格進行編碼,
而軟體工程師的工作則需要設計和規劃。不過,
由於現時社會的分工愈來愈模糊,軟體工程師跟
程式設計師的分工也愈不明顯
The principal difference is that software engineering
is typically a group effort, with differing and often
fluid roles and responsibilities for the group
members.
Slide-8
Software Architect
A simplistic view of the role is that architects create
Architecture serves as the blueprint for both the
system and the project developing it, defining the
work assignments that must be carried out by design
and implementation teams. The architecture is the
primary carrier of system qualities, such as
performance, modifiability, and security.
Slide-9
第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(ObjectOriented 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建立草圖。
• 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)
UML最常使用的圖形,可以描述類別的靜態結
構,包含型態、介面和類別之間的關係
物件圖(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-1 安裝與啟動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圖形
在專案新增模型後,就可以在指定模型新增UML
圖形,例如:在【邏輯觀點】模型加入UML類別
圖【選課系統】,如下圖所示:
3-5-4 SIM的使用介面說明
SIM使用介面是由功能表、工具列、標籤頁的編輯
視窗和各種功能視窗所組成,如下圖所示:
3-5-5 SIM塑模工具的基本操作
在這一節筆者準備簡單說明SIM塑模工具的基本操
作,包含基本設定、樣式編輯、輸出圖檔、產生
文件和UML註解與模版的編輯。
•
•
•
•
•
•
•
切換使用介面的語言
顯示格線與貼齊格線
樣式編輯
在UML符號加入註解
替UML符號元素新增模版
將UML圖形匯出成圖檔
產生報告或規格文件