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

數據流圖中每個成分的命名是否恰當,直接影響數據流圖的可理解性。因此,給這些成分起名字時應該仔細推敲。

命名

1.為數據流(或數據存儲)命名

(1)名字應代表整個數據流(或數據存儲)的內容,而不是僅僅反映它的某些成分。

(2)不要使用空洞的、缺乏具體含義的名字(如“數據”、“信息”、“輸入”之類)。當標而

(3)如果在為某個數據流(或數據存儲)起名字時遇到了困難,則很可能是因為對數據流圖分解不恰當造成的,應該試試重新分解,看是否能克服這個困難。

2.為處理命名

(1)通常先為數據流命名,然后再為與之相關聯的處理命名。這樣命名比較容易,而且體現了人類習慣的“由表及里"的思考過程。

(2)名字應該反映整個處理的功能,而不是它的一部分功能。

(3)名字最好由一個具體的及物動詞加上一個具體的賓語組成。應該盡量避免使用“加工”、“處理”等空洞籠統的動詞作名字。

(4)通常名字中僅包括一個動詞,如果必須用兩個動詞才能描述整個處理的功能,則把這個處理再分解成兩個處理可能更恰當些。

(5)如果在為某個處理命名時遇到困難,則很可能是發現了分解不當的跡象,應考慮重新分解。

數據源點/終點并不需要在開發目標系統的過程中設計和實現,它并不屬于數據流圖的核心內容,只不過是目標系統的外圍環境部分(可能是人員、計算機外部設備或傳感器裝置)。通常,為數據源點/終點命名時采用它們在問題域中習慣使用的名字(如“采購員”、“倉庫管理員”等)。

用途

畫數據流圖的基本目的是利用它作為交流信息的工具。分析員把他對現有系統的認識或對目標系統的設想用數據流圖描繪出來,供有關人員審查確認。由于在數據流圖中通常僅僅使用4種基本符號,而且不包含任何有關物理實現的細節,因此,絕大多數用戶都可以理解和評價它。

從數據流圖的基本目標出發,可以考慮在一張數據流圖中包含多少個元素合適的問題。一些調查研究表明,如果一張數據流圖中包含的處理多于5~9個,人們就難于領會它的含義了。因此數據流圖應該分層,并且在把功能級數據流圖細化后得到的處理超過9個時,應該采用畫分圖的辦法,也就是把每個主要功能都細化為-張數據流分圖,而原有的功能級數據流圖用來描繪系統的整體邏輯概貌。

數據流圖的另一個 主要用途 是作為分析和設計的工具。 分析員在研究現有 的系統時常用系統流程圖表達他對這個系統的認識,這種描繪方法形象具體,比較容易驗證它的正確性;但是,開發工程的目標往不是完全復制現有的系統,而是創造一個能夠完成相同的或類似的功能的新系統。用系統流程圖描繪一個系統時,系統的功能和實現每個功能的具體方案是混在一起的。 因此,分析員希望以另一種方式進 一 步總結現有的系統,這種方式應該著重描繪系統所完成的功能而不是系統的物理實現方案。數據流圖是實現這個目標的極好手段。

當用數據流圖輔助物理系統的設計時,以圖中不同處理的定時要求為指南,能夠在數據流圖上畫出許多組自動化邊界每組自動化邊界可能意味著一個不同的物理系統,因此可以根據系統的邏輯模型考慮系統的物理實現。例如,考慮下圖,事務隨時可能發生,因此處理1.1(“接收事務”)必須是聯機的;采購員每天需要一次訂貨報表,因此處理2(“產生報表”)應該以批量方式進行。問題描述并沒有對其他處理施加限制。

例如,可以聯機地接收事務并放人隊列中,然而更新庫存清單、處理訂貨和產生報表以批量方式進行(下圖)。當然,這種方案需要增加一個數據存儲以存放事務數據。

這種劃分自動化邊界的方法暗示以批量方式更新庫存清單

改變自動化邊界,把處理1.1,1.2和1.3放在同一個邊界內,這個系統將聯機地接收事務、 更新庫存清單和處理訂貨及輸出訂貨信息;然而處理2將以批量方式產生訂貨報表。還能設想出建立自動化邊界的其他方案嗎?如果把處理1. 1和處理1.2放在一個自動化邊界內,把處理1.3和處理2放在另一個邊界內,意味著什么樣的物理系統呢?

另一種劃分自動化邊界的方法建議以聯機方式更新庫存清單

數據流圖對更詳細的設計步驟也有幫助,從數據流圖出發映射出軟件結構的方法——面向數據流的設計方法

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

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

相關文章

軟件工程(數據字典)

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

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…

js中執行到一個if就停止的代碼_Node 中如何引入一個模塊及其細節

在 node 環境中&#xff0c;有兩個內置的全局變量無需引入即可直接使用&#xff0c;并且無處不見&#xff0c;它們構成了 nodejs 的模塊體系: module 與 require。以下是一個簡單的示例const fs require(fs)const add (x, y) > x ymodule.exports add雖然它們在平常使用…