99er久久国产精品先锋_亚洲丰满少妇撒尿BBo_老外和中国女人毛片免费视频_思思热在线视频网站_av无码不卡高清_国产 激情 自拍_激情综合色婷婷激情丁香_少妇与子乱A级全毛片_男人捅女人的软件_日本欧美日韩

...

這10個(gè)功能模塊,手把手教你從零設(shè)計(jì)電商系統(tǒng)

2022-01-23

圖片




新公司很快就成立了,你成了新公司的CTO。關(guān)于改變世界,目前唯一能確定的是,首先要做一個(gè)電商系統(tǒng)。具體要做成什么樣,目前還不清楚。你需要與老板討論業(yè)務(wù)需求。


  • 你:“咱們要做的業(yè)務(wù)模式是C2C、B2C還是B2B呢?”

  • 老板:“什么B?什么C?我不懂你說的那些技術(shù)名詞。”

  • 你:“這么說吧,你要做一個(gè)某寶網(wǎng),還是某東網(wǎng),還是某848網(wǎng)呢?”

  • 老板:“不都是一樣的嗎?它們之間有什么區(qū)別?你趕緊做一個(gè)出來我看看不就知道了?!”



故事發(fā)展到這里,作為程序員的你是不是有一種似曾相識的感覺?現(xiàn)實(shí)就是,需求永遠(yuǎn)不明確,永遠(yuǎn)在變化,唯一不變的只有變化。優(yōu)秀的程序員適應(yīng)變化,并且擁抱變化。在需求還不太明確的情況下,比較可行的方案就是,首先搭建不太會(huì)發(fā)生變化的核心系統(tǒng),然后盡量簡單地實(shí)現(xiàn)一個(gè)最小化的系統(tǒng),后續(xù)再逐步迭代和完善。


01 設(shè)計(jì)電商系統(tǒng)的核心流程

接下來,我們一起設(shè)計(jì)這個(gè)電商的核心系統(tǒng)。

遵照軟件工程的一般規(guī)律,我們先從需求階段開始。那么,需求分析應(yīng)該如何做呢?理想情況下,系統(tǒng)分析師或產(chǎn)品經(jīng)理應(yīng)該負(fù)責(zé)完成需求分析的任務(wù)。但是,現(xiàn)實(shí)中絕大多數(shù)情況下,你得到的所謂的“需求”,很有可能就是一兩句話。需求分析的工作最終往往是由開發(fā)者完成的。

很多項(xiàng)目交付以后,仍需要不斷地進(jìn)行修改和變更,用戶不滿意,開發(fā)者也很痛苦,造成這個(gè)問題的根本原因其實(shí)就是缺失了需求分析的步驟。所以,為了后續(xù)工作能夠順利開展,每位開發(fā)者都應(yīng)該掌握一些用于需求分析的方法。

那么,開發(fā)者進(jìn)行需求分析時(shí)應(yīng)該做些什么呢?這里先不介紹那些做需求分析的方法和理論,只告訴你最重要、最關(guān)鍵的一個(gè)點(diǎn):不要一上來就設(shè)計(jì)功能,而是先明確下面這兩個(gè)問題的答案。


  1. 這個(gè)系統(tǒng)(或者功能)是給哪些人用的?
  2. 這些人使用這個(gè)系統(tǒng)是為了解決什么問題?



這兩個(gè)問題的答案,我們稱之為業(yè)務(wù)需求。那么,對于我們將要設(shè)計(jì)的電商系統(tǒng),其業(yè)務(wù)需求又是什么呢?如果大家很熟悉電商的業(yè)務(wù),那么回答這兩個(gè)問題應(yīng)該很容易。

第一個(gè)問題,電商系統(tǒng)是給哪些人用的?首先是買東西的人,即“用戶”;其次是賣東西的人,即“運(yùn)營”;還有一個(gè)非常重要的角色就是出錢的人,即“管理者”(請記住,在設(shè)計(jì)任何一個(gè)系統(tǒng)的時(shí)候,管理者的意見都是非常重要的)。綜上所述,電商系統(tǒng)是面向用戶、運(yùn)營和管理者開發(fā)的。

第二個(gè)問題,用戶、運(yùn)營和管理者使用電商系統(tǒng)分別想要解決什么問題?這個(gè)也很容易回答,用戶為了買東西,運(yùn)營為了賣東西,管理者需要通過系統(tǒng)了解自己所得的收益。

這兩個(gè)問題的答案,或者說業(yè)務(wù)需求,稍加細(xì)化后,可以用圖1-1進(jìn)行清晰的表述。

圖片
▲圖1-1 電商系統(tǒng)用例圖

圖1-1在UML(統(tǒng)一建模語言)中稱為用例圖(Use Case),是我們進(jìn)行需求分析的時(shí)候所要畫的第一張圖。用例圖可用于回答業(yè)務(wù)需求中的兩個(gè)關(guān)鍵問題,即這個(gè)系統(tǒng)給誰用?他們用這個(gè)系統(tǒng)是為了解決什么問題?

一般來說,業(yè)務(wù)需求與我們要設(shè)計(jì)的系統(tǒng)關(guān)系不大。為什么這么說呢?因?yàn)槲覀儗D1-1中的用例,放在傳統(tǒng)的商業(yè)企業(yè)(比如,一個(gè)小雜貨鋪、一個(gè)線下實(shí)體商場或商店,或者一個(gè)做電視購物的公司)中也是適用的,所以,做業(yè)務(wù)需求的主要目的是理清楚業(yè)務(wù)場景是怎樣的。

下面就來分析電商系統(tǒng)的業(yè)務(wù)流程。很顯然,電商系統(tǒng)最主要的業(yè)務(wù)流程,一定是購物流程。購物流程很簡單,具體流程如圖1-2所示。

所有電商的購物流程幾乎都是如此,下面就來分析一下這個(gè)流程。

圖片
▲圖1-2 電商系統(tǒng)購物流程圖

流程從用戶選購商品開始,用戶首先在App中瀏覽商品,找到心儀的商品之后,把商品添加到購物車,選完商品之后,打開購物車,提交訂單。下單結(jié)算之后,用戶就可以支付了。支付成功后,運(yùn)營人員會(huì)為已經(jīng)支付的訂單發(fā)貨,為用戶郵寄相應(yīng)的商品。最后,用戶收到商品并確認(rèn)收貨。至此,一個(gè)完整的購物流程就結(jié)束了。


02 根據(jù)流程劃分功能模塊

接下來,我們再進(jìn)一步細(xì)化電商購物的業(yè)務(wù)流程,看一下電商系統(tǒng)是如何實(shí)現(xiàn)該流程的。圖1-3所示的是細(xì)化之后的電商系統(tǒng)購物流程時(shí)序圖(Sequence Diagram)。

圖片
▲圖1-3 電商系統(tǒng)購物流程時(shí)序圖

下面就來詳細(xì)講解圖1-3所示的時(shí)序圖中的各個(gè)步驟。


  1. 用戶瀏覽商品,這個(gè)步驟需要通過一個(gè)商品模塊來展示商品詳情頁,用戶可以從中獲取所瀏覽商品的詳細(xì)介紹和價(jià)格等信息。
  2. 然后,用戶把選好的商品加入購物車,這個(gè)步驟需要使用一個(gè)購物車模塊來維護(hù)用戶購物車中的商品。
  3. 接下來是用戶下單,這個(gè)步驟需要基于一個(gè)訂單模塊來創(chuàng)建新訂單。訂單創(chuàng)建好了之后,系統(tǒng)需要把訂單中的商品從購物車中刪減掉。
  4. 訂單創(chuàng)建完成后,系統(tǒng)需要引導(dǎo)用戶付款,即發(fā)起支付流程,可通過一個(gè)支付模塊來實(shí)現(xiàn)支付功能,用戶成功完成支付之后,系統(tǒng)需要把訂單的狀態(tài)變更為“已支付”。
  5. 成功支付之后,運(yùn)營人員就可以發(fā)貨了,發(fā)貨之后,系統(tǒng)需要扣減對應(yīng)商品的庫存數(shù)量,這個(gè)步驟需要基于一個(gè)庫存模塊來實(shí)現(xiàn)庫存數(shù)量的變更,同時(shí)系統(tǒng)還需要把訂單狀態(tài)變更為“已發(fā)貨”。
  6. 最后,用戶收到商品,在系統(tǒng)中確認(rèn)收貨,系統(tǒng)需要把訂單狀態(tài)變更為“已收貨”,流程結(jié)束。



這個(gè)流程涉及5大功能模塊,即商品、購物車、訂單、支付和庫存,這5大模塊就是一個(gè)電商系統(tǒng)中的核心功能模塊。

當(dāng)然,僅有這5個(gè)模塊是不夠的,因?yàn)槲覀冎环治隽恕百徫铩边@個(gè)最主要的流程,并沒有完全涵蓋業(yè)務(wù)需求中的全部用例,比如,運(yùn)營人員進(jìn)貨、管理者查看報(bào)表等還沒有覆蓋到。

相比購物流程,剩下的幾個(gè)用例和流程都相對簡單一些,我們可以采用同樣的方法來分析其他的功能模塊。這里將省略分析過程,直接給出我們所要實(shí)現(xiàn)的電商系統(tǒng)的功能模塊劃分(如圖1-4所示)。

圖片
▲圖1-4 電商系統(tǒng)功能模塊劃分

圖1-4使用了UML中的包圖(Package Diagram)來表示電商系統(tǒng)的功能模塊。

整個(gè)系統(tǒng)按照功能,可以劃分為10個(gè)模塊,除了購物流程中涉及的商品、訂單、購物車、支付和庫存這5個(gè)模塊之外,還補(bǔ)充了促銷、用戶、賬戶、搜索推薦和報(bào)表這5個(gè)模塊,這些都是構(gòu)建一個(gè)電商系統(tǒng)必不可少的功能模塊。下面就來逐一說明每個(gè)模塊需要實(shí)現(xiàn)的功能。


  1. 商品:維護(hù)和展示商品的相關(guān)信息。
  2. 訂單:維護(hù)訂單信息和訂單狀態(tài),計(jì)算訂單金額。
  3. 購物車:維護(hù)用戶購物車中商品的信息。
  4. 支付:負(fù)責(zé)與系統(tǒng)內(nèi)外部的支付渠道對接,實(shí)現(xiàn)支付功能。
  5. 庫存:維護(hù)商品的庫存信息。
  6. 促銷:制定促銷規(guī)則,計(jì)算促銷優(yōu)惠信息。
  7. 用戶:維護(hù)系統(tǒng)的用戶信息,注意,用戶模塊是一個(gè)業(yè)務(wù)模塊,一般不負(fù)責(zé)用戶的登錄和認(rèn)證,這是兩個(gè)完全不同的功能。
  8. 賬戶:賬戶模塊負(fù)責(zé)維護(hù)用戶的賬戶信息。
  9. 搜索推薦:提供商品搜索功能,并負(fù)責(zé)各種商品列表頁和促銷頁的組織和展示,簡單地說就是,搜索推薦決定用戶優(yōu)先看到哪些商品。
  10. 報(bào)表:實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì)和分析功能,生成報(bào)表,為管理者進(jìn)行經(jīng)營分析和決策提供數(shù)據(jù)信息。



這里需要特別說明的是,促銷模塊是電商系統(tǒng)中最復(fù)雜的一個(gè)模塊。各種優(yōu)惠券、滿減、返現(xiàn)等促銷規(guī)則,每一條都非常復(fù)雜,再加上這些規(guī)則往往還要疊加計(jì)算,有時(shí)甚至?xí)?fù)雜到連制定促銷規(guī)則的人都算不清楚。

所有電商公司無一例外都曾因?yàn)榇黉N規(guī)則制定失誤,導(dǎo)致商品實(shí)際售價(jià)遠(yuǎn)低于成本價(jià),使公司受到一定程度的損失。盡管如此,五花八門的促銷活動(dòng)依然是提升銷量最有效的手段,因此需要充分利用。

作為電商系統(tǒng)的設(shè)計(jì)者,我們需要把促銷規(guī)則的變化和復(fù)雜性控制在促銷模塊內(nèi)部,不能因?yàn)橐粋€(gè)促銷模塊而導(dǎo)致整個(gè)電商系統(tǒng)都變得非常復(fù)雜,否則設(shè)計(jì)和實(shí)現(xiàn)將會(huì)很難。

一種可行的做法是,把促銷模塊與其他模塊的接口設(shè)計(jì)得相對簡單和固定,這樣系統(tǒng)的其他模塊就不會(huì)因?yàn)樾碌拇黉N規(guī)則改變而隨之進(jìn)行改變。

在創(chuàng)建訂單時(shí),訂單模塊需要把商品和價(jià)格信息傳給促銷模塊,促銷模塊返回一個(gè)可以使用的促銷列表,用戶選擇對應(yīng)的促銷和優(yōu)惠,訂單模塊把商品、價(jià)格、促銷優(yōu)惠等信息,再次傳給促銷模塊,促銷模塊再返回促銷之后的價(jià)格。在最終生成的訂單中,系統(tǒng)只需要記錄訂單使用了哪幾種促銷規(guī)則,以及最終的促銷價(jià)格就可以了。

這樣,無論促銷模塊如何變化,訂單和其他模塊的業(yè)務(wù)邏輯都不需要隨之改變。

至此,我們就完成了一個(gè)電商系統(tǒng)的概要設(shè)計(jì),大家對電商系統(tǒng)應(yīng)該也有了一個(gè)初步的了解。


03 小結(jié)

下面就來回顧一下一個(gè)電商系統(tǒng)的設(shè)計(jì)中所包含的核心要點(diǎn)。

首先,電商系統(tǒng)面向的角色是:用戶、運(yùn)營人員和管理者。這三個(gè)角色對電商系統(tǒng)的需求是:用戶通過系統(tǒng)來購物,運(yùn)營人員負(fù)責(zé)商品的銷售,管理者關(guān)注系統(tǒng)中的經(jīng)營數(shù)據(jù)。

電商系統(tǒng)最核心的流程是用戶購物的流程,購物流程從用戶瀏覽選購商品開始,加購、下單、支付、運(yùn)營人員發(fā)貨、用戶確認(rèn)收貨,至此電商系統(tǒng)的購物流程結(jié)束。

細(xì)化這個(gè)流程之后,我們可以分析出支撐這個(gè)流程的核心功能模塊:商品、訂單、購物車、支付和庫存。除此之外,一個(gè)完整的電商系統(tǒng)還包括促銷、用戶、賬戶、搜索推薦和報(bào)表這些必備的功能模塊。

作為一名開發(fā)者,在做需求分析的時(shí)候,需要把握的一個(gè)要點(diǎn)是:不要一上來就設(shè)計(jì)功能,而是要先理清業(yè)務(wù)需求。這也是本文反復(fù)強(qiáng)調(diào)的兩個(gè)問題:這個(gè)系統(tǒng)是給哪些人用的?他們分別用這個(gè)系統(tǒng)來解決什么問題?這樣就可以確保做出來的系統(tǒng)大體上不會(huì)偏離用戶的預(yù)期。

最后,在講解系統(tǒng)功能模塊劃分的時(shí)候,介紹了一個(gè)能夠有效降低系統(tǒng)復(fù)雜度的設(shè)計(jì)經(jīng)驗(yàn)。那就是,如果系統(tǒng)業(yè)務(wù)是復(fù)雜而多變的,那么請盡量識別出這部分復(fù)雜業(yè)務(wù)的邊界,將復(fù)雜業(yè)務(wù)控制在一個(gè)模塊內(nèi)部,從而避免將這種復(fù)雜度擴(kuò)散到整個(gè)系統(tǒng)中去。



來源:大數(shù)據(jù)DT