《软件工程》复习卷(A卷)
专业:________________________ 姓名:______________ 学号:__________________ ₪₪₪₪₪₪₪₪₪₪ 注意:请将所有答案均写在答题纸上,并标明题号₪₪₪₪₪₪₪₪₪₪ 一.单选题(共20分,每小题2分)
1.为解决软件危机,人们采用工程化的方法指导软件的生产和管理,形成软件工程学。下列选项中,除了_____________,都是造成软件危机的主要原因。
软件工程学什么(A)软件管理困难而复杂(B)程序设计语言的表述能力差
(C)软件开发方法、技术和工具落后(D)软件复杂性大,用户需求的不确定性大
2.原型方法是一种有效的需求获取技术和软件开发模式,下列关于原型方法特点的描述,错误的是_________________。
(A)强调用户参与,尽快确定需求
(B)不适合不熟悉的应用领域的软件开发,开发周期长
(C)在构造原型时,可暂不考虑时空效率方面的要求
(D)在构造原型时,可暂不考虑容错和错误处理方面的要求
3.软件需求分析阶段的任务是了解用户对于目标系统的期望,即要软件做什么。因而在需求分析规格说明书中不应包括对_________________的描述。
(A)软件功能(B)软件性能(C)验收标准(D)关键功能实现算法4.在画分层数据流图时应注意保持之间的平衡。
(A)同一父图的所有子图(B)不同父图的所有子图
(C)父图与其子图(D)同一子图的所有直接父图
5.下列关于块间联系和块内联系的描述中,模块独立性最好的是________。
(A)模块独立完成一个单一的功能
(B)A模块调用B模块,并向B传递一个控制变量
(C)A、B两个模块都访问同一个数据库文件,实现信息共享
(D)模块内包含几个逻辑上相似的功能,通过参数确定具体执行哪个功能
6.下列关于Jackson方法的描述,错误的是_______________。
(A)由信息的数据结构导出程序的处理过程
(B)适合于用在总体设计阶段进行软件结构的设计
(C)适合于用在详细设计阶段简化数据处理部分的设计
(D)输入、输出数据结构的变化可能导致程序结构的整体变动
7.在设计有效的测试用例之前,必须理解软件测试的基本原则。下列关于测试原则的说法错误的是______________。
(A)所有的测试都应该追溯到用户需求
(B)应该加大力度、集中测试那些已经发现很多错误的模块
(C)测试应该从“小规模”开始,并逐步进行“大规模”测试
(D)应该尽量由对软件内部逻辑和处理过程非常熟悉的设计和编码人员来实施测试
8.某程序的输入是整数x,且要求2 ≤ x ≤ 6。若采用边界值分析方法设计测试用例,下列测试数据必须入选的是_______________。
① x=1,x=7② x=2,x=6③ x=4,x=10
(A)②(B)③ (C)①②(D)①②③
9.单元测试是测试的必经步骤,下列关于单元测试的说法错误的是_____________。
(A)在编码阶段进行(B)在测试的早期进行
(C)既要进行静态测试也要动态测试(D)一般不采用白盒法设计测试方案
10.软件的可维护性是评价软件质量的一个重要标准,下列选项中______________是提高软件可维护性的有效措施。
(A)设计时首要考虑采用时空效率高的算法
(B)尽可能利用硬件特点来提高程序效率
(C)提高程序可读性,尽量使用高级语言编程
(D)测试结束时,删除程序中的注解以缩短源程序长度
二.判断题(共18分,每小题2分)
1.软件计划阶段必须进行成本—效益分析,从经济上论证项目的可行性。
2.修改数据信息时,利用数据字典能够及时发现数据的变动将带来的影响,从而避免修改的副作用。
3.根据模块化的原理,将系统模块进行不断的分解,可使得软件开发的总工作量持续下降。
因而设计时应该尽量控制模块的规模。
4.在软件设计阶段,为优化软件结构,我们应该尽量将模块的作用范围限制在模块的控制范围之内,从而提高模块的独立性。
5.结构化程序设计(SP)关注程序结构,强调采用基本的控制结构编写单入单出的程序,从而改善可理解性、可修改性和可维护性,提高软件质量。
6.高级语言的功能比低级语言强,因此应该尽量采用高级语言编码,以提高软件开发效率。
7.通过对软件的严格测试,可以证明软件不含有隐患,从而保证其正确性。
8.如果采用白盒法设计的测试用例能够满足条件覆盖,则必然也满足判定覆盖。
9.参与项目的各类技术人员、管理人员都要掌握一定的软件工程知识,并保持开发人员稳定,即保证各阶段配备的人员数目始终保持不变。
三.简答题(共40分,每小题8分;下列6小题中任选5小题作答即可)
1.有人说:“软件错误发现得越晚,改错所付出的代价越大”,你认为这个观点对吗?试说明理由。以瀑布模型为例,谈谈如何采取有效措施避免错误积累带来的危害?
2.在生产硬件产品时,增派人手是加快进度的最直接和有效的手段。但有人说:“在已拖延的软件项目上追加更多人手,往往使项目更难如期完成”,这种说法对吗,为什么?
3.图1为某程序的PAD图表示。为了进行白盒测试,必须选用适当的测试用例。若x和y 是两个变量,可供选择的测试数据组见下表。试问:选用表中测试数据组可以实现判定(分支)覆盖吗?若能,请选出实现判定覆盖标准最少应采用的测试数据组(给出必要的分析步骤)。如果不能,为什么?
A 0 3
B 1 2
C -1 2
D 3 1
图1. 某程序的PAD图
4.增式测试法和非增式测试法是两种不同的综合(集成)测试策略,它们在集成模块的方式、测试的充分性、代价、调试(纠错)等方面具有显著差异。试对比分析之。
5.某些软件工程师不同意“目前国外许多软件开发组织把60%以上的人力用于维护已有的软件”的说法,他们的理由是:“我并没有花费我的60%的时间去改正我所开发的程序中的错误”。你同意他的观点吗?试述理由。
6.开发高质量的软件是软件工程追求的重要目标,学习了《软件工程》课程后,简要谈谈你认为应在软件生产和管理时采取哪些有效措施来保证软件质量。
四.应用题(共22分)
假设你负责开发一个考务处理系统以实现计算机处理考生报名、成绩通知、成绩分析等事务,印制各种表格和通知书。该考务系统应具有以下功能:
审查考生填写的报名表(包括考生姓名、通信地址等基本信息)是否合格,合格的为之自动生成报名号,编制准考证(包括准考证号、报名号、考生姓名)并打印发给考生。同时将考生的相关信息(报名号、准考证号、姓名、通信地址)录入考生名册。
对阅卷点送来的考生成绩清单进行检查,合格的录入成绩册,该成绩册包含准考证号、科目号、成绩等数据项。
自动生成成绩通知书,寄送考生。
根据考试中心提供的录取标准,自动生成录取通知书,寄送考生。
对考生成绩进行汇总统计,打印成绩分布表,报送考试中心。根据考生成绩分析试题难度,打印试题难度分析表,报送考试中心。
图2. 考务处理系统的顶层数据流图
试采用SA/SD方法进行需求分析和软件设计,并完成以下各题(请写明必要的步骤):1.请根据给出的该系统的顶层数据流图(如图2所示),作出该考务处理系统求精细化后的数据流图。(14分)
2.根据求出的数据流图,设计该系统的软件结构,并画出层次图。(8分)
发布评论