產(chǎn)品設(shè)計——一見復(fù)雜先分層
分層是一種重要的思考和解決問題的方法。它可以幫助我們從宏觀上把握問題,分階段設(shè)定目標(biāo),再通過分解來具體實(shí)施。無論是組織架構(gòu)設(shè)計,還是軟件開發(fā),分層都發(fā)揮著重要作用。掌握分層思維,可以讓我們更從容地面對復(fù)雜問題,邁出解決問題的第一步。
我們要談一個同行們都會遇到的問題,面對復(fù)雜需求時,如何邁出第一步?這里不賣關(guān)子,豆芽君的解法就是對問題進(jìn)行分層。
我們先回答一個問題:分層和分解有什么區(qū)別?
一、分層和分解有何區(qū)別?
學(xué)習(xí)過金字塔原理、結(jié)構(gòu)化思維、軟件開發(fā)設(shè)計的朋友,對分解都不陌生。它是一種結(jié)構(gòu)主義,假設(shè)了要完成一件復(fù)雜的事,通過逐層分解,最終是可以分解成一個個具體的動作。
比如美食博主們要做一份蒜香蝦,他能把這份美食的材料組成、烹飪過程都分解得一清二楚。屏幕前的我們,仿佛看完后,自己已經(jīng)預(yù)演操作了一遍。
那么我們今天要說的分層又是什么?分層相比分解,它更抽象。同樣舉個我們常見的例子來感受下分層。
公司定了一個產(chǎn)品目標(biāo),要向市場推出一套新的辦公系統(tǒng)。如果你是一名產(chǎn)品經(jīng)理,你會如何制定這個產(chǎn)品開發(fā)計劃?這件事有標(biāo)準(zhǔn)做法嗎?
有的產(chǎn)品經(jīng)理會采用先調(diào)研內(nèi)部高層的目標(biāo),再尋找市面的競品,最后再來梳理產(chǎn)品的用戶群、功能定位、差異化。而有的產(chǎn)品經(jīng)理則會先開展外部調(diào)研,了解外部客戶的需求,再回來和公司高層分享市場信息,最后再來考慮自己的產(chǎn)品設(shè)計。
我們能說哪種做法更正確嗎?這很難說。他們的差異更多是取決于他們所在組織的工作文化和產(chǎn)品經(jīng)理的工作方式偏好。
但你認(rèn)真對比下這兩種做法,能抽象出它們有什么共性嗎?
建議你想一想,再往下看
簡單地理解,兩種做法的背后都是先調(diào)研、分析,再定目標(biāo)。雖然它們的具體步驟是不同的,但有一點(diǎn)是相同的:先規(guī)劃(規(guī)劃層),再行動(執(zhí)行層)。
認(rèn)真觀察我們周圍,不少人接到一項任務(wù),習(xí)慣性就開始采用【分解】的做法,他們相比那些想都不想,直接開干的人已經(jīng)上了一個臺階。但大家具體一聊的話,會發(fā)現(xiàn)他們常常面臨諸多問題,不知道怎么分解才是對的。原因是他們把不同層次的問題都夾雜在一起考慮,導(dǎo)致無從開始做分解。
這也是我們今天分享【分層】這個主題的意義所在。
二、分層到底能解決什么問題?
我們先看看分層的一些典型應(yīng)用:
從公司的職務(wù)來看,至少分為高層、中層、執(zhí)行層。大家有沒認(rèn)真想過不同職務(wù)層的人他們?nèi)绻麉⑴c到同一件事,他們各自的工作是什么嗎?這里就是我們要講的分層最通俗的應(yīng)用。
一般來說高層解決定目標(biāo)的事,中層處理定流程、規(guī)范的事,執(zhí)行層干類似搬磚的事(沒有貶低任何一方得事,高層和中層可能也不會搬磚了,各司其職而已)。
那么為什么要對組織架構(gòu)進(jìn)行分層?其實(shí)這種分層對應(yīng)著組織在開展業(yè)務(wù)過程中所需的分工、協(xié)作。有資源、有行業(yè)經(jīng)驗的高層,他們負(fù)責(zé)制定業(yè)務(wù)的戰(zhàn)略、目標(biāo);有管理經(jīng)驗、能力強(qiáng)的中層,他們則負(fù)責(zé)梳理業(yè)務(wù)開展的規(guī)范、分工;有專業(yè)能力的執(zhí)行層,負(fù)責(zé)落地具體的分工任務(wù)。
大家有繼續(xù)想一個更復(fù)雜的問題?這三者分工的事,最終能像膠水粘出一件像樣的成品嗎?不然這就是各說各話,各做各事,最后干的結(jié)果可想而知。
好,我們重點(diǎn)介紹下在軟件的分層設(shè)計,這種工程領(lǐng)域,它們是如何分層以及連接?(以下內(nèi)容部分來自AI,豆芽君根據(jù)我們讀者的背景知識進(jìn)行調(diào)整)。
三層架構(gòu)是一種經(jīng)典的軟件設(shè)計模式,將應(yīng)用程序劃分為三個邏輯上的層次,分別是表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。
下面是每層的具體分工以及它們之間的協(xié)作方式:
1)表示層: 系統(tǒng)與用戶交互的界面,負(fù)責(zé)展示數(shù)據(jù)和接收用戶輸入。它處理圖形用戶界面的顯示邏輯、用戶輸入驗證以及用戶操作響應(yīng),但不包含業(yè)務(wù)處理邏輯。
2)業(yè)務(wù)邏輯層: 系統(tǒng)的核心,封裝了所有的業(yè)務(wù)規(guī)則和邏輯處理。它接收來自表示層的請求,進(jìn)行必要的業(yè)務(wù)處理(如計算、事務(wù)處理、邏輯判斷等),并可能調(diào)用數(shù)據(jù)訪問層來獲取或更新數(shù)據(jù),最后將處理結(jié)果返回給表示層。
3)數(shù)據(jù)訪問層: 負(fù)責(zé)與持久化數(shù)據(jù)存儲(如數(shù)據(jù)庫、文件系統(tǒng))進(jìn)行交互,包括數(shù)據(jù)的讀取、寫入、更新和刪除操作。它的主要目的是為業(yè)務(wù)邏輯層提供一個抽象層,隱藏數(shù)據(jù)存儲的具體細(xì)節(jié)。
層與層之間的工作銜接:
- 表示層向業(yè)務(wù)邏輯層請求數(shù)據(jù)或服務(wù),當(dāng)用戶在界面上執(zhí)行操作時,表示層收集用戶輸入,將其封裝成請求或參數(shù),然后調(diào)用業(yè)務(wù)邏輯層的接口或方法。
- 業(yè)務(wù)邏輯層接收到表示層的請求后,執(zhí)行相應(yīng)的業(yè)務(wù)邏輯處理,如果需要訪問數(shù)據(jù)庫,它會調(diào)用數(shù)據(jù)訪問層的方法來完成數(shù)據(jù)的CRUD(創(chuàng)建、讀取、更新、刪除)操作。
- 數(shù)據(jù)訪問層處理與數(shù)據(jù)庫的通信,執(zhí)行SQL查詢或其他數(shù)據(jù)訪問操作,并將查詢結(jié)果返回給業(yè)務(wù)邏輯層。
- 業(yè)務(wù)邏輯層根據(jù)從數(shù)據(jù)訪問層獲得的數(shù)據(jù),進(jìn)一步處理(如格式轉(zhuǎn)換、邏輯運(yùn)算等),然后將最終結(jié)果封裝好,通過接口返回給表示層。
- 最后,表示層接收到來自業(yè)務(wù)邏輯層的結(jié)果,更新用戶界面,展示所需的信息或處理結(jié)果,完成與用戶的交互循環(huán)。
相信具備點(diǎn)計算機(jī)基礎(chǔ)的你,是可以看出表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層是通過一種自上而下請求,然后自底向上返回的方式來完成三者的連接的。
不知道好奇的你,會不會進(jìn)一步追問,難道不分層不行嗎?
答案是:真不行。理由是一方面人員的術(shù)業(yè)有專攻,很少有工程師同時掌握前后端的所有開發(fā)技術(shù);另一方面業(yè)務(wù)的發(fā)展、變化,如果系統(tǒng)不分層,會造成每一個調(diào)整都牽一發(fā)動全身,影響業(yè)務(wù)的正常開展。
所以說分層是為專業(yè)化、復(fù)雜性而生的。
講到這,你回過頭來想想,為什么要先分層?再考慮分解?
分層的目的是考慮不同階段所要達(dá)成的目標(biāo),而分解是對每個層次目標(biāo)的具體工作分解。如果跳過分層,直接進(jìn)入分解,就容易擴(kuò)大問題范圍,造成問題失焦。
三、如果我想了解分層,怎么入門?
聽起來分層好像很厲害,但又很抽象。如果我想用下【分層】這種做法,可以怎么樣上手?
豆芽君又偷懶用了下,用AI查了分層的一些應(yīng)用工具。你可以網(wǎng)上去看看三個工具:分層直方圖、分層排列圖和層次分析法,和它們的具體應(yīng)用案例。
相信看完后,你就不會覺得這個概念太玄乎,動手去分析一個復(fù)雜問題的分層吧。比如說時下最火的AI,你能分析下它的組成是什么嗎?普通人如果想進(jìn)入這個領(lǐng)域去做些副業(yè),可以怎么開始?歡迎你來一起討論。
本文由人人都是產(chǎn)品經(jīng)理作者【豆芽悟】,微信公眾號:【豆芽悟】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于 CC0 協(xié)議。
- 目前還沒評論,等你發(fā)揮!