31
軟軟 Slide 1 軟軟軟軟軟軟軟軟

軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

  • View
    238

  • Download
    5

Embed Size (px)

Citation preview

Page 1: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 1

物件導向分析設計

Page 2: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 2

物件導向開發流程的三大原則 Architecture centric

• 穩固的 Architecture 才能支持隨時可能發生的變化 Iterative and Incremental

• 分析一點點、 Coding 一點點、測試一點點• 逐步完成、降低風險

Use case driven• 從最關鍵的 Use case 開始• 實現 I&I 的方法• 驗證架構

Page 3: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 3

點餐結帳系統 專題目標:

1. 加快結帳跟點餐速度2. 讓出餐更為快速正確。

專案內容 當接受到點餐的訊息以及資料,點餐系統將匯整

各桌的點餐內容發送到廚房以及結帳系統,讓廚房出餐,結帳系統也將於客人用餐完 畢後,列印出點餐明細以及金額。

Page 4: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 4

Use Case Diagram 將客戶需求轉換成客戶與開發人員的共

通文件• Use cases 描述系統功能需求• 找出系統的 Actors• 定義 Actors 與 Use cases 的關係• 定義系統的邊界• 定義 Use cases 間的關係• Actors 與系統的對話

Page 5: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 5

Use Case Diagram

點餐

結帳

維護員工資料

服務生

櫃檯人員

店長

帶位

維護菜單資料

上菜

Page 6: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 6

Use case description Use case: 帶位 Actor: 服務生 Description:

1. 服務生輸入人數2. 系統顯示所有可帶位桌號3. 服務生輸入帶位之桌號4. 系統顯示成功訊息

Exception: 如果客滿,詢問顧客是否願意等待,排隊候補

Page 7: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 7

Use case description Use case: 點餐 Actor: 服務生 Description:

1. 服務生輸入點餐桌號2. 系統顯示菜單及狀態3. 服務生輸入顧客點用之菜色4. 系統顯示請輸入服務生編號5. 服務生輸入服務生編號6. 系統顯示成功訊息

Exception:

Page 8: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 8

Use case description Use case: 上菜 Actor: 服務生 Description:

1. 服務生輸入菜色2. 系統顯示點用該菜色之桌號及上菜順序3. 服務生輸入桌號4. 系統顯示成功訊息

Exception:

Page 9: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 9

Use case description Use case: 結帳 Actor: 櫃檯人員 Description:

1. 櫃檯人員輸入桌號2. 系統顯示該桌點用菜色內容及金額3. 櫃檯人員輸入是否為會員4. 系統顯示應付款金額5. 櫃檯人員輸入付款方式6. 系統顯示成功訊息

Exception:

Page 10: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 10

Class Diagram 描述系統的靜態架構 描述系統中物件的各種型態 描述物件之間各式各樣的靜態關係,其中兩種

最主要的靜態關係,包含:• Association( 結合關係、關聯 )

• Generalization( 一般化關係 )

Page 11: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 11

Class Diagram 的三個觀點 概念性觀點

• 表現 Domain 的 Concept

• 和實作軟體無關 規格觀點

• 注重的是軟體的介面而不是實作 實作觀點

• 直接談論實作面

Page 12: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 12

Concept Class Diagram

服務生 櫃檯人員 店長

菜單

菜色 餐桌

帳單

員工

顧客

Page 13: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 13

Design Class Diagram – 菜色

Class name Attributes Methods Access Type Parameters

Food

-ID: int

-name: string

-price: int

+getID(): int

+getName(): string

+getPrice: int

+setID(int): void

+setName(string): void

+setPrice(int): void

Page 14: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 14

Design Class Diagram – 菜單

Menu

-foods: Food[]

+getFoods(): Food[]

+getFood(int): Food

+setFood(int, Food): void

+setFoods(Food[]): void

Page 15: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 15

Design Class Diagram – 餐桌

Table

-number: int

-arriveTime: time

-foods: Food[]

-status: int

+getNumber(): int

+getArriveTime(): time

+getFoods(): Food[]

+getStatus(): int

+setNumber(int): void

+setArriveTime(time): void

+setFoods(Food[]): void

+setStatus(int): void

Page 16: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 16

Design Class Diagram – 帳單

Bill

-ID: int

-tableNumber: int

-chechBillTime: time

-paymentType: int

+getNumber(): int

+getArriveTime(): time

+getFoods(): Food[]

+getStatus(): int

+setNumber(int): void

+setArriveTime(time): void

+setFoods(Food[]): void

+setStatus(int): void

Page 17: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 17

Sequence Diagram 系統倚賴的不是功能有限的個別物件,而是將

這些小物件的基本功能連結起來,構成一股龐大的力量。

連接系統功能與靜態架構 通常每個 Use case 會有一個 Sequence diagram 按時間先後次序發送的訊息 物件的概念

Page 18: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 18

物件和生命線 類別

物件

生命線

Table

t01 : Table : Table

: Table

已命名物件 未命名物件

物件和生命線

類別

Page 19: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 19

訊息 當某一物件需要協助時,便會發送訊息給另一

個物件 訊息的符號是一條帶箭頭的實線 訊息名稱及參數

: 信用卡

設定信用額度 ( 信用額度 )

:客服人員

查詢可用餘額 ()

Page 20: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 20

活動期 表現物件執行運算的期間 符號是長條狀的空心矩形

: 信用卡

設定信用額度 ( 信用額度 )

:客服人員

查詢可用餘額 ()

Page 21: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 21

Sequence Diagram – 帶位:Table :Time

findTable(int)

findTable(int) getStatus()

getTime()

setAttriveTime(int)

:Leading_UCO

selectTable(int)

:Table_DAO

findTable(int)

setStatus(int, time)setStatus(int)

1. 服務生輸入人數2. 系統顯示所有可帶位桌號3. 服務生輸入帶位之桌號4. 系統顯示成功訊息

Page 22: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 22

修正 Table Class Diagram

Table

-number: int

-arriveTime: time

-foods: Food[]

-status: int

+getNumber(): int

+getArriveTime(): time

+getFoods(): Food[]

+getStatus(): int

+setNumber(int): void

+setArriveTime(time): void

+setFoods(Food[]): void

+setStatus(int): void

+findTable(int): Table[]

Page 23: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 23

Sequence Diagram – 點餐

:Table :Menu

orderTable(int)

getStatus(int)

setFoods(Food[])

:Order_UCO

orderFoods(Food[])

:Table_DAO

getStatus(int)

setFoods(int, Food[])

getFoods()

:Food :Food_DAO

getName() getName()

setWaiter(int)

setWaiter(int)

setWaiter(int)

1. 服務生輸入點餐桌號2. 系統顯示菜單及狀態3. 服務生輸入顧客點用之菜色4. 系統顯示請輸入服務生編號5. 服務生輸入服務生編號6. 系統顯示成功訊息

Page 24: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 24

修正 Table Class DiagramTable

-number: int

-arriveTime: time

-foods: Food[]

-status: int

-waiter: int

+getNumber(): int

+getArriveTime(): time

+getFoods(): Food[]

+getStatus(): int

+setNumber(int): void

+setArriveTime(time): void

+setFoods(Food[]): void

+setStatus(int): void

+findTable(int): Table[]

+getWaiter(): int

+setWaiter(int): void

Page 25: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 25

Sequence Diagram – 上菜

:Table

serveFood(Food)

findTable(Food)

:ServeFood_UCO

selectTable(int)

:Table_DAO

findTable(Food)

1. 服務生輸入菜色2. 系統顯示點用該菜色 之桌號及上菜順序3. 服務生輸入桌號4. 系統顯示成功訊息

selectTable(int)selectTable(int)

Page 26: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 26

修正 Table Class DiagramTable

-number: int

-arriveTime: time

-foods: Food[]

-status: int

-waiter: int

+getNumber(): int

+getArriveTime(): time

+getFoods(): Food[]

+getStatus(): int

+setNumber(int): void

+setArriveTime(time): void

+setFoods(Food[]): void

+setStatus(int): void

+findTable(int): Table[]

+getWaiter(): int

+setWaiter(int): void

+findTable(Food): Table[]

+selectTable(int): void

Page 27: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 27

修正 Table Class DiagramTable-number: int

-arriveTime: time

-foods: Food[]

-status: int

-waiter: int

+getNumber(): int

+getArriveTime(): time

+getFoods(): Food[]

+getStatus(): int

+setNumber(int): void

+setArriveTime(time): void

+setFoods(Food[]): void

+setStatus(int): void

+findTableForIdle(int): Table[]

+getWaiter(): int

+setWaiter(int): void

+findTableForFood(Food): Table[]

+selectTableForServe(int): void

Table

-number: int

-arriveTime: time

-foods: Food[]

-status: int

-waiter: int

+getNumber(): int

+getArriveTime(): time

+getFoods(): Food[]

+getStatus(): int

+setNumber(int): void

+setArriveTime(time): void

+setFoods(Food[]): void

+setStatus(int): void

+findTable(int): Table[]

+getWaiter(): int

+setWaiter(int): void

+findTable(Food): Table[]

+selectTable(int): void

Page 28: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 28

Sequence Diagram – 結帳

:Table

checkBill(int)checkBill(int)

:CheckBill_UCO

isMember()

:Table_DAO

checkBill(Bool, int)

getFoods()

:Food:Food_DAO

getPrice(int)

payType(int)createBill(Bool, int, int)

1. 櫃檯人員輸入桌號2. 系統顯示該桌點用菜色內容及金額3. 櫃檯人員輸入是否為會員4. 系統顯示應付款金額5. 櫃檯人員輸入付款方式6. 系統顯示成功訊息

:Bill:Bill_DAO

getFoods()

getPrice()

createBill(Bool, int, int)

Page 29: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 29

修正 Table Class DiagramTable

-number: int

-arriveTime: time

-foods: Food[]

-status: int

-waiter: int

+getNumber(): int

+getArriveTime(): time

+getFoods(): Food[]

+getStatus(): int

+setNumber(int): void

+setArriveTime(time): void

+setFoods(Food[]): void

+setStatus(int): void

+findTable(int): Table[]

+getWaiter(): int

+setWaiter(int): void

+findTable(Food): Table[]

+selectTable(int): void

+chechkBill(int): int

Page 30: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 30

修正 Bill Class DiagramBill

-ID: int

-tableNumber: int

-chechBillTime: time

-paymentType: int

+getNumber(): int

+getArriveTime(): time

+getFoods(): Food[]

+getStatus(): int

+setNumber(int): void

+setArriveTime(time): void

+setFoods(Food[]): void

+setStatus(int): void

+checkBill(Bool, int): int

+createBill(Bool, int, int): void

Page 31: 軟體工程 Slide 1 物件導向分析設計. 軟體工程 Slide 2 物件導向開發流程的三大原則 l Architecture centric 穩固的 Architecture 才能支持隨時可能發生的變化

軟體工程 Slide 31

練習 每個人練習畫

• Use case Diagram

• Concept Class Diagram

• Design Class Diagram

• Sequential Diagram