偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

01概念建模

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

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

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

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

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

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

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

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

(3)OPM對象過程建模

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

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

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

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

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

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

在制造過程中,人、機、料(含原材料、在制品和產(chǎn)成品)和環(huán)是對象,法和測是過程。此外,對象還可能是過程的操作者(Operator),過程由對象觸發(fā)或控制;對象還可能為過程提供支持(Instrument),過程的推進依賴某些工具或設(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)的運行過程中還會產(chǎn)生一定的無價值副產(chǎn)品,比如排放、返工、等待、工料費等;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

02邏輯建模

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

03物理建模

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

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

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

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

2019-09-10 13:38:56

人工智能無人駕駛機器人

2020-07-10 07:58:14

Linux

2022-08-19 10:31:32

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

2024-11-15 11:11:48

2024-01-03 07:56:50

2021-06-09 11:06:00

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

2024-01-09 13:58:22

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

2022-05-18 09:01:19

JSONJavaScript

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)

2017-07-12 15:32:12

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

2021-04-15 10:01:18

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

2023-04-20 14:31:20

Python開發(fā)教程

2023-12-26 12:10:13

2023-05-08 15:25:19

Python編程語言編碼技巧

2021-04-12 10:00:47

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

2024-07-26 08:32:44

panic?Go語言

2018-03-19 14:43:28

2015-10-20 09:46:33

HTTP網(wǎng)絡(luò)協(xié)議
點贊
收藏

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