善用物件圖(Object Diagram)來協助走查領域模型,這樣對於具體了解領域模型是非常有幫助的。物件圖像是系統的快照,它可以呈現系統在某一個時刻下、或者某一種特定情境下,系統內部會有那些重要物件、屬性的數值為何、以及那些物件之間的連結情況。所以,在打算繪製物件圖時,最好可以先想好情境,這樣就可以一邊套用情境,一邊透過物件圖來走查領域模型的支援狀況了。以下就以幾個情境為為例,來示範如何用物件圖走查領域模型。

情境1:申購單筆基金
以申購單筆基金的情境1為例,如圖1,我們繪製了如圖2的物件圖。牛刀小試一下,沒什麼問題。但是,當我們要往下增加情境內容並與系統分析師討論的過程中,系統分析師提到了為何系統不能在當下,就算出購買到的正確基金單位數。

那是因為,銀行不會在當下就跟基金公司購買基金,而是在營業時間結束後,彙整所有銀行客戶的下單情況,才跟基金公司一次申購回來,然後依照客戶申購金額分配購回的基金單位數。而基金公司會以申購當日收盤後的基金淨值為基準,計算銀行申購到的基金單位數,回覆給基金系統。

從系統分析師上述的說明中,可以整理出下列幾個重點:
1. 在申購單筆基金的當下,銀行會先向客戶扣款,產生信託帳號。但是,此時還不知道客戶可以購得多少基金單位數。

2. 銀行在營業時間結束以後,才會彙整當日所有申購該檔基金的客戶的總申購金額,向基金公司購買該檔基金。

3. 基金公司收到銀行的申購之後,會依照當日收盤淨值回覆給銀行確實申購到的基金單位數。

4. 銀行收到確定的基金單位數後,會依照客戶的申購金額分配基金單位數。

5. 當客戶收到銀行分配下來的基金單位數後,才算是真的買到了基金。

接下來,我們就一邊修訂,一邊說明了。首先,看到申購單筆基金的主要流程,關於基金單位數的計算及紀錄,會是有問題的。因為在申購單筆基金使用案例的執行過程中,其實無法正確計算出基金單位數。所以,應該要刪除計算基金單位數,而且也無法紀錄基金單位數,如圖3圖4

由於,銀行在營業時間結束後,才會彙整當日所有申購該檔基金的客戶的總申購金額,向基金公司購買該檔基金。所以,在系統分析師跟客戶/使用者確認過後,新增了兩個使用案例,分別為:自動彙整基金交易和自動申購基金,以及一個名為「基金公司伺服器」的次要參與者,如圖5所示。

基金公司收到銀行的申購之後,會依照當日收盤淨值回覆給銀行確實申購到的基金單位數。所以,基金系統需要提供一個使用案例給基金公司,讓基金公司的伺服器可以直接連線基金系統,以便更新基金申購結果,如圖6所示。

情境2:更新基金申購結果

針對情境2,如圖7,銀行收到確定的基金單位數後,會依照客戶的申購金額分配基金單位數。接著,我們繼續繪製了圖8的物件圖。

還記得一個投資組合底下,應該可以有多個交易明細,如圖9所示。可是,前面我們舉的情境怎麼都只看到一個交易明細,到底何時才會跑出第二個交易明細呢?

這是因為基金要先申購(買入),才可能發生贖回(賣出)的交易。所以,如果想要看到第二個交易明細的話,就要模擬贖回基金的情境了。雖然,到目前為止,我們都沒看過贖回基金的使用案例,不過無妨,我們還是可以舉個簡單的更新贖回基金結果的情境。

情境3:更新基金贖回結果
針對情境3,如圖10,銀行收到確定贖回金額後,會依照客戶的贖回單位數匯入贖回金額到客戶的綜合存款帳戶,如圖11所示。

試跑了更新基金贖回結果的情境後,才發現之前的領域模型似乎沒有考慮太多贖回的細節,所以屬性名稱上都無法重用,所以我們先微調了四處,如下:

1. 扣款帳號改成綜存帳號。申購基金時,綜存帳號就是扣款帳號;贖回基金時,綜存帳號就是轉存帳號。

2. 投資金額改成交易金額。申購基金時,交易金額就是申購金額;贖回基金時,交易金額就是贖回金額。

3. 刪去扣款金額,因為扣款金額=交易金額(申購金額)+手續費,可以推算出來,所以刪去也無妨。

4. 新增一個交易類型,用來記錄這個交易明細是申購交易還是贖回交易。

請你看到圖12的微調,把這個微調反映到物件圖後,變成圖13的模樣了。

此外,由於基金單位數會變動,所以如果想要知道目前的持有總單位數的話,就得遍巡投資組合底下的所有交易明細,然後加減基金單位數才能得到,實在有點辛苦。所以,我們就為投資組合新增了一個名為「持有總單位數」的屬性,來記錄目前持有的總單位數。

請你看到圖14圖15,連同前面提到的修改扣款帳號為綜存帳號,與此處新增一個持有總單位數屬性,兩處一併修改。

對了,別忘了還要走查一下使用案例敘述,同步修訂一下。最後,還要記得把領域模型和功能架構圖都更新一下吧。

補上領域敘述
使用案例模型包含使用案例圖和使用案例敘述,領域模型也包含領域圖(類別圖)和領域敘述。在走查領域模型時,也需要一併走查領域敘述,隨時補上疏漏之處。

領域敘述主要透過文字記錄類別、屬性、結合、限制的定義或解釋,至於在操作處則記錄了相關的計算公式、查驗規則或重要的業務動作。

類別:客戶
前面我們都沒示範過領域敘述的寫法,這邊就一邊示範一邊走查了。此處,我們就從最簡單的客戶類別開始示範吧!請你先看到圖16,我們把客戶以及與客戶有結合關係的投資組合先擷取出來,除了描述客戶類別外,別忘了還要描述靠近投資組合的結合端點,如下圖17

另外,查驗網路交易資格時,直接回覆客戶的網路交易資格屬性值,那就用不到身分證字號這個輸入參數了,所以也可以刪掉。

 

專欄作者

熱門新聞

Advertisement