軟件工程(數據流圖例題詳解)

假設一家工廠的采購部每天需要一張訂貨報表,報表按零件編號排序,表中列出所有需要再次訂貨的零件。對于每個需要再次訂貨的零件應該列出下述的數據:零件編號,零件名稱,訂貨數量,目前價格,主要供應者,次要供應者。零件入庫或出庫稱為事務,通過放在倉庫中的CRT終端把事務報告給訂貨系統。當某種零件的庫存數量少于庫存量臨界值時就應該再次訂貨。

數據流圖有4種成分:

1、源點和終點

2、處理

3、數據存儲

4、數據流

因此,第一步可以從問題描述中提取數據流圖的4種成分:

①首先考慮數據的源點和終點,從上面對系統的描述可以知道“采購部每天需要一張訂貨報表”,“通過放在倉庫中的CRT終端把事務報告給訂貨系統”,所以采購員是數據終點,而倉庫管理員是數據源點。

②接下來考慮處理,再次一次閱讀問題描述,“采購部需要報表”,顯然他們還沒有這種報表,因此必須有一個產生報表的處理。事務的后果是改變零件庫存量,然而任何改變數據的操作都是處理,因此對事物進行的加工是另一個處理。

③最后,考慮數據流和數據存儲:系統把訂單報表送給采購部,因此訂貨報表是一個數據流;事務需要從倉庫送到系統中,顯然事務是另一個數據流。產生報表和處理事務這兩個在時間上明顯不匹配———每當有一個事務發生時立即處理它,然而每天只產生一次訂貨報表。因此,用來產生訂貨報表的數據必須存放一段時間,也就是應該有應該數據存儲

組成數據流圖的元素可以從描述問題的信息中提取出來

源點/終點處理

采購員

倉庫管理員

產生報表

處理事務

數據流數據存儲

訂貨報表

??? 零件編號

??? 零件名稱

??? 訂貨數量

??? 目前價格

??? 主要供應者

??? 次要供應者

事務

??? 零件編號

??? 事務類型

??? 數量

訂貨信息

庫存清單

???? 零件編號

???? 庫存量

???? 庫存量臨界值

?

??

一旦把數據流圖的4種成分都分離出來以后,就可以畫數據流圖了,但是,怎樣開始畫呢?

注意:數據流圖是系統的邏輯模型,然而任何計算機系統實質上都是信息處理系統,也就是說計算機系統本質上都是把輸入數據變換成輸出數據。因此,任何系統的基本模型都是由若干數據源點/終點以及一個處理組成,這個處理就代表了系統對數據加工變換的基本功能。

?從基本系統模型這樣非常高的層次開始畫數據流圖是一個好辦法。在這個高層次的數據流圖上是否列出了所有給定的數據終點/源點一目了然,因此它是很有價值的通信工具。

然而,訂貨系統的基本系統模型圖畢竟太抽象,從這張圖對訂貨系統所能代表的信息非常有限。下一步應該把基本系統模型細化,描繪系統的主要功能。從信息表中可得,“產生報表”和“處理事務”是系統必須完成的兩個主要功能,它們將代替訂貨系統的基本系統模型圖中的訂貨系統,此外,細化后的數據流圖還增加了兩個數據存儲:處理事務需要“庫存清單“數據;產生報表和處理事務在不同時間進行,因此需要存儲”訂單信息“。除了訂貨系統的基本系統模型圖中列出的兩數據流之外,還有另外兩個數據流,它們與數據存儲相同。這是因為從應該數據存儲中取出來的或放進去的數據通常和原來數據相同,也就是說,數據存儲和數據流只不過是同樣的數據的兩種不同的形式。

訂貨系統的功能級數據流圖

接下來應該對功能級數據圖中描述的系統主要功能進一步細化。考慮通過系統的邏輯數據流:當發送一個事務時必須首先接收它;隨后按照事務的內部修改庫存清單;最后如果更新后的庫存量少于庫存量臨界值時,則應該再次訂貨,也就是要處理訂貨信息。因此,把“處理事務”這個功能分解為下述3個步驟,這在邏輯上是合理的:“接受事務”,"更新庫存清單","處理事務"。

為什么不進一步分解“產生報表”這個功能呢?訂貨報表中需要的數據在存儲的訂貨信息中全部都有,產生報表只不過是按一定順序排列這些信息,再按一定格式打印出來。然而這些考慮純屬具體實現的細節,不應該在數據流圖中表現。同樣道理。對“接收事務”或“更新庫存清單”等功能也沒有必要進一步細化。總之,當進一步分解將涉及如何具體實現一個功能時就不應該再分解了。

當對數據流圖分層細化時必須保持信息連續性,也就是說,當把一個處理分解為一系列處理時,分解前和分解后的輸入輸出數據流必須相同

此外還要注意圖中處理編號的方法。處理1.1,1.2和1.3是更高層次的數據流圖中處理1的組成元素。如果處理2被進一步分解,它的組成元素的編號將是2.1,2.2,……;如果把處理1.1進一步分解,則將得到編號為1.1.1,1.1.2,……的處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534331.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534331.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534331.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件工程(數據流圖的命名、用途和自動化邊界)

數據流圖中每個成分的命名是否恰當,直接影響數據流圖的可理解性。因此,給這些成分起名字時應該仔細推敲。 命名 1.為數據流(或數據存儲)命名 (1)名字應代表整個數據流(或數據存儲)的內容,而不是僅僅反映它的某些成分。 (2)不要使用空洞的…

軟件工程(數據字典)

數據字典 數據字典是關于數據的信息的集合,也就是對數據流圖中包含的所有元素的定義的集合。 任何字典最主要的用這都是供人查閱對不了解的條目的解釋,數據字典的作用也正是在軟件分析和設計的過程中給人提供關于數據的描述信息。 數據流圖和數據字典共…

Qt圖形界面編程入門(Qt的歷史、Qt安裝資源鏈接、Qt Creator簡介)

Qt的歷史淵源 Qt是1991年由挪威的奇趣科技(Trolltech)公司開發的跨平臺C圖形用戶界面(GUI)用程序開發框架,2008年,奇趣科技公司被諾基亞公可收購,Qt也因此成為諾基亞公司旗下的編程語言工具,曾稱霸一時的Symbian手機操作系統就是…

Qt圖形界面編程入門(創建一個簡單的程序)

1,手工編碼方式 利用手工編碼方式建立“Hello Qt!”程序 第一步: 得到界面 2,無UI的向導方式 從圖中,我們發現向導為窗口程序提供了3個基類,分別外QMainWindow、QWidget、QDialog,3個基類的區…

Linux基礎(Vim編輯器與Shell命令腳本)

1、Vim文本編輯器 Vim文本編輯器有三種模式 命令模型:控制光標移動,可對文本進行復制、粘貼、刪除和查找得等工作。 輸入模式:正常的文本錄入 末行模式:保存或退出文檔,以及設置編輯環境。 在每次運行Vim編輯器時&…

Python二級筆記(16)

知識點: 1,進程調度僅負責對CPU進行分配 2,帶鏈的隊列是采用鏈式存儲結構表示的隊列。鏈式存儲的存儲單元是不連續的,因為是不連續的存儲空間,所以指針將不會有規律的地連續變化。當front rear NULL時,…

Python二級筆記(17)

操作題: 1,接收用戶輸入的一個浮點數,輸出這個浮點數的小數部分各字符的和,以10為寬度,靠右顯示,,采用星號*填充。 代碼: s input("請輸入一個小數:") s s[::1] cs () for c in…

Python二級筆記(18,19合集操作篇)

操作題: 1,鍵盤輸入正整數n,按要求把n輸出到屏幕,格式要求:寬度為25個字符,等號字符()填充,右對齊,帶千位分隔符。如果輸入正整數超過25位,則按照真實長度輸…

Qt圖形界面編程入門(信號和槽通信機制)

信號和槽機制是Qt的核心機制,可以讓編程人員將互不相關的對象綁定在一起,實現對象之間的通信。 聲明了信號的對象,當其狀態改變時,信號就由該對象發送出去,而且該對象只負責發送信號,它不知道另一端是誰在…

Python二級筆記(18,19合集知識點篇)

知識點: 1,軟件測試的目的是發現程序中的錯誤。調試是作為成功測試的后過而出現的步驟,也就是,調試是在測試發現錯誤之后排除錯誤的過程。軟件調試的任務是診斷和改成程序中的錯誤。 2,深度等于控制的層數 3&#x…

軟件工程(成本/效益分析)

一般說來,人們投資于一項事業的目的是為了在將來得到更大的好處。開發一個軟件系統也是一種投資,期望將來獲得更大的經濟效益,經濟效益通常表現為減少運行費用或增加收入。但是,投資開發新系統往往需要冒一定的風險。系統的開發成…

Linux基礎(用戶身份和文件權限)

用戶身份與能力 Linux是一個多用戶、多任務的操作系統,具有很好的穩定性與安全性,在幕后保障Linux系統安全則是一系列復雜的配置工作。 Linux系統的管理員之所以是root,并不是因為它的名字叫root,而是因為該用戶的身份號碼即UID…

Centos 8 RHEL 8 破解root密碼

https://blog.csdn.net/u014042047/article/details/107309890/

TensorFlow實驗(1)

實驗1-2 搭建深度學習開發環境 1)安裝Anaconda 2)創建虛擬環境: 3)激活環境 4)安裝tensorflow 5)安裝jupyter notebook 安裝完成之后,運行第一個程序“Hello,World” 要求:詳細安裝步驟&…

TensorFlow實驗(2)

實驗3-4 數據結構-張量 1)已知兩個張量[1,3,5,7]和[2,4,4,8],編寫一個模型,計算兩個張量的加法,輸出結果,并在tensorboard中顯示 2)已知張量[1,2,3,4,5,6,7,8,9,10,11,12]有12個元素,利用tf.reshape()將其…

Linux基礎(文件權限續篇)

文件的特殊權限 在復雜多變的生產環境中,單純設置文件的rwx權限無法滿足我們對安全和靈活性的需求,因此便有了SUID,SGID,SBIT的特殊權限位。這是一種對文件權限進行設置的特殊功能,可以與一般權限同時使用,以彌補一般權限不能實現…

Linux基礎(存儲結構和磁盤劃分)

一切從“/”開始 在Linux系統中,目錄、字符設備、塊設備、套接字、打印機等都被抽象成了文件,一切皆為件 與windows操作系統不同,Linux系統內不存在C/D/E/F盤等,一切文件都是從根(/)目錄開始的 Linux系統…

軟件工程(需求分析)

需求分析 為了開發出真正滿足用戶需求的軟件產品,首先必須知道用戶的需求。對軟件需求的深人理解是軟件開發工作獲得成功的前提條件,不論人們把設計和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會令用戶失望.給開發者帶來煩惱。 需求分析是軟…

TensorFlow構建二維數據擬合模型(1)

知識圖譜 TensorFlow運行機制 TensorFlow是基于計算圖的深度學習編程模型 Tensor表示張量,其實質上是某種類型的多維數組 Flow表示基于數據流圖的計算,實質上是張量在不同節點間的轉化過程。 在TensorFlow中,計算圖中的節點稱為OP&…

Qt圖形界面編程入門(標簽與槽機制習題分享)

標簽對象初始顯示0&#xff0c;每次單擊標簽對象后&#xff0c;其顯示內容就加1&#xff0c;依次變為1、2、3等。 #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #include <QPushButton> //包含命令按鈕類 #include "MyLabel.h"class Dialo…