2009年6月9日 星期二

W08 專案的開發(1)──收集Use Case

在開始之前,先讓觀念作點轉換:
人=Actor
事=Use Case
物=Data
時=Use Case Entry Point
地=Use Case Precondition

在系統分析時對Actor與Use Case應進行的步驟如下:
●收集全部Actor與Use Case以明確定義系統可以做的所有功能
●建立全部Actor與Use Case之間的使用關係
●分析Actor之間的使用範疇有包含關係者改為繼承
●所有Actor區分群組並定義在其所屬的Package下
●分析Use Case之間的使用範疇有包含關係者改為繼承
●分析Use Case內是否能拆解出include或extends關係的子Use Case
●所有Use Case區分群組並定義在其所屬的Package下
●明確定義每一個Use Case的發動時機
●明確定義每一個Use Case發動前的狀態
●明確定義每一個Use Case發動後的狀態
●收集每一個Use Case的所有可能劇本

在抽取共用Use Case的同時,思考的是"某種特定的使用者目的"。例如最近幫客戶設計晶片卡密碼驗證的功能,其目的是把使用者從密碼輸入器輸入的密碼傳到晶片卡模組去檢查,這雖然可以是一個獨立的Use Case,但也可以將用途切割為"取得密碼輸入器上輸入的密碼"與"將密碼送到晶片卡模組檢查"兩個Use Case,後者include前者。如果輸入密碼的方式又多了"從鍵盤輸入密碼",由於是二擇一的關係,關聯就要更改為extends。

對設計者而言,Use Case與Activity的抽取常會混淆,Use Case必須從Actor的角度看待,其目的是"對使用者有意義的獨立行為"。上面若將不同的密碼輸入功能合併為一個"從輸入設備輸入密碼"就會有點模糊,因為輸入設備只是個概括的名詞(除非再另外定義輸入設備包括哪些);若在其他功能內只允許用密碼輸入器輸入密碼時,這個Use Case就會變為不合用,重新定一個會造成功能重覆,修改原來的又怕會影響之前的Use Case造成問題。

沒有作好一對一的分析與設計,就常會有這樣的兩難局面。

沒有留言:

張貼留言