1、软件工程导论第六版张海藩牟永敏课后习题答案软件工程导论第六版张海藩牟永敏课后习题答案75/75软件工程导论第六版张海藩牟永敏课后习题答案第一章一、什么是软件危机?它有哪些典型表现?为何会出现软件危机?软件危机是指在计算机软件开发、使用与保护过程中碰到的一系列严重问题和难题。它包含双方面:如何开发软件,已满足对软件日趋增加的需求;如何保护数目不停增加的已有软件。软件危机的典型表现:对软件开发成本和进度的预计常常很不正确。常常出现实质成本比估量成本超出一个数目级、实质进度比计划进度迟延几个月甚至几年的现象。而为了赶进度和节俭成本所采纳的一些瞒天过海又常常伤害了软件产品的质量。这些都降低了开发商的信
2、用,惹起用户不满。用户对已达成的软件不满意的现象时有发生。软件产品的质量常常是靠不住的。(4)软件常常是不行保护的。软件平常没有适合的文档资料。文档资料不全或不合格,势必给软件开发和保护工作带来很多灾以想象的困难和难以解决的问题。软件成本、软件保护费在计算机系统总成本中所占比率逐年上涨。开发生产率提升的速度远跟不上计算机应用普及的需求。软件危机出现的原由:来自软件自己的特色:是逻辑零件,缺乏可见性;规模宏大、复杂,更正、保护困难。软件开发与保护的方法不妥:忽视需求分析;以为软件开发等于程序编写;小看软件保护。供求矛盾将是一个永久的主题:面对日趋增加的软件需求,人们显得力所不及。二、假定自己是一
3、家软件企业的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并更正错误的重要性时,有人不一样意这个看法,以为要求在错误进入软件从前就清楚它们是不现实的,并举例说:“假如一个故障是编码错误造成的,那么,一个人怎么能在设计阶段除去它呢?”应当怎么辩驳他?答:在软件开发的不一样阶段进行更正付出的代价是很不同样的,在初期引入改动,波及的面较少,因此代价也比较低;在开发的中期,软件配置的很多成分已经达成,引入一个改动要对所有已达成的配置成分都做相应的更正,不但工作量大,并且逻辑上也更复杂,所以付出的代价剧增;在软件“已经达成”是在引入改动,自然付出的代价更高。一个故障是代码错误造成的,有
5、有效地支持它的用户在软件工程领域中是由拥有一种文化背景的人替拥有另一种文化背景的人(达成一些工作)除去软件危机的门路:对计算机软件有一个正确的认识(软件程序)一定充分认识到软件开发不是某种个体劳动的神奇技巧,而应当是一种组织优秀、管理严实、各种人员共同配合、共同达成的工程项目推行使用在实践中总结出来的开发软件的成功技术和方法开发和使用更好的软件工具四、简述结构化范型和面向对象范型的重点,并分析他们的优弊端。1.传统方法学:也称为生命周期方法学或结构化范型。长处:把软件生命周期区分红基干个阶段,每个阶段的任务相对独立,并且比较简单,便于不一样人员分工协作,从而降低了整个软件开发过程的困难程度。弊
7、1和P2代表价钱。鉴于上述假定能够比较计算机硬件和软件成本的变化趋向。要求计算:在1985年对计算机储存容量的需求预计是多少假如字长为16位,这个储存器的价钱是多少储存容量需求M=4080e0.28(1985-1960)=4474263(字)储存器价钱P=0.048*0.72(1985-1974)*4474263=5789美元假定在1985年一名程序员每日可开发出10条指令,程序员的均匀薪资是每个月4000美元。假如一条指令为一个字长,计算使储存器装满程序所需用的成本。需要工作量4474263/200=22371(人/月)指令成本22371*4000=89484000美元假定在1995年储
8、存器字长为32位,一名程序员每日可开发出30条指令,程序员的月均匀薪资为6000美元,重复(1)、(2)题。需求预计M=4080e0.28(1995-1960)=73577679字储存器价钱0.003*32*0.72(1995-1974)*73577679=7127美元工作量73577679/600=122629(人/月)成本122629*6000=735776790美元六、什么是软件过程它与软件工程方法学有何关系软件过程是为了开发出高质量的软件产品所需达成的一系列任务的框架,它规定了达成各项任务的工作步骤。软件工程方法学:平常把在软件生命周期全过程中使用的一整套技术方法的会合称为方法学,
9、也称范型。软件过程是软件工程方法学的3个重要构成部分之一。七、什么是软件生命周期模型?试比较瀑布模型、迅速原型模型、增量模型和螺旋模型的优弊端,说明每种模型的使用范围。软件生命周期模型是超越整个生计期的系统开发、运作和保护所实行的所有过程、活动和任务的结构框架。瀑布模型长处:它供给了一个模板,这个模板使得分析、设计、编码、测试和支持的方法能够在该模板下有一个共同的指导。固然有许多缺点但比在软件开发中任意的状态要好得多。弊端:(1)实质的项目大部分状况难以依据该模型给出的序次进行,并且这种模型的迭代是间接的,这很简单由细小的变化而造成大的纷乱。常常状况下客户难以表达真切的需求,而这种模型却要求这
10、样,这种模型是不欢迎拥有二义性问题存在的。客户要等到开发周期的后期才能看到程序运转的测试版本,而在这时发现大的错误时,可能惹起客户的慌张,尔结果也可能是灾害性的。迅速原型模型长处:使用户能够感觉到实质的系统,使开发者能够迅速地结构出系统的框架。弊端:产品的先本性不足,因为开发者常常需要做实现上的折中,可能采纳不适合的操作系统或程序设计语言,以使原型能够赶快工作。增量模型长处:(1)人员分派灵巧,刚开始不用投入大批人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。当装备的人员不可以在设定的限期内达成产品时,它供给了一种先推出核心产品的门路,这样就能够先公布部分功能给客户,对客户起到冷静剂
11、的作用。弊端:(1)至始至终开发者和客户纠葛在一同,直到完好版本出来。适合于软件需求不明确、设计方案有必定风险的软件项目。该模型拥有必定的市场。螺旋模型长处:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。弊端:(1)需要相当的风险分析评估的特地技术,且成功依靠于这种技术。(2)很明显一个大的没有被发现的风险问题,将会以致问题的发生,可能以致演化的方法失掉控制。这种模型对比较较新,应用不宽泛,其功能需要进一步的考证。该模型适合于大型软件的开发八、为何说喷泉模型较好的表现了面向对象软件开发过程无缝和迭代的特征?因为使用面向对象方法学开发
12、软件时,各个阶段都使用一致的看法和表示符号,所以,整个开发过程都是符合一致的,或许说是无缝连结的,这自然就很简单实现各个开发步骤的频频多次迭代,达到认识的逐渐深入,而喷泉模型则很好的表现了面向对象软件开发过程迭代和无缝的特征。九、试谈论Rational一致过程的优弊端。长处:提升了团队生产力,在迭代的开发过程、需求管理、鉴于组建的系统结构、可视化软件建模、考证软件质量及控制软件改正等方面、针对所有重点的开发活动为每个开发成员供给了必需的准则、模版和工具指导,并保证全体成员共享同样的知识基础。它成立了简短和清楚的过程结构,为开发过程供给较大的通用性。弊端:RUP不过一个开发过程,并无涵盖软件过程
15、b.经济可行性。进行开发成本的估量以及认识获得效益的评估,确立要开发的项目能否值得投资开发,这些即为经济可行性研究的内容对于大部分系统,一般衡量经济上能否合算,应试虑一个“底线”,经济可行性研究范围较广,包含成本效益分析,长远企业经营策略,开发所需的成本和资源,潜伏的市场远景。c.操作可行性。有时还要研究社会可行性问题,研究要开发的项目能否存在任何入侵、阻碍等责任问题。社会可行性所波及的范围也比较广,它包含合同、责任、侵权和其余一些技术人员常常不认识的圈套等。必需时还应当从法律、社会效益等更宽泛的方面研究每种解法的可行性。为方便储户,某银行拟开发计算机储存系统。储户填写的存款单或取款单由业务员
16、键入系统,假如是存款,系统记录存款人姓名、地点、存款种类、存款日期、利率等信息,并印出存款单给储户;假如是取款,系统计算利息并印出利息清单给储户。请写出问题定义并分析此系统的可行性。数据流程图:取票图:航空订票系统技术在目前是一个技术上成熟的系统,并且在航空企业内部准备采纳有力措施保证资本和人员配置等。所以,分阶段开发“航空订票系统”的构思是可行的。为了使航空企业适应现代化市场竞争的需求,促进机票预定管理信息化,不停满足游客预定机票的要求,争取更好的经济效益,可马上着手系统的开发与完美。3、为方便游客,某航空企业拟开发一个机票预约系统。旅行社把预约机票的游客信息(姓名、性别、工作单位、身份证号
18、系统航班信息的更新系统查询数据系统表达库系统机票产生产生产生服务终端客户终端客户终端在客户端产生报表及账单打印数据目前住院病人主要由护士护理,这样做不但需要大批护士,并且因为不可以随时观察危大病人的病情变化,还可能会延迟急救机遇。某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并且分析开发这个系统的可行性可行性分析-原系统分析:可行性分析-逻辑图:开始开始医生D1:标准数据技术可行性;护士检查病患固然生理数据的收集需要波及大批的专业精巧仪器,软件工程师其实不精晓,可是能够在专业人士的帮助下达成。服务D4:指定打印医生输出经济可行性:病人端客户机需要救治服务器D2:实测数据收集病
21、求;5、接口需求;6、拘束;7、逆向需求;8、未来能够提出的要求,分析系统的数据要求。2)如何与用户有效地交流以获取用户的真切需求?答案:与用户交流获取需求的方法:访谈;面向数据流自顶向下求精;简单的应用规格说明技术;迅速成立软件原型银行计算机储存系统的工作过程大概以下:储户填写的存款单或取款单由业务员键入系统,假如是存款则系统记录存款人姓名、地点、身份证号码等存款信息,并打印出存款存单给储户;如果是取款且存款时留有密码,则系统第一核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。答案:用ER图描述系统中的数据对象。(5)分所析习题2中第4题的患者牢狱系统。试用实
22、体-联系图描述本系统中的数据对象并用数据流程描述本系统的功能。(6)复印机的工作过程大概以下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,达成一个复印命令规定的工作后又回到闲置状态,等候下一个复印命令;假如履行复印命令时发现没纸,则进入缺纸状态,发出警示,等候装纸,装满纸后进入闲置状态,准备接光复印命令;假如复印时发生卡纸故障,则进入卡纸状态,发出警示等候维修人员来除去故障,故障除去后回到闲置状态。请用状态变换图描述复印机的行为。答案:从问题陈说可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。惹起状态变换的事件主假如“复印命令”、“达成复印命令”、“发现缺纸”
24、但变量cd_start=1是进入正常游戏的状态,cd_start=2进入读取游戏状态,cd_start=3是进入得分榜界面查察。在得分榜界面按任意键返回开始界面,在读取游戏面,当游戏数据读取达成后进入正常游戏状态,正常游戏状态下,同时按下左键和右键进入储存游戏界面,据储存结束后返回正常游戏状态,在正常游戏状态下,假如变量game_res=0,则游戏结束,进入游戏结束画。可见,用自然语言书写的系统规格说明书,罗嗦繁琐,并且可能存在矛盾,二义性,含糊性,不完好性抽象层次纷乱等问题。用有穷状态的描述以下:状态机J:开始,正常游戏(游戏进行中),得分榜,读取游戏,储存游戏,游戏结束输入集K:按键UP,
25、按键DOWN,按键LEFT,按键RIGHT,存放器变量cd_start,存放器变量game_res变换函数T:如图4.1所示初始态S:开始终态集F:游戏结束得分榜可见用形式化语言描述,更为简短,准Cd确,start=无歧义。读取游戏EEPROM读2,在什么状况下应当使用形式化说明技术?使用形式化说明技术应恪守哪些规则?按任意键Cd_star答:游戏进行中在用非形式化的方式描述时,存在矛盾,二义性,含糊性,不完好性级抽象层次纷乱等问题时用形开始Cd_start=式化说明技术。LEFT&RIGHT应用形式化方法的准则:A,应当采纳适合的表示方法Game;_res=EEPROM写B,应当形式化,但不
26、要过分形式化;游戏结束C,应当估量成本;储存中D,应当有形式化的方法顾问随时供给咨询;图4.1游戏状态变换E,不该当放弃传统的开发方式;F,应当成立详细的文档;G,不该当放弃质量标准;H,不该当盲目依靠形式化方法;,应当测试,测试再测试;J,应当重用。3,一个浮点二进制数的构成是:一个可选的符号(+或-),后跟一个或多个二进制位,再跟上一个字符E,再加上另一个可选符号(+或-)及一个或多个二进制位。比方,以下的字符串都是浮点二进制数:110101E-101-100111E11101+1E0更形式化地,浮点二进制数定义以下:floatingpointbinary=signbitstringEsi
27、gnbitstringsign=+-bitstring=bitbitstringbit=01此中,符号=表示定义为;符号.表示可选项;符号ab表示a或b。假定有这样一个有穷状态机:以一串字符为输入,判断字符串中能否含有合法的浮点二进制数。试对这个有穷状态机进行规格说明。4,考虑下述的自动化图书室流通系统:每本书都有一个条形码,每一个人都有一个带条形码的卡片。但一个借阅人想借一本书时,图书管理员扫描书上的条形码和借阅人卡片的条形码,而后在计算机终端上输入C;当送还一本书时,图书管理员将再次扫描,并输入R。图书管理员能够把一些书加到(+)图书会合中,也能够删除()它们。借阅人能够再终端上查找到某个
28、作者所有的书(输入“A=”和作者名字),或拥有指定标题的所有书本(输入“T=”和标题),或属于特定主题范围内的所有图书(输入“S=”加主题范围)。最后,假如借阅人想借的书已被他人借走,图书管理员将给这本书设置一个预约,以便书送还时把书留给预约的借阅人(输入“H=”加书号)。试用有穷状态机说明上述的图书流通系统答:图书室流通系统的有穷状态机描述以下:(一)图书状态的有穷状态机描述状态机J:书在图书室S1,书被借出S2,书被预约S3输入集K:书上条形码,借阅卡条形码,终端输入各样命令变换函数T:如图4.4.1所示初始态S:书在图书室S1,书被借出S2终态集F:书被借出S2,书被预约S3扫描两个条形
29、在终端输入(二)图书室终端管理员模式的有穷状态机描述书在图书室书被借出书被预约状态机J:管理员设置状态,书入库,书出库(删除),预约扫描两个条形书送还,扫描两输入集K:终端输入管理员命令,书的各样状态(S1,S2,S3变换函数T:如图所示图初始态S:管理员设置状态终态集F:书入库,书出库(删除),预约,(二)图书室终端用户模式的有穷状态机描述预约书状态为S2&终端状态机J:读者查问状态,查问结果管理员设置状S1,S2,S3)输入集K:终端输入用户查问命令,书的各样状态(管理员删除变换函数T:如图4.4.3所示管理员增加初始态S:读者查问状态终端输入终态集F:查问结果书出库(删除)书入各样查问查
30、问结读者查问状H、C及R。5,试用Petri网说明第四题所述图书室中一本书的循环过程,在规格说明中应当包含操作图答:此中态P1表示书在图书室P2命表令示书在读者手上,P3书被预约图P26,试用Z语言对第四题所描述图书室图书流通系统做一个完好的规格说明。P1.答:(这题真的不会!)BOOK_STATEBook_in,Book_out,Book_reserveP3Book_inBook_outBook_reserve=Book_inBook_outBook_reserve=BOOK_STATE第五章5.1为每各样类的模块耦合举一个详细的例子。答:耦合是对一个软件结构内不一样模块之间互联程度的胸怀。
31、耦合强弱取决于接口的复杂度,进入或接见某一模块的点,以及经过接口的数据。一般模块之间的可能的连结方式有七种,构成耦合的七各样类,它们的关系为:低耦合性高非直数据特色控制外面公共内接耦合耦合耦合耦合耦合耦合容耦合强独立性弱下边举例说明以上耦合:A非直接耦合:两个模块没有直接的关系(模块1和模块2),独立性最强B.数据耦合:即一个模块接见另一个模块的时候,相互之间是经过数据参数来互换输入、输出信息的,这种耦合为数据耦合。这种耦合较为松懈,模块间独立性较模强。块模块模块模块计算水电用户状况用户状况水费电费C.特色耦合:即一组模块经过参数传达记录信息,用户状况是个数据结构,图中模块都与此有关,“计算水
32、费”和“计算电费”本没有关系,因为引用了此开发票数据结构产生了依靠关系单金交房费D.控制耦合:即假如一个模块经过传递开关、标记、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合模块E.外面耦合:一组模块都接见同一全局简单变量而不是同一全局数据结构,并且不是经过参数表传达该全局变量的信息,则称之为外面耦合。FlagBFFFF.公共耦合:若一组模块都接见同一个公共数据环境,则它们之间的耦合就称为公共耦合。A模块B模块使用使用打印机G.内容耦合:假如出现以下状况之一,两个模块就发生了内容耦合A模块B模块一个模块接见另一个模块的内部数据。C模块一个模块不经过正常进口子转到另一个模块的内部两个
33、模块有一部分程序代码重叠(只可能发生在汇编程序中)一个模块有多个进口(全这意局味数着一个模块有几种功能)SubAA(.)GotoLEndsubSubBB(.)Endsub5.2为每各样类的模块内聚举一个例子答:内聚标记着一个模块内各个元素之间相互联合的密切程度,它是信息隐蔽和局部化看法的自然扩展。低内聚:A有时内聚:假如一个模块达成一组任务,这些任务相互间即使有关系,关系也是很松懈的。这就叫做有时内聚有时内聚的例子:在模块T中有A,B,C三条语句,最少从表面上看来这三条语句没什么联系,不过因为D,E,F,G中都有这三条语句,为了节俭空间才把这三条语句作为一个模板放在一同。B逻辑内聚:假如一个模
36、一个人的年纪5.3用面向数据流的方法设计以下系统的软件结构储存系统机票预定系统患者监护系统5.4美国某大学有200名教师,校方与教师工会刚刚签订一项协议。依据协议,所有年薪资超出$26000(含$26000)的教师薪资将保持不变,年薪资少于$26000的教师将增加薪资,所增加薪资数额按下述方法计算:给每位教师所奉养的人(包括教师自己)每年补贴$100,其余,教师有一年工龄每年再多补贴¥50,可是,增加后的年薪资总数不可以多于$26000。教师薪资档案储存内行政办公室的磁带上,档案中有目前的年薪资、奉养的人数、聘用日期等信息。需要写一个程序计算并印出每名教师的原薪资和调整后的新薪资。要求:(1)
37、画出此系统的数据流图;(2)写出需求说明;(3)设计上述的薪资调整程序(要求用HIPO图描述设计结果),设计时分别采用两种算法,并比较两种算法的优弊端:(a)搜寻薪资档案数据,找出年薪资少于$26000的人,计算新薪资,校核是否超出$26000,储存新薪资,印出新旧薪资比较表;(b)把薪资档案数据按薪资从最低到最高的序次排序,当薪资数额超出$26000时即停止排序,计算新薪资,校核能否超出限额,储存新薪资,印出结果。(4)你所画出的数据流图适应用那种算法?解:(1)数据流图:分解后:(2)需求说明:功能需求:能够输入调资的标准,输入教师档案,经调资给出新的教师档案,需要储存档案2性能需求:软件
39、别为A和B。(2)一副扑克牌有52张牌,4栽花色(黑桃、红桃、梅花、方块),每栽花色的牌的点数按升序摆列有2,3,4,10,J,Q,K,A等13种。(3)给每一个人发三张牌,牌面向上,赢者马上能够确立。(4)最高等级的一手牌成为同花,即3张牌均为同一栽花色,最大的同花是同一栽花色的Q,K,A。(6)第三等级的牌是同点,即点数同样的三张牌,最大的同点是AAA。(7)第四等级的牌是对子,即3张牌中有两张点数同样,最大的对子是A,A,K。(8)第五等级的牌是杂牌,即除去上列4等以外的任何一手牌,最大的杂牌是不一样花色的A.K,J。(9)若两个人的牌种类不一样,则等级高者胜;若等级同样,则点数高者胜;
40、若点数也同样,则为平局。程序:#includestdio.hintrabl(inta,intb,int*r)intl,k,m,i,p;k=b-a+1;l=2;while(i=1)k=k+k+k+k+k;k=k%m;l=k/4+a;if(lT10)t=T00;elset=T10;if(tT20)t=T20;returnt;intE1(intT1010)if(T01=T11&T11=T21)return1;elsereturn0;intE2(intT1010)intq=0;if(max(T1010)-1)=T00|(max(T1010)-1)=T10|(max(T1010)-1)=T20)&(ma
41、x(T1010)-2)=T00|(max(T1010)-2)=T10|(max(T1010)-2)=T20)/if(q=max(T10)return1;elsereturn0;intE3(intT1010)if(T00=T10=T20)return1;elsereturn0;intE4(intT1010)if(T00=T10&T00!=T20)return1;elseif(T00=T20&T00!=T10)return1;elseif(T10=T20&T10!=T00)return1;elsereturn0;voidmain()inttimes=0,e1=0,e2=0,e3=0,e4=0,e5
42、=0;intA1010,B1010;intr1=2,r2=3;printf(请输入游戏的次数n);scanf(%d,×);for(intj=0;jtimes;j+)for(inti=0;iE1(B10)e1+;printf(A赢,同花顺n);elseif(E1(A10)max(B10)printf(A赢,同花顺n);elseprintf(B赢,同花顺n);elseif(E2(A10)E2(B10)e2+;printf(A赢,顺子n);elseif(E2(A10)max(B10)printf(A赢,顺子n);elseprintf(B赢,顺子n);elseif(E3(A10)E3(B10
43、)e3+;printf(A赢,同点n);elseif(E3(A10)max(B10)printf(A赢,同点n);elseprintf(B赢,同点n);elseif(E4(A10)E4(B10)e4+;printf(A赢,对子n);elseif(E4(A10)E4(B10)e4+;printf(B赢,对子n);elseif(E4(A10)=E4(B10)&E4(B10)=1);e4+;if(max(A10)max(B10)printf(A赢,对子n);elseprintf(B赢,对子n);elseif(max(A10)max(B10)printf(A赢,杂牌n);elseprintf(B赢,杂
44、牌n);printf(同花顺赢牌概率为%d,顺子赢牌概率为%d,同点赢牌概率为%d,对子赢牌概率为%d,杂牌赢牌概率为%d,e1/times,e2/times,e3/times,e4/times,e5/times);控制流程图:。第六章1、假定只有SEQUENCE和DO_WHILE两种控制结构,怎么利用它们达成IF_THEN_ELSE操作?解:转变以下:K=1DOWHILE(条件程序块1K=K+1ENDDODOWHILE((.NOT.条件程序块2K=K+1ENDDO2、假定只有SEQUENCE和IF_THEN_ELSE两种控制结构,怎么利用它们达成DO_WHILE操作?解:转变以下;label
45、:IF(条件)THEN程序块GOTOlabelELSE程序块ENDIF3、画出以下伪代码程序的流程图和盒图:STARTIFpTHENWHILEqDOfENDDOELSEBLOCKgnENDBLOCKENDIFSTOP解:流程图:盒图:4、图6.18给出的程序流程图代表一个非结构化的程序,问:(1)为何说它是非结构化的?(2)设计一个等价的结构化程序。(3)在(2)题的设计中使用附带的表记变量flag了吗?若没用,在设计一个使用flag的程序;若用了,在设计一个不用flag的程序。解:(1)平常所说的结构化程序,是依据狭义的结构程序的定义衡量,符合定义规定的程序,每个代码块只有一个进口和一个出口
46、。图示的程序的循环控制结构有两个出口,明显不符合狭义的结构程序的定义,所以是非结构化的程序。(2)使用附带的标记变量flag,最罕有两种方法能够把该程序改造为等价的结构化程序,图示盒图描述了等价的结构化程序。(3)不使用flag把该程序改造为等价的结构化程序的方法以以下图。5、研究下边的伪码程序:LOOP:SetIto(START+FINISH)/2IFTABLE(I)=ITMEgotoFOUNDIFTABLE(I)TMESetFINSHto(I-1)IF(FINSH-START)1gotoLOOPIFTABLE(START)=ITEMgotoFOUNDIFTABLE(FINSH)=ITEMg
47、otoFOUNDSetFLAGto0GotoDONEFOUND:SetFLAGto1DONE:EXIT要求:(1)画出流程图。(2)程序是结构化的吗?说明原由。(3)若此程序是非结构化,设计一个等价的结构化程序并画出流程图。(4)此程序的功能是什么?它达成预约功能有什么隐含的前提条件吗?解:(1)该程序流程图以下:(2)该程序不是结构化的,结构化的程序只有一个进口和一个出口,而该程序的流程途中有两个出口。(3)等价的结构化程序的流程图以下:(4)此程序有二分查找的功能,它达成预约功能的隐含前提条件是现有序列为从小到大序次排好的有序序列。6用Ashcroft_Manna技术能够将非结构化的程序转
48、变为结构化程序,图6.19是一个变换的例子。可否从这个例子总结出Ashcroft_Manna技术的一些基本方法?进一步简化6.19(b)给出的结构化设计。开始FTAcBFTFTdcCDE停止开始I=1DOCASE=1FTFTFTcdeABCDDI=I=I=I=I=FI=4T停止解:(1)从这个例子中看出,Ashcroft_Manna技术的基本方法是,当待改造的序含有嵌套的非结构化的IF语句时,改造后的程序中增加DO-CASE语句和DO-UNTIL语句,并增加一个协助变量I,I的初始值为。最外层的IF语句在I=时履行,履行完这个IF语句后把I赋值为随后应当履行的内层IF语句所对应的CASE标号值
49、。DO-CASE语句的最大分支数(可履行的最大标号值)等于IF语句的个数。当履行完最内层的IF语句以后,把I赋值为可履行的最大标号值加,而DO-UNTIL循环的结束条件就是I等于这个值。EI=(2)进一步简化后的结构化程序的流程图以下所示。7、某交易所规定给经纪人的手续费计算方法以下:总手续费等于基本手续费加上与交易中的每股价钱和股数有关的附带手续费。假如交易金额少于1000元,则基本手续费为交易金额的8.4%;假如交易总金额在1000元10000元之间,则基本手续费为交易金额的5%,再加34元;假如金额超出10000元,则基本手续费为交易金额的4%加上134元。当每股售价低于14元时,附带手
50、续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种状况下附带手续费的9%。当每股售价在14元到25元之间时,附带手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种状况下附带手续费的6%。当每股售价超出25元时,假如交易的股数(即不是100的倍数),则附带手续费为基本手续费的4%,不然附带手续费为基本手续费的1%。要求:(1)用判断表表示手续费的计算方法。(2)用判断数表示手续费的计算方法。解:令P代表交易的总金额,Q代表每股的售价,n代表交易的股数。(1)表示手续费计算方法的判断表以以下图(2)表示手续费计算方法的判断树8、画出以下伪码程序的流图,计算它的环形复
51、杂度。你感觉这个程序的逻辑有什么问题吗?EXAMPLELOOP:DOWHILEX0A=B+1IFA10THENX=AELSEY=ZENDIFIFY0THENPRINTGELSEPRINTKENDIFSTOP解:流程图:环形复杂度:V(G)结点E弧数n1=17-11+1=7=判断结点1=617关闭的区域数逻辑有问题,当Z0时,简单形成死循环;条件Y10THENX=20ELSEX=2ENDIFIFC15THENX=30ELSEX=3ENDIFPRINT(X,Y,Z)STOP答:此程序的语句覆盖用例:A=5,B=10,C=15;A=6,B=11,C=16条件覆盖用例为:A=5,B=10,C=15;A
52、=6,B=11,C=16。语句覆盖测试用例语序句覆盖的含义是,判选择足定够多的测试数据,使被输测试入程序中的每个语预句至期的输少履行一次。号123ABCXYZ序号判断输入预期1FFF311A1123X12BC第五题5、某图书室有一个使用CRT终端的信息检索系统,该系统有以下4个基本检索命令要求:设计测试数据以全面测试系统的正常操作;设计测试数据以测试系统的非正常操作解:测试系统正常操作的测试数据序次履行以下3个命令:b(KEYWORD)s(L)d(N)此中,KEYWORD是正确的重点字;L是履行命令b后在屏幕上显示的约20个行号中的一个(最少应当使L分别为第一个、最后一个和中央一个行号);N是
53、履行命令s后列出的索引号中的一个(最少应当使N分别为第一个、最后一个和中央一个索引号)。针对若干个不一样的KEYWORD重复履行上述命令序列。序次履行以下2个命令:f(NAME)d(N)此中,NAME是已知的作者姓名;N是履行命令f后列出的索引号中的一个(最少应当使N分别为第一个、最后一个和中央一个索引号)。针对若干个不一样的NAME重复履行上述命令序列。测试系统非正常操作的测试数据用过长的重点字作为命令b的参数:比方,b(reliabilitysoftwareandhardwarecombined)预期的输出:系统截短过长的重点字,比方,上列命令中的重点字可能性被截短为reliability
54、software用不正确的重点字作为命令b的参数:比方,b(AARDVARK)预期的输出:显示出最凑近的般配结果,比方,履行上列命令后可能显示1AARON,JULES(book)用比履行命令b后列出的最大行号大1的数作为命令s的参数预期的输出:“命令s的参数不内行号列表中”用数字和标点符号作为命令b和命令f的参数预期的输出:“参数种类错”用字母字符作为命令s和命令d的参数预期的输出:“参数种类错”用0和负数作为命令s和命令d的参数预期的输出:“参数数值错”命令序次错:比方,没履行命令b就履行命令s,或没履行命令s就履行命令d预期的输出:“命令序次错”命令语法错:比方,遗漏命令名b、s、d或f;
55、或命令参数没用圆括号括起来预期的输出:“命令语法错”命令参数空:比方,b()、s()、d或f()预期的输出:系统供给默认参数或给出犯错信息使用拼错了的作者姓名作为f的参数预期的输出:“找不到这们作者的著作”第六题6、航空企业A向软件企业B订购了一个规划翱翔路线的程序。假定你是软件企业C的软件工程师,A企业已聘用你所在的企业对上述程序进行查收测试。任务是,依据下述事实设计查收测试的输入数据,解说你采纳这些数据的原由。领航员向程序输入出发点和目的地,以及依据天气和飞机型号而初步确立的翱翔高度。程序读入途中的风向风力等数据,并且制定出3套翱翔计划(高度,速度,方向及途中的5个地点校核点)。所制定的翱
57、步骤15个地点校核点和高度,分别输入35个不一样的飞输入固定的出发点、的地,重复履行步骤15个地点校核点和高度,分别输入35个不一样的目(2)用特别的数据值作为测试数据分别输入特别高和特别低的数据组合测试用负数测试输入数字0进行测试分别输入相距特别远和特别近的出发点和目的地测试ay和size,size小于数组的大小,并给出需要查找的值,该值在somearray中;预期的输出:返回-1;第一给出某个数组somearray和size,size大于数组的大小,并给出需要查找的值,该值不在somearray中;预期的输出:返回-1;第一给出某个数组somearray和size,size大于数组的大小,
58、并给出需要查找的值,该值在somearray中;预期的输出:返回-1;第七题7、严格说来,有两种不一样的路径覆盖测试,分别为程序路径覆盖和程序图路径覆盖。这两种测试可分别称为程序的自然履行和强,迫履行。所谓自然执行是指测试者(人或计算机)读入程序中的条件表达式,依据程序变量的目前值计算该条件表达式的值(真或假),并相应地分支。逼迫履行是在用程序图作为程序的抽象模型时产生的一个人为的看法,它能够简化测试问题。逼迫履行的含义是,一旦碰到条件表达式,测试者就逼迫程序分两种状况(条件表达式的值为真和为假)履行。明显,逼迫履行将遍历程序图的所有路径,可是因为各个条件表达式之间存在互相依靠的关系,这些路径
60、种包含测试变量T和模式变量M的特别形式,所以DOI=1TO38应变为DOI=1TOM*38+(1-M)*T可见,当M=0时处于测试模式,而M=1时处于正常运转模式。当处于测试模式时,令T=0则该循环一次也不履行,令T=1则该循环只履行一次。近似地应当使用模式变量和测试变量改写IF语句,比方IFX+Y0THENZ=XELSEZ=Y应变为IFM*(X+Y)+T0THENZ=XELSEZ=Y正常运转季节M=1和T=0,测试时期令M=0,为测试THEN部分需令T=+1,测试ELSE部分则令T=-1。要求:采纳一个包含循环和IF语句的程序,用Laemmel技术更正这个程序,上机实质测试这个程序并解说所获