自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

必知必會(huì)的數(shù)據(jù)建模思想,都在這了

大數(shù)據(jù) 開(kāi)發(fā)
在筆者看來(lái),身處數(shù)字化時(shí)代,大家都應(yīng)該懂?dāng)?shù)字化,懂一些軟件的工作機(jī)理。

導(dǎo)讀:在不熟悉軟件開(kāi)發(fā)的業(yè)務(wù)人員看來(lái),軟件似乎是一種很神秘的事物。因?yàn)閷?duì)軟件不熟悉,這些人對(duì)軟件的看法往往容易走入兩個(gè)極端:要么認(rèn)為軟件很簡(jiǎn)單,要么認(rèn)為軟件是萬(wàn)能的。如果再加上軟件開(kāi)發(fā)或數(shù)字化從業(yè)人員不懂或不熟悉業(yè)務(wù),業(yè)務(wù)與IT之間的鴻溝就會(huì)越來(lái)越寬、越來(lái)越深。在筆者看來(lái),身處數(shù)字化時(shí)代,大家都應(yīng)該懂?dāng)?shù)字化,懂一些軟件的工作機(jī)理。

如果用一個(gè)簡(jiǎn)單的數(shù)學(xué)公式來(lái)看軟件,我們可以將軟件理解為:

軟件=數(shù)據(jù)+程序+界面

數(shù)據(jù)指的是我們?nèi)绾稳ッ枋霈F(xiàn)實(shí)中的事物,比如事物叫什么名字、有多重、有多高、什么材質(zhì)、什么顏色等。用軟件的術(shù)語(yǔ)講,就是對(duì)象、對(duì)象的屬性和屬性值。程序就是一段用于操作對(duì)象或?qū)ο髮傩缘挠?jì)算機(jī)代碼,這些操作包括創(chuàng)建、刪除、修改、查詢、計(jì)算等。界面指的是人與軟件的交互界面,包括界面布局、菜單、按鈕、選擇框、文本框等要素。

從軟件設(shè)計(jì)和開(kāi)發(fā)的過(guò)程來(lái)看,軟件的設(shè)計(jì)和開(kāi)發(fā)與汽車或其他機(jī)電產(chǎn)品的設(shè)計(jì)和開(kāi)發(fā)工作基本是類似的,要有好的架構(gòu),也要考慮功能、交期、成本、質(zhì)量等管理要求。實(shí)際上,軟件開(kāi)發(fā)的入門(mén)不難,難的是開(kāi)發(fā)出功能復(fù)雜、操作簡(jiǎn)便和性能可靠的軟件,這就取決于當(dāng)事人的軟件設(shè)計(jì)和建模,包括數(shù)據(jù)建模、流程建模、界面建模等。此處以數(shù)據(jù)建模為例,談?wù)勗O(shè)計(jì)和建模思想對(duì)軟件的影響。軟件工程對(duì)數(shù)據(jù)建模的總體要求是完整性、無(wú)冗余、復(fù)用性、穩(wěn)定性、開(kāi)放性、集成性、優(yōu)雅性和可讀性。

1)完整性。數(shù)據(jù)建模的完整性要求對(duì)象和對(duì)象屬性的定義等數(shù)據(jù),應(yīng)該能夠滿足所有的業(yè)務(wù)需求,不能有任何遺漏。

2)無(wú)冗余。數(shù)據(jù)建模的無(wú)冗余,指的是數(shù)據(jù)庫(kù)表和表的字段不能出現(xiàn)重復(fù),應(yīng)該只有一張“臉”,而不是數(shù)出多孔,否則就很難保證數(shù)據(jù)的一致性,也將造成邏輯的混亂和存儲(chǔ)空間的浪費(fèi)。

3)復(fù)用性。復(fù)用性是模塊化思想在數(shù)據(jù)建模的體現(xiàn),指的是數(shù)據(jù)定義可以用于多種業(yè)務(wù)和多個(gè)場(chǎng)景。

4)穩(wěn)定性。穩(wěn)定性比較好理解,指的是數(shù)據(jù)庫(kù)表在更新或擴(kuò)充時(shí),原有數(shù)據(jù)能夠保證穩(wěn)定,不出錯(cuò)。

5)開(kāi)放性。開(kāi)放性指的是數(shù)據(jù)表和表字段可以根據(jù)業(yè)務(wù)的變化或擴(kuò)展做出相應(yīng)的變化或擴(kuò)展。

6)集成性。集成性指的是數(shù)據(jù)表和表字段與其他系統(tǒng)之間的數(shù)據(jù)交互和集成。

7)優(yōu)雅性。優(yōu)雅性指的是數(shù)據(jù)建模中對(duì)象、對(duì)象類、類層次等之間的包含與被包含關(guān)系清晰、可裝配和可追溯。

8)可讀性??勺x性指的是數(shù)據(jù)建模的內(nèi)容,尤其是概念模型能夠被業(yè)務(wù)和用戶容易地理解。

大體上,軟件的數(shù)據(jù)建模包括三個(gè)步驟:概念建模、邏輯建模和物理建模。

01概念建模

概念建模(Concept Modeling)的主要目的是將業(yè)務(wù)需求轉(zhuǎn)換為數(shù)據(jù)需求,站在軟件的角度將業(yè)務(wù)需求結(jié)構(gòu)化和系統(tǒng)化。通過(guò)概念建模,所有的業(yè)務(wù)需求都可以歸結(jié)到對(duì)象(包括對(duì)象屬性的定義)與對(duì)象之間的關(guān)系上。換句話說(shuō),通過(guò)對(duì)象與對(duì)象之間的關(guān)系,可以描述現(xiàn)實(shí)中任意一個(gè)事物,以及組織對(duì)事物的管理要求。

概念建模是業(yè)務(wù)需求與軟件開(kāi)發(fā)的橋梁。在保證概念模型中對(duì)象、對(duì)象屬性、對(duì)象之間的關(guān)系被完整清晰定義的前提下,概念模型在形式上也可能容易被業(yè)務(wù)人員所理解,這涉及概念建模的語(yǔ)言和工具的選擇。當(dāng)前,業(yè)內(nèi)常用的概念數(shù)據(jù)建模工具有E-R實(shí)體與關(guān)系模型、UML統(tǒng)一建模語(yǔ)言和OPM對(duì)象過(guò)程模型。

(1)E-R實(shí)體與關(guān)系模型

E-R模型以兩類要素—實(shí)體(Element)和關(guān)系(Relationship)為基本構(gòu)件,來(lái)描述業(yè)務(wù)需求。其中,實(shí)體類似于面向?qū)ο缶幊讨械膶?duì)象,關(guān)系類似于面向?qū)ο缶幊讨械姆椒ɑ蚴录?/p>

如圖1所示,其中的業(yè)務(wù)對(duì)象有合同工、員工、組織單元、崗位和技能,事件則有雇傭、終止、離職、轉(zhuǎn)崗、晉升、評(píng)價(jià)等。對(duì)象之間還有“被擁有”與“擁有”“管理”“匯報(bào)給”等關(guān)系類型。

圖1 E-R概念數(shù)據(jù)建模方法舉例

(2)UML統(tǒng)一建模語(yǔ)言

UML是一種為面向?qū)ο笙到y(tǒng)的產(chǎn)品進(jìn)行說(shuō)明、可視化和編制文檔的一種標(biāo)準(zhǔn)語(yǔ)言,在軟件開(kāi)發(fā)工程師之間比較常用。UML中包括功能模型、對(duì)象模型和動(dòng)態(tài)模型,由模型元素(Model Element)、圖(Diagram)、視圖(View)、通用機(jī)制(General Mechanism)等幾個(gè)部分組成。

(3)OPM對(duì)象過(guò)程建模

相比UML統(tǒng)一建模語(yǔ)言,OPM對(duì)象過(guò)程建模的方法更簡(jiǎn)單,不僅可以用于軟件開(kāi)發(fā)領(lǐng)域,也可以用于其他產(chǎn)品的設(shè)計(jì)和建模。

如果從模型學(xué)的角度,世界基本由三種要素構(gòu)成,即物(Object)、事或過(guò)程(Process)和關(guān)系(Relationship)。從時(shí)間變遷的角度,物是物理或信息上的靜態(tài)存在(Existence);過(guò)程是一種時(shí)間和動(dòng)作序列化的動(dòng)態(tài)存在(Happening);關(guān)系則是物與物之間、過(guò)程與過(guò)程之間、物與過(guò)程之間的相互關(guān)聯(lián),可以表現(xiàn)為結(jié)構(gòu)(Structure)或行為(Behavior)。世界或世界的某部分,都可以用這三方面的要素建構(gòu)或解構(gòu)。在這種思想的指導(dǎo)下,誕生了很多模型方法論,通用性比較強(qiáng)又相對(duì)簡(jiǎn)單的是對(duì)象關(guān)系方法論(Object-Process Methodology,OPM)。

在OPM方法論中,人們(用五官或理性思維)看得見(jiàn)也可言說(shuō)的關(guān)鍵要素只有兩類,即對(duì)象(Object)和過(guò)程(Process)。關(guān)系則只能根據(jù)最終結(jié)果或輸出來(lái)意會(huì),難以言說(shuō)或書(shū)面化,它是現(xiàn)實(shí)世界中的“玄”和“玄之又玄”。過(guò)程對(duì)對(duì)象的影響主要有三種:

1)過(guò)程消耗或消滅對(duì)象,比如制造過(guò)程要消耗原材料;

2)過(guò)程催生或創(chuàng)造對(duì)象,比如制造過(guò)程產(chǎn)生副產(chǎn)品或產(chǎn)成品;

3)過(guò)程改變對(duì)象的狀態(tài),比如制造過(guò)程將所使用的設(shè)備設(shè)置為“忙”的狀態(tài)。

在制造過(guò)程中,人、機(jī)、料(含原材料、在制品和產(chǎn)成品)和環(huán)是對(duì)象,法和測(cè)是過(guò)程。此外,對(duì)象還可能是過(guò)程的操作者(Operator),過(guò)程由對(duì)象觸發(fā)或控制;對(duì)象還可能為過(guò)程提供支持(Instrument),過(guò)程的推進(jìn)依賴某些工具或設(shè)備。

用OPM的方法描繪的通用制造系統(tǒng)模型如圖2.9所示。

圖2.9 用OPM描述的通用制造系統(tǒng)模型

由圖2.9的模型圖,可以得出以下結(jié)論:

1)制造系統(tǒng)的核心作用是轉(zhuǎn)化,即將能源、人力、原材料等資源轉(zhuǎn)化為產(chǎn)品;

2)制造系統(tǒng)的運(yùn)行過(guò)程中還會(huì)產(chǎn)生一定的無(wú)價(jià)值副產(chǎn)品,比如排放、返工、等待、工料費(fèi)等;

3)制造系統(tǒng)的改進(jìn)方向是減少資源消耗,杜絕無(wú)價(jià)值副產(chǎn)品,增加價(jià)值產(chǎn)品的產(chǎn)出;

4)制造系統(tǒng)的改進(jìn)路徑是優(yōu)化對(duì)象與對(duì)象之間、對(duì)象與過(guò)程之間、過(guò)程與過(guò)程之間的關(guān)系,即結(jié)構(gòu)和行為。

(4)對(duì)象、類和類的層次

選擇什么樣的建模語(yǔ)言或工具,主要取決于當(dāng)事人的偏好,選用任何一種建模工具都不能保證數(shù)據(jù)建模的高質(zhì)量,還要在數(shù)據(jù)模型中的對(duì)象、類,以及類的層次上下功夫,考驗(yàn)的是當(dāng)事人的哲學(xué)思維和架構(gòu)能力。下面以業(yè)內(nèi)知名的物聯(lián)網(wǎng)平臺(tái)—PTC ThingWorx數(shù)據(jù)建模為例,來(lái)談?wù)勂渲兴N(yùn)含的數(shù)據(jù)建模思想。

應(yīng)用軟件是解決方案的“母體”,PaaS平臺(tái)是應(yīng)用軟件的“母體”。

從業(yè)務(wù)需求到解決方案,從解決方案到應(yīng)用軟件,從應(yīng)用軟件到PaaS平臺(tái),抽象化越來(lái)越高,通用性越來(lái)越強(qiáng)。平臺(tái)之所以稱為平臺(tái),就是因?yàn)樗歉叨瘸橄蠡?、模型化的架?gòu)式軟件系統(tǒng),它能衍生出千千萬(wàn)萬(wàn)的“子孫”—應(yīng)用軟件。

PaaS平臺(tái)是模型和架構(gòu)思維在IT行業(yè)的具體實(shí)例,其模型化、架構(gòu)化的程度越高,平臺(tái)的生命力就越強(qiáng)。在PTC ThingWorx平臺(tái)中,基本架構(gòu)要素如圖2所示,主要有七個(gè):Thing Shape、Thing Template、Thing、屬性、服務(wù)、事件和訂閱。

圖2 PTC ThingWorx平臺(tái)中的架構(gòu)要素

Thing是物聯(lián)網(wǎng)中對(duì)象的統(tǒng)稱,可以代表智能設(shè)備、資產(chǎn)、產(chǎn)品、IT系統(tǒng)、人員、流程等。簡(jiǎn)而言之,在物聯(lián)網(wǎng)世界中,萬(wàn)事萬(wàn)物都是Thing。

Thing Shape和Thing Template是Thing的類,是在Thing之上更高層面的模塊化。Thing可以繼承Thing Shape和Thing Template的各種屬性和方法。一個(gè)Thing需要分配一個(gè)Thing Template,也可同時(shí)分配一個(gè)或多個(gè)Thing Shape。

Thing Shape可以理解為迷你型Thing Template。Thing Shape可以分配給Thing Template,反之則不行。分配給Thing Template或Thing的Thing Shape可以為一個(gè)或多個(gè),而分配給Thing Template或Thing的Thing Template則只能為一個(gè)。

屬性、服務(wù)、事件、訂閱等用于描述物聯(lián)網(wǎng)中各種Thing的特性和方法。屬性、服務(wù)、事件和訂閱可以分配給Thing Shape和Thing Template,然后再間接繼承到相關(guān)的Thing,也可以直接將其分配給Thing。

屬性是對(duì)Thing的描述,可以是靜態(tài)的,也可以是動(dòng)態(tài)的。

服務(wù)是由一段代碼所構(gòu)成的方法或功能,以幫助Thing完成某個(gè)特定的活動(dòng)。

事件是觸發(fā)器,用于觸發(fā)Thing的狀態(tài)變化,也可以驅(qū)動(dòng)某個(gè)業(yè)務(wù)邏輯或活動(dòng)。

訂閱是伴隨著事件的活動(dòng),可用于業(yè)務(wù)的優(yōu)化或自動(dòng)化。

根據(jù)業(yè)務(wù)需求,應(yīng)用PTC ThingWorx平臺(tái)進(jìn)行業(yè)務(wù)建模,基本遵循以下過(guò)程(如圖3所示):

圖3 PTC ThingWorx中的數(shù)據(jù)建模過(guò)程

1)業(yè)務(wù)需求的準(zhǔn)確性、完整性記錄和澄清;

2)將業(yè)務(wù)需求分解成相對(duì)獨(dú)立的用戶故事;

3)將用戶故事的內(nèi)容拆分成業(yè)務(wù)對(duì)象(實(shí)例,Instance)和對(duì)象之間的關(guān)系(Relationship);

4)將關(guān)系的內(nèi)容和性質(zhì)進(jìn)一步拆分成屬性、服務(wù)、事件和訂閱;

5)將第4步中的屬性、服務(wù)、事件、訂閱等進(jìn)行歸納和分類;

6)根據(jù)第5步的分類,定義必要的Template或Shape,并將所有的屬性、服務(wù)、事件、訂閱等分配給Template或Shape;

7)將第3步實(shí)例清單中的實(shí)例與第6步的Template或Shape進(jìn)行關(guān)聯(lián);

8)用Template、Shape、Thing、屬性、服務(wù)、事件、訂閱等要素,以相互之間的分配與繼承關(guān)系完整地描繪第2步的所有用戶故事。

利用ThingWorx對(duì)物聯(lián)網(wǎng)業(yè)務(wù)場(chǎng)景進(jìn)行建模,就是從特殊到一般、從個(gè)體到模型的過(guò)程,其中的關(guān)鍵是實(shí)例與實(shí)例之間關(guān)系的整理和結(jié)構(gòu)化。將關(guān)系拆分成不可分割的屬性、服務(wù)、事件或訂閱,然后再合并同類項(xiàng),最終完成從關(guān)系到屬性和方法、從屬性和方法到模型化的過(guò)程。

02邏輯建模

邏輯建模(Logical Modeling)是將概念建模的內(nèi)容進(jìn)行數(shù)據(jù)結(jié)構(gòu)化。在邏輯建模中,對(duì)象、對(duì)象屬性等要素用數(shù)據(jù)庫(kù)表和表字段來(lái)表示,包括創(chuàng)建多少數(shù)據(jù)庫(kù)表,每一個(gè)數(shù)據(jù)庫(kù)表有哪些列(字段)、主鍵和外鍵,每一列的標(biāo)識(shí)、名稱、數(shù)據(jù)類型、長(zhǎng)度和業(yè)務(wù)規(guī)則,等等。

03物理建模

物理建模(Physical Modeling)是將邏輯建模的內(nèi)容落實(shí)到具體的數(shù)據(jù)管理系統(tǒng)中。這時(shí),數(shù)據(jù)庫(kù)管理系統(tǒng)的選擇還要考慮數(shù)據(jù)庫(kù)性能、訪問(wèn)控制、存儲(chǔ)空間、硬件要求等。

綜上所述,概念建模、邏輯建模和物理建模是數(shù)據(jù)建模的三個(gè)步驟和主要工作內(nèi)容。其中,邏輯建模和物理建模純粹是技術(shù)活,概念建模則更多地考驗(yàn)建模者對(duì)需求的理解程度,以及將業(yè)務(wù)需求轉(zhuǎn)化為數(shù)據(jù)需求的哲學(xué)思辨和架構(gòu)思維的能力,是決定軟件質(zhì)量的根本所在。

關(guān)于作者,丁少華,字肇之,現(xiàn)任杭州三之一智聯(lián)科技有限公司首席顧問(wèn)。資深數(shù)字化專家,擁有20多年的企業(yè)信息化和數(shù)字化咨詢服務(wù)經(jīng)驗(yàn)。?

責(zé)任編輯:張燕妮 來(lái)源: 數(shù)倉(cāng)寶貝庫(kù)
相關(guān)推薦

2019-09-10 13:38:56

人工智能無(wú)人駕駛機(jī)器人

2022-08-19 10:31:32

Kafka大數(shù)據(jù)

2020-07-10 07:58:14

Linux

2024-11-15 11:11:48

2021-06-09 11:06:00

數(shù)據(jù)分析Excel

2024-01-09 13:58:22

PandasPython數(shù)據(jù)分析

2024-01-03 07:56:50

2022-05-18 09:01:19

JSONJavaScript

2017-07-12 15:32:12

大數(shù)據(jù)大數(shù)據(jù)技術(shù)Python

2019-11-06 10:56:59

Python數(shù)據(jù)分析TGI

2018-10-26 14:10:21

2019-04-08 15:30:22

MySQL優(yōu)化架構(gòu)

2021-04-15 10:01:18

Sqlite數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)知識(shí)

2023-05-08 15:25:19

Python編程語(yǔ)言編碼技巧

2023-04-20 14:31:20

Python開(kāi)發(fā)教程

2023-12-26 12:10:13

2021-04-12 10:00:47

Sqlite數(shù)據(jù)庫(kù)CMD

2024-07-26 08:32:44

panic?Go語(yǔ)言

2020-08-23 18:18:27

Python列表數(shù)據(jù)結(jié)構(gòu)

2024-06-19 10:08:34

GoChannel工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)