從使用案例圖中,可以明確地定義出系統的設計範圍—系統需提供哪些服務(每一個功能點服務即為使用案例)、誰會來使用系統、系統是否需要其它系統的支援。這對開發團隊的每一個成員,能具有整體性的共識,是相當有助益的。 再來就是決定優先開發的使用案例,通常那是對系統的利益關係人(stakeholder)而言,最有價值的,優先開發! 屬於企業服務層級的系統,屬於商業交易型的使用案例,通常是最具有價值的。 以「博X來訂購系統」為例,《訂購商品》與 《結帳商品》兩個使用案例,會是該系統最有價值的需求服務,參考如下圖1。
圖 1、找出價值最高的使用案例優先開發
對於需求分析師(requirement analyst,RA)而言,為每一個使用案例來寫出使用案例的需求陳述(use case description)才是最重要的。 使用案例敘述要能寫得好的訣竅就在於,只專注描述參與者(actor)與系統的互動對話;也可以這麼說,當參與者(一般為使用者)在使用系統上線的期間(session),RA 要能觀察出參與者與系統會有幾次的訊息傳遞(message passing),然後將之寫成具散文格式的動作步驟,到完成最後一個步驟時,系統即能滿足參與者使用系統的目的。
下表是針對上圖1 的每一個橢圓型使用案例來寫作使用案例敘述。 使用案例敘述的格式並沒有標準,不過最主要的欄位是必然會有一個表達正常情節(scenario)的事件流程(flow of events),以及一到多個表達例外(exception)或擴展(extend)情節的處理陳述。
看起來好像有許多個使用案例敘述? 其實不然,這就是圖形的迷思,雖然 UML 規格是定義被《include》或《extend》的每一個橢圓也算是一個使用案例,不過當從參與者的角度來看時,上圖1非常明顯,只有兩個目的:《訂購商品》與《結帳商品》,所以其實 RA 只要寫出兩個完成的需求案例敘述即可。若是堅持要遵守從圖形中為每一個橢圓來寫需求敘述,如此可能會太分散而造成沒有一致性閱讀的感覺,不過這到不是絕對的,每一個團隊可以找出適合自己風格的寫作方式。 在此例我是以後者的方式來寫作的,原因是在於可以利用 UML 工具的文件產出(document generazation)功能來快速整理出符合客戶或公司所需的需求規格報表(requirement specification report)。
還有一點要留意的是,使用案例的敘述內不要詳細的去記錄如 欄位明細、查詢條件、企業規則(business rule) 等,參考下表,我會把這些經常會變動的細節中括號起來,然後會註明在另一份的文件,或是利用如 EA UML 工具,可以將這些細節整理在在該使用案例其它欄位內(如 constraint 欄位)。
訂購商品 Pre Condition 1. 使用者已登入 (Logon)系統。 Basic Course of Events 1. 使用者可以瀏覽各類商品資訊。 2. Inclue <<放入購物車>>。 Alternatives and Exceptions 放入購物車 Pre Condition Basic Course of Events 1. 使用者選擇一件商品放入購物車內。 2. 系統列出 [購物車明細]。 Alternatives and Exceptions *取消購物車內商品 2a. 使用者可以取消購物車內的商品。 Require [購物車明細] 商品明細、優惠價、數量、小計、庫存數、商品總額。 結帳商品 Pre Condition Basic Course of Events 1. Inclue <<選擇付款方式>>。 2. extension point <<更新基本資料>>。 3. 系統列出本次 [訂購明細], [付款方式與寄送資訊]。 4. 使用者確認並送出訂購資訊。 Alternatives and Exceptions Require [訂購明細] 商品明細、優惠價、數量、小計、現貨庫存、訂購總額 [付款方式與寄送資訊] 付款方式、聯絡人、寄送資訊 選擇付款方式 Pre Condition Basic Course of Events 1. 使用者可以選擇系統列出其中之一的付款方式。 2. extension point: <<選擇付款方式>>。 選擇7-11門市 Pre Condition Basic Course of Events 1. 使用者輸入 [選擇7-11查詢條件]。 2. 系統請 統X EC 系統列出符合條件的 7-11 門市資訊。 3. 使用者選擇其一欲取貨的 7-11 門市。 4. 系統記錄使用者所選擇的 7-11 門市。 Alternatives and Exceptions Require [選擇7-11查詢條件] 查詢條件可以是以縣市、路名或門市名稱。
※ 延伸參考:
o 三論「博X來」— 訂購商品與結帳是否是同一個使用案例?
o 再論 博X來「選擇 7-11 門市」功能設計
o 實在難以忍受的網路購書流程