參與者(Actor)
參與者(注:有另一種翻譯“執行者”)
代表位於系統之外並和系統進行交互的一類事物(人、物、其他軟件子系統等)
通過它,可以對軟件系統與外界發生的交互進行分析和描述
通過它,可以了解客戶希望軟件系統提供哪些功能
Actor的圖形表示
參與者是人,用“小人圖”
參與者是某個系統時用方框圖,構造型 《actor》
根據下面的問題來尋找系統的參與者
① 誰使用系統?Who or what uses the system
② 誰安裝系統、維護系統?Who installs the system? Who maintains the system
③ 誰啟動系統、關閉系統?Who starts and stops the system
④ 誰從系統中獲取信息,誰提供信息給系統?Who gets and provides information to the system
⑤ 在系統交互中,誰扮演了什么角色?What roles do they play in the interaction
⑥ 系統會與哪些其他系統相關聯?What other systems interact with this system
⑺ 內/外部定時器 Does anything happen at a fixed time?
對每一類參與者要有簡短描述
如, 學生:需要參加培養計划規定的課程,並通過考核
例子
手機軟件系統的Actor有
用戶
網絡
SIM卡
學院管理系統的Actor有
用戶/學生/教師/系統管理員
數據庫
如果有子系統
其它系統可以作為一個Actor
有時數據庫可以作為一個Actor
銀行ATM機的Actor有
用戶/管理員
網絡 / 數據庫
用例
系統為響應參與者引發的一個事件而執行的一系列的處理/動作,而這些處理應該為參與者產生一種有價值的結果
這些動作
不但應包含正常情況的各種動作序列
而且應包含對非正常情況時軟件系統的動作序列的描述,Exception / Alternate
用例圖
邊界
參與者
用例
關系
尋找用例
可以根據下面的一些問題來識別用例
①參與者希望系統提供什么功能 Start with actors, then identify what they want to do What functions will the actor want from the system ?
②系統是否存儲和檢索信息
③當系統改變狀態時,是否通知參與者 Are any actors notified when the system changes ?
④是否存在影響系統的外部事件,是哪個參與者通知系統這些外部事件 Are there external events that notify the system ?
⑤哪個參與者觸發了活動?Which actors trigger activity ?
每個用例都有一個名稱
短小精悍的“動名詞”
例如ATM系統,經典的用例有“取錢” “存錢”“修改密碼”等
用例圖中的關系
1)參與者與用例之間
關聯關系: 用實線表示
2)參與者/參與者之間的關系
泛化關系:實線+空心箭頭
3)用例之間的關系
泛化關系 例如、發出訂單 - 網上發出訂單
含關系《include》
擴展關系《extend》
用例描述UseCase description
僅有用例圖還不夠,還需要詳盡的文字描述!
主事件流:一切正常時的動作序列
異常事件或者可選事件流:主事件流的每一步都有可能出現異常,此處描述異常情況的處理
用例模型 Usecase Model
用例模型包括
系統邊界
參與者
用例
用例圖
用例描述
用例模型是系統分析的結果、是系統設計的輸入
案例
用例描述
用例:處理銷售
Summary : 完成一筆日常銷售業務的處理
Actor List : 顧客、收銀員、財務子系統、稅金計算器
Pre-Cond : 收銀員必須經過確認和認證
Description :
1)顧客攜帶所購商品或服務到收銀台通過POS機付款
2)收銀員開始一次新的銷售交易
3)收銀員輸入商品條碼
4)系統記錄出售的商品,顯示品名、價格、數量
重復第3~4步,直到輸入結束
5)系統顯示應付總額
6)顧客付錢,系統處理支付
7)系統記錄完整的銷售信息,打印票據
8)顧客攜帶商品和票據離開,銷售結束
Exception :
3a : 無效商品ID,收銀員手工輸入,或者取消該商品
3b : 顧客要求刪除某項已經輸入的商品,需要經理授權,並刪除商品
6a : 顧客信用卡不足部分,需要現金支付,請經理授權,並接受現金
…….
PostCond :
系統完整記錄該筆銷售業務的信息
系統正確協同其他子系統,確保數據一致性
用例模型小結
用例模型
是軟件開發人員分析客戶業務流程的結果
是面向對象分析的結果
不一定完全是面向對象分析的結果
是面向對象設計的輸入
是開發部門與顧客之間的合同
是軟件設計部門與軟件工程師之間的合同
是開發部門領導、非直接開發人員,了解系統的主要信息來源