面向?qū)ο蟮漠a(chǎn)品觀(4):連接
編輯導(dǎo)語(yǔ):產(chǎn)品的構(gòu)建流程一直是一個(gè)很重要的話題,在上一篇文章中,作者為我們分享了產(chǎn)品構(gòu)建的第三層:組合層;本文作者分享了在成功組合了產(chǎn)品架構(gòu)后,怎么讓不同模塊連接起來,我們一起來看一下。
我們成功的組合了一個(gè)產(chǎn)品結(jié)構(gòu)之后,接下來要讓信息在產(chǎn)品中流動(dòng)起來,這時(shí)候就需要將不同的模塊與功能連接起來。
這個(gè)就是產(chǎn)品構(gòu)建的第四層:連接層。
軟件產(chǎn)品是一個(gè)信息不斷流動(dòng)的動(dòng)態(tài)系統(tǒng),連接層的工作就是讓信息在各個(gè)模塊之間有序的流動(dòng)。
一、信息如何傳遞
信息在模塊之間傳遞的包含了如下的部分:方向,順序和數(shù)據(jù)。
1. 連接的方向
場(chǎng)景發(fā)生的時(shí)間順序就是連接的方向,時(shí)間是不可逆的,一個(gè)未來才發(fā)生的場(chǎng)景不可能出現(xiàn)在過去。
同樣,場(chǎng)景對(duì)應(yīng)的功能及用例需要按照時(shí)間順序嚴(yán)格排列,方向一定是沿著時(shí)間不斷向前的。
2. 連接的順序
將模塊進(jìn)行連接時(shí)需要依據(jù)模塊對(duì)應(yīng)的場(chǎng)景的連貫性進(jìn)行連接,不能將兩個(gè)并不連貫的場(chǎng)景連接到一起;同根據(jù)使用場(chǎng)景有先后順序來進(jìn)行連接,不能將之后觸發(fā)的功能放置在前面。
確定連接的順序時(shí),除了根據(jù)對(duì)應(yīng)場(chǎng)景的連貫性進(jìn)行判斷之外,還可以根據(jù)模塊與功能的前置條件與后置條件進(jìn)行判斷;滿足前置條件的模塊應(yīng)該排列在前,后置條件影響的模塊需要排列在后。
3. 數(shù)據(jù)
連接的目的是讓信息有序的流動(dòng),而信息的本質(zhì)就是數(shù)據(jù),連接的本質(zhì)就是數(shù)據(jù)傳遞。
在面向?qū)ο蟮乃枷胫?,萬物皆可為對(duì)象,那么我們也將數(shù)據(jù)看做一個(gè)對(duì)象,這個(gè)對(duì)象在傳遞的過程中有哪些信息呢?
- 對(duì)象的狀態(tài):這些對(duì)象是正常狀態(tài),還是特殊狀態(tài),還是出現(xiàn)了異常,我們需要根據(jù)對(duì)象的狀態(tài)確定它下一步的連接方向。
- 對(duì)象的屬性值:對(duì)象的屬性就是一個(gè)對(duì)象的特征值,比如我要傳遞的是商品信息,那么他的屬性就包含名稱,品類,價(jià)格,購(gòu)買數(shù)量等,這些屬性值將作為下一步操作的重要依據(jù)。
二、連接的要點(diǎn)
連接的三要素:簡(jiǎn)單、高效、容錯(cuò)性好。
簡(jiǎn)單:連接的步驟一定要足夠的簡(jiǎn)單,需要找到兩點(diǎn)之間的最短路徑;畢竟大家都這么忙,能越快的處理完一個(gè)事情越好。
高效:信息的傳遞要足夠的高效,對(duì)于信息的要求就是數(shù)據(jù)準(zhǔn)確,完整;避免后續(xù)重復(fù)取值的麻煩。
容錯(cuò)性好:任何一個(gè)系統(tǒng)都會(huì)出現(xiàn)各種情況的意外,在設(shè)計(jì)系統(tǒng)的時(shí)候需要對(duì)可能出現(xiàn)的意外做出完善的處理路徑。
三、連接的分類
按照連接的特征來分類的話,連接可以分為:基本流、備選流和異常流。
基本流:基本流是理想情況下信息傳遞的流程。也是抵達(dá)終點(diǎn)的最優(yōu)路徑。
備選流:畢竟世事難料,人們總是不會(huì)按照你預(yù)想的最優(yōu)路徑來走,這之后就需要預(yù)設(shè)足夠多的非最優(yōu)但是依然可以抵達(dá)終點(diǎn)的路徑來讓人們抵達(dá)終點(diǎn)。
異常流:如果路途中間出現(xiàn)了幺蛾子怎么辦?這時(shí)候我們需要考慮足夠多的幺蛾子出現(xiàn)的可能性,并設(shè)置回頭路,讓用戶可以通過這個(gè)路徑再次回到正路上來。
備選流和異常流的規(guī)劃,依然使用分解層的妙招:無限窮舉。原則依然是相互獨(dú)立不重復(fù),完全窮舉無遺漏。
四、內(nèi)循環(huán)與外循環(huán)
經(jīng)過了前面幾層的工作,我們已經(jīng)知道產(chǎn)品是由模塊組成的,而模塊又是由功能組成的。
這個(gè)時(shí)候就出現(xiàn)了一個(gè)問題,模塊與模塊之間必然需要連接,同樣的,模塊內(nèi)部的功能之間同樣需要連接。畢竟模塊就是功能的閉環(huán)嘛。
這樣就出現(xiàn)了兩套連接流程,一套用在模塊內(nèi)部,一套用在模塊與模塊之間,這兩套流程我就叫他內(nèi)循環(huán)和外循環(huán);內(nèi)循環(huán)就是指模塊內(nèi)部的連接流程,外循環(huán)是指模塊之間的連接流程。
但是就像一個(gè)國(guó)家包含了省、省包含了市一樣;一個(gè)一級(jí)模塊內(nèi)部可能包含幾個(gè)二級(jí)模塊,二級(jí)模塊可能又包含了更小的模塊,低級(jí)模塊的外循環(huán)只是高級(jí)模塊的內(nèi)循環(huán)的一部分,一個(gè)內(nèi)循環(huán)的終點(diǎn)可能是另一個(gè)內(nèi)循環(huán)的起點(diǎn)。
所以在實(shí)際設(shè)計(jì)的過程中,我們一定要將不同的循環(huán)都當(dāng)成一個(gè)獨(dú)立的對(duì)象,每一個(gè)對(duì)象之間都有對(duì)應(yīng)的連接點(diǎn),所有最后對(duì)象都是通過連接點(diǎn)來進(jìn)行連接。
1. 內(nèi)循環(huán)
每一個(gè)模塊都是一系列相互關(guān)聯(lián)的功能的閉環(huán),功能與功能之間根據(jù)用戶的實(shí)際操作行為又會(huì)產(chǎn)生互相之間的聯(lián)動(dòng)。這個(gè)時(shí)候就需要對(duì)每一個(gè)功能進(jìn)行連接的設(shè)計(jì)。
每一個(gè)模塊都是獨(dú)立的個(gè)體,模塊內(nèi)部功能的連接均僅限于模塊內(nèi)部,對(duì)外的接口應(yīng)該盡量少,如果能夠保持入口和出口都只有一個(gè)那就再好不過。
太多對(duì)外的接口很容易造成流程設(shè)計(jì)的復(fù)雜,過于復(fù)雜的流程一定會(huì)造成體驗(yàn)的混亂以及增加開發(fā)的難度,并且會(huì)增加出現(xiàn)BUG的幾率。
愛因斯坦說過:“如果解決方法太復(fù)雜,那么一定是問題錯(cuò)了”。
2. 外循環(huán)
外循環(huán)就是模塊與模塊之間的循環(huán),外循環(huán)的注意事項(xiàng)與設(shè)計(jì)細(xì)節(jié)與內(nèi)循環(huán)一般無二。
需要注意的是,一個(gè)產(chǎn)品包含多個(gè)一級(jí)模塊,一個(gè)一級(jí)模塊中又會(huì)包含多個(gè)二級(jí)模塊,所以二級(jí)模塊之間的外循環(huán)只是一個(gè)一級(jí)模塊的內(nèi)循環(huán);這時(shí)候需要注意入口、中間件以及出口,也就是需要確定流程起點(diǎn)的模塊以及流程終點(diǎn)的模塊;入口負(fù)責(zé)接收輸入的信息,中間件負(fù)責(zé)將信息進(jìn)行加工處理,出口負(fù)責(zé)將信息輸出到外部。
內(nèi)外雙循環(huán)支撐起了整個(gè)產(chǎn)品的正常運(yùn)轉(zhuǎn),兩個(gè)缺一不可,就像國(guó)家的經(jīng)濟(jì)一樣,既要有內(nèi)循環(huán),又要有外循環(huán)。
最后我們回顧一下連接層的內(nèi)容:
首先,連接是信息有序流動(dòng)的方式;連接有方向以及順序,連接的目的是傳遞信息;信息包含狀態(tài)信息以及屬性值。連接的方向和順序都依據(jù)用戶使用產(chǎn)品的時(shí)間順序。
連接又分為基本流,備選流和異常流,連接體系有分為內(nèi)循環(huán)和外循環(huán)。
連接是讓一個(gè)產(chǎn)品動(dòng)起來的過程,經(jīng)過了連接層的之后產(chǎn)品已經(jīng)形成了完整的框架。
按照生物學(xué)的說法就是,產(chǎn)品已經(jīng)形成了胚胎,接著我們只要在框架的基礎(chǔ)上搭配上可視化界面就可以實(shí)際應(yīng)用了。
搭配界面就是下一篇《具象化》的內(nèi)容,請(qǐng)期待下篇。
本文由 @木道人 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于 CC0 協(xié)議
- 目前還沒評(píng)論,等你發(fā)揮!