解題的一般方法
一、軟件設計題要點
綜觀1990年到2004年的高程下午設計題,主要包括以下考點:
1. 完善處理流程,或指出處理內容,或指出處理結果。
2. 指出流程圖中錯誤,或為避免錯誤應在某處添加處理項目。
3. 為達到某目的,需要改動哪些處理,或改變處理方法會引起什么后果。
4. 指出錯誤清單內容。
5. 文件的記錄應包含哪些內容。
6. 完成處理需要什么樣的文件,或文件有什么特征,或引入某文件有什么好處。
7. 文件怎樣分類,或指出關鍵字。
8. 某處理的頻度。
9. 輸入數據的格式。
10. 題意中的分類有何好處。
11. 為實現某目的適當修改文件的記錄內容。
12. 指出圖中數據流名,或指出哪些位置數據可增加或刪去。
考點最集中的部分是關于文件記錄的內容,其次是文件的分類排序,再次是當目的改變應該改動哪些。
二、答題注意事項
事務處理流程圖一般由若干處理與若干數據組成,在評估流程圖并回答試題的問題時,應該注意下面一些問題。
從“處理”的角度來說,必須注意:
1. 每個事務處理均有一個特定目標,這一目標往往都是文字說明的。與此對應的處理應能覆蓋所設定的目標。對于說明處理要求,都應從問題目標進行考慮。
2. 除覆蓋問題目標的處理外,還有兩類處理應予考慮:一是為了保證處理的正確性,設計一些處理框,以檢查輸入數據的數據項及數據的值域;另一種是檢查數據會合時數據的一致性。二是為了處理的效率,如速度、次數、減少處理訪問等而引進了一些處理。
3. 在一個流程圖內,在一條流程上的各個處理不能有功能上的重復。如有重復,不是有錯,就是流程還可優(yōu)化。
4. 每個處理都是由“處理的依據”到“使用數據”,以及從“處理結果”到“產生數據”!笆褂脭祿被蛘摺爱a生數據”與處理相互匹配是十分重要的。
從“數據”的角度來說,必須注意:
1. 注意流程圖最初的輸入數據與最終輸出數據,考慮從輸入到輸出之間數據演變的情況。根據數據的演變與流程,關于從輸入到輸出應有哪些數據就比較清楚了,其作用也可以從演變方面了解。
2. 考慮數據流程中,哪些數據應作為文件形式出現,哪些是中間使用的臨時數據。在數據演變中,一些數據經多個“處理”加工后得到結果,每加工一次就產生一個新數據,對這些數據分析,就能得出各數據的存儲要求。
3. 對數據按問題要求設計數據結構。輸入(輸出)數據的結構與問題有關,而中間數據的結構除與輸入(輸出)數據有關外,還與處理有關。
4. 為減少數據冗余,要保證數據一致性,數據文件設計中應考慮關系,亦即各種文件的記錄之間的聯系。
我們對高級程序員軟件設計題的解題方法做了分析,現在我們來分析一道例題。
★解答實例
2000年試題3:閱讀以下說明和流程圖,回答問題1和問題2。
【說明】
某供銷系統(tǒng)接受顧客的訂貨單。當庫存中某配件的數量小于訂購量或庫存量低于一定數量時,向供應商發(fā)出采購單;當某配件的庫存量大于或等于訂購量時,或者收到供應商的送貨單并更新了庫存后,向顧客發(fā)出提貨單。該系統(tǒng)還可隨時向總經理提供銷售和庫存情況表。該供銷系統(tǒng)的分層數據流圖中部分數據流和文件的組成如下:
文件
配件庫存=配件號+配件名+規(guī)格+數量+允許的最低率庫存量
數據流
訂貨單=配件號+配件名+規(guī)格+數量+顧客名+地址
提貨單=訂貨單+金額
采貨單=配件號+配件名+規(guī)格+數量+供應商名+地址
送貨單=配件號+配件名+規(guī)格+數量+金額
假定頂層圖是正確的,“供應商”文件已由其他系統(tǒng)生成。
[問題1]
指出哪張圖中的哪些文件可不必畫出。
[問題2]
指出在哪些圖中遺漏了哪些數據流;卮饡r用如下形式之一。
(1) X X 圖中遺漏了 X X 加工 (或文件) 流向 X X 加工 (或文件) 的 x x 數據流;
(2) X X 圖中 X X 加工遺漏了 X X 輸入 (或輸出) 數據流。
在頂層圖中,供銷系統(tǒng)的3個輸入數據流(訂貨單、送貨單與銷售及庫存情況)和5個輸出數據流(不合法的訂貨單、不合法的送貨單、提貨單、采購單與銷售及庫存情況表)在0層圖中都得到反映?疾0層圖中所有的輸入數據流和輸出數據流,是否有遺漏的加工呢?在頂層圖中總經理的查詢是單獨的加工,但在0層圖中卻給包括到加工1中去了,成為加工1.3,其輸入或輸出數據流也都包括在該加工中。考查加工1子圖,加工1.3包含在加工1中是科學的,因為該加工需要來自加工1數據支持,且事務簡單,包含在加工1中可以大大減小系統(tǒng)分析和設計的復雜程度。因此不能說0層圖遺漏了加工。至于文件,在0層圖中凡是需要文件的地方都是從文件輸入的,未發(fā)生遺漏現象。
仔細研究0層圖,大體上確定加工1有3個輸入數據流(訂貨單、到貨通知和查詢銷售及庫存情況),加工1子圖中只有訂貨單與查詢銷售及庫存情況兩個數據流,顯然遺漏了輸入數據到貨通知,該數據流應該從哪個子加工輸入呢?看試題中的說明“收到供應商的送貨單并更新了庫存后,向顧客發(fā)出了提貨單”。據此至少可以判定輸入數據流到貨通知是子加工1.4更新庫存的前提條件,沒有到貨通知,就無法更新庫存。是直接輸入加工1.4嗎?再看子加工1.4與其他子加工的關系。子加工1.5輸出數據流的去向是子加工1.4。而子加工1.5需要到貨通知的支持,但從子加工1.4到子加工1.5卻沒有數據流。綜合以上分析,應該在子加工1.5處輸入數據流到貨通知。
首先看配件庫存文件。在加工1子圖(圖3)中,配件庫存文件經過加工1.4更新庫存而修改,然后還要為加工1.1和加工1.2提供數據支持,在加工1.1中,通過檢查訂貨單中訂購的配件在配件庫存中是否有記錄,來確定該配件是否屬于經銷范圍,然后以此來確定訂貨單是否合法。其次,還要在加工1.2中比較合法訂貨單的數量與庫存數量,以此確定是否需要發(fā)出采購請求。再次,在發(fā)出提貨單后,如果庫存量低于允許的最低庫存量,也要發(fā)出采購單?梢钥闯觯谠摷庸D中,未發(fā)現對配件庫存文件的不適當的使用。
在加工2子圖(圖4)中,在加工2.4核對送貨單后要更新庫存文件然后加工2.3計算增量提供數據支持,計算出需要采購的配件的數量。應該說這里對配件庫存文件的使用是正確的。因此我們可以確定配件庫存文件在加工1和加工2中都有應用,畫在0層圖中是合適的。
缺貨訂單文件在試題說明中沒有提到,具體的應用需要我們自己分析。0層圖中顯示該文件被加工1和加工2使用。現在的任務就是確定兩個加工中對該文件的使用是正確的。在加工1中缺貨訂單的數據來自加工1.2和加工1.4,在加工1.2中,接受合法的訂貨單后,如果訂貨單上數量大于配件庫存文件的數量,將產生缺貨訂單文件。在加工1.4中,在有貨訂單送達后,需要交出提貨單,然后更新庫存。如果庫存量低于允許的最低庫存量,應該將缺貨信息反映到缺貨訂單中。在加工2中,缺貨訂單為加工2.3提供部分數據支持,在計算配件增量以明確需要增加的配件的清單時,需要參照缺貨訂單。結合以上對使用缺貨訂單文件的分析,可以認為,因此將該文件畫在0層圖中是有必要的。
我們分析了配件庫存文件和缺貨訂單文件,再來看采購清單。
0層圖顯示該文件只應用于加工2。采購清單如果只應用在加工1中,最有可能的地方是加工1.2及其后的采購請求數據流,但在這里采購清單是有必要的嗎?從加工2中可以看出,采購清單是按供應商對采購單進行匯總來產生的,對采購單進行匯總,顯然已經屬于加工2的工作,不應在加工1中予以反映。由此可以斷定在加工1中不應該有采購單文件。所以在0層圖中畫采購清單是不合適的。
以上考查了0層圖、加工1子圖和加工2子圖中缺貨訂單、配件庫存及采購清單的使用,下面研究加工1中的銷售歷史文件。如果沒有該文件支持,加工1.3是無法制作銷售及庫存情況表的;而且該文件由加工1.4更新庫存產生,其輸入數據流和輸出數據流均在加工1中,在加工1中使用該文件是合適的。
問題2要求指出哪些圖中遺漏了哪些元素。一般來說,這類題目的解答首先要考慮各層次圖的數據平衡,其次要考慮加工的輸入數據流和輸出數據流要平衡,即保證加工的輸出數據流都有其對應的輸入數據流。所謂數據平衡,就是在多層次數據流程圖中,父圖和子圖之間的數據流必須保持一致,比如說在父圖中某加工有2個輸入數據流和一個輸出數據流,那么在該加工的子圖中的輸入(輸出)數據流必須在數目上和內容上與父圖保持一致。
考查0層圖,加工1有不合格訂貨單、銷售及庫存情況表、提貨單與采購請求4個輸出數據流。但在加工1子圖中,卻沒有輸出數據流提貨單,這顯然是不符合數據平衡原則的。但該數據流應從何處輸出呢?根據試題說明,在更新庫存后應向顧客發(fā)出提貨單。顯然這里合適的位置是子加工1.4。
- 推薦給朋友
- 收藏此頁
·網絡工程師資料:網絡體系結構-軟考網絡類題解 (2008-4-25 14:33:38)
·計算機網絡基礎網絡拓撲結構及優(yōu)缺點分析 (2008-2-22 14:04:32)
·網絡工程師必知:靜態(tài)路由協議配置方法 (2008-2-22 14:03:39)
·計算機網絡尼奎斯特 香農公式例題解析 (2008-2-22 14:02:35)
·軟考復習:因特網IP的分類、尋址規(guī)則及子網掩碼 (2008-2-22 13:57:21)