【正文】
1 詳細設(shè)計 詳細設(shè)計就是要在總體設(shè)計階段成果的基礎(chǔ)上,考慮如何實現(xiàn)定義的軟件系統(tǒng),直到對系統(tǒng)中的每個模塊給出足夠詳細的過程描述。 結(jié)構(gòu)化程序設(shè)計技術(shù)是進行詳細設(shè)計的邏輯基礎(chǔ)。它采用自頂向下逐步求精的設(shè)計方法和單入口單出口的控制結(jié)構(gòu)。 結(jié)構(gòu)化程序設(shè)計的三種基本控制結(jié)構(gòu)是順序、選擇、循環(huán)。 詳細設(shè)計的工具有程序流程圖、盒圖、 PAD 圖、判定表、判定樹和 PDL 語言等。 程序復雜性度量 程序復雜性主要指模塊內(nèi)程序的復雜性。它直接關(guān)聯(lián)到軟件開發(fā)費用的多少、開發(fā)周期的長短和軟件內(nèi)部潛伏錯誤的多少等。 1) 代碼行度量法 度量程序的復雜性,最簡單的方法就是統(tǒng)計程序的源代碼行數(shù)。該方法的基本考慮是統(tǒng)計一個程序模塊的源代碼行數(shù)目,并以源代碼行數(shù)作為程序復雜性的度量。 Lipow 及其他研究者得出一個結(jié)論:對于少于 100 個語句的小程序,源代碼行數(shù)與出錯率是線性相關(guān)的。隨著程序的增大,出錯率以非線性方式增長。 2) McCabe 度量法 McCabe 度量法是一種基于程序控制流的復雜性度量方法。 McCabe 定義的程序復雜性度量值又稱環(huán)路復雜性,它是基于程序圖中環(huán)路的個數(shù)。 如果把程序流程圖中每個處理符號都退化成一個結(jié)點,原來聯(lián)結(jié)不同處理符號 的流線變成連接不同結(jié)點的有向弧,這樣得到的有向圖就叫做程序圖。 計算有向圖 G 的環(huán)路復雜性的公式: 2)( ??? nmGV 其中, V(G)是有向圖 G 中的環(huán)路個數(shù), m 是圖 G 中有向弧個數(shù), n 是圖 G 中結(jié)點個數(shù)。 詳細設(shè)計說明書 1. 引言 2. 總體設(shè)計。軟件結(jié)構(gòu) 3. 程序描述。逐個模塊描述其功能、性能、輸入、輸出、算法等 例題 軟件詳細設(shè)計工具可分為 3 類,即圖形工具、設(shè)計語言和表格工具。圖形工具中,( A)簡單而應用廣泛。( B)表示法中,每個處理過程用一個盒子表示,盒子可以嵌套。( C)可以縱橫延伸,圖形的 空間效果好。 ( D)是一種設(shè)計和描述程序的語言,它是一種面向( E)的語言。 供選答案: AC:① NS 圖 ②流程圖 ③ HIPO 圖 ④ PAD 圖 D:① C ② PDL ③ PROLOG ④ Pascal E:①人 ②機器 ③數(shù)據(jù)結(jié)構(gòu) ④對象 答案: A.② B.① C.④ D.② E.① 2 [2020 年統(tǒng)考 ]下面是兩個程序流程圖,試分別用 NS 圖和 PAD 圖表示之,并計算它們的McCabe 復雜性度量。 S T A R T P A B Q T F E N D S T A R T P A B Q T F E N D T F F T 答案: W h i l e P A B U n t i l Q 設(shè)置 Q 的值為“真” Q F T ↓ A B U n t i l ( n o t P ) PAD 圖略 McCabe 復雜性度量都為 3。( 76+2) 下圖是使用 BASIC 語言編寫的一個打印 A、 B、 C 三數(shù)中最小者的程序流程圖。其中出現(xiàn)了6 個 GOTO 語句, 1 個向前, 5 個向后,程序可讀性很差。 A B B C F A C T F F 打印 B T 打印 C 打印 A T if (AB) goto 120。 if (BC) goto 110。 100 print C。 3 goto 140。 110 print B。 goto 140。 120 if (AC) goto 130。 goto 100。 130 print A。 140 試利用基 本控制結(jié)構(gòu),將程序中的 GOTO 語句消去。 使用 ifthenelse 結(jié)構(gòu)化構(gòu)造,則上述程序段可改成如下形式: if (AB and AC) then print A else if (A=B and Bc) then print B else print C 編碼 所謂編碼就是把軟件設(shè)計的結(jié)果翻譯成計算機可以“理解”的形式 — 用某種程序設(shè)計語言書寫的程序。 按照軟件工程的方法論,程序的質(zhì)量基本上由設(shè)計的質(zhì)量決定。但是,編碼使用的語言,特別是寫程序的風格和途徑也對程序質(zhì)量有相當大的影響。 程序設(shè)計語言的分類、選擇 大量實踐表明,高級程序設(shè)計語言較匯編語言有很多優(yōu)點。 程序設(shè)計風格包括四個方面: 源程序文檔化、數(shù)據(jù)說明、語句結(jié)構(gòu)和輸入 /輸出方法 例題 從下列敘述中選出 5 條符合程序設(shè)計風格指導原則的敘述。 ①嵌套的重數(shù)應加以限制 ②盡量多使用臨時變量 ③不濫用語言特色 ④不用可以省略的括號 ⑤使用有意義的變量名 ⑥應盡可能把程序編得短些 ⑦把常見的局部優(yōu)化工作留給編譯程序去做 ⑧注解越少越好 ⑨程序的格式應有助于讀者理解程序 ⑩應盡可能多用 GOTO 語句 答案:①、③、⑤、⑦、⑨是正確的 從下列關(guān)于模塊化程序設(shè)計的敘述中選出 5 條正確的敘述。 4 ①程序設(shè)計比較方便,但比較難以維護 ②便于由多個人分工編制大型程序 ③軟件的功能便于擴充 ④程序易于理解,也便于排錯 ⑤在主存儲器能夠容納得下的前提下,應使模塊盡可能大,以便減少模塊的個數(shù) ⑥模塊之間的接口叫做數(shù)據(jù)文件 ⑦只要模塊之間的接口關(guān)系不變,各模塊內(nèi)部實現(xiàn)細節(jié)的修改將不會影響別的模塊 ⑧模塊間的單向調(diào)用關(guān)系叫做模塊的層次結(jié)構(gòu) ⑨模塊越小,模塊化的優(yōu)點越明顯。一般來說,模塊的大小都在 10 行以下 答案:②、③、④、⑦、⑧是正確的 測試 軟件測試的 目的就是軟件投入生產(chǎn)性運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤。目前軟件測試仍然是保證軟件質(zhì)量的關(guān)鍵步驟。 軟件測試在軟件生命周期中橫跨兩個階段:編碼和測試。 Grenford 就軟件測試目的提出以下觀點: 1) 測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤。 2) 一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤 3) 一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試 軟件測試的原則 1) 應當盡早地不斷地進行軟件測試 2) 測試用例應由測試輸入數(shù)據(jù)和與之相對應的預期輸