在我的專案經驗中,若欲建置的系統並沒有明顯涉及到業務流程時,其實真的沒有必要硬是要產出活動圖。當然,如果遇到建置的系統明顯涉及到複雜的業務流程時,最好可以採用活動圖來表達業務流程,這可以帶來下列幾項好處:

1. 系統分析師可以透過活動圖,來跟使用者或客戶溝通並確認未來系統上線之後的業務流程。

2. 系統分析師可能會需要透過活動圖中的流程動線和控制節點,來表達使用案例執行時的流程動線與邏輯控制。

3. 系統分析師也可以透過活動圖,找出可能遺漏的使用案例(Use Case)。

其實,多數專案時程都被壓縮的很厲害,繪製每一款或每一張UML圖都要花時間、花成本,實在沒有必要為了需要交付分析設計文件,硬是繪製了一堆UML圖。

再者,UML是一種用來溝通的圖形語言,倘若在使用任何一個圖示(詞彙)時,客戶/使用者(甲方)、建置團隊/繪製者/觀看者(乙方)、獨立監審商(丙方)等多方沒有一定水準的共同認知的話,UML就失去了溝通的功效,而且還可能會成為專案成員爆肝的原因之一。

回顧一下業務流程建模時的現場作業程序,我通常建議採取下列步驟,如圖1所示:

圖1 作業程序

Step1. 系統分析師使用活動圖,繪製系統上線後的未來業務流程。

Step2. 系統分析師在產出活動圖之後,舉行確認會議,邀請客戶/使用者到場修訂並確認業務流程的內容。

Step3. 在舉行過確認會議之後,系統分析師還需要產出支援業務流程的初版使用案例圖(不含使用案例敘述)。

接著,在這一回文章中,系統分析師可以跟著下面的說明,我將帶著大家一步一步地,一邊學習一邊繪製出表達業務流程的活動圖。

起始節點

一張活動圖用來表達一條業務流程,並以活動圖中的「起始節點」(Initial Node)做為業務流程的起點。起始節點的圖示是一個實心小圓,一般習慣將起始節點放置在活動圖面的左上角處,如圖2所示。

圖2 起始節點

由於,橫式書寫或是西式書寫的習慣都是由左上角開始,所以將起始節點放置在圖面的左上角處,會比較符合橫式閱讀的習慣。不過,這只是習慣用法,沒有硬性規定一定得這樣做。

雖說內容重於一切,但是排版不佳或者表現風格不一致時,真的會讓觀看者心生障礙,大大降低閱讀的順暢性。所以說,圖3的表示法不是不行,只是建議系統分析師盡量統一採用圖2的表現風格。

圖3 看起來比較不順暢

統一呈現方式的另一個原因是,使用者/客戶(甲方)看不太懂系統需求規格書(SRS)或系統設計規格書(SDS)的全數內容,這是十分正常的現象。但是,難保他們不會挑剔章節目錄以及內容排版等等的表象,而這通常是建置團隊(乙方)沒時間去重視的部分。所以,為了避免無謂的困擾,乾脆一開始就盡量統一呈現的風格。

在UML規格書中,沒有限制一張活動圖只能有一個起始節點。也就是說,一張活動圖中可以有多個起始節點,也可能沒有起始節點。但是,為了避免遺漏起始節點而找不到流程起點,所以我們會建議一張活動圖至少放置一個起始節點。此外,如果遇到多個起始節點的狀況時,建議拆成多張活動圖,盡量保持一張活動圖一個起始節點的單純狀況。

補充說明一下,活動圖中可以沒有起始節點,那是因為除了起始節點外,另外有一些節點也能夠啟動流程。所以,在活動圖中,當然就有可能沒有出現任何起始節點了。

 

活動終點

在每一張活動圖中,放置「活動終點」(Acitivity Final),用來表示整張活動圖的活動終點。活動終點的圖示是牛眼圖示(雙圓,內實外空),如圖4所示。

延續上述「開基金戶流程」的範例,這條業務流程的最終是銀行客戶會取得基金存摺,如圖4所示。

圖4 活動終點

判斷節點
在任何一條業務流程中,都可能會遇到一些判斷節點(Decision Node),也因此改變了流程的動線,引發不同的動作。判斷節點的圖示是空心菱形,判斷節點的內部請留白,不要填入任何字眼。

在UML初級認證考試中,有一個考題就是在考判斷節點的空心菱形圖示內部,是否可以出現文字?答案是:不可以。這或許是因為「判斷節點」(Decision Node)和「合併節點」(Merge Node),這兩個概念共用空心菱形圖示,才會規定菱形要保持空白吧!後面我們會提到合併節點的概念。

此外,在每一條離開動線上頭,都要設置一個警戒條件。流程動線的圖示是帶箭頭實線,警戒條件(Guard)則放置於中括號中,通過警戒條件(評估為真)時,流程才能依循動線箭頭方向往下動作。

注意,設置的警戒條件必須不重疊,也不遺漏。警戒條件重疊時,可能會導致不知該引發哪一條離開動線,這是不恰當的設計。警戒條件遺漏時,也可能會因為所有離開動線都無法通過警戒條件,而導致流程停頓,無法繼續往下執行,這也是不恰當的設計。

延續前面的範例,由於銀行客戶申購基金或贖回基金,都需要透過綜合存款帳戶把款項匯入或匯出,所以會需要用到綜合存款帳戶。因此,銀行客戶一要求要開基金帳戶時,理財專員就會立即跟銀行客戶確認,是否有在本銀行開過綜合存款帳戶,如圖5所示。

圖5 判斷節點

動作

動作(Action)應該可以說是一條業務流程中,最重要的節點了吧,它代表一個不可再往下細分的最小工作片段。動作節點的圖示是圓角矩形,動作圖示內部文字的建議格式為:

● 第一行標示動作的負責人,並將負責人名稱放置於小括號內。

● 第二行標示動作名稱,建議動詞起頭,並且採用具體明確的字眼。

延續前面的範例,如果銀行客戶沒有開過綜合存款帳戶,理財專員就會把銀行櫃員找過來,請銀行櫃員幫客戶開一個新的綜合存款帳戶,如圖6所示。

圖6 動作

很多業務流程中,都有主管審核的動作,要記得把主管審核的動作跟一開始的申辦動作切分開來,如圖7所示。

圖7 把審核動作切分開來

仔細看還漏了一個動作,開一個新的綜合存款帳戶都需要存第一筆款項,所以我們還要再加一個存款的動作,如圖8所示。

圖8 存第一筆款項

此外,動作盡量保持單純,最好一項動作(工作片段)只有一位負責人。如果一個動作需要多個人合作才能完成的話,可能這個動作的顆粒度就太大了。建議系統分析師遇到這種情況時,可以嘗試把這個動作切割成數個動作。

還有,評估並調整每一個動作的顆粒度,讓動作的顆粒度與使用案例的顆粒度相近。動作與使用案例顆粒度相近的話,產出活動圖之後,就可以同時產出初步的使用案例圖了。動作是候選使用案例,至於動作的負責人則是候選參與者。

對於使用案例一無所知的讀者可能會有一點閱讀障礙。簡單來說,一個使用案例代表系統提供的一項服務或功能,因此如果系統分析師在切割動作時,讓動作的顆粒度逼近使用案例的顆粒度時,這樣就會對於後續產出系統層面的使用案例很有幫助。

合併節點

前面提到判斷節點時,有提過「合併節點」(Merge Node)共用空心菱形圖示。所以,切記,合併節點的內部請留白,不要填入任何字眼。有些UML軟體工具,可以讓系統分析師在空心菱形圖示內部填入文字,請系統分析師不要填入任何字眼。

合併節點和判斷節點共用圖示,所以可能會出現兩者重疊共享一個空心菱形的狀況,說明如下:

1. 判斷節點會有一條進入動線,多條離開動線,而且在離開動線上頭會附有警戒條件,這意味著流程將依循著其中一條通過警戒條件的動線離開。

2. 合併節點會有多條進入動線,一條離開動線,而且離開動線上頭通常不會有警戒條件,意味著任何一條動線進入合併節點後,都只會依循著唯一一條離開動線往下通行。

3. 合併和判斷共享圖示的情況下,空心菱形會有多條進入動線,也會有多條離開動線,並且離開動線上頭附有警戒條件,意味著每一條進入空心菱形的動線會先合併,緊接著執行判斷,然後從其中一條通過警戒條件的動線離開,正如同圖9所示。

圖9 合併節點與判斷節點

在開基金戶的業務流程中,就出現了共享合併節點和判斷節點的狀況。在銀行櫃員協助客戶,開了一個新的綜合存款帳戶,並且存了第一筆款項之後,就沒其他動作了。因此,流程可以再導回空心菱形,先執行合併再進行判斷,如圖10所示。如果,您看不太懂是怎麼來的,可以看一下圖11的示意圖。

圖10 先合併再判斷

圖11 先合併再判斷的示意圖

活動

動作是不可再細切的最底層工作片段,相較之下,活動(Activity)則是指可以再往下細切的工作片段。一個活動的內部可以是由活動和動作混合組成,但是一個動作的內部就不會再有更細小的動作了。

所以,面臨比較複雜的業務流程時,系統分析師可以適度混用動作和活動。以前面的開基金帳戶流程為例,目前在業務流程中的動作似乎都跟開綜合存款帳戶有關,如圖12的示意圖。

圖12 另一張活動圖

如果,系統分析師想要把這些動作封裝起來的話,可以把這幾個動作移到另一張活動圖中,如圖13所示。這時候,原先的活動圖中,可以新增一個名為「開綜合戶」的活動圖示來取代原先的三個動作,如圖14所示。

圖13 開綜存戶

圖14 原先的活動圖

補充說明一下圖示,活動的圖示與動作的圖示相同,都是圓角矩形。不過,要是在活動圖中混用活動和動作的話,活動圖示右下角會出現一個三叉圖示(向下層級圖示),代表可以向下展開的意思。

特別提醒系統分析師,UML在改版時,活動圖示右下角的小標記有異動過。請您直接看到圖15的圖示,UML1的舊版標記是一個像啞鈴的圖示(其實是兩個動作串在一起的圖示),而UML2的新版標記則是一個像擺放向下的叉子圖示。

圖15 活動圖示有異動

分叉與會合

在一般的業務流程中,並行作業是十分常見的情況,系統分析師可以使用「分叉節點」(Fork Node)和「會合節點」(Join Node)來表達兩條甚至多條的並行流程。

分叉和會合兩節點的圖示相同,都是粗線段。分叉節點會有一條進入動線,多條離開動線,意味著一條流程進入分叉節點後,就會分叉成多條並行的支流。會合節點會有多條進入動線,一條離開動線,意味著多條支流進入會合節點後,將會合成一條流程,然後往下繼續執行下一個動作。

延續前面的開基金帳戶的業務流程,只要銀行客戶擁有綜合存款帳戶之後,無論是早已經擁有還是現場立即開辦的,總之銀行客戶得開了綜合存款帳戶後,理財專員才能夠為銀行客戶開辦基金帳戶。

接下來,就可以並行作業,以便節省作業時間了。所以,理財專員可以一邊請銀行客戶填寫風險容忍度測試表,另一邊則同時動手開立一個新的基金帳戶。兩條並行的流程將在會合節點處會合,之後才繼續執行下一個動作。此處,我們假設後續已經沒有其他動作需要執行了,可以讓流程動線進入活動終點,結束整條開基金戶的業務流程,如圖16所示。

圖16 分叉與會合

最後,我建議系統分析師在使用分叉節點和會合節點時,最好可以成對使用。而且,特別注意到,請不要使用合併節點來取代會合節點,這兩者是不同的概念:

● 會合節點會等待所有的進入動線都到齊了以後,才會往下執行下一個動作。

● 合併節點不會等待,所有進入動線都可以直接通過,繼續往下執行到下一個動作。

物件節點
在執行業務流程的過程中,經常會附帶產出相關的靜態物件,像是文件、表單就是十分常見的物件。倘若,系統分析師想要表達流程中流進或流出的資料項目,就可以使用此處介紹的「物件節點」(Object Node),它的圖示是矩形圖示。

延續前面的業務流程,系統分析師可以在銀行主管核准開基金戶步驟後面,加上一個名為「基金帳戶存摺」的物件節點,如圖17所示。或者,我們也可以更詳盡地把證件、印鑑,全都放入這條業務流程中,如圖18所示。

圖17 物件節點

專欄作者

熱門新聞

Advertisement