,這些動作將生成特定參與者可見的價(jià)值結(jié)果,一個用例定義一組用例實(shí)例(場景)。
一個用例應(yīng)為參與者提供(實(shí)現(xiàn))一個價(jià)值。
3.3 事件流
就像類對應(yīng)于對象一樣,一個用例的實(shí)例就是使用場景,用例就是對使用場景進(jìn)行抽象的總結(jié):
1)前置條件:指在用例啟動時,參與者(Actor)與系統(tǒng)應(yīng)置于什么狀態(tài),這個狀態(tài)應(yīng)該是系統(tǒng)能夠檢測到的、可觀測的;
2)后置條件:用例結(jié)束時,系統(tǒng)應(yīng)置于什么狀態(tài),這個狀態(tài)也應(yīng)該是系統(tǒng)能夠檢測得到的、可觀測的;
3)基本事件流:基本事件流是對用例中常規(guī)、預(yù)期路徑的描述,也被稱為Happy day場景,這時大部分時間所遇到的場景;它將體現(xiàn)系統(tǒng)的核心價(jià)值;
4)擴(kuò)展事件流:主要是對一些異常情況、選擇分支進(jìn)行描述。
建議大家在編寫事件流時,注意以下幾點(diǎn):
1)使用簡單的語法:主語明確,語義易于理解;
2)明確寫出"誰控制球":也就是在事件流描述中,讓讀者直觀地了解是參與者在控制還是系統(tǒng)在控制;
3)從俯視的角度來編寫:指出參與者的動作,以及系統(tǒng)的響應(yīng),也就是第三者的角度;
4)顯示過程向前推移:也就是第一步都有前進(jìn)的感(例如,用戶按下tab鍵做為一個事件就是不合適的);
5)顯示參與者的意圖而非動作(光有動作,讓人不容易直接從事件流中理解用例);
6)包括"合理的活動集"(帶數(shù)據(jù)的請求、系統(tǒng)確認(rèn)、更改內(nèi)部、返回結(jié)果);
7)用"確認(rèn)"而非"檢查是否":(如系統(tǒng)確認(rèn)用戶密碼正確,而非系統(tǒng)檢查用戶密碼是否正確);
8)可選擇地提及時間限制;
9)采用"用戶讓系統(tǒng)A與系統(tǒng)B交互"的習(xí)慣用語;
10)采用"循環(huán)執(zhí)行步驟x到y(tǒng),直到條件滿足"的習(xí)慣用語。
四、Alistair Cockburn眼中的用例分析技術(shù)
在使用用例分析技術(shù)時,很多人都覺得如何確定用例的粒度是一個難點(diǎn),而且感覺到用例沒有什么規(guī)則遵從,甚至有無所適從的感覺。正如Cockburn先生提出的學(xué)習(xí)用例分析技術(shù)的"守、破、離"的三個階段:
1)守:練習(xí)基本功夫,遵循規(guī)則,照章行事;
2)破:能突破傳統(tǒng),因地制宜地靈活應(yīng)用;
3)離:超脫任何招式與規(guī)則,達(dá)到無招勝有招的境界。
但用例分析技術(shù)卻讓第一階段的初學(xué)者感到無法很快地掌握。而其所著"編寫有效用例"則想為用例分析技術(shù)補(bǔ)充規(guī)則,讓大家能夠更好地掌握。
Cockburn先生在Ivar Jacobson的基礎(chǔ)上,做了一些補(bǔ)充:
1)用例是契約,是系統(tǒng)與涉眾之間達(dá)成的契約。也就是將用例朝著形式化的方向發(fā)展;
2) 將用例分成三級:
◆ 概要級:包括多個用戶目標(biāo)(顯示用戶目標(biāo)運(yùn)行的語境,顯示相關(guān)目標(biāo)的生命周期、為低層用例提供一個目錄表);
◆ 用戶目標(biāo)級
◆ 子功能級不過,對于Cockburn先生的貢獻(xiàn),用例始祖Ivar大師并未做出任何反應(yīng)。本人在實(shí)踐中認(rèn)為,Cockburn先生的思路與理念對于初學(xué)用例分析技術(shù)的人來說,十分有價(jià)值,使得用例分析技術(shù)更具操作性,當(dāng)其同時也有點(diǎn)畫地為牢的感覺,也許Cockburn先生也意識到這點(diǎn),因此第三階段就是"離",沒有規(guī)則,按需靈活使用。
五、如何在開發(fā)過程中應(yīng)用用例分析技術(shù)用例分析技術(shù)在需求過程中的地位如下圖所示:
對于用例分析技術(shù)理解上的兩個最大的誤區(qū)是:
1)用例分析技術(shù)包括了整個需求過程:它只是一個需求分析技術(shù),是在傳統(tǒng)的需求捕獲技術(shù)的基礎(chǔ)上使用的,并無法替代這些技術(shù);
2)用例分析技術(shù)是分解技術(shù):其實(shí)用例分析技術(shù)是一種合成技術(shù),將在需求捕獲中收集而來的零散的特性合成為用例:
5.1 用例分析前的工作
在用例分析之前,應(yīng)該完成以下工作
:
1)確定涉眾(Stakeholder)和用戶類型(命名、簡要描述、涉眾代表、特征、能力);
2)確定涉眾代表(命名、簡要描述、責(zé)任、參與);
3)在項(xiàng)目中加入涉眾代表(訪談、問卷、顧問、評審、角色扮演);
4)創(chuàng)建共同的構(gòu)想(問題定義、系統(tǒng)范圍、用戶目標(biāo)、非功能需求à前景文檔);
5)采用傳統(tǒng)的需求捕獲技術(shù)捕獲需求;6)組建用例分析隊(duì)伍(少量、有問題域知識)。
5.2 用例分析過程中的注意事項(xiàng)用例分析的過程如下圖所示:
在使用中要注意:
1)用例源于涉眾,請不要自己杜撰出用例;
2)用例的事件流的編寫過程中,應(yīng)充分加入團(tuán)隊(duì)的參與;
3)雖然用例源于涉眾,但不要企圖向他們直接問"你還有什么用例?這樣的問題。