如何模塊化設(shè)計(jì)B端系統(tǒng)?先思考這3個(gè)問題
產(chǎn)品經(jīng)理都希望能做出一個(gè)可復(fù)用性強(qiáng)、靈活性好的B端系統(tǒng)出來。那么,模塊化設(shè)計(jì)就是其中一個(gè)很好的方法。
一、為什么要模塊化設(shè)計(jì)?
希望減少重復(fù)性造輪子的可能,抽離出共通性、形成標(biāo)準(zhǔn)化,最終達(dá)到減少人力物力的大量浪費(fèi),提高業(yè)績的同時(shí)還減少了成本開支,何樂而不為?
最近鼓吹得如日中天的中臺(tái)概念、流行了許久的敏捷開發(fā),無不都是為了此目的。
當(dāng)前較為普遍的兩種方法:接口式開發(fā)、模塊化設(shè)計(jì)。
1. 接口式開發(fā):開發(fā)角度
寫代碼的同學(xué)都知道,代碼要講究可復(fù)用性、靈活性。前端開發(fā)與后端開發(fā),采用接口式方法來進(jìn)行信息之間的交互。
案例:我要登錄淘寶網(wǎng)站。
上下游系統(tǒng)之間,跨系統(tǒng)之間,也大多采用接口式方法進(jìn)行信息傳遞。
此文,咱們簡單聊聊B端系統(tǒng)模塊化設(shè)計(jì)的好處。
2. 模塊化設(shè)計(jì):產(chǎn)品設(shè)計(jì)角度
模塊化設(shè)計(jì),專業(yè)術(shù)語講是為了我們做的產(chǎn)品,將來靈活性強(qiáng)、擴(kuò)展性好。不需要開發(fā)修改代碼,就可以實(shí)現(xiàn)部分新的業(yè)務(wù)邏輯。
通俗點(diǎn)講,就是堆積木。我們可以將任意小方塊,任意拼湊成我們想要的形狀,從而達(dá)到目的。
不同的系統(tǒng),不同的業(yè)務(wù),要根據(jù)實(shí)際情況分析,這里我以電商系統(tǒng)為例,總結(jié)了些許模塊化設(shè)計(jì)經(jīng)驗(yàn),分享一二。不到之處,還請(qǐng)大佬們批評(píng)指正。
二、適不適合模塊化設(shè)計(jì)?
1. 搞清楚事務(wù)本質(zhì)
首先,一定要搞清楚為什么要去模塊化設(shè)計(jì),千萬不要為了模塊化而模塊化,這個(gè)是很大的忌諱。模塊化設(shè)計(jì),很多時(shí)候短期是看不到任何效果的,而且讓系統(tǒng)變得更麻煩。
以添加商品為例:要新建一個(gè)商品,必不可少的有商品基本信息、商品類目、商品屬性信息等等。
如果想簡單點(diǎn)設(shè)計(jì):
- 點(diǎn)擊添加商品按鈕,進(jìn)入添加商品頁面;
- 在固定表單中,填寫商品所有信息;
- 點(diǎn)擊保存按鈕。
添加商品,本就不是很復(fù)雜的事,此簡單的方案不是不可行。只是不利于系統(tǒng)的可擴(kuò)展性和靈活性。
為什么?在固定的表單中填寫商品所有信息,你就能保證所有的商品都是一樣的業(yè)務(wù)邏輯,一樣的商品信息嗎?根本保證不了,那么一旦做成固定模板,系統(tǒng)后期就要不斷的根據(jù)新的業(yè)務(wù)邏輯和商品去不斷的改代碼來實(shí)現(xiàn)業(yè)務(wù)方的需求。
那么,有沒有更好的方案?模塊化設(shè)計(jì)。
回到問題本質(zhì):想成功添加一個(gè)商品到商品庫。
方案:將商品信息打散,將其拆分為三大類信息組合:商品共性信息(所有的商品都有的屬性)、商品類目、動(dòng)態(tài)屬性(區(qū)分商品唯一性的屬性)。
2. 理清父子關(guān)聯(lián)關(guān)系
既然要模塊化,那么肯定就會(huì)出現(xiàn)一層又一層的父子關(guān)聯(lián)關(guān)系。
說明:要想成功添加A商品,必須關(guān)聯(lián)某個(gè)A商品類目。A商品類目必須關(guān)聯(lián)某個(gè)A模板,A模板必須關(guān)聯(lián)對(duì)應(yīng)屬性。
屬性管理:管理了商品的所有類別的屬性信息,一定要做好分類。比如:關(guān)鍵屬性、規(guī)格屬性、非關(guān)鍵屬性等等。
模板管理:不同的商品,可能由不同的屬性構(gòu)成。那么我將屬性形成一個(gè)又一個(gè)模板,就可以靈活的去滿足各種類別的商品。
商品類目:商品的分類管理。所有的商品,肯定有自己的分類,也就是商品類目。同一類商品歸為一類,便于商品的維護(hù)和管理。
商品管理:所有商品的管理?,F(xiàn)在要添加一個(gè)商品,通過模板化設(shè)計(jì),就變得非常靈活。要想添加商品:
- 點(diǎn)擊添加按鈕;
- 選擇A商品類目;
- 填寫A類目關(guān)聯(lián)的模板A中對(duì)應(yīng)的屬性信息;
- 保存。
模板設(shè)計(jì)的好處就是,我可以隨時(shí)更換關(guān)聯(lián)關(guān)系,也可以隨時(shí)在下一層關(guān)聯(lián)關(guān)系中做任何CRUD操作卻不影響當(dāng)前層級(jí)新的數(shù)據(jù)。
三、如何模塊化設(shè)計(jì)B端系統(tǒng)?
記住我一句萬變不離其宗的話:
所有的系統(tǒng)設(shè)計(jì)無非就是對(duì)數(shù)據(jù)庫中各種表格的CRUD(增刪改查)。
別把后臺(tái)系統(tǒng)設(shè)計(jì)想的那么玄乎,沒有那么復(fù)雜。咱之所以覺得復(fù)雜,是因?yàn)樵圻€不夠熟悉業(yè)務(wù),不清楚正向逆向各種流程,并不是系統(tǒng)設(shè)計(jì)難。
1. 功能結(jié)構(gòu)圖:有哪些功能、頁面、按鈕
說明:
- 下圖是我認(rèn)真畫的真實(shí)數(shù)據(jù),認(rèn)真觀察后發(fā)現(xiàn)沒有?哪個(gè)版塊的管理離開的了CRUD?先講頁面的根(CRUD)想好,什么批量克隆、啟用、停用無非添磚加瓦而已;
- 功能結(jié)構(gòu)圖也就是功能列表,只是功能列表會(huì)描述的更細(xì),而結(jié)構(gòu)圖只是列出大的框架,方便參閱,沒你想象的那么復(fù)雜;
- 雖不復(fù)雜,但每一層的關(guān)聯(lián)關(guān)系可別忘記加上,這可是咱這篇模塊化設(shè)計(jì)的核心。
2. 信息結(jié)構(gòu)圖:有哪些對(duì)象和字段
信息結(jié)構(gòu)圖:將你看到的頁面信息,抽象處理到一個(gè)對(duì)象的維度,然后把同一個(gè)對(duì)象的信息放在一起。
咱們產(chǎn)品人畫的信息結(jié)構(gòu)圖,不需要與開發(fā)同學(xué)設(shè)計(jì)的數(shù)據(jù)庫表結(jié)構(gòu)一模一樣,按你的理解將其以單個(gè)對(duì)象維度抽離出來即可。
有沒有覺得設(shè)計(jì)信息結(jié)構(gòu)圖很難,根本無從下手,不知所措?根本原因在哪?在于咱們腦海中沒有面向?qū)ο蟮母拍詈蛯?duì)數(shù)據(jù)庫表結(jié)構(gòu)的理解。
什么叫對(duì)象?萬事萬物,皆為對(duì)象。你,我,鼠標(biāo),鍵盤,電腦都是對(duì)象。
對(duì)象:指具體的某一個(gè)事物,即在現(xiàn)實(shí)生活中能夠看得見摸得著的事物。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,對(duì)象所指的是計(jì)算機(jī)系統(tǒng)中的某一個(gè)成分。
在面向?qū)ο蟪绦蛟O(shè)計(jì)中,對(duì)象包含兩個(gè)含義,其中一個(gè)是數(shù)據(jù),另外一個(gè)是動(dòng)作。對(duì)象則是數(shù)據(jù)和動(dòng)作的結(jié)合體。對(duì)象不僅能夠進(jìn)行操作,同時(shí)還能夠及時(shí)記錄下操作結(jié)果。方法是指對(duì)象能夠進(jìn)行的操作,方法同時(shí)還有另外一個(gè)名稱,叫做函數(shù)。方法是類中的定義函數(shù),其具體的作用就是對(duì)對(duì)象進(jìn)行描述操作。
對(duì)象解析:對(duì)象由屬性和方法構(gòu)成。private開頭的全是對(duì)象應(yīng)有的屬性,也就是咱們看到的信息架構(gòu)圖中,員工對(duì)應(yīng)的信息。至于方法,咱們產(chǎn)品經(jīng)理不需要關(guān)注,知道有就好。
表結(jié)構(gòu):表名+字段。詳情可以看我另一篇文章的文末,這里不再說了哈!《后臺(tái)系統(tǒng)架構(gòu)設(shè)計(jì)-商務(wù)咨詢系統(tǒng)》
表解析:員工信息表用來儲(chǔ)存員工的基本信息。一般由表明+字段構(gòu)成,我們產(chǎn)品人不需要去關(guān)注數(shù)據(jù)類型,是否主鍵這些信息。
3. 原型圖:系統(tǒng)長什么樣,有哪些規(guī)則和交互效果
PS:原型只是案例展示,并不是真實(shí)功能,有很多按鈕和規(guī)則,都沒有寫入,僅供參考。
如果你真的涉及想用模塊化設(shè)計(jì),需要找人交流的時(shí)候,記得找我喲!
屬性管理:
說明:屬性分類與屬性分組是不同概念。屬性分組是將一類屬性進(jìn)行分組,是站在業(yè)務(wù)維度劃分。屬性分類,是站在產(chǎn)品設(shè)計(jì)維度分析。
模板管理:
- 模板有點(diǎn)類似屬性分組,將一組又一組屬性構(gòu)建成一個(gè)又一個(gè)模板。
- 模板一定要關(guān)聯(lián)屬性,否則毫無意義。
商品類目:
- 商品類目,一定要去關(guān)聯(lián)設(shè)置好的不同業(yè)務(wù)的模板;
- 一個(gè)商品類目可以關(guān)聯(lián)多個(gè)模板。
商品管理:
- 添加商品,也就變得簡單方便。直接選擇商品類目后,填寫當(dāng)前業(yè)務(wù)的商品模板中的屬性信息即可;
- 如果業(yè)務(wù)有變動(dòng),商品屬性的增刪改查變得游刃有余,不會(huì)影響舊的在售商品。隨時(shí)更換隨時(shí)增加新的判斷,都可以,想怎么玩就怎么玩兒。
總結(jié)
所有的系統(tǒng)設(shè)計(jì)無非就是對(duì)數(shù)據(jù)庫中各種表格的CRUD(增刪改查)。
作者:會(huì)飛的豬,微信公眾號(hào):刻意練習(xí)產(chǎn)品思維(ID:kylxpm520)
本文由 @會(huì)飛的豬 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash, 基于CC0協(xié)議
嗯,有點(diǎn)開發(fā)中的模塊,領(lǐng)域的意思,看的很爽!點(diǎn)贊了!
謝謝
這種屬性的意思是在數(shù)據(jù)庫中是一串字符串嗎
屬性的格式,請(qǐng)看數(shù)據(jù)類型
關(guān)注本公眾號(hào): kylxpm520,輸入【模塊】即可獲得本文中所有文件內(nèi)容。