Q2.4.6+(Q1.3.5.7选2)Q1====P141-4.P125-126下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的?(2)设计一个等价的结构化程序。(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。A:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,以下给出了等价的结构化程序的盒图。(3)不使用flag的等价结构化程序盒图:(NOTq)OR(NOTflag)FTpgQ2=====P54-5P48北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0.校外电话又分为本市电话和外地电话两类。拨校外电话需要先拨0,若是本市电话则接着拨8位数字(第一位不是0),若是外地电话则拨3位区码后再拨8位电话号码(第一位不是0)。A:电话号码=[校内电话号码|校外电话号码]校内电话号码=非零数字+3位数字校外电话号码=[本市号码|外地号码]本市号码=数字零+8位数字外地号码=数字零+3位数字+8位数字非零数字=[1|2|3|4|5|6|7|8|9]数字零=03位数字=3{数字}38位数字=非零数字+7位数字7位数字=7{数字}7数字=[0|1|2|3|4|5|6|7|8|9]其中,[]意思是或,从校内电话号码或校外电话号码中选择一个;{}表示重复,两边的数字表示重复次数的下限和上限;=意思是定义为;+意思是和,连接两个分量。Q3=====P73-6P65-66Q4=====P187-9P180-181如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据:(a)7月1日:集成测试开始,没有发现错误。(b)8月2日:总共改正100个错误,此时MTTF=0.4h(c)9月1日:总共改正300个错误,此时MTTF=2h根据上列数据完成下列各题。估计程序中的错误总数。为使MTTF达到10h,必须测试和调试这个程序多长时间?画出MTTF和测试时间τ之间的函数关系曲线。A:(1)据估算平均无故障时间MTTF的公式有:1/K(Et/100000-100/100000)=0.41/K(Et/100000-300/100000)=2得:K=1000,Et=350即程序中的错误总数达350。(2)当MTTF=10h时,有1/K(350/100000-Ec/100000)=10得:Ec=340.按七八月分测试改错进度估算,还需进行2个月的集成测试。(3)MTTF和测试时间τ之间的函数关系曲线如下:τ(月)1220.4MTTF(h)Q5=====P142-8P137画出下列伪码程序的流图,计算它的环形复杂度。你觉得这个程序的逻辑有什么问题吗?CEXAMPLELOOP:DOWHILEX0A=B+1IFA10THENX=AELSEY=ZENDIFIFY5THENPRINTX,YELSEIFY=2THENGOTOLOOPELSEC=3ENDIFENDIFG=H+RENDDOIFF0THENPRINTGELSEPRINTKENDIFSTOPA:(1)该伪码程序的流程图及程序流图如下:环形复杂度V(G)=流图中的边数-流图中的结点数+2=19-14+2=7=流图中的区域数=流图中判定结点数目+1=6+1=7(2)有问题,算法中控制最外层循环的变量Z没有初始化,且在该循环内部未出现任何改变Z取值的语句。将导致程序中的WHILE循环部分要么不执行,要么死循环。Q6=====P162-164分析下列程序,请画出该伪代码的程序流程图,并标注abc……等路径号,设计该程序的条件覆盖测试用例和组合覆盖的白盒测试用例.voidDoWork(intx,inty,intz){intk=0,j=0;if((x3)&&(z10)){k=x*y-1;j=sqrt(k);}//语句块1if((x==4)||(y5)){j=x*y+10;}//语句块2j=j%3;//语句块3}(1)对于第一个判定((x3)&&(z10)):条件x3取真值记为T1,取假值记为-T1条件z10取真值记为T2,取假值记为-T2对于第二个判定((x==4)||(y5)):条件x==4取真值记为T3,取假值记为-T3条件y5取真值记为T4,取假值记为-T4根据条件覆盖的基本思想,要使上述4个条件可能产生的8种情况至少满足一次,设计测试用例如下:测试用例执行路径覆盖条件覆盖分支x=4、y=6、z=5abdT1、T2、T3、T4bdx=2、y=5、z=15ace-T1、-T2、-T3、-T4ce(2)组合覆盖的目的是要使设计的测试用例能覆盖每一个判定的所有可能的条件取值组合。对DoWork函数中的各个判定的条件取值组合加以标记:1、x3,z10记做T1T2,第一个判定的取真分支2、x3,z=10记做T1-T2,第一个判定的取假分支3、x=3,z10记做-T1T2,第一个判定的取假分支4、x=3,z=10记做-T1-T2,第一个判定的取假分支5、x==4,y5记做T3T4,第二个判定的取真分支6、x==4,y=5记做T3-T4,第二个判定的取真分支7、x!=4,y5记做-T3T4,第二个判定的取真分支8、x!=4,y=5记做-T3-T4,第二个判定的取假分支根据组合覆盖的基本思想,设计测试用例如下:测试用例执行路径覆盖条件覆盖组合号x=4、y=6、z=5abdT1、T2、T3、T41和5x=4、y=5、z=15acdT1、-T2、T3、-T42和6x=2、y=6、z=5acd-T1、T2、-T3、T43和7x=2、y=5、z=15ace-T1、-T2、-T3、-T44和8Q7=====P141-5P124研究下面的伪代码程序:LOOP:SetIto(START+FINISH)/2IfTABLE(I)=ITEMgotoFOUNDIfTABLE(I)ITEMSetSTARTto(I+1)IfTABLE(I)ITEMSetFINISHto(I-1)If(FINISH-START)1gotoLOOPIfTABLE(START)=ITEMgotoFOUNDIfTABLE(FINISH)=ITEMgotoFOUNDSetFLAGto0GotoDONEFOUND:SetFLAGto1DONE:Exit画出程序流程图。程序是结构化吗?说明理由。若程序是非结构化的,设计一个等价的结构化程序并且画出流程图。此程序的功能是什么?它完成预定功能有什么隐含的前提条件。A:(1)该程序流程图:(2)结构化的程序是单入口单出口,而该程序的流程图有两个出口,是非结构化程序。(3)其等价的结构化程序流程图:(4)该程序有二分查找的功能,它完成预定功能的隐含前提条件是:表数据是由小到大已作好排序的有序序列。1.模块()定义为受该模块内一个判断影响的所有模块集合。A.控制域B、作用域C、宽度D、接口2.大型系统的对象模型包含五个层次:A.主题层类与对象层结构层代码层服务层B、主题层设计层结构层代码层服务层C、主题层设计层结构层属性层服务层D、主题层类与对象层结构层属性层服务层3.在进行软件测试时,首先应当进行(),然后再进行组装测试,最后再进行有效性测试。A.单元测试B、集成测试C、确认测试D、组合测试4.产生软件危机的原因主要与两个方面的问题有关:A.软件在计算机中很难识别,存在磁盘中也看不到。B.软件设计对人的智商要求很高,也要求很高的资金投入。C.软件产品本身的特点与其它工业产品不一样,而且在软件的开发和维护过程中用的方法不正确。D.软件很难理解,硬件也很复杂。5.为保持类的简单性,需注意:A.尽可能简化对象间合作关系B、有明确的定义C、尽量提供更多的公共服务D、避免包含过多属性6.软件测试的目的是()。A.评价软件的质量B.发现软件的错误C.找出软件的所有错误D.证明软件是正确的7.Jackson结构图的三种基本结构是()A.顺序结构、选择结构、层次结构B.顺序结构、选择结构、重复结构C.层次结构、选择结构、重复结构D.顺序结构、层次结构、重复结构8.以下属于面向对象程序设计语言的是()A.Java语言B.C语言C.Pascal语言D.Prolog语言9.面向对象建模得到的模型包含系统三要素是:A.静态结构交互次序数据变换B.静态结构动态结构数据变换C.动态结构交互次序数据字典D.动态结构交互次序数据变换10.Petri网包含的四种元素是:A.位置P状态S输入I输出OB、位置P任务T输入I输出OC、状态S转换T输入I输出OD、位置P转换T输入I输出O11.模块(),则说明模块的独立性越强。A.耦合越强B、扇入数越高C、耦合越弱D、扇入数越低12.以下四种逻辑覆盖中,发现错误能力最强的是()A.语句覆盖B.条件覆盖C.判定覆盖D.条件组合覆盖13.关于面向对象方法学四个要点表述错误的是:A.对象是融合了数据及数据上的操作行为的统一的软件构件B.对象间可实现相互间直接的数据访问C.父类子类间的等级关系称为继承D.所有对象都划分为类.14.有风险分析的软件生存周期模型是()。A.瀑布模型B.喷泉模型C.螺旋模型D.增量模型15.面向对象分析技术的特征是()A.耦合与内聚B.抽象化和模块化C.模块封装和内部信息隐蔽D.模块和模块化