《軟件設計師 數據流圖》由會員分享,可在線閱讀,更多相關《軟件設計師 數據流圖(17頁珍藏版)》請在裝配圖網上搜索。
1、 二.解題的方法與技巧
1.首先要懂得數據流圖設計要略。
有時為了增加數據流圖的清晰性,防止數據流的箭頭線太長,減少交叉繪制數據流條數,一般在一張圖上可以重復同名的數據源點、終點與數據存儲文件。如某個外部實體既是數據源點又是數據匯點,可以在數據流圖的不同的地方重復繪制。在繪制時應該注意以下要點:
(1)自外向內,自頂向下,逐層細化,完善求精。
(2)保持父圖與子圖的平衡。
為了表達較為復雜問題的數據處理過程,用一個數據流圖往往不夠。一般按問題的層次結構進行逐步分解,并以分層的數據流圖反映這種結構關系。根據層次關系一般將數據流圖分為頂層數據流圖、中間數據流圖和底
2、層數據流圖,除頂層圖外,其余分層數據流圖從0開始編號。對任何一層數據流圖來說,稱它的上層數據流圖為父圖,在它的下一層的數據流圖為子圖。
頂層數據流圖只含有一個加工,表示整個系統(tǒng);輸入數據流和輸出數據流為系統(tǒng)的輸入數據和輸出數據,表明了系統(tǒng)的范圍,以及與外部環(huán)境的數據交換關系。
底層數據流圖是指其加工不能再分解的數據流圖,其加工稱為“原子加工”。
中間數據流圖是對父層數據流圖中某個加工進行細化,而它的某個加工也可以再次細化,形成子圖。中間層次的多少,一般視系統(tǒng)的復雜程度而定。
任何一個數據流子圖必須與它上一層父圖的某個加工對應,二者的輸入數據流和輸出數據流必須保持一致,此
3、即父圖與子圖的平衡。父圖與子圖的平衡是數據流圖中的重要性質,保證了數據流圖的一致性,便于分析人員閱讀和理解。
在父圖與子圖平衡中,數據流的數目和名稱可以完全相同;也可以在數目上不相等,但是可以借助數據字典中數據流描述,確定父圖中的數據流是由子圖中幾個數據流合并而成的,也即子圖是對父圖中加工和數據流同時進行分解,因此也屬于父圖與子圖的平衡,如圖1所示。
圖1 父圖與子圖的平衡
(3)保持數據守恒。也就是說,一個加工所有輸出數據流中的數據必須能從該加工的輸入數據流中直接獲得,或者是通過該加工能產生的數據。每個加工必須有輸入數據流和輸出數據流,反映此加工的數據來源和加工變換結果
4、。一個加工的輸出數據流只由它的輸入數據流確定。數據流必須經過加工,即必須進入加工或從加工中流出。
(4)加工細節(jié)隱蔽。根據抽象原則,在畫父圖時,只需畫出加工和加工之間的關系,而不必畫出各個加工內部的細節(jié)。當某層數據流圖中的數據存儲不是父圖中相應加工的外部接口,而只是本圖中某些加工之間的數據接口時,那么這些數據存儲為局部數據存儲。
為了強調局部數據存儲的隱蔽性,一般情況下,局部數據存儲只有作為某些加工的數據接口或某個特定加工的輸入和輸出時,才畫出來。即按照自頂向下的分析方法,某數據存儲首次出現時只與一個加工有關,那么這個數據存儲應該作為與之關聯(lián)加工的局部數據存儲,在該層數據流子圖中不
5、必畫出,而在該加工的子圖中畫出,除非該加工為原子加工。
(5)簡化加工間的關系。在數據流圖中,加工間的數據流越少,各個加工就越相對獨立,所以應盡量減少加工間輸入輸出數據流的數目。
(6)均勻分解。應該使一個數據流中的各個加工分解層次大致相同。
(7)適當地為數據流、加工、文件、源/宿命名,名字應反映該成分的實際意義,避免空洞的名字。
(8)忽略枝節(jié)。應集中精力于主要的數據流,而暫不考慮一些例外情況、出錯處理等枝節(jié)性的問題。
(9)表現的是數據流而不是控制流。數據流圖與傳統(tǒng)的程序流程圖不同,數據流圖是從數據的角度來描述一個系統(tǒng)的,而流程圖則是從對數據加工的角度來描述
6、系統(tǒng)的。數據流圖中的箭頭是數據流,而流程圖中的箭頭則是控制流,它表達的是程序執(zhí)行的次序。數據流圖適合于宏觀地分析一個組織的業(yè)務概況,而程序流程圖只適合于描述系統(tǒng)中某個加工的執(zhí)行細節(jié)。
每個加工必須既有輸入數據流,又有輸出數據流;在整套數據流圖中,每個文件必須既有讀文件的數據流又有寫文件的數據流,但在某一張子圖中可能只有讀、沒有寫,或者只有寫、沒有讀。
2.解題的方法。
(1) 數據平衡原則。
數據平衡原則分為兩個方面:
?、?在分層數據流圖中,父圖和子圖要平衡,也就是說,父圖中某加工的輸入輸出數據流必須與它的子圖的輸入輸出數據流在數量和名字上相同。
②數據平衡
7、的另一個方面是說:每個加工必須即有輸入數據流又有輸出數據流,而且一個加工所有輸出數據流中的數據必須能從該加工的輸入數據流中直接獲得,或者是通過該加工能產生的數據。
(2) 要特別注意的幾個細節(jié)問題。
① 除了流向數據存儲(文件)或從數據存儲流出的數據流不必命名外,其它每個數據流都必須有一個合適的名字。
②流向文件的數據流,表示寫入數據,流出文件的數據流表示讀文件。在整套數據流圖中,每個文件必須既有讀的數據流又有寫的數據流,但在某一張子圖中可能只有讀沒有寫,或者只有寫沒有讀。
?、墼谥鸩骄倪^程中,若一個文件首次出現時只與一個加工有關,既該文件是個加工的內部文件,那么該文
8、件在當層圖中不必畫出,可在該加工的細化圖中畫出。
3.解題的技巧。
(1)閱讀題干的技巧。快速的閱讀第一遍,基本了解題目所涉及到的知識點或者事務,打記實體對象和存儲文件,甚至可以將數據流也標記一下;這一步重點落在問題上,一般問題不難,但一定要看清問題。帶著問題來看第二遍,邊看邊解決。
(2)要有整體的概念,不能因一個點符合就斷定是它,尤其是數據對象。
(3)注意解題的速度,一般在20分鐘以內為最好。
(4)解題的過程中,每一條數據流都能夠在[說明]中找到相應的語句。
(5)數據流名稱要寫對,每錯一個字扣0.5分;流向也要寫對。
(6)做好以后,復查一遍
9、;不要邊做邊懷疑、邊修改,那樣會擔誤時間,且錯誤更多。
三.例題講解
例1:【軟件設計師(數據庫系統(tǒng)工程師)2007年11月真題】
試題一(共15分)
閱讀以下說明和圖,回答問題1至問題4,將解答填入答題紙的對應欄內。
【說明】
某高校欲開發(fā)一個成績管理系統(tǒng),記錄并管理所有選修課程的學生的平時成績和考試成績,其主要功能描述如下:
1. 每門課程都有3到6個單元構成,每個單元結束后會進行一次測試,其成績作為這門課程的平時成績。課程結束后進行期末考試,其成績作為這門課程的考試成績。
2. 學生的平時成績和考試成績均由每門課程的主講教師上傳給成績管理系
10、統(tǒng)。
3. 在記錄學生成績之前,系統(tǒng)需要驗證這些成績是否有效。首先,根據學生信息文件來確認該學生是否選修這門課程,若沒有,那么這些成績是無效的;如果他的確選修了這門課程,再根據課程信息文件和課程單元信息文件來驗證平時成績是否與這門課程所包含的單元相對應,如果是,那么這些成績是有效的,否則無效。
4. 對于有效成績,系統(tǒng)將其保存在課程成績文件中。對于無效成績,系統(tǒng)會單獨將其保存在無效成績文件中,并將詳細情況提交給教務處。在教務處沒有給出具體處理意見之前,系統(tǒng)不會處理這些成績。
5. 若一門課程的所有有效的平時成績和考試成績都已經被系統(tǒng)記錄,系統(tǒng)會發(fā)送課程完成通知給教務處,告知該
11、門課程的成績已經齊全。教務處根據需要,請求系統(tǒng)生成相應的成績列表,用來提交考試委員會審查。
6. 在生成成績列表之前,系統(tǒng)會生成一份成績報告給主講教師,以便核對是否存在錯誤。主講教師須將核對之后的成績報告返還系統(tǒng)。
7. 根據主講教師核對后的成績報告,系統(tǒng)生成相應的成績列表,遞交考試委員會進行審查??荚囄瘑T會在審查之后,上交一份成績審查結果給系統(tǒng)。對于所有通過審查的成績,系統(tǒng)將會生成最終的成績單,并通知每個選課學生。
現采用結構化方法對這個系統(tǒng)進行分析與設計,得到如圖1-1所示的頂層數據流圖和圖1-2所示的0層數據流圖。
圖1-2 0層數據流圖
【問題1
12、】(4分)
使用說明中的詞語,給出圖1-1中的外部實體E1~E4的名稱。
【問題2】(3分)
使用說明中的詞語,給出圖1-2中的數據存儲D1~D5的名稱。
【問題3】(6分)
數據流圖1-2缺少了三條數據流,根據說明及數據流圖1-1提供的信息,分別指出這三條數據流的起點和終點。
起 點
終 點
【問題4】(2分)
數據流圖是在系統(tǒng)分析與總體設計階段宏觀地描述系統(tǒng)功能需求的重要圖形化工具,程序流程圖也是軟件開發(fā)過程中比較常用的圖形化工具。簡要說明程序流程圖的適用場合與作用。
試題分析:
本題考查的是DFD的應用,屬
13、于比較傳統(tǒng)的題目,考查點也與往年類似。
問題1考查的是頂層DFD。頂層DFD通常用來確定系統(tǒng)邊界,其中只包含一個唯一的加工(即待開發(fā)的系統(tǒng))、外部實體及外部實體與系統(tǒng)之間的輸入輸出數據流。題目要求填充的正是外部實體。
從頂層DFD可以看出,數據流是完整的。所以只要根據數據流從題目說明的上下文中,找出E1~E4所對應的外部實體,分別為考試委員會、主講教師、學生和教務處。
0層DFD中缺少的東西比較多,要求填寫數據存儲及缺失的數據流。先來確定數據存儲。首先,從說明中找出可能是數據存儲的元素來。很明顯,學生信息文件、課程信息文件、課程單元信息文件、課程成績文件和無效成績文件應該是數
14、據存儲。下面的工作就是對號入座。
從0層DFD上可以看到,加工3到D5有一條數據流;而加工3所完成的操作是“記錄無效成績”。從說明中可知,“對于無效成績,系統(tǒng)會單獨將其保存在無效成績文件中”,所以D5應該是數據存儲“無效成績文件”;類似地,從加工2氣己錄有效成績”到D4有一條數據流,這說明D4就是數據存儲“課程成績文件”。
D1輸出兩條數據流,分別流向加工1“驗證學生信息”和加工4“生成成績列表”。由說明“根據學生信息文件來確認該學生是否選修這門課程”可知,驗證學生信息時,需要根據學生信息文件來進行;而生成成績列表及成績單時,學生信息都是必要的。所以D1應該是“學生信息文件”。
15、 這樣的話,D2和D3就應該分別與“課程單元信息文件”和“課程信息文件”對應。由于D2和D3都只與加工1有關,所以它們的對應關系就是隨意的了。這樣5個數據存儲就填充完整了。下面要豐L充缺失的數據流。
首先,從說明的第5條可知,生成成績列表時,是需要從課程成績文件中獲取信息的,“課程成績文件”實際上就是圖中的D4。而D4和加工4之間并沒有數據流,因此這就是一條缺失的數據流。
另外,前面在確定D1所對應的數據存儲時提到過,生成成績單時是需要學生信息的。所以,加工5應該從D1中獲取相應的信息,這樣就找到了第二條數據流。
第三條數據流也比較容易找。說明的第7條告訴我們,只有“對于所
16、有通過審查的成績,系統(tǒng)將會生成最終的成績單,并通知每個選課學生”。也就是說,從成績列表到成績單的生成是有條件的。這意味著,在加工4和加工5之間應該存在一條數據流,這就是第3條數據流。
問題4實際上是為了考查大家對DFD的進一步理解,明確DFD在軟件開發(fā)中用于描述功能需求。
例2:【軟件設計師2004年5月真題】
試題一(15分)
閱讀下列說明和數據流圖,回答問題1至問題3,將解答填入答題紙的對應欄內。
[說明]
某圖書館管理系統(tǒng)的主要功能是圖書管理和信息查詢。對于初次借書的讀者,系統(tǒng)自動生成讀者號,并與讀者基本信息(姓名、單位、地址等)一起寫入讀者文件。
17、 系統(tǒng)的圖書管理功能分為四個方面:購入新書、讀者借書、讀者還書以及圖書注銷。
1. 購入新書時需要為該書編制入庫單。入庫單內容包括圖書分類目錄號、書名、作者、價格、數量和購書日期,將這些信息寫入圖書目錄文件并修改文件中的庫存總量(表示到目前為止,購入此種圖書的數量)。
2. 讀者借書時需填寫借書單。借書單內容包括讀者號和所借圖書分類目錄號。系統(tǒng)首先檢查該讀者號是否有效,若無效,則拒絕借書;若有效,則進一步檢查該讀者已借圖書是否超過最大限制數(假設每位讀者能同時借閱的書不超過5本),若已達到最大限制數,則拒絕借書;否則允許借書,同時將圖書分類目錄號、讀者號和借閱日期等信息寫入借書文
18、件中。
3. 讀者還書時需填寫還書單。系統(tǒng)根據讀者號和圖書分類目錄號,從借書文件中讀出與該圖書相關的借閱記錄,標明還書日期,再寫回到借書文件中,若圖書逾期,則處以相應的罰款。
4. 注銷圖書時,需填寫注銷單并修改圖書目錄文件中的庫存總量。
系統(tǒng)的信息查詢功能主要包括讀者信息查詢和圖書信息查詢。其中讀者信息查詢可得到讀者的基本信息以及讀者借閱圖書的情況;圖書信息查詢可得到圖書基本信息和圖書的借出情況。
圖書管理系統(tǒng)的頂層圖如圖1-1所示;圖書管理系統(tǒng)的第0層DFD圖如圖1-2所示,其中加工2的細圖如圖1-3所示。
【數據流圖1-1】
[問題1](2
19、分)
數據流圖1-2中有兩條數據流是錯誤的,請指出這兩條數據流的起點和終點。
[問題2](6分)
數據流圖1-3中缺少三條數據流,請指出這三條數據流的起點和終點。
[問題3](7分)
根據系統(tǒng)功能和數據流圖填充下列數據字典條目中的(1)和(2):
查詢請求信息=[查詢讀者請求信息|查詢圖書請求信息]
讀者情況=讀者號+姓名+所在單位+{借書情況}
管理工作請求單= (1)??????? ??????
入庫單= (2)????????
試題分析:
本題是一道分層數據流圖的題目。解答此類問題最關鍵的一點就是要細心,把題目看
20、清,不要丟掉任何一個條件。另外解題有一定的技巧’,從一些常規(guī)的人口作為突破口,會事半功倍?,F在就利用分層數據流圖的數據流的平衡原則(即父圖和子圖(加工圖)的一致性)來解題。
子圖是其父圖中某一部分內部的細節(jié)圖(加工圖)。它們的輸入輸出數據流應該保持一致。如同看到地上有只螞蟻有6條細細的腿,中間是一個小黑點,要看得更清楚一些就拿放大鏡看。這時能看到它的頭、觸角、身體和比較粗的腿,但是看到的一定還是6條腿,不是?條,也不是3條。子圖也是如此,在上一級中有幾個數據流,它的子圖也一定有同樣的數據流,而且它們的輸送方向是一致的(也就是說原圖有3條進的數據流,2條出的數據流,子圖同樣也是)。
21、用這條原則可以輕松地解決問題3。在。層圖中,“4監(jiān)控傳感器”模塊有1條輸人數據流——“傳感器狀態(tài)”和3條輸出數據流——“電話撥號”、“傳感器數據”和“告警類型”。在加工4的細化圖中,僅看到了輸出數據流“告警類型”,所以知道此加工圖少了“傳感器狀態(tài)”、“電話撥號”、“傳感器數據’’這3條數據流。加工4的結構非常清晰,所以只需把這3條數據流對號入座即可,“電話撥號”應是“4.5撥號”的輸出數據流;“傳感器狀態(tài)”應是作為“4.4讀傳感器”處理的輸入數據流;“傳感器數據”應該是經“4.1顯示格式”處理過的數據流,所以作為“4.1顯示格式”的輸出數據流。
[問題1]
此題和以往試題有所不同。
22、以往都給定了完整正確的頂層圖。現在頂層圖不完整,可以通過題目說明信息以及頂層圖來分析頂層圖并解答問題。題目中提到了“房主可以在安裝該系統(tǒng)時配置安全監(jiān)控設備(如傳感器,顯示器,報警器等)”在頂層圖中這3個名詞都沒有出現,但仔細觀察,可以看出“電視機”實際上就是“顯示器”。因為它接收TV信號并輸出。再看其他的幾個實體都和“傳感器,,(‘報警器”沒有關聯(lián)。又因為A中輸出“傳感器狀態(tài)”到“住宅安全系統(tǒng)”所以A應填“傳感器”。B接收“告警類型”,所以應填 :“報警器”。
[問題2]
首先,毫無疑問“4監(jiān)控傳感器”用到了配置信息文件,這點可以在加工4的細化圖中看出。接著,觀察0層圖,“3密碼處理”這個處理是用于檢驗密碼的,且它只有1個輸出數據流“檢驗ID信息’’到“顯示信息和狀態(tài)”,沒有反饋回來的數據流,所以“檢驗ID信息”是已經驗證通過的用戶的信息,用戶輸入密碼應是在“3密碼處理”這個環(huán)節(jié)中進行驗證的(因為如果密碼驗證是在“5 顯示信息和狀態(tài)”中進行的,那么從“5 顯示信息和狀態(tài)”應有1條不合法用戶的數據流反饋到“密碼處理”)。所以“密碼處理”一定要用到配置信息文件中的用戶名和密碼。同時由于輸出到“5 顯示信息和狀態(tài)”的數據流是“檢驗ID信息”,所以“5 顯示信息和狀態(tài)”也用到了配置信息文件。