如何繪制邏輯圖——邏輯的表達(dá):數(shù)據(jù)邏輯(8)
編輯導(dǎo)語:我們在日常工作中經(jīng)常會遇到各種各樣的邏輯關(guān)系,邏輯可以讓我們的工作提高效率;作者在前一篇介紹了邏輯中的“業(yè)務(wù)邏輯”表達(dá)方式,本篇文章作者繼續(xù)介紹“數(shù)據(jù)邏輯”的表達(dá)方式,我們一起來看一下。
多數(shù)沒有開發(fā)背景的需求工程師對數(shù)據(jù)面層的分析、設(shè)計是比較生疏的,面對比較復(fù)雜的數(shù)據(jù)關(guān)系時或多或少都有一些畏懼,不太愿意深究,盡量交給后續(xù)的程序員去處理。
這個做法是不對的,數(shù)據(jù)邏輯來源于業(yè)務(wù)邏輯,需求分析師能夠向程序員說明數(shù)據(jù)邏輯關(guān)系,那么后者的工作效率會提升很多(否則、不熟悉業(yè)務(wù)的后者還要花費很多時間去研究業(yè)務(wù)邏輯);同時是否能夠清楚地表達(dá)數(shù)據(jù)邏輯關(guān)系也說明了需求分析師具有的能力和水平。
一、數(shù)據(jù)邏輯的概念
數(shù)據(jù)邏輯:表達(dá)的是數(shù)據(jù)層數(shù)據(jù)之間的邏輯關(guān)系,這個層的要素是數(shù)據(jù)。
為了理解數(shù)據(jù)邏輯,要先理解為什么存在著業(yè)務(wù)邏輯和數(shù)據(jù)邏輯二種不同的表達(dá)形式呢?這首先是因為兩者存在于不同的層面上、且要素不同。
1. 業(yè)務(wù)邏輯
表達(dá)的是以客戶“活動、規(guī)則”等內(nèi)容為要素的邏輯關(guān)系。
業(yè)務(wù)邏輯表達(dá)的是業(yè)務(wù)活動之間的關(guān)系,是以客戶的業(yè)務(wù)知識、業(yè)務(wù)事理為基礎(chǔ)的。
舉例說明,圖1是一個生產(chǎn)過程的業(yè)務(wù)架構(gòu)圖(流程圖),我們對客戶業(yè)務(wù)的理解首先是從業(yè)務(wù)架構(gòu)圖獲得的,從圖的表面上只看到業(yè)務(wù)活動之間的關(guān)系,如:活動“4.采購”完成后下一個活動是“5.物流”。
圖1 生產(chǎn)流程圖
在表面上雖然直接看不到數(shù)據(jù)的存在,但是在兩個活動之間的關(guān)聯(lián)線中流動著如下的數(shù)據(jù):采購物品名稱、數(shù)量、單價、交付日期等。
2. 數(shù)據(jù)邏輯
表達(dá)的是以“數(shù)據(jù)”為要素的邏輯關(guān)系。
數(shù)據(jù)邏輯是數(shù)據(jù)間的關(guān)系。數(shù)據(jù)架構(gòu)層在業(yè)務(wù)架構(gòu)層的下面,圖2是一個業(yè)務(wù)邏輯與數(shù)據(jù)邏輯關(guān)系的示意圖。
從業(yè)務(wù)架構(gòu)圖上是不能直接看到數(shù)據(jù)邏輯的,數(shù)據(jù)是業(yè)務(wù)活動產(chǎn)生的結(jié)果(沉淀),數(shù)據(jù)邏輯的獲取是依賴于業(yè)務(wù)邏輯的,但在數(shù)據(jù)獲取后,數(shù)據(jù)間的引用關(guān)系要遠(yuǎn)多于業(yè)務(wù)活動間的關(guān)聯(lián)關(guān)系,如圖2所示。
數(shù)據(jù)邏輯雖然來源于業(yè)務(wù)邏輯,反過來數(shù)據(jù)邏輯又是業(yè)務(wù)邏輯合理存在的內(nèi)在支撐。
圖2 業(yè)務(wù)邏輯與數(shù)據(jù)邏輯關(guān)系的示意圖
確認(rèn)了存在著數(shù)據(jù)之間的邏輯關(guān)系,那么這個邏輯表達(dá)形式是什么樣的呢?數(shù)據(jù)邏輯的表現(xiàn)形式有很多,本篇的目的是支持業(yè)務(wù)需求的分析工作,因此從“業(yè)務(wù)的視角”給出數(shù)據(jù)邏輯的表達(dá)方法(而不是從技術(shù)視角)。
3. 數(shù)據(jù)邏輯的表達(dá)形式
這里介紹業(yè)務(wù)分析用的三種數(shù)據(jù)邏輯表達(dá)形式:線、表、圖,參見圖3,其中:
- 圖(a)線:是用數(shù)據(jù)表的業(yè)務(wù)編號,作為連接數(shù)據(jù)表、數(shù)據(jù)之間的關(guān)系(主/外鍵);
- 圖(b)表:指的是數(shù)據(jù)表,用表格結(jié)構(gòu)表達(dá)出數(shù)據(jù)之間的上下、父子、從屬等的關(guān)系;
- 圖(c)圖:用圖的形式,給出數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,如:算式圖、數(shù)據(jù)線、勾稽圖;
圖3 數(shù)據(jù)邏輯的表達(dá)方式
二、數(shù)據(jù)邏輯表達(dá)的簡介
1. 用線表達(dá)數(shù)據(jù)邏輯(主/外鍵)
以下面的合同書的數(shù)據(jù)表為例,說明主鍵和外鍵的定義和關(guān)系,參見圖4。
主鍵,是本數(shù)據(jù)表的代表名稱,一個數(shù)據(jù)表里只能有一個主鍵,它只能是唯一地標(biāo)識表中的每一行,通過它可強(qiáng)制數(shù)據(jù)表的完整性;它用于與其他表的關(guān)聯(lián),以及本記錄的修改與刪除等。
外鍵,當(dāng)一個表中除了本表的主鍵外,還保存了其它數(shù)據(jù)表的主鍵時,那么在本表中其它數(shù)據(jù)表的主鍵就被稱之為“外鍵”;根據(jù)參照外部數(shù)據(jù)表的數(shù)量多少,一個數(shù)據(jù)表中可以有復(fù)數(shù)的外鍵。
圖4 數(shù)據(jù)表之間的主外鍵關(guān)系示意圖
2. 用表表達(dá)數(shù)據(jù)邏輯
數(shù)據(jù)表,是按照一定的結(jié)構(gòu)形式排列的數(shù)據(jù)格式,任何數(shù)據(jù)的載體都是數(shù)據(jù)表。用“格式”描述數(shù)據(jù)表的形式,格式包括了數(shù)據(jù)結(jié)構(gòu)、數(shù)字分類、數(shù)據(jù)狀態(tài)等三類內(nèi)容,參見圖5。
- 數(shù)據(jù)結(jié)構(gòu):列表結(jié)構(gòu)、樹表結(jié)構(gòu)等;
- 數(shù)字分類:數(shù)值、貨幣、文本、日期、分?jǐn)?shù)等;
- 數(shù)據(jù)狀態(tài):表達(dá)在導(dǎo)入上游功能的數(shù)據(jù)時,該功能所處的狀態(tài),比如:編輯期限已過、功能被鎖定、審批已完成、數(shù)據(jù)已被引用等。
圖5 數(shù)據(jù)表格式示意圖
3. 用圖表達(dá)數(shù)據(jù)邏輯
當(dāng)遇到了非常復(fù)雜的計算,比如:數(shù)據(jù)來源多、計算公式復(fù)雜且需要進(jìn)行多重計算等,需求分析師如何才能做到準(zhǔn)確、快速地向程序員說明計算公式和數(shù)據(jù)呢?
此時僅靠用文字說明就非常困難了,即麻煩、又不準(zhǔn)確,使用邏輯圖是一個非常好的方法,這里簡單地介紹一下算式關(guān)聯(lián)圖的用法。
算式關(guān)聯(lián)圖的應(yīng)用場景是:在某個“節(jié)點”上有多個數(shù)據(jù)來源的匯總、計算;這個計算式可以是存在于活動功能、看板功能或報表功能中的某個處理步驟,這個計算式涉及到了復(fù)雜的數(shù)據(jù)來源、引用、關(guān)聯(lián)及多重的計算。
算式關(guān)聯(lián)圖的模型包括了兩大部分:數(shù)據(jù)的來源和數(shù)據(jù)的處理,見圖6。
假定在圖a.的“L-021采購流程”的B節(jié)點①上有一個計算處理,這個計算需要用到A、B、Q節(jié)點、以及其他數(shù)據(jù)庫的數(shù)據(jù),表達(dá)B節(jié)點計算過程的方式如下。
圖6 算式關(guān)聯(lián)圖
下面分別對算式關(guān)聯(lián)圖的各個部分進(jìn)行詳細(xì)說明。
1)數(shù)據(jù)來源
數(shù)據(jù)來源圖部分,是用來說明包含有計算功能的位置、以及其它參與計算的數(shù)據(jù)來源:
- 繪制采購流程L-021,該流程上節(jié)點A和節(jié)點B中的數(shù)據(jù)參與了計算,另外,不在流程上的獨立活動Q中的數(shù)據(jù)也參與了計算;
- 標(biāo)注出發(fā)生了“成本核算”處理的活動B在該流程上的位置(可以采用不同的顏色);
- 標(biāo)注出每個活動上參與計算的數(shù)據(jù)表名稱,比如:活動A/表a(在流程上的功能)、活動Q/表q(非流程上的功能);
至此,標(biāo)示出了計算公式的位置和3個數(shù)據(jù)的來源,完成了數(shù)據(jù)來源的說明。
2)數(shù)據(jù)處理
數(shù)據(jù)處理圖,是建立數(shù)據(jù)表b的計算處理模型,其中:
圖6的②表b:因為計算公式在發(fā)生在功能B上,因此將功能B的數(shù)據(jù)表b放到處理圖的左上角。
圖6的③其它的數(shù)據(jù)來源分列在處理圖的兩側(cè)(布局的要求僅作為參考),比如:
- 數(shù)據(jù)源1:將來源于活動類的數(shù)據(jù),如:表a、表q,置于處理圖的左側(cè),表b的下方;
- 數(shù)據(jù)源2:將來源于數(shù)據(jù)庫的數(shù)據(jù),如:基礎(chǔ)數(shù)據(jù)、過程數(shù)據(jù)庫,置于處理圖的右側(cè);
圖6的④計算數(shù)據(jù):在表內(nèi)寫入?yún)⑴c計算的變量名稱、數(shù)值,并用箭頭線將數(shù)據(jù)表指向處理器;
圖6的⑤計算名稱:計算處理器⑤的上面要標(biāo)明算式的名稱,如:成本核算;
圖6的⑥計算過程:將各數(shù)據(jù)來源的具體數(shù)值帶入到計算過程⑥的公式中,格式必須要給出分步計算的過程,必須要讓程序員可以讀出來每一步的計算公式與對應(yīng)的計算結(jié)果;
圖6的⑦計算結(jié)果:將最終的計算結(jié)果填入計算結(jié)果欄⑦,到此完成全部的計算過程;
圖6的⑧如果某個步驟的內(nèi)容比較復(fù)雜,可以在實體、或是數(shù)據(jù)旁邊,加入一些說明文;
可以看出來,算式關(guān)聯(lián)圖實際上就是一個為解決某個特定問題而建立的用例圖。
擴(kuò)展說明:
由誰來規(guī)劃數(shù)據(jù)和建立數(shù)據(jù)標(biāo)準(zhǔn)?
在軟件企業(yè)中有不少人認(rèn)為:只要是數(shù)據(jù)相關(guān)的設(shè)計就是程序員的工作,其實不然,業(yè)務(wù)層面與技術(shù)層面對數(shù)據(jù)的設(shè)計方法是不同的,技術(shù)層面的數(shù)據(jù)設(shè)計不能替代業(yè)務(wù)層面的數(shù)據(jù)設(shè)計;相反,沒有很好的業(yè)務(wù)層面的數(shù)據(jù)設(shè)計做支持,技術(shù)層面的數(shù)據(jù)設(shè)計缺乏依據(jù)、容易發(fā)生重復(fù)調(diào)研、分析和設(shè)計的現(xiàn)象,工作效率低。
與技術(shù)層面的數(shù)據(jù)設(shè)計不同,業(yè)務(wù)層面重點做的不是數(shù)據(jù)“庫”的設(shè)計,而是業(yè)務(wù)數(shù)據(jù)的邏輯設(shè)計,由于業(yè)務(wù)和技術(shù)的視角不同,數(shù)據(jù)關(guān)系圖的表達(dá)內(nèi)容和方式也不同,參見圖7中的兩張圖就可以看出它們之間的區(qū)別,區(qū)別的關(guān)鍵點還是在于業(yè)務(wù)邏輯的有無。
- 業(yè)務(wù)視角的數(shù)據(jù)關(guān)系圖(a):有業(yè)務(wù)流程,帶有清晰的業(yè)務(wù)邏輯關(guān)系;
- 技術(shù)視角的數(shù)據(jù)關(guān)系圖(b):用“鍵”的形式替代了業(yè)務(wù)邏輯的表達(dá)形式,但是要注意,這個“鍵”的設(shè)計依據(jù)或直接、或間接地參考了業(yè)務(wù)邏輯。
圖7 數(shù)據(jù)關(guān)系圖
只有從業(yè)務(wù)設(shè)計的視角,充分地理解業(yè)務(wù)數(shù)據(jù)的內(nèi)容、用途、業(yè)務(wù)數(shù)據(jù)之間的邏輯關(guān)系、以及未來可能的變動規(guī)律等,才能保證不論業(yè)務(wù)如何變化數(shù)據(jù)的結(jié)構(gòu)都是穩(wěn)定的。
消除企業(yè)信息孤島現(xiàn)象,首先是業(yè)務(wù)設(shè)計師要解決的問題,因為這個問題的本質(zhì)不是數(shù)據(jù)庫問題,也不是技術(shù)開發(fā)工程師單獨能夠解決的問題。
本系列下一篇博文:李鴻君:如何繪制邏輯圖 — 9.模型的分類
作者:李鴻君;《大話軟件工程—需求分析與軟件設(shè)計》一書作者。
本文由 @李鴻君 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自?Unsplash,基于 CC0 協(xié)議
- 目前還沒評論,等你發(fā)揮!