《軟體工程導論》課後習題答案

Koma_Wong發表於2018-06-22

《軟體工程導論》課後習題答案

第一章 軟體工程概論

1.什麼是軟體危機?

軟體危機是指在計算機軟體的開發和維護過程中所遇到的一系列嚴重問題。這些問題表現在以下幾個方面:

(1)使用者對開發出的軟體很難滿意。 (2)軟體產品的質量往往靠不住。 (3)一般軟體很難維護。 (4)軟體生產效率很低。 (5)軟體開發成本越來越大。 (6)軟體成本與開發進度難以估計。 (7)軟體技術的發展遠遠滿足不了計算機應用的普及與深入的需要。

2.為什麼會產生軟體危機?

(1)開發人員方面,對軟體產品缺乏正確認識,沒有真正理解軟體產品是一個完整的配置組成。造成開發中制定計劃盲目、程式設計草率,不考慮維護工作的必要性。 (2)軟體本身方面,對於計算機系統來說,軟體是邏輯部件,軟體開發過程沒有統一的、公認的方法論和規範指導,造成軟體維護困難。 (3)尤其是隨著軟體規模越來越大,複雜程度越來越高,原有軟體開發方式效率不高、質量不能保證、成本過高、研製週期不易估計、維護困難等一系列問題更為突出,技術的發展已經遠遠不能適應社會需求。

3.怎樣克服軟體危機?

(1)充分吸收和借鑑人類長期以來從事各種工程專案中積累的行之有效的有效原理、概念、技術與方法,特別是吸取幾十年來人類從事計算機硬體研究和開發的經驗教訓。在開發軟體的過程中努力作到良好的組織,嚴格的管理,相互友好的協作。 (2)推廣在實踐中總結出來的開發軟體的成功的技術和方法,並研究更好、更有效的技術和方法,儘快克服在計算機系統早期發展階段形成的一些錯誤概念和作法。 (3)根據不同的應用領域,開發更好的軟體工具並使用這些工具。將軟體開發各個階段使用的軟體工具集合成一個整體,形成一個很好的軟體開發支環環境。 總之為了解決軟體危機,既要有技術措施(方法和工具),又要有必要的組織管理措施。

4.構成軟體專案的最終產品:

應用程式、系統程式、面向使用者的文件資料和麵向開發者的文件資料。

5.什麼是軟體生存週期?

軟體生存週期是指從軟體定義、開發、使用、維護到淘汰的全過程。

6.軟體生存週期為什麼劃分成階段?

(1)任何一個階段的具體任務不僅獨立,而且簡單,便於不同人員分工協作, 從而降低整個軟體開發工作的困難程度。 (2)可以降低每個階段任務的複雜程度,簡化不同階段的聯絡,有利於工程的組織管理,也便於採用良好的技術方法。 (3)使軟體開發的全過程以一種有條不紊的方式進行,保證軟體的質量,特別是提高了軟體的可維護性。

7.應該怎樣來劃分階段?

(1)每一個階段的任務儘可能獨立; (2)同一階段內的任務性質儘可能相同; (3)每一個階段任務的開始和結束有嚴格的標準。

8.軟體開發模型有幾種?它們的開發方法有可特點? 軟體開發模型有瀑布型、漸增型和變換型。

瀑布型開發方法是按照軟體生存週期的劃分依次實施,每一個階段有明確規定的任務。

它的特點:

(1)各個階段的順序性和依賴性; (2)劃分邏輯設計與物理設計,儘可能推遲程式的物理實現; (3)每個階段必須完成規定的文件,對其中問題通過複審及早發現,及早解決。

漸增型開發方法及特點:

(1)從部分需求出發,先建立一個不完全的系統,通過測試執行該系統取得經驗和資訊反饋,加深對軟體需求的理解,進一步使系統擴充和完善。如此反覆, 直至軟體人員和使用者對所設計完成的軟體系統滿意為止。 (2)在漸增型開發下的軟體是隨軟體開發的過程而逐漸形成的。 (3)漸增型開發方法適合於知識型軟體的開發,設計系統時對使用者需求的認識開始不是很清楚的,需要在開發過程中不斷認識、不斷獲得新的知識去豐富和完善系統。多數研究性質的試驗軟體,一般採用此方法。

變換型開發方法及特點:

(1)從軟體需求的形式化規格說明出發,經過一系列的程式變換,得到最終的程式系統。 (2)該方法必須有嚴格的數學理論和形式化技術的支援。

9.什麼是軟體工程?

軟體工程是指導計算機軟體開發和維護的工程學科。 (1)它採用工程的概念、原理、技術和方法來開發和維護軟體; (2)它將管理技術與當前經過時間考驗的而證明是正確的技術方法結合起來; (3)它強調使用生存週期方法學和結構分析和結構技術; (4)經過人們長期的努力和探索,圍繞著實現軟體優質高產這個目標,從技術到管理兩個方面做了大量的努力,逐漸形成了"軟體工程學"這一新的學科。

10.什麼是軟體工程環境:

方法與工具的結合,加上配套的軟、硬體支援稱為軟體工程環境。它能支援開發者按照軟體工程的方法,全面完成生存週期中的各項任務。

第二章 可行性研究 習題答案

1.問題定義的任務和主要工作?

問題定義的任務:將使用者提出的要求具體化、定量化;確定研製系統的範圍,明確研製的邊界。

問題定義階段的工作:

(1)通過調查研究,瞭解系統需求; (2)確定系統的功能需求、效能需求、可靠性需求、安全及保密性、資源、 開發費用及開發進度等的需求; (3)問題定義階段的產品--系統目標與範圍說明書。

2.可行性研究目的?

確定在問題定義中所提出的問題是否值得去解,在限制條件下,問題能否解決。

3.可行性研究的任務?

(1)進一步分析和澄清問題的定義,在澄清問題的基礎上,匯出系統的邏輯模型; (2)從系統邏輯模型中,選擇問題的若干種主要解法,研究每一種解法的可行性,為以後的行動提出建議; (3)如果問題沒有可行的解,建議停止系統開發;如果問題有可行的解, 應該推薦一個較好的解決方案,併為工程制定一個初步的計劃。

4.可行性研究包括哪幾方面的內容?

(1)技術可行性:現有技術能否實現本系統,現有技術人員能否勝任,開發系統的資源能否滿足; (2)經濟可行性:經濟效益是否超出開發成本; (3)操作可行性:系統操作在使用者內部行得通嗎? (4)法律可行性:新系統開發是否會侵犯他人、集體或國家利益,是否違反國家法律。

5.可行性研究的步驟?

(1)複查系統的規模和目標; (2)研究目前正在使用的系統,總結現有系統的優劣,提出新系統的雛形; (3)匯出新系統的高層邏輯模型; (4)推薦建議方案; (5)推薦行動方針; (6)書寫計劃任務書(可行性報告); (7)提交審查。

6.可行性研究報告的主要內容?

可行性分析的結果是可行性研究報告,內容包括:

(1)系統概述:說明開發的系統名稱,提出單位和開發單位。 (2)可行性研究的前提:系統目標;要求;約束和限制;可行性研究的基本準則等。 (3)對現有系統的分析:處理流程,圖示說明現有系統的處理流程和資料流程;現有系統存在的問題。 (4)系統需求:主要功能;主要效能及其要求;操作要求;資訊要求;限制性要求。 (5)建議系統:系統目標;處理流程;系統結構,功能,效能;系統技術可行性;投資和效益分析;操作可行性;法律可行性。 (6)其它可選方案:與國內外同型別方案的比較;提出一兩個可行性方案供論證和探討。 (7)制定下一階段的預算。 (8)結論性意見:由使用者方、設計方和投資方共同簽署意見。

第三章 需求分析 習題答案

1.需求分析的描述工具有哪些?

有資料流圖、資料字典、判定表、判定樹、結構化自然語言、層次方框圖、Warnier圖、IPO 圖和需求描述語言等。

2.需求分析的基本任務是什麼?

準確定義未來系統的目標,確定為了滿足使用者的需要系統必須做什麼。

3.怎樣建立目標系統的邏輯模型?要經過哪些步驟?

建立目標系統的邏輯模型的過程也就是資料流圖的分解過程。

4.什麼是結構化分析?它的結構化體現在哪裡?

結構化分析:使用資料流程圖、資料字典、結構化英語、判定表和判定樹等工具, 來建立一種新的、稱為結構化說明書的目標文件-需求規格說明書。 結構化體現在將軟體系統抽象為一系列的邏輯加工單元,各單元之間以資料流發生關聯。

5.軟體需求規格說明書由哪些部分組成? 組成包括:

(1)引言:編寫目的、背景說明、術語定義及參考資料等。 (2)概述主要功能、約束條件或特殊需求。 (3)資料流圖與資料字典。 (4)使用者介面、硬體介面及軟體介面。 (5)效能需求、屬性等。 (6)其它需求,如資料庫、操作及故障處理等。

6.為什麼資料流圖要分層?畫分層的 DFD 要遵循哪些原則? 分層的目的:便於逐步細化、結構清晰。

畫分層的 DFD 要遵循哪些原則:

(1)父圖與子圖之間資料要平衡。 (2)分解的深度和層次達到使加工足夠簡單、易於理解的基本加工為止。 (3)區分區域性檔案和區域性外部項(侷限於資料流中某一層或某幾層的檔案和外部項)。 (4)不要把控制流作為資料流。 (5)忽略瑣碎的枝節。 (6)每個資料流要有一個合適的名字,儘量使用現實系統中有具體意義的名字。

7.系統流程圖與資料流程圖有什麼區別?

系統流程圖描述系統物理模型的工具,資料流程圖描述系統邏輯模型的工具。系統流程圖從系統功能的角度抽象的描述系統的各個部分及其相互之間資訊流動的情況。 資料流程圖從資料傳送和加工的角度抽象的描述資訊在系統中的流動和資料處理的工作狀況。

8.資料字典包括哪些內容?它的作用是什麼?

資料字典是描述資料流圖中資料的資訊的集合。它對資料流圖上每一個成分: 資料項、檔案(資料結構)、資料流、資料儲存、加工和外部項等給以定義和說明; 它主要由資料流描述、加工描述和檔案描述三部分組成。對使用者來講,資料字典為他們提供了資料的明確定義;對系統分析員來講,資料字典幫助他們比較容易修改已建立的系統邏輯模型。

9.描述加工邏輯的工具有哪些?

有決策樹(又稱判定樹)、決策表(又稱判斷表)和結構化語言等。

10.某單位擬開發一個計算機房產管理系統,要求系統具有分房、 調房、退房和查詢統計等功能。房產科將使用者申請表輸入系統 後,系統首先檢查申請表的合法性, 對不合法的申請表,系統拒絕接收;對合法的申請表根據型別分別進行處理。

(1)如果是分房申請,則根據申請者的情況(年齡、工齡、職稱、職務、家庭人口等)計算其分數,當分數高於閥值分數時,按分數高低將申請單插到分房佇列的適當位置。在進行分房時,從空房檔案中讀出空房資訊,如房號、面積、等級、單位面積房租等,把好房優先分給排在分房佇列前面的符合該等級房條件的申請者;從空房檔案中刪掉這個房號的資訊,並從分房佇列中刪掉該申請單,再把此房號的資訊和住戶資訊一起寫到住房檔案中,輸出住房分配單給住戶,同時計算房租,並將算出的房租寫到房租檔案中。 (2)如果是退房申請,則從住房檔案和房租檔案中刪除有關資訊,再把此房號的資訊寫到空房檔案中。 (3)如果是調房申請,則根據申請者的情況確定其住房等級,然後在空房檔案中查詢屬於該等級的空房,退掉原住房,再進行與分房類似的處理。 (4)住戶可以向系統查詢目前分房的閥值分數,居住某類房屋的條件,某房號的單位面積及房租等資訊。房產科可以要求系統列印住房情況的統計表,或更改某類房屋的居住條件、單位面積和房租等。 用資料流圖描繪該系統的功能需求;在資料字典中給出主要的資料流、檔案和加工說明。

第四章 總體設計 習題答案

1.系統設計包括哪兩個階段?

系統設計包括總體設計與詳細設計兩個階段。

2.總體設計的主要任務是什麼?

總體設計的主要任務是完成軟體結構的設計,確定系統的模組及其模組之間的關係。

3.什麼是模組?模組具有哪幾個特徵?總體設計主要考慮什麼特徵?

模組是資料說明、可執行語句等程式物件的集合,可以單獨命名且可通過名字來訪問。 模組具有輸入和輸出(引數傳遞)、功能、內部資料結構(區域性變數)和程式程式碼四個特性。 概要設計主要考慮輸入、輸出(引數傳遞)和功能兩個特性。

4.什麼是模組化?模組設計的準則?

模組化是按規定的原則將一個大型軟體劃分為一個個較小的、相對獨立但又相關的模組。

模組設計的準則:

(1)改進軟體結構, 提高模組獨立性:在對初步模組進行合併、分解和移動的分析、精化過程中力求提高模組的內聚,降低藕合。 (2)模組大小要適中:大約 50 行語句的程式碼,過大的模組應分解以提高理解性和可維護性;過小的模組,合併到上級模組中。 (3)軟體結構圖的深度、寬度、扇入和扇出要適當。一般模組的呼叫個數不要超過 5 個。 (4)儘量降低模組介面的複雜程度; (5)設計單入口、單出口的模組。 (6)模組的作用域應在控制域之內。

5.變換型資料流由哪幾部分組成?

變換型結構由三部分組成:傳入路徑、變換(加工)中心和傳出路徑。

6.變換分析設計的步驟?

(1)區分傳入、傳出和變換中心三部分,劃分 DFD 圖的分界線; (2)完成第一級分解:建立初始 SC 圖的框架; (3)完成第二級分解:分解 SC 圖的各個分支; (4)對初始結構圖按照設計準則進行精化與改進。

7.事務型資料流由哪幾部分組成?

事務型結構由至少一條接受路徑、一個事務中心與若干條動作路徑組成。

8.事務分析設計的步驟?

(1)在 DFD 圖中確定事務中心、接收部分(包含全部接收路徑)和傳送部分 (包含全部動作路徑); (2)畫出 SC 圖框架,把 DFD 圖的三部分分?quot;對映"為事務控制模組,接收模組和動作傳送模組.一般得到 SC 圖的頂層和第一層(如果第一層簡單可以併入頂層); (3)分解和細化接收分支和動作分支,完成初始的 SC 圖; (4)對初始結構圖按照設計準則進行精化與改進。

9.比較層次方框圖與結構圖是的異同?

(1)層次方框圖描繪資料的層次結構, 結構圖描繪的是軟體結構。 (2)二者都採用多層次矩形框樹形結構。層次方框圖的頂層矩形框代表完整的資料結構, 下面各層矩形框依次代表上個框資料的子集;結構圖是在層次圖的每一個方框內註明模組的名字或主要功能,方框之間的直線表示模組的呼叫關係,用帶註解的箭頭表示模組呼叫過程中傳遞的資訊。

10.欲開發一個銀行的活期存取款業務的處理系統:儲戶將填好的存/取款單和存摺交給銀行工作人員,然後由系統作以下處理;

(1)業務分類處理:系統首先根據儲戶所填的存/取款單,確定本次業務的性質,並將存/取款單和存摺交下一步處理; (2)存款處理:系統將存款單上的存款金額分別記錄在存摺和帳目檔案中,並將現金存入現金庫;最後將存摺還給儲戶; (3)取款處理:系統將取款單上的取款金額分別記錄在存摺和帳目檔案中,並從現金庫提取現金;最後將現金和存摺還給儲戶。

第五章 習題參考答案一.回答問題

1.詳細設計的目的?

為軟體結構圖(SC 圖或 HC 圖)中的每一個模組確定採用的演算法和塊內資料結構, 用某種選定的表達工具給出清晰的描述.

2.詳細設計的主要任務?

編寫軟體的“詳細設計說明書”.軟體人員要完成的工作:

(1)為每一個模組確定採用的演算法, 選擇某種適當的工具表達演算法的過程,寫出模組的詳細過程描述. (2)確定每一模組使用的資料結構. (3)確定模組結構的細節,包括對系統外部的介面和使用者介面,對系統內部其它模組的介面,以及關於模組輸入資料、輸出資料及區域性資料的全部細節. (4)為每一個模組設計出一組測試用例,以便在編碼階段對模組程式碼(即程式) 進行預定的測試.

3.結構化程式設計的基本原則?

在詳細設計中所有模組都使用單入口、單出口的順序、選擇、迴圈三種基本控制結構.

4.比較面向資料流和麵向資料結構兩類設計方法的異同?

相同點:

(1)遵守結構程式設計“由頂向下”逐步細化的原則,並以其為共同的基礎; (2)均服從“程式結構必須適應問題結構”的基本原則,各自擁有從問題結構 (包括資料結構)匯出程式結構的一組對映規則。

不同點:

(1)面向資料流的設計以資料流圖為基礎,在分析階段用 DFD 表示軟體的邏輯模型,在設計階段按資料流型別,將資料流圖轉換為軟體結構。面向資料結構的設計以資料結構為基礎,從問題的資料結構出發匯出它的程式結構。 (2)面向資料流的設計的最終目標是軟體的最終 SC 圖,面向資料結構的設計的最終目標是程式的過程性描述。

5.比較 Jackson 方法和 LCP 方法的異同?

Jackson 與 LCP 設計方法都是以資料結構為出發點,以程式的過程描述為最終目標,設計步驟基本相似。它們的主要差別是:

(1)使用不同的表達工具,其中 LCP 方法中的表達工具 Warnier 圖比 Jackson 設計方法中的表達工具 Jackson 圖有更大的通用性; (2)Jackson 方法的步驟和指導原則有一定的靈活性,而 LCP 設計方法則更加嚴密。

6.詳細設計的描述工具應具備什麼功能?

無論哪類描述工具不僅要具有描述設計過程,如控制流程、處理功能、資料組織及其它方面的細節的能力,而且在編碼階段能夠直接將它翻譯為用程式設計語言書寫的源程式。

第六章 習題參考答案

1.編碼的任務?

使用選定的程式設計語言,把模組的過程性描述翻譯為用語言書寫的源程式(原始碼)。

2.對源程式基本要求?

源程式要求:正確可靠、簡明清晰、效率高。

(1)源程式的正確性是對程式質量的最基本要求; (2)源程式的簡明清晰,便於驗證原始碼和模組規格說明的一致性,容易進行測試和維護; (3)對於大多數模組,編碼時應該把簡明清晰放在第一位; (4)除了編碼階段產生原始碼外,在測試階段也需要編寫一些測試程式,用於對軟體的測試。

3.程式設計語言的特點?

(1)名字說明:程式中使用物件的名字,能為編譯程式所檢查和識別; (2)型別說明:定義物件的型別,確定該物件的使用方式; (3)初始化:為變數提供適當的初始值或由系統給變數賦一特殊的表明未初始化的值; (4)物件的區域性性:程式中真正需要的那部分才能訪問的物件; (5)程式模組:控制程式物件的名字; (6)迴圈控制結構:如 FOR 語句、WHILE-DO 語句、REPEAT-UNTIL 語句等; (7)分支控制結構:如 IF 語句、CASE 語句等; (8)異常處理:為程式執行過程中發生的錯誤和意外事件提供檢測和處理上的幫助; (9)獨立編譯:能分別編譯各個程式單元。

4.選擇程式設計語言需要考慮的因素?

(1)選擇使用者熟悉、便於使用者維護的語言。 (2)選擇目標系統的環境中可以提供的編譯程式所能選用的語言。 (3)選擇可以得到的軟體工具,能支援程式開發中可以利用的語言。 (4)根據工程規模的大小、目標系統應用範圍,如實時應用選擇 Ada 語言或組合語言,系統軟體開發選擇 C 語言或組合語言,軟體開發中若含有大量資料操作則選擇 SQL、dBASE 等資料庫語言等。 (5)選擇程式設計師熟悉的語言。 (6)選擇標準化程度高、程式可移植性好的語言。 (7)根據演算法與計算的複雜性、資料結構的複雜性選擇。如對於系統程式和結構複雜的應用程式,選擇支援陣列、記錄(或結構)與指標動態資料結構的Pascal 語言或 C 語言。 (8)根據實時要求系統需要的響應速度和效率選擇相應的語言。

5.編碼風格的指導原則。

(1)源程式:包括適當的識別符號、適當的註解、程式清單的合理佈局與清晰; (2)資料說明:資料結構或資料型別的說明次序標準化;變數名稱儘量有意義;對複雜的資料結構在註解中要說明在程式設計中實現這個資料結構的方法。 (3)語句的構造簡單明瞭:不要為節省空間將多個語句寫在同一行;儘量避免複雜的條件及“非”條件的測試;避免大量使用迴圈巢狀和條件巢狀;括號的使用是為了使邏輯表示式和算術表示式的運算順序清晰直觀。 (4)效率:考慮程式執行的時間儲存器效率、輸入/輸出的效率;在處理程式正確性、清晰與效率之間的關係時先求程式正確後求快;先求清楚後求快;保持程式簡單以求快;書寫清楚,不為“效率”犧牲清晰。

6.第四代語言(4GL)應具備哪些的特徵?

(1)具有很強的資料管理能力,能對資料庫進行有效的存取、查詢和其它有關操作; (2)能提供一組高效的、非過程化的命令,組成語言的基本語句,程式設計時使用者只需用這些命令說明“做什麼”,不必描述實現的細節; (3)能滿足多功能、一體化的要求。為此,語言中除必須含有控制程式邏輯與實現資料庫操作的語句外,還應包括生成與處理報表、表格、圖形,以及實現資料運算和分析統計功能的各種語句,共同構成一個一體化的語言,以適應多種應用開發的需要。

第七章 習題參考答案

1.軟體測試的基本任務?

軟體測試是按照特定的規則,發現軟體錯誤的過程;好的測試方案是儘可能發現迄今尚 未發現錯誤的測試;成功的測試方案是發現迄今尚未發現錯誤的測試;

2.測試與除錯的主要區別?

(1)測試從一個側面證明程式設計師的失敗;除錯證明程式設計師的正確; (2)測試從已知條件開始,使用預先定義的程式,且有預知的結果,不可預見的僅是程式是否通過測試;除錯從不可知內部條件開始,除統計性除錯外,結果是不可預見的; (3)測試有計劃並且要進行測試設計;除錯不受時間約束; (4)測試是發現錯誤、改正錯誤、重新測試的過程;除錯是一個推理的過程; (5)測試執行是有規程的;除錯執行要求程式設計師進行必要的推理; (6)測試由獨立的測試組在不瞭解軟體設計的件下完成;除錯由瞭解詳細設計的程式設計師完成; (7)大多數測試的執行和設計可由工具支援;除錯用的工具主要是偵錯程式。

3.人工複審的方式和作用?

人工複審的方式:程式碼會審、走查和排練和辦公桌檢查; 人工複審的作用:檢查程式的靜態錯誤。

4.什麼是黑盒測試?黑盒測試主要採用的技術有哪些?

黑盒測試也稱為功能測試,它著眼於程式的外部特徵,而不考慮程式的內部邏輯結構。測試者把被測程式看成一個黑盒,不用關心程式的內部結構。黑盒測試是在程式介面處進行測試,它只檢查程式功能是否能按照規格說明書的規定正常使用,程式是否能適當地接收輸入資料產生正確的輸出資訊,並且保持外部資訊(如資料庫或檔案)的完整性。 黑盒測試主要採用的技術有:等價分類法、邊沿值分析法、錯誤推測法和因果圖等技術。

5.什麼是白盒測試?白盒測試主要採用的技術有哪些?

測試者瞭解被測程式的內部結構和處理過程,對程式的所有邏輯路徑進行測試,在不同點檢查程式狀態,確定實際狀態與預期狀態是否一致。 白盒測試主要採用的技術有:路徑測試技術和事務處理流程技術,對包含有大量邏輯判斷或條件組合的程式採用基於邏輯的測試技術。

6.路徑測試技術中幾種主要覆蓋的含義?舉例說明? 語句覆蓋:至少執行程式中所有語句一次。

判定覆蓋:使被測程式中的每一個分支至少執行一次。故也稱為分支覆蓋。條件覆蓋:執行所有可能的穿過程式的控制路流程。 條件組合測試:設計足夠的測試用例,使每個判定中的所有可能條件取值組合至少執行一次。

7.等價分類法的測試技術採用的一般方法?舉例說明?

(1)為每個等價類編號; (2)設計一個新的測試方案,以儘可能多的覆蓋尚未被覆蓋的有效等價類,重複這一步驟,直到所有有效等價類被覆蓋為止。 (3)設計一個新的測試方案,使它覆蓋一個尚未被覆蓋的無效等價類, 重複這一步驟,直到所有無效等價類被覆蓋為止。

8.軟體測試的一般步驟?

單元測試、子系統測試、系統測試、驗收測試、平行測試。

9.比較整合試的兩種方式的優劣?

非漸增式測試方式:分別測試模組,再把所有模組按設計要求放在一起組成所要的程式。該方法編寫測試軟體工作量大,模組間的介面錯誤發現得晚,錯誤定位較難診斷,總體測試有的錯誤容易漏掉,測試時間相對較少,可以並行測試所有模組,能充分利用人力,加快工程進度。。 漸增式測試方式:把下一個要測試的模組,同已經測試好的那些模組結合起來進行測試。該方法利用已測試過的模組作測試軟體,開銷小,較早發現模組間的介面錯誤,錯誤定位往往和最近入的模組相關,對已測試好的模組可在新加入模組的條件下受到新的檢驗,測試更徹底,需要較多的測試時間,不能並行測試。 總的來說,漸增式測試方法比較好。

10.軟體測試的策略?

(1)在任何情況下都應使用邊界值分析的方法。 (2)必要時用等價類劃分法補充測試方案。 (3)必要時再用錯誤推測法補充測試方案。 (4)對照程式邏輯,檢查已設計出的測試方案。 (5)根據對程式可靠性的要求採用不同的邏輯覆蓋標準,再補充一些測試方案。二.某電力公司有 A、B、C、D 共四類收費標準,並規定,居民用電每月 200 度以下按 A類收費, 200 度以上按 B 類收費。動力電以每月 1 萬度為分界,非高峰用電不足 1 萬度按 B 類收費,達到或超過 1 萬度按 C 類收費。高峰用電不足 1 萬度按 C 類收費,達到或超過 1 萬度按 D 類收費。試用基於邏輯的測試方法為它設計足夠的測試用例實現條件組合的完全覆概。

第八章 軟體維護 習題答案

1.為什麼說軟體的維護是不可避免的?

因為軟體的開發過程中,一般很難檢測到所有的錯誤,其次軟體在應用過程中需要隨使用者新的要求或執行環境的變化而進行軟體的修改或完成功能的增刪等,為了提高軟體的應用水平和使用壽命,軟體的維護是不可避免的。

2.軟體的維護一般分為哪幾類?

改正性維護:滿足使用者對已開發產品的效能與執行環境不斷提高的要求,進而達到延長軟體壽命的目的。 適應性維護:對程式使用期間發現的程式錯誤進行診斷和改正的過程,配合變化了的環境進行修改軟體的活動; 完善性維護:滿足使用者在使用過程中提出增加新的功能或修改已有功能的建議而進行的工作; 預防性維護:為了改善未來的可維護性或可靠性而修改軟體的工作。

3.影響軟體維護的因素有哪些?

開發方法:採用模組化詳細設計文件有助於理解軟體的結構、介面功能和內部流程;開發過程中嚴格而科學的管理規劃及清晰可靠的文件資料對發生錯誤後的理解與糾錯是至關重要的;開發過程中模組的獨立程度越高,對軟體修改越容易,對軟體的改進和移植越方便。 開發條件:軟體開發及維護人員的水平決定了軟體開發的質量和維護的效率;開發過程中使用標準的程式設計語言和標準的作業系統介面,可以大大提高軟體的可維護性;在測試過程中用例的有效性,可極大地減少軟體存在的錯誤; 其次使用規範化的文件資料可為維護提供更好的依據。

4.軟體維護困難主要表現在什麼方面?

(1)一般來講,維護人員對開發人員寫的程式及文件,理解都比較困難,對維護工作不會喜歡; (2)維護持續時間都很長,在開發人員不在現場的輕快下,維護軟體通常是很困難的; (3)絕大多數軟體在設計時對將來的軟體修改都沒有考慮或考慮不多,尤其未能在設計中強調並認真解決好模組的獨立性,使軟體的修改既困難又易發生差錯。

5.決定軟體可維護性的因素?

(1)軟體的可理解性、可測試性、可修改性; (2)文件描述符合要求、使用者文件簡潔明確、系統文件完整並且標準。

6.軟體價格應該計入維護成本嗎?為什麼?

在軟體的生命週期中,軟體維護的工作量非常大,不同應用領域的維護成本差別也很大。一般大型軟體的維護成本遠遠高於開發成本若干倍。因此軟體價格中應該計入維護成本。

7.對前面各章中分析的各應用系統,提出改進和擴充功能的要求?

(1)教材銷售採購系統; (2)圖書管理系統; (3)房產管理系統。

第九章 軟體工程管理 習題答案

1.軟體工程管理的內容?

(1)費用管理: 對軟體開發進行成本核算,使軟體生產按照商品生產的規律辦事。包括:以簡單、科學方法估算軟體開發費用,作為簽定開發合同的根據;管理開發費用的有效使用,即用經濟手段來保證產品如期按質完成。 (2)質量管理: 按專案的質量保證計劃,確保各個開發階段的開發和維護工作全部按軟體工程的規範進行,保證軟體產品的質量。 (3)配置管理:通過對於程式、文件和資料的各種版本所進行的管理,保證資料的完整性與一致性。 (4)專案管理:制定《專案實施計劃》,按照計劃的內容組織和實施軟體的工程化生產。最終目標是以合理的費用和進度,圓滿完成計劃所規定的軟體專案。

2.軟體專案有哪些特點?

(1)軟體專案與其他任何產業專案不同,它是演算法、思想、概念、組織、流程、效率、優化等的融合體; (2)開發軟體專案產品,在多數情況下,使用者給不出明確的想法和要求。 (3)在開發過程中,程式及其相關的文件資料常常需要修改,在修改過程中又可能帶來新的問題,且這些問題要在很久以後才會發現。 (4)在研製開發過程中,文件資料是不可缺少的,但工作量又是巨大的,往往也是人們不願去作的。 (5)參加軟體專案的工作人員,要求具有一定的業務水平和實際工作經驗, 而很難完全避免的人員流動,對工作的影響是很大的。離開的人員不僅帶走了重要的資訊,而且帶走了工作經驗。

3.軟體成本估算的一般方法?

自頂向下估計: 首先估算出專案總的開發成本,然後在專案內部進行成本分配。由少數專家參與,依靠他們過去的經驗,將要開發的軟體與過去開發過的軟體進行"類比",以估計新的軟體開發所需要的工作量和成本。 自底向上估計: 將開發任務分成若干子任務,子任務又分成子子任務,直到每一個單元內容足夠明確為止;把各個任務單元的成本估計出來,匯合成專案的總成本。該方法得到的結果比較接近實際。

4.為什麼在軟體開發中,不能用簡單增加人員的方法來縮短開發時間?

大量軟體開發實踐說明:向一個已經延遲的專案追加開發人員,可能使它完成得更晚。因為當開發人員以算術級數增長時,而人員之間的通訊將以幾何級數增長,往往"得不償失"。

5.影響軟體質量的主要因素有哪些?

(1)產品執行:正確性、風險性、效率、完整性、健壯性和可用性; (2)產品修改:可理解性、可維護性、靈活性、可測試性; (3)產品轉移:可移植性、可重用性和互執行性。

第十章 軟體工程環境 習題答案

1.軟體工具是什麼?按照軟體生存週期可將其分為幾類?

軟體工具是指為支援計算機軟體及其文件的開發、維護、模擬、移植或管理而研製的程式系統。按照軟體生存週期可將其分為如下幾類:

(1)需求分析:如資料流圖繪製與分析工具、狀態轉換圖繪製與分析工具、 物件導向的模型和分析工具、快速原型構造工具、資料字典與資料庫工具等。 (2)軟體設計:如 HIPO 圖、PDL(程式設計語言)或 PAD(問題分析圖)支援工具等。 (3)編碼:整合化的程式設計師工作平臺。如各種正文編輯器和常規的編譯程式、 彙編程式、連結程式及符號偵錯程式等。 (4)軟體測試:如靜態分析器、動態覆蓋率測試器、測試用例生成器、測試報告生成器及環境模擬器等。 (5)軟體維護:如反彙編程式、反編譯程式、程式結構分析器、源程式格式化工具、文件生成工具、源程式至 PAD(問題分析圖)或流程圖的自動轉換工具等。

2.評價軟體工具的原則?

(1)易用性:友好的使用者介面,使用者樂於使用; (2)對開發方法的支援:能滿足預期的任務和功能需求,且能支援完成該任務所遵循的方法學; (3)穩健性:具備自檢測機制,即使在故障情況下也不會導致嚴重後果; (4)效能:能使資源得到充分有效的利用; (5)工具結構柔性:工具結構是柔軟的、可修改的和可擴充的。

3.什麼是軟體開發環境?按技術發展方向分為哪幾類環境?

將一組相關的軟體工具按照一定的軟體開發方法、軟體生產和維護模型有機的組合起來,為特定的領域所使用,以支援從需求分析、設計、編碼、測試直到維護的整個軟體生命週期的計算機輔輔助開發程式系統稱為軟體開發環境。 按技術發展方向軟體開發環境可分為以語言為中心的環境、面向結構化的環境和工具箱環境。

4.工具箱類軟體工具的基本特點?

(1)在某種 OS 基礎上通過一組小的實用工具構成; (2)雖然各工具之間相互獨立,但系統能提供統一的使用者命令介面及工具之間統一的資料交換方式; (3)工具箱中各工具之間是相互獨立的,使用者可根據需要進行靈活的增加和裁減; (4)工具箱環境中一般除了包括支援編碼階段的工具(如編輯程式、編譯程式、彙編程式、連結程式除錯程式等)外,還可包括支援大型軟體開發方面的工具; (5)由於工具箱環境具有較強的通用性和靈活性,因而目前商品化的算機繫系統上配置的軟體環境大多屬於這一類。如:UNIX 程式設計環境、及 VAX/VNS SET、PCDE、APCE 等程式設計環境。

5.軟體開發環境的組成與各成分的作用?

軟體開發環境的構成:互動式人機介面、工具集及軟體環境資料庫。 互動式人機介面:人機介面(也稱使用者介面或人機對話)是使用者與計算機系統之間相互交流的中間媒介。 工具集:工具集中軟體工具是構成軟體開發環境的基本成分。包含在軟體開發環境中的工具不是各自封閉和分離的,而是與某種軟體開發方法或某種軟體加工模型相適應,並以一種綜合的、一致的和整體連貫的形態來支援軟體開發的全過程。 軟體環境資料庫:是各個軟體工具之間共享資料及相互連結的統一媒介。

6.軟體開發環境資料庫在軟體開發中的作用?

軟體環境資料庫是用於支援軟體專案的大型資料庫;軟體環境資料庫中主要儲存軟體開發過程中產生的有關產品或半成品的資料及各種專案資料,如源程式、測試資料和各種文件等,它構成軟體開發和維護過程中所有專案資料的集中化的儲存設施,是整合化軟體開發環境的核心組成部分,也是各個軟體工具之間共享資料及相互連結的統一媒介。

7.整合化專案支援環境 IPSE 的主要特徵是什麼?

(1)整合化和相互相容的工具集; (2)支援專案的管理和控制; (3)支援配置管理; (4)支援多種語言的軟體開發; (5)支援硬體開發; (6)允許宿主機和目標機使用分散式系統。

8.CASE 的含義是什麼?

CASE 是計算機輔助軟體工程的簡稱。簡單的說,可以將 CASE 理解為: CASE= 軟體工程+自動化工具.從狹義角度解釋它是一組工具和方法的結合;從廣義角度解釋它是輔助軟體開發的任何計算機技術;從學術研究角度解釋:它是軟體開發方法、軟體開發管理和軟體工具等方面多年研究和發展的產物;從軟體產業角度解釋它是種類繁多的軟體開發和系統整合的產品和軟體工具的集合。

9.CASE 工具一般分為幾類?有什麼區別?

CASE 工具可以理解為除 OS 外的所有軟體工具的總稱。按對軟體過程的支援範圍 CASE 工具分為三類:一是工具: 支援單個任務;二是工作臺:支援某一軟體過程或一個過程中的某些活動;三是環境:支援某些軟體過程及相關的大部分活動。

10.工作臺實現軟體工具整合的方式?

工作臺實現軟體工具整合的方式是通過共享檔案、共享倉庫或共享資料結構來整合。

相關文章