利用 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 — 漫畫店租借系統的領域模型

文章導覽

   

共有 8 則迴響

  1. Kenming你好:

    以漫畫店租借系統為例,按照您文中的內容,我認知specific Item,他是「編號1943收銀機」(transaction-specific item),也是「城市獵人第一集」(item-specific item),也是漫畫(line item-specific item);請問我這樣的認知對嗎?

    • 「編號1943收銀機」應該比較像是「Place」。
      「城市獵人第一集」則像是「item」。
      「城市獵人第一集漫畫」才是「specific_item」(前提是該出租店的城市獵人第一集有兩本以上)。

  2. 克明兄

    首先謝謝您提供這麼豐富的資產在網路上供大家參考學習.個人在此學習到很多無限價值的觀念和看法.
    今天剛好看到此文,雖然po上去已經兩年了.裡面圖一,二,三…好像”多重性”寫反了?

    DU

  3. Hello SaGa:

    1. 以目前個人的認知,問題領域的核心本質源自於 “Domain Concepts”。以此為基本來建構軟體系統,彈性度會比較理想。

    2. 我曾經寫了一篇 “何謂交易” ,您可以以此為搜尋該篇文章參考我個人對交易的定義。

    3. 那是不一定的。 從現實的交易行為就可以瞭解到,是否需要 Sub-Transaction 以及 Sub Transaction-LineItem,不是絕對的必要。

  4. Kenming您好,在看了Transaction Pattern 之後
    有三個問題請教
    (1)何謂企業領域的核心本質?
    (2)交易(Transaction)如何定義?
    (3)SubsequentTransaction LineItem在在的價值?
    一定要存在嗎?
    謝謝.

發佈回覆給「Kenming Wang」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *