摘要:該文主要針對ER模型和DFD模型進行了探討。ER模型和DFD模型是數據設計和數據流設計的有效工具,它們不僅是軟件設計的基礎,而且也是軟件設計的必然。
關鍵詞:數據設計;數據流設計;ER模型;DFD模型
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)33-9431-02
Analysis of ER Model and the DFD Model
LI Su-ping
(Taiyuan University of Technology,Yangquan 045000, China)
Abstract: This article mainly aimed at the ER model and the DFD model has carried on the discussion.The ER model and the DFD model are effective tools in the data design and the data stream design.Not only they are the foundation which the software designs, moreover alsothey arethe necessity which the software designs.
Key words: data design; data stream design; ER model; DFD model
軟件系統本質上是信息處理系統,因此,在軟件系統的整個開發過程中都必須考慮兩方面的問題——“數據”及對數據的“處理”。即既要分析用戶的數據要求(即需要有哪些數據、數據之間有什么聯系、數據本身有什么性質、數據的結構等等),又要分析用戶的處理要求(即對數據進行哪些處理、每個處理的邏輯功能等等)。所以,數據設計和數據流設計既是軟件設計的基礎,又是軟件設計的必備。
1 數據設計
在軟件工程學中,為了把開發系統的大量紛繁復雜的數據清晰明確地組織起來,通常建立一個概念性的數據模型,也稱為信息模型。
概念性數據模型是按照用戶的觀點對數據或信息建模,它描述了從用戶角度看到的數據,反映了用戶的現實環境,且與在軟件系統中的實現方法無關。
最常用的表示概念性數據模型的方法,是實體-聯系方法(Entity-Relationship Approach)。這種方法是用實體-聯系圖(也稱為實體-關系圖或ER圖)來描述現實世界中的實體,用這種方法表示的概念性數據模型又稱為ER模型。
實體--聯系模型中包含“實體”、“聯系”和“屬性”三個基本成分。
1) 實體
實體是客觀世界中存在的且可相互區分的事物。實體可以是人也可以是物;可以是具體事物也可以是抽象概念。例如,職工、學生、課程、教師等都是實體。在ER圖中用矩形框代表實體。
2) 聯系
客觀世界中的事物彼此間往往是有聯系的。例如,教師與課程間存在“教”這種聯系,而學生與課程間則存在“學”這種聯系。聯系可分為以下三類:
(1) 一對一聯系(1∶1)
(2) 一對多聯系(1∶N)
(3) 多對多聯系(M∶N)
3) 屬性
屬性是實體或聯系所具有的性質。通常一個實體由若干個屬性來描述。例如,“學生”實體有學號、姓名、性別、系、年級等屬性;“教師”實體有教工號、姓名、性別、職稱、職務等屬性;“課程”實體有課程號、課名、學時、學分等屬性。
聯系也可能有屬性。例如,學生“學”某門課程所取得的成績,既不是學生的屬性也不是課程的屬性。由于“成績”既依賴于某名特定的學生又依賴于某門特定的課程,所以這是學生與課程之間的聯系“學”的屬性。
通常,我們應該根據所要解決的實際問題確定特定的數據(即實體)的一組合適的屬性。
在ER圖中,用橢圓形或圓角矩形表示實體(或聯系)的屬性,并用直線把實體(或聯系)與其屬性連接起來。
如圖1是某校教學管理的ER圖例。
可以看出, ER模型比較接近人的習慣思維方式,不熟悉計算機技術的用戶也能容易地理解掌握。因此,它可以作為數據設計的有力工具。有了它,就可以方便地導出數據的邏輯模型,確定合適的物理結構,以順利完成數據設計的任務,從而為軟件設計打下堅實的基礎。
2 數據流設計
當數據在軟件中“移動”時,它將被一系列“處理”所修改。為了把用戶的處理要求清晰明確地表達出來,通常建立一個抽象性的邏輯模型。它描述了數據在軟件中從輸入移動到輸出的過程中所經受的變換(即加工處理)。它是從用戶角度看到的處理,即對數據進行哪些處理、每個處理的邏輯功能等等,且與在軟件系統中功能的具體實現方法無關。
在軟件工程學中,通常用數據流圖這種抽象性邏輯模型表示數據的處理。數據流圖(DFD)是一種形象直觀的圖形,它僅僅描繪數據在軟件中流動和被處理的情況,是軟件系統邏輯功能的圖形表示。
數據流圖有四種基本符號:正方形(或立方體)表示數據的源點或終點;圓角矩形(或圓形)代表變換數據的處理;開口矩形(或兩條平行橫線)代表數據存儲;箭頭表示數據流,即特定數據的流動方向。
說明:數據存儲和數據流都是數據,它們所處的狀態不同。數據存儲是處于靜止狀態的數據,數據流是處于運動中的數據。
除了上述四種基本符號之外,有時也使用幾種附加符號:星號(*)表示數據流之間“與”的關系(同時存在);加號(+)表示數據流之間“或”的關系;異或號(⊕)表示只能從數據流中選一個(互斥的關系)。
如下是某工廠定貨系統的DFD圖例。
假設一工廠的采購部每天需要一張定貨報表,報表按零件編號排序,表中列出所有需要再次定貨的零件。對于每個需要再次定貨的零件應該列出下述數據:零件編號,零件名稱,定貨數量,目前價格,主要供應者,次要供應者。零件入庫或出庫稱為事務,通過放在倉庫中的終端把事務報告給定貨系統。當某種零件的庫存數量少于庫存量臨界值時就應該再次定貨。如圖2。
然而,從這張圖上對定貨系統所能了解到的信息非常有限。所以,應該把基本系統模型再細化。將定貨系統分解為“處理事務”和“產生報表”兩個基本功能,同時,增加兩個數據存儲(“庫存清單”和“定貨信息”)和兩個數據流(“庫存清單”和“定貨信息”)
這時,還需進一步分解。因為通過系統的邏輯數據流當發生一個事務時必須首先接收它;隨后按照事務的內容修改庫存清單;最后,如果更新后的庫存量少于庫存量臨界值,則應該再次定貨,也就是需要處理定貨信息。因此,把“處理事務”這個功能再分解為“接收事務”、“更新庫存清單”和“處理定貨”這樣三個子功能就明了了。如圖3。也就是說,分解到需要涉及功能的具體實現時就不應該再分解了。
可以看出, DFD模型也比較接近人的習慣思維方式,即使不是專業的計算機技術人員也很容易理解,所以,它是數據流設計極好的工具。有了它,就可以方便地導出系統模塊圖,完成數據流設計的任務,從而為軟件設計打下堅實的基礎。
因此,ER模型和DFD模型是數據設計和數據流設計的基礎,更是軟件設計的必然。
參考文獻:
[1] 劉健.SQLServer數據庫案例教程[M].北京:清華大學出版社,2008.
[2] 劉培文,數據庫原理與應用[M].北京:中國人民大學出版社,2006.
[3] 陳明.軟件工程[M].北京:清華大學出版社,2002.