软件工程导论第七章课后答案.doc
.第七章 习题答案2.研究下面给出的伪码程序,要求:画出它的程序流程图。它是结构化的还是非结构化的?说明你的理由。若是非结构化的,则(a) 把它改造成仅用三种控制结构的结构化程序;(b) 写出这个结构化程序的伪码;(c) 用盒图表示这个结构化程序。找出并改正程序中的逻辑错误。COMMENT:PROGRAMSEARCHESFORFIRSTNREFERENCESTOATOPICINANINFORMATIONRETRIEVALSYSTEMWITHTTOTALENTRIESINPUTNINPUTKEYWORD(S)FORTOPIC I=0MATCH=0DOWHILEITI=I+1IFWORD=KEYWORDTHENMATCH=MATCH+1STOREINBUFFEREND精品.IFMATCH=NTHENGOTOOUTPUTENDENDIFN=0THENPRINT”NOMATCH”OUTPUT:ELSECALLSUBROUTINETOPRINTBUFFERINFORMATIONEND解:程序流程图(如图2.1所示)此程序是非结构化的,它有一个GOTO语句,并且是从一个循环体内转到循环体外的一个条件语句内部。精品.YESYES开 始输入N输入关键字WORDI=0MATCH=0循环N+1次I=I+1I控制搜索总次数的计数器MATCH控制搜索成功次数的计数器遇到的字= KYEWORD?MATCH=MATCH+1保存MATCH到缓冲器MATCH=N?NON=0调子程序打印缓冲器信息打印“没有匹配”结束NOYES图2.1 修改后的伪码如下:精品.INPUT N,T 输入 NINPUT KEYWORD(S) FOR TOPIC 输入有关话题的关键字OPEN FILE 打开文件I=0MATCH=0DO WHILE IT 循环最多可做T次I=I+1READ A WORD OF FILE TO WORD 从文件里读一个字到变量WORDIF WORD=KEYWORD THEN MATCH=MATCH+1IF MATCH=N THEN EXIT 搜索到了N个关键字,就跳出循环END IFEND IFEND DOIF MATCH =0 THEN PRINT ”NO MATCH” 若MATCH =0就打印“没有相匹配”ELSE PRINT “共搜索到”;MATCH;“个匹配的关键字” 否则打印信息END IF修改后的程序框图(盒图)精品. 程序中的错误:语句“IF WORD=KEYWORD”里的变量“WORD”没有预先赋值。程序中没有预先输入T的值 “N=0”应该是“MATCH=0”4. 回答下列问题:(1) 什么是模块测试和集成测试?它们各有什么特点?答:模块测试是对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。其特点是:主要应用白盒测试的技术,对多个模块的测试可以并发的进行。集成测试是把模块装配在一起形成完整的软件包,在装配的同时进行测试。特点是:可能发生接口问题。精品.(2)假设有一个由1000行FORTRAN语句构成的程序(经编以后大约有5000条机器指令)估计在对它进行测试期间将发现多少个错误?为什么?答:月25至100个错误,美国的一些统计数字告诉我们通常这个比值在0.0050.02之间,也就是说,测试之前每1000条指令中大约有520个错误。假设测试之前每1000条指令中有10个错误,则估计对它进行测试期间将发现的错误数为:5000*10/1000=50。(3) 设计下面伪码程序的语句覆盖和条件覆盖测试用例:STARTINPUT(A,B,C)IF A>5 THEN X=10ELSE X=1END IFIF B>10 THEN Y=20ELSE Y=2END IFIF C>15 THEN Z=30ELSE Z=3END IFPRINT(X,Y,Z)精品.STOP答:此程序的语句覆盖用例:A=5,B=10,C=15;A=6,B=11,C=16输入A,B,CA>5>X=10X=1B>10>Y=20Y=2C>15>Z=30Z=3打印X,Y,ZStartStop如有侵权请联系告知删除,感谢你们的配合!条件覆盖用例为:A=5,B=10,C=15;A=6,B=11,C=16。精品