1《软件工程》试卷2一、选择题:(每题1分,共20分)(将答案写在题号前的()中)(C)1.软件是()。A.处理对象和处理规则的描述B.程序C.程序及其文档D.计算机系统(B)2.软件需求规格说明的内容不应包括()。A.主要功能B.算法的详细描述C.用户界面及运行环境D.软件的性能(B)3.程序的三种基本控制结构是()。A.过程、子程序和分程序B.顺序、选择和重复C.递归、迭代和回溯D.调用、返回和转移(D)4.面向对象的分析方法主要是建立三类模型,即()。A)系统模型、ER模型、应用模型B)对象模型、动态模型、应用模型C)E-R模型、对象模型、功能模型D)对象模型、动态模型、功能模型(C)5.在E-R模型中,包含以下基本成分()。A)数据、对象、实体B)控制、联系、对象C)实体、联系、属性D)实体、属性、操作(A)6.各种软件维护的类型中最重要的是()。A)完善性维护B)纠错性维护C)适应性维护D)预防性维护(B)7.软件测试的目标是()。A.证明软件是正确的B.发现错误、降低错误带来的风险C.排除软件中所有的错误D.与软件调试相同(D)8.软件生命周期中所花费用最多的阶段是()A.详细设计B.软件编码C.软件测试D.软件维护(C)9.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001.设计这组测试用例的方法是()A.条件覆盖法B.等价分类法C.边界值分析法D.错误推测法(D)10、详细设计的基本任务是确定每个模块的()设计A.功能B.调用关系C.输入输出数据D.算法(A)11.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。对于两个问题P1和P2,如果C(P1)C(P2)显然E(P1)E(P2),则得出结论E(P1+P2)E(P1)+E(P2)就是:()A.模块化的根据B.逐步求精的根据C.抽象的根据D.信息隐藏和局部化的根据(D)12.下面几种白箱测试技术,哪种是最强的覆盖准则()A.语句覆盖B.条件覆盖C.判定覆盖D.条件组合覆盖(A)13.面向数据流的设计方法把()映射成软件结构。A.数据流B.系统结构C.控制结构D.信息流(A)14.内聚程度最低的是()内聚A.偶然B.过程C.顺序D.时间(A)15.确定测试计划是在()阶段制定的.A.总体设计B.详细设计C.编码D.测试(D)16.需求分析的产品是()2A.数据流程图案B.数据字典C.判定表D.需求规格说明书(C)17.数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是()A.数据库设计B.数据通信C.数据定义D.数据维护(D)18.()引入了“风险驱动”的思想,适用于大规模的内部开发项目。A.增量模型B.喷泉模型C.原型模型D.螺旋模型(D)19.模块的内聚性最高的是()A.逻辑内聚B.时间内聚C.偶然内聚D.功能内聚(D)20.提高测试的有效性非常重要,成功的测试是指()A.证明了被测试程序正确无误B.说明了被测试程序符合相应的要求C.未发现被测程序的错误D.发现了至今为止尚未发现的错误二.判断题(每题1分,共10分)将答案写在题号前的()中,正确用√,错误用χ。(×)1、开发软件就是编写程序。(×)2、系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性等测试。(×)3、编程序时应尽可能利用硬件特点以提高程序效率.(×)4、软件需求分析的任务是建立软件模块结构图。(√)5、尽可能使用高级语言编写程序(×)6、以结构化分析方法建立的系统模型就是数据流图。(×)7、进行总体设计时加强模块间的联系。(×)8、编码时尽量多用全局变量.(√)9、用CASE环境或程序自动生成工具来自动生成一部分程序.(×)10、软件测试是要发现软件中的所有错误。三、填空题(每题1分,共5分):将结果填在()1、将下面的关系按继承关系、聚集关系或普通关联进行分类。小汽车---------红旗轿车(继承)小汽车---------驾驶员(普通关联)班级------------学生(聚集)2、将下列各项分为类或类的实例我的汽车(实例)交通工具(类)三、简答题:(每题5分,共25分)1.软件生命期各阶段的任务是什么?答:软件生命期分为7个阶段:1、问题定义:要解决的问题是什么2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性3、需求分析:系统必须做什么4、总体设计:系统如何实现,包括系统设计和结构设计5、详细设计:具体实现设计的系统6、实现:编码和测试7、运行维护:保证软件正常运行。2、软件重用的效益是什么?答:1、软件重用可以显著地改善软件的质量和可靠性。32、软件重用可以极大地提高软件开发的效率。3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。3、自顶而下渐增测试与自底而上渐增测试各有何优、缺点?答:①自顶而下渐增测试优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误。缺点:需要存根程序,底层错误发现较晚。②自底而上渐增测试优点与缺点和自顶而下渐增测试相反。4、提高可维护性的方法有哪些?答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件,同时也在大力发展软件重用技术。简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。【解答】测试过程按4个步骤进行,即单元测试(模块测试)、集成测试(子系统测试和系统测试)、确认测试(验收测试)和平行运行。单元测试集中对用源代码实现的每一个程序单元进行测试,与其相关的文档是单元测试计划和详细设计说明书。集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。与其相关的文档是集成测试计划和软件需求说明书。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。与其相关的文档是确认测试计划和软件需求说明书。平行运行把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试。与其相关的文档:用户指南、使用手册等。四、应用题(每题8分,共40分)1、假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。要求:画出系统的数据流图。4答:2、将下面给出的伪码转换为N-S图和PAD图。voidroot(floatroot1,floatroot2){i=1;j=0;while(i=10){输入一元二次方程的系数a,b,c;p=b*b–4*a*c;if(p0)输出“方程i无实数根”;elseif(p0)求出根并输出;if(p==0){求出重根并输出;j=j+1;}i=i+1;}输出重根的方程的个数j;}【解答】(1)N-S图(2)PAD图i=1;j=0;while(i=10)输入a,b,c;计算p=b2-4ac;p0?输出“方程i”无实根求出根并输出p0?p==0?求出重根并输出;j=j+1;i=i+1;输出重根的方程个数iTTTFFF53、:输入三整数,判断是否构成三角形,如构成三角形,则输出三条边的值,否则输出”不能构成三角形”.要求:1.用程序流程图表示该问题的算法;2.计算程序复杂度;3.设计路径覆盖的测试用例。答:路径:1.①—②—③—④—⑥—⑦2.①—②—⑤—⑥—⑦3.①—⑤—⑥—⑦4.①—②—③—⑤—⑥—⑦程序复杂度=3+1=4i=1;j=0;输出重根的方程个数iwhile(i=10)输入a,b,c;计算p=b2–4ac;求出根并输出p0?p0?输出方程i无实根p=0?求出重根并输出;j=j+1;i=i+1;①②①③④⑤⑥⑦ⅠⅰⅡⅢⅰⅣⅰ开始输入A,B,CA+BCA+CBB+CA输出ABC不能构成三角形结束FFFTTT①②③④⑤⑦6测试用例路径测试用例(A,B,C)结果1A=3,B=4,C=5A=3,B=4,C=52A=5,B=8,C=2不能构成三角形3A=2,B=2,C=5不能构成三角形4A=5,B=2,C=2不能构成三角形4、某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定树表示与上述每种条件组合相对应的计算行李费的算法.答案:5、一个软件公司有许多部门,分为开发部门和管理部门两种,每个开发部门开发多个软件产品,每个部门由部门名字唯一确定。该公司有许多员工,员工分为经理,工作人员和开发人员。开发部门有经理和开发人员,管理部门有经理和工作人员。每个开发人员可参加多个开发项目,每个开发项目需要多个开发人员,每位经理可主持多个开发项目,建立该公司的对象模型。答案:软件公司部门名部门开发部门管理部门软件产品开发人员经理开发项目工作人员员工是是有有有有开发参加1+1+1+1+1+1+1+▼▼▼▼▼有