OOA&D實(shí)踐之路——真實(shí)案例解析OO理論與實(shí)踐(四、通覽全局:避免過(guò)早陷入細(xì)節(jié)的泥沼)
查看本系列全部文章:
《OOA&D實(shí)踐之路——真實(shí)案例解析OO理論與實(shí)踐》索引貼
細(xì)節(jié)的泥沼
現(xiàn)在我們?cè)俅螌⑻匦粤斜碣N過(guò)來(lái):
1.可以將各種原料信息發(fā)布到系統(tǒng)上
2.加盟商和連鎖店可以使用購(gòu)物車功能在線定料
3.加盟商和連鎖店通過(guò)網(wǎng)絡(luò)進(jìn)行注冊(cè),管理員審核后才可以正式使用系統(tǒng)
4.系統(tǒng)需要一個(gè)管理員,可以對(duì)系統(tǒng)進(jìn)行管理
5.定料完成后生成定料單,并可以打印
6.直屬連鎖店按原價(jià)定料,加盟商按照等級(jí)分為5級(jí),每級(jí)折扣不同
我們已經(jīng)和這則列表折騰很久了,相信很多朋友已經(jīng)厭倦了,肯定在想:不要在折騰這該死的特性列表了,趕快開(kāi)始吧。這點(diǎn)我同意。但是要開(kāi)始做什么?很多朋友可能會(huì)說(shuō):開(kāi)始用例分析吧。說(shuō)實(shí)話,用例是好東西,它讓我們清晰認(rèn)識(shí)到系統(tǒng)的工作流程,正式因?yàn)檫^(guò)于清晰,所以很容易讓我們陷入一個(gè)細(xì)節(jié)的泥沼。
應(yīng)該說(shuō),從“特性列表”直接到“用例分析”不是一個(gè)好注意,因?yàn)樘匦粤斜黻P(guān)注于功能(Function),而用例關(guān)注于系統(tǒng)的業(yè)務(wù)流(Business Flow),我們從功能直接開(kāi)始分析系統(tǒng)的細(xì)節(jié)業(yè)務(wù)流,這個(gè)跨越太大,不利于軟件質(zhì)量的保證。特性是相對(duì)分散獨(dú)立的功能描述,而用例是系統(tǒng)細(xì)節(jié),很明顯,在這之間應(yīng)該有一個(gè)過(guò)渡,而這個(gè)過(guò)渡,就是一個(gè)高層次的,從全局角度對(duì)系統(tǒng)的一個(gè)概觀認(rèn)識(shí)。這個(gè)概觀認(rèn)識(shí)起到承上啟下的作用,既將特性列表映射為一個(gè)系統(tǒng)的大概模型,又給系統(tǒng)細(xì)節(jié)的分析奠定了基礎(chǔ)。所以,在系統(tǒng)特性基本確定后,我們首先要從全局給出一個(gè)系統(tǒng)的概覽,避免落入用例分析這樣細(xì)節(jié)的泥沼。
概覽系統(tǒng)的有力工具——用例圖
既然我們要給出一個(gè)全局的系統(tǒng)概覽,自然就需要有一種方式將其表達(dá)出來(lái)。顯然,僅僅通過(guò)說(shuō)是不理想的,我們需要一種能用于書(shū)面表達(dá)的工具,而這個(gè)工具,就是我們非常熟悉的UML圖之一的用例圖。
很多朋友可能有疑問(wèn),上面不是說(shuō)不進(jìn)行用例分析嗎?怎么這里又畫(huà)用例圖了?因?yàn)?span style="COLOR: #ff0000">用例和用例圖表述的信息層面完全不同,用例更傾向于細(xì)節(jié)和業(yè)務(wù)流的描述,而用例圖傾向于整體的描述。下面給出兩種工具要表述的信息:
用例——表述某個(gè)交互操作的動(dòng)作執(zhí)行者、用例名稱、具體流程過(guò)程、例外情況等。
用例圖——表述系統(tǒng)有哪些執(zhí)行者、有哪些用例以及執(zhí)行者于用例、用例于用例之間的關(guān)系。
很明顯,用例更關(guān)注于某一個(gè)操作的具體流程,所以適合在需求分析中使用;而用例圖更關(guān)注于整個(gè)系統(tǒng)的使用和交互情況,因此能給我們一個(gè)系統(tǒng)的概覽。
下面,我們就使用用例圖,從高層次角度看看系統(tǒng)的樣子。在這里還要說(shuō)明的是,隨著UML和用例分析技術(shù)的發(fā)展,提出了業(yè)務(wù)用例和系統(tǒng)用例的區(qū)別,而且用例存在不同的粒度。在進(jìn)行高層次概覽的時(shí)候,我們是使用的是一種粒度比較粗的用例圖。也許在以后的需求分析中,我們還會(huì)使用粒度更細(xì)的用例圖。
通過(guò)簡(jiǎn)要對(duì)特性列表的分析,可以畫(huà)出一張如下的用例圖:

可以看到,這個(gè)用例圖并沒(méi)有太多細(xì)節(jié)的東西,而僅僅描述了三個(gè)信息:1.系統(tǒng)有哪些用戶 2.系統(tǒng)有哪些操作 3.系統(tǒng)和用戶有哪些交互。這些,就是我們要的一個(gè)系統(tǒng)概觀。
用例圖的驗(yàn)證
畫(huà)完用例圖,我們并不是就完事了。因?yàn)?,要使得用例圖真的是全局概觀,就一定要保證一點(diǎn):圖中用例覆蓋了所有特性。如果不能覆蓋所有特性,說(shuō)明我們的用例圖中缺少用例甚至缺少動(dòng)作執(zhí)行者。現(xiàn)在我們來(lái)驗(yàn)證一下:
特性1覆蓋于“原料管理”。
特性2覆蓋于“在線定料”。
特性3覆蓋于“注冊(cè)”和“加盟商和連鎖店管理”。
特性4覆蓋于“原料管理”和“加盟商和連鎖店管理”。
特性5覆蓋于“打印定料單”。
特性6覆蓋于...???
我們忽然發(fā)現(xiàn)一點(diǎn),這里并沒(méi)有和折扣有關(guān)的東西,那么這個(gè)特性沒(méi)有被用例覆蓋。我們知道,如果要實(shí)現(xiàn)這個(gè)特性,系統(tǒng)中一定要有一定的折扣機(jī)制,而一定是有管理員設(shè)置的。于是我們?cè)黾右粋€(gè)“折扣管理”用例。注意,這里我們可以先不陷入細(xì)節(jié),僅僅知道系統(tǒng)有這么一個(gè)折扣機(jī)制,至于具體怎么實(shí)現(xiàn),到分析設(shè)計(jì)階段再討論。于是,修改后的用例圖如下:

現(xiàn)在我們可以說(shuō):特性6覆蓋于“折扣管理”和“在線定料”。
好了,這樣我們已經(jīng)確認(rèn),用例圖的用例覆蓋所有特性。
重點(diǎn)總結(jié)
1.不要過(guò)早陷入細(xì)節(jié)
2.在特性列表到用例分析之間,用該先有一個(gè)系統(tǒng)概覽,讓我們從高層次上審視系統(tǒng)全貌。
3.用例圖是實(shí)現(xiàn)這種概覽的有效方式。
4.用例不要粒度過(guò)細(xì),要能反應(yīng)系統(tǒng)粗粒度操作。
5.最后不要忘了檢查圖中用例是否覆蓋了所有特性。

出處:http://leoo2sk.cnblogs.com
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。