利用 Transaction Pattern 快速捕捉問題領域內的概念物件

  1. 從需求文件找出物件(訪談記錄或使用案例敘述)
    • 人 – ex. 顧客、員工。
    • 地 – 可以想成是包含其它物件的容器(Container)。ex. 旅館、商店、銀行。
    • 事物
      具體(tangibility) – ex. 收銀機、產品項目(item)。
      抽象(abstraction) – 產品規格(product-specification)、資料庫的連線(connection)、訊息(message)。
    • 時 – 紀錄在某個時間點所發生的事件。ex. 訂購(order)、訂房(reservation)。
  2. 直接從企業領域的核心本質來建構領域物件模型 – 交易(Transaction)
    • 應用 Peter Coad 的 “Transaction Pattern” [Coad, Object Models, 1997]
    • 需與專精該問題領域的專家(Domain Expert)作密切地溝通,以更能深入瞭解該領域的交易核心本質,並將其轉化為軟體模型。

An overview of transaction patterns
圖1、An overview of transaction patterns

(縮略圖,點擊圖片鏈接看原圖)

Participant—Transaction
圖2、Participant—Transaction

Participant—Transaction 範例

  • 客戶—訂購(Customer—Order)
  • 客戶—銷售 (Customer—Sale)
  • 學生—註冊 (Student—Register)

Place—Transaction
圖3、Place—Transaction

Place—Transaction 範例

  • 商店—銷售 (Store—Sale)
  • 飯店—訂房 (Hotel—Reservation)

Transaction—Transaction LineItem
圖4、Transaction—Transaction LineItem

Transaction—Transaction LineItem 範例

  • 銷售-銷售細項 (Sale-Sale LineItem)
  • 訂購-訂購明細 (Order-Order LineItem)
  • 出貨-出貨明細(Shipment-Shipment LineItem)

Transaction—SubsequentTransaction
圖5、Transaction—SubsequentTransaction

Transaction—SubsequentTransaction 範例

  • 購物-付款 (Shopping-Payment) 購物交易可以分期付款。
  • 訂購-出貨 (Order-Shipment) 一個訂購交易可以分次來出貨。

SpecificItem—Transaction
圖6、SpecificItem—Transaction

SpecificItem—Transaction 範例

  • 具體特定的收銀機—銷售 (Specific-Register—Sale)
  • 具體特定的銀行—存款 (Specific-Bank—Deposit)

SpecificItem—LineItem Pattern
圖7、SpecificItem—LineItem Pattern

SpecificItem—LineItem Pattern 範例

  • 錄影帶—出租細項 (VideoTape—Rental LineItem)
  • 具體特定的產品—訂購細項 (Specific-Product—Order LineItem)

Item—LineItem Pattern
圖8、Item—LineItem Pattern

Item—LineItem Pattern 範例

  • 項目—交易細項 (Item—LineItem)
  • 項目—出貨細項 (Item—Shipment LieItem)

Item—SpecificItem Pattern
圖9、Item—SpecificItem Pattern

Item—SpecificItem Pattern 範例

  • 產品規格—產品 (Product-Specification—Product)
  • 影片型錄—錄影帶 (Video-Description—Videotape)

套用 Transaction Pattern — 漫畫店租借系統的領域模型
圖10、套用 Transaction Pattern — 漫畫店租借系統的領域模型