第二章 文獻回顧
2.3 物件導向分析與設計方法
物件導向(Object-Oriented, OO)方法是以物件(Object)為中心,結合了資料 結構及行為的離散物(Discrete object),作為其組成的元件,而物件與物件間則透 過訊息的交換傳遞,相互影響其行為,以共同完成某項目的。所強調的是物件 及系統的可再利用、可擴充性及易於維護等特性[15]。一般來說,使用物件導向 方法有以下之優點:
decomposition)觀念,每個企業物件可直接對應到軟體物件,讓使用者能容易瞭 解軟體的特性,也易於偵錯改正,使調整或抽換之彈性大幅提昇。
物件導向的觀念,傳統上常運用於物件導向程式設計、使用者介面等技術 層次上,其觀念也延伸到系統的分析、設計方面,使系統發展方法能全面採用 物件導向觀念,提高無縫性,以提升系統品質[16]。而著名物件導向方法論介紹 如表2-4 所示:
表2-4 物件導向方法論
方法 概述
Booch Method 以類別圖、物件圖、模組圖及程序圖來分析系統的靜態面,以 狀態轉移圖及時序圖來表現系統的動態面。
OOSE
以使用案例及外部行為者間互動關係來表達系統的需求,並分 別以介面、實體、控制三大類別來描述系統,其發展程序包括 分析、構建及測試等階段。
OMT 以三個模型來描述系統,分別是物件模型、動態模型及功能模 型,主要的進行程序為分析、系統設計、物件設計及實作。
UML 為整合Booch 與 OMT 方法,透過各種圖示,從結構及行為等 角度來表現系統的靜態及動態的作業流程
Booch Method
布希(Booch)的物件導向方法論在 1986 年提出,以四種模型及六種圖是 來表示系統的動態及靜態行為,依照邏輯的程序,做一完善的系統設計。
此外,布希(Booch)的方法論還提供(1)多模式化工具,具有完整的文 件。(2)各種活動的產出和機制。(3)發展步驟明確,且無間隙性。等優點,
但其缺點是圖示工具較為複雜。
OOSE
物件導向軟體工程(Object-Oriented software Engineering, OOSE)是由 Ivar Jacobson 所提出,將整個流程於以模式化,採取「使用個案(User-Case)」來記錄 使用者對系統的需求,並分別以介面、實體、控制三大類別來描述系統。
OMT
物件模式技術OMT(Object Modeling Technique)針對系統所要處理的資料、
軟體時,所採用的演算方法或程序,以及系統與外界相關環境的互動關係,提 供了物件模型、動態模型和功能模型,分別以三種不同的角度分析系統,執行 程序如圖2-4 所示。
產 生 需 求
結 構 及 物 件 設 計 建 立 模 型 使 用 者
知 識 領 域 專 家 管 理 者 發 展 者
使 用 者 訪 談
發 展 者 管 理 者 經 驗 知 識 領 域 專 家
設 計 師
網 路 工 程 師 資 料 庫 管 理 師
系 統 設 計 師
問 題 描 述
物 件 模 型 、 動 態 模 型 、 功 能 模 型
詳 細 的 物 件 模 型 詳 細 的 動 態 模 型 詳 細 的 功 能 模 型
分 析 階 段
設 計 階 段
圖2-4 OMT 系統分析與設計程序圖
首先,由使用者、管理者、領域專家、開發者不斷的對問題進行描述並不 斷的更新,直到符和系統真實的需求為止。再來,則把問題的描述建立成靜態 的物件模式,表現物件交互作用的動態模式,與表示物件內資料轉換的功能模 式。最後,藉由分析而得到的類別、屬性及關連,轉換成電腦領域的資料結構。
圖2-5 UML 的五大觀點
表2-5 UML 五大觀點功能
觀點 功能
使用個案觀點 描述系統功能性需求,找出使用個案與 行動者。
邏輯觀點 描述系統內部功能性作業的細部設計,
包過靜態結構和動態行為。
實作觀點 描述系統如何切分成軟體元件,進行實
作。
處理觀點 描述系統各組成部分整體運作的程序。
配置觀點 描述系統硬體或設備間的連結關係,及
軟體程序的配置情形。
除五大觀點外,UML 還提供了九種圖形來描述使用者與系統間靜態與動態的作 業行為,圖形歸類如圖2-6 所示,圖形之功能描述於表 2-6 所示。
循 序 圖
模 式
合 作 圖
使 用 案 例 圖 類 別 圖 物 件 圖
靜 態 觀 點 動 態 觀 點
表2-6 UML 的圖形功能
名稱 功能
Use Case diagram 敘述一個系統的功能, 以及此系統的使用者(不一定指人).
Class diagram 描述一個系統的靜態結構, 或是如何建立此結構,而非他的 行為.
Object diagram 描述某一特定時刻系統的靜態結構, class diagram 描述的 是所有可能情況, object diagram 描述的是一個特定情況.
State diagram 敘述一個類別的狀態(state)與回應(response), 它描述一個 類別對於外來刺激的反應.
Sequence diagram
敘述物件之間的互動關係, 這些關係被模組化為 message 的交換, 這些圖所關住的焦點在 class 及它們所交換的 message, 藉以達成某些預期行為.
Collaboration diagram
敘述class 與結合關係之間的互相作用, 這些互相作用被模 組化成類別之間的訊息交換, 而訊息的交換是藉由類別之 間的結合關係來進行.
Activity diagram
敘述一個 class 的活動, 這些圖型類似 state diagram, 而且 也使用相似的慣例, 但 activity diagram 所描述的是一個 class 回應內部處理的行為, state diagram 則是描述回應外 部事件的行為.
Component diagram
敘述軟體實作 component 的組織結構及其相依關係, 這些 圖型包括 component, component 表示可拆散的實體單位, 包含 source code, object code, 及可執行程式碼.
Deployment diagram
敘述處理資源元素的組態(configuration), 以及軟體實作 component 的對應方式, 這些圖型包含了 component 與 node, node 表示一種處理或計算的資源(resource), 包括電 腦, 印表機等