軟件工程 第五版 張海藩 習(xí)題參考答案
《軟件工程 第五版 張海藩 習(xí)題參考答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件工程 第五版 張海藩 習(xí)題參考答案(24頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第一章 習(xí)題參考答案 1.什么是軟件危機(jī)? 軟件危機(jī)是指在計(jì)算機(jī)軟件的開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題。這些問(wèn)題表現(xiàn)在以下幾個(gè)方面: (1)用戶對(duì)開(kāi)發(fā)出的軟件很難滿意。 (2)軟件產(chǎn)品的質(zhì)量往往靠不住。 (3)一般軟件很難維護(hù)。 (4)軟件生產(chǎn)效率很低。 (5)軟件開(kāi)發(fā)成本越來(lái)越大。 (6)軟件成本與開(kāi)發(fā)進(jìn)度難以估計(jì)。 (7)軟件技術(shù)的發(fā)展遠(yuǎn)遠(yuǎn)滿足不了計(jì)算機(jī)應(yīng)用的普及與深入的需要。 2. 1. 為什么會(huì)產(chǎn)生軟件危機(jī)? (1) 開(kāi)發(fā)人員方面,對(duì)軟件產(chǎn)品缺乏正確認(rèn)識(shí),沒(méi)有真正理解軟件產(chǎn)品是一個(gè)完整的配置組成。造成開(kāi)發(fā)中制定計(jì)劃盲目、編程
2、草率,不考慮維護(hù)工作的必要性。 (2) 軟件本身方面,對(duì)于計(jì)算機(jī)系統(tǒng)來(lái)說(shuō),軟件是邏輯部件,軟件開(kāi)發(fā)過(guò)程沒(méi)有統(tǒng)一的、公認(rèn)的方法論和規(guī)范指導(dǎo),造成軟件維護(hù)困難。 (3) 尤其是隨著軟件規(guī)模越來(lái)越大,復(fù)雜程度越來(lái)越高,原有軟件開(kāi)發(fā)方式效率不高、質(zhì)量不能保證、成本過(guò)高、研制周期不易估計(jì)、維護(hù)困難等一系列問(wèn)題更為突出,技術(shù)的發(fā)展已經(jīng)遠(yuǎn)遠(yuǎn)不能適應(yīng)社會(huì)需求。 3.怎樣克服軟件危機(jī)? (1) 充分吸收和借鑒人類長(zhǎng)期以來(lái)從事各種工程項(xiàng)目中積累的行之有效的有效原理、概念、技術(shù)與方法,特別是吸取幾十年來(lái)人類從事計(jì)算機(jī)硬件研究和開(kāi)發(fā)的經(jīng)驗(yàn)教訓(xùn)。在開(kāi)發(fā)軟件的過(guò)程中努力作到良好的組織,嚴(yán)格的管理,相互友好的協(xié)作。
3、 (2) 推廣在實(shí)踐中總結(jié)出來(lái)的開(kāi)發(fā)軟件的成功的技術(shù)和方法,并研究更好、更有效的技術(shù)和方法,盡快克服在計(jì)算機(jī)系統(tǒng)早期發(fā)展階段形成的一些錯(cuò)誤概念和作法。 (3) 根據(jù)不同的應(yīng)用領(lǐng)域,開(kāi)發(fā)更好的軟件工具并使用這些工具。將軟件開(kāi)發(fā)各個(gè)階段使用的軟件工具集合成一個(gè)整體,形成一個(gè)很好的軟件開(kāi)發(fā)支環(huán)環(huán)境。 總之為了解決軟件危機(jī),既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。 4.構(gòu)成軟件項(xiàng)目的最終產(chǎn)品: 應(yīng)用程序、系統(tǒng)程序、面向用戶的文檔資料和面向開(kāi)發(fā)者的文檔資料。 5.什么是軟件生存周期? 軟件生存周期是指從軟件定義、開(kāi)發(fā)、使用、維護(hù)到淘汰的全過(guò)程。 6.軟件生存周期為什么
4、劃分成階段? (1) 任何一個(gè)階段的具體任務(wù)不僅獨(dú)立,而且簡(jiǎn)單,便于不同人員分工協(xié)作,從而降低整個(gè)軟件開(kāi)發(fā)工作的困難程度。 (2) 可以降低每個(gè)階段任務(wù)的復(fù)雜程度,簡(jiǎn)化不同階段的聯(lián)系,有利于工程的組織管理,也便于采用良好的技術(shù)方法。 (3) 使軟件開(kāi)發(fā)的全過(guò)程以一種有條不紊的方式進(jìn)行,保證軟件的質(zhì)量,特別是提高了軟件的可維護(hù)性。 7.應(yīng)該怎樣來(lái)劃分階段? (1)每一個(gè)階段的任務(wù)盡可能獨(dú)立; (2)同一階段內(nèi)的任務(wù)性質(zhì)盡可能相同; (3)每一個(gè)階段任務(wù)的開(kāi)始和結(jié)束有嚴(yán)格的標(biāo)準(zhǔn)。 8.軟件開(kāi)發(fā)模型有幾種?它們的開(kāi)發(fā)方法有可特點(diǎn)? 軟件開(kāi)發(fā)模型有瀑布型、漸增型和變換型。 瀑
5、布型開(kāi)發(fā)方法是按照軟件生存周期的劃分依次實(shí)施,每一個(gè)階段有明確規(guī)定的任務(wù)。它的特點(diǎn): (1)各個(gè)階段的順序性和依賴性; (2)劃分邏輯設(shè)計(jì)與物理設(shè)計(jì),盡可能推遲程序的物理實(shí)現(xiàn); (3)每個(gè)階段必須完成規(guī)定的文檔,對(duì)其中問(wèn)題通過(guò)復(fù)審及早發(fā)現(xiàn),及早解決。 漸增型開(kāi)發(fā)方法及特點(diǎn): (1) 從部分需求出發(fā),先建立一個(gè)不完全的系統(tǒng),通過(guò)測(cè)試運(yùn)行該系統(tǒng)取得經(jīng)驗(yàn)和信息反饋,加深對(duì)軟件需求的理解,進(jìn)一步使系統(tǒng)擴(kuò)充和完善。如此反復(fù),直至軟件人員和用戶對(duì)所設(shè)計(jì)完成的軟件系統(tǒng)滿意為止。 (2) 在漸增型開(kāi)發(fā)下的軟件是隨軟件開(kāi)發(fā)的過(guò)程而逐漸形成的。 (3) 漸增型開(kāi)發(fā)方法適合于知識(shí)型軟件的開(kāi)發(fā),設(shè)計(jì)系統(tǒng)
6、時(shí)對(duì)用戶需求的認(rèn)識(shí)開(kāi)始不是很清楚的,需要在開(kāi)發(fā)過(guò)程中不斷認(rèn)識(shí)、不斷獲得新的知識(shí)去豐富和完善系統(tǒng)。多數(shù)研究性質(zhì)的試驗(yàn)軟件,一般采用此方法。 變換型開(kāi)發(fā)方法及特點(diǎn): (1)從軟件需求的形式化規(guī)格說(shuō)明出發(fā),經(jīng)過(guò)一系列的程序變換,得到最終的程序系統(tǒng)。 (2)該方法必須有嚴(yán)格的數(shù)學(xué)理論和形式化技術(shù)的支持。 9.什么是軟件工程? 軟件工程是指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)的工程學(xué)科。 (1) 它采用工程的概念、原理、技術(shù)和方法來(lái)開(kāi)發(fā)和維護(hù)軟件; (2) 它將管理技術(shù)與當(dāng)前經(jīng)過(guò)時(shí)間考驗(yàn)的而證明是正確的技術(shù)方法結(jié)合起來(lái); (3) 它強(qiáng)調(diào)使用生存周期方法學(xué)和結(jié)構(gòu)分析和結(jié)構(gòu)技術(shù); (4)
7、 經(jīng)過(guò)人們長(zhǎng)期的努力和探索,圍繞著實(shí)現(xiàn)軟件優(yōu)質(zhì)高產(chǎn)這個(gè)目標(biāo),從技術(shù)到管理兩個(gè)方面做了大量的努力,逐漸形成了”軟件工程學(xué)”這一新的學(xué)科。 10.什么是軟件工程環(huán)境: 方法與工具的結(jié)合,加上配套的軟、硬件支持稱為軟件工程環(huán)境。它 能支持開(kāi)發(fā)者按照軟件工程的方法,全面完成生存周期中的各項(xiàng)任務(wù)。 第二章 習(xí)題參考答案 1. 問(wèn)題定義的任務(wù)和主要工作? 問(wèn)題定義的任務(wù):將用戶提出的要求具體化、定量化;確定研制系統(tǒng)的范圍,明確研制的邊 界。問(wèn)題定義階段的工作: (1) 通過(guò)調(diào)查研究,了解系統(tǒng)需求; (2) 確定系統(tǒng)的功能需求、性能需求、可靠性需求、安全及保密性、資源、開(kāi)發(fā)費(fèi)用及
8、開(kāi)發(fā)進(jìn)度等的需求; (3) 問(wèn)題定義階段的產(chǎn)品——系統(tǒng)目標(biāo)與范圍說(shuō)明書(shū)。 2.可行性研究目的? 確定在問(wèn)題定義中所提出的問(wèn)題是否值得去解,在限制條件下,問(wèn)題能否解決。 3.可行性研究的任務(wù)? (1) 進(jìn)一步分析和澄清問(wèn)題的定義,在澄清問(wèn)題的基礎(chǔ)上,導(dǎo)出系統(tǒng)的邏輯模型; (2) 從系統(tǒng)邏輯模型中,選擇問(wèn)題的若干種主要解法,研究每一種解法的可行性,為以后的行動(dòng)提出建議; (3) 如果問(wèn)題沒(méi)有可行的解,建議停止系統(tǒng)開(kāi)發(fā);如果問(wèn)題有可行的解,應(yīng)該推薦一個(gè)較好的解決方案,并為工程制定一個(gè)初步的計(jì)劃。 4.可行性研究包括哪幾方面的內(nèi)容? (1)技術(shù)可行性:現(xiàn)有技術(shù)能否實(shí)現(xiàn)
9、本系統(tǒng),現(xiàn)有技術(shù)人員能否勝任,開(kāi)發(fā)系統(tǒng)的資源能否滿足; (2)經(jīng)濟(jì)可行性:經(jīng)濟(jì)效益是否超出開(kāi)發(fā)成本; (3)操作可行性:系統(tǒng)操作在用戶內(nèi)部行得通嗎? (4)法律可行性:新系統(tǒng)開(kāi)發(fā)是否會(huì)侵犯他人、集體或國(guó)家利益,是否違反國(guó)家法律。 5.可行性研究的步驟? (1)復(fù)查系統(tǒng)的規(guī)模和目標(biāo); (2)研究目前正在使用的系統(tǒng),總結(jié)現(xiàn)有系統(tǒng)的優(yōu)劣,提出新系統(tǒng)的雛形; (3)導(dǎo)出新系統(tǒng)的高層邏輯模型; (4)推薦建議方案; (5)推薦行動(dòng)方針; (6)書(shū)寫(xiě)計(jì)劃任務(wù)書(shū)(可行性報(bào)告); (7)提交審查。 6. 可行性研究報(bào)告的主要內(nèi)容? 可行性分析的結(jié)果是可行性研究報(bào)告,內(nèi)容包括:
10、(1) 系統(tǒng)概述:說(shuō)明開(kāi)發(fā)的系統(tǒng)名稱,提出單位和開(kāi)發(fā)單位。 (2) 可行性研究的前提:系統(tǒng)目標(biāo);要求;約束和限制;可行性研究的基本準(zhǔn)則等。 (3) 對(duì)現(xiàn)有系統(tǒng)的分析:處理流程,圖示說(shuō)明現(xiàn)有系統(tǒng)的處理流程和數(shù)據(jù)流程;現(xiàn)有系統(tǒng)存在的問(wèn)題。 (4) 系統(tǒng)需求:主要功能;主要性能及其要求;操作要求;信息要求;限制性要求。 (5) 建議系統(tǒng):系統(tǒng)目標(biāo);處理流程;系統(tǒng)結(jié)構(gòu),功能,性能;系統(tǒng)技術(shù)可行性;投資和效益分析;操作可行性;法律可行性。 (6) 其它可選方案:與國(guó)內(nèi)外同類型方案的比較;提出一兩個(gè)可行性方案供論證和探討。 (7) 制定下一階段的預(yù)算。 (8) 結(jié)論性意見(jiàn):由用戶方、設(shè)計(jì)方和
11、投資方共同簽署意見(jiàn)。 第三章 習(xí)題答案 1.需求分析的描述工具有哪些? 有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定表、判定樹(shù)、結(jié)構(gòu)化自然語(yǔ)言、層次方框圖、Warnier圖、IPO圖和需求描述語(yǔ)言等。 2.需求分析的基本任務(wù)是什么? 準(zhǔn)確定義未來(lái)系統(tǒng)的目標(biāo),確定為了滿足用戶的需要系統(tǒng)必須做什么。 3.怎樣建立目標(biāo)系統(tǒng)的邏輯模型?要經(jīng)過(guò)哪些步驟? 建立目標(biāo)系統(tǒng)的邏輯模型的過(guò)程也就是數(shù)據(jù)流圖的分解過(guò)程。它的導(dǎo)出過(guò)程如圖: 繼續(xù)分解
12、 有補(bǔ)充修正 用戶復(fù)查 細(xì) 化 數(shù)據(jù)流圖 分析追蹤 數(shù)據(jù)流圖 無(wú)補(bǔ)充修正 不分解 4.什么是結(jié)構(gòu)化分析?它的結(jié)構(gòu)化體現(xiàn)在哪里? 結(jié)構(gòu)化分析:使用數(shù)據(jù)流程圖、數(shù)據(jù)字典、結(jié)構(gòu)化英語(yǔ)、判定表和判定樹(shù)等工具,來(lái)建立一種新的、稱為結(jié)構(gòu)化說(shuō)明書(shū)的目標(biāo)文檔—需求規(guī)格說(shuō)明書(shū)。 結(jié)構(gòu)化體現(xiàn)在將軟件系統(tǒng)抽象為一系列的邏輯加工單元,各單元之間以數(shù)據(jù)流發(fā)生關(guān)聯(lián)。 5.
13、軟件需求規(guī)格說(shuō)明書(shū)由哪些部分組成? 組成包括: (1) 引言:編寫(xiě)目的、背景說(shuō)明、術(shù)語(yǔ)定義及參考資料等。 (2) 概述主要功能、約束條件或特殊需求。 (3) 數(shù)據(jù)流圖與數(shù)據(jù)字典。 (4) 用戶接口、硬件接口及軟件接口。 (5) 性能需求、屬性等。 (6) 其它需求,如數(shù)據(jù)庫(kù)、操作及故障處理等。 6.為什么數(shù)據(jù)流圖要分層?畫(huà)分層的DFD要遵循哪些原則? 分層的目的:便于逐步細(xì)化、結(jié)構(gòu)清晰。 畫(huà)分層的DFD要遵循哪些原則: (1)父圖與子圖之間數(shù)據(jù)要平衡。 (2)分解的深度和層次達(dá)到使加工足夠簡(jiǎn)單、易于理解的基本加工為止。 (3)區(qū)分局部文件和局部外部項(xiàng)(局限于數(shù)
14、據(jù)流中某一層或某幾層的文件和外部項(xiàng))。 (4)不要把控制流作為數(shù)據(jù)流。 (5)忽略瑣碎的枝節(jié)。 (6)每個(gè)數(shù)據(jù)流要有一個(gè)合適的名字,盡量使用現(xiàn)實(shí)系統(tǒng)中有具體意義的名字。 7.系統(tǒng)流程圖與數(shù)據(jù)流程圖有什么區(qū)別? 系統(tǒng)流程圖描述系統(tǒng)物理模型的工具,數(shù)據(jù)流程圖描述系統(tǒng)邏輯模型的工具。 系統(tǒng)流程圖從系統(tǒng)功能的角度抽象的描述系統(tǒng)的各個(gè)部分及其相互之間信息流動(dòng)的情況。 數(shù)據(jù)流程圖從數(shù)據(jù)傳送和加工的角度抽象的描述信息在系統(tǒng)中的流動(dòng)和數(shù)據(jù)處理的工作狀況。 8.數(shù)據(jù)字典包括哪些內(nèi)容?它的作用是什么? 數(shù)據(jù)字典是描述數(shù)據(jù)流圖中數(shù)據(jù)的信息的集合。它對(duì)數(shù)據(jù)流圖上每一個(gè)成分:數(shù)據(jù)項(xiàng)、文
15、件(數(shù)據(jù)結(jié)構(gòu))、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、加工和外部項(xiàng)等給以定義和說(shuō)明;它主要由數(shù)據(jù)流描述、加工描述和文件描述三部分組成。對(duì)用戶來(lái)講,數(shù)據(jù)字典為他們提供了數(shù)據(jù)的明確定義;對(duì)系統(tǒng)分析員來(lái)講,數(shù)據(jù)字典幫助他們比較容易修改已建立的系統(tǒng)邏輯模型。 9.描述加工邏輯的工具有哪些? 有決策樹(shù)(又稱判定樹(shù))、決策表(又稱判斷表)和結(jié)構(gòu)化語(yǔ)言等。 10.某單位擬開(kāi)發(fā)一個(gè)計(jì)算機(jī)房產(chǎn)管理系統(tǒng),要求系統(tǒng)具有分房、 調(diào)房、退房和查詢統(tǒng)計(jì)等功能。房 產(chǎn)科將用戶申請(qǐng)表輸入系統(tǒng) 后,系統(tǒng)首先檢查申請(qǐng)表的合法性,對(duì)不合法的申請(qǐng)表,系統(tǒng)拒絕 接收;對(duì)合法的申請(qǐng)表根據(jù)類型分別進(jìn)行處理。 (1) 如果是分房申請(qǐng),則根
16、據(jù)申請(qǐng)者的情況(年齡、工齡、職稱、職務(wù)、家庭人口等)計(jì)算其分?jǐn)?shù),當(dāng)分?jǐn)?shù)高于閥值分?jǐn)?shù)時(shí),按分?jǐn)?shù)高低將申請(qǐng)單插到分房隊(duì)列的適當(dāng)位置。在進(jìn)行分房時(shí),從空房文件中讀出空房信息,如房號(hào)、面積、等級(jí)、單位面積房租等,把好房?jī)?yōu)先分給排在分房隊(duì)列前面的符合該等級(jí)房條件的申請(qǐng)者;從空房文件中刪掉這個(gè)房號(hào)的信息,并從分房隊(duì)列中刪掉該申請(qǐng)單,再把此房號(hào)的信息和住戶信息一起寫(xiě)到住房文件中,輸出住房分配單給住戶,同時(shí)計(jì)算房租,并將算出的房租寫(xiě)到房租文件中。 (2) 如果是退房申請(qǐng),則從住房文件和房租文件中刪除有關(guān)信息,再把此房號(hào)的信息寫(xiě)到空房文件中。 (3) 如果是調(diào)房申請(qǐng),則根據(jù)申請(qǐng)者的情況確定其住房等級(jí),然后在
17、空房文件中查找屬于該等級(jí)的空房,退掉原住房,再進(jìn)行與分房類似的處理。 (4) 住戶可以向系統(tǒng)查詢目前分房的閥值分?jǐn)?shù),居住某類房屋的條件,某房號(hào)的單位面積及房租等信息。房產(chǎn)科可以要求系統(tǒng)打印住房情況的統(tǒng)計(jì)表,或更改某類房屋的居住條件、單位面積和房租等。 用數(shù)據(jù)流圖描繪該系統(tǒng)的功能需求;在數(shù)據(jù)字典中給出主要的數(shù)據(jù)流、文件和加工說(shuō)明。 參考第四章4.5應(yīng)用舉例教案之二分析。 第四章 習(xí)題參考答案 1. 系統(tǒng)設(shè)計(jì)包括哪兩個(gè)階段? 系統(tǒng)設(shè)計(jì)包括總體設(shè)計(jì)與詳細(xì)設(shè)計(jì)兩個(gè)階段。 2. 總體設(shè)計(jì)的主要任務(wù)是什么? 總體設(shè)計(jì)的主要任務(wù)是完成軟件結(jié)構(gòu)的設(shè)計(jì),確定系統(tǒng)
18、的模塊及其模塊之間的關(guān)系。 3. 什么是模塊?模塊具有哪幾個(gè)特征?總體設(shè)計(jì)主要考慮什么特征? 模塊是數(shù)據(jù)說(shuō)明、可執(zhí)行語(yǔ)句等程序?qū)ο蟮募?,可以單?dú)命名且可通過(guò)名字來(lái)訪問(wèn)。 模塊具有輸入和輸出(參數(shù)傳遞)、功能、內(nèi)部數(shù)據(jù)結(jié)構(gòu)(局部變量)和程序代碼四個(gè)特性。 概要設(shè)計(jì)主要考慮輸入、輸出(參數(shù)傳遞)和功能兩個(gè)特性。 4. 什么是模塊化?模塊設(shè)計(jì)的準(zhǔn)則? 模塊化是按規(guī)定的原則將一個(gè)大型軟件劃分為一個(gè)個(gè)較小的、相對(duì)獨(dú)立但又相關(guān)的模塊。 模塊設(shè)計(jì)的準(zhǔn)則: (1) 改進(jìn)軟件結(jié)構(gòu), 提高模塊獨(dú)立性:在對(duì)初步模塊進(jìn)行合并、分解和移動(dòng)的分析、精化過(guò)程中力求提高模塊的內(nèi)聚,
19、降低藕合。 (2) 模塊大小要適中:大約50行語(yǔ)句的代碼,過(guò)大的模塊應(yīng)分解以提高理解性和可維護(hù)性;過(guò)小的模塊,合并到上級(jí)模塊中。 (3) 軟件結(jié)構(gòu)圖的深度、寬度、扇入和扇出要適當(dāng)。一般模塊的調(diào)用個(gè)數(shù)不要超過(guò)5個(gè)。 (4) 盡量降低模塊接口的復(fù)雜程度; (5) 設(shè)計(jì)單入口、單出口的模塊。 (6) 模塊的作用域應(yīng)在控制域之內(nèi)。 5. 變換型數(shù)據(jù)流由哪幾部分組成? 變換型結(jié)構(gòu)由三部分組成:傳入路徑、變換(加工)中心和傳出路徑。 6. 變換分析設(shè)計(jì)的步驟? (1) 區(qū)分傳入、傳出和變換中心三部分,劃分DFD圖的分界線; (2) 完成第一級(jí)分解:建立初始SC圖的框架; (3) 完成
20、第二級(jí)分解:分解SC圖的各個(gè)分支; (4) 對(duì)初始結(jié)構(gòu)圖按照設(shè)計(jì)準(zhǔn)則進(jìn)行精化與改進(jìn)。 7. 事務(wù)型數(shù)據(jù)流由哪幾部分組成? 事務(wù)型結(jié)構(gòu)由至少一條接受路徑、一個(gè)事務(wù)中心與若干條動(dòng)作路徑組成。 8. 事務(wù)分析設(shè)計(jì)的步驟? (1) 在DFD圖中確定事務(wù)中心、接收部分(包含全部接收路徑)和發(fā)送部分(包含全部動(dòng)作路徑); (2) 畫(huà)出SC圖框架,把DFD圖的三部分分別”映射”為事務(wù)控制模塊,接收模塊和動(dòng)作發(fā)送模塊.一般得到SC圖的頂層和第一層(如果第一層簡(jiǎn)單可以并入頂層); (3) 分解和細(xì)化接收分支和動(dòng)作分支,完成初始的SC圖; (4) 對(duì)初始結(jié)構(gòu)圖按照設(shè)計(jì)準(zhǔn)則進(jìn)行精化與改進(jìn)。 9
21、. 比較層次方框圖與結(jié)構(gòu)圖是的異同? (1) 層次方框圖描繪數(shù)據(jù)的層次結(jié)構(gòu), 結(jié)構(gòu)圖描繪的是軟件結(jié)構(gòu)。 (2) 二者都采用多層次矩形框樹(shù)形結(jié)構(gòu)。層次方框圖的頂層矩形框代表完整的數(shù)據(jù)結(jié)構(gòu), 下面各層矩形框依次代表上個(gè)框數(shù)據(jù)的子集;結(jié)構(gòu)圖是在層次圖的每一個(gè)方框內(nèi)注明模塊的名字或主要功能,方框之間的直線表示模塊的調(diào)用關(guān)系,用帶注解的箭頭表示模塊調(diào)用過(guò)程中傳遞的信息。 10.欲開(kāi)發(fā)一個(gè)銀行的活期存取款業(yè)務(wù)的處理系統(tǒng):儲(chǔ)戶將填好的存/取款單和存折交給銀行工作人員,然后由系統(tǒng)作以下處理; (1)業(yè)務(wù)分類處理:系統(tǒng)首先根據(jù)儲(chǔ)戶所填的存/取款單,確定本次業(yè)務(wù)的性質(zhì),并將存/取款單和存折交下
22、一步處理; (2)存款處理:系統(tǒng)將存款單上的存款金額分別記錄在存折和帳目文件中,并將現(xiàn)金存入現(xiàn)金庫(kù);最后將存折還給儲(chǔ)戶; (3)取款處理:系統(tǒng)將取款單上的取款金額分別記錄在存折和帳目文件中,并從現(xiàn)金庫(kù)提取現(xiàn)金;最后將現(xiàn)金和存折還給儲(chǔ)戶。 繪制該系統(tǒng)的數(shù)據(jù)流圖和軟件結(jié)構(gòu)圖。 頂層 存取款 業(yè)務(wù)系統(tǒng) 存取單、存折 儲(chǔ)戶 存折 一層 存折、存款單存款 處理 存折、存款單 .審查 分類 儲(chǔ)戶 存折、存取單 帳目文件
23、 現(xiàn)金帳 取款 處理 存折、取款單 存折 二層 修改1 B 修改存折修改1 A 處理存款單 合格存折 存款單 業(yè)務(wù) 分類 審查 單據(jù) 存取單 合格存取單 帳目文件 現(xiàn)金帳儲(chǔ)戶 存折 存折 不合格單據(jù)
24、 合格存折 取款單修改2 B 修改2 A 修改存折 處理取款單 注:A—文件帳目及存折;B—現(xiàn)金帳 軟件結(jié)構(gòu)圖 存取款業(yè)務(wù)系統(tǒng) 2 2 獲得合理單據(jù) 分類處理 1 1 2,3 3 4
25、 5 取款處理 退回 審核單據(jù) 輸入單據(jù) 存款處理 4 5 4 4 5 5 修改 存折 修改 帳目文件 修改 現(xiàn)金帳 1 存取單、存折 2 合格單據(jù) 3 不合格單據(jù) 4合格存折、存款單 5合格存折、取款單 第五章 習(xí)題參考答案 一.回答問(wèn)題 1.詳細(xì)設(shè)計(jì)的目的? 為軟件結(jié)
26、構(gòu)圖(SC圖或HC圖)中的每一個(gè)模塊確定采用的算法和塊內(nèi)數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具給出清晰的描述. 2.詳細(xì)設(shè)計(jì)的主要任務(wù)? 編寫(xiě)軟件的“詳細(xì)設(shè)計(jì)說(shuō)明書(shū)”.軟件人員要完成的工作: (1) 為每一個(gè)模塊確定采用的算法, 選擇某種適當(dāng)?shù)墓ぞ弑磉_(dá)算法的過(guò)程,寫(xiě)出模塊的詳細(xì)過(guò)程描述. (2) 確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu). (3) 確定模塊結(jié)構(gòu)的細(xì)節(jié),包括對(duì)系統(tǒng)外部的接口和用戶界面,對(duì)系統(tǒng)內(nèi)部其它模塊的接口,以及關(guān)于模塊輸入數(shù)據(jù)、輸出數(shù)據(jù)及局部數(shù)據(jù)的全部細(xì)節(jié). (4) 為每一個(gè)模塊設(shè)計(jì)出一組測(cè)試用例,以便在編碼階段對(duì)模塊代碼(即程序)進(jìn)行預(yù)定的測(cè)試. 3.結(jié)構(gòu)化程序設(shè)計(jì)的基本原則?
27、在詳細(xì)設(shè)計(jì)中所有模塊都使用單入口、單出口的順序、選擇、循環(huán)三種基本控制結(jié)構(gòu). 4.比較面向數(shù)據(jù)流和面向數(shù)據(jù)結(jié)構(gòu)兩類設(shè)計(jì)方法的異同? 相同點(diǎn): (1) 遵守結(jié)構(gòu)程序設(shè)計(jì)“由頂向下”逐步細(xì)化的原則,并以其為共同的基礎(chǔ); (2) 均服從“程序結(jié)構(gòu)必須適應(yīng)問(wèn)題結(jié)構(gòu)”的基本原則,各自擁有從問(wèn)題結(jié)構(gòu)(包括數(shù)據(jù)結(jié)構(gòu))導(dǎo)出程序結(jié)構(gòu)的一組映射規(guī)則。 不同點(diǎn): (1) 面向數(shù)據(jù)流的設(shè)計(jì)以數(shù)據(jù)流圖為基礎(chǔ),在分析階段用DFD表示軟件的邏輯模型,在設(shè)計(jì)階段按數(shù)據(jù)流類型,將數(shù)據(jù)流圖轉(zhuǎn)換為軟件結(jié)構(gòu)。面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ),從問(wèn)題的數(shù)據(jù)結(jié)構(gòu)出發(fā)導(dǎo)出它的程序結(jié)構(gòu) 。 (2) 面向數(shù)據(jù)流的設(shè)計(jì)的最終目
28、標(biāo)是軟件的最終SC圖,面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)的最終目標(biāo)是程序的過(guò)程性描述。 5.比較Jackson方法和LCP方法的異同? Jackson與LCP設(shè)計(jì)方法都是以數(shù)據(jù)結(jié)構(gòu)為出發(fā)點(diǎn),以程序的過(guò)程描述為最終目標(biāo),設(shè)計(jì)步驟基本相似。它們的主要差別是: (1)使用不同的表達(dá)工具,其中LCP方法中的表達(dá)工具Warnier圖 比Jackson設(shè)計(jì)方法中的表達(dá)工具Jackson圖有更大的通用性; (2)Jackson方法的步驟和指導(dǎo)原則有一定的靈活性,而LCP設(shè)計(jì) 方法則更加嚴(yán)密。 6.詳細(xì)設(shè)計(jì)的描述工具應(yīng)具備什么功能? 無(wú)論哪類描述工具不僅要具有描述設(shè)計(jì)過(guò)程
29、,如控制流程、處理功能、數(shù)據(jù)組織及其它方面的細(xì)節(jié)的能力,而且在編碼階段能夠直接將它翻譯為用程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的源程序。 二.給出一組數(shù)從小到大的排序算法,分別用下列工具描述其詳細(xì)過(guò)程: (1) 流程圖;(2)N—S圖;(3)PAD圖;(4)PDL語(yǔ)言。 輸入n i=1 T m=j j>n j=i+1 F i<n A(j)>A(m) F T m=1 T 輸出A(m) F S=A(i) A(i)=A(m) A(m)=S
30、 PDL語(yǔ)言略 PAD圖 N-S圖 m=i S=A(i) A(i)=A(m) A(m)=S PETURN i=1 TO n-1 j=i+1 TO n j=i+1 TO n m=j A(j) > A(m) 輸出A(m) i=1 TO n-1 S=A(i) A(i)=A(m) A(m)=S j=i+1 TO n m=i m=j A(j) >A(m) T F 三.根據(jù)后面給出“卡片的分
31、類及統(tǒng)計(jì)”項(xiàng)目說(shuō)明,完成下列工作: (1)用Jackson圖表示輸入與輸出數(shù)據(jù)結(jié)構(gòu),找出它們之間的對(duì)應(yīng)單元; (2)畫(huà)出用Jackson圖表示的程序結(jié)構(gòu); (3)列出程序所需用的操作,并加到上一步畫(huà)出的程序結(jié)構(gòu)圖上; (4)用Jackson偽代碼寫(xiě)出程序的過(guò)程表示。 輸入卡片分析程序。一疊輸入卡片按內(nèi)容分為K1、K2、K3三類,卡片的排列規(guī)則是:以K1卡始,以K2卡終。起始卡之前屬前置部分,不含K1卡;起始卡與終了卡之間屬分批部分,不含K2卡。 如圖: 前置部分 K3 K3…K3 K3 K2 K2 K1 K1 K1…K1
32、… … 起始卡 分批部分 終了卡 試用Jackson方法編一程序,要求依次完成下列分析工作: -----統(tǒng)計(jì)起始卡前卡片的張數(shù),存入A; -----打印起始卡的內(nèi)容; -----統(tǒng)計(jì)起始卡后出現(xiàn)的K1卡和K3卡總批數(shù),存入B; -----統(tǒng)計(jì)起始卡后出現(xiàn)的K1卡的張數(shù),存入C; -----統(tǒng)計(jì)起始卡后出現(xiàn)的K3卡的批數(shù),存入D; -----打印終了卡的內(nèi)容; -----打印A、B、C、D四個(gè)統(tǒng)計(jì)值。 輸入卡片文件的數(shù)據(jù)結(jié)構(gòu)圖 輸入卡片文件 終了卡(K2) 分批部分 起始卡(K1) 前置
33、部分 非K1卡* K1批0 K3批0 批* I S K3卡* I K1卡* I 打印文件 終了卡內(nèi)容 起始卡內(nèi)容 ABCD統(tǒng)計(jì)值 輸出卡片文件的數(shù)據(jù)結(jié)構(gòu)圖 上述兩個(gè)結(jié)構(gòu)圖有三組對(duì)應(yīng)單元: 頂層單元、起始卡單元和終了卡單元。 按映射規(guī)則,可導(dǎo)出下頁(yè)程序結(jié)構(gòu)圖。 輸入卡片文件 打印起始卡 打印A、B、C、D 處理批部分 處理K1卡* 處理K3批0 處理K1批0 處理批* 處理K3卡*
34、 I S I I 打印終了卡 處理前置部分 處理K1卡* I 由上步導(dǎo)出的程序結(jié)構(gòu)圖 將輸入與輸出中的兩模塊細(xì)化 處理前置部分 處理K1卡* I 1 統(tǒng)計(jì)張數(shù) 處理K3批0 處理K1批0 處理批部分 處理批* I 2 S 3 處理批類 統(tǒng)計(jì)張數(shù) I 4 處理K1卡* 處理K3卡* I 5 處理批體 統(tǒng)計(jì)批數(shù) 統(tǒng)計(jì)總批數(shù) 程序的過(guò)程表示及偽代碼略 第六章
35、 習(xí)題參考答案 1. 編碼的任務(wù)? 使用選定的程序設(shè)計(jì)語(yǔ)言,把模塊的過(guò)程性描述翻譯為用語(yǔ)言書(shū)寫(xiě)的源程序(源代碼)。 2. 對(duì)源程序基本要求? 源程序要求:正確可靠、簡(jiǎn)明清晰、效率高。 (1) 源程序的正確性是對(duì)程序質(zhì)量的最基本要求; (2) 源程序的簡(jiǎn)明清晰,便于驗(yàn)證源代碼和模塊規(guī)格說(shuō)明的一致性,容易進(jìn)行測(cè)試和維護(hù); (3) 對(duì)于大多數(shù)模塊,編碼時(shí)應(yīng)該把簡(jiǎn)明清晰放在第一位; (4) 除了編碼階段產(chǎn)生源代碼外,在測(cè)試階段也需要編寫(xiě)一些測(cè)試程序,用于對(duì)軟件的測(cè)試。 3. 程序設(shè)計(jì)語(yǔ)言的特點(diǎn)? (1) 名字說(shuō)明:程序中使用對(duì)象的名字,能為編譯程序所檢查和識(shí)別; (2) 類型
36、說(shuō)明:定義對(duì)象的類型,確定該對(duì)象的使用方式; (3) 初始化:為變量提供適當(dāng)?shù)某跏贾祷蛴上到y(tǒng)給變量賦一特殊的表明未初始化的值; (4) 對(duì)象的局部性:程序中真正需要的那部分才能訪問(wèn)的對(duì)象; (5) 程序模塊:控制程序?qū)ο蟮拿郑? (6) 循環(huán)控制結(jié)構(gòu):如FOR語(yǔ)句、WHILE-DO語(yǔ)句、REPEAT-UNTIL語(yǔ)句等; (7) 分支控制結(jié)構(gòu):如IF語(yǔ)句、CASE語(yǔ)句等; (8) 異常處理:為程序運(yùn)行過(guò)程中發(fā)生的錯(cuò)誤和意外事件提供檢測(cè)和處理上的幫助; (9) 獨(dú)立編譯:能分別編譯各個(gè)程序單元。 4. 選擇程序設(shè)計(jì)語(yǔ)言需要考慮的因素? (1) 選擇用戶熟悉、便于用戶維護(hù)的語(yǔ)言。
37、 (2) 選擇目標(biāo)系統(tǒng)的環(huán)境中可以提供的編譯程序所能選用的語(yǔ)言。 (3) 選擇可以得到的軟件工具,能支持程序開(kāi)發(fā)中可以利用的語(yǔ)言。 (4) 根據(jù)工程規(guī)模的大小、目標(biāo)系統(tǒng)應(yīng)用范圍,如實(shí)時(shí)應(yīng)用選擇Ada語(yǔ)言或匯編語(yǔ)言,系統(tǒng)軟件開(kāi)發(fā)選擇C語(yǔ)言或匯編語(yǔ)言,軟件開(kāi)發(fā)中若含有大量數(shù)據(jù)操作則選擇SQL、dBASE等數(shù)據(jù)庫(kù)語(yǔ)言等。 (5) 選擇程序員熟悉的語(yǔ)言。 (6) 選擇標(biāo)準(zhǔn)化程度高、程序可移植性好的語(yǔ)言。 (7) 根據(jù)算法與計(jì)算的復(fù)雜性、數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性選擇。如對(duì)于系統(tǒng)程序和結(jié)構(gòu)復(fù)雜的應(yīng)用程序,選擇支持?jǐn)?shù)組、記錄(或結(jié)構(gòu))與指針動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)的Pascal語(yǔ)言或C語(yǔ)言。 (8) 根據(jù)實(shí)時(shí)要求系
38、統(tǒng)需要的響應(yīng)速度和效率選擇相應(yīng)的語(yǔ)言。 5. 編碼風(fēng)格的指導(dǎo)原則。 (1) 源程序:包括適當(dāng)?shù)臉?biāo)識(shí)符、適當(dāng)?shù)淖⒔狻⒊绦蚯鍐蔚暮侠聿季峙c清晰; (2) 數(shù)據(jù)說(shuō)明:數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)類型的說(shuō)明次序標(biāo)準(zhǔn)化;變量名稱盡量有意義;對(duì)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)在注解中要說(shuō)明在程序設(shè)計(jì)中實(shí)現(xiàn)這個(gè)數(shù)據(jù)結(jié)構(gòu)的方法。 (3) 語(yǔ)句的構(gòu)造簡(jiǎn)單明了:不要為節(jié)省空間將多個(gè)語(yǔ)句寫(xiě)在同一行;盡量避免復(fù)雜的條件及“非”條件的測(cè)試;避免大量使用循環(huán)嵌套和條件嵌套;括號(hào)的使用是為了使邏輯表達(dá)式和算術(shù)表達(dá)式的運(yùn)算順序清晰直觀。 (4) 效率:考慮程序運(yùn)行的時(shí)間存儲(chǔ)器效率、輸入/輸出的效率;在處理程序正確性、清晰與效率之間的關(guān)系時(shí)先求程序
39、正確后求快;先求清楚后求快;保持程序簡(jiǎn)單以求快;書(shū)寫(xiě)清楚,不為“效率”犧牲清晰。 6. 第四代語(yǔ)言(4GL)應(yīng)具備哪些的特征? (1) 具有很強(qiáng)的數(shù)據(jù)管理能力,能對(duì)數(shù)據(jù)庫(kù)進(jìn)行有效的存取、查詢和其它有關(guān)操作; (2) 能提供一組高效的、非過(guò)程化的命令,組成語(yǔ)言的基本語(yǔ)句,編程時(shí)用戶只需用這些命令說(shuō)明“做什么”,不必描述實(shí)現(xiàn)的細(xì)節(jié); (3) 能滿足多功能、一體化的要求。為此,語(yǔ)言中除必須含有控制程序邏輯與實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作的語(yǔ)句外,還應(yīng)包括生成與處理報(bào)表、表格、圖形,以及實(shí)現(xiàn)數(shù)據(jù)運(yùn)算和分析統(tǒng)計(jì)功能的各種語(yǔ)句,共同構(gòu)成一個(gè)一體化的語(yǔ)言,以適應(yīng)多種應(yīng)用開(kāi)發(fā)的需要。 7.修改右表中的程
40、序結(jié)構(gòu)。 改進(jìn)如下程序的結(jié)構(gòu) 改進(jìn)后的程序結(jié)構(gòu): if (A>B) then if (A<B) then if (X>Y) then A:=B; B:=Y; else if (X>Y) then else B:=Y;
41、 A:=X; else endif; A:=X; else endif; A=:B; endif; 將如下的多出口循環(huán)結(jié)構(gòu)改為單出口程序結(jié)構(gòu) 改進(jìn)后的單出口程序結(jié)構(gòu) WHILE C1 DO exit1:=false; exit2:=false; BEGIN
42、 WHILE C1 AND (NOT exit1) AND (NOT exit2) DO … BEGIN IF C2 THEN GOTO 20; … … IF C2 THEN exit1:=true; IF C3 THEN GOTO 30;
43、 … … IF C3 THEN exit2:=true; END; … 20:{code for C2 exit} END ; GOTO 40; IF (exit1) THEN GOTO 20; 30:{code for C3 ex
44、it} IF (exit2) THEN GOTO 30; 40: 20:{code for C2 exit} GOTO 40; 30:{code for C3 exit} 40: 第七章 習(xí)題參考答案 一.回答問(wèn)題 1.軟件測(cè)試的基本任務(wù)? 軟件測(cè)試是按照特定的規(guī)則,發(fā)現(xiàn)軟件錯(cuò)誤的過(guò)程;好的測(cè)試方案是盡可能發(fā)現(xiàn)迄今尚未發(fā)現(xiàn)錯(cuò)誤的測(cè)試;成功的測(cè)試方案是發(fā)現(xiàn)迄今尚未發(fā)現(xiàn)錯(cuò)誤的測(cè)試; 2.測(cè)試與調(diào)試的主要區(qū)別? (1) 測(cè)試從一個(gè)側(cè)面證明程序員
45、的失敗;調(diào)試證明程序員的正確; (2) 測(cè)試從已知條件開(kāi)始,使用預(yù)先定義的程序,且有預(yù)知的結(jié)果,不可預(yù)見(jiàn)的僅是程序是否通過(guò)測(cè)試;調(diào)試從不可知內(nèi)部條件開(kāi)始,除統(tǒng)計(jì)性調(diào)試外,結(jié)果是不可預(yù)見(jiàn)的; (3) 測(cè)試有計(jì)劃并且要進(jìn)行測(cè)試設(shè)計(jì);調(diào)試不受時(shí)間約束; (4) 測(cè)試是發(fā)現(xiàn)錯(cuò)誤、改正錯(cuò)誤、重新測(cè)試的過(guò)程;調(diào)試是一個(gè)推理的過(guò)程; (5) 測(cè)試執(zhí)行是有規(guī)程的;調(diào)試執(zhí)行要求程序員進(jìn)行必要的推理; (6) 測(cè)試由獨(dú)立的測(cè)試組在不了解軟件設(shè)計(jì)的件下完成;調(diào)試由了解詳細(xì)設(shè)計(jì)的程序員完成; (7) 大多數(shù)測(cè)試的執(zhí)行和設(shè)計(jì)可由工具支持;調(diào)試用的工具主要是調(diào)試器。 3.人工復(fù)審的方式和作用? 人工
46、復(fù)審的方式:代碼會(huì)審、走查和排練和辦公桌檢查; 人工復(fù)審的作用:檢查程序的靜態(tài)錯(cuò)誤。 4.什么是黑盒測(cè)試?黑盒測(cè)試主要采用的技術(shù)有哪些? 黑盒測(cè)試也稱為功能測(cè)試,它著眼于程序的外部特征,而不考慮程序的內(nèi)部邏輯結(jié)構(gòu)。測(cè)試者把被測(cè)程序看成一個(gè)黑盒,不用關(guān)心程序的內(nèi)部結(jié)構(gòu)。黑盒測(cè)試是在程序接口處進(jìn)行測(cè)試,它只檢查程序功能是否能按照規(guī)格說(shuō)明書(shū)的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫(kù)或文件)的完整性。 黑盒測(cè)試主要采用的技術(shù)有:等價(jià)分類法、邊沿值分析法、錯(cuò)誤推測(cè)法和因果圖等技術(shù)。 5.什么是白盒測(cè)試?白盒測(cè)試主要采用的技術(shù)有哪些?
47、 測(cè)試者了解被測(cè)程序的內(nèi)部結(jié)構(gòu)和處理過(guò)程,對(duì)程序的所有邏輯路徑進(jìn)行測(cè)試,在不同點(diǎn)檢查程序狀態(tài),確定實(shí)際狀態(tài)與預(yù)期狀態(tài)是否一致。 白盒測(cè)試主要采用的技術(shù)有:路徑測(cè)試技術(shù)和事務(wù)處理流程技術(shù),對(duì)包含有大量邏輯判斷或條件組合的程序采用基于邏輯的測(cè)試技術(shù)。 6.路徑測(cè)試技術(shù)中幾種主要覆蓋的含義?舉例說(shuō)明? 語(yǔ)句覆蓋:至少執(zhí)行程序中所有語(yǔ)句一次。 判定覆蓋:使被測(cè)程序中的每一個(gè)分支至少執(zhí)行一次。故也稱為分支覆蓋。 條件覆蓋:執(zhí)行所有可能的穿過(guò)程序的控制路流程。 條件組合測(cè)試:設(shè)計(jì)足夠的測(cè)試用例,使每個(gè)判定中的所有可能條件取值組合至少執(zhí)行一次。 (例略) 7.等價(jià)分類法的測(cè)
48、試技術(shù)采用的一般方法?舉例說(shuō)明? (1) 為每個(gè)等價(jià)類編號(hào); (2) 設(shè)計(jì)一個(gè)新的測(cè)試方案,以盡可能多的覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步驟,直到所有有效等價(jià)類被覆蓋為止。 (3) 設(shè)計(jì)一個(gè)新的測(cè)試方案,使它覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類, 重復(fù)這一步驟,直到所有無(wú)效等價(jià)類被覆蓋為止。 (例略) 8.軟件測(cè)試的一般步驟? 單元測(cè)試、子系統(tǒng)測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試、平行測(cè)試。 9.比較集成試的兩種方式的優(yōu)劣? 非漸增式測(cè)試方式:分別測(cè)試模塊,再把所有模塊按設(shè)計(jì)要求放在一起組成所要的程序。該方法編寫(xiě)測(cè)試軟件工作量大,模塊間的接口錯(cuò)誤發(fā)現(xiàn)得晚,錯(cuò)誤定位較難診斷,總體測(cè)
49、試有的錯(cuò)誤容易漏掉,測(cè)試時(shí)間相對(duì)較少,可以并行測(cè)試所有模塊,能充分利用人力,加快工程進(jìn)度。。 漸增式測(cè)試方式:把下一個(gè)要測(cè)試的模塊,同已經(jīng)測(cè)試好的那些模塊結(jié)合起來(lái)進(jìn)行測(cè)試。該方法利用已測(cè)試過(guò)的模塊作測(cè)試軟件,開(kāi)銷小,較早發(fā)現(xiàn)模塊間的接口錯(cuò)誤,錯(cuò)誤定位往往和最近入的模塊相關(guān),對(duì)已測(cè)試好的模塊可在新加入模塊的條件下受到新的檢驗(yàn),測(cè)試更徹底,需要較多的測(cè)試時(shí)間,不能并行測(cè)試。 總的來(lái)說(shuō),漸增式測(cè)試方法比較好。 10.軟件測(cè)試的策略? (1) 在任何情況下都應(yīng)使用邊界值分析的方法。 (2) 必要時(shí)用等價(jià)類劃分法補(bǔ)充測(cè)試方案。 (3) 必要時(shí)再用錯(cuò)誤推測(cè)法補(bǔ)充測(cè)試方案。 (4) 對(duì)照程
50、序邏輯,檢查已設(shè)計(jì)出的測(cè)試方案。 (5) 根據(jù)對(duì)程序可靠性的要求采用不同的邏輯覆蓋標(biāo)準(zhǔn),再補(bǔ)充一些測(cè)試方案。 二.某電力公司有A、B、C、D共四類收費(fèi)標(biāo)準(zhǔn),并規(guī)定,居民用電每月200度以下按A類收費(fèi), 200度以上按B類收費(fèi)。動(dòng)力電以每月1萬(wàn)度為分界,非高峰用電不足1萬(wàn)度按B類收費(fèi),達(dá)到或超過(guò)1萬(wàn)度按C類收費(fèi)。高峰用電不足1萬(wàn)度按C類收費(fèi),達(dá)到或超過(guò)1萬(wàn)度按D類收費(fèi)。試用基于邏輯的測(cè)試方法為它設(shè)計(jì)足夠的測(cè)試用例實(shí)現(xiàn)條件組合的完全覆概。 規(guī)則號(hào) 1 2 3 4 5 6 居民 用電 200度以下 Y 200度以上 Y 動(dòng)力用電
51、 非高峰 1萬(wàn)度以下 Y 1萬(wàn)度以上 Y 高峰 1萬(wàn)度以下 Y 1萬(wàn)度以上 Y 收費(fèi) 標(biāo)準(zhǔn) A類 ▲ B類 ▲ ▲ C類 ▲ ▲ D類 ▲ 測(cè)試用例 用電類型 輸入數(shù)據(jù) 預(yù)期結(jié)果 居民 用電 90度/月 A 110度/月 B 動(dòng)力用電 非 高峰 8000度/月 B 12000度/月 C 高峰 9000度/月 C 11000度/月 D
52、 三.如圖顯示某程序的邏輯結(jié)構(gòu)。 試為它設(shè)計(jì)足夠的測(cè)試用例,分別實(shí)現(xiàn)對(duì)程序的判定覆概、條件覆概和條件組合覆概。 A>0 and B=0 S1 S2 T F 設(shè)計(jì)測(cè)試方案 覆蓋種類 需滿足的條件 測(cè)試數(shù)據(jù) 期望結(jié)果 判定覆蓋 A>1,B=0 A=2,B=0 執(zhí)行S1 A>1,B10或 A£1,B=0或 A£1,B10 A=2,B=1或 A=1,B=0或 A=1,B=1 執(zhí)行S
53、2 條件覆蓋 以下四種情況各出現(xiàn)一次 A>1 B=0 A=2,B=0 執(zhí)行S1 A£1 B10 A=1,B=1 執(zhí)行S2 條件組合 覆蓋 A>1,B=0 A=2,B=0 執(zhí)行S1 A>1,B10 A=2,B=1 執(zhí)行S2 A£1,B=0 A=1,B=0 執(zhí)行S2 A£1,B10 A=1,B=1 執(zhí)行S2 四.某城市電話號(hào)碼由三部分組成。它們的名稱和內(nèi)容分別是: 地區(qū)碼:空白或三位數(shù)字; 前 綴:非‘0’或‘1’的三位數(shù)字; 后 綴:4位數(shù)字。 假定被測(cè)程序能接受一切符合上述
54、規(guī)定的電話號(hào)碼,拒絕所有不符合規(guī)定的電話號(hào)碼。根據(jù)該程序的規(guī)格說(shuō)明,作等價(jià)類的劃分,并設(shè)計(jì)測(cè)試方案。 1.劃分等價(jià)類 輸入條件 有效等價(jià)類 無(wú)效等價(jià)類 地區(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ù)字。 設(shè)計(jì)測(cè)試方案 方案 內(nèi)容 輸 入 預(yù)期 輸出 地區(qū)碼 前
55、綴 后綴 1 空白 200~999之間的三位數(shù)字 四位數(shù)字 ( )276-2345 有效 2 三位數(shù)字 四位數(shù)字 (635)805-9321 有效 3 有非數(shù)字字符 (20A)723-4567 無(wú)效 4 少于三位數(shù)字 (33 )234-5678 無(wú)效 5 多于三位數(shù)字 (5555)345-6789 無(wú)效 6 有非數(shù)字字符 (345)5A2-3456 無(wú)效 7 起始位為‘0’ (345)012-3456 無(wú)效 8 起始位為‘1’ (345)132-3456 無(wú)效 9
56、 少于三位數(shù)字 (345) 92-3456 無(wú)效 10 多于三位數(shù)字 (345)4562-3456 無(wú)效 11 有非數(shù)字字符 (345)342-3A56 無(wú)效 12 少于四位數(shù)字 (345)342- 356 無(wú)效 13 多于四位數(shù)字 (345)562-34567 無(wú)效 第八章 習(xí)題參考答案 1.為什么說(shuō)軟件的維護(hù)是不可避免的? 因?yàn)檐浖拈_(kāi)發(fā)過(guò)程中,一般很難檢測(cè)到所有的錯(cuò)誤,其次軟件在應(yīng)用過(guò)程中需要隨用戶新的要求或運(yùn)行環(huán)境的變化而進(jìn)行軟件的修改或完成功能的增刪等,為了提高軟件的應(yīng)用水平和使用壽命,
57、軟件的維護(hù)是不可避免的。 2.軟件的維護(hù)一般分為哪幾類? 改正性維護(hù):滿足用戶對(duì)已開(kāi)發(fā)產(chǎn)品的性能與運(yùn)行環(huán)境不斷提高的要求,進(jìn)而達(dá)到延長(zhǎng)軟件壽命的目的。 適應(yīng)性維護(hù):對(duì)程序使用期間發(fā)現(xiàn)的程序錯(cuò)誤進(jìn)行診斷和改正的過(guò)程,配合變化了的環(huán)境進(jìn)行修改軟件 的活動(dòng); 完善性維護(hù):滿足用戶在使用過(guò)程中提出增加新的功能或修改已有功能的建議而進(jìn)行的工作; 預(yù)防性維護(hù):為了改善未來(lái)的可維護(hù)性或可靠性而修改軟件的工作。 3.影響軟件維護(hù)的因素有哪些? 開(kāi)發(fā)方法:采用模塊化詳細(xì)設(shè)計(jì)文檔有助于理解軟件的結(jié)構(gòu)、界面功能和內(nèi)部流程;開(kāi)發(fā)過(guò)程中嚴(yán)格而科學(xué)的管理規(guī)劃及清晰可靠的文檔資料對(duì)發(fā)生錯(cuò)誤后的理解與糾錯(cuò)是至
58、關(guān)重要的;開(kāi)發(fā)過(guò)程中模塊的獨(dú)立程度越高,對(duì)軟件修改越容易,對(duì)軟件的改進(jìn)和移植越方便。 開(kāi)發(fā)條件:軟件開(kāi)發(fā)及維護(hù)人員的水平?jīng)Q定了軟件開(kāi)發(fā)的質(zhì)量和維護(hù)的效率;開(kāi)發(fā)過(guò)程中使用標(biāo)準(zhǔn)的程序設(shè)計(jì)語(yǔ)言和標(biāo)準(zhǔn)的操作系統(tǒng)接口,可以大大提高軟件的可維護(hù)性;在測(cè)試過(guò)程中用例的有效性,可極大地減少軟件存在的錯(cuò)誤;其次使用規(guī)范化的文檔資料可為維護(hù)提供更好的依據(jù)。 4.軟件維護(hù)困難主要表現(xiàn)在什么方面? (1) 一般來(lái)講,維護(hù)人員對(duì)開(kāi)發(fā)人員寫(xiě)的程序及文檔,理解都比較困難,對(duì)維護(hù)工作不會(huì)喜歡; (2) 維護(hù)持續(xù)時(shí)間都很長(zhǎng),在開(kāi)發(fā)人員不在現(xiàn)場(chǎng)的輕快下,維護(hù)軟件通常是很困難的; (3) 絕大多數(shù)軟件在設(shè)計(jì)時(shí)對(duì)將來(lái)的軟件
59、修改都沒(méi)有考慮或考慮不多,尤其未能在設(shè)計(jì)中強(qiáng)調(diào)并認(rèn)真解決好模塊的獨(dú)立性,使軟件的修改既困難又易發(fā)生差錯(cuò)。 5.決定軟件可維護(hù)性的因素? (1) 軟件的可理解性、可測(cè)試性、可修改性; (2) 文檔描述符合要求、用戶文檔簡(jiǎn)潔明確、系統(tǒng)文檔完整并且標(biāo)準(zhǔn)。 6.軟件價(jià)格應(yīng)該計(jì)入維護(hù)成本嗎?為什么? 在軟件的生命周期中,軟件維護(hù)的工作量非常大,不同應(yīng)用領(lǐng)域的維護(hù)成本差別也很大。一般大型軟件的維護(hù)成本遠(yuǎn)遠(yuǎn)高于開(kāi)發(fā)成本若干倍。因此軟件價(jià)格中應(yīng)該計(jì)入維護(hù)成本。 7.對(duì)前面各章中分析的各應(yīng)用系統(tǒng),提出改進(jìn)和擴(kuò)充功能的要求? (1) 教材銷售采購(gòu)系統(tǒng); (2) 圖書(shū)管理系統(tǒng); (3) 房產(chǎn)
60、管理系統(tǒng)。 (4) (略) 第九章 習(xí)題參考答案 1.軟件工程管理的內(nèi)容? (1) 費(fèi)用管理: 對(duì)軟件開(kāi)發(fā)進(jìn)行成本核算,使軟件生產(chǎn)按照商品生產(chǎn)的規(guī)律辦事。包括:以簡(jiǎn)單、科學(xué)方法估算軟件開(kāi)發(fā)費(fèi)用,作為簽定開(kāi)發(fā)合同的根據(jù);管理開(kāi)發(fā)費(fèi)用的有效使用,即用經(jīng)濟(jì)手段來(lái)保證產(chǎn)品如期按質(zhì)完成。 (2) 質(zhì)量管理: 按項(xiàng)目的質(zhì)量保證計(jì)劃,確保各個(gè)開(kāi)發(fā)階段的開(kāi)發(fā)和維護(hù)工作全部按軟件工程的規(guī)范進(jìn)行,保證軟件產(chǎn)品的質(zhì)量。 (3) 配置管理:通過(guò)對(duì)于程序、文檔和數(shù)據(jù)的各種版本所進(jìn)行的管理,保證資料的完整性與一致性。 (4) 項(xiàng)目管理:制定《項(xiàng)目實(shí)施計(jì)劃》,按照計(jì)劃的內(nèi)容組織和實(shí)施軟件的工程化生產(chǎn)。最終
61、目標(biāo)是以合理的費(fèi)用和進(jìn)度,圓滿完成計(jì)劃所規(guī)定的軟件項(xiàng)目。 2.軟件項(xiàng)目有哪些特點(diǎn)? (1) 軟件項(xiàng)目與其他任何產(chǎn)業(yè)項(xiàng)目不同,它是算法、思想、概念、組織、流程、效率、優(yōu)化等的融合體; (2) 開(kāi)發(fā)軟件項(xiàng)目產(chǎn)品,在多數(shù)情況下,用戶給不出明確的想法和要求。 (3) 在開(kāi)發(fā)過(guò)程中,程序及其相關(guān)的文檔資料常常需要修改,在修改過(guò)程中又可能帶來(lái)新的問(wèn)題,且這些問(wèn)題要在很久以后才會(huì)發(fā)現(xiàn)。 (4) 在研制開(kāi)發(fā)過(guò)程中,文檔資料是不可缺少的,但工作量又是巨大的,往往也是人們不愿去作的。 (5) 參加軟件項(xiàng)目的工作人員,要求具有一定的業(yè)務(wù)水平和實(shí)際工作經(jīng)驗(yàn),而很難完全避免的人員流動(dòng),對(duì)工作的影響是很大的。
62、離開(kāi)的人員不僅帶走了重要的信息,而且?guī)ё吡斯ぷ鹘?jīng)驗(yàn)。 3.軟件成本估算的一般方法? 自頂向下估計(jì): 首先估算出項(xiàng)目總的開(kāi)發(fā)成本,然后在項(xiàng)目?jī)?nèi)部進(jìn)行成本分配。由少數(shù)專家參與,依靠他們過(guò)去的經(jīng)驗(yàn),將要開(kāi)發(fā)的軟件與過(guò)去開(kāi)發(fā)過(guò)的軟件進(jìn)行“類比”,以估計(jì)新的軟件開(kāi)發(fā)所需要的工作量和成本。 自底向上估計(jì): 將開(kāi)發(fā)任務(wù)分成若干子任務(wù),子任務(wù)又分成子子任務(wù),直到每一個(gè)單元內(nèi)容足夠明確為止;把各個(gè)任務(wù)單元的成本估計(jì)出來(lái),匯合成項(xiàng)目的總成本。該方法得到的結(jié)果比較接近實(shí)際。 4.為什么在軟件開(kāi)發(fā)中,不能用簡(jiǎn)單增加人員的方法來(lái)縮短開(kāi)發(fā)時(shí)間? 大量軟件開(kāi)發(fā)實(shí)踐說(shuō)明:向一個(gè)已經(jīng)延遲的項(xiàng)目追加開(kāi)發(fā)人員,可
63、能使它完成得更晚。因?yàn)楫?dāng)開(kāi)發(fā)人員以算術(shù)級(jí)數(shù)增長(zhǎng)時(shí),而人員之間的通信將以幾何級(jí)數(shù)增長(zhǎng),往往“得不償失”。 5.影響軟件質(zhì)量的主要因素有哪些? (1) 產(chǎn)品運(yùn)行:正確性、風(fēng)險(xiǎn)性、效率、完整性、健壯性和可用性; (2) 產(chǎn)品修改:可理解性、可維護(hù)性、靈活性、可測(cè)試性; (3) 產(chǎn)品轉(zhuǎn)移:可移植性、可重用性和互運(yùn)行性。 6.本章第四節(jié)的例子是某個(gè)軟件項(xiàng)目的PERT圖。 (1)找出關(guān)鍵路徑和完成項(xiàng)目的最早時(shí)間; (2)標(biāo)出每項(xiàng)活動(dòng)的最早起止時(shí)間與最遲起止時(shí)間。 (見(jiàn)該章教案舉例) 7.將上題的內(nèi)容改用Gantt圖來(lái)表示。 (見(jiàn)該章教案舉例) 第十章 習(xí)題參考答
64、案 1.軟件工具是什么?按照軟件生存周期可將其分為幾類? 軟件工具是指為支持計(jì)算機(jī)軟件及其文檔的開(kāi)發(fā)、維護(hù)、模擬、移植或管理而研制的程序系統(tǒng)。按照軟件生存周期可將其分為如下幾類: (1) 需求分析:如數(shù)據(jù)流圖繪制與分析工具、狀態(tài)轉(zhuǎn)換圖繪制與分析工具、面向?qū)ο蟮哪P秃头治龉ぞ摺⒖焖僭蜆?gòu)造工具、數(shù)據(jù)字典與數(shù)據(jù)庫(kù)工具等。 (2) 軟件設(shè)計(jì):如HIPO圖、PDL(程序設(shè)計(jì)語(yǔ)言)或PAD(問(wèn)題分析圖)支持工具等。 (3) 編碼:集成化的程序員工作平臺(tái)。如各種正文編輯器和常規(guī)的編譯程序、匯編程序、連結(jié)程序及符號(hào)調(diào)試器等。 (4) 軟件測(cè)試:如靜態(tài)分析器、動(dòng)態(tài)覆蓋率測(cè)試器、測(cè)試用例生成器、測(cè)
65、試報(bào)告生成器及環(huán)境模擬器等。 (5) 軟件維護(hù):如反匯編程序、反編譯程序、程序結(jié)構(gòu)分析器、源程序格式化工具、文檔生成工具、源程序至PAD(問(wèn)題分析圖)或流程圖的自動(dòng)轉(zhuǎn)換工具等。 2.評(píng)價(jià)軟件工具的原則? (1) 易用性:友好的用戶界面,用戶樂(lè)于使用; (2) 對(duì)開(kāi)發(fā)方法的支持:能滿足預(yù)期的任務(wù)和功能需求,且能支持完成該任務(wù)所遵循的方法學(xué); (3) 穩(wěn)健性:具備自檢測(cè)機(jī)制,即使在故障情況下也不會(huì)導(dǎo)致嚴(yán)重后果; (4) 性能:能使資源得到充分有效的利用; (5) 工具結(jié)構(gòu)柔性:工具結(jié)構(gòu)是柔軟的、可修改的和可擴(kuò)充的。 3.什么是軟件開(kāi)發(fā)環(huán)境?按技術(shù)發(fā)展方向分為哪幾類環(huán)境? 將一組相
66、關(guān)的軟件工具按照一定的軟件開(kāi)發(fā)方法、軟件生產(chǎn)和維護(hù)模型有機(jī)的組合起來(lái),為特定的領(lǐng)域所使用,以支持從需求分析、設(shè)計(jì)、編碼、測(cè)試直到維護(hù)的整個(gè)軟件生命周期的計(jì)算機(jī)輔輔助開(kāi)發(fā)程序系統(tǒng)稱為軟件開(kāi)發(fā)環(huán)境。 按技術(shù)發(fā)展方向軟件開(kāi)發(fā)環(huán)境可分為以語(yǔ)言為中心的環(huán)境、面向結(jié)構(gòu)化的環(huán)境和工具箱環(huán)境。 4.工具箱類軟件工具的基本特點(diǎn)? (1) 在某種OS基礎(chǔ)上通過(guò)一組小的實(shí)用工具構(gòu)成; (2) 雖然各工具之間相互獨(dú)立,但系統(tǒng)能提供統(tǒng)一的用戶命令界面及工具之間統(tǒng)一的數(shù)據(jù)交換方式; (3) 工具箱中各工具之間是相互獨(dú)立的,用戶可根據(jù)需要進(jìn)行靈活的增加和裁減; (4) 工具箱環(huán)境中一般除了包括支持編碼階段的工具(如編輯程序、編譯程序、匯編程序、連結(jié)程序調(diào)試程序等)外,還可包括支持大型軟件開(kāi)發(fā)方面的工具; (5) 由于工具箱環(huán)境具有較強(qiáng)的通用性和靈活性,因而目前商品化的算機(jī)系系統(tǒng)上配置的軟件環(huán)境大多屬于這一類。如:UNIX程序設(shè)計(jì)環(huán)境、及VAX/VNS SET、PCDE、APCE等程序設(shè)計(jì)環(huán)境。 5.軟件開(kāi)發(fā)環(huán)境的組成與各成分的作用? 軟件開(kāi)發(fā)環(huán)境的構(gòu)成:交互式人機(jī)界面、工具集及軟件環(huán)境數(shù)據(jù)庫(kù)。
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《有機(jī)化合物的合成》
- 某知名化妝品公司各部門職責(zé)
- 八年級(jí)數(shù)學(xué)上冊(cè) 第13章 全等三角形 13.4 三角形的尺規(guī)作圖優(yōu)質(zhì)課件 (新版)冀教版
- 化學(xué)九上人教版第六單元課題3第1課時(shí)
- 長(zhǎng)春版小學(xué)五年級(jí)下《桂林山水甲天下》
- 現(xiàn)代社會(huì)更需要通才-攻辯
- 海底兩萬(wàn)里(康塞爾)
- 客戶經(jīng)理積分考核介紹
- 現(xiàn)代教育技術(shù)培訓(xùn)
- 混凝土預(yù)制樁、鋼樁施工
- 氨基酸類藥物
- 威尼斯建筑與藝術(shù)雙年展掠影
- 地產(chǎn)營(yíng)銷操作手冊(cè)課件
- 15機(jī)械的效率和自鎖222
- 建筑施工事故案例分析