




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 第三章習題 一、選擇題1. 軟件需求分析階段的工作,可以分為以下4個方面:對問題的識別、分析與綜合、編寫需求分析文檔以及( )。供選擇的答案:A. 總結 B. 階段性報告 C. 需求分析評審 D. 以上答案都不正確2. 各種需求方法都有它們共同適用的( )。供選擇的答案:
2、A說明方法 B描述方式 C. 準則 D基本原則3. 軟件需求分析的任務不應包括( A )。進行需求分析可使用多種工具,但( B )是不適用的。在需求分析中,分析員要從用戶那里解決的最重要的問題是( C )。需求規(guī)格說明書的內(nèi)容不應當包括( D )。該文
3、檔在軟件開發(fā)中具有重要的作用,但其作用不應當包括( E )。供選擇的答案:A. 問題分析 信息域分析 結構化程序設計 確定邏輯模型B. 數(shù)據(jù)流圖 判定表 PAD圖 數(shù)據(jù)詞典C. 要讓軟件做什
4、么 要給該軟件提供哪些信息 要求軟件工作效率如何 要讓軟件具有什么樣的結構D. 對重要功能的描述 對算法的詳細過程性描述 軟件確認準則 軟件的性能E. 軟件設計的依據(jù) 用戶和開發(fā)人員對軟件要“做什么”的共同理解 軟件驗收的依據(jù)
5、 軟件可行性分析的依據(jù)4. 原型化方法是用戶和軟件開發(fā)人員之間進行的一種交互過程,適用于( A )系統(tǒng)。它從用戶界面的開發(fā)入手,首先形成( B ),用戶( C ),并就( D )提出意見,它是一種( E )型的設計過程。供選擇的答案:A. 需求不確定性高的 需求確定的 管理信息 決策支持B. 用戶界面使用手冊
6、 用戶界面需求分析說明書 系統(tǒng)界面原型 完善的用戶界面C. 改進用戶界面的設計 閱讀文檔資料 模擬用戶界面的運行 運行用戶界面原型D. 同意什么和不同意什么 使用和不使用哪一種編程語言 程序的結構 執(zhí)行速度是否滿足
7、要求E. 自外向內(nèi) 自頂向下 自內(nèi)向外 自底向上二、簡答題1. 用逐步求精方法解決下述的更新順序主文件的問題。美國某雜志社需要一個軟件,以更新存有該雜志訂戶姓名、地址等數(shù)據(jù)的順序主文件。共有插入、修改和刪除等3種類型的事務,分別對應于事務代碼1、2和3。也就是說,事務類型如下:類型1:INSERT(插入一個新訂戶到主文件中)類型2:MODIFY(修改一個已有的訂戶記錄)類型3:DELETE(刪
8、除一個已有的訂戶記錄)事務是按訂戶名字的字母順序排序的。如果對一個訂戶既有修改事務又有刪除事務,則已對那個訂戶的事務排好次序了,以便使修改發(fā)生在刪除之前。2. 分析圖3.1所示的層次圖,確定每個模塊的內(nèi)聚類型。圖3.1 計算多地點日平均溫度的程序3. 分析圖3.2,確定模塊之間的耦合類型。圖3.2 一個程序的模塊互連圖在圖3.2中已經(jīng)給模塊之間的接口編了號碼,表3.1描述了模塊間的接口。表3.1 模塊接口描述 4. 用面向數(shù)據(jù)流方法設計本書第2章第11題所述的工資支付系統(tǒng)的軟件結構。5. 用3種方法計算圖3.3所示流圖的環(huán)形復雜度。圖3.3 一個
9、程序的流圖6. 下面列出的代碼用重復執(zhí)行的加法來計算兩個正整數(shù)X和Y的乘積,請用Halstead方法預測程序的長度,并把預測出的長度與實際長度相比較。Z=0;While X>0Z=Z+Y;X=X-1;End_while;Print(Z);7. 圖3.4是用程序流程圖描述的程序算法,請把它改畫為等價的盒圖。圖3.4 程序流程圖8. 某交易所規(guī)定給經(jīng)紀人的手續(xù)費計算方法如下:總手續(xù)費等于基本手續(xù)費加上與交易中的每股價格和股數(shù)有關的附加手續(xù)費。如果交易總金額少于1000元,則基本手續(xù)費為交易金額的8.4%;如果交易總金額在1000元到10000元之間,則基本手續(xù)費為交易金額的5%,
10、再加34元;如果交易總金額超過10000元,則基本手續(xù)費為交易金額的4%加上134元。當每股售價低于14元時,附加手續(xù)費為基本手續(xù)費的5%,除非買進、賣出的股數(shù)不是100的倍數(shù),在這種情況下附加手續(xù)費為基本手續(xù)費的9%。當每股售價在14元到25元之間時,附加手續(xù)費為基本手續(xù)費的2%,除非交易的股數(shù)不是100的倍數(shù),在這種情況下附加手續(xù)費為基本手續(xù)費的6%。當每股售價超過25元時,如果交易的股數(shù)零散(即,不是100的倍數(shù)),則附加手續(xù)費為基本手續(xù)費的4%,否則附加手續(xù)費為基本手續(xù)費的1%。要求:(1)用判定表表示手續(xù)費的計算方法;(2)用判定樹表示手續(xù)費的計算方法;9. 畫出下列偽碼程序的程序流
11、程圖和盒圖。STARTIF P THENWHILE q DOFEND DOELSEBLOCKgnEND BLOCKEND IFSTOP圖3.5 一個非結構化程序10. 圖3.5給出的程序流程圖代表一個非結構化的程序,請問:(1)為什么說它是非結構化的?(2)設計一個與它等價的結構化程序。(3)在(2)題的設計中你使用附加的標志變量flag了嗎?若沒用,請再設計一個使用flag的程序;若用了,請再設計一個不用flag的程序。11. 研究下面給出的偽碼程序,要求:(1)畫出它的程序流程圖;(2)它是結構化的還是非結構化的?說明你的理由;(3)若是非結構化的,則(a)把它改造成僅用三種控
12、制結構的結構化程序;(b)寫出這個結構化設計的偽碼;(c)用盒圖表示這個結構化程序。(4)找出并改正程序邏輯中的錯誤。COMMENT:PROGRAM SEARCHES FOR FIRST N REFERENCESTO A TOPIC IN AN INFORMATION RETRIEVALSYSTEM WITH T TOTAL ENTRIESINTPUT NI=OMATCH=0DO WHILE ITI=I+1IF WORD=KEYWORDTHEN MATCH=MATCH+1STORE IN BUFFERENDIF MATCH=NTHEN GOTO OUTPUTENDENDIF N=0THEN P
13、RINT “NO MATCH”O(jiān)UTPUT:ELSE CALL SUBROUTINE TO PRINT BUFFERINFORMATIONEND12. 研究圖3.6給出的程序流程圖,要求:(1)寫出它的偽碼表示;(2)設計一個等價的結構化程序;(3)用另一種方法重做第(2)題。圖3.6 一個非結構化設計13.從偽碼轉變?yōu)槌绦蛄鞒虉D或從程序流程圖轉變?yōu)閭未a是否是唯一的?請說明理由。14.用Ashcroft_Manna技術可以將非結構化的程序轉換為結構化程序,圖3.7是一個轉換的例子。(1)你能否從這個例子總結出Ashcroft_Manna技術的一些基本方法?(2)進一步簡化圖3.7(
14、b)給出的結構化設計。 (a)非結構化設計 (b)轉化成的等價的結構化設計圖3.7 用Ashcroft_Manna技術的例子15. 用Jackson圖描繪下述的一列火車的構成:一列火車最多有兩個火車頭。只有一個火車頭時則位于列車最前面,若還有第二個火車頭時,則第二個火車頭位于列車最后面?;疖囶^既可能是內(nèi)燃機車也可能是電氣機車。車廂分為硬座車廂、硬臥車廂和軟臥車廂等3種。硬座車廂在車內(nèi)所有車廂的
15、前面部分,軟臥車廂在所有車廂的后面部分。此外,在硬臥車廂和軟臥車廂之間還有一節(jié)餐車。第三章習題解答 一、選擇題1. 答案: C.分析:作為需求分析階段工作的復查手段,在需求分析的最后一步,應該對功能的正確性、完整性和清晰性,以及其它需求給予評價。一般,評審的結果都包括了一些修改意見,待修改完成后再經(jīng)評審通過,才可進入設計階段。2. 答案: D.分析:雖然各種分析方法都有獨特的描述方法,但所有的分析方法還是有它們共同適用的基本原則。這些基本原則包括:§ 需要能夠表達和理解問題的信息域和功能域;§ 要能以層次化的方式對問題進行分解和不斷細化;&
16、#167; 要分別給出系統(tǒng)的邏輯視圖和物理視圖。3. 答案:A. , B. , C. , D. , E. 分析:軟件需求分析的任務是通過與用戶的合作,了解用戶對待開發(fā)系統(tǒng)的要求;根據(jù)對用戶要求的系統(tǒng)所在的信息域的調(diào)查、分析,確定系統(tǒng)的邏輯模型;并對求解的問題做適當?shù)姆纸?,使之適合于計算機求解。需求分析的結果是軟件需求規(guī)格說明書。結構化程序設計是在詳細設計和編碼階段所采用的技術,而不是需求分析階段要采用的技術。在需求分析階段,分析人員可以用數(shù)據(jù)流圖描述系統(tǒng)的數(shù)據(jù)流的變換和流向,用數(shù)據(jù)詞典定義在數(shù)據(jù)流圖中出現(xiàn)的數(shù)據(jù)
17、流、數(shù)據(jù)文件、加工或處理,用判定表表示復雜條件和動作組合的情況。但PAD圖是在詳細設計階段使用的描述加工邏輯的工具,不適用于需求分析。此外,軟件需求分析階段只確定軟件系統(tǒng)要“做什么”,完成對重要功能、性能、確認準則的描述,至于“怎么做”由后續(xù)的設計階段完成,對算法的詳細過程性描述也是在設計階段給出。軟件可行性分析應在需求分析之前,所以需求分析規(guī)格說明不能成為可行性分析的依據(jù)。4. 答案:A. B. C. D.
18、 E. 分析:通常,原型是指模擬某種產(chǎn)品的原始模型。在軟件開發(fā)中,原型是軟件的一個早期可運行的版本,它反映最終系統(tǒng)的部分重要特性。使用原型的原型化方法特別適用于需求不確定性較高的軟件系統(tǒng)的開發(fā)。它的基本思想是根據(jù)用戶給出的基本需求,通過快速實現(xiàn)構造出一個小型的可執(zhí)行的模型,滿足用戶的基本要求,這就是系統(tǒng)界面原型。讓用戶計算機上實際運行這個用戶界面原型,在試用的過程中得到親身感受和受到啟發(fā),做出反應和評價,提出同意什么和不同意什么。然后開發(fā)者根據(jù)用戶的意見對原型加以改進。隨著不斷試驗、糾錯、使用、評價和修改,獲得新的原型版本,如此周而復始,逐步減少分析和通信中的誤解,彌補不足之處,進一步確定各種
19、需求細節(jié),適應需求的變更,從而提高了最終產(chǎn)品的質(zhì)量。它是一種自外向內(nèi)型的設計過程。二、簡答題1. 答:解決任何問題之前都必須首先理解問題,對問題理解得越深入,解決起來也就越容易。為了獲得對順序主文件更新問題的直觀、具體的認識,首先設想一個典型的主文件(稱為舊的主文件)、一個事務文件和更新后得到的新的主文件及異常情況報告,如圖3.8所示。圖3.8 典型地順序主文件更新問題為了簡單起見,在圖3.8中忽略了主文件和事務文件中所包含的訂戶地址信息。從圖3.8可以看出,更新順序主文件系統(tǒng)有下述2個輸入文件:1)舊的主文件(由包含訂戶姓名、地址信息的記錄組成);2)事務文件。系統(tǒng)還有3個輸出文
20、件:1)新的主文件;2)異常報告;3)摘要和工作結束信息。圖3.9描繪了設想的順序主文件更新系統(tǒng)的概貌。圖3.9 順序主文件更新系統(tǒng)概貌然后用逐步求精方法設計圖3.9中關鍵的黑盒子“更新主文件”的實現(xiàn)算法。逐步求精方法實質(zhì)上是“自頂向下”的設計方法,它通過不斷分層細化解決問題的算法來設計軟件。它不像“各個擊破”技術那樣把整個問題分解為若干個重要程序相同的子問題。在用逐步求精方法設計軟件的過程中,軟件的某個特定方面的重要性在一次又一次的求精中是變化的。最初,某個問題可能無關緊要,但后來同樣的問題會變得相當重要。換句話說,可以把逐步求精方法看作是建立某個階段內(nèi)需要解決的各種問題的優(yōu)先級
21、的一種技術。它能確保每個問題都在恰當?shù)臅r間得到解決,而且在任何時候都不需要同時解決7個以上問題。使用逐步求精方法設計軟件的難點在于,在當前的求精步驟中確定哪些是必須處理的重要事項,哪些事項應該推遲到后面的求精步驟中去處理。作為對“更新主文件”的第一步求精,我們把它分解為3個處理框,分別稱為“輸入”、“處理”和“輸出”,如圖3.10所示。圖3.10 第一步求精在這個設計步驟中假設,當“處理”需要一個記錄時,我們能夠在那個時候輸入正確的記錄。同樣,我們也能夠在當時把正確的記錄寫入到正確的文件中。也就是說,在把逐步求精方法運用到解決更新主文件這個問題時,我們是把輸入和輸出這兩方面的問題暫
22、時分離出來,集中精力設計“處理”的算法。為了搞清楚怎樣按照事務文件的指示,更新舊的主文件產(chǎn)生新的主文件,也就是說,為了設計出處理的算法,讓我們再一次研究圖3.8所示的例子。把第一個事務記錄(Brown)的關鍵字與第一個舊的主文件記錄(Abel)的關鍵字相比較。因為Brown按字母順序排在Abel的后面,把Abel記錄不加更改地寫入新的主文件后,讀取下一個舊的主文件記錄(Brown)?,F(xiàn)在,事務記錄的關鍵字與舊的主文件記錄的關鍵字相同,又因為事務的類型是3(刪除),所以必須刪除Brown記錄,這可通過不把Brown記錄復制到新的主文件中來實現(xiàn)。接下來讀取下一個事務記錄(Harris)和下一個舊的
23、主文件記錄(James),分別在各自的緩沖區(qū)里覆蓋Brown記錄,因為Harris和James之前,而且事務類型為1(插入),所以把Harris記錄寫到新的主文件中以實現(xiàn)插入。讀取下一個事務記錄(Jones),因為Jones和James之后,把James記錄復制到新的主文件中,然后讀取下一個舊的主文件記錄,在舊文件記錄緩沖區(qū)中得到Jones記錄。現(xiàn)在事務記錄關鍵字與舊的主文件記錄關鍵字相同,正如從事務文件中看到的那樣,先修改舊的主文件記錄(Jones記錄),然后把它刪除,以便讀取下一個事務記錄(Smith)和下一個舊的主文件記錄(也是Smith)。遺憾的是,事務類型是1(插入),但是在舊的主文
24、件中已經(jīng)有Smith記錄了,因此,在輸入數(shù)據(jù)中有錯誤,將Smith記錄寫入異常報告中。更確切地說,將Smith事務記錄寫入異常報告,而把Smith舊的主文件記錄寫入新的主文件??偨Y上述例子中揭示出的處理過程,得到表3.2所示的處理規(guī)則。表3.2 處理規(guī)則 根據(jù)表3.2所示的處理規(guī)則,可以對圖3.10中的“處理”框求精,得圖3.11所示的第二步求精結果。為減少連線(特別是為了減少交叉線),在這張流程圖中用標有相同字母(例如,字母A)的圓代表應該連在一起的點。圖中連到“輸入”和“輸出”方框的虛線表示把如何處理輸入和輸出的設計決定推遲到較晚的求精步驟中再做出,該圖其余部分是實現(xiàn)“處理”的
25、流程圖,或者說是對處理事務的算法的初步求精結果。正如剛才講過的,已把對輸入和輸出問題的考慮推遲了,此外,還沒有規(guī)定文件結束的條件,也沒有規(guī)定遇到出錯條件時應該怎么處理。逐步求精方法的優(yōu)點就在于可以把這類問題推遲到后面的求精步驟中去解決。圖3.11 第二步求精下一步設計步驟是求精圖3.11中的“輸入”和“輸出”兩個處理框,得到圖3.12,在這個設計步驟中仍然沒有處理到文件結束的條件,也沒有寫入工作結束的信息,這些設計工作可以在后面的求精步驟中完成。使用逐步求精方法設計軟件時,每完成一個求精步驟都必須對這個求精步驟得出的設計結果仔細審查,沒有發(fā)現(xiàn)錯誤才能進行下一個求精步驟的設計工作,如
26、果發(fā)現(xiàn)了錯誤則應該及時糾正。審查圖3.12可以發(fā)現(xiàn),該設計包含一個嚴重錯誤。考慮圖3.8中給出的數(shù)據(jù)可以發(fā)現(xiàn)這個錯誤。假設當前的事務是2Jones,也就是修改Jones記錄,也就是修改Jones記錄,并且當前的舊的主文件記錄是Jones。在圖3.12的設計中,因為事務記錄的關鍵字與舊的主文件記錄的關鍵字相同,沿最左邊的路徑到底“測試事務類型”判定框。因為當前的事務類型是“修改”,所以修改舊的主文件記錄并把修改后的記錄寫入新的主文件。然后讀取下一個事務記錄,該記錄是3Jones,也就是刪除Jones記錄,但是,已經(jīng)把修改后的Jones記錄寫入新的主文件記錄了。在用逐步求精方法設計軟件的過程中對每
27、個求精步驟得出的設計結果都進行嚴格審查的好處是,一旦發(fā)現(xiàn)錯誤,不必從頭開始重做一遍,只需回到前一步的設計結果,從那里開始重新設計即可。在本設計中,第二步求精的結果(見圖3.11)是正確的,可以把它作為第三步求精的基礎。圖3.12 第三步求精(有嚴重錯誤)正如剛才講過的,圖3.12所示設計的錯誤在于,當事務類型為2(修改)時沒有考慮下一個事務的影響,就把修改后的主文件記錄寫入新的主文件中。為了改正上述錯誤,我們采用“前瞻一步”的策略,也就是說,只有在分析了一個事務類型的下一個事務記錄之后,才能處理該事務記錄。更具體地說,當一個事務記錄的類型為“修改”時,修改緩沖區(qū)中的舊主文件記錄,然
28、后讀取下一個事務記錄,如果剛讀出的事務記錄的關鍵字與緩沖區(qū)中的舊文件記錄的關鍵字不相同,則把緩沖區(qū)中已經(jīng)修改過的舊主文件記錄寫入新的主文件;如果新讀出的事務記錄的關鍵字與主文件記錄關鍵字相同,則依據(jù)新的事務記錄的類型來處理緩沖區(qū)中的舊主文件記錄。由于事務文件是預先排好序的,當新讀出的事務記錄與主文件記錄有相同的關鍵字時,也就是新讀出的事務記錄與前一個事務記錄是針對同一個訂戶的事務的,新讀出的事務記錄的類型只可能是“修改”或“刪除”(已知前一個事務記錄的類型是“修改”)。采用“前瞻一步”的設計策略,得出圖3.13所示的第三步求精結果。圖3.13 改正錯誤后的第三步求精為簡單起見,當針
29、對同一個訂戶有多個事務時,僅考慮了在修改事務之后又有修改事務或刪除事務的情況。實際上,如果對事務文件先進行預處理,使得針對每位訂戶最多只有一個事務,則更新順序主文件的算法可大大簡化。下面列出對事務文件可能做的一些預處理:如果針對同一個訂戶有多個修改事務,則僅保留最后一個修改事務(本問題中的主文件記錄僅有訂戶姓名和地址兩項信息,多次修改地址則以最后一次修改為準);若插入一位新訂戶記錄后,又有零或多個修改事務,最后是一個刪除事務,則略去這一系列事務;若對一個訂戶記錄既有修改事務又有刪除事務,則略去修改事務,僅保留刪除事務;若針對一位訂戶既有插入事務又有修改事務,則用修改事務的內(nèi)容(地址信息)更正插
30、入事務的內(nèi)容(地址信息),然后刪去這個修改事務。在第4次求精的過程中,應該考慮迄今為止被忽略的諸如打開和關閉文件這樣的細節(jié)問題。采用逐步求精方法設計軟件時,這樣的細節(jié)問題是在基本算法被完全設計出來之后,最后處理的。顯然,不打開和關閉文件,程序是不可能正常運行的,也就是說,這些問題是必須處理的,但是,重要的是,處理這類細節(jié)問題應該在設計的最后階段進行。在設計的早期階段,設計者集中精力關注的7個左右問題是不應該包括打開和關閉文件這樣的細節(jié)問題的。打開和關閉文件與特定軟件的設計無關,它們只是作為任何設計的一部分的實現(xiàn)細節(jié)。然而,在后面的求精步驟中,打開和關閉文件變得重要起來,必須加以處理。從前述設計
31、過程可知,可以把逐步求精方法看作是建立在某個階段內(nèi)需要解決的各種問題的優(yōu)先級的一種技術。逐步求精方法能夠確保每個問題都得到解決,并且是在合適的時間解決,在任何時刻都不需要同時考慮7個以上的問題。2.答:從圖3.1所示的層次圖可以看出,這個程序的功能是計算若干個指定地點的每日平均溫度。變量sum保存某地一天之內(nèi)在指定的時間取樣點的溫度之和。程序運行時首先初始化變量sum并打開文件,然后讀取地點、時間和溫度等原始數(shù)據(jù),創(chuàng)建用于保存這些數(shù)據(jù)的溫度記錄,接下來計算特定地點的日平均溫度,存儲溫度記錄。重復調(diào)用“讀取地點、時間和溫度”、“創(chuàng)建新的溫度記錄”、“計算特定地點的日平均溫度”和“存儲溫度記錄”等
32、模塊,直至計算出并保存好所有指定地點的日平均溫度。最后,打印平均溫度并關閉文件。從上述敘述可知,“計算多個地點的日平均溫度”、“讀取地點、時間和溫度”、“創(chuàng)建新的溫度記錄”、“計算特定地點的日平均溫度”和“存儲溫度記錄”等5個模塊,每個都完成一個單一的功能,模塊內(nèi)所有元素都為完成同一個功能服務,彼此結合的十分緊密,因此,這5個模塊的內(nèi)聚類型都是功能內(nèi)聚。初看起來,由于初始化變量sum和打開文件這兩個操作都是在程序運行的初始階段完成的,“初始化變量sum和打開文件” 這個模塊的內(nèi)聚類型似乎是時間內(nèi)聚。但是,初始化變量sum是本程序特有的操作,而打開文件是硬件要求的操作,是任何使用文件的程序都包含
33、的一個操作,并非本程序特有的操作。當可以分配兩個或更多個不同級別的內(nèi)聚類型給一個模塊時,規(guī)則是分配最低級別的內(nèi)聚類型給該模塊。因此,“初始化變量sum和打開文件”這個模塊的內(nèi)聚類型都是偶然內(nèi)聚。同理,“關閉文件并打印平均溫度” 這個模塊的內(nèi)聚類型也是偶然內(nèi)聚。3.答:綜合分析圖3.2和表3.1所提供的信息可知各個模塊之間的耦合情況。例如,當模塊p調(diào)用模塊 q時(接口1),它傳遞一個參數(shù)-飛機類型。當模塊q把控制返還給模塊p時,它傳回一個狀態(tài)標志。某些模塊之間的耦合類型是明顯的,例如,模塊p和q之間(接口1)、模塊r和t之間(接口5)及模塊s和u之間(接口6)都是數(shù)據(jù)耦合,因為它們傳遞的都是一個
34、簡單變量。如果兩個模塊中的一個模塊給另一個模塊傳遞控制元素,也就是說,如果一個模塊明顯地控制另一個模塊的邏輯,則它們之間具有控制耦合。例如,當給具有邏輯內(nèi)聚的模塊傳遞功能代碼時就傳遞了控制元素。另一個控制耦合的例子是把控制開關作為一個參數(shù)傳遞。圖3.2中模塊q調(diào)用模塊r時(接口3)傳遞一個功能代碼,因此,這兩個模塊之間是控制耦合。圖3.2右側文字說明,模塊p、t和u更新同一個數(shù)據(jù)庫,因此,它們之間具有公共環(huán)境耦合。當模塊p調(diào)用模塊s時(接口2),如果模塊s使用或更新模塊p傳遞給它的零件清單中的所有元素,則模塊p和s之間的耦合是數(shù)據(jù)耦合;但是,如果模塊s只訪問該清單中的一部分元素,則模塊p和s之
35、間的耦合是特征耦合。模塊q和s之間(接口4)的耦合情況與此類似。由于圖3.2和表3.1中給出的信息尚不足以準確地描述各個模塊的功能,所以不能確定這兩對模塊之間的耦合是數(shù)據(jù)耦合還是特征耦合。4.答:我們在解答第2章第11題的過程中,已經(jīng)用結構化分析方法詳細地分析了這個工資支付系統(tǒng),并且認真審查了結構化分析所得出的結果。因此,可以從圖2.19所示的工資支付系統(tǒng)完整數(shù)據(jù)流通出發(fā),設計工資支付系統(tǒng)的結構。從圖2.19可以看出,事務數(shù)據(jù)和人事數(shù)據(jù)沿著兩條輸入通路進入系統(tǒng),輸出數(shù)據(jù)沿著一條輸出通路離開系統(tǒng),數(shù)據(jù)流圖中沒有明顯的事務中心。因此,從整體上看這個數(shù)據(jù)流圖具有變換流的基本特征。接下來應該分析確定輸
36、入流和輸出流的邊界,以孤立出變換中心?!叭?shù)據(jù)”和“收集數(shù)據(jù)”顯然位于輸入流中?!皩徍藬?shù)據(jù)”僅僅對收集來的事務數(shù)據(jù)進行校核,并不對數(shù)據(jù)進行加工處理,它的基本功能是確保輸入的事務數(shù)據(jù)時合理的,因此,也應該歸入輸入流的行列?!案氯耸聰?shù)據(jù)”由人事科通過另一個程序完成,不屬于本系統(tǒng)應完成的功能?!坝”砀瘛憋@然應該位于輸出流中。“分發(fā)工資明細表”由人工完成,它不是工資支付程序的一部分。綜上所述,得出畫有流邊界的數(shù)據(jù)流圖,如圖3.14所示。圖3.14 畫有流邊界的工資支付系統(tǒng)數(shù)據(jù)流圖下一個設計步驟是,完成“第一級分解”。所謂第一級分解就是確定系統(tǒng)的總體控制結構。通常,變換分析得出的系統(tǒng)高層結
37、構是一個“三叉”的控制結構,針對工資支付系統(tǒng)得出的高層控制結構如圖3.15所示。圖3.15 工資支付系統(tǒng)的第一級分解 再下一步設計步驟是,完成“第二級分解”。所謂第二級分解,就是把數(shù)據(jù)流圖中的每個處理映射成軟件結構中的一個適當?shù)哪K。變換分析的映射規(guī)則是,從變換中心的邊界開始沿著輸入通路向外移動,把輸入通路中每個處理映射成軟件結構中“輸入信息處理控制模塊”控制下的一個低層模塊;然后沿輸出通路向外移動,把輸出通路中每個處理映射成直接或間接受“輸出信息處理控制模塊”控制的一個低層模塊;最后把變換中心內(nèi)的每個處理映射成受“變換中心控制模塊”控制的一個低層模塊。對于工資支付系統(tǒng)來
38、說,第二級分解的結果如圖3.16所示。圖3.16 工資支付系統(tǒng)的第二級分解最后一個設計步驟是,對工資支付系統(tǒng)的初步設計結果進行優(yōu)化。結合工資支付系統(tǒng)的功能研究圖3.16所示的系統(tǒng)初步結構可以看出,“接收工資數(shù)據(jù)”這個控制模塊時多余的:“取數(shù)據(jù)”模塊本身就具有根據(jù)需要讀取相應數(shù)據(jù)的功能,沒必要再它上面再加一個控制模塊。此外,完成具體輸出功能的模塊只有一個,無須再額外設置一個輸出信息處理控制模塊,因此應該去掉“印出計算結果”模塊。優(yōu)化后的工資支付系統(tǒng)結構如圖3.17所示。圖3.17 優(yōu)化后的工資支付軟件結構5.答:計算環(huán)形復雜度的方法主要有下述3種。(1)環(huán)形復雜度等于流圖
39、中的區(qū)域數(shù)圖3.3所示流圖共有5個區(qū)域,因此它的環(huán)形復雜度等于5。圖3.18用羅馬數(shù)字標注出該流圖中的區(qū)域,其中區(qū)域I為圖的外部區(qū)域。圖3.18 用羅馬數(shù)字標注出區(qū)域(2)環(huán)形復雜度等于流圖中邊的條數(shù)減去結點數(shù)之后再加2圖3.3所示流圖共有11條邊,8個結點,所以它的環(huán)形復雜度為11-8+2=5(3)環(huán)形復雜度等于程序中的判斷數(shù)加1流圖中有2條輸出弧的結點(例如,圖3.3中的結點c和f)對應于程序中的1個判斷,有n(n>2)條輸出弧的結點(例如,圖3.3中的結點a有3條輸出弧)對應于程序中的n-1個判斷。因此,圖3.3所示流圖的環(huán)形復雜度為2*1+1*(3-1)+1=56.答
40、:Halstead方法根據(jù)詳細設計中使用的不同運算符的個數(shù)n1和不同操作數(shù)的個數(shù)n2來預測程序長度H。通常,把變量和常量作為操作數(shù),把其他符合視為運算符,因此,逗號、分號、圓括號、方括號、算術運算符和邏輯運算符全都是運算符。按照慣例,把所有總是成對出現(xiàn)或以3個一組方式出現(xiàn)的符號視為一個運算符。計算X和Y之積的代碼中包含的運算符有下列8種(n1=8):=、;、while end_while、>、+、-、print、()操作數(shù)有下列5種(n2=5):Z、0、X、Y、1按照Halstead方法預測的程序長度為H= n12 n1 + n22 n2 &
41、#160;=8*2 8+5*2 5= 8*3+5*2.32=35.6計算X和Y之積的代碼中包含的各種運算符的個數(shù)如下列:運算符 個數(shù)=
42、; 3; 5while end_while
43、60; 1> 1+
44、 1- 1Print
45、160; 1() 1因此,代碼中包含的運算符總個數(shù)為N1=14。代碼中包含的各種操作數(shù)的個數(shù)如下列:操作數(shù)
46、 個數(shù)Z
47、160; 40 2X
48、160; 3Y 21
49、160; 1因此,操作數(shù)的總個數(shù)為N2=12。程序的實際長度為N= N1+ N2=26預測的長度與實際長度相差9.6,相對誤差是為9.6/26=37%7.答:分析圖3.4可以看出,該處理過程由順序執(zhí)行的3個程序塊組成:首先執(zhí)行處理a,然后執(zhí)行一個DO-UNTIL型循環(huán),最后執(zhí)行處理j.DO-UNTIL型循環(huán)的循環(huán)體是處理b和一個IF-THEN-ELSE型分支結構,循環(huán)結束條件為x8。其中,IF-THEN-ELSE型分支結構的分支
50、條件是x1,THEN部分是處理f和另一個分支條件為x6的IF-THEN-ELSE型分支結構;ELSE部分是一個CASE型多分支結構。這樣一層一層地分析下去,可以畫出圖3.19所示的與圖3.4等價的盒圖。圖3.19 與圖3.4等價的盒圖8.答:令P代表交易的總金額,Q代表每股的售價,n代表交易的股數(shù)。(1)表示手續(xù)費計算方法的判定表如圖3.20所示。判定表的每一列是一條計算規(guī)則。例如,第1列(規(guī)則1)規(guī)定,當交易總金額P少于1000元,且每股售價Q低于14元,且交易的股數(shù)n是100的倍數(shù)時,給經(jīng)紀人的手續(xù)費為(1+0.05)*0.084P第16列(規(guī)則16)表明,當交易總金額P超過1
51、0000元,且每股售價Q在14元到25元之間,且交易的股數(shù)n不是100的倍數(shù)時,手續(xù)費為(1+0.06)*(0.04P+134)圖3.20 描述手續(xù)費計算方法的判定表(2)表示手續(xù)費計算方法的判定樹如圖3.21所示。圖3.21 描述手續(xù)費計算方法的判定樹9.答:(1)從該偽碼程序轉變成的程序流程圖示于圖3.22中。圖3.22 從偽碼轉變成的程序流程圖(2)由該偽碼程序轉變成的盒圖如圖3.23所示。圖3.23 由偽碼轉變成的盒圖10.答:(1)通常所說的結構化程序,是按照狹義的結構程序的定義衡量,符合定義規(guī)定的程序。圖3.5所示的程序的循環(huán)控制結構有兩個出口,
52、顯然不符合狹義的結構程序的定義,因此是非結構化的程序。(2)使用附加的標志變量flag,至少有兩種方法可以把該程序改造為等價的結構化程序,圖3.24所示盒圖描繪了等價的結構化程序。 (a)解法1
53、; (b)解法2圖3.24 與圖3.5等價的結構化程序(用flag)(3)不使用flag把該程序改造為等價的結構化程序的方法如圖3.25所示。圖3.25 與圖3.5等價的結構化程序(不用flag)11.答:(1)根據(jù)這個偽碼程序畫出的程序流程圖如圖3.26所示。圖3.26 與偽碼程序?qū)某绦蛄鞒虉D(2)這個程序是非結構化的。因為在圖3.26中“印出緩沖區(qū)的內(nèi)容”這個處理框有兩個入口;此外,循
54、環(huán)結構有兩個出口:IT為假和MATCH=N為真時都結束循環(huán)。(3)僅用3種控制結構的等價的結構化程序的偽碼如下:INPUT NINPUT KEYWORD(S) FOR TOPICI=0MATCH=0DO WHILE(IT) and (MATCHI=I+1IF WORD= KEYWORDTHEN MATCH=MATCH+1STORE IN BUFFERENDENDIF N=0THEN PRINT”NO MATCH”ELSE CALL SUBROUTINE TO PRINT BUFFERINFORMATIONEND圖3.27所示盒圖描繪了上面給出的結構化程序。圖3.27 與圖3.26等
55、價的結構化程序(4)該程序邏輯中有兩個錯誤第一個錯誤是WHILE循環(huán)條件IT:根據(jù)這個條件,當I=T時應該執(zhí)行一遍循環(huán)體。循環(huán)體的第一條語句是I=I+1,即把I的值加1使之變成T+1,但是,該檢索系統(tǒng)總共只有T個詞條(ENTRY),下標I變成T+1將出現(xiàn)“越界”錯。因此,應該把循環(huán)條件改為I第二個錯誤是印出“無匹配“的條件N=0:該程序使用變量MATCH存放匹配次數(shù),因此,印出“無匹配“的條件應該是MATCH=0。順便說一句,即使把該程序改造成了結構化的程序(見第3小題的答案),也仍然應該像上述的那樣改正這個錯誤。12.答:(1)圖3.6所示程序流程圖可用偽碼表示為:STARTLoop:IF
56、P1THENS1IF P2THENS2IF P3THENS3IF P4THENS4GO TO LoopELSEGO TO ExitENDELSEGO TO ExitENDELSEGO TO ExitENDExit:STOP(2)使用附加的標志變量flag,設計出的等價的結構化程序偽碼如下:STARTflag=TRUEDO UNTIL(NOT P4) OR (NOT flag)IF P1THEN S1ELSE flag=FALSEENDIF P2 AND flagTHEN S2ELSE flag=FALSEENDIF P3 AND flagTHEN S3ELSE
57、; flag=FALSEENDIF P4 AND flagTHEN S4ELSE flag=FALSEENDENDSTOP(3)不使用附加的標志變量flag的等價的結構化程序偽碼如下:STARTDO UNTIL (NOT P1) OR (NOT P2) OR (NOT P3) OR (NOT P4)IF P1THEN S1IF P2THEN S2IF P3THEN S3IF P4 THEN S4ENDENDENDENDENDSTOP13答:偽碼準確地描述了程序的控制流程。由于偽碼在描述程序的控制流程時是無二義性的,因此,由偽碼轉變成的程序流程圖是唯
58、一的。但是,同樣的控制流程可以用不同的偽碼來描述,因此,由程序流程圖轉變成的偽碼不是唯一的。例如,第12題第(3)小題的答案也可以用下面的偽碼來描述STARTLoop:IF P1THEN S1IF P2THEN S2IF P3THEN S3IF P4THEN S4DO TO LoopENDENDENDENDENDSTOP上列偽碼中雖然使用了GO TO 語句,但它仍然是結構化程序,因為它仍然保持了單入口單出口的控制結構。實際上,它用了GO TO 語句實現(xiàn)了DO_UNTIL型循環(huán)結構。14答:(1)從這個例子中看出,Ashcroft_Manna技術的基本方法是,當待改造的程序含有嵌套的費結構化的IF語句時,改造后的程序中增加DO-CASE語句和DO-UNTIL語句,并增加一個輔助變量I,I的初始值偽1。最外層的IF語句在I=1時執(zhí)行,執(zhí)行完這個IF語句后把I賦值為隨后應該執(zhí)行的內(nèi)層IF語句所對應的CASE標號值。DO-CASE語句的最大分支數(shù)(可執(zhí)行的最大標號
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能駕駛技術與自動化交通系統(tǒng)考核試卷
- 空調(diào)器安裝適應性設計考核試卷
- 纖維板制造中的清潔生產(chǎn)技術與實施考核試卷
- 煙草制品零售法律法規(guī)變動影響考核試卷
- 行業(yè)發(fā)展趨勢考核試卷
- 租賃圖書的物流配送管理考核試卷
- 美術活動:動物的外衣
- 婚姻忠誠協(xié)議附件清單與效力保障合同
- 藝人彩妝品牌代言合作協(xié)議
- 兒童監(jiān)護權變更后探視安排調(diào)整合同
- 《人像攝影教程》課件
- 復綠施工方案
- 2024年貴州黔東南州能源投資有限公司招聘筆試參考題庫含答案解析
- 相鄰關系知識講座
- 毛澤東著作《實踐論》
- 人工智能醫(yī)療器械注冊審查指導原則(2022年第8號)
- 《環(huán)境化學》戴樹桂(第二版)-課后習題與參考答案
- 提香-西方美術史-
- 房屋安全鑒定報告登記表范本
- 社會工作-生態(tài)系統(tǒng)理論視角下農(nóng)村留守兒童問題研究論文
- 2023年08月中國人民解放軍海軍面向社會公開招考專業(yè)技能類文職人員筆試歷年難易錯點考題薈萃附帶答案詳解
評論
0/150
提交評論