在UML中是利用使用個案圖(Use Case Diagram)來描述系統的主要的使用個案(Use Case)及其對應的使用者,使用個案圖有幾個重要的元件:使用個案(Use Case)、行為者(Actor)。
以投影片的第二頁為例,購買者跟綜企處同仁就是行為者,與購買者相關的使用個案就是「購買」,與綜企處同仁相關的使用個案就是「對帳」、「管理存貨」、「產生銷售報表」,行為者與相關的使用個案會以線連接起來。
使用個案(Use Case)就是系統的主要功能(情境),然而,使用個案的觀點在於系統應該提供什麼功能,而不是系統如何提供這些功能。系統如何提供這些功能可以用Sequence Diagram來表達。
通常一個使用個案圖只會有3到9個使用個案。一個使用個案是一個使用情境而不是一個功能或一個單一需求,例如,選課是個使用個案,選課的情境中需要看到選課清單,需要加選課程,需要退選課程,以這樣的狀況就不應該將選課分為三個不同的使用個案,而是將看到選課清單,需要加選課程,需要退選課程列為選課中的三個步驟。在這個階段,需要知道的是系統有哪些重要的行為者,他們使用系統的情境為何,所以,不應該列出系統的基本功能(如:登入、登出、修改個人資料)。一般而言,當系統超過9個個案的話,就應該考慮將系統切割為不同的系統了(細節請參考Ashrafi & Ashrafi, 2009,pp.233-238)。
每個使用個案只能有一個主要行為者(primary actor),可以有多個次要行為者(secondary actor / supporting actor),行為者是個角色不一定是人,也有可能是另一個系統(細節請參考Ashrafi & Ashrafi, 2009,pp.187-188)。每一個使用個案只會有一個主要行為者,如果發現有超過一個主要行為者,而且不同行為者扮演的角色一樣(如:組長和組員在「互評」及「查詢互評結果」中的角色一樣),則以一般化來表示 (如:組員是組長的一般化) (細節請參考Ashrafi & Ashrafi, 2009, pp.223-224)。有時候,我們會分不清楚角色與身份,例如,櫃台也可以為自己的親朋好友購買產品,但是,這時候,他或她的角色便是購買者,而不是櫃台。就像有些老師也可能同時是學校的學生,每個人都有可能扮演不同的角色,當扮演不同角色時,就會有對應的使用個案。
在使用個案圖之外,也必須針對每一個使用個案進行使用個案情境說明,說明各使用個案之名稱、行為者、目標、前提(pre-condition)、結束狀態(post-condition)、系列事件(正常程序、替代程序與例外程序)。如果有多個行為者,必須註明主要行為者。使用個案的前提一般是註明啟動此使用個案的條件,如:學生必須是在學狀態才可以選課,或者,賣家已經將產品下架及登錄買家,買家才可對賣家進行評分。如果沒有前提,可以留空白。使用個案的結束狀態一般是註明完成此使用個案之後的狀態,如:學生完成網路初選。系列事件是在描述使用者與系統的互動,通常是顧客所進行的動作(如:輸入哪些資料)及所應得到的訊息(如:應該看到什麼樣的計算結果,或得到資料的欄位),在使用個案中應注重所需要的資料(細節請參考Ashrafi & Ashrafi, 2009,pp.209-223)。
其實不使用替代程序與例外程序也是可以表達整個流程,只是,使用替代程序與例外程序會比較容易閱讀。一般而言,替代程序與例外程序概念類似,然而,完成替代程序可以達到目標,但是,例外程序則不能,例如遇到存貨不足無法購買出版品的處理方式。通常完成替代程序與例外程序後會回到正常程序的下一個步驟,若不回到正常程序,則會在最後說明「完成後結束」或接下來的步驟,如:「完成後執行步驟6」。
Use case其實有不同的寫法 ,不同的教科書採用不同的做法,各有優缺點,未來就請大家依照自己的專題指導老師習慣的想法來寫。一般而言,有三種寫法 (詳參:http://www.wirfs-brock.com/PDFs/Art_of_Writing_Use_Cases.pdf) 。第一種寫法是述說式的 (Narrative),是以寫文章的方式寫。第二種做法是情境式的 (Scenario),(Ashrafi & Ashrafi (2009)及大部分的教科書是採取這種方式),會一個步驟一個步驟寫,每個步驟就是使用者所採取的動作或預期的結果。第三種做法是對話式的 (Conversation) (Satzinger, et al (2012)是以這種方式),會描述使用者所採取的動作及系統的處理動作及系統提供的反應。
第二種做法又會因為步驟的複雜程度,在處理替代流程(alternative flow)或例外流程(exception)時又有不同的表達方式。