前面,我們耗費(fèi)了大量的篇幅來(lái)討論用例分析及用例圖。用例圖,無(wú)疑是功能分析、角色分析,以及流程分析的利器,它將我們要開(kāi)發(fā)的系統(tǒng),清晰而詳盡地描述出來(lái)。但是,正如任何事物都有兩面性,用例圖也不例外,也有自己不利的一面。在我看來(lái),這集中體現(xiàn)在兩個(gè)方面:只見(jiàn)樹(shù)木不見(jiàn)森林、不生動(dòng)形象。
什么叫“只見(jiàn)樹(shù)木不見(jiàn)森林”呢?就是說(shuō),用例說(shuō)明中對(duì)業(yè)務(wù)流程的描述,過(guò)早地將系統(tǒng)的整體流程,分散到了各個(gè)用例中了,丟失了對(duì)業(yè)務(wù)流程的整體描述。不生動(dòng)形象,則是說(shuō)用例說(shuō)明中對(duì)流程的描述都是用枯燥無(wú)味的文字來(lái)表述的,缺乏生動(dòng)形象的圖形表示。針對(duì)這些不足,UML的另外兩種視圖,可以有效地彌補(bǔ)用例圖的缺陷。它們就是行動(dòng)圖與狀態(tài)圖。
行動(dòng)圖(Active Diagram),比較類(lèi)似于我們過(guò)去繪制的流程圖,是UML中描述流程與分支的視圖。在行動(dòng)圖中,往往是從一個(gè)實(shí)心圓的起始節(jié)點(diǎn)開(kāi)始的。最頻繁使用的則是活動(dòng)節(jié)點(diǎn)了,它表示的是業(yè)務(wù)流程中的一項(xiàng)活動(dòng)。活動(dòng)節(jié)點(diǎn)可以表述為一個(gè)活動(dòng)短語(yǔ)(如下訂單),可以表述為一個(gè)表達(dá)式(如len=a.length+x),還可以表述為一個(gè)消息(如send(msg))。同時(shí),將各個(gè)活動(dòng)節(jié)點(diǎn)連接起來(lái)的一個(gè)個(gè)實(shí)線(xiàn)箭頭,表明了各種活動(dòng)之間的流轉(zhuǎn)順序。
在各種業(yè)務(wù)流程中,毫無(wú)疑問(wèn)會(huì)有許多的分支。在行動(dòng)圖中,分支用一個(gè)菱形來(lái)表示。一個(gè)指向菱形的箭頭,表示流程進(jìn)入分支,另外兩個(gè)或多個(gè)從菱形伸出的箭頭,則表示不同條件下的分支流。而菱形本身,則表示為一個(gè)條件判斷語(yǔ)句。
另外,業(yè)務(wù)中的各個(gè)流程還會(huì)分岔與匯合的情況。分岔,表示在某個(gè)時(shí)間點(diǎn)上,同時(shí)開(kāi)始兩個(gè)業(yè)務(wù)流程,這兩個(gè)業(yè)務(wù)流程是同步進(jìn)行的。分岔用一個(gè)入箭頭,一根橫杠,與兩個(gè)出箭頭表示。匯合,則表示,只有在兩個(gè)流程都完成的情況下,才會(huì)進(jìn)入下一流程,否則只能等待。
匯合則用兩個(gè)入箭頭,一根橫杠,與一個(gè)出箭頭表示。
最后,用一個(gè)或多個(gè)帶環(huán)的實(shí)心圓,表示的是活動(dòng)圖的終止節(jié)點(diǎn),代表了業(yè)務(wù)流程的終結(jié)。以上這些元素,就組成了一個(gè)基本的活動(dòng)圖。然而,基本的活動(dòng)圖還不能完整的反映我們的業(yè)務(wù)流程,因此我們還需要在基本活動(dòng)圖的基礎(chǔ)上增加元素。現(xiàn)在我們來(lái)看看泳道與業(yè)務(wù)對(duì)象流。
如圖就是一個(gè)帶泳道的活動(dòng)圖,圖中每個(gè)泳道代表一個(gè)參與者的業(yè)務(wù)操作,而整個(gè)圖形表述了多個(gè)參與者間的協(xié)作過(guò)程。起初我比較愛(ài)繪制這樣的活動(dòng)圖,但后來(lái)常常感到繪制泳道是一件比較繁瑣的事情。既然如此,我們就改改吧。
這張圖才是我最?lèi)?ài)使用的行動(dòng)圖。圖中,將參與者由繁瑣的泳道改為了用例圖中的小人。同時(shí),在這張圖中還增加了對(duì)象流與對(duì)象。圖中,自動(dòng)考核結(jié)果、申辯申請(qǐng)單、調(diào)整后考核結(jié)果,都是數(shù)據(jù)對(duì)象,是該流程中相關(guān)環(huán)節(jié)操作的結(jié)果。從活動(dòng)節(jié)點(diǎn)指向?qū)ο蟮奶摼€(xiàn)箭頭,則表示了一個(gè)對(duì)象流,如“申辯申請(qǐng)”活動(dòng)指向“申辯申請(qǐng)單”的虛線(xiàn)箭頭,表示了申辯申請(qǐng)活動(dòng)的最終結(jié)果是產(chǎn)生申辯申請(qǐng)單;從“調(diào)整后考核結(jié)果”指向“過(guò)錯(cuò)追究”的虛線(xiàn)箭頭,表示過(guò)錯(cuò)追究活動(dòng)讀取了調(diào)整后考核結(jié)果。
當(dāng)然,活動(dòng)圖還有其它的元素,但我個(gè)人認(rèn)為其實(shí)并不實(shí)用,使用以上元素就足以表述我們的業(yè)務(wù)流程了。活動(dòng)圖打破了子系統(tǒng)與子系統(tǒng)的壁壘、用例與用例的壁壘,使我們能夠從整體上了解整個(gè)系統(tǒng)的流程,因此常常使用在對(duì)整個(gè)系統(tǒng)的概述、對(duì)整個(gè)子系統(tǒng)的概述,以及對(duì)整個(gè)功能模塊的概述中。同時(shí),與其它視圖一樣,活動(dòng)圖也應(yīng)當(dāng)有它的文字說(shuō)明,以便對(duì)圖中的每個(gè)活動(dòng)節(jié)點(diǎn)、分支進(jìn)行描述。但對(duì)于一些流程相對(duì)簡(jiǎn)單,甚至沒(méi)有什么流程的查詢(xún)報(bào)表類(lèi)功能模塊,繪制它們的活動(dòng)圖則顯得有些牽強(qiáng)附會(huì),因此我們要靈活掌握。
除了活動(dòng)圖,我們似乎對(duì)需求的描述還缺少點(diǎn)兒什么,那就是對(duì)關(guān)鍵對(duì)象中流程中狀態(tài)變化的描述,在這種情況下,我們的狀態(tài)圖就上場(chǎng)了。
在使用狀態(tài)圖時(shí),一個(gè)非常關(guān)鍵的概念就是,一定是對(duì)某個(gè)關(guān)鍵對(duì)象的狀態(tài)變化的描述,而這些狀態(tài)變化一定是在某個(gè)業(yè)務(wù)流程的大背景下進(jìn)行的。下圖是一個(gè)疑點(diǎn)數(shù)據(jù)整個(gè)生命周期的狀態(tài)變化圖。圖中,與行動(dòng)圖一樣,一個(gè)實(shí)心圓點(diǎn)代表的是流程的開(kāi)始,圓邊的方框代表的是對(duì)象生命周期中的各個(gè)狀態(tài),狀態(tài)節(jié)點(diǎn)間的實(shí)線(xiàn)箭頭代表的是狀態(tài)的切換,箭頭的文字描述是觸發(fā)狀態(tài)切換的事件。與行動(dòng)圖一樣,狀態(tài)圖可以有分支、分岔、匯合,并最后以一個(gè)或多個(gè)帶環(huán)的實(shí)心圓結(jié)束,代表對(duì)象生命周期的終結(jié)。
在需求分析中,狀態(tài)圖并不是必須的,它僅僅出現(xiàn)在你認(rèn)為需要對(duì)某個(gè)對(duì)象的狀態(tài)進(jìn)行說(shuō)明的時(shí)候。
我們應(yīng)當(dāng)怎樣做需求分析
我們應(yīng)當(dāng)怎樣做需求調(diào)研:初識(shí)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:拜訪(fǎng)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:研討會(huì)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求研討
我們應(yīng)當(dāng)怎樣做需求調(diào)研:迭代
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(上)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(下)
我們應(yīng)當(dāng)怎樣做需求分析:功能角色分析與用例圖
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(上)
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(下)
我們應(yīng)當(dāng)怎樣做需求分析:用例說(shuō)明
我們應(yīng)當(dāng)怎樣做需求分析:查詢(xún)報(bào)表分析
我們應(yīng)當(dāng)怎樣做需求分析:子用例與擴(kuò)展用例
我們應(yīng)當(dāng)怎樣做需求分析:行動(dòng)圖和狀態(tài)圖
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)領(lǐng)域分析
我們應(yīng)當(dāng)怎樣做需求分析:原文分析法
我們應(yīng)當(dāng)怎樣做需求分析:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
我們應(yīng)當(dāng)怎樣做需求分析:非功能需求
我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求列表
我們應(yīng)當(dāng)怎樣做需求確認(rèn):一個(gè)需求列表的實(shí)例
我們應(yīng)當(dāng)怎樣做需求確認(rèn):快速原型法
我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求規(guī)格說(shuō)明書(shū)
我們應(yīng)當(dāng)怎樣做需求確認(rèn):評(píng)審與簽字確認(rèn)會(huì)
(續(xù))
什么叫“只見(jiàn)樹(shù)木不見(jiàn)森林”呢?就是說(shuō),用例說(shuō)明中對(duì)業(yè)務(wù)流程的描述,過(guò)早地將系統(tǒng)的整體流程,分散到了各個(gè)用例中了,丟失了對(duì)業(yè)務(wù)流程的整體描述。不生動(dòng)形象,則是說(shuō)用例說(shuō)明中對(duì)流程的描述都是用枯燥無(wú)味的文字來(lái)表述的,缺乏生動(dòng)形象的圖形表示。針對(duì)這些不足,UML的另外兩種視圖,可以有效地彌補(bǔ)用例圖的缺陷。它們就是行動(dòng)圖與狀態(tài)圖。
行動(dòng)圖(Active Diagram),比較類(lèi)似于我們過(guò)去繪制的流程圖,是UML中描述流程與分支的視圖。在行動(dòng)圖中,往往是從一個(gè)實(shí)心圓的起始節(jié)點(diǎn)開(kāi)始的。最頻繁使用的則是活動(dòng)節(jié)點(diǎn)了,它表示的是業(yè)務(wù)流程中的一項(xiàng)活動(dòng)。活動(dòng)節(jié)點(diǎn)可以表述為一個(gè)活動(dòng)短語(yǔ)(如下訂單),可以表述為一個(gè)表達(dá)式(如len=a.length+x),還可以表述為一個(gè)消息(如send(msg))。同時(shí),將各個(gè)活動(dòng)節(jié)點(diǎn)連接起來(lái)的一個(gè)個(gè)實(shí)線(xiàn)箭頭,表明了各種活動(dòng)之間的流轉(zhuǎn)順序。

在各種業(yè)務(wù)流程中,毫無(wú)疑問(wèn)會(huì)有許多的分支。在行動(dòng)圖中,分支用一個(gè)菱形來(lái)表示。一個(gè)指向菱形的箭頭,表示流程進(jìn)入分支,另外兩個(gè)或多個(gè)從菱形伸出的箭頭,則表示不同條件下的分支流。而菱形本身,則表示為一個(gè)條件判斷語(yǔ)句。
另外,業(yè)務(wù)中的各個(gè)流程還會(huì)分岔與匯合的情況。分岔,表示在某個(gè)時(shí)間點(diǎn)上,同時(shí)開(kāi)始兩個(gè)業(yè)務(wù)流程,這兩個(gè)業(yè)務(wù)流程是同步進(jìn)行的。分岔用一個(gè)入箭頭,一根橫杠,與兩個(gè)出箭頭表示。匯合,則表示,只有在兩個(gè)流程都完成的情況下,才會(huì)進(jìn)入下一流程,否則只能等待。
匯合則用兩個(gè)入箭頭,一根橫杠,與一個(gè)出箭頭表示。
最后,用一個(gè)或多個(gè)帶環(huán)的實(shí)心圓,表示的是活動(dòng)圖的終止節(jié)點(diǎn),代表了業(yè)務(wù)流程的終結(jié)。以上這些元素,就組成了一個(gè)基本的活動(dòng)圖。然而,基本的活動(dòng)圖還不能完整的反映我們的業(yè)務(wù)流程,因此我們還需要在基本活動(dòng)圖的基礎(chǔ)上增加元素。現(xiàn)在我們來(lái)看看泳道與業(yè)務(wù)對(duì)象流。

如圖就是一個(gè)帶泳道的活動(dòng)圖,圖中每個(gè)泳道代表一個(gè)參與者的業(yè)務(wù)操作,而整個(gè)圖形表述了多個(gè)參與者間的協(xié)作過(guò)程。起初我比較愛(ài)繪制這樣的活動(dòng)圖,但后來(lái)常常感到繪制泳道是一件比較繁瑣的事情。既然如此,我們就改改吧。

這張圖才是我最?lèi)?ài)使用的行動(dòng)圖。圖中,將參與者由繁瑣的泳道改為了用例圖中的小人。同時(shí),在這張圖中還增加了對(duì)象流與對(duì)象。圖中,自動(dòng)考核結(jié)果、申辯申請(qǐng)單、調(diào)整后考核結(jié)果,都是數(shù)據(jù)對(duì)象,是該流程中相關(guān)環(huán)節(jié)操作的結(jié)果。從活動(dòng)節(jié)點(diǎn)指向?qū)ο蟮奶摼€(xiàn)箭頭,則表示了一個(gè)對(duì)象流,如“申辯申請(qǐng)”活動(dòng)指向“申辯申請(qǐng)單”的虛線(xiàn)箭頭,表示了申辯申請(qǐng)活動(dòng)的最終結(jié)果是產(chǎn)生申辯申請(qǐng)單;從“調(diào)整后考核結(jié)果”指向“過(guò)錯(cuò)追究”的虛線(xiàn)箭頭,表示過(guò)錯(cuò)追究活動(dòng)讀取了調(diào)整后考核結(jié)果。
當(dāng)然,活動(dòng)圖還有其它的元素,但我個(gè)人認(rèn)為其實(shí)并不實(shí)用,使用以上元素就足以表述我們的業(yè)務(wù)流程了。活動(dòng)圖打破了子系統(tǒng)與子系統(tǒng)的壁壘、用例與用例的壁壘,使我們能夠從整體上了解整個(gè)系統(tǒng)的流程,因此常常使用在對(duì)整個(gè)系統(tǒng)的概述、對(duì)整個(gè)子系統(tǒng)的概述,以及對(duì)整個(gè)功能模塊的概述中。同時(shí),與其它視圖一樣,活動(dòng)圖也應(yīng)當(dāng)有它的文字說(shuō)明,以便對(duì)圖中的每個(gè)活動(dòng)節(jié)點(diǎn)、分支進(jìn)行描述。但對(duì)于一些流程相對(duì)簡(jiǎn)單,甚至沒(méi)有什么流程的查詢(xún)報(bào)表類(lèi)功能模塊,繪制它們的活動(dòng)圖則顯得有些牽強(qiáng)附會(huì),因此我們要靈活掌握。
除了活動(dòng)圖,我們似乎對(duì)需求的描述還缺少點(diǎn)兒什么,那就是對(duì)關(guān)鍵對(duì)象中流程中狀態(tài)變化的描述,在這種情況下,我們的狀態(tài)圖就上場(chǎng)了。
在使用狀態(tài)圖時(shí),一個(gè)非常關(guān)鍵的概念就是,一定是對(duì)某個(gè)關(guān)鍵對(duì)象的狀態(tài)變化的描述,而這些狀態(tài)變化一定是在某個(gè)業(yè)務(wù)流程的大背景下進(jìn)行的。下圖是一個(gè)疑點(diǎn)數(shù)據(jù)整個(gè)生命周期的狀態(tài)變化圖。圖中,與行動(dòng)圖一樣,一個(gè)實(shí)心圓點(diǎn)代表的是流程的開(kāi)始,圓邊的方框代表的是對(duì)象生命周期中的各個(gè)狀態(tài),狀態(tài)節(jié)點(diǎn)間的實(shí)線(xiàn)箭頭代表的是狀態(tài)的切換,箭頭的文字描述是觸發(fā)狀態(tài)切換的事件。與行動(dòng)圖一樣,狀態(tài)圖可以有分支、分岔、匯合,并最后以一個(gè)或多個(gè)帶環(huán)的實(shí)心圓結(jié)束,代表對(duì)象生命周期的終結(jié)。

在需求分析中,狀態(tài)圖并不是必須的,它僅僅出現(xiàn)在你認(rèn)為需要對(duì)某個(gè)對(duì)象的狀態(tài)進(jìn)行說(shuō)明的時(shí)候。
我們應(yīng)當(dāng)怎樣做需求分析
我們應(yīng)當(dāng)怎樣做需求調(diào)研:初識(shí)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:拜訪(fǎng)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:研討會(huì)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求研討
我們應(yīng)當(dāng)怎樣做需求調(diào)研:迭代
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(上)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(下)
我們應(yīng)當(dāng)怎樣做需求分析:功能角色分析與用例圖
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(上)
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(下)
我們應(yīng)當(dāng)怎樣做需求分析:用例說(shuō)明
我們應(yīng)當(dāng)怎樣做需求分析:查詢(xún)報(bào)表分析
我們應(yīng)當(dāng)怎樣做需求分析:子用例與擴(kuò)展用例
我們應(yīng)當(dāng)怎樣做需求分析:行動(dòng)圖和狀態(tài)圖
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)領(lǐng)域分析
我們應(yīng)當(dāng)怎樣做需求分析:原文分析法
我們應(yīng)當(dāng)怎樣做需求分析:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
我們應(yīng)當(dāng)怎樣做需求分析:非功能需求
我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求列表
我們應(yīng)當(dāng)怎樣做需求確認(rèn):一個(gè)需求列表的實(shí)例
我們應(yīng)當(dāng)怎樣做需求確認(rèn):快速原型法
我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求規(guī)格說(shuō)明書(shū)
我們應(yīng)當(dāng)怎樣做需求確認(rèn):評(píng)審與簽字確認(rèn)會(huì)
(續(xù))
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
