作為一個(gè)產(chǎn)品經(jīng)理桑逝,畫流程圖是必備的技能棘劣。如制定訂單處理的流程,制定商品審核的流程等楞遏。
有很多的文章介紹如何畫流程圖茬暇,我們發(fā)現(xiàn)有各種畫法首昔,也有各種概念。這里產(chǎn)生一個(gè)問題:到底什么樣的流程圖是正確的糙俗?
有沒有標(biāo)準(zhǔn)的畫法勒奇?無標(biāo)準(zhǔn)野路子的流程圖必然會(huì)產(chǎn)生歧義,必然是思路混亂的巧骚。而網(wǎng)上相當(dāng)比例都是野路子流程圖赊颠。比如以下兩個(gè)流程圖就都是有問題的,并導(dǎo)致表達(dá)混亂劈彪。
其實(shí)流程圖是有標(biāo)準(zhǔn)的竣蹦,這就是UML(統(tǒng)一建模語言)制定的標(biāo)準(zhǔn),被其稱為活動(dòng)圖沧奴。并且這個(gè)標(biāo)準(zhǔn)被微軟和IBM等大廠采用痘括,用來做業(yè)務(wù)分析。下面我們通過學(xué)習(xí)就能夠分析出來上面兩個(gè)流程圖的問題在哪里滔吠。
既然了解到很多流程圖是有問題的纲菌,所以要畫好也不是那么容易。所以我也會(huì)分三篇文章來介紹UML的流程圖怎么畫疮绷,分別是:
第一篇:如何制作正確的流程圖翰舌?
第三篇:如何將流程圖用在日常工作和生活中冬骚?
其中第一篇會(huì)讓大家理解流程圖的正確姿勢(shì)和語言椅贱。第二篇會(huì)手把手教讓大家繪制粗細(xì)得當(dāng),人人喜歡的流程圖唉韭,并進(jìn)一步擴(kuò)展流程圖的進(jìn)階知識(shí)夜涕。已經(jīng)完成請(qǐng)移步閱讀。
先學(xué)制作流程圖的規(guī)則是什么属愤,這就好比下象棋女器,我們首先要理解下棋的規(guī)則是什么,然后再學(xué)習(xí)如何去贏得比賽的策略住诸。如果反過來驾胆,這就好比知道怎么下棋,卻不了解基本規(guī)則一樣贱呐。規(guī)則枯燥丧诺,但還是要先來學(xué)習(xí)的。
第三篇是擴(kuò)展奄薇,即通過學(xué)習(xí)流程圖更好的去在工作中表達(dá)溝通驳阎,甚至可以用來理解編程語言。進(jìn)行擴(kuò)展這點(diǎn)也是我之前的觀點(diǎn)學(xué)習(xí)知識(shí)重要的在于“建立知識(shí)的多通道連接”,只有建立知識(shí)之間的連接呵晚,才能讓技能飛速增長(zhǎng)蜘腌,打通任督二脈!具體文章請(qǐng)移步看《產(chǎn)品經(jīng)理工作遇到困境饵隙,學(xué)什么來破解撮珠?》
本文是第一篇包括:流程圖的意義、流程圖如何繪制金矛、分析網(wǎng)上常見的流程圖的問題芯急。
一、流程圖的意義
產(chǎn)品經(jīng)理畫流程圖有兩個(gè)作用, 分別是:
1)用于和非研發(fā)部門交流: 決定人員都做什么工作驶俊?描述公司的核心業(yè)務(wù)娶耍。例如用戶下單后,就涉及到物流部門進(jìn)行發(fā)貨废睦,系統(tǒng)進(jìn)行開發(fā)票等工作伺绽。
2)用于和開發(fā)人員交流:對(duì)于系統(tǒng)開發(fā)人員來講,更關(guān)心的是這個(gè)訂單系統(tǒng)的流程是什么嗜湃。因此需要更多的細(xì)節(jié)描述,如下單之后如果出現(xiàn)供貨不足無法發(fā)貨澜掩,該怎么處理购披?
我們下一篇就會(huì)展開不同目的如何繪制流程圖,本篇主要目標(biāo)是繪制表達(dá)無錯(cuò)的流程圖肩榕。
對(duì)于產(chǎn)品經(jīng)理則要重視流程圖的繪制刚陡。
首先,很多產(chǎn)品經(jīng)理往往一上手做交互頁面原型株汉。但這樣往往因?yàn)榱鞒滔氩磺宄鹑椋瑢?dǎo)致原型圖需要重畫。所以注意要先畫流程圖乔妈,再畫原型圖蝙云。
其次,研發(fā)經(jīng)常批評(píng)產(chǎn)品經(jīng)理的地方就是產(chǎn)品經(jīng)理沒有邏輯路召,而畫流程圖就是建立你的邏輯的一種方法勃刨,也最終用在面試表達(dá),產(chǎn)品評(píng)審發(fā)言中股淡。
下面我們就展開說明流程圖怎么畫身隐。
二、流程圖如何畫唯灵?
流程圖是為了完成某一任務(wù)而描述的相關(guān)活動(dòng)以及這些活動(dòng)的執(zhí)行順序贾铝。UML稱流程處理的圖為活動(dòng)圖,但為了便于討論后面還稱其為流程圖。
下面我們以訂單流程為例子垢揩,帶領(lǐng)大家一步一步畫出大廠標(biāo)準(zhǔn)的流程圖玖绿。整個(gè)流程涉及到從用戶下單到收貨的流程。下面就是這個(gè)訂單流程水孩。
其邏輯是用戶下單后镰矿,物流人員就需要送貨到家,用戶收貨后俘种,在點(diǎn)擊確認(rèn)收貨秤标,即完成整個(gè)訂單。這里就涉及到以下概念:
1. 活動(dòng)的概念
這里物流人員送貨到家和用戶確認(rèn)收貨宙刘,都體現(xiàn)了一個(gè)人做了什么事情苍姜,都會(huì)涵蓋“主語+謂語+賓語”⌒“用戶”是主語衙猪,“點(diǎn)擊”是謂語,“確認(rèn)收貨”是賓語布近。
而人做了什么事情垫释,就體現(xiàn)了一個(gè)“動(dòng)作或操作”。而UML則稱其為活動(dòng)撑瞧,其實(shí)和動(dòng)作是同樣的意思棵譬,后續(xù)我們都用活動(dòng)這個(gè)概念。
活動(dòng)的標(biāo)準(zhǔn)畫法是帶圓角的矩形框预伺,里面寫具體的活動(dòng)订咸,活動(dòng)內(nèi)容寫成“主語+謂語+賓語”,賓語或主語根據(jù)說話習(xí)慣可以考慮省略酬诀。
活動(dòng)之間用帶箭頭的線連接在一起脏嚷,稱其為“轉(zhuǎn)移”。表示做完了一個(gè)活動(dòng)就可以轉(zhuǎn)移到下一個(gè)活動(dòng)瞒御,比如物流人員送貨到家后父叙,用戶才會(huì)確認(rèn)訂單完成,否則就無法進(jìn)入下一個(gè)活動(dòng)葵腹。
2.? 起點(diǎn)和終點(diǎn)概念
一個(gè)流程圖有一個(gè)“起點(diǎn)”高每,作用是表明一個(gè)流程從這里開始。起點(diǎn)畫法是個(gè)實(shí)心小圓践宴。
一個(gè)流程圖也有“終點(diǎn)”鲸匿,作用是表明上一步的“活動(dòng)”就是這個(gè)流程的結(jié)束,對(duì)于上面的訂單流程而言結(jié)束的活動(dòng)就是“用戶確認(rèn)收貨”阻肩。這個(gè)活動(dòng)完成后带欢,整個(gè)流程就算完成了运授。終點(diǎn)畫法則是一個(gè)實(shí)心圓加一個(gè)空心圓。
注意:起點(diǎn)必須有乔煞,而終點(diǎn)可以省略不畫或有多個(gè)吁朦。終點(diǎn)畫上的好處是可讓別人知道你考慮了終點(diǎn)因素。但有的流程涉及到的終點(diǎn)過多渡贾,并且結(jié)束顯而易見逗宜,畫上就顯得累贅。
3. 判斷和并行概念
現(xiàn)在我們已經(jīng)能夠畫出了流程圖空骚。但我們發(fā)現(xiàn)這個(gè)流程會(huì)有很多細(xì)節(jié)需要補(bǔ)充纺讲,這就是我們接下來要介紹的判斷和并行概念。我們以問題為出發(fā)點(diǎn)囤屹,來看看如何完善流程圖熬甚。
如果訂單針對(duì)“網(wǎng)上支付或貨到付款”有不同的處理過程如何表達(dá)?——用判斷標(biāo)志來解決肋坚。
此時(shí)物流人員就需要對(duì)訂單進(jìn)行判斷乡括,如果是網(wǎng)上支付(送貨前支付)則直接給貨物到用戶,否則必須先讓用戶支付現(xiàn)金或先刷POS機(jī)后智厌,再給貨物诲泌,此時(shí)流程圖如下:
這個(gè)判斷點(diǎn)就用菱形符號(hào)來表示,此時(shí)是一個(gè)進(jìn)入多個(gè)出铣鹏,并且在出的線條上用方括號(hào)表明判斷條件档礁。這里的:
條件一是“如果用戶是網(wǎng)上支付”(簡(jiǎn)稱:網(wǎng)上支付),則相應(yīng)的動(dòng)作是“物流給貨物到用戶”吝沫;
條件二是“如果用戶是貨到付現(xiàn)金”(簡(jiǎn)稱:現(xiàn)金支付),則相應(yīng)的動(dòng)作是“物流收取現(xiàn)金”递礼。
條件三是“如果用戶選擇POS支付”惨险,則“物流用POS機(jī)收錢”。
注意和其他流程圖的菱形符號(hào)中間要寫字不同脊髓,這里不允許在菱形符號(hào)中間寫任何字辫愉,但表達(dá)的意思是一樣的。菱形位置里面其實(shí)是可以寫“物流確認(rèn)支付情況”将硝,寫文字易于理解但是略顯累贅恭朗。
再如電商遇到的如果用戶支付完畢,有的時(shí)候會(huì)反悔并告知商家依疼。對(duì)于商家也會(huì)存在兩種選擇痰腮,“同意則取消訂單”或“拒絕則堅(jiān)持發(fā)貨”。這兩種表達(dá)方式都可以達(dá)到同樣的效果律罢,只是方法不同膀值。
了解了和傳統(tǒng)流程圖的不同表示方法后棍丐,對(duì)于UML體系,除了上面介紹的用帶菱形的表示方法外沧踏,另外一個(gè)方式是不加入菱形判斷圖標(biāo)歌逢,如下圖所示:
這兩種表達(dá)方法都是可以的,但需要注意要在轉(zhuǎn)移線上寫出判斷條件翘狱。對(duì)于本案例加入判斷的菱形圖標(biāo)會(huì)更加清晰秘案,此時(shí)明確物流人員在這里要進(jìn)行一個(gè)判斷。
如果用戶還要同時(shí)開發(fā)票則流程怎么表達(dá)潦匈?——用并行標(biāo)志來解決阱高。
現(xiàn)在很多的送貨是貨物和發(fā)票放在了一起一并寄送過去,或者支持電子發(fā)票的方式历等。但是還有一些企業(yè)開紙質(zhì)發(fā)票讨惩,并且貨物和開發(fā)票地并不一致。這個(gè)時(shí)候就需要貨物和發(fā)票分別寄送到用戶手里寒屯。
此時(shí)意味著兩撥物流人員一個(gè)在送貨和一個(gè)在寄送發(fā)票荐捻。這里就是一個(gè)并行處理,表達(dá)方式如圖所示:
畫法是畫一個(gè)粗橫線寡夹,再加上一個(gè)進(jìn)入和多個(gè)出的轉(zhuǎn)移線條处面。對(duì)于本例子,出的兩個(gè)分支流程是配送貨物和發(fā)票寄送菩掏,此時(shí)同步處理但并不在意誰先做誰后做魂角。
4. 匯合和合并概念
網(wǎng)上支付和現(xiàn)金支付送任意一個(gè)完成就算完成如何表達(dá)?——用合并來解決智绸。
此時(shí)只要是網(wǎng)上支付或現(xiàn)金支付任意一個(gè)方式就算完成了支付野揪。即條條大路通羅馬,我們只要一個(gè)路徑能到達(dá)瞧栗,就可以進(jìn)行下一步了斯稳,此時(shí)有兩種表達(dá)方法:
第一種方法直接通過三條轉(zhuǎn)移線連接到下面的活動(dòng)即可,這個(gè)也是我們?cè)谇懊婵吹降募?帧5诙N方法是畫一個(gè)菱形并且多進(jìn)一出挣惰。注意這個(gè)菱形符號(hào)在這里不是表示要判斷,只是借用了菱形符號(hào)而已殴边,因此也不必在線條旁邊加入判斷條件憎茂。
實(shí)際上第二種畫法是UML的標(biāo)準(zhǔn)畫法。但畢竟看流程圖的人有的不是編程人員锤岸,畫上會(huì)讓人誤解竖幔,為了便于溝通可以選擇第一種畫法。但是在看到網(wǎng)上的流程圖加入合并的菱形標(biāo)志的時(shí)候能耻,要意識(shí)到這里不是進(jìn)行判斷赏枚,而是在做合并亡驰。
這里另一個(gè)例子就是用戶可點(diǎn)擊確認(rèn)收貨,而系統(tǒng)也可以自動(dòng)確認(rèn)收貨饿幅,也是那個(gè)先確認(rèn)收貨都算收貨凡辱,訂單即最后完成。
發(fā)票和商品用戶都收到才算訂單完成如何表達(dá)栗恩?——用匯合來解決透乾。
前面我們講了貨物和發(fā)票是分別寄出的,對(duì)于用戶必須是發(fā)票和貨物同時(shí)收到了才會(huì)點(diǎn)擊“確認(rèn)收貨”磕秤,兩者缺一不可乳乌。具體表示見下圖:
表達(dá)方式是一個(gè)粗橫線,再加上多個(gè)進(jìn)入和一個(gè)出市咆。進(jìn)入的分支是送貨物和送發(fā)票汉操,此時(shí)同步處理但并不在意誰先做誰后做,但匯合的時(shí)候必須要都完成才可進(jìn)入到下一步蒙兰。
另一個(gè)例子就是吃飯上菜的例子磷瘤。我們到餐廳菜是分別上的,只有都上完了才算完成了搜变。而在野路子的流程圖中采缚,是沒有辦法表達(dá)這個(gè)并行匯合處理的。
通常并行和匯合成對(duì)出現(xiàn)挠他,此時(shí)并行執(zhí)行兩組活動(dòng)扳抽,但必須兩組活動(dòng)都完成才能進(jìn)入下一環(huán)節(jié)。而上圖也就是一個(gè)完整的流程圖了殖侵。
5.? 流程圖的總結(jié)
流程圖表示方法最后總結(jié)如下表:
三.? 通過問題學(xué)概念
流程圖的繪制方法和邏輯看完了之后贸呢,我們?cè)賮砜匆恍﹣碜跃W(wǎng)上的流程圖,逐一明確一下常見的問題是什么拢军?好讓我們避免同樣的錯(cuò)誤贮尉。
案例一:流程圖中不應(yīng)有非活動(dòng)的內(nèi)容
上面的流程圖是說產(chǎn)品經(jīng)理的工作包括需求收集,需求討論和需求評(píng)審等工作朴沿,并為此畫了流程圖進(jìn)行闡述。思考一下,這個(gè)流程圖的問題是什么?
我們按照流程圖的概念來看皂林,流程圖要求每個(gè)框起來的都是一個(gè)活動(dòng)锭部,活動(dòng)的典型即存在“主+謂+賓”。
在這里面“有效需求凶掰、已有功能和需求池”都不是一個(gè)活動(dòng),這里都是在說需求的不同類型和功能概念。真正體現(xiàn)活動(dòng)的是產(chǎn)品經(jīng)理進(jìn)行“收集需求鸿竖,討論需求和需求評(píng)審”沧竟。
而這里大家會(huì)說,我要體現(xiàn)“有效需求和需求池”等概念該怎么做缚忧?
那么可以這樣描述:我們可以將需求劃分為新需求+老需求悟泵,其中新需求產(chǎn)品經(jīng)理需要過濾成有效需求和無效需求。而進(jìn)入需求評(píng)審環(huán)節(jié)的是新需求的有效需求和老需求并放入需求池中闪水,在這個(gè)環(huán)節(jié)我們決定本期開發(fā)的需求是那些糕非。
上面這種描述,如果你理解了UML的面向?qū)ο蟮乃伎挤椒ㄇ蛴埽涂梢杂行砻枋隽诵喾省_@個(gè)以后也會(huì)有專題來講。另外其實(shí)知識(shí)是相通的持钉,如果按照金字塔原理進(jìn)行邏輯思考衡招,也能得出上面的描述內(nèi)容。
通過這個(gè)案例每强,我們發(fā)現(xiàn)將需求處理的方案和需求評(píng)審流程的描述混在一起始腾,會(huì)讓受眾群體迷惑,而如果分開描述則會(huì)清晰很多舀射。
案例二:流程圖不同于狀態(tài)圖
這是一個(gè)買家下單和付款的流程窘茁。這里仍然按照“主謂賓”來拆分,我們發(fā)現(xiàn)待付款不是一個(gè)活動(dòng)脆烟,而是一個(gè)狀態(tài)山林。而橫線上的“買家下單”才是個(gè)活動(dòng)(即用戶點(diǎn)擊下單)。
因此這個(gè)仍然不是流程圖邢羔,在UML里更適合用狀態(tài)圖來表達(dá)驼抹。如果此時(shí)按照狀態(tài)圖的角度來看,這里也是有問題的拜鹤,我們以后會(huì)有專題來講狀態(tài)圖框冀。
案例三:流程圖的邏輯需要仔細(xì)思考
這個(gè)流程圖大家看是從用戶下單到供應(yīng)商供貨的流程,我們假設(shè)這個(gè)就是京東或天貓的訂單流程敏簿。在這里“生成送貨單明也,以及用戶選擇支付方式,收款”等環(huán)節(jié)存在邏輯問題惯裕,大家想想邏輯問題是什么温数?
此時(shí)我們回憶一下我們?cè)谫徫顰PP上如何下單的?這個(gè)流程是:
1)用戶從購物車點(diǎn)擊“去結(jié)算”蜻势,就會(huì)打開“提交訂單頁面”撑刺。
2)在“提交訂單頁面”允許用戶選擇網(wǎng)上支付還是貨到付款,以及編輯送貨地址握玛,此時(shí)點(diǎn)擊“提交訂單”按鈕够傍。
3)則系統(tǒng)生成訂單甫菠,并展示給用戶“支付頁面”。
4)在“支付頁面” 允許用戶可以選擇某銀行卡或支付寶后冕屯,再點(diǎn)擊“銀行卡支付”按鈕寂诱。
5)此時(shí)系統(tǒng)展示“輸入網(wǎng)銀(或支付寶)密碼”的頁面。
6)在“輸入密碼頁面”? 用戶“輸入賬戶密碼”后就完成了訂單支付愕撰。
回憶完整個(gè)流程后刹衫,我們會(huì)發(fā)現(xiàn)如下問題:
問題一:“用戶選擇支付方式,之后收款搞挣,中間可以取消訂單”這個(gè)概括就不正確带迟。
實(shí)際上是“在提交訂單頁面,用戶先點(diǎn)擊提交訂單囱桨;之后彈出輸入密碼頁面仓犬,用戶輸入密碼完成支付”。此時(shí)在點(diǎn)擊提交訂單后不輸入支付密碼時(shí)舍肠,用戶可以到個(gè)人訂單列表里面選擇“取消訂單”搀继。因此概括起來是:用戶提交訂單,之后用戶支付訂單翠语,在提交訂單后可以取消訂單叽躯。
問題二:生成送貨單和其他活動(dòng)不是并列關(guān)系。
系統(tǒng)的實(shí)際工作過程是“用戶點(diǎn)擊提交訂單”后肌括,系統(tǒng)就會(huì)生成訂單点骑,并拋出一個(gè)讓用戶來支付的頁面。這個(gè)生成的訂單我們可以在訂單列表里面看到谍夭,針對(duì)待付款的訂單用戶可以進(jìn)行支付或取消訂單黑滴。所以生成送貨單和選擇支付方式是不是同時(shí)進(jìn)行的關(guān)系。
通過這個(gè)案例其實(shí)發(fā)現(xiàn)流程訓(xùn)練首先需要仔細(xì)思考每個(gè)環(huán)節(jié)紧索。其次這個(gè)涉及到對(duì)流程對(duì)每一步如何進(jìn)行抽象的問題袁辈,如何畫出人人都喜歡都明白的流程圖的問題。這也是第二篇要重點(diǎn)講的地方珠漂。
四.? 總結(jié)
通過本篇文章晚缩,大家了解了標(biāo)準(zhǔn)的流程圖的畫法。
這里首先需要理解活動(dòng)媳危,判斷橡羞、并行、并行匯合和合并等基本概念济舆。其次通過三個(gè)例子,說明如何正確表達(dá)流程圖莺债,而不要學(xué)了假的流程圖滋觉。
其次發(fā)現(xiàn)流程圖只是其中的一種邏輯思考和表達(dá)方式签夭,還有很多其他的方式需要進(jìn)一步解鎖。
最后舉例的三個(gè)流程圖指出了問題椎侠,但沒有畫出來第租。大家可以留言說說你的思路、說說認(rèn)為的流程圖怎么畫我纪。
向你推薦系列講思路的文章慎宾,解決產(chǎn)品人表達(dá)不清,找不到方案浅悉,理不清業(yè)務(wù)的問題趟据。