建模知識(shí)在實(shí)際設(shè)計(jì)中的應(yīng)用(下)

4 評(píng)論 5170 瀏覽 55 收藏 15 分鐘

本篇主要嘮嘮建模知識(shí)在日常工作、實(shí)際設(shè)計(jì)中的應(yīng)用。

以下為上篇總結(jié),補(bǔ)充在此;

  • 角色矩陣、系統(tǒng)主流程以及狀態(tài)圖,三者之間相互補(bǔ)充與制衡,最終達(dá)到完美的統(tǒng)一;
  • 狀態(tài)圖梳理后調(diào)整補(bǔ)充系統(tǒng)主流程,系統(tǒng)主流程調(diào)整后調(diào)整補(bǔ)充角色矩陣;
  • 同樣,角色矩陣也限制、指導(dǎo)著系統(tǒng)的主要功能,防止在梳理需求時(shí)被無限放大;

相關(guān)閱讀:

建模知識(shí)在需求分析、梳理中的應(yīng)用(中)

數(shù)據(jù)庫(kù)建模知識(shí):在需求獲取與分析中的應(yīng)用(上)

一、原型線框圖

在角色矩陣、系統(tǒng)主流程和狀態(tài)圖達(dá)到統(tǒng)一后,接下來就來到原型設(shè)計(jì)的階段,此階段的主要目的是把每個(gè)實(shí)體的屬性以及實(shí)體之間的聯(lián)系,以我們?nèi)粘?梢?、理解的方式呈現(xiàn);

1.1 模塊劃分

  1. 基礎(chǔ)模塊的劃分遵循實(shí)體的界限,一般來說,一個(gè)實(shí)體就是一個(gè)基礎(chǔ)模塊,通常模塊首頁(yè)以列表形式展示;如普通的電商后臺(tái)系統(tǒng),即用戶、商品、訂單這些基礎(chǔ)模塊,這些其實(shí)也是實(shí)體;
  2. 統(tǒng)計(jì),關(guān)聯(lián)類,根據(jù)實(shí)際需求定義模塊,通常以圖表、列表形式展示;

1.2 站點(diǎn)地圖

系統(tǒng)涉及到的頁(yè)面以及頁(yè)面之間的流轉(zhuǎn)以地圖索引的方式展示;一般以模塊劃分,如系統(tǒng)功能較簡(jiǎn)單,可以系統(tǒng)為單位。

1.3 頁(yè)面信息架構(gòu)

即頁(yè)面呈現(xiàn)的信息,從建模角度來看,其實(shí)就是實(shí)體屬性以及實(shí)體之間聯(lián)系的展示;

實(shí)體屬性,即實(shí)體的基本屬性,比如員工有員工號(hào)、姓名、身份證號(hào)、職位、性別、郵箱等基本屬性;實(shí)體之間的聯(lián)系,即該實(shí)體與其他實(shí)體之前的聯(lián)系,如我們?cè)谏掀袑懙降牟块T-人員的關(guān)系;

  • 1:1,當(dāng)實(shí)體之間為1:1的聯(lián)系時(shí),當(dāng)前實(shí)體的頁(yè)面展示可以將對(duì)面實(shí)體以其屬性的形式展示;如某公司業(yè)務(wù)支撐部,經(jīng)理張三,在員工基本信息頁(yè),職位:部門經(jīng)理,部門:業(yè)務(wù)支撐部;在部門基本信息查看時(shí),部門:業(yè)務(wù)支撐部,部門經(jīng)理:張三;
  • 1:N,當(dāng)實(shí)體之間為1:N的聯(lián)系時(shí),為“1”的實(shí)體頁(yè)面信息展示時(shí),可以將對(duì)面的“N”以下級(jí)頁(yè)面或列表的形式展示;為“N”的實(shí)體頁(yè)面信息展示時(shí),可以將對(duì)面的“1”以其屬性的形式展示;如業(yè)務(wù)支撐部下屬員工有2個(gè),分別是小麗、小黃,查看業(yè)務(wù)部信息時(shí),可以設(shè)置“下屬員工”鏈接到下級(jí)頁(yè)面,也可以以列表的形式展示這2個(gè)員工信息。同理,在員工基本信息頁(yè)面時(shí),可以將該員工的所在/所屬部門以其基本屬性展示;
  • N:N,當(dāng)實(shí)體之間為N:N的聯(lián)系時(shí),對(duì)面實(shí)體以下級(jí)頁(yè)面或列表的形式展示;如學(xué)生-課程,在學(xué)生模塊,可以將所選課程以下級(jí)頁(yè)面的形式展示,也可以以列表的形式展示;同理在課程模塊,該課程被哪些學(xué)生選修,可以以下級(jí)頁(yè)面展示,也可以以列表的形式展示;

二、設(shè)計(jì)原則

2.1 始終把“用戶+需求”放在第一位

  • 用戶:即該系統(tǒng)的最終用戶,可遵循我們?cè)谏蟽善兄v到的角色實(shí)體;
  • 需求:即功能,用戶通過系統(tǒng)想要達(dá)到的目的;
  • 用戶+需求:即考慮該功能的實(shí)際應(yīng)用場(chǎng)景,根據(jù)實(shí)際場(chǎng)景把控設(shè)計(jì)的方向;

實(shí)際場(chǎng)景應(yīng)考慮的因素如下,持續(xù)補(bǔ)充:

  • 用戶年齡大小,這直接影響到視覺上的配色、字體、字號(hào)等;
  • 用戶整體素質(zhì)水平,在流程跳轉(zhuǎn)、提示等節(jié)點(diǎn)盡量簡(jiǎn)潔易懂;
  • 用戶所處環(huán)境,用戶是處在比較莊嚴(yán)的機(jī)關(guān)單位還是新潮的互聯(lián)網(wǎng)行業(yè),都有一套行業(yè)規(guī)則;
  • 功能使用周期、頻率;這直接影響到表結(jié)構(gòu)的設(shè)計(jì),在大頻率的功能上,訪問速度是需要著重考慮的問題;

2.2 遵循“高內(nèi)聚,低耦合”的設(shè)計(jì)原則

這應(yīng)該是我從大學(xué),老師就一直強(qiáng)調(diào)的,就像一項(xiàng)指明燈指引我們前進(jìn);你會(huì)發(fā)現(xiàn),所有不好用的設(shè)計(jì)邏輯,都會(huì)忽略這個(gè)原則。

官方解釋:

高內(nèi)聚:又稱塊內(nèi)聯(lián)系。指模塊的功能強(qiáng)度的度量,即一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量。若一個(gè)模塊內(nèi)各元素(語(yǔ)名之間、程序段之間)聯(lián)系的越緊密,則它的內(nèi)聚性就越高。

低耦合:一個(gè)完整的系統(tǒng),模塊與模塊之間,盡可能的使其獨(dú)立存在。也就是說,讓每個(gè)模塊,盡可能的獨(dú)立完成某個(gè)特定的子功能。模塊與模塊之間的接口,盡量的少而簡(jiǎn)單。

官方給出的解釋中,主要是針對(duì)模塊之間,實(shí)際上,這個(gè)結(jié)論對(duì)大至平臺(tái),小至實(shí)體都是適應(yīng);

下面舉個(gè)關(guān)于實(shí)體之間的栗子:我之前接過的一個(gè)項(xiàng)目,其中有一條這樣的邏輯“一個(gè)經(jīng)銷商下最多3個(gè)聯(lián)系人”;這時(shí)我們會(huì)疑問,為啥會(huì)有這種設(shè)定, 這樣的規(guī)則在后續(xù)會(huì)產(chǎn)生哪些問題呢:

  • 當(dāng)經(jīng)銷商下聯(lián)系人超過3個(gè)時(shí),系統(tǒng)是不支持的;
  • 系統(tǒng)是由簡(jiǎn)到繁的過程,一開始設(shè)定這樣的限制,如果后面想在撤銷這種設(shè)定的話會(huì)涉及很多改動(dòng);

實(shí)體之間不夠獨(dú)立且依賴太多,所以這不遵循高內(nèi)聚低耦合的原則; 其實(shí)這就是簡(jiǎn)單的1:N的關(guān)系,只是在某些特定方式下,如導(dǎo)入經(jīng)銷商及其聯(lián)系人的時(shí)候,這時(shí)我們可以設(shè)定這個(gè)聯(lián)系人最多是3個(gè),但是,在系統(tǒng)的使用中,這種關(guān)系反而是一種負(fù)擔(dān);

2.3 遵循“復(fù)用性”原則,所有設(shè)計(jì)力求復(fù)用最優(yōu)化

官方解釋:

可復(fù)用性,復(fù)用又叫重用,是重復(fù)使用的意思。復(fù)用的好處可以得到 較高的生產(chǎn)效率以及隨之而來的成本降低、較高的軟件質(zhì)量(錯(cuò)誤可以更快的被糾正)以及 恰當(dāng)?shù)氖褂脧?fù)用可以改善系統(tǒng)的可維護(hù)性。

模塊之間的復(fù)用,即實(shí)體的復(fù)用,當(dāng)實(shí)體之間是N:N的關(guān)系時(shí),一定會(huì)存在這樣的復(fù)用關(guān)系;如果不存在,那這個(gè)設(shè)計(jì)可能沒有達(dá)到復(fù)用最優(yōu)化的標(biāo)準(zhǔn);

如我們常見的組件與商品的關(guān)系,是N:N,在商品新建時(shí)會(huì)以屬性的方式增加組件;

這樣做的好處是:

  • 組件不需要重復(fù)新建,直接在商品新增時(shí)引用加入即可;
  • 可對(duì)組件進(jìn)行管理、控制;

如果我們換一種設(shè)計(jì)思維,如新建商品時(shí),一個(gè)個(gè)編輯填寫組件信息,這樣做會(huì)帶來

  • 如不同商品的組件信息相同時(shí),要重復(fù)錄入;
  • 組件是以屬性的方式附屬在商品上,達(dá)不到組件可控可管的需求;

階梯性關(guān)聯(lián)關(guān)系的設(shè)計(jì),即多個(gè)實(shí)體之間有階梯性關(guān)聯(lián)關(guān)系,建議采用斷層式數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),不建議跨級(jí)發(fā)生聯(lián)系,即使需要跨級(jí)也要把中間那層關(guān)系加上;

為了便于理解,以下實(shí)例奉上。

背景:項(xiàng)目-經(jīng)銷商是N:N的關(guān)系,經(jīng)銷商-聯(lián)系人是1:N的關(guān)系;

需求1:當(dāng)項(xiàng)目新增成功后,會(huì)根據(jù)一定條件匹配經(jīng)銷商,確認(rèn)此項(xiàng)目可能推送的經(jīng)銷商,或者叫預(yù)推送;此時(shí)的預(yù)推送表結(jié)構(gòu)的設(shè)計(jì)應(yīng)該是項(xiàng)目-經(jīng)銷商,而不是項(xiàng)目-聯(lián)系人或項(xiàng)目-經(jīng)銷商-聯(lián)系人;這樣設(shè)計(jì)的好處有,

  • 我們只固定了前半邊的關(guān)系,后面的關(guān)系可以通過經(jīng)銷商來匹配帶出,當(dāng)經(jīng)銷商人員發(fā)生變更時(shí)也不會(huì)有任何影響;如果采用其他方式,在經(jīng)銷商人員變更時(shí)會(huì)多出很多復(fù)雜的數(shù)據(jù)操作,以保證此功能不受影響;
  • 經(jīng)銷商-聯(lián)系人是1:N的關(guān)系,插入一條項(xiàng)目-經(jīng)銷商關(guān)系就要插入多條項(xiàng)目-聯(lián)系人或項(xiàng)目-經(jīng)銷商-聯(lián)系人的關(guān)系,從數(shù)據(jù)的冗余角度考慮,也是項(xiàng)目-經(jīng)銷商的關(guān)系比較適合;

需求2:項(xiàng)目推送,項(xiàng)目預(yù)推送匹配成功后,可以對(duì)項(xiàng)目進(jìn)行推送,這是真正的推送,有了這條推送,聯(lián)系人才能在前端看到對(duì)應(yīng)的項(xiàng)目;而此時(shí)的設(shè)計(jì)應(yīng)該是如何呢

答案是,項(xiàng)目-經(jīng)銷商-聯(lián)系人;為什么會(huì)加入“經(jīng)銷商”呢?前面的背景也說到,項(xiàng)目與聯(lián)系人其實(shí)是沒有這種關(guān)系的,他們產(chǎn)生關(guān)系的載體其實(shí)就是“經(jīng)銷商”;這樣做的好處是

  • 明確該聯(lián)系人時(shí)通過什么載體(即經(jīng)銷商)來獲得這從推送關(guān)系的,當(dāng)聯(lián)系人與載體的關(guān)系發(fā)生變更時(shí),有個(gè)依據(jù)來對(duì)關(guān)聯(lián)數(shù)據(jù)進(jìn)行相關(guān)操作;如聯(lián)系人從載體A變更到B,那此時(shí),聯(lián)系人當(dāng)時(shí)通過A獲得的項(xiàng)目推送關(guān)系就應(yīng)該刪除;
  • 相反的,如果不加入“經(jīng)銷商”的載體,那聯(lián)系人可見的項(xiàng)目是只增不減,因?yàn)槲覀儧]有這個(gè)載體的依據(jù)去操作數(shù)據(jù);

注:一切實(shí)際需求為標(biāo)準(zhǔn),僅供參考;

三、日常設(shè)計(jì)要點(diǎn)

3.1 保持對(duì)需求的嚴(yán)謹(jǐn)態(tài)度

雖然需求多如牛毛,產(chǎn)品累成狗(微笑),但我們也要始終保持一顆嚴(yán)謹(jǐn)、謙遜的態(tài)度;做軟件的都知道,即使是一個(gè)很小的需求,他的改動(dòng)有時(shí)也不一定比一個(gè)大的需求少;所以,在需求被提出時(shí),我們要保證我們已經(jīng)了解到該需求的所有細(xì)節(jié),以及涉及到的所有改動(dòng)點(diǎn);

3.2 盡量囊括所有擴(kuò)展場(chǎng)景

好的產(chǎn)品,流程極簡(jiǎn)且不容易發(fā)生異常;為什么說不容易呢,因?yàn)榧词故巧?,也有考慮不周的地方,所以在設(shè)計(jì)時(shí),應(yīng)盡量囊括所有場(chǎng)景。

(1)外部條件導(dǎo)致的異常如斷網(wǎng)、服務(wù)掛掉等,應(yīng)給出合適的提示信息;

(2)另外還有一種,即在常規(guī)流程外的分支流程,這個(gè)是特別需要我們注意且控制的。

  • 重復(fù)提交:提交按鈕沒有控制可用狀態(tài)&&頁(yè)面流程較慢的情況下會(huì)出現(xiàn)多次重復(fù)提交的現(xiàn)象,一般前端+后臺(tái),雙重控制,杜絕重讀提交;
  • 流程異常,無法繼續(xù)走下去:充分考慮擴(kuò)展場(chǎng)景,避免出現(xiàn)操作異常,即使異常,也應(yīng)給出相關(guān)提示,指導(dǎo)用戶繼續(xù)走下去。

3.3 模塊關(guān)聯(lián)性,版本規(guī)劃

模塊、需求,都有可能產(chǎn)生關(guān)聯(lián),有前后的這種關(guān)系,這種情況應(yīng)該考慮先規(guī)劃前置位的模塊或功能,然后再是后置位;版本的規(guī)劃,以系統(tǒng)核心模塊為基礎(chǔ),遵從“關(guān)聯(lián)性模塊中的前置模塊,優(yōu)先級(jí)高于后置模塊”的規(guī)則,來規(guī)劃版本;

3.4 其他

(1)唯一性校驗(yàn),當(dāng)實(shí)體有唯一性要求時(shí),如用戶的手機(jī)號(hào)碼,身份證號(hào)等,在實(shí)體新增、修改時(shí),校驗(yàn)是否已存在、保證唯一性;

(2)關(guān)聯(lián)性關(guān)系,當(dāng)刪除父節(jié)點(diǎn)時(shí),子節(jié)點(diǎn)也會(huì)對(duì)應(yīng)刪除或軟刪除;

(3)在對(duì)實(shí)體進(jìn)行變更時(shí),應(yīng)首先以用戶的角色看問題;如已經(jīng)發(fā)出去的優(yōu)惠券,此時(shí)應(yīng)設(shè)置不可再進(jìn)行變更,因?yàn)榘l(fā)生變更后,用戶看到的將是更改后的優(yōu)惠券;

相關(guān)閱讀

數(shù)據(jù)庫(kù)建模知識(shí):在需求獲取與分析中的應(yīng)用(上)

建模知識(shí)在需求分析、梳理中的應(yīng)用(中)

 

作者:Andy。放松玩,專注思考的B端產(chǎn)品經(jīng)理。

本文由 @Andy 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 建模真的對(duì)產(chǎn)品的設(shè)計(jì)很重要,初次涉及產(chǎn)品的建模,存在一些疑問,可以加個(gè)微信,以后也互相交流(咳咳,其實(shí)是我想不要臉的求教 ?? )嗎?

    來自廣東 回復(fù)
    1. 哈哈,歡迎指正,我的電話同微信13512500038

      來自江蘇 回復(fù)
  2. 讀完上、中、下,感同身受。流程圖,實(shí)體關(guān)聯(lián)圖,狀態(tài)圖也是我平時(shí)需求建模用得最多的。同是一枚B端產(chǎn)品 ??

    來自四川 回復(fù)
    1. 歡迎指正,我算半個(gè)吧,目前做的都是小點(diǎn)的,后面想接觸體系級(jí)B端產(chǎn)品;

      來自江蘇 回復(fù)