演講人 : 郭義境 服務單位 : 傑策科技 / 技術研發 協理

Slides:



Advertisements
Similar presentations
系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
Advertisements

<<會計資訊系統課程講義>> 統一塑模語言(UML)語法精要 -- 物件導向概念、需求分析及系統分析
軟體工程 -物件導向程式設計與UML系統分析實作
Ch02物件導向程式設計 物件導向系統分析與設計.
第一章 系統開發概論 1-1 系統開發概論 1-2 常見的資訊系統 1-3 系統開發生命週期 1-4 系統開發方法論簡介.
第八章 信息系统开发概述.
第二章 UML簡介 課前指引 本章介紹什麼是UML以及利用圖形來塑模資訊系統的好處在哪裡。文中也介紹了何謂「4+1的觀點」、以及簡述各項UML圖形的使用目的。並且,我們從靜態以及動態這兩個觀點來分類、介紹各圖形的使用時機。
欢迎各位 Nice to Meet U.
第六讲 面向对象分析(6学时) 了解面向对象分析的概念 了解面向对象分析的发展 理解面向对象的基本概念 理解面向对象分析的过程、内容
第10章 考试系统的分析与设计 1.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
第一章 軟體工程 (Software Engineering Introduction)
第9章 面向对象方法学引论 9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型
第八章 分析與設計階段 – 物件導向設計(OOD)
Topics 應用架構 學習路徑 熱門議題 相關認證.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
第一章 軟體工程概論.
Java簡介.
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
軟體工程 -物件導向程式設計與UML系統分析實作
第10章 使用個案塑模.
物件導向系統分析與設計與UML.
單元3:軟體設計 3-2 順序圖(Sequence Diagrams)
Working with Databases (II) 靜宜大學資管系 楊子青
软件建模精要 面向对象软件建模技术.
JUDE教學 Jude安裝教學篇 Jude初步介紹篇 Jude繪圖介紹篇 介紹jude的安裝和下戴 介紹jude的初基本功能
類別(class) 類別class與物件object.
無線射頻識別系統(RFID) 基本原理及發展與應用
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
第4章 物件導向分析與設計簡介 4-1 物件導向的軟體系統開發 4-2 物件導向分析與設計 4-3 UML的物件導向分析與設計
软件建模与UML.
安裝JDK 安裝Eclipse Eclipse 中文化
OpenID與WordPress使用說明
UML类设计工具 任课老师:黄武 上午2时50分 10.
UML介绍.
OSGi (Open Service Gateway Initiative)
Java 程式設計 講師:FrankLin.
UML Unified Modeling Language
面向对象的分析与设计 教学计划 研究生课程 主讲教师:邵维忠 助教: 朱彬,柳毅,尤朝,张磊,黄艺燕 2009年2月—7月
FTP檔案上傳下載 實務與運用.
軟體工程:如何開發軟體? 把它看成是一件工程。 那麼就會有一些工具、技術、方法,也有管理的議題。
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
两种不同类别的软件: 功能预定义软件;用户驱动的软件。他们对软件工程方法有不同的需求
第11章 系统结构与包模型模型.
Topic Introduction—RMI
VS.NET 2003 IDE.
UML语言.
学习导航 学习导航.
人文與科技的結合 人文與科技的結合 Right Fax使用說明.
第13章 設計模型 13-1 再談物件導向設計 13-2 建立互動圖 13-3 建立狀態機圖 13-4 設計模型的類別圖
第二章 資訊系統開發模式.
課程報告 使用開放原始碼工具實作軟體產品線方法
其他 ER 相關觀念 以及OO模型 國立中央大學 資訊管理系 范錚強 2002 中央大學。范錚強.
Google協作平台+檔案分享(FileZilla+網路芳鄰)
SAP 架構及前端軟體安裝 Logical View of the SAP System SAP Frontend 7.1安裝與登入
第6章 面向对象开发的 分析与设计.
電腦概論考題分析 佛學資訊組 碩一 張榮顯.
IEEM 5352 Enterprise Integration
Dreamweaver 進階網頁製作 B 許天彰.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
電子化企業整合 E-Enterprise Integration 張捷中 (Acer) 2014/10/02
UML ISKM Lab.
OOA/OOD UML RUP Architecture Pattern MDA
面向对象建模 对象(object) 对象具有的含义: 现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。 在现实世界中:
Chapter 4 Multi-Threads (多執行緒).
營運模式.
Presentation transcript:

演講人 : 郭義境 服務單位 : 傑策科技 / 技術研發 協理 E-Mail : jimmy@hitto.com.tw OOAD & UML 淺談  演講人 : 郭義境 服務單位 : 傑策科技 / 技術研發 協理 E-Mail : jimmy@hitto.com.tw

Outline 1.程序導向vs.物件導向 2.UML 簡介 3.UML Diagrams 4.Design Pattern 6.實務經驗分享

第一章.程序導向vs.物件導向 程序導向(Process Oriented) 物件導向(Object Oriented) 物件導向的概念 OO設計實例 系統發展方法論說明 系統開發程序 傳統系統發展方法與物件導向發展方法的比較

程序導向(Process Oriented) 把焦點放在程式的程序(處理步驟) 變更程序時所配合的資料必需跟著修改 程序A 程序B 程序D 程序C 資料A 資料B 資料C DFD的範例 部門A 部門B Source : Technologic Arts Inc., “UML參考辭典”

物件導向(Object Oriented) 是一種思維、思考方式 資料(屬性) 平面映像管、天線、顏色 程序(操作) 開機、切換頻道、關機

物件導向的概念 封裝(Encapsulation)訊息(Message) 抽象化(Abstraction)類別(Class) 實體(Instance)物件(Object) 繼承(Inheritance) 多型(Polymorphism) 動態繫結(Dynamic Binding)

OO設計實例(1/3) 西遊記的電腦遊戲 角色 - 唐三藏、孫悟空、豬八戒、妖怪 事件 - 過河、遇到妖怪 Source : 吳明皓, “物件導向實例 – 是定理還是方法”, 2002.8.22

OO設計實例(2/3) 傳統程序導向的系統切割 西遊記主程式 過河 三藏師徒遇到妖怪 妖怪遇到三藏師徒 如果唐三藏過河則划船 如果孫悟空過河則用飛的 如果豬八戒過河則用游的 三藏師徒遇到妖怪 如果唐三藏遇到妖怪則念經 如果孫悟空遇到妖怪則斬妖 如果豬八戒遇到妖怪則大喊救命 妖怪遇到三藏師徒 如果是唐三藏則吃掉 如果是孫悟空則逃跑 如果是豬八戒則戲弄他 Source : 吳明皓, “物件導向實例 – 是定理還是方法”, 2002.8.22

OO設計實例(3/3) 物件導向的系統切割 系統主程式 唐三藏 孫悟空 豬八戒 妖怪 過河則划船 遇到妖怪則念經 過河則飛 遇到妖怪則斬妖 過河則游 遇到妖怪則呼救 妖怪 遇到唐三藏則吃 遇到孫悟空則跑 遇到豬八戒則戲弄 Source : 吳明皓, “物件導向實例 – 是定理還是方法”, 2002.8.22

系統發展方法論說明 系統發展之方法論中包含了程序(Process) 及表示法(Notation)兩個部份,其中: 程序指的是系統開發的流程,例:瀑布模式、漸增模式、擴展模式、雛型模式、螺旋模式等。 表示法指的是建構軟體模型中所會用到之符號及規則。例:UML、DFD 、 ER Model Source : 郭惠民, “淺談UML”

系統開發程序(1/2) 瀑布式(waterfall)開發程序 由上而下(Top-Down) 上一階段結束後,下一階段才會進行 愈到後面的階段,改變的成本愈高 初學者比較容易理解 適合順序性,變動小的專案 需求 分析 設計 實作 測試 建置

系統開發程序(2/2) 往覆(Iterative)與漸增式(Incrementally)開發程序 系統切割成許多 部分 初學者不易理解 如何切割 可提早發現風險 適合變動大的專 案 需求 分析 設計 實作 測試 建置

傳統系統發展方法與物件導向發展方法的比較 區分 傳統的開發 Traditional development 物件導向的開發 Object-Oriented Development 方法 Method 程序導向 Procedure-Oriented 物件導向 Object-Oriented 分解基礎 Decomposition based on 演算法 Algorithm 類別 Class 生命週期 Life Cycle 由上而下 Top-Down 往覆與漸增 Iterative and Incrementally 開發系統的可維護性 Maintainability of Developed System 困難 容易 可再使用性 Reusability 低 高 失敗與風險 Failure and Risk

第二章.UML 簡介 為什麼需要Modeling? 什麼是UML? UML與OO的關係 UML的歷史 使用UML的好處

為什麼需要Modeling? vs. 簡單 / 功能少 / 單人 複雜 / 功能多 / 多人

什麼是UML? UML就是Unified Modeling Language UML是用來製作模型的工具 草稿 藍圖 程式語言 正向工程 反向工程

UML與OO的關係 UML之訂定與物件導向方法有非常密切之關係。 UML中的各種符號及規則與物件導向語言(Java,C++、C#)之結構有完整對應。 UML不僅限用在物件導向軟體開發,UML中有些概念與圖形甚至可說是與物件導向無關,例:Use Case Diagram及State Chart Diagram 軟體開發時無論是否採用物件導向方法,UML都是適用的。 Source : 郭惠民, “淺談UML”

UML的歷史(1/2) Grady Booch、Ivar Jacobson 與Jim Rumbaugh 三位OO大師整合了以OO為基礎的模式語言創造 出了UML Grady Booch Ivar Jacobson Jim Rumbaugh Booch方法論 OMT方法論 OOSE方法論

UML的歷史(2/2) UML的版本演進

使用UML的好處 它是一個標準(Standard) UML支援完整的軟體發展生命週期(Life Cycle) UML支援各種不同型態的系統 UML結合MDA (Model-Driven Architecture)可成為一種程式語言的開發架構

第三章.UML Diagrams UML與開發程序(Process)的關係 UML的觀點(View) UML Diagrams 的種類

UML Diagrams - Process Business Model Requirement Model User Experience Model look-Feel & Interaction Analysis Model Design Model Architecture design Data Model Implementation Model Test Model Deployment Model Requirement analysis System analysis System Design Implementation Testing Deployment

UML Diagrams - View Process View Deployment View Logical View Implementation View Programmers Software management Performance Scalability Throughput System Integrators System topology Delivery, installation communication System Engineering Use-Case View Structure Analysts/ Designers End-user Functionality

UML Diagrams 的種類 UML 13 種 Diagrams (UML 2.0版) { Diagrams } { Behavior } (動態 / 行為) Use Case Diagram(使用案例圖) Activity Diagram(活動圖) State Machine Diagram(狀態機圖) { Structural } (靜態 / 結構) Class Diagram (類別圖) Component Diagram(元件圖) Composite Structure Diagram (組合結構圖) Object Diagram(物件圖) Package Diagram(套件圖) Deployment Diagram(部署圖) { Interaction } (交互) Sequence Diagram (循序圖) Timing Diagram (時序圖) Communication Diagram (通訊圖) Interaction Overview Diagram (互動概圖)

Use Case Diagrams (1/3) 使用案例圖 (需求、分析階段) 表達企業內部流程與外部流程與單位彼此之間的關係 表達系統所提供的功能與外部要素(使用者或外部系統)之間的關係 需配合使用案例內容敘述

Use Case Diagrams (2/3) 總統大選網路投開票系統 手機簡訊投票 選民 1.投票作業 戶政系統 Actor 確認身份 <<extend>> <<Actor>> 選民 <<include>> 1.投票作業 戶政系統 Actor 確認身份 2.開票作業 Use Case 選務人員 系統邊界

(main success scenario) 使用案例敘述:進行遊戲 (義境) Use Case Diagrams (3/3) 使用案例內容敘述範例 使用案例名稱 1.投票作業 行為者(Actor) 選民 : 指合於投票資格的中華民國國民 選務人員 : 從事選舉事務相關工作的人 戶政系統 : 全國戶政資訊管理系統 簡述 選民透過網路投票作業功能來投票 主要成功情節 (main success scenario) 1.1 登入 : 選民登入投票系統 1.2 檢核 : 系統檢核該選民是否身份符合 1.3 領票 : 選民確認領票 1.4 圈票 : 選民圈選候選人 1.5 登出 : 投票完成登出系統 擴充情節(extension) 1.1a 如果選民沒有網路可登入投票系統,則可 透過手機簡訊投票 事先條件(pre-condition) 事後保證(guarantee) 觸發事件(trigger)

Activity Diagram (1/2) 活動圖 (需求、分析階段) 表達、掌握業務的流程步驟(了解流程、流程再造) 表達、掌握活動處理的順序 可代替「事務流程圖」

Activity Diagram (2/2) [沒咖啡] [沒可樂] 找飲料 [找到咖啡] [找到可樂] 拿可樂罐 放咖啡到濾杯 加水到咖啡機 拿杯子 拿濾杯到機器 開機器煮咖啡 咖啡煮好 倒咖啡 喝飲料

Class Diagram (1/3) 類別圖(分析、設計、實作階段) 表達、掌握系統的靜態結構 以類別為單位 商品 類別名稱 商品編號 : String - 商品名稱 : String # 單價:int 賣點 [ 0..* ordered ] ~ 開始販賣日期:Date=登錄日期 + 登錄商品資訊 (商品資訊) # 取得商品資訊():商品資訊 類別名稱 可見度 屬性1: 型別=初始値 可見度 屬性2: [多重度] 可見度 操作 (參數:型別=預設值):傳回値型別

Class Diagram (2/3) 可見度(對其他類別的公開程度) + 公開的(public) - 私有的(private) # 保護的(protected) ~ 套件(package) 套件 類別1 類別2 類別3

Class Diagram (3/3) 系統畫面(UI) +接受訂購資訊(訂購資訊) +登錄訂購資訊() +取消訂單() 訂單資訊 訂單 -訂單編號 -訂單日期 +登錄訂單資訊(訂購資訊) -取得訂購日期():訂購日期 -訂購數量 -折扣 1 1..* +登錄訂單詳細資訊(詳細資訊) 0..* 0..* 1 1 商品 倉庫 客戶 -商品編號 -商品名稱 -單價 0..* 存放 1..* -倉庫名稱 -地址 -電話號碼 -客戶編號 -客戶姓名 -地址 -電話號碼 庫存 會員 -會員編號 -庫存量

Sequence Diagram (1/2) 順序圖(分析、設計、實作階段) 以時間順序表達、掌握物件之間的動態關係 以時間順序表達、掌握物件之間的訊息關係

Sequence Diagram (2/2) :訂單受理畫面 :商品 :庫存 :訂單 :訂單明細 訂單受理人員 查詢庫存狀況( ) 取得庫存狀況( ) 查詢商品價格( ) 取得庫存狀況( ) 要打折:取得折扣價格() 不打折:取得訂價() 庫存狀況 庫存狀況 輸入訂單資訊(訂單資訊) 顯示庫存狀況(庫存狀況) 登錄訂單( ) 輸入訂單資訊(訂單資訊) :訂單 :訂單明細 輸入訂單資訊(訂單明細) Source : Technologic Arts Inc., “UML參考辭典”

Interaction overview diagram(1/2) 互動概圖(分析、設計階段) 活動圖(activity diagram)與循序圖(sequence diagram)的混合 用於畫出使用案例(use case)中不同情節的邏輯路徑

Interaction overview diagram(2/2) sd 販賣 :訂購畫面 :訂單 登錄訂單 sd 接受訂單 ref 出貨 ref 結算

Communication Diagram(1/2) 通訊圖(分析、設計階段) UML 2.0以前稱為合作圖 將焦點放在物件的關係,表達、掌握物件間尋的傳遞

Communication Diagram(2/2) 4:登錄訂單 5:顯示登錄資訊 登錄資訊 :訂單管理 :訂單輸入畫面 1:輸入訂單資訊 2:登錄訂單資訊 3:建立訂單 訂單A:訂單 Source : Technologic Arts Inc., “UML參考辭典”

State Machine Diagram 狀態機圖(設計、實作階段) 表達狀態之間的轉移 門打開/關閉 , 門鎖開鎖/鎖上 關閉 開鎖 門打開/關閉 , 門鎖開鎖/鎖上 沒上鎖 上鎖 關閉 開啟 開鎖 鎖上 打開 Source : Technologic Arts Inc., “UML參考辭典”

Package diagram 包裹圖(實作階段) 表達、掌握模型元素的群組

Object Diagram 物件圖(實作、測試階段) 表現、掌握物件在某個情境的靜態模型 A先生的訂單:訂單 錄影機的訂單明細:訂單明細 錄影機:商品 訂單編號 = 001 訂單日期 = 2005/6/1 訂購數量 = 2台 折扣=10% 產品編號 = 016 商品名稱 = PIPEER 單價=5430 冰箱的訂單明細:訂單明細 冰箱:商品 A先生:客戶 訂購數量 = 1台 折扣=30% 產品編號 = 023 商品名稱 = LGG 單價=33600 客戶編號 = 068 客戶名稱 = A先生 地址 = 台中縣沙鹿鎮 電話號碼=03-1234-5678

Component Diagram 元件圖(測試、部署階段) 用來表達軟體內部的物理架構 構成軟體的基礎物理架構,元件可以是程式原始檔、執行檔、程式庫檔案、甚至是圖片等資源檔案。

Composite Structure Diagram 組合結構圖(實作階段) 可秀出某個類別或是元件在執行時期可能包含的實例與連結器 筆記型電腦 零件 連接器 :螢幕 文字輸入 :硬碟 :CPU :鍵盤 :電池 port

Deployment Diagram SQL Server Server SMTP Server Client Mail Server Browser LAN WAN Application server SQL Server LAN LAN Server SMTP Server WAN Client Mail Server 部署圖(部署階段) 用來表示系統的物理架 構,用於需要考慮執行 環境的實作階段。 可以表示出系統的硬 體架構與硬體內部佈 署的軟體架構。

Timing Diagram 時序圖 展現物件狀態與時間變化的方式 幫浦 Off On Off 加熱板 Off On Off {>10s} 咖啡機的範例 Source : Martin Fowler, “UML distilled Third Edition”

第四章.Design Pattern 什麼是Design Pattern ? 為什麼要使用Design Pattern ?

什麼是Design Pattern? Pattern 最簡單的定義 Pattern 就是一種「千錘百鍊」的智慧結晶 Ex. 第四台賣東西、選舉、動作片、愛情片、 色情片、恐怖片 Pattern 就是一種「千錘百鍊」的智慧結晶 Pattern 是某外在背景環境(Context)之 下﹐對特定問題(Problem)的慣用解決之道(Solution)

為什麼要使用Design Pattern ? 於OOD(設計階段)使用的Pattern 使系統更有彈性,而易於應付外在的變動 減少系統出錯的機會 學習結構化設計的方法 注意 : Design Pattern 並不是萬靈丹

Design Pattern 範例 Façade Design Pattern Facade client client client Subsystem

第五章.UML在資料庫設計上的應用 ER-MODEL和UML的比較 物件導向資料庫的特性

ER-MODEL和UML的比較(1/3) 實體集合與屬性 ER-MODEL UML – Class Diagram

ER-MODEL和UML的比較(2/3) 關係 基數條件限制 UML – Class Diagram ER-MODEL

ER-MODEL和的UML比較(3/3) 一般化與特殊化 UML – Class Diagram ER-MODEL

物件導向資料庫的特性 可自訂資料型態、函數以及運算(操作) 可將資料與運算結合 具有組合、繼承、複合的特性 以OID (Object ID)代替主鍵與外鍵

第六章.實務經驗分享 給專案經理的話 給系統分析師的話 給程式設計師的話

給專案經理的話 找到正確的KEY MAN決定專案的成敗 要有勇氣堅持自己的預估 測試的時間超過寫程式的時間 大型軟體專案需要有共通的規範和準則 3個人4個月的工作絕不等於12個人1個月的工作 監控進度

給系統分析師的話 客戶的需求永遠在變 與程式設計師培養良好的默契 不要寫天書 了解開發工具和語言的特性

給程式設計師的話 不要為了OO而OO 程式功能剛好夠用就好 程式不要害怕 Refactor 學習產業Know-how 學習與人溝通的技巧 測試永遠不嫌多

課程完畢 謝謝各位!!