还剩32页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《软件工程》习题参考答案第一章1﹑什么是软件危机?产生原因是什么?软件开发技术的进步未能满足发展的要求在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机产生原因⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂⑶软件包开发费用不断增加⑷软件开发技术落后⑸生产方式落后,仍采用手工方式⑹开发工具落后,生产率提高缓慢2﹑什么是软件工程?它目标和内容是什么?软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科软件工程目标付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高软件工程内容研究内容包括开发技术和开发管理两个方面开发技术主要研究软件开发方法,开发过程,开发工具和环境开发管理主要研究软件管理学,软件经济学,软件心理学3﹑软件工程面临的问题是什么?软件工程需要解决的问题软件的费用,可靠性,可维护性,软件生产率和软件的重用4﹑什么是软件生存周期?它有哪几个活动?软件生存周期一个软件从提出开发要求开始直到该软件报废为止的整个时期包括可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护5﹑什么是软件生存周期模型?有哪些主要模型?生存周期模型描述软件开发过程中各种活动如何执行的模型对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心主要有瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型第二章
1.可行性研究的任务是什么可行研究的任务首先需要进行概要的分析研究,初步确定项目的规模,目标,约束和限制分析员再进行简要的需求分析,抽象出项目的逻辑结构,建立逻辑模型从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的解决方法,对每种解决方法都要研究它的可行性主要从三个方面考虑⑴.技术可行性一般要考虑的情况包括开发的风险即设计出的系统能否达到要求的功能和性能;资源的有效性;相关技术的发展是否支持;⑵.经济可行性进行开发成本的估算以及了解取得效益的评估确定要开发的项目是否值得投资⑶.社会可行性要开发的项目是否存在任何侵权问题运行方式在用户组织内是否可行现有管理制度﹑人员素质﹑操作方式是否可行
2.项目开发计划有哪些内容⑴.项目概述说明项目的各项主要工作;说明软件的功能﹑性能;为完成项目应具有的条件;用户及合同承包者承担的工作完成的期限及其他条件限制;应交付的程序名称;所使用的语言及程储形式;应交付的文档⑵.实施计划说明任务的划分,各任务责任人,项目开发进度,项目的预算,各阶段的费用支出,各阶段应完成的任务,用图表说明每项任务的开始和完成时间⑶.人员组织及分工所需人员类型﹑数量﹑组成结构⑷.交付期限最后完工日期第三章⒈什么是需求分析?需求分析阶段的基本任务是什么?需求分析开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程基本任务:⑴问题识别双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求⑵分析与综合,导出软件的逻辑模型⑶编写文档包括编写需求规格说明书初步用户使用手册确认测试计划修改完善软件开发计划 ⒉什么是结构分析方法?该方法使用什么描述工具?结构化分析简称SA,面向数据流进行数据分析的方法采用自顶向下逐层分解的分析策略顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节中间层则是从抽象到具体的过渡使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑⒊结构化分析方法通过哪些步骤来实现?⑴了解当前系统的工作流程,获得当前系统的物理模型⑵抽象出当前系统的逻辑模型⑶建立目标系统的逻辑模型⑷作进一步补充和优化⒋什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?数据流图(DFD)以图形的方式描述数据在系统中流动和处理的过程只反映系统必须完成的逻辑功能,是一种功能模型5什么是数据字典?其作用是什么?共有哪些条目?数据字典(DD)用来定义数据库流图中的各个成分的具体含义有以下四类条目数据流,数据项,数据存储,基本加工具体条目内容及举例如下数据流条目数据流名称订单别名无简述顾客订货时填写的项目来源顾客去向加工1检验订单数据流量1000份/每周(单位时间内的传输次数)组成编号+订货日期+顾客编号+地址+电话+银行帐号+货物名称+规格+数量数据存储条目数据存储名称库存记录别名无简述存放库存所有可供货物的信息组成货物名称+编号+生产厂家+单价+库存量组织方式索引文件,以货物编号为关键字查询要求要求能立即查询数据条目数据项名称货物编号别名G-NoG-numGoods-No简述本公司所有货物的编号类型字符串长度10取值范围及含义第一位进口/国产第2-4位类别第5-7位规格第8-10位品名编号加工条目加工名查阅库存编号1﹒2激发条件接收到合格订单时优先级普通输入合格合格订单输出可供货订单,缺货订单加工逻辑根据库存记录IF订单项目数量该项目库存量临界值THEN可供货处理ELSE此订单缺货,登录,待进货后再处理ENDIF6描述加工逻辑有哪些工具?加工逻辑的描述一般用结构化语言,判定表,判定树结构化语言是介于自然语言和形式语言之间的一种半形式化语言它的结构可分里层和内层⑴外层用来描述控制结构,采用顺序,选择,重复三种基本结构
①顺序结构是一组祈使语句,选择语句,重复语句的顺序排列
②选择结构一般用IF-THEN-ELASE-ENDIF,CASE-OF-ENDCASE等关键词
③重复结构一般用DO-WHILE-ENDDO,REPEAT-UNTIL等关键词⑵内层一般采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其动词含义要具体,尽量不使用形容词和副词来修饰例加工逻辑描述为,如果申请者的年龄在21岁以下,要额外收费;如果申请者是21岁以上并是26岁以下的女性,适用于A类保险;如果申请者是26岁以下的已婚男性,或者是26岁以上的男性,适用于B类保险;如果申请者是21岁以下的女性或是26岁以下的单身C类保险附此之外的其他申请者都适用于A类保险7简述SA方法的优缺点SA方法是软件需求分析中公认的,有成效的,技术成熟,使用广泛的一种结构化分析方法较适用于开发数据处理类型软件的需求分析利用图形等半形式化工具表达需求,简明,易读,也易于使用但也存在一些弱点,表现如下⑴SA方法仅是一个静态模型,没有反映处理的顺序,即控制流程⑵SA方法使用DFD在分析与描述数据要求方面是有局限的,只有与数据库技术中的实体联系图(ER图)结合起来,才能较完整地描述用户对系统的需求⑶DFD不适合描述人机界面系统的要求,一些人机交互较频繁的软件系统⑷SA方法要与形式化方法结合起来,才能更精确地描述软件需求⑸要借助需求分析工具,提高需求分析的质量及效率
8.某银行的计算机储蓄系统功能是将储户的存户填写的存款单或存款单输入系统,如果是存款,系统记录存款人姓名﹑住址﹑存款类型﹑存款日期﹑利率等信息,并打印出存款单给储户;如果是取款,系统计算清单给储户请用DFD,IDEF0描绘该功能的需求,并建立相应数据字典答数据流名称取款单、存款单别名无简述顾客存/取款时填写的单据来源顾客去向核查数据流量200份/天组成日期+[取|存款金额]+姓名+地址+[存/取款类型]+密码+{账号} 数据流名称存款凭证别名无简述顾客存款后得到的凭据来源银行存款系统去向顾客数据流量200份/天组成日期+存款金额+储户姓名+储户地址+存款类型+账号+利率+操作员 数据流名称结算单别名无简述顾客取款时得到的利率清单来源银行储蓄系统去向顾客数据流量200份/天组成取款日期+取款金额+储户姓名+储户地址+存款类型+利息+总金额+操作员数据流名称存/取款信息别名无简述系统检查确认后得到的存/取信息来源银行储蓄系统去向登录数据流量200份/天组成日期+[存|取款金额]+储户姓名+储户地址+存款类型+账号+利率+密码+操作员数据流名称付款信息别名无简述存储系统处理的取款信息来源银行储蓄系统去向付款处理数据流量200份/天组成日期+取款金额+储户姓名+储户地址+存款类型+账号+利息+总金额+操作员数据存储名称账卡别名无简述存放用户信息及存取款情况组成储户姓名+储户地址+账号+|日期|+[存/取款金额]+存款类型+利率+密码+操作员组织方式数据文件,以储户姓名或账号为关键字进行索引查询要求要求能立即查询并修改数据项名称存款类型别名无简述国家规定的几类存款方式类型字符串长度2位取值范围及含义00定期;01零存整取;10活期;11定/活两便 加工名核查编号激发条件接受存款单或取款单输入存款单或取款单输出认定的合格的村/取款信息加工逻辑根据账卡及用户存/取款单据if单据=存款单then 存款单据是否填写规范,是否与现金一致else 审核是否为有效取款单,取款金额不得超出存款金额,密码是否正确 9某图书管理系统有以下功能⑴借书输入读者借书证系统首先检查借书证是否有效,若有效,对于第一次借书的读者,在借书证上建立档案否则,查阅借书文件,检查该读者所借图书是否超过10本,若已达10,拒借,末达10本,办理借书(检查库存,修改库存目录并将读者借书情况录入借书文件)⑵还书从借书文件中读出与读者有关的记录,查阅所借日期,如超期(3个月)作罚款处理否则,修改库存目录与借书文件⑶查询通过借书文件,库存目录文件查询读者情况﹑图书借阅及库存情况,打印统计表解数据字典数据流名称借书别名借书单简述读者借书时填写的单据来源读者去向审核借书数据流量250份/天组成借书证编号+借阅日期+书名+借阅方式+密码+借阅人数据流名称还书别名无简述读者还书时附带的数据来源读者去向审核还书数据流量250份/天组成借书证编号+借阅日期+书名+借阅方式数据存储名称借书文件别名无简述借书证编号+借阅日期+书名+借阅方式+密码+借阅人+操作员查询要求要求能立即查询并修改数据存储名称库存文件别名无简述存放图书出/入库信息组成书名+出版社+作者+出版日期+入库数据+总数量+(内容简介)+当前库存量组织方式数据文件,以书名为关键字进行索引查询要求要求能立即查询并修改加工名审核借书证编号
1.1激发条件接受到借书证输入借书证输出认定合格的借书证加工逻辑根据借书文件及读者借书证if借书证编号在借书文件存在and未过期and密码正确then 借书证有效else借书证无效 10某厂对部分职工重新分配工作的政策是年龄在20岁以下者,初中文化程度脱产学习,高中文化程度当电工20岁至40岁之间,中学文化程度,男性当钳工,女性当车工,大学文化程度都当技术员年龄在40岁以上者,中学文化程度当材料员,大学文化程度当技术员请用结构化语言﹑判定表或判定树描述上述问题的加工逻辑结构化语言CASE年龄20 CASE文化程度初中 分配工种脱产学习 CASE文化程度高中 分配工种电工ENDCASECASE年龄=
40.AND.=20 CASE文化程度初中.OR.高中 CASE性别男 分配工种钳工 CASE性别女 分配工种车工 ENDCASE ENDCASE CASE文化程度大学 分配工种技术员 ENDCASEENDCASECASE年龄40 CASE文化程度初中.OR.高中 分配工种材料员 CASE文化程度大学 分配工种技术员 ENDCASEENDCASE第4章
1.什么是软件概要设计?该阶段的基本任务是什么?把一个软件需求转换为软件表示时,首先设计出软件总的体系结构称为概要设计或结构设计基本任务⑴设计软件系统结构,具体为采用某种设计方法,将一个复杂的系统按功能划分为模块确定每个模块的功能确定模块之间的调用关系确定模块之间的接口(模块之间传递的信息)评价模块的结构质量⑵进行数据结构及数据库的设计⑶编写概要设计的文档主要内容有概要设计说明书,数据库说明书(DBMS的简介,概念模型,逻辑设计,结果)用户手册,修订测试计划(测试的策略﹑方法﹑步骤)⑷评审是否完整地实现了规定的功能﹑性能要求设计方案是否可行关键的处理及内部接口定义的正确性,有效性,各部分的一致性 2.软件设计的基本原理包括哪些内容?⑴模块化模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求模块化即按照一定的原则,将软件划分成若干个模块,每个模块完成一个特定的功能,然后把这些模块按照某种方法组装成一个软件系统(可降低复杂度、减少工作量)模块具有以下几种特性接口模块的输入输出功能指模块实现什么功能逻辑描述模块内部如何实现要求及所需的数据状态该模块的运行环境,模块间调用与被调用关系⑵抽象认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素通过抽象确定组成软件的过程实体⑶信息隐蔽将模块实现自身功能的细节与数据隐蔽起来模块间仅交换为完成系统功能所必须的信息⑷模块独立性每个模块只完成系统要求的独立的子功能 3.衡量模块独立性的两个标准是什么?各表示什么含义?内聚和耦合内聚又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标耦合也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标 4.模块的耦合性有哪几种?各表示什么含义?⑴内容耦合一个模块直接操作或修改另一模块的数据,或者不通过正常入口直接转入另一模块⑵公共耦合两个或多个模块通过共同引用一个全局数据环境相互作用⑶控制耦合模块之间通过传递控制信息相互作用⑷标记耦合两个模块之间通过传递公共指针或地址相互作用的耦合⑸数据耦合模块之间通过传递数据交换信息⑹无耦合模块间无任何关系,独立工作 5.模块的内聚性有哪几种?各表示什么含义?⑴偶然内聚一个模块各个成分之间毫无关系⑵逻辑内聚将几个逻辑上相关的功能放在同一个模块中⑶时间内聚一个模块完成的功能在同一时间执行⑷过程内聚一个模块内部的处理成分是相关的,而且必须以特定的次序执行⑸通信内聚一个模块的所有成分都集中在同一个数据结构上⑹顺序内聚一个模块的各个成分同一个功能密切相关,而且一个成分的输出,作为另外一个成分的输入⑺功能内聚模块内的所有成分属于一个整体,完成单一的功能(内聚最高) 6.什么是软件结构?简述软件结构设计的优化准则⑴改进软件结构,提高模块独立性首先设计出软件初始结构,评价该结构,通过模块分解或合并,力求降低耦合提高内聚⑵模块的规模应该适中⑶模块结构的深度、宽度、扇出和扇入应适中深度软件结构中控制的层数宽度软件结构中同一层次上最大模块总数扇入某一模块有多少直接调用它的上级模块数目(越大越好)扇出一个模块直接控制(调用)下级模块的数目(越少越好,3,4个为宜,不超过9个,顶层扇出较高,中间扇出较少,底层模块高扇入多⑷一个模块的作用域(范围),应处在这个模块的控制域(范围)之内模块的作用域受该模块内一个判定影响的所有模块的集合模块的控制域这个模块本身以及所有直接或间接从属于它的模块的集合 7.什么样是事物流?什么是变换流?试将相应形式的数据流图转换为软件结构图数据流图(DFD)一般可分为变换流,事物流两种变换流由输入﹑输出﹑变换(或称处理)三部分组成,是一顺序结构事物流它的某个加工,分离成许多发散的数据流,形成许多加工路径,并且根据输入值选择其中一个路径来执行(这人加工称为事务处理中心)
8.图是某系学籍管理的一部分,ab分别是同一模块A的两个不同设计方案,你认为哪一个设计方案较好请陈述理由答我认为b方案较好要评价一个软件结构设计,主要看模块的独立性,要从软件结构的耦合性和内聚性两个方面来衡量对于a方案,模块A与模块B之间形成了控制耦合,因此独立性不高,而在B模块内部,有两个不同的功能被放在一起,形成的是逻辑内聚,内聚性不高对于b方案,模块A与B1和B2之间是数据耦合,独立性较强,在B1和B2内部,只完成单一的功能,是功能内聚,因此内聚性高,可维护性好,因此相比而言b方案比a方案更好些
9.请将图4-16的DFD转换为软件结构图注图中⊕表示或者解我们可以看出主图是变换型DFD,而子图是事务型DFD根据结构设计的方法,得到的结构图如下
10.将第3章习题中的第8题、第9题设计成相应的软件结构图(SC)和HIPO图某银行的计算机储蓄系统功能是将储户的存户填写的存款单或存款单输入系统,如果是存款,系统记录存款人姓名﹑住址﹑存款类型﹑存款日期﹑利率等信息,并打印出存款单给储户;如果是取款,系统计算清单给储户
2、某图书管理系统有以下功能⑴借书输入读者借书证系统首先检查借书证是否有效,若有效,对于第一次借书的读者,在借书证上建立档案否则,查阅借书文件,检查该读者所借图书是否超过10本,若已达10,拒借,末达10本,办理借书(检查库存,修改库存目录并将读者借书情况录入借书文件)⑵还书从借书文件中读出与读者有关的记录,查阅所借日期,如超期(3个月)作罚款处理否则,修改库存目录与借书文件3查询通过借书文件,库存目录文件查询读者情况﹑图书借阅及库存情况,打印统计表把上面数据流程图转换为软件结构图和IPO图第5章
1、详细设计的基本任务是什么,有哪几种描述方法答详细设计的基本任务包括
1、为每个模块进行详细的算法设计
2、为模块内的数据结构进行设计
3、对数据库进行物理设计
4、其他设计
5、编写详细设计说明书
6、评审详细设计的描述方法有图形、表格和语言,其中图形常用结构化程序流程图、盒图和PAD问题分析图为描述工具,语言常用过程设计语言PDL来作为工具
2、结构化程序设计的基本要点是什么答:主要有三个
1、采用自顶向下、逐步求精的程序设计方法
2、使用三种基本控制结构构造程序任何程序都可以由顺序、选择、重复循环三种基本控制结构构造,这三种基本结构的共同点是单入口、单出口
3、主程序员组的组织形式
3、简述Jackson方法的设计步骤答Jackson方法的设计步骤如下1分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图表示这些数据结构2找出输入数据结构和输出数据结构中有对应关系的数据单元3按一定的规则由输入、输出的数据结构导出程序结构4列出基本操作与条件,并把它们分配到程序结构图的适当位置5用伪码写出程序
4、请使用流程图、PAD图和PDL语言描述下列程序的算法1在数据A1~A10中求最大数和次大数解如图所示PDL语言描述 GETa
[1]a
[2]...a
[10] max=a
[1]; max2=a
[2]; FORi=2TO10 IFa[i]max max2=max; max=a[i]; ELSE IFa[i]max2 max2=a[i]; ENDIF ENDIF ENDFOR PUTmaxmax2 END2输入三个正整数作为边长,判断该三条边构成的三角形是等边、等腰还是一般三角形解如图PDL语言描述如下 GETabc IFa+bcandb+caandc+ab IFa=b IFa=c PUT等边三角形 ELSE PUT等腰三角形 ENDIF ELSE IFa=c PUT等腰三角形 ELSE IFb=c PUT等腰三角形 ELSE PUT一般三角形 ENDIF ENDIF ENDIF ELSE PUT这不是一个三角形 ENDIF
5、用PAD图描述下面问题的控制结构有一个表A
1、A
2、...An,按递增顺序排列给定一个Key值,在表中用折半法查找若找到,将表位置i送入x,否则将零送到x,同时将key值插入表中算法 1置初值H=1表头,T=N表尾 2置i=[H+T/2]取整 3若Key=Ai,则找到i送到x;若KeyAi,则Key在表的后半部分,i+1送入H;若KeyAi则Key在表的前半部分,i-1送入T,重复第2步查找直到HT为止 4查不到时,将Ai...AN移到Ai+
1...AN+1Key值送入Ai中解如图所示
6、一个正文文件由若干记录组成,每个记录是一个字符串,要求统计每个记录中空格字符的个数及文件中空格字符的总个数要求输出数据格式是每复制一行字符串后,另起一行打印出这个字符串中的空格数,最后打印出文件空格的总个数,用Jackson方法设计该程序结构第6章
1、在项目开发时选择程序设计语言通常考虑哪些因素答通常要考虑的因素有项目的应用领域、软件开发的方法、软件执行的环境、算法和数据结构的复杂性以及软件开发人员的知识等
2、举例说明各种程序设计语言的特点及适用范围答以常见的一些编程语言为例FORTRAN语言,它不仅面向科学计算,数据处理能力也极强适用于科学工程计算Pascal语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨它是第一个体现结构化编程思想的语言用于描述结构化算法和科学计算操作系统的编写C语言功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高可用于许多领域,特别是在操作系统等方面有较大优势Coble语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开结构严谨层次分明,广泛用于商业数据处理SQL:结构化查询语言,用于对数据库进行存取管理汇编语言和Ada语言,主要用于实时处理和编写系统软件Prolog、Lisp语言Lisp是一种函数型语言特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解Prolog是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的句子组成,比较接近与自然语言这两种语言主要用于人工智能系统开发C++、Java语言是面向对象的设计语言,用于面向对象的方开发软件
3、什么是程序设计风格为了具有良好的设计风格,应注意哪些方面的问题答程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意第7章
1、软件测试的目的是什么软件测试中,应注意哪些原则答软件测试的目的是为了发现软件的错误软件测试中应注意的原则有1测试用例应由输入数据和预期的输出数据两部分组成这样便于对照检查,做到有的放矢2测试且例不仅选用合理输入数据,还要选择不合理的输入数据这样能更多地发现错误,提高程序的可靠性对于不合理的输入数据,程序应拒绝接受,并给出相应的提示3除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事4应制定测试计划并严格执行,排除随意性5长期保留测试用例6对发现错误较多的程序段,应进行更深入的测试7程序员应避免测试自己的程序测试是一种挑剔性的行为,心理状态是测试自己程序的障碍
2、什么是白盒测试法有哪些覆盖标准试对他们的检错能力进行比较答白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致白盒法有下列几种覆盖标准语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准
3、什么是黑盒测试法采用黑盒技术测试用例有哪几种方法这些方法各有什么特点答黑盒测试法把被测试对象看成是一相黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求采用黑盒技术测试用例的方法有等价类的划分、边界值分析、错误推测和因果图等价类的划分,是将输入数据按有效的或无效的也称合理的或不合理的划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试这样就把漫无边迹的随机测试改为有针对性的等价类测试,用少量有代表性的例子代替大量测试目的相同的例子,能有效地提高测试效率但这个方法的缺点是没有注意选择某些高效的、能够发现更多错误的测试用例边界值分析法一般与等价类划分结合起来但它不是从一个等价类中任选一个例子做代表,而是将测试边界情况作为重点目标,选取正好等于、刚刚大于和刚刚小于边界值的测试数据边界情况是指输入等价类和输入等价类边界上的情况这种方法可以查出更多的错误,因为在程序中往往在处理边界情况时易发生错误错误推测法是在测试程序时,人们根据经验或直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用例因果图能够有效地检测输入条件的各种组合可能会引起的错误它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例这几种方法都不能提供一组完整的测试用例,在实际测试中应把各种方法结合起来使用综合策略就是联合使用上述几种测试方法,尽可能多地发现程序中的错误
4、软件测试要经过哪些步骤这些测试与软件开发各阶段之间有什么关系答软件测试要经过的步骤是单元测试→集成测试→确认测试→系统测试单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误该阶段涉及编码和详细设计文档集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求系统测试是把已确认的软件与其他系统元素如硬件、其他支持软件、数据、人工等结合在一起进行测试以确定软件是否可以支付使用
5、单元测试有哪些内容测试中采用什么方法答单元测试主要针对模块的以下五个基本特征进行测试1模块接口2局部数据结构3重要的执行路径4错误处理5边界条件测试的方法是为被测试模块编写驱动模块和桩模块来实现被测试单元的可运行通过驱动模块来模拟被测试模块的上级调用模块,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结构并输出桩模块则用来代替被测试模块所调用的模块它的作用是返回被测模块所需的信息
6、什么是集成测试非渐增式测试与渐增式测试有什么区别渐增式测试如何组装模块答集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试非渐增式测试是指首先对每个模块分别进行单元测试,再把所有模块组装成一个完整的系统进行的测试而渐增式测试就是逐个把未经测试的模块组装到已经过测试的模块上去进行集成测试,每加入一个新模块进行一次集成测试,重复此过程直到程序组装完毕渐增式测试有两种不同的组装方法自顶向下和自底向上结合两者区别是1非渐增式方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试而渐增式测试往往把单元测试和集成测试合在一起,同时完成2非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量少3渐增式可以较早地发现接口之间的错误,非渐增式最后组装时才发现4渐增式有利于排错,发生错误往往和最近新加入的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错5渐增式比较彻底,已测试的模块和新的模块再测试6渐增式点用时间较多,但非渐增式所需更多的驱动模块和桩模块也占用一些时间7非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义
7、什么是确认测试该阶段有哪些工作答确认测试又称有效性测试它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合因而需求说明是确认测试的基础确认测试阶段有两项工作进行确认测试与软件配置审查
8、调试的目的是什么调试有哪些技术手段答调试则是在进行了成功的测试之后才开始的工作调试的目的是确定错误的原因和位置,并改正错误,因此调试也称为纠错Debug调试的技术手段有简单的调试方法、归纳法、演绎法和回溯法等
9、将正确答案的编号填入题目空白处在白盒测试用例中,有语句覆盖、条件覆盖、判定覆盖、路径覆盖等,其中A是最强的覆盖准则为了对下图所示的程序进行覆盖测试,必须适当地选取测试数据若X,Y是两个变量,可供选择的测试数据组共有I,II,III,IV四组如表中给出,则实现语句覆盖至少应采用的测试数据组是B;实现条件覆盖至少应采用的测试数据组是C;实现路径覆盖至少应采用的测试数据组是D或E可供选择的答案A1语句覆盖2条件覆盖3判定覆盖4路径覆盖B~E1I和II组2II和III级3III和IV组4I和IV组5I、II和III组6II,III和IV组7I,III和IV组8I、II和IV组答A4B:1C:4D5E
810、请对第5章习题第5题2判定三角形类别程序算法用等价类划分和边界值分析法设计测试用例,并检查逻辑覆盖标准解先划分等价类并编号为合理等价类设计测试用例,对于表中对应的四个合理等价类,用三个测试用例覆盖为每一个不合理等价类设计一个测试用例用边界值法设计测试用例第8章
1、软件维护有哪些内容?答
(1)校正性维护在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护
(2)适应性维护为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护
(3)完善性维护为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护
(4)预防性维护为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护
2、软件维护的特点是什么?答主要体现在三个方面
(1)非结构化维护和结构化维护软件的开发过程对软件的维护有很大的影响若不采用软件工程的方法开发软件,则软件只有程序而无文档,维护工作非常困难,这是一种非结构化的维护若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工作,这是一种结构化的维护
(2)维护的困难性软件维护的困难性是由于软件需求分析和开发方法的缺陷软件生存周期中的开发阶段没有严格而又科学的管理和规划,就会引起软件运行时的维护困难
(3)软件维护的费用软件维护的费用在总费用中的比重是在不断增加的,这是软件维护有形的代价另外还有无形的代价,即要占有更多的资源软件维护费用增加的占有原因是软件维护的生产率非常低
3、软件维护的流程是什么?答软件维护的流程如下知道维护申请报告、审查申请报告并批准、运行维护并做详细记录、复审
4、软件维护的副作用有哪些?答维护的副作用有以下三种
(1)编码副作用在使用程序设计语言修改源代码时可能引入的错误
(2)数据副作用在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误数据副作用是修改软件信息结构导致的结果但它可以通过详细的设计文档加以控制
(3)文档副作用如果对可执行软件的修改没有反映在文档中,就会产生文档副作用第9~10章
1、说明对象、类、类结构、消息的基本概念答1对象对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件对象包括有形实体、作用、事件、性能说明等类型对象具有状态和行为一个对象用数据值来描述它的状态,对象的操作则用于改变状态,对象及其操作就是对象的行为对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中对象内的数据具有自己的操作,从而可灵活地专门描述对象的独特行为,具有较强的独立性和自治性,其内部状态不受或很少受外界的影响,具有很好的模块化特点为软件重用奠定了坚实的基础2类具有相同或相似性质的对象的抽象就是类因此,对象的抽象就是类,类的具体化就是对象,也可以说类的实例是对象3类结构类与类之间的结构关系,包括一般-具体结构关系和整体-部分结构关系一般-具体关系结构称为分类结构,也可以说是或关系或isa关系,类的这种层次结构可用来描述现实世界中的一般化的抽象关系,通常越在上层的类越具有一般性和共性,越在下层的类越具体、越细化整体-部分结构称为组装结构,它们之间的关系是一种与关系,或者是hasa关系类的这种层次关系可用来描述现实世界中的类的组成的抽象关系上层的类具有整体性,下层的类具有成员性在类的层次结构中,通常上层的类称为父类或超类,下层类称为子类4消息对象之间进行通信的构造叫做消息在对旬的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息接收消息的对象经过解释,然后给予响应这种通信机制称为消息传递发送一条消息的格式是对象名.方法名参数
2、说明面向对象的特征和要素答面向对象的特征是1对象唯一性每个对象都有自身唯一的标识,在对象生存期中,其标识不变,不同的对象不能有不同的标识2分类性是指将具有一致的数据结构属性和行为操作的对象抽象成类3继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系4多态性是指相同的操作或函数过程可以作用于多种类型的对象上并获得不同的结果面向对象的要素是1抽象2封装性信息隐蔽3共享性
3、说明对象模型的特征,举现实世界的例子,给出它的一般关系、聚集关系的描述答对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述表现了对象的相互关系该模型的特征是用对象图来表现对象的结构、属性和操作,它是分析阶段三个模型的核心,也是其他两个模型的框架在对象模型中,定义了两种类的层次结构一般化关系和聚集关系一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象方式,即一般-具体的关系比如下图所示聚集关系是一种整体-部分关系在这种关系中,有整体类和部分类之分如下图所示
4、说明对象建模的过程答对象建模的过程如下首先标识类和关联,因为它们影响了整体结构和解决问题的方法,其次是增加属性,进一步描述类和关联的基本网络,使用继承合并和组织类,最后将操作增加到类中去作为构造动态模型和功能模型的副产品1确定类构造对象模型的第一步是标出来自问题域的相关对象类,包括物理实体和概念所有类在应用中都必须有意义检查问题陈述中的所有名词,产生暂定类然后去掉不必要的类和不正确的类2准备数据字典为所有建模实体准备一个数据词典准确描述各个类的精确含义,描述当前问题中的类的范围,包括对类的成员、用法方面的假设或限制3确定关联两个或多个类之间的相互依赖就是关联从问题中抽取所有可能的关联表示,把它们记下来,但不要过早去细化这些表述4确定属性属性是个体对象的性质,通常用修饰性的名词词组来表示只考虑与具体应用直接相关的属性,不考虑那些超出问题范围的属性,首先找出重要属性,避免那些只用于实现的属性,要为各个属性取有意义的名字5使用继承来细化类6完善对象模型
5、说明对象设计的步骤答对象设计要确定实现用到的类、关联的完整定义,接口的形式以及实现操作方法的算法,可以增加实现必须的内部对象,对数据结构和算法进行优化1获得操作2确定操作的目标对象3算法设计4优化设计5控制的实现6调整继承7关联的设计
6、用面向对象方法建立一个现实问题的分析模型答题目如下学校管理系统要存储下列数据:1系:系名系主任学生:学号姓名学生所属系教师:工作证号姓名教师所属系研究生:专业方向教授:研究领域课程:课程号名称学分2学生每学期要选修若干门课程每门课有一个考试成绩;莫个学期开设的莫门课程只有一个任教教师;一个教师只任教一门课;一个教师有能力讲授多门课程一门课程也可以有多位教师能够讲授;每个研究生只能跟随一位教授.1画出表示上述数据的对象模型不必考虑服务2给出实现这个对象模型的对象类设计.解暂无
7、程序复杂性的度量方法有哪些软件复杂性的度量方法有
1、代码行度量法以源代码行数作为程序复杂性的度量
2、McCabe度量法一种基于程序控制流的复杂性度量方法
8、什么是软件的可靠性它们能否定量计算软件可靠性是指在给定的时间内,在规定的环境条件下系统完成所指定功能的概率衡量软件可靠性的两个常用指标是平均失效等待时间MTTF和平均失效间隔时间MTBF就是说可以定量计算
9、什么是软件配置管理什么是基线答软件配置管理,简称SCMSoftwareConfigurationManagement是指一组管理整个软件生存期各阶段中变更的活动软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高生产率基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果。