軟件設計師考試下午第壹題和數據庫系統工程師考試下午第壹題都是數據流圖題,但是很少有考生能把這些題都做對。根據歷年輔導閱卷的經驗,發現很多考生缺乏解決這類問題的方法和技巧,並不是因為解題能力不足。本文介紹了解決這類問題的壹些方法和技巧,希望能引起更多的關註。
1.考生解題的特點
因為這是下午考試的第壹題,所以很多考生從考前緊張的氣氛中逐漸平靜下來,開始答題。他們的頭腦還是比較清醒的,閱讀流暢,速度還可以,自我感覺良好。偏偏這題很多人都考不到15分,造成這種情況的原因有以下幾個特點:
1.拿著紙去做。不要完全看懂試卷,做到心中有數。這樣會導致解題過程中缺乏整體概念,不清楚哪些題必須得分(花的時間多),哪些題不能得分(花的時間少)。這樣解決問題的時候目標會明確很多。
2.速度,看壹遍題就開始做。
3.很慢。我用手指壹個字壹個字的看,想著看壹遍就能做題了。
4.看題目的時候,不要把題目打下來,不要聯系上下文去思考。
5.邊做邊懷疑修改是浪費時間。
6.找不到丟失的數據流,也找不到可移動文件。
7.由於缺乏項目開發經驗,不知道如何思考壹些交易分析。
8.盲目樂觀,卻忽略了答案格式,丟了不該丟的分。
2.解決問題的方法和技巧
1.首先要了解數據流圖設計的概要。
有時,為了增加數據流圖的清晰度,防止數據流的箭頭線過長,減少交叉繪制的數據流的數量,壹般可以在壹個圖上重復使用同名的數據源點、端點和數據存儲文件。如果外部實體既是數據源點又是數據接收器,則可以在數據流圖的不同位置重復繪制。繪制時應註意以下幾點:
(1)從外到內,從上到下,層層細化,完善細化。
(2)保持父圖與子圖的平衡。
為了表達復雜問題的數據處理過程,用壹個數據流圖往往是不夠的。壹般將問題按照層次結構逐級分解,層次數據流圖反映了這種結構關系。根據層次關系,數據流圖壹般分為頂層數據流圖、中間數據流圖和底層數據流圖,其他所有層次數據流圖從0開始編號。對於任何壹層數據流圖,其上層數據流圖稱為父圖,其下層數據流圖稱為子圖。
頂層數據流圖只包含壹個流程,代表整個系統;輸入數據流和輸出數據流是系統的輸入數據和輸出數據,表示系統的範圍和與外部環境的數據交換關系。
底層數據流圖是指處理不能再分解的數據流圖,其處理稱為“原子處理”。
中間數據流圖是對父數據流圖中的壹個流程進行細化,它的壹個流程可以再次細化,形成壹個子圖。中間層的數量通常取決於系統的復雜程度。
任何數據流子圖都必須對應其父圖的壹個進程,它們的輸入數據流和輸出數據流必須壹致,即父圖與子圖之間的平衡。父圖與子圖之間的平衡是數據流圖中的壹個重要性質,它保證了數據流圖的壹致性,便於分析人員閱讀和理解。
在父圖與子圖的平衡中,數據流的數量和名稱可以完全相同;也可以是數量不等,但借助數據字典中的數據流描述,可以確定父圖中的數據流是由子圖中的幾個數據流合並而成的,即子圖同時分解了父圖中的處理和數據流,因此也屬於父圖與子圖之間的平衡,如圖1所示。
圖1父圖與子圖之間的平衡
(3)保持數據守恒。也就是說,壹個流程的所有輸出數據流中的數據都必須直接從流程的輸入數據流中獲取,或者可以通過流程生成數據。每壹次加工都必須有壹個輸入數據流和壹個輸出數據流,反映這次加工的數據源和加工轉換結果。已處理的輸出數據流僅由其輸入數據流決定。數據流必須經過處理,即必須進入處理或流出處理。
(4)隱藏處理細節。根據抽象原理,繪制母圖時,只需畫出加工與加工的關系,不需要畫出每個加工的細節。當某壹層的數據流圖中的數據存儲並不是父圖中對應流程的外部接口,而只是這個圖中某些流程之間的數據接口時,那麽這些數據就被存儲為本地數據存儲。
為了強調本地數據存儲的隱蔽性,壹般情況下,本地數據存儲只繪制為某些進程的數據接口或者某個特定進程的輸入輸出。也就是說,按照自頂向下的分析方法,當壹個數據存儲第壹次出現時,它只與壹個流程相關,所以這個數據存儲應該作為與之相關的流程的本地數據存儲,不壹定要畫在這壹層數據流的子圖中,而是畫在流程的子圖中,除非流程是原子處理。
(5)簡化流程之間的關系。在數據流圖中,車間之間的數據流越少,各工序越獨立,所以車間之間的輸入輸出數據流要盡量減少。
(6)均勻分解。數據流中所有級別的處理分解應該大致相同。
(7)數據流、流程、文件和來源/目的地的適當名稱,應反映組件的實際含義並避免空名稱。
(8)忽略次要的細節。我們應該專註於主數據流,暫時忽略壹些小問題,比如異常和錯誤處理。
(9)它代表數據流而不是控制流。數據流圖不同於傳統的程序流程圖。數據流圖從數據的角度描述壹個系統,而流程圖從數據處理的角度描述系統。數據流圖中的箭頭是數據流,而流程圖中的箭頭是控制流,表示程序執行的順序。數據流圖適合對壹個組織的業務概況進行宏觀分析,而程序流圖只適合描述系統中某個流程的執行細節。
每個進程必須既有輸入數據流又有輸出數據流;在整個數據流圖中,每個文件必須既有讀文件的數據流,又有寫文件的數據流,但在壹個子圖中,可能只有讀,沒有寫,或者只有寫沒有讀。
2.解決問題的方法。
(1)數據平衡原則。
數據平衡的原理分為兩個方面:
①在層次數據流圖中,父圖與子圖應該是平衡的,也就是說父圖中某個流程的輸入輸出數據流在數量和名稱上必須與其子圖相同。
②數據平衡的另壹個方面是每個流程必須既有輸入數據流又有輸出數據流,壹個流程的所有輸出數據流中的數據必須直接從該流程的輸入數據流中獲取,或者可以通過流程生成。
(2)需要特別註意的幾個細節。
①除了流入或流出數據存儲(文件)的數據流之外,每個數據流都必須有壹個適當的名稱。
(2)數據流到文件就是寫數據,數據流出文件就是讀文件。在整個數據流圖中,每個文件必須既有讀數據流又有寫數據流,但在壹個子圖中,可能只有讀沒有寫,或者只有寫沒有讀。
(3)在逐步細化的過程中,如果壹個文檔剛出現時只與壹個流程相關,即該文檔是流程的內部文檔,那麽該文檔不需要繪制在當前的圖層圖中,可以繪制在流程的詳細圖中。
3.解決問題的技巧。
(1)讀stem的技巧。第壹遍快速閱讀,基本理解題目涉及的知識點或事務,記下實體對象和存儲文件,甚至標註數據流;這壹步重點是問題。壹般問題不難,但壹定要看清楚問題。第二遍看問題,邊看邊解決。
(2)要有整體概念,不能因為重合就斷定是點,尤其是數據對象。
(3)註意解題速度,壹般20分鐘以內最好。
(4)在解題過程中,每個數據流都能在【描述】中找到對應的語句。
(5)數據流名稱書寫正確,每錯壹個字扣0.5分;流向也要寫對
(6)完成後,再次復查;不要邊做邊懷疑,邊修改,這樣會耽誤時間,錯得更多。