UML建模(二)--流程圖
本文會包含幾塊內容:
什么是流程圖?流程圖和其他圖表(如線框圖,概念圖,架構圖,用例圖)有什么不同?
為什么需要流程圖?
流程圖的分類?
1、什么是流程圖?
1.1 定義
流程圖=流程+圖。
流程:Flow,是指特定主體為了滿足特定需求而進行的有特定邏輯關系的一系列操作過程,流程是自然而然就存在的。但是它可以不規范,可以不固定,可以充滿問題。所以就會造成看似沒有流程。
圖:Chart 或者 Diagram, 是將基本固化有一定規律的流程進行顯性化和書面化,從而有利于傳播與沉淀、流程重組參考。
從定義可以看出,只要有事情和任務,流程就會有,但是并不是所有的流程都適合用流程圖的方式去表現,適合用流程圖去表現的流程是一定程度固定的有規律可循的,流程中的關鍵環節不會朝令夕改的。
1.2 流程圖的6大要素
●參與者:誰在這個流程中?可以是系統,可以是個打印機,更多的指什么角色——一般是有某種工種的人。比如客服同時有小A和小B兩人,但是若他們的工作性質完全一樣,那么在流程圖里只需要寫一個客服角色就可以了。
●活動:做了什么事,比如點餐,結帳等活動。
●次序:這些事情發生的前后順序如何,哪個任務是其他任務的前置條件?比如客人不結帳,就不會產生送他優惠卡的活動。
●輸入:每項活動開始取決于什么樣的輸入物或數據,比如做飯的師傅開始做菜時,需要拿到具體的點菜單。
●輸出:每項活動結束后,會輸入什么樣的文檔或數據傳遞給下一方,比如師傅做好菜后,如何讓負責傳菜的人知道菜已經做好?
●標準化:采用一套標準化的符號用以傳遞你的流程圖,從而使受眾更快明白。
2、流程圖的分類
常見的流程圖有業務流程圖(Transaction Flow), 頁面流程圖(Page Flow)。
在工作中,作為UED,你可能會發現PD經常談的是業務流程,而作為交互設計師,我們更多產出的是頁面流程圖。頁面流程圖和業務流程圖到底有什么關系呢? 先有誰,其次再有誰呢?
先講個故事:假設你的夢想是開個中高檔的全國連鎖餐館,那么首先你想到的應該不是如何去選址,而是將為何要開連鎖餐館這件事情,以及你的定位,核心競爭力想清楚。是快餐,還是點餐,是連鎖還是加盟?定位于社區還是繁華商圈?是川菜還是江浙海鮮?是面向中老年還是年輕人?是家庭主題還是動漫主題?競爭對手是誰?需要什么樣的投資?可能的風險是什么?這些都想清楚了,問題都有答案了,所謂戰略層要清晰了吧。然后假設你現在分析來分析去,與主要投資方決定了一個方向:面向年輕人的時尚動漫茶餐廳,連鎖,但是先在杭州開始第一家,選址定位于年輕人約會,掃街的地域,比如風景區,著名商圈,電影院旁…………等等等等,那么接下來呢?
接下來就是想辦法讓這些實現吧?那么需要做什么事情呢?選址?拉投資?搞裝修?選餐飲菜單?雇傭員工?每一步怎么去做,時間點是什么?等等的任務拆解以及計劃,就需要到戰術層了。
這些事情的執行,總是需要請人的吧?先是核心團隊分工去部署各項建設任務,當餐廳開設起來后,就需要組織穩定的運營團隊,如服務、衛生、廚房、采購、人事等等,廚房里面還得分工,白案,熱菜,冷菜等等吧?每個部門需要設置管理層以及匯報關系吧?所以你的組織結構就誕生了。
那具體每種角色是如何順暢合作完成日常穩定的以及突發的各項任務呢?比如,當顧客上門時,誰去引導客人入座,誰去點菜,怎么將點菜的訊息迅速傳遞到廚房,并分發到酒水間、冷菜間、熱菜間?并保證客人盡快能夠吃到所點的菜?你必須要考慮各種人員的協作流程,優化效率,所以業務流程就出現了。
人肉運營了一段時間,沒有借助任何點餐系統,你發現也還可以。客人點菜時,服務員手抄寫下客人的要求,因為有復印紙,所以服務員能夠將副本送入廚房,同時寫下餐桌號碼。廚房規模較小,負責分配任務的員工看下菜單,分別往冷菜處的黑板上寫下需要他們處理的,以及跑到熱菜區的黑板上寫下待處理的菜品,以及去酒水間報下品名即可。可是隨著經營的擴大,以上的人肉方式出現了很多問題,首先,手抄效率太低,顧客頻繁換菜,響應來不及,手抄出錯,導致經常報錯菜。廚房很混亂,不得不多招了幾個人專門跑堂。而一旦顧客要加菜,撤菜就更麻煩了,需要找出他們當時點的菜,再進行人工的批注和修改,同時要修改廚房后端的各個黑板……
所以你們想要開發一套智能系統,取代很多人肉工作,你們請了系統開發團隊,他們經過評估,判斷從點菜開始,一直到傳菜都可以用系統解決。手持終端,能夠快速傳遞顧客點菜需求到打印機,打印系統能夠根據顧客點菜的類型進行自動的分單打印,所以熱菜間看到自己的熱菜菜單,冷菜間看到自己的冷菜菜單,而酒水間看到酒店菜單。當他們準備完畢后,送出,傳菜員可以根據菜名與打印出來的單據進行傳菜并根據顧客的點菜小票進行核對。這套系統同時必須配備結算系統,將最終確認掉的菜單及消費價格傳遞到結算前臺,收銀員能夠快速進行操作。
這套系統最終是需要展現出來的,那么手持終端的界面如何設計?服務員能夠用更少的點擊完成一個菜的點餐嗎?結算中心的界面如何設計?
2.1 總體設計流程
通過以上的故事,是不是更明白從戰略、戰術、業務流程圖到頁面流程圖的關系了?總結下:
●先是有一個業務需求和業務目標,也即我們的愿景是什么?(戰略)
●然后就誕生了我們需要分解出什么樣的任務,如何執行戰術?(戰術)
●然后就誕生了需要架構什么部門,崗位去分工協作?(組織架構)
●然后就誕生了不同的部門在協作完成某件任務時的業務流程?(業務流程)
●業務流程基本穩定后,往往會考慮優化效率,所以會誕生出系統來支持流程,減少人肉環節,促進數據采集(系統愿景)
●為了設計這個系統,PD需要思考什么功能能夠取代某個環節的人肉工作(功能需求,系統流程)
●不管是怎么樣的功能最終都會以界面的方式呈現,設計師們會關注用戶在系統里的任務流,行為路徑,讓用戶完成任務更加高效愉悅。(頁面流程)
當然,除了業務流程,系統流程,頁面流程,還有數據流程被人關注。
我們平時工作中,還會經常聽人談到泳道圖啊,任務流程圖啊等等概念,究竟是神馬關系呢?
2.2 泳道圖
在工作中,我們經常能夠看到兩種業務流程圖,從表現形式來看,一種很好區分,俗稱為“泳道圖”的它,在樣子上也確實像個泳道,可以有橫向的泳道,也會有縱向的泳道。泳道圖在某些文檔里會被稱為“以活動為單位的流程圖”,浮在泳道中的都是一個個活動。
泳道圖有幾個關鍵點:兩大維度,活動流轉,流程要素。
2.3 以部門和崗位為單位的流程圖
另外一種類型是以部門和崗位為單位的流程圖,下圖中的圓形就代表一個個部門或崗位。矩形代表活動。這種流程圖關注事情如何完成的邏輯,但是在體現各個部門的責任上比較弱。如果是某個崗位的人來看,很難像泳道圖那樣一眼就能看到自己部門的職責和任務。所以現在用得比較少。
3、為什么需要業務流程圖?
3.1 業務流程圖與系統流程圖區別
流程圖可以提供一種簡單扼要的“縮略俯瞰圖”,幫助觀眾快速了解業務如何運轉。它包含了幾個關鍵詞:誰,什么時候,在什么條件下,做了什么事情,輸入什么,輸出什么,輸出給誰……
與系統流程不同,業務流程更關注于業務本身如何運作,講的是業務故事,包含的是業務規則。而系統流程則是滿足業務流程,實現部分流程或全部流程的信息化和系統化。
所以業務流程是所有環節的前置條件——軟件需求分析,信息系統建設也會先進行業務流程的梳理。
3.2 業務流程圖使用的三個場景
下面表現了業務流程圖是如何在三個主要場景中發揮作用的:
1、培訓
在此場景中:流程圖能夠提供一種快速了解業務如何運作的視圖,通過業務流程圖,新員工能夠快速明白業務的最終目標是什么,中有哪些角色在參與以及他們的職責,以及彼此之間的聯接。
除了培訓新員工,在員工輪崗、調職場景中,員工也需要業務流程圖參考,明白新的工作內容如何開展,以及自己所處的位置,自己的上游是誰,下游是誰,自己需要交付的工作內容是什么。
2、流程優化與重組
業務流程重組(Business Process Reengineering)的存在可以明確反駁:存在即合理。事實上,存在的業務流程并未是合理的,有可能是參與的多個角色習慣了某種做法,有可能是變革尚未影響到末端的操作,也有可能缺乏對于運行中的業務流程問題的洞察以及強有力的變革推動——因為要推動業務流程變革,不是某個部門的事情,而是需要流程中各個部門的通力配合。
更多時候,業務流程優化是自上而下的,但是老板們未必對實際運作的業務流程那么心知肚明,業務流程圖能夠很好去表現這個“運作模型”。通過看業務流程圖,找關鍵節點的人訪問,能夠直接切入:為什么要這么做,為什么不這么做?從而探索出更深層次的問題,而不是問:你們現在怎么做?
通過調研,分析業務流程圖,引入更多角色,能夠分析出目前業務流程的問題:缺失,重復,風險,效率等等。從而制定相應的優化方案。
3、信息化的基礎
正如上文所述的餐館夢想的案例,信息系統的一項任務就是解放員工的手腳,取代一些重復的人力勞動工作。系統上了之后,不是說業務流程不需要而是經過了一些調整,其中某個參與者變成了系統,或手持設備,或打印機而已。
那么在做系統的功能設計和系統流程設計時,是不是必須先要了解目前業務是如何運作的呢?從而更好分析分析,更好說明系統在什么環節取代了什么類型的人肉工作?
所以我們看到的PRD往往也會先以業務流程圖開始說明,而敘述一個系統建設的好處時,也可以用以前的業務流程與系統上了之后的業務流程進行對比。根據分析,將愿景中的新的業務流程圖背后需要系統的功能點撰寫清楚。
4、如何繪制業務流程圖
首先繪制業務流程圖本身有沒有流程?一定是有的。在軟件工程學里聽說一句話叫:萬物皆對象。那么在流程學里,萬事皆流程。吃飯難道沒流程嗎?就吃飯的動作而言,就有流程:拿筷子——夾菜——入口——咀嚼——吞咽。
那么,繪制業務流程圖有沒有可遵循的流程呢?我建議可以從下面4步著手。
1、調研
如何快速了解業務運作真相?有沒有調研的技巧放送?
2、梳理與呈現
能否快速將調研得到的文字和問題,快速轉化為業務流程圖?
業務流程圖的標準圖示是什么?
怎么評價一個業務流程圖的好與壞?
3、評審與確認——能否真正讓業務流程圖反映現實中的業務?
4、歸檔維護——流程不斷變更,業務流程圖如何快速響應?
4.1 業務流程圖的“烹飪三部曲”概述
在繪制業務流程圖前,思考如何精美、如何交互以及使用什么工具,都不應該是重點。
真正重點的是將業務流程圖的關鍵要素給搜集一番。請試圖回答清楚以下幾個問題,否則不要開始繪制流程圖:
- 整個流程的起始點是什么?整個流程的終結點是什么?
- 在整個流程中,涉及到的角色都是誰?
- 在整個流程中,都需要做什么事情?(可是是一個會議,可以是一個任務)
- 這些會議和任務是可選還是必選的?
- 分別產出什么文檔?
4.2 調研:問正確的問題,多問問題,多問幾個人
除了在本部分開始的那幾個問題要顧及到,其實調研過程解決的仍然是who,what,why,how,以及where的問題:誰,在什么情況下,做了什么事情,這個事情需要什么前置條件,又輸出了什么,這個事情在哪里完成的?搞明白這幾個問題,我們的調研就可以圓滿完成了。
流程圖的表現,要回答這幾個問題:
1、Who——誰?部門,角色,崗位
2、What——什么事情?
3、Where——在哪里做的?在我梳理的業務流程圖上,where更多表示是文檔還是各種系統,用來表示信息化的程度。比如當我們梳理中發現,有一項登記,是用excel而不是業務系統來進行的,那么在這里的where就可以表示為:excel文檔。
4、Document——那產生的這份文檔叫什么名字?也寫出來,代表有文件的傳遞,而以后要進行信息化的話,此份人肉文檔也是需要被消除而被系統取代的。(相反,如果這項工作是在某個系統里操作的,where就可以寫成“人事系統”,文檔可以繼續存在,即該系統中的表單名稱:“員工登記表單”)
5、Condition——條件。在這種條件下,下一個活動還能夠繼續,即用邏輯鏈接線的方式來表示一項活動的輸入和輸出,指向某個活動的箭頭就表示此活動的前置輸入條件。
6、Dicision——決策。有些活動會產生一個條件判斷,根據不同的判斷結果從而走不同的分支流程。比如輸入員工信息的時候,可以根據員工之前是否就職過,選擇不同的流程,對于已經就職過的,選用之前的工號而不用生成新的工號。
4.2.1 案例
舉個案例(如果不太恰當,請意會)。假設你受命要調研兩家餐飲店的業務流程,目的是給他們提供性價比最高的點餐系統。
在調研中:
你首先可以要求精通業務流程的人給你系統講解一遍。
調研具體操作的人,來驗證他給你講解的是否全面和偏差。
實地觀察和記錄(花點時間走遍業務流程)
三種方式相互結合使用。第一種方法可以讓你首先建立一個系統觀,了解大體枝干,但是很難切入到可能會出現問題的細節。第二種方法太依賴于問題的質量以及問問題的場景。有很多結論的不正確其實是因為問錯了人或者問問題的方法不對。那么就需要借助第三種,在觀察中再進行驗證。
比如,你現在找到了一個廚師:
你主要負責做什么菜系?
熱菜。
那菜單都是誰給你的?
我們的服務員。
她都怎么提供給你?
她負責客人點菜后,然后手寫一個單子,給我放到窗口上。
單子上都會寫什么?
桌號、菜名等
那如何客人點的是冷菜呢?
恩,有復印本,直接拿一份給冷菜間。
那你怎么開始工作呢?從洗菜到切菜,一直烹飪都是一個人嗎?
哦,不,我只負責烹飪。當接到菜單后,首先我的助理會進行擇菜,刀工進行切菜,這樣如果有幾個菜就完全可以并行。
當你們做好后呢?
放到窗口,按鈴,喊桌號和菜名,傳菜員就會傳菜。
……
在這些問題中,就涉及到了“分單”,“切菜”,“擇菜”,”烹飪”,“傳菜”,“上菜”幾個活動,也涉及到了“服務員”,“廚師”,“助理”,“刀工”,“傳菜員”幾個角色。幾個活動的次序也比較清楚了。
而另一家餐飲店的業務流程卻是不一樣的,你同樣抓住一個廚師進行詢問:
要做什么菜,菜單是哪里來的?
打印出來的。
所有菜都會在這里打印嗎?
哦,只有熱菜在這里打印出來,冷菜、酒水就會在冷菜間和酒水間打印出來。
打印機是誰在操作的?
沒人操作,它會自動打印不同的單子給我們。
……
下面的問題,可能廚師就不了解了,要問點菜員了。
請問你是怎么點菜的?
拿設備啊,客人點菜就按幾下,確認就好了。
之后呢?
之后就可以將菜單打印出來。
不同的菜系會在不同的烹飪間打印嗎?
是的,我們可以分單打印。是在這中心打印機里完成分單。
然后,你可以繼續調研烹飪后的傳菜和上菜流程。
4.3 梳理并呈現
你的調研和觀察使你擁有了“烹飪”所需的原材料。
- 角色:部門、崗位或人
- 活動:做了什么事情
- 次序:做這些事情的次序如何
- 規則:什么情況下到什么事情
接下來的任務是不是很簡單,對,就像填空題一樣簡單。將活動/事件按照一定的規則填到由部門和時間兩條維度決定的框框里。
這個階段是paper work,你需要將調研階段收集到的原材料用更直觀明了的方式呈現出來。從而能夠更好進行評審和確認。也為以后的流程評審和優化做準備。
4.3.1 復雜流程的分解
4.3.1.1 概述
不可能將所有的活動都放到一張圖里呈現。
“業務流程是有層次性的,這種層次體現在由上至下、由整體到部分、由宏觀到微觀、由抽象到具體的邏輯關系。這樣一個層次關系符合人們的思維習慣,有利于企業業務模型的建立 企業部門之間的層次關系表。一般來說,我們可以先建立主要業務流程的總體運行過程(其中包括了整個企業的大的戰略),然后對其中的每項活動進行細化,落實到各個部門的業務過程,建立相對獨立的子業務流程以及為其服務的輔助業務流程。”
——引自《百度百科》 業務流程詞條
4.3.1.2 劃分業務流程圖層次
對于很多新人來講,業務最難的在于劃分業務流程圖的層次上。
首先,明確你要梳理的業務流程的范圍——用大的粗略的關鍵節點,講清楚這個業務流程范圍中的故事,就是頂層業務流程圖。你的頂層業務流程圖是業務全局故事的簡單表達,但是請注意這里的業務全局不見得是公司整體的業務全局,而是你界定好的業務范圍。比如,下圖是餐廳的日常運作流程圖,若你界定的業務范圍是面向顧客的點餐和結帳流程,那么這就是頂層業務流程圖。但是若你界定的是整個餐廳的運作業務流程,那這顯然還是一個子集——并沒有包含餐廳的采購、供應商管理、一級庫存管理等工作。
其次,先從頂層的業務流程分解開始,由粗至細。頂層業務流程圖的梳理原則:
1、界定范圍內的業務全局故事。
2、包含該范圍內的關鍵節點。并且,當被質疑說某某環節怎么不存在時,自己要清楚它在下一層分解中應該被包含在那個關鍵節點中。比如,贈送10周年優惠券,應該會在結帳節點分解中出現。而打印分單,會在點菜節點中分解。而準備兒童座椅應該是接待入座環節。
3、頂層流程圖分解出來的關鍵節點未必都會細化分解下去,生成二級以及三級的流程圖。這要看該節點涉及到的“活動”以及“角色”是否復雜。
4.3.1.3 案例
再看一個案例,對傳統生產型企業的進銷存主業務流程進行分解。橙色的代表被分解點,已經可以分解為四層。當我們分解到第四層,發現再往下去涉及到的活動和角色都已經很少時,就不必再分解了,而是可以將第四層的關鍵節點直接作為第三層業務流程的“活動”,而不是子流程圖。
當然,這是依賴于你梳理業務流程的目標。如果你偏偏是要對“打樣”環節進行剖析優化,則還可以繼續分解下去。
這一步的工作會幫你建立出清晰的流程目錄結構,如下圖所示是摘選于剛完成的一個流程梳理的項目中的目錄結構部分。可以看到全圖即是頂層關鍵節點,作為老大,可能只要看這一層就夠了。下面則會對頂層做更多細化拆解。
“H3.樣品認證”在頂層業務流程圖中,僅僅是一個“活動”,而在自己細化的這一個層次中,則會包含詳細的子活動一級參與者。
4.3.2 流程圖的常用圖示
我常用的就是前兩行的“活動”,“判斷”,“邏輯關系線”,“起始與終止”,以及第二行的“子流程”,和“文件/表單”。如果你不是符號控,我建議這幾個就足夠了。
其中,“子流程”此圖示就是可以幫助你將流程分解得到的子流程能夠串聯起來,比如,當在”A流程”中涉及到進一步需要分解的”A1.1流程”時,就可以在”A流程”中用子流程符號代表“A1.1”。然后你的讀者就會明白要想進一步了解”A1.1″應該參考另外一個流程圖。
流程圖的常用結構:
4.3.2.1 案例
給大家看一些案例:
基本上包含大多數圖示的流程圖:
只用到少數幾個圖示畫的簡單流程圖(臺灣人的文檔中稱為程序圖——不過這里的程序不是指計算機程序,而是process,僅僅是體現任務之間的處理流程,所以使用極簡單的符號也不為怪了):
以上兩個流程圖案例,從符號的復雜程度上來講,一個是完整流程圖,一個是基本流程圖,但是從表現形式來講,都屬于“泳道圖”——Swimlane。這也是我們最常用的一種表現形式了。泳道圖能夠很好體現部門或者角色在流程中的職責以及上下游的協作關系。且流程圖本身的標準容易掌握,達成共識也就更加容易。
4.3.3 泳道圖精要
- 2大維度:一般泳道圖的橫向會作為部門或崗位維,當然也有例外,如上述案例中就是橫的泳道。而縱向則做為階段維——時間是從上到下發展的。如果復雜的泳道圖,在任務分解上可以在階段維里做一些劃分,比如“采購”,“生產”,“銷售”,”配送”等。
- 活動流轉:活動就像一個游泳員一樣,游到不同的泳道中去執行任務。
4.3.4 Do vs Donnot 業務流程圖的注意事項!
4.3.4.1 DO
- 讓涉眾參與,不要閉門造車:業務流程圖包含了你圖上的各個參與角色代表,與他們適時確認事情的原本流程,禁止自己YY。
- 恰當的層次分解,不要將所有都鋪到一張圖上:如上所示。
- 逐漸深入,先抓枝干:切忌胡子眉毛一把抓。
- 流程一定有開始和結束:切忌交付出來的流程圖,讓讀者還來問你:流程的開始點是什么?用清晰的代表開始和結束的符號來完成第一步和最后一步。
- 編號,編號,編號:這是讓溝通效率更高的優化措施。當你有了編號系統,相當于對你的流程圖都賦予了唯一識別身份證號。這比中文名稱更有效。比如當我們完成了業務流程圖后,負責業務流程規則審核和優化的部門能夠清楚在郵件里傳達:H5.1流程優化,大家就更明確指的是什么。
4.3.4.2 DON NOT
- 自己YY應用的環節而不是現實中的環節
- 所有的環節都試圖放到一張圖上
- 一開始就陷入細節,胡子眉毛一起抓
- 流程很難讓人分清楚從哪里開始,到哪里結束
4.4 評審及后續行動
驗證你是否做到了以上的DO,以及規避了Donnot的做法是什么?
很好辦,及時與各位進行評審。將各個涉眾都叫到一起,給他們看你梳理出來的成果。
這會發現一些有意思的事情,除了評審你的流程圖是否符合現實外,也會評審目前的業務流程是否符合理想。不同的部門和崗位的代表會在這個評審中,確認當前,也會相互提出意見,甚至吵起來,這不失于做流程優化的一個很好的契機。暫且不表了。