|
UseCase用例是什么?看一下官方定義:用例定義了一組用例示例,其中每個示例都是系統(tǒng)所執(zhí)行的一系列操作??磦€UML的用例圖:

其他的內(nèi)容大家都可以網(wǎng)上去找資料,關(guān)于use case的內(nèi)容,我這里只想說一下use case的幾個理解上的誤區(qū):
誤區(qū)1:用例就是功能點
這是一個很大的誤區(qū),也是技術(shù)人員容易犯的一個錯誤。功能點是站在軟件開發(fā)的角度來說的,而用例是站在用戶的角度來說的。獲取用例是領(lǐng)域?qū)<腋傻幕?,而最后的功能實現(xiàn)是技術(shù)專家干的活,不同的角色。所以獲取用例的關(guān)鍵就是要站在用戶角度看問題。
怎么獲得用例?首先確定位于系統(tǒng)邊界之外的主角是誰?他的期望和目的是什么?這個期望和回報要求在系統(tǒng)之內(nèi)。所以,用例是幫助確定系統(tǒng)邊界的一個好方法。用例也是獲取需求的一個方法。
誤區(qū)2:用例和步驟混淆
舉例來說,用戶輸入密碼,要有密碼錯誤提示,并且三次錯誤自動鎖定用戶,最后登錄成功。“輸入密碼”是一個步驟,不是用例。整個過程是一個用例:“用戶登錄”。中間步驟和場景可以有很多。比如輸入密碼是一個步驟;“要有密碼錯誤提示”這是一個業(yè)務(wù)需求,不是用例;“并且三次錯誤自動鎖定用戶”這是一個業(yè)務(wù)需求,也不是用例。
用例的特征:有目的,有用戶期望,有回報預(yù)期。當(dāng)結(jié)果不可定義或不清晰時不能用Use Cases,意思是如果目標(biāo)成功或目標(biāo)失敗不能有一個明確的定義,那就不是一個用例。舉例來說,用戶輸入密碼,這是不是一個用例?用戶輸入密碼的目的是什么?是為了輸入密碼嗎?不是的,是為了登錄系統(tǒng),所以,用戶登錄是一個用例。
誤區(qū)3:用例的粒度不明
用例的粒度大小要看情況,因地制宜,因時制宜。
因地制宜:一般系統(tǒng)用例10-50個為宜。比較小型系統(tǒng)可以粒度更小一些。
因時制宜:在業(yè)務(wù)建模階段,在概念建模階段,在系統(tǒng)建模階段都是不同的。在系統(tǒng)建模階段,用例的粒度是以每個用例能夠描述操作者與計算機的一次完整的交互為宜。根據(jù)項目的不同階段,不斷縮小邊界可以獲得更小的粒度用例。一個大的用例還可以include一個小的用例,比如網(wǎng)上下訂單是一個用例,修改訂單是一個子用例,因為除了用戶,管理員可以修改訂單,這個子用例有意義。

誤區(qū)4:用例和場景混淆
一個用例的執(zhí)行是要有前因和后果的(前提是什么,結(jié)果會怎么樣);比如,煮飯和炒菜是用例,他們各自都有步驟,各自有好幾個場景。比如煮飯,我可以用電飯鍋煮,也可以蒸飯,煮飯前要先淘米,等等,這些都是一個用例的不同場景,但用戶的最終目的都是一樣的。不要把用例和場景混淆。
誤區(qū)5:軟件工程是不是用例驅(qū)動?
軟件工程是不是用例驅(qū)動?需求是重要的,用例是構(gòu)造需求的好方法。但如果你同時要考慮開發(fā)的所有因素包括重用,架構(gòu),花費,時間,你就無法僅僅從一個方面來驅(qū)動你的項目。好的軟件工程是被一系列重要因素所驅(qū)動的,而且因素也因不同的公司和項目有著不同的重要程度。這些因素包括: 技術(shù)上對于設(shè)計的考慮,用戶需求,重用,可更改性,系統(tǒng)性能,標(biāo)準(zhǔn)化,日程的安排以及其他的商務(wù)驅(qū)動。每個項目都有著自己不同的考慮。對于每一種情況,可以精確的說項目被域模型和用例共同驅(qū)動。
誤區(qū)6:用例直接推導(dǎo)出設(shè)計
不要從用例直接推論出設(shè)計。如果這樣做,“用例開發(fā)”僅僅成為了功能分解的一個借口。用例止于系統(tǒng)接口的邊界!用例應(yīng)該描述參與者使用系統(tǒng)時所遵循的次序,但用例決不說明系統(tǒng)內(nèi)部采用什么步驟來響應(yīng)參與者的刺激。
用例是幫助確定系統(tǒng)邊界的一個好方法。用例也是獲取需求的一個方法。用例也是產(chǎn)生測試用例的好方法。但是,從系統(tǒng)邊界、需求、到詳細(xì)設(shè)計還有很長的路要走。比如說,類圖,事實上類圖和用例圖沒有對應(yīng)關(guān)系。換句話來說,用例是需求分析時的產(chǎn)物,類(邊界類外)的設(shè)計期的產(chǎn)物。
|