需求用例分析之一:异常流
問題的引出
備選流,又稱備選事件流,英文是Alternative?Flow。在RUP和UML中,備選流的解釋如下:備選事件流包括與正常行為相關的可選或異常特征的行為,同時也包括正常行為的各種變形。您可以將備選事件流看作是基本事件流的“繞行道”,有些備選事件流將返回到基本事件流,而有些將結束此用例的執行。?
分析RUP對于備選流的定義,可以看到備選流可以分成兩類:
1,不同做法但仍然達成用例目標;
2,異常情況,無法達成用例目標。
?
在實際用例分析中,由于備選流可能存在兩種情況,導致備選流存在2種主要寫法:
1.在備選流中說明基本流以外的異常情況的處理,可能仍然回到基本流,也可能導致用例結束。
在備選流中說明基本流以外的其它正常和異常情況的處理,覆蓋了其它功能。
第1種寫法的例子比較常見,下文將出現,這里不再贅述。
第2種寫法的例子如下:
用例名稱:填寫請購單
簡要說明
員工在線填寫圖書請購單,內容包括:圖書名稱、出版社、作者、價格、訂購人(系統自動識別)、訂購部門、訂購日期等,填好后提交給圖書管理員審核。
填寫請購單的主角是員工。
事件流
員工選擇“填寫請購單”,用例開始。
基本流
員工選擇“填寫請購單”,提交“填寫請購單”請求;
顯示“填寫請購單”窗口并列表顯示請購單信息(已填寫未提交、已提交審核未通過),?兩種狀態的請購單信息通過選擇分別列出,審核未通過的原因只能查看不能修改;
請購單信息包括:請購單編碼(系統自動生成)、訂購部門、訂購人、訂購日期、訂購原因、備注,和圖書明細包括:圖書名稱、出版社、作者、單價、數量等,圖書明細包括:新增,修改,刪除;
請購單信息輸入操作見備選流;
新增:系統具體執行見“備選流?新增”
修改:系統具體執行見“備選流?修改”
刪除:系統具體執行見“備選流?刪除”
選擇“提交”,系統把選中的請購單提交給圖書管理員審核,此用例結束。
?備選流
填寫請購單基本流中抽取出三個備選流:
請購單信息:新增、修改、刪除;
新增
(一)員工在“填寫請購單”信息區選擇“新增”,提交“新增”請求;
(二)系統彈出“新增請購單”空白模式窗口;
(三)請購單信息包括:圖書名稱、出版社、作者、單價、數量等;
(四)請購單信息輸入完畢后,選擇“保存”提交,系統驗證數據有效性,如驗證不成功,針對所提示錯誤信息修正輸入數據,驗證成功關閉“新增請購單”窗口;
若繼續新增請購單,則重復㈠㈡㈢㈣步驟。
修改
(一)員工在“填寫請購單”信息區列表選中要修改的請購單,提交“修改”請求;
(二)系統彈出“修改請購單”模式窗口,并顯示當前請購單信息;
(三)修改相應數據后,選擇“保存”提交,系統驗證數據有效性,如驗證不成功則根據錯誤提示重新輸入,驗證成功后保存數據并關閉“修改請購單”模式窗口同時刷新請購單信息列表;
若繼續修改,則重復㈠㈡㈢步驟。
刪除
(一)員工在“填寫請購單”信息區列表選中要刪除的請購單,提交“刪除”請求;
(二)若選中的請購單屬于審核未通過,系統提示“不能刪除審核未通過的請購單”;
(三)刪除后刷新請購單列表信息同時系統提示“編號為XXX的請購單已刪除!”;
若繼續刪除,則重復㈠㈡㈢步驟。
?
特殊需求
無
前置條件
員工登錄系統。
后置條件
無
---例子結束----
第2種寫法中,在備選流中說明了基本功能,用例篇幅已經變長,如果備選流中出現異常,備選流將顯得更加臃腫。因此第2種寫法比較少見。
為了解決備選流的不同情況,人們識別率異常流來解決上述問題。
異常流是什么?
Bernd?Lohmeyer提出來如下分類規則
(見?http://www.lohmy.de/2013/03/06/writing-use-cases-exception-or-alternate-flow/??)
l?Result?negative:?An?Exception?is?anything?that?leads?to?NOT?achieving?the?use?case’s?goal.?負面結果:異常,任何導致不能達成用例目標的事情
l?Result?positive:?An?Alternate?Flow?is?a?step?or?a?sequence?of?steps?that?achieves?the?use?case’s?goal?following?different?steps?than?described?in?the?main?success?scenario.?But?the?goal?is?achieved?finally.?正面結果:備選流,一步或多個步驟序列達成了用例目標,但與主成功場景不一樣的步驟。最終目標是達成的。
見如下例子:
簡單說:異常流是基本流的異常情況,不能達成用例目標。
用異常流替代備選流
蒼狼敏捷需求用例分析方法對于備選流的做法是采用第1種做法,但用異常流替代備選流,從名稱上排除第2種做法,滿足用例目的的可選流程在基本流中表達,如果導致基本流篇幅過長,那么就分拆用例。
對照到上述“填寫請購單”的例子,蒼狼敏捷需求用例分析方法至少分拆成如下多個用例:
1,新增請購單
2,修改請購單
3,刪除請購單
其中新增請購單的用例規約
| 用例屬性 | 說明 |
| 名稱 | 新增請購單 |
| 簡要說明 | 員工在線填寫圖書請購單,內容包括:圖書名稱、出版社、作者、單價等,填好后提交給圖書管理員審核。 |
| 前置條件 | 員工已經登錄 |
| 啟動點 | 員工在“填寫請購單”信息區選擇“新增”,提交“新增”請求,系統彈出“新增請購單”空白模式窗口 |
| 基本流 | 1.?員工填寫各項請購單信息,包括圖書名稱、出版社、作者、單價、數量、訂購原因、備注,員工請購單信息輸入完畢后,選擇“保存”提交 2.?系統驗證數據有效性,有效性規則見X.Y 3.?系統驗證如果通過,記錄此請購單 4.?系統返回“保存”成功信息 |
| 異常流 | 3b如果驗證不成功,給出具體字段的錯誤提示信息,讓用戶修正輸入數據 |
| 后置條件 | 提交給圖書管理員審核 |
| 特殊需求 | 請購單輸入信息界面在一個屏幕內 |
| 擴展點 | 無 |
?
異常流的好處
根據以上分析,可以看到,異常流實質上是一種備選流,對照原RUP備選流說明的話,定義如下:異常流是與基本流正常行為相關的異常行為。 異常流不是基本流的“繞行道”,有些異常流將返回到基本流,有些將結束用例的執行。 異常流替代備選流主要的好處: 1,基本功能全部在基本流中表達 2,異常流從名稱上清晰的明確了其定位:基本流的異常情況 3,基本流+異常流的組合可以覆蓋所有事件流場景 4,用例的顆粒度將受到基本流篇幅的限制,有助于更精細的管理,有便于在敏捷開發環境下使用。總結
以上是生活随笔為你收集整理的需求用例分析之一:异常流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 说说软件需求说明
- 下一篇: 需求用例分析之二:级别设置