寫在前面:
這塊是自己的弱區(qū),在每個(gè)產(chǎn)品開(kāi)發(fā)之前携冤,PRD里必須要有功能邏輯圖的部分悼粮,直觀的影響是便于開(kāi)發(fā)看懂每步需求怎么碼,二來(lái)也是排查自己思考的邏輯死角
如何正確的畫出功能邏輯圖曾棕?
這就是我所理解的產(chǎn)品架構(gòu)三部曲申尤。
當(dāng)我們需要設(shè)計(jì)任務(wù)型功能的時(shí)候,除了基礎(chǔ)的線框圖和交互胶逢,更需要提前搞清楚整個(gè)功能的內(nèi)部邏輯流程初坠,簡(jiǎn)稱功能邏輯圖碟刺。
舉幾個(gè)大家熟悉的任務(wù)型功能作為例子,方便大家理解概念。
比如電商的下單蜂挪,大概包含查看商品→選擇數(shù)量→填寫收貨地址→添加留言→付款重挑。
其中的退貨也是严肪,選擇商品→申請(qǐng)退貨→填寫退貨信息→賣家審批→寄送商品→賣家確認(rèn)物品無(wú)誤→退款到賬酝枢。
包括優(yōu)惠券的使用袍患,是生成訂單前還是訂單后都是有講究的仑撞。
一桶良、為什么需要功能邏輯圖
當(dāng)需要設(shè)計(jì)這樣復(fù)雜步驟的功能,一定要學(xué)會(huì)畫出內(nèi)部的邏輯流程负蚊。
當(dāng)然有時(shí)候也需要結(jié)合功能結(jié)構(gòu)的思想,先拆分功能盡量少耦合颓哮,再畫出內(nèi)部邏輯家妆。
然后和后端工程師過(guò)一遍邏輯,如果沒(méi)有問(wèn)題冕茅。再去設(shè)計(jì)具體的前端頁(yè)面伤极,最后才是專注于視覺(jué)細(xì)節(jié)。
如果沒(méi)有先產(chǎn)出功能邏輯圖姨伤,而是只畫線框圖和交互哨坪,那修改迭代的次數(shù)至少是上百次。
二姜挺、功能邏輯圖是什么
表現(xiàn)功能內(nèi)部的邏輯走向齿税。可指導(dǎo)設(shè)計(jì)具體的頁(yè)面和交互炊豪。
功能邏輯圖和功能結(jié)構(gòu)圖的區(qū)別
注意是功能內(nèi)部的邏輯流程凌箕,不是誤認(rèn)為是拆分功能拧篮。后者詳見(jiàn)《如何正確的畫出功能結(jié)構(gòu)圖》。
兩種圖形的使用場(chǎng)景是不一樣的牵舱,分析功能的維度是不一樣的串绩。
一般來(lái)說(shuō)先從業(yè)務(wù)上拆分功能到最細(xì)的粒度村生,然后再去畫功能邏輯圖穿香。有時(shí)候最細(xì)粒度的功能很簡(jiǎn)單梳庆,邏輯圖可不畫脉幢。
多啰嗦一句与斤,區(qū)分這2者也可以使用UML的用例思想來(lái)區(qū)分撒汉。
功能邏輯圖和狀態(tài)機(jī)的區(qū)別
通俗意義上的功能邏輯圖表現(xiàn)是行為這個(gè)維度以及變化湘今,而狀態(tài)機(jī)是狀態(tài)間的變化返劲,維度是狀態(tài)塞淹。后者詳見(jiàn)《如何繪畫狀態(tài)機(jī)來(lái)描述業(yè)務(wù)變化》窟蓝。
功能邏輯圖和UML時(shí)序圖的區(qū)別
算是時(shí)序圖的簡(jiǎn)易版吧,UML學(xué)起來(lái)有一定門檻饱普。但是功能邏輯圖很容易上手运挫,只是欠缺一些uml的特性。
三套耕、如何畫功能邏輯圖
繼續(xù)以電商APP的下單功能為例來(lái)講一下如何畫下單這個(gè)功能的邏輯圖谁帕。
因?yàn)檫@個(gè)功能實(shí)在是太復(fù)雜,不建議一次性畫出邏輯流程冯袍。建議先按照上文《如何正確的畫出功能結(jié)構(gòu)圖》拆分出多個(gè)子功能匈挖。
然后按照子功能分別畫出對(duì)應(yīng)的功能邏輯圖。注意這里只畫了立即購(gòu)買的下單功能康愤,購(gòu)物車結(jié)算的可以查看加入購(gòu)物車关划,加載購(gòu)物車,展示購(gòu)物車翘瓮,操作購(gòu)物車贮折。
選擇商品
確認(rèn)訂單
提交訂單
四、功能邏輯圖的元素
建議使用Axure來(lái)畫资盅,因?yàn)檫€支持跳轉(zhuǎn)到對(duì)應(yīng)的前端線框圖调榄,方便閱讀。詳見(jiàn)Axure原型加流程圖功能的高效結(jié)合呵扛。
行為
使用矩形框表示每庆,沒(méi)可以區(qū)分用戶行為和系統(tǒng)行為,uml時(shí)序圖中有區(qū)分今穿。
流程
使用有向箭頭表示行為的流程缤灵。
判斷條件
使用菱形表示邏輯的多種路線。如果不復(fù)雜,可不用腮出。
其他文字
用來(lái)輔助理解帖鸦,可忽略。
五胚嘲、總結(jié)
強(qiáng)調(diào)一下不要搞混功能邏輯圖和功能結(jié)構(gòu)圖的運(yùn)用場(chǎng)景作儿。
我的建議是能拆分就拆分成功能結(jié)構(gòu),不能拆分就畫功能邏輯馋劈。
接著是如何畫業(yè)務(wù)流程圖攻锰。
常見(jiàn)的錯(cuò)誤畫法
先梳理一下大部分PM畫功能流程的常見(jiàn)錯(cuò)誤,方便理解其邊界妓雾。
混入業(yè)務(wù)維度
特別容易把業(yè)務(wù)模塊也畫到功能流程圖里面娶吞。
區(qū)分你的功能流程圖里面有木有業(yè)務(wù)模塊并不難。唯一的判斷標(biāo)準(zhǔn)是該圖中的每個(gè)節(jié)點(diǎn)都應(yīng)該是這個(gè)產(chǎn)品中真實(shí)存在的功能名稱械姻,否則應(yīng)該是混入了其他東西寝志。
真正的難點(diǎn)在于如何將業(yè)務(wù)流程映射成合理的功能流程,以及功能流程如何映射成恰當(dāng)?shù)臉I(yè)務(wù)流程策添。
混入頁(yè)面維度
其次容易將頁(yè)面寫到功能流程圖里面。比如某頁(yè)面只是某個(gè)功能的子集毫缆,你非要把它寫到功能流程圖里面唯竹,是不合適的。
比如微信里面苦丁,發(fā)送照片給好友是一個(gè)功能浸颓,但是涉及到的頁(yè)面“照片”、“選擇相冊(cè)”旺拉、“某一相冊(cè)詳情”以及操作“選中某一照片”产上,他們都不是功能,完全不應(yīng)該顯示在功能流程圖里面蛾狗。
當(dāng)然某些功能的命名晋涣,有可能和頁(yè)面是一樣的。
混入操作維度
每個(gè)功能可能包含很多操作沉桌,比如微信中發(fā)送照片給好友谢鹊,包含了”點(diǎn)擊相冊(cè)”,”滾動(dòng)照片列表”留凭,”選擇照片并發(fā)送”等操作佃扼。需要正確區(qū)分操作不是功能。
功能流程是什么
講了一些常見(jiàn)的錯(cuò)誤畫法之后蔼夜,再次定義一下功能流程的概念兼耀。
功能流程是指產(chǎn)品的所有功能以及相互間關(guān)系。
功能間關(guān)系
注意功能是相互獨(dú)立的,但是通過(guò)合理組合瘤运,可形成新功能窍霞。不太建議用一級(jí)功能二級(jí)功能,父功能子功能的叫法尽超。
包含哪些元素
功能官撼,使用矩形表示。
功能流向似谁,使用有線箭頭表示傲绣。
條件,使用有線箭頭上的文字表示巩踏。
已定義流程秃诵,使用組合矩形表示。不是必須的塞琼,如果整個(gè)產(chǎn)品的功能太復(fù)雜菠净,可能需要。
詳見(jiàn)我整理的功能流程圖資料彪杉,點(diǎn)擊查看毅往。
功能命名
要么是名詞,比如購(gòu)物車派近∨饰ǎ可加定語(yǔ),比如我的紅包渴丸。
要么是動(dòng)賓短語(yǔ)侯嘀,比如確認(rèn)訂單。
要么是通用叫法谱轨、比如我的戒幔。
可以參考同行業(yè)的TOP5競(jìng)品。
如果功能簡(jiǎn)單土童,產(chǎn)品層面的1個(gè)功能盡量對(duì)應(yīng)著Axure的1個(gè)Page诗茎。如果很復(fù)雜,請(qǐng)拆分到多個(gè)頁(yè)面献汗。
詳見(jiàn)產(chǎn)品需求文檔需要遵循的命名規(guī)則错沃。
功能定位
功能是邏輯意義上的概念,用戶是感知到該產(chǎn)品具備哪些功能雀瓢。一個(gè)功能可能是跨越多個(gè)頁(yè)面枢析,也可能存在于某頁(yè)面里。而頁(yè)面是物理意義上的概念刃麸,用戶可以在產(chǎn)品里面看到包含哪些頁(yè)面醒叁。
另外功能本身是相互獨(dú)立的。但是通過(guò)合理組合,可形成新功能把沼。不太建議用一級(jí)功能和二級(jí)功能啊易,父功能和子功能的說(shuō)法。
如何畫功能流程圖
羅列所有功能
按照PM設(shè)定的用戶使用產(chǎn)品流程饮睬,來(lái)畫出每個(gè)節(jié)點(diǎn)的功能租谈。從首次打開(kāi)APP開(kāi)始算起,進(jìn)入首頁(yè)會(huì)有多種走向捆愁,均需分別畫出來(lái)割去。
請(qǐng)注意不要隨意把頁(yè)面名稱畫進(jìn)來(lái),除非你確定含有一個(gè)同名的功能昼丑。
比如上圖乍一看呻逆,好像這幾個(gè)都是功能,畫得好像并沒(méi)有錯(cuò)菩帝。點(diǎn)擊對(duì)應(yīng)的原型地址咖城,方便理解下文。
可事實(shí)上呼奢,首頁(yè)只是頁(yè)面的叫法宜雀,而不是功能。另外它至少包含了發(fā)布邀約握础,查看邀約列表辐董,頻道列表三個(gè)功能。
用有向箭頭關(guān)聯(lián)
使用有向箭頭將功能之間聯(lián)系起來(lái)弓候。注意箭頭方向代表用戶的使用步驟。
如果你是使用Axure他匪,請(qǐng)不要傻乎乎的使用默認(rèn)模式拖一根線到2個(gè)功能矩形框上菇存,而是切換到連接線模式然后鼠標(biāo)移動(dòng)到矩形框連接紅點(diǎn)并關(guān)聯(lián)到另外一個(gè)。
增加條件判斷
很多功能是有前置條件的邦蜜,請(qǐng)使用有向箭頭并輔以文字表示依鸥。
所謂的條件就是前后端需要判斷的邏輯。常見(jiàn)的條件有3種邏輯結(jié)構(gòu)悼沈。
檢查是否犯錯(cuò)
上面說(shuō)的幾個(gè)常見(jiàn)錯(cuò)誤贱迟,最好檢查一下有沒(méi)有犯。
得到功能流程圖
根據(jù)上面的步驟絮供,我大概畫了一下微信客戶端主要的功能流程圖衣吠。
完整的圖形可以點(diǎn)擊源地址查看。
總結(jié)
如果你們的產(chǎn)品比較復(fù)雜的話壤靶,可能需要根據(jù)用戶角色缚俏、前后端不同來(lái)分別畫出對(duì)應(yīng)的功能流程圖。
比如微信的功能流程圖,至少有用戶使用微信忧换,用戶使用小程序恬惯,自媒體使用公眾號(hào),開(kāi)發(fā)者開(kāi)發(fā)公眾號(hào)亚茬,開(kāi)發(fā)者開(kāi)發(fā)小程序等很多個(gè)酪耳。
簡(jiǎn)單來(lái)說(shuō),你先得清楚你們的業(yè)務(wù)需要多少個(gè)產(chǎn)品來(lái)支持刹缝,產(chǎn)品間的關(guān)系是什么碗暗,每種產(chǎn)品需要多少種用戶角色,相互間的關(guān)系赞草,有多少個(gè)端讹堤。
如何正確的畫出頁(yè)面流程圖
頁(yè)面流程是什么
頁(yè)面流程是指產(chǎn)品的所有頁(yè)面以及相互間流向關(guān)系。
包含元素
頁(yè)面厨疙,有向線條洲守。
可能包含判斷條件。
不包含具體功能沾凄。
不包含彈層梗醇、元件等視覺(jué)組件。
頁(yè)面命名
要么是名詞撒蟀,比如購(gòu)物車叙谨。可加定語(yǔ)保屯,比如我的紅包手负。
要么是動(dòng)賓短語(yǔ),比如確認(rèn)訂單姑尺。
要么是通用叫法竟终、比如我的。
可以參考同行業(yè)的TOP5競(jìng)品切蟋。
盡量保持和原型軟件中頁(yè)面結(jié)構(gòu)的命名一致统捶。
詳見(jiàn)產(chǎn)品需求文檔需要遵循的命名規(guī)則。
頁(yè)面定位
每個(gè)頁(yè)面盡量是一個(gè)完整獨(dú)立的小功能柄粹。
除非功能太復(fù)雜喘鸟,需要多個(gè)頁(yè)面。此時(shí)頁(yè)面的作用是功能的某一操作驻右。
請(qǐng)結(jié)合上述的頁(yè)面命名來(lái)考慮每一個(gè)頁(yè)面該如何定位什黑。
維度只有一種
既然是頁(yè)面流程圖,那么研究維度只應(yīng)該有頁(yè)面堪夭。尤其不應(yīng)該看到功能和業(yè)務(wù)兑凿。這個(gè)錯(cuò)誤很多PM都會(huì)犯凯力。
延伸一點(diǎn),每個(gè)產(chǎn)品至少有3大架構(gòu):業(yè)務(wù)流程礼华、功能流程咐鹤、頁(yè)面流程。后續(xù)的文章圣絮,我會(huì)一一來(lái)講祈惶。
頁(yè)面流程的作用
之所以頁(yè)面流程這個(gè)東西出現(xiàn)在產(chǎn)品經(jīng)理的設(shè)計(jì)工作中,主要有以下原因扮匠。
了解全局
對(duì)于團(tuán)隊(duì)所有人來(lái)說(shuō)捧请,通過(guò)頁(yè)面流程圖可以大概了解整個(gè)APP的情況,偏視覺(jué)層棒搜。
傳達(dá)需求
對(duì)視覺(jué)設(shè)計(jì)師疹蛉,知道要做多少視覺(jué)稿,具體每個(gè)頁(yè)面有哪些視覺(jué)元素力麸。
對(duì)前端工程師可款,知道自己該寫多少個(gè)頁(yè)面,搭建頁(yè)面代碼結(jié)構(gòu)克蚂。
評(píng)估工作量
用頁(yè)面數(shù)量來(lái)評(píng)估各自的工作量闺鲸,可以大概估算出工期。
梳理業(yè)務(wù)
頁(yè)面流程是業(yè)務(wù)的直接體現(xiàn)埃叭,根據(jù)業(yè)務(wù)區(qū)反復(fù)研究它摸恍,可以讓產(chǎn)品整體變得更簡(jiǎn)潔,結(jié)構(gòu)變得更優(yōu)美赤屋。
頁(yè)面流程不能這樣畫
大部分初級(jí)PM畫頁(yè)面流程圖基本上會(huì)犯兩個(gè)錯(cuò)誤立镶。
只能有頁(yè)面這一維度
上面已經(jīng)說(shuō)了,再重申一下只應(yīng)該出現(xiàn)頁(yè)面這個(gè)維度类早,不應(yīng)該有什么亂七八糟的業(yè)務(wù)媚媒、功能、甚至是組件莺奔、元件什么的欣范。
不應(yīng)展示具體內(nèi)容
有些PM畫把頁(yè)面的具體內(nèi)容表示出來(lái)变泄,其實(shí)很不對(duì)的令哟。
- 抽象維度不一致,頁(yè)面和頁(yè)面內(nèi)容是兩個(gè)概念妨蛹。
- 畫頁(yè)面內(nèi)容需要耗費(fèi)很長(zhǎng)時(shí)間屏富。
- 頁(yè)面內(nèi)容改動(dòng)頻率大,需要經(jīng)常復(fù)查并修改蛙卤。
- 具體內(nèi)容有功能狠半、有控件噩死、有圖標(biāo)、有文字神年,很難抽象表述已维,以及表述完全。如果你這樣畫過(guò)已日,你就會(huì)理解這里的苦處垛耳。
以閃電約APP來(lái)畫了一個(gè)錯(cuò)誤的頁(yè)面流程圖,只畫了幾個(gè)頁(yè)面飘千。供大家參考堂鲜。至少犯了上面1、2护奈、4錯(cuò)誤缔莲。
頁(yè)面流程應(yīng)該這樣畫
找出所有頁(yè)面
不管你使用哪款原型軟件,總有它的頁(yè)面結(jié)構(gòu)霉旗。據(jù)此畫出所有的頁(yè)面不難痴奏。
需要注意的是頁(yè)面是物理層面的,真實(shí)存在奖慌。而不像業(yè)務(wù)流程圖中的業(yè)務(wù)模塊抛虫,只是邏輯層面的,并不需要真實(shí)體現(xiàn)简僧。
如果你是使用Axure建椰,可以直接拖動(dòng)左方頁(yè)面結(jié)構(gòu)中的頁(yè)面標(biāo)題到右邊的畫布中即可。
用有向線條關(guān)聯(lián)
使用線條將2個(gè)頁(yè)面聯(lián)系起來(lái)岛马,直到把所有的頁(yè)面跳轉(zhuǎn)加上為止棉姐。
如果你是使用Axure,請(qǐng)不要傻乎乎的連接啦逆,而是使用連接線模式伞矩。
增加條件判斷
這一步不是必須的,但是稍微復(fù)雜一些的產(chǎn)品建議使用夏志。
拿上面的錯(cuò)誤圖來(lái)說(shuō)乃坤,首頁(yè)和3個(gè)頁(yè)面有關(guān)聯(lián),那什么情況下跳轉(zhuǎn)到第一個(gè)頁(yè)面呢湿诊。這個(gè)就是需要條件判斷來(lái)說(shuō)明。這一點(diǎn)平鋪的UI視覺(jué)稿并不能體現(xiàn)這一點(diǎn)PM的價(jià)值错沽。
其實(shí)吧忆植,UI視覺(jué)稿的平鋪圖可以作為前端工程師定義代碼層面的頁(yè)面結(jié)構(gòu)吴侦,屬于物理結(jié)構(gòu)备韧。但是邏輯層面的頁(yè)面結(jié)構(gòu)必須輔以條件判斷奶陈。
重新畫一下上面的頁(yè)面流程圖潦俺,正確應(yīng)該如下:
檢查是否犯錯(cuò)
上面說(shuō)的幾個(gè)常見(jiàn)錯(cuò)誤肖爵,最好檢查一下有沒(méi)有犯。
總結(jié)
補(bǔ)充一點(diǎn),如果你是使用Axure來(lái)畫頁(yè)面流程的話荐糜,可以全選所有的頁(yè)面延塑,然后右鍵一鍵生成流程圖,點(diǎn)擊查看效果芜飘。
其實(shí)頁(yè)面頁(yè)面流程圖還需要按照角色(用戶、商家),端(客戶端诗良、服務(wù)端)钥弯,有時(shí)候還需要按照版本來(lái)畫。根據(jù)自身產(chǎn)品的復(fù)雜程度,按照此文方法畫出即可难菌。
接下來(lái)會(huì)講一下功能流程圖遇绞、業(yè)務(wù)流程圖如何畫键袱。
希望讀完的你也有所收獲
原文:
http://www.woshipm.com/rp/704584.html](http://www.woshipm.com/rp/704584.html
http://www.woshipm.com/pmd/663549.html](http://www.woshipm.com/pmd/663549.html
http://www.woshipm.com/rp/651734.html](http://www.woshipm.com/rp/651734.html