企業流程(Business Process),在於描述企業內部各個部門工作者(Worker)協同合作,以完成某一項任務,觸發這個任務的事件(Event)經常是來自於客戶所交付的需求。
而利用圖形來描述企業流程,稱之為企業流程圖。傳統上,我們將之簡稱為 "流程圖(Flow-chart)"。
UML 的規格中,很早就將表達企業流程的流程圖納於其內,並做了一些改良,稱之為活動圖(Activity Diagram)。活動圖與傳統的企業流程圖本質是一樣的,主要的差異在於活動圖針對圖形的語法做了一些改進,使之可以表達並行(Parallel)的流程行為。
活動圖表達了企業高階管理階層所關注的:可以一窺全貌,瞭解某項業務是由哪些部門工作者負責執行哪些活動(Activity);領域專家(Domain Expert),可以協助企業在某項任務上,減少所耗費的工時與節省成本,這稱之為 "企業流程再造(BPR, Business Process Re-engineering)"。
事實上, 資訊系統(Information System),也是屬於 BPR 的範疇,可以協助工作者節省人工作業的時間,或者可以讓某項原本是人工作業的活動成為自動化(Automation)。
為了讓資訊系統協助或取代工作者所做的事,需求分析師需要將原本是屬於人工作業的活動,其內必然有許多的工作事項(Work Item),據此轉為由資訊系統來承擔其作業,亦即,系統需提供服務或功能來讓操作系統的工作者使用。
直接由活動圖加上需求訪談記錄來開發系統,不是一個好方法,原因在於:
- 無法明確地區別哪些活動是純人工作業、哪些活動是由工作者來操作使用系統、哪些活動完全不需人工介入,已經全由系統自動化了。
- "實現(Realize)" 某項活動是由 "哪一個系統" 來負責。也就是說,可能有多個資訊系統服務於企業內部,卻無法很明確可以指出該活動是由哪一個資訊系統(也有可能是多個系統的合作)來負責的。
- 無法有效釐清操作系統的使用者是誰,也無法看出是否有支援性(Supporting)的系統也參與其內。
活動圖確實可以有效地表達出企業高階經理人的觀點,但是卻不容易據此成為系統的需求,以表達出工作者操作系統的角度。系統層次(System-level) 的使用案例,正是能最有效表達出系統的範圍、操作系統的使用者、使用者使用系統的目的。活動圖與使用案例圖,可以達成最好的互補—活動圖表達企業流程;使用案例圖表達系統層次的操作。
經由一些原則與步驟,其實可以很容易地從活動圖中的活動,找出資訊系統的使用案例。因為使用案例可以明確地釐清系統範圍、系統操作的使用者、使用者操作系統的目的,所以,使用案例可以成為實現系統功能需求的最佳前導工具。
藉由一個 "臨時調高信用卡額度" 的案例來說明如何從活動圖找出系統的使用案例。
先瞭解該案例的簡單描述:
客服人員接到信用卡客戶要求臨時調高信用額度,客服人員詢問調整原因並向客戶詢問身份字號、出生日、聯絡住址等登錄之基本資料以確認是否本人,並調閱繳款記錄是否異常。然後詢問客戶打算調高之額度為何及調整之期間多久。確認完畢後,即送出案件,啟動客服流程。
案件送出,即通知客服後勤人員處理,客服後勤人員從工作駐列(Queue)中取得案件後,判斷臨時調高之信用額度是否為客服人員被授權的額度內,若是,則以電話聯絡客戶再確認是否有提出申請,確認完畢即結束流程。
若臨時調高之額度高於客服人員之授權,則後勤人員以電話聯絡客戶後,向客戶確認是否申請並解釋他被授權所能調整之額度,若客戶仍需超過額度,則後勤人員將案件轉呈客服主管處理,客服主管收到案件後,回電客戶確認資料並決定授權金額,確認完畢後即結束流程。
步驟一:利用活動圖,表達該案例的業務流程
圖一、「臨時調高信用額度」的企業流程活動圖
步驟二:找出潛在資訊系統的使用案例
將活動圖中的每一個活動(Activity)當成是系統使用案例的候選者(Candidate),然後,針對每一個活動詢問以下幾個問題:
- 誰是工作者(Worker)?
- 需要系統提供服務嗎?若是,是由哪一個系統負責?
- 系統提供什麼服務?
- 系統是否需要支援的參與者(Supporting Actor)?若需要,是哪一個參與者?
*** P.S. ***
當利用活動分割(Partition)將活動圖切開,以界定活動是由那個部門或工作者所負責的,若是相鄰的兩個活動都是位於同一個活動分割內,且處理的時間是非常接近時,有時候會將相鄰的兩個活動視為是同一個活動再詢問以上的問題。
從步驟一的活動圖,利用步驟二所提供的問題詢問方式,來找出本案例中,哪些活動會成為系統的使用案例。
※活動名稱 | 申請臨時調高信用額度 |
---|---|
●誰是工作者? | 客戶 |
●需要系統提供服務嗎? | 是,線上金流系統 |
●系統提供什麼服務? | 填寫額度調整申請資訊 |
●系統是否需要支援的參與者? | 否 |
※活動名稱 | 處理客戶服務需求 |
---|---|
●誰是工作者? | 客服人員 |
●需要系統提供服務嗎? | 是,線上金流系統 |
●系統提供什麼服務? | 處理服務需求 |
●系統是否需要支援的參與者? | 否 |
※活動名稱 | 處理信用額度申請與調整額度 |
---|---|
●誰是工作者? | 後勤處理人員 |
●需要系統提供服務嗎? | 是,線上金流系統 |
●系統提供什麼服務? | 處理授權內額度調整 |
●系統是否需要支援的參與者? | 否 |
※活動名稱 | 風險評估與調整額度 |
---|---|
●誰是工作者? | 客服主管 |
●需要系統提供服務嗎? | 是,線上金流系統 |
●系統提供什麼服務? | 處理額度調整 |
●系統是否需要支援的參與者? | 是,風險評估子系統 |
步驟三:畫出系統的使用案例圖
依據步驟二所分析出的結果,所繪出的使用案例圖如下:
圖二、「臨時調高信用額度」的系統使用案例圖
Hi Apple:
不會直接在 UC 內寫到非常 “精細”,但會 “link” 包括 Business rule or detailed fields 甚而 UI。
道理顯而易見,保持 UC 的可讀性以及不因這些繁雜的細節而需時常變更內容。
另,利用 UC 是希望讓需求的收集與分析變得更 “單純” 與 “簡單”。若,反而變得複雜,我是認為,其中在畫 UC 圖及表達 UC 的過程中,應該是出了問題。
另,再一次強調,UC 不是代表需求的全部,它可以很充分地表達參與者使用系統的互動,但無法表達完整的企業流程,後者,利用如 DFD or Activity 圖是比較理想的。
沒有錯,這也一般所認知之使用者案例~我們可以很清楚,每個使用者案例,所負之責任,及與每個使用者與哪一些案例有關。 但更令我好奇的是,每個使用者案例,又是該如何描述其細節呢? 包不包括Business Rule,包不包括所要使用到的欄位屬性,及欄位大小及格式。我的意思是指,要寫到多細呢? 因做學術研究,我曾問到一些公司,他們有用到UML,但唯獨不用Use Case,因為他們認為1.要教育使用者看懂use case,要花時間 2.一個小小的東西,通常,他們要劃上N的Use Case,事實上,變複雜了!
所以他們還是習慣用SRS及DFD來做事~. 王兄有何看法呢?