軟件工程導論-張海藩(第五版)課后習題答桉_第1頁
軟件工程導論-張海藩(第五版)課后習題答桉_第2頁
軟件工程導論-張海藩(第五版)課后習題答桉_第3頁
軟件工程導論-張海藩(第五版)課后習題答桉_第4頁
軟件工程導論-張海藩(第五版)課后習題答桉_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

.PAGE1.《軟件工程導論》課后習題答案第一章軟件工程概論森1.什么是軟件危機?軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。這些問題表現(xiàn)在以下幾個方面:<1>用戶對開發(fā)出的軟件很難滿意。<2>軟件產品的質量往往靠不住。<3>一般軟件很難維護。<4>軟件生產效率很低。<5>軟件開發(fā)成本越來越大。<6>軟件成本與開發(fā)進度難以估計。<7>軟件技術的發(fā)展遠遠滿足不了計算機應用的普及與深入的需要。2.為什么會產生軟件危機?<1>開發(fā)人員方面,對軟件產品缺乏正確認識,沒有真正理解軟件產品是一個完整的配置組成。造成開發(fā)中制定計劃盲目、編程草率,不考慮維護工作的必要性。<2>軟件本身方面,對于計算機系統(tǒng)來說,軟件是邏輯部件,軟件開發(fā)過程沒有統(tǒng)一的、公認的方法論和規(guī)范指導,造成軟件維護困難。<3>尤其是隨著軟件規(guī)模越來越大,復雜程度越來越高,原有軟件開發(fā)方式效率不高、質量不能保證、成本過高、研制周期不易估計、維護困難等一系列問題更為突出,技術的發(fā)展已經(jīng)遠遠不能適應社會需求。3.怎樣克服軟件危機?<1>充分吸收和借鑒人類長期以來從事各種工程項目中積累的行之有效的有效原理、概念、技術與方法,特別是吸取幾十年來人類從事計算機硬件研究和開發(fā)的經(jīng)驗教訓。在開發(fā)軟件的過程中努力作到良好的組織,嚴格的管理,相互友好的協(xié)作。<2>推廣在實踐中總結出來的開發(fā)軟件的成功的技術和方法,并研究更好、更有效的技術和方法,盡快克服在計算機系統(tǒng)早期發(fā)展階段形成的一些錯誤概念和作法。<3>根據(jù)不同的應用領域,開發(fā)更好的軟件工具并使用這些工具。將軟件開發(fā)各個階段使用的軟件工具集合成一個整體,形成一個很好的軟件開發(fā)支環(huán)環(huán)境。總之為了解決軟件危機,既要有技術措施<方法和工具>,又要有必要的組織管理措施。4.構成軟件項目的最終產品:應用程序、系統(tǒng)程序、面向用戶的文檔資料和面向開發(fā)者的文檔資料。5.什么是軟件生存周期?軟件生存周期是指從軟件定義、開發(fā)、使用、維護到淘汰的全過程。6.軟件生存周期為什么劃分成階段?<1>任何一個階段的具體任務不僅獨立,而且簡單,便于不同人員分工協(xié)作,從而降低整個軟件開發(fā)工作的困難程度。<2>可以降低每個階段任務的復雜程度,簡化不同階段的聯(lián)系,有利于工程的組織管理,也便于采用良好的技術方法。<3>使軟件開發(fā)的全過程以一種有條不紊的方式進行,保證軟件的質量,特別是提高了軟件的可維護性。7.應該怎樣來劃分階段?<1>每一個階段的任務盡可能獨立;<2>同一階段內的任務性質盡可能相同;<3>每一個階段任務的開始和結束有嚴格的標準。8.軟件開發(fā)模型有幾種?它們的開發(fā)方法有可特點?軟件開發(fā)模型有瀑布型、漸增型和變換型。瀑布型開發(fā)方法是按照軟件生存周期的劃分依次實施,每一個階段有明確規(guī)定的任務。它的特點:<1>各個階段的順序性和依賴性;<2>劃分邏輯設計與物理設計,盡可能推遲程序的物理實現(xiàn);<3>每個階段必須完成規(guī)定的文檔,對其中問題通過復審及早發(fā)現(xiàn),及早解決。漸增型開發(fā)方法及特點:<1>從部分需求出發(fā),先建立一個不完全的系統(tǒng),通過測試運行該系統(tǒng)取得經(jīng)驗和信息反饋,加深對軟件需求的理解,進一步使系統(tǒng)擴充和完善。如此反復,直至軟件人員和用戶對所設計完成的軟件系統(tǒng)滿意為止。<2>在漸增型開發(fā)下的軟件是隨軟件開發(fā)的過程而逐漸形成的。<3>漸增型開發(fā)方法適合于知識型軟件的開發(fā),設計系統(tǒng)時對用戶需求的認識開始不是很清楚的,需要在開發(fā)過程中不斷認識、不斷獲得新的知識去豐富和完善系統(tǒng)。多數(shù)研究性質的試驗軟件,一般采用此方法。變換型開發(fā)方法及特點:<1>從軟件需求的形式化規(guī)格說明出發(fā),經(jīng)過一系列的程序變換,得到最終的程序系統(tǒng)。<2>該方法必須有嚴格的數(shù)學理論和形式化技術的支持。9.什么是軟件工程?軟件工程是指導計算機軟件開發(fā)和維護的工程學科。<1>它采用工程的概念、原理、技術和方法來開發(fā)和維護軟件;<2>它將管理技術與當前經(jīng)過時間考驗的而證明是正確的技術方法結合起來;<3>它強調使用生存周期方法學和結構分析和結構技術;<4>經(jīng)過人們長期的努力和探索,圍繞著實現(xiàn)軟件優(yōu)質高產這個目標,從技術到管理兩個方面做了大量的努力,逐漸形成了"軟件工程學"這一新的學科。10.什么是軟件工程環(huán)境:方法與工具的結合,加上配套的軟、硬件支持稱為軟件工程環(huán)境。它能支持開發(fā)者按照軟件工程的方法,全面完成生存周期中的各項任務。第二章可行性研究習題答案1.問題定義的任務和主要工作?問題定義的任務:將用戶提出的要求具體化、定量化;確定研制系統(tǒng)的范圍,明確研制的邊界。問題定義階段的工作:<1>通過調查研究,了解系統(tǒng)需求;<2>確定系統(tǒng)的功能需求、性能需求、可靠性需求、安全及保密性、資源、開發(fā)費用及開發(fā)進度等的需求;<3>問題定義階段的產品--系統(tǒng)目標與范圍說明書。2.可行性研究目的?確定在問題定義中所提出的問題是否值得去解,在限制條件下,問題能否解決。3.可行性研究的任務?<1>進一步分析和澄清問題的定義,在澄清問題的基礎上,導出系統(tǒng)的邏輯模型;<2>從系統(tǒng)邏輯模型中,選擇問題的若干種主要解法,研究每一種解法的可行性,為以后的行動提出建議;<3>如果問題沒有可行的解,建議停止系統(tǒng)開發(fā);如果問題有可行的解,應該推薦一個較好的解決方案,并為工程制定一個初步的計劃。4.可行性研究包括哪幾方面的內容?<1>技術可行性:現(xiàn)有技術能否實現(xiàn)本系統(tǒng),現(xiàn)有技術人員能否勝任,開發(fā)系統(tǒng)的資源能否滿足;<2>經(jīng)濟可行性:經(jīng)濟效益是否超出開發(fā)成本;<3>操作可行性:系統(tǒng)操作在用戶內部行得通嗎?<4>法律可行性:新系統(tǒng)開發(fā)是否會侵犯他人、集體或國家利益,是否違反國家法律。5.可行性研究的步驟?<1>復查系統(tǒng)的規(guī)模和目標;<2>研究目前正在使用的系統(tǒng),總結現(xiàn)有系統(tǒng)的優(yōu)劣,提出新系統(tǒng)的雛形;<3>導出新系統(tǒng)的高層邏輯模型;<4>推薦建議方案;<5>推薦行動方針;<6>書寫計劃任務書<可行性報告>;<7>提交審查。6.可行性研究報告的主要內容?可行性分析的結果是可行性研究報告,內容包括:<1>系統(tǒng)概述:說明開發(fā)的系統(tǒng)名稱,提出單位和開發(fā)單位。<2>可行性研究的前提:系統(tǒng)目標;要求;約束和限制;可行性研究的基本準則等。<3>對現(xiàn)有系統(tǒng)的分析:處理流程,圖示說明現(xiàn)有系統(tǒng)的處理流程和數(shù)據(jù)流程;現(xiàn)有系統(tǒng)存在的問題。<4>系統(tǒng)需求:主要功能;主要性能及其要求;操作要求;信息要求;限制性要求。<5>建議系統(tǒng):系統(tǒng)目標;處理流程;系統(tǒng)結構,功能,性能;系統(tǒng)技術可行性;投資和效益分析;操作可行性;法律可行性。<6>其它可選方案:與國內外同類型方案的比較;提出一兩個可行性方案供論證和探討。<7>制定下一階段的預算。<8>結論性意見:由用戶方、設計方和投資方共同簽署意見。第三章需求分析習題答案1.需求分析的描述工具有哪些?有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定表、判定樹、結構化自然語言、層次方框圖、Warnier圖、IPO圖和需求描述語言等。2.需求分析的基本任務是什么?準確定義未來系統(tǒng)的目標,確定為了滿足用戶的需要系統(tǒng)必須做什么。3.怎樣建立目標系統(tǒng)的邏輯模型?要經(jīng)過哪些步驟?建立目標系統(tǒng)的邏輯模型的過程也就是數(shù)據(jù)流圖的分解過程。它的導出過程如圖:4.什么是結構化分析?它的結構化體現(xiàn)在哪里?結構化分析:使用數(shù)據(jù)流程圖、數(shù)據(jù)字典、結構化英語、判定表和判定樹等工具,來建立一種新的、稱為結構化說明書的目標文檔-需求規(guī)格說明書。結構化體現(xiàn)在將軟件系統(tǒng)抽象為一系列的邏輯加工單元,各單元之間以數(shù)據(jù)流發(fā)生關聯(lián)。5.軟件需求規(guī)格說明書由哪些部分組成?組成包括:<1>引言:編寫目的、背景說明、術語定義及參考資料等。<2>概述主要功能、約束條件或特殊需求。<3>數(shù)據(jù)流圖與數(shù)據(jù)字典。<4>用戶接口、硬件接口及軟件接口。<5>性能需求、屬性等。<6>其它需求,如數(shù)據(jù)庫、操作及故障處理等。6.為什么數(shù)據(jù)流圖要分層?畫分層的DFD要遵循哪些原則?分層的目的:便于逐步細化、結構清晰。畫分層的DFD要遵循哪些原則:<1>父圖與子圖之間數(shù)據(jù)要平衡。<2>分解的深度和層次達到使加工足夠簡單、易于理解的基本加工為止。<3>區(qū)分局部文件和局部外部項<局限于數(shù)據(jù)流中某一層或某幾層的文件和外部項>。<4>不要把控制流作為數(shù)據(jù)流。<5>忽略瑣碎的枝節(jié)。<6>每個數(shù)據(jù)流要有一個合適的名字,盡量使用現(xiàn)實系統(tǒng)中有具體意義的名字。7.系統(tǒng)流程圖與數(shù)據(jù)流程圖有什么區(qū)別?系統(tǒng)流程圖描述系統(tǒng)物理模型的工具,數(shù)據(jù)流程圖描述系統(tǒng)邏輯模型的工具。系統(tǒng)流程圖從系統(tǒng)功能的角度抽象的描述系統(tǒng)的各個部分及其相互之間信息流動的情況。數(shù)據(jù)流程圖從數(shù)據(jù)傳送和加工的角度抽象的描述信息在系統(tǒng)中的流動和數(shù)據(jù)處理的工作狀況。8.數(shù)據(jù)字典包括哪些內容?它的作用是什么?數(shù)據(jù)字典是描述數(shù)據(jù)流圖中數(shù)據(jù)的信息的集合。它對數(shù)據(jù)流圖上每一個成分:數(shù)據(jù)項、文件<數(shù)據(jù)結構>、數(shù)據(jù)流、數(shù)據(jù)存儲、加工和外部項等給以定義和說明;它主要由數(shù)據(jù)流描述、加工描述和文件描述三部分組成。對用戶來講,數(shù)據(jù)字典為他們提供了數(shù)據(jù)的明確定義;對系統(tǒng)分析員來講,數(shù)據(jù)字典幫助他們比較容易修改已建立的系統(tǒng)邏輯模型。9.描述加工邏輯的工具有哪些?有決策樹<又稱判定樹>、決策表<又稱判斷表>和結構化語言等。10.某單位擬開發(fā)一個計算機房產管理系統(tǒng),要求系統(tǒng)具有分房、調房、退房和查詢統(tǒng)計等功能。房產科將用戶申請表輸入系統(tǒng)后,系統(tǒng)首先檢查申請表的合法性,對不合法的申請表,系統(tǒng)拒絕接收;對合法的申請表根據(jù)類型分別進行處理。<1>如果是分房申請,則根據(jù)申請者的情況<年齡、工齡、職稱、職務、家庭人口等>計算其分數(shù),當分數(shù)高于閥值分數(shù)時,按分數(shù)高低將申請單插到分房隊列的適當位置。在進行分房時,從空房文件中讀出空房信息,如房號、面積、等級、單位面積房租等,把好房優(yōu)先分給排在分房隊列前面的符合該等級房條件的申請者;從空房文件中刪掉這個房號的信息,并從分房隊列中刪掉該申請單,再把此房號的信息和住戶信息一起寫到住房文件中,輸出住房分配單給住戶,同時計算房租,并將算出的房租寫到房租文件中。<2>如果是退房申請,則從住房文件和房租文件中刪除有關信息,再把此房號的信息寫到空房文件中。<3>如果是調房申請,則根據(jù)申請者的情況確定其住房等級,然后在空房文件中查找屬于該等級的空房,退掉原住房,再進行與分房類似的處理。<4>住戶可以向系統(tǒng)查詢目前分房的閥值分數(shù),居住某類房屋的條件,某房號的單位面積及房租等信息。房產科可以要求系統(tǒng)打印住房情況的統(tǒng)計表,或更改某類房屋的居住條件、單位面積和房租等。用數(shù)據(jù)流圖描繪該系統(tǒng)的功能需求;在數(shù)據(jù)字典中給出主要的數(shù)據(jù)流、文件和加工說明。參考第四章4.5應用舉例教案之二分析。第四章總體設計習題答案1.系統(tǒng)設計包括哪兩個階段?系統(tǒng)設計包括總體設計與詳細設計兩個階段。2.總體設計的主要任務是什么?總體設計的主要任務是完成軟件結構的設計,確定系統(tǒng)的模塊及其模塊之間的關系。3.什么是模塊?模塊具有哪幾個特征?總體設計主要考慮什么特征?模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序對象的集合,可以單獨命名且可通過名字來訪問。模塊具有輸入和輸出<參數(shù)傳遞>、功能、內部數(shù)據(jù)結構<局部變量>和程序代碼四個特性。概要設計主要考慮輸入、輸出<參數(shù)傳遞>和功能兩個特性。4.什么是模塊化?模塊設計的準則?模塊化是按規(guī)定的原則將一個大型軟件劃分為一個個較小的、相對獨立但又相關的模塊。模塊設計的準則:<1>改進軟件結構,提高模塊獨立性:在對初步模塊進行合并、分解和移動的分析、精化過程中力求提高模塊的內聚,降低藕合。<2>模塊大小要適中:大約50行語句的代碼,過大的模塊應分解以提高理解性和可維護性;過小的模塊,合并到上級模塊中。<3>軟件結構圖的深度、寬度、扇入和扇出要適當。一般模塊的調用個數(shù)不要超過5個。<4>盡量降低模塊接口的復雜程度;<5>設計單入口、單出口的模塊。<6>模塊的作用域應在控制域之內。5.變換型數(shù)據(jù)流由哪幾部分組成?變換型結構由三部分組成:傳入路徑、變換<加工>中心和傳出路徑。6.變換分析設計的步驟?<1>區(qū)分傳入、傳出和變換中心三部分,劃分DFD圖的分界線;<2>完成第一級分解:建立初始SC圖的框架;<3>完成第二級分解:分解SC圖的各個分支;<4>對初始結構圖按照設計準則進行精化與改進。7.事務型數(shù)據(jù)流由哪幾部分組成?事務型結構由至少一條接受路徑、一個事務中心與若干條動作路徑組成。8.事務分析設計的步驟?<1>在DFD圖中確定事務中心、接收部分<包含全部接收路徑>和發(fā)送部分<包含全部動作路徑>;<2>畫出SC圖框架,把DFD圖的三部分分?quot;映射"為事務控制模塊,接收模塊和動作發(fā)送模塊.一般得到SC圖的頂層和第一層<如果第一層簡單可以并入頂層>;<3>分解和細化接收分支和動作分支,完成初始的SC圖;<4>對初始結構圖按照設計準則進行精化與改進。9.比較層次方框圖與結構圖是的異同?<1>層次方框圖描繪數(shù)據(jù)的層次結構,結構圖描繪的是軟件結構。<2>二者都采用多層次矩形框樹形結構。層次方框圖的頂層矩形框代表完整的數(shù)據(jù)結構,下面各層矩形框依次代表上個框數(shù)據(jù)的子集;結構圖是在層次圖的每一個方框內注明模塊的名字或主要功能,方框之間的直線表示模塊的調用關系,用帶注解的箭頭表示模塊調用過程中傳遞的信息。10.欲開發(fā)一個銀行的活期存取款業(yè)務的處理系統(tǒng):儲戶將填好的存/取款單和存折交給銀行工作人員,然后由系統(tǒng)作以下處理;<1>業(yè)務分類處理:系統(tǒng)首先根據(jù)儲戶所填的存/取款單,確定本次業(yè)務的性質,并將存/取款單和存折交下一步處理;<2>存款處理:系統(tǒng)將存款單上的存款金額分別記錄在存折和帳目文件中,并將現(xiàn)金存入現(xiàn)金庫;最后將存折還給儲戶;<3>取款處理:系統(tǒng)將取款單上的取款金額分別記錄在存折和帳目文件中,并從現(xiàn)金庫提取現(xiàn)金;最后將現(xiàn)金和存折還給儲戶。繪制該系統(tǒng)的數(shù)據(jù)流圖和軟件結構圖。頂層一層二層軟件結構圖第五章習題參考答案一.回答問題1.詳細設計的目的?為軟件結構圖<SC圖或HC圖>中的每一個模塊確定采用的算法和塊內數(shù)據(jù)結構,用某種選定的表達工具給出清晰的描述.2.詳細設計的主要任務?編寫軟件的"詳細設計說明書".軟件人員要完成的工作:<1>為每一個模塊確定采用的算法,選擇某種適當?shù)墓ぞ弑磉_算法的過程,寫出模塊的詳細過程描述.<2>確定每一模塊使用的數(shù)據(jù)結構.<3>確定模塊結構的細節(jié),包括對系統(tǒng)外部的接口和用戶界面,對系統(tǒng)內部其它模塊的接口,以及關于模塊輸入數(shù)據(jù)、輸出數(shù)據(jù)及局部數(shù)據(jù)的全部細節(jié).<4>為每一個模塊設計出一組測試用例,以便在編碼階段對模塊代碼<即程序>進行預定的測試.3.結構化程序設計的基本原則?在詳細設計中所有模塊都使用單入口、單出口的順序、選擇、循環(huán)三種基本控制結構.4.比較面向數(shù)據(jù)流和面向數(shù)據(jù)結構兩類設計方法的異同?相同點:<1>遵守結構程序設計"由頂向下"逐步細化的原則,并以其為共同的基礎;<2>均服從"程序結構必須適應問題結構"的基本原則,各自擁有從問題結構<包括數(shù)據(jù)結構>導出程序結構的一組映射規(guī)則。不同點:<1>面向數(shù)據(jù)流的設計以數(shù)據(jù)流圖為基礎,在分析階段用DFD表示軟件的邏輯模型,在設計階段按數(shù)據(jù)流類型,將數(shù)據(jù)流圖轉換為軟件結構。面向數(shù)據(jù)結構的設計以數(shù)據(jù)結構為基礎,從問題的數(shù)據(jù)結構出發(fā)導出它的程序結構。<2>面向數(shù)據(jù)流的設計的最終目標是軟件的最終SC圖,面向數(shù)據(jù)結構的設計的最終目標是程序的過程性描述。5.比較Jackson方法和LCP方法的異同?Jackson與LCP設計方法都是以數(shù)據(jù)結構為出發(fā)點,以程序的過程描述為最終目標,設計步驟基本相似。它們的主要差別是:<1>使用不同的表達工具,其中LCP方法中的表達工具Warnier圖比Jackson設計方法中的表達工具Jackson圖有更大的通用性;<2>Jackson方法的步驟和指導原則有一定的靈活性,而LCP設計方法則更加嚴密。6.詳細設計的描述工具應具備什么功能?無論哪類描述工具不僅要具有描述設計過程,如控制流程、處理功能、數(shù)據(jù)組織及其它方面的細節(jié)的能力,而且在編碼階段能夠直接將它翻譯為用程序設計語言書寫的源程序。二.給出一組數(shù)從小到大的排序算法,分別用下列工具描述其詳細過程:<1> <1>流程圖;<2>N—S圖;<3>PAD圖;<4>PDL語言。PDL語言略三.根據(jù)后面給出"卡片的分類及統(tǒng)計"項目說明,完成下列工作:<1>用Jackson圖表示輸入與輸出數(shù)據(jù)結構,找出它們之間的對應單元;<2>畫出用Jackson圖表示的程序結構;<3>列出程序所需用的操作,并加到上一步畫出的程序結構圖上;<4>用Jackson偽代碼寫出程序的過程表示。輸入卡片分析程序。一疊輸入卡片按內容分為K1、K2、K3三類,卡片的排列規(guī)則是:以K1卡始,以K2卡終。起始卡之前屬前置部分,不含K1卡;起始卡與終了卡之間屬分批部分,不含K2卡。如圖:試用Jackson方法編一程序,要求依次完成下列分析工作:統(tǒng)計起始卡前卡片的張數(shù),存入A;打印起始卡的內容;統(tǒng)計起始卡后出現(xiàn)的K1卡和K3卡總批數(shù),存入B;統(tǒng)計起始卡后出現(xiàn)的K1卡的張數(shù),存入C;統(tǒng)計起始卡后出現(xiàn)的K3卡的批數(shù),存入D;打印終了卡的內容;打印A、B、C、D四個統(tǒng)計值。程序的過程表示及偽代碼略第六章習題參考答案1.編碼的任務?使用選定的程序設計語言,把模塊的過程性描述翻譯為用語言書寫的源程序<源代碼>。2.對源程序基本要求?源程序要求:正確可靠、簡明清晰、效率高。<1>源程序的正確性是對程序質量的最基本要求;<2>源程序的簡明清晰,便于驗證源代碼和模塊規(guī)格說明的一致性,容易進行測試和維護;<3>對于大多數(shù)模塊,編碼時應該把簡明清晰放在第一位;<4>除了編碼階段產生源代碼外,在測試階段也需要編寫一些測試程序,用于對軟件的測試。3.程序設計語言的特點?<1>名字說明:程序中使用對象的名字,能為編譯程序所檢查和識別;<2>類型說明:定義對象的類型,確定該對象的使用方式;<3>初始化:為變量提供適當?shù)某跏贾祷蛴上到y(tǒng)給變量賦一特殊的表明未初始化的值;<4>對象的局部性:程序中真正需要的那部分才能訪問的對象;<5>程序模塊:控制程序對象的名字;<6>循環(huán)控制結構:如FOR語句、WHILE-DO語句、REPEAT-UNTIL語句等;<7>分支控制結構:如IF語句、CASE語句等;<8>異常處理:為程序運行過程中發(fā)生的錯誤和意外事件提供檢測和處理上的幫助;<9>獨立編譯:能分別編譯各個程序單元。4.選擇程序設計語言需要考慮的因素?<1>選擇用戶熟悉、便于用戶維護的語言。<2>選擇目標系統(tǒng)的環(huán)境中可以提供的編譯程序所能選用的語言。<3>選擇可以得到的軟件工具,能支持程序開發(fā)中可以利用的語言。<4>根據(jù)工程規(guī)模的大小、目標系統(tǒng)應用范圍,如實時應用選擇Ada語言或匯編語言,系統(tǒng)軟件開發(fā)選擇C語言或匯編語言,軟件開發(fā)中若含有大量數(shù)據(jù)操作則選擇SQL、dBASE等數(shù)據(jù)庫語言等。<5>選擇程序員熟悉的語言。<6>選擇標準化程度高、程序可移植性好的語言。<7>根據(jù)算法與計算的復雜性、數(shù)據(jù)結構的復雜性選擇。如對于系統(tǒng)程序和結構復雜的應用程序,選擇支持數(shù)組、記錄<或結構>與指針動態(tài)數(shù)據(jù)結構的Pascal語言或C語言。<8>根據(jù)實時要求系統(tǒng)需要的響應速度和效率選擇相應的語言。5.編碼風格的指導原則。<1>源程序:包括適當?shù)臉俗R符、適當?shù)淖⒔狻⒊绦蚯鍐蔚暮侠聿季峙c清晰;<2>數(shù)據(jù)說明:數(shù)據(jù)結構或數(shù)據(jù)類型的說明次序標準化;變量名稱盡量有意義;對復雜的數(shù)據(jù)結構在注解中要說明在程序設計中實現(xiàn)這個數(shù)據(jù)結構的方法。<3>語句的構造簡單明了:不要為節(jié)省空間將多個語句寫在同一行;盡量避免復雜的條件及"非"條件的測試;避免大量使用循環(huán)嵌套和條件嵌套;括號的使用是為了使邏輯表達式和算術表達式的運算順序清晰直觀。<4>效率:考慮程序運行的時間存儲器效率、輸入/輸出的效率;在處理程序正確性、清晰與效率之間的關系時先求程序正確后求快;先求清楚后求快;保持程序簡單以求快;書寫清楚,不為"效率"犧牲清晰。6.第四代語言<4GL>應具備哪些的特征?<1>具有很強的數(shù)據(jù)管理能力,能對數(shù)據(jù)庫進行有效的存取、查詢和其它有關操作;<2>能提供一組高效的、非過程化的命令,組成語言的基本語句,編程時用戶只需用這些命令說明"做什么",不必描述實現(xiàn)的細節(jié);<3>能滿足多功能、一體化的要求。為此,語言中除必須含有控制程序邏輯與實現(xiàn)數(shù)據(jù)庫操作的語句外,還應包括生成與處理報表、表格、圖形,以及實現(xiàn)數(shù)據(jù)運算和分析統(tǒng)計功能的各種語句,共同構成一個一體化的語言,以適應多種應用開發(fā)的需要。第七章習題參考答案一.回答問題1.軟件測試的基本任務?軟件測試是按照特定的規(guī)則,發(fā)現(xiàn)軟件錯誤的過程;好的測試方案是盡可能發(fā)現(xiàn)迄今尚未發(fā)現(xiàn)錯誤的測試;成功的測試方案是發(fā)現(xiàn)迄今尚未發(fā)現(xiàn)錯誤的測試;2.測試與調試的主要區(qū)別?<1>測試從一個側面證明程序員的失??;調試證明程序員的正確;<2>測試從已知條件開始,使用預先定義的程序,且有預知的結果,不可預見的僅是程序是否通過測試;調試從不可知內部條件開始,除統(tǒng)計性調試外,結果是不可預見的;<3>測試有計劃并且要進行測試設計;調試不受時間約束;<4>測試是發(fā)現(xiàn)錯誤、改正錯誤、重新測試的過程;調試是一個推理的過程;<5>測試執(zhí)行是有規(guī)程的;調試執(zhí)行要求程序員進行必要的推理;<6>測試由獨立的測試組在不了解軟件設計的件下完成;調試由了解詳細設計的程序員完成;<7>大多數(shù)測試的執(zhí)行和設計可由工具支持;調試用的工具主要是調試器。3.人工復審的方式和作用?人工復審的方式:代碼會審、走查和排練和辦公桌檢查;人工復審的作用:檢查程序的靜態(tài)錯誤。4.什么是黑盒測試?黑盒測試主要采用的技術有哪些?黑盒測試也稱為功能測試,它著眼于程序的外部特征,而不考慮程序的內部邏輯結構。測試者把被測程序看成一個黑盒,不用關心程序的內部結構。黑盒測試是在程序接口處進行測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)據(jù)產生正確的輸出信息,并且保持外部信息<如數(shù)據(jù)庫或文件>的完整性。黑盒測試主要采用的技術有:等價分類法、邊沿值分析法、錯誤推測法和因果圖等技術。5.什么是白盒測試?白盒測試主要采用的技術有哪些?測試者了解被測程序的內部結構和處理過程,對程序的所有邏輯路徑進行測試,在不同點檢查程序狀態(tài),確定實際狀態(tài)與預期狀態(tài)是否一致。白盒測試主要采用的技術有:路徑測試技術和事務處理流程技術,對包含有大量邏輯判斷或條件組合的程序采用基于邏輯的測試技術。6.路徑測試技術中幾種主要覆蓋的含義?舉例說明?語句覆蓋:至少執(zhí)行程序中所有語句一次。判定覆蓋:使被測程序中的每一個分支至少執(zhí)行一次。故也稱為分支覆蓋。條件覆蓋:執(zhí)行所有可能的穿過程序的控制路流程。條件組合測試:設計足夠的測試用例,使每個判定中的所有可能條件取值組合至少執(zhí)行一次。<例略>7.等價分類法的測試技術采用的一般方法?舉例說明?<1>為每個等價類編號;<2>設計一個新的測試方案,以盡可能多的覆蓋尚未被覆蓋的有效等價類,重復這一步驟,直到所有有效等價類被覆蓋為止。<3>設計一個新的測試方案,使它覆蓋一個尚未被覆蓋的無效等價類,重復這一步驟,直到所有無效等價類被覆蓋為止。<例略>8.軟件測試的一般步驟?單元測試、子系統(tǒng)測試、系統(tǒng)測試、驗收測試、平行測試。9.比較集成試的兩種方式的優(yōu)劣?非漸增式測試方式:分別測試模塊,再把所有模塊按設計要求放在一起組成所要的程序。該方法編寫測試軟件工作量大,模塊間的接口錯誤發(fā)現(xiàn)得晚,錯誤定位較難診斷,總體測試有的錯誤容易漏掉,測試時間相對較少,可以并行測試所有模塊,能充分利用人力,加快工程進度。。漸增式測試方式:把下一個要測試的模塊,同已經(jīng)測試好的那些模塊結合起來進行測試。該方法利用已測試過的模塊作測試軟件,開銷小,較早發(fā)現(xiàn)模塊間的接口錯誤,錯誤定位往往和最近入的模塊相關,對已測試好的模塊可在新加入模塊的條件下受到新的檢驗,測試更徹底,需要較多的測試時間,不能并行測試??偟膩碚f,漸增式測試方法比較好。10.軟件測試的策略?<1>在任何情況下都應使用邊界值分析的方法。<2>必要時用等價類劃分法補充測試方案。<3>必要時再用錯誤推測法補充測試方案。<4>對照程序邏輯,檢查已設計出的測試方案。<5>根據(jù)對程序可靠性的要求采用不同的邏輯覆蓋標準,再補充一些測試方案。二.某電力公司有A、B、C、D共四類收費標準,并規(guī)定,居民用電每月200度以下按A類收費,200度以上按B類收費。動力電以每月1萬度為分界,非高峰用電不足1萬度按B類收費,達到或超過1萬度按C類收費。高峰用電不足1萬度按C類收費,達到或超過1萬度按D類收費。試用基于邏輯的測試方法為它設計足夠的測試用例實現(xiàn)條件組合的完全覆概。規(guī)則號123456居民用電200度以下Y

200度以上

Y

動力用電非高峰1萬度以下

Y

1萬度以上

Y

高峰1萬度以下

Y

1萬度以上

Y

收費標準A類▲

B類

▲▲

C類

▲▲

D類

▲測試用例用電類型輸入數(shù)據(jù)預期結果居民用電90度/月A110度/月B

動力用電非高峰8000度/月B12000度/月C高峰9000度/月C11000度/月D三.如圖顯示某程序的邏輯結構。試為它設計足夠的測試用例,分別實現(xiàn)對程序的判定覆概、條件覆概和條件組合覆概。設計測試方案覆蓋種類需滿足的條件測試數(shù)據(jù)期望結果

判定覆蓋A>1,B=0A=2,B=0執(zhí)行S1A>1,B0或A1,B=0或A1,B0A=2,B=1或A=1,B=0或A=1,B=1

執(zhí)行S2

條件覆蓋以下四種情況各出現(xiàn)一次

A>1B=0A=2,B=0執(zhí)行S1A1B0A=1,B=1執(zhí)行S2

條件組合覆蓋A>1,B=0A=2,B=0執(zhí)行S1A>1,B0A=2,B=1執(zhí)行S2A1,B=0A=1,B=0執(zhí)行S2A1,B0A=1,B=1執(zhí)行S2四.某城市號碼由三部分組成。它們的名稱和內容分別是:地區(qū)碼:空白或三位數(shù)字;前綴:非‘0’或‘1后綴:4位數(shù)字。假定被測程序能接受一切符合上述規(guī)定的號碼,拒絕所有不符合規(guī)定的號碼。根據(jù)該程序的規(guī)格說明,作等價類的劃分,并設計測試方案。1.劃分等價類輸入條件有效等價類無效等價類地區(qū)碼1.空白;2.三位數(shù);1.

有非數(shù)字字符;2.少于三位數(shù)字;3.多于三位數(shù)字。前綴3.從200到999之間的三位4.有非數(shù)字字符;5.起始位為‘0’;6.起始位為‘1’;7.少于三位數(shù)字;8.多于三位數(shù)字。后綴4.四位數(shù)字。9.有非數(shù)字字符;10.少于四位數(shù)字;11.多于四位數(shù)字。設計測試方案方案內容輸入預期輸出地區(qū)碼前綴后綴1空白200~999之間的三位數(shù)字四位數(shù)字<>276-2345有效2三位數(shù)字四位數(shù)字<635>805-9321有效3有非數(shù)字字符

<20A>723-4567無效4少于三位數(shù)字

<33>234-5678無效5多于三位數(shù)字

<5555>345-6789無效6

有非數(shù)字字符

<345>5A2-3456無效7

起始位為‘0’

<345>012-3456無效8

起始位為‘1’

<345>132-3456無效9

少于三位數(shù)字

<345>92-3456無效10

多于三位數(shù)字

<345>4562-3456無效11

有非數(shù)字字符<345>342-3A56無效12

少于四位數(shù)字<345>342-356無效13

多于四位數(shù)字<345>562-34567無效第八章軟件維護習題答案1.為什么說軟件的維護是不可避免的?因為軟件的開發(fā)過程中,一般很難檢測到所有的錯誤,其次軟件在應用過程中需要隨用戶新的要求或運行環(huán)境的變化而進行軟件的修改或完成功能的增刪等,為了提高軟件的應用水平和使用壽命,軟件的維護是不可避免的。2.軟件的維護一般分為哪幾類?改正性維護:滿足用戶對已開發(fā)產品的性能與運行環(huán)境不斷提高的要求,進而達到延長軟件壽命的目的。適應性維護:對程序使用期間發(fā)現(xiàn)的程序錯誤進行診斷和改正的過程,配合變化了的環(huán)境進行修改軟件的活動;完善性維護:滿足用戶在使用過程中提出增加新的功能或修改已有功能的建議而進行的工作;預防性維護:為了改善未來的可維護性或可靠性而修改軟件的工作。3.影響軟件維護的因素有哪些?開發(fā)方法:采用模塊化詳細設計文檔有助于理解軟件的結構、界面功能和內部流程;開發(fā)過程中嚴格而科學的管理規(guī)劃及清晰可靠的文檔資料對發(fā)生錯誤后的理解與糾錯是至關重要的;開發(fā)過程中模塊的獨立程度越高,對軟件修改越容易,對軟件的改進和移植越方便。開發(fā)條件:軟件開發(fā)及維護人員的水平?jīng)Q定了軟件開發(fā)的質量和維護的效率;開發(fā)過程中使用標準的程序設計語言和標準的操作系統(tǒng)接口,可以大大提高軟件的可維護性;在測試過程中用例的有效性,可極大地減少軟件存在的錯誤;其次使用規(guī)范化的文檔資料可為維護提供更好的依據(jù)。4.軟件維護困難主要表現(xiàn)在什么方面?<1>一般來講,維護人員對開發(fā)人員寫的程序及文檔,理解都比較困難,對維護工作不會喜歡;<2>維護持續(xù)時間都很長,在開發(fā)人員不在現(xiàn)場的輕快下,維護軟件通常是很困難的;<3>絕大多數(shù)軟件在設計時對將來的軟件修改都沒有考慮或考慮不多,尤其未能在設計中強調并認真解決好模塊的獨立性,使軟件的修改既困難又易發(fā)生差錯。5.決定軟件可維護性的因素?<1>軟件的可理解性、可測試性、可修改性;<2>文檔描述符合要求、用戶文檔簡潔明確、系統(tǒng)文檔完整并且標準。6.軟件價格應該計入維護成本嗎?為什么?在軟件的生命周期中,軟件維護的工作量非常大,不同應用領域的維護成本差別也很大。一般大型軟件的維護成本遠遠高于開發(fā)成本若干倍。因此軟件價格中應該計入維護成本。7.對前面各章中分析的各應用系統(tǒng),提出改進和擴充功能的要求?<1>教材銷售采購系統(tǒng);<2>圖書管理系統(tǒng);<3>房產管理系統(tǒng)。<略>第九章軟件工程管理習題答案1.軟件工程管理的內容?<1>費用管理:對軟件開發(fā)進行成本核算,使軟件生產按照商品生產的規(guī)律辦事。包括:以簡單、科學方法估算軟件開發(fā)費用,作為簽定開發(fā)合同的根據(jù);管理開發(fā)費用的有效使用,即用經(jīng)濟手段來保證產品如期按質完成。<2>質量管理:按項目的質量保證計劃,確保各個開發(fā)階段的開發(fā)和維護工作全部按軟件工程的規(guī)范進行,保證軟件產品的質量。<3>配置管理:通過對于程序、文檔和數(shù)據(jù)的各種版本所進行的管理,保證資料的完整性與一致性。<4>項目管理:制定《項目實施計劃》,按照計劃的內容組織和實施軟件的工程化生產。最終目標是以合理的費用和進度,圓滿完成計劃所規(guī)定的軟件項目。2.軟件項目有哪些特點?<1>軟件項目與其他任何產業(yè)項目不同,它是算法、思想、概念、組織、流程、效率、優(yōu)化等的融合體;<2>開發(fā)軟件項目產品,在多數(shù)情況下,用戶給不出明確的想法和要求。<3>在開發(fā)過程中,程序及其相關的文檔資料常常需要修改,在修改過程中又可能帶來新的問題,且這些問題要在很久以后才會發(fā)現(xiàn)。<4>在研制開發(fā)過程中,文檔資料是不可缺少的,但工作量又是巨大的,往往也是人們不愿去作的。<5>參加軟件項目的工作人員,要求具有一定的業(yè)務水平和實際工作經(jīng)驗,而很難完全避免的人員流動,對工作的影響是很大的。離開的人員不僅帶走了重要的信息,而且?guī)ё吡斯ぷ鹘?jīng)驗。3.軟件成本估算的一般方法?自頂向下估計:首先估算出項目總的開發(fā)成本,然后在項目內部進行成本分配。由少數(shù)專家參與,依靠他們過去的經(jīng)驗,將要開發(fā)的軟件與過去開發(fā)過的軟件進行"類比",以估計新的軟件開發(fā)所需要的工作量和成本。自底向上估計:將開發(fā)任務分成若干子任務,子任務又分成子子任務,直到每一個單元內容足夠明確為止;把各個任務單元的成本估計出來,匯合成項目的總成本。該方法得到的結果比較接近實際。4.為什么在軟件開發(fā)中,不能用簡單增加人員的方法來縮短開發(fā)時間?大量軟件開發(fā)實踐說明:向一個已經(jīng)延遲的項目追加開發(fā)人員,可能使它完成得更晚。因為當開發(fā)人員以算術級數(shù)增長時,而人員之間的通信將以幾何級數(shù)增長,往往"得不償失"。5.影響軟件質量的主要因素有哪些?<1>產品運行:正確性、風險性、效率、完整性、健壯性和可用性;<2>產品修改:可理解性、可維護性、靈活性、可測試性;<3>產品轉移:可移植性、可重用性和互運行性。6.本章第四節(jié)的例子是某個軟件項目的PERT圖。<1>找出關鍵路徑和完成項目的最早時間;<2>標出每項活動的最早起止時間與最遲起止時間。<見該章教案舉例>7.將上題的內容改用Gantt圖來表示。<見該章教案舉例>第十章軟件工程環(huán)境習題答案1.軟件工具是什么?按照軟件生存周期可將其分為幾類?軟件工具是指為支持計算機軟件及其文檔的開發(fā)、維護、模擬、移植或管理而研制的程序系統(tǒng)。按照軟件生存周期可將其分為如下幾類:<1>需求分析:如數(shù)據(jù)流圖繪制與分析工具、狀態(tài)轉換圖繪制與分析工具、面向對象的模型和分析工具、快速原型構造工具、數(shù)據(jù)字典與數(shù)據(jù)庫工具等。<2>軟件設計:如HIPO圖、PDL<程序設計語言>或PAD<問題分析圖>支持工具等。<3>編碼:集成化的程序員工作平臺。如各種正文編輯器和常規(guī)的編譯程序、匯編程序、連結程序及符號調試器等。<4>軟件測試:如靜態(tài)分析器、動態(tài)覆蓋率測試器、測試用例生成器、測試報告生成器及環(huán)境模擬器等。<5>軟件維護:如反匯編程序、反編譯程序、程序結構分析器、源程序格式化工

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論