2017年重庆大学软件学院877软件工程基础综合考研仿真模拟题
● 摘要
一、填空题
1. 事件跟踪图用来表示_____、_____对象和_____对象。_____和_____可用一条垂直线表示,各_____用水平箭头表示,箭头方向是从_____对象指向_____对象。
【答案】事件;事件的接收;发送;接收对象;发送对象;事件;发送;接收
2. 系统流程图用图形符号表示系统中各个元素,表达了系统中各种元素之间的_____。
【答案】信息流动
3. 在软件项目管理中,按照风险的影响范围可将风险分为:项目风险、_____和_____。
【答案】基本风险;特殊风险
4. 状态是对象的_____、_____的一种抽象。
【答案】属性值;链接
5. _____不同取值所构成的组合都可看作对象的一种新的状态。
【答案】对象的每个属性
6. 集成测试是指在_____的基础上,将所有模块按照设计要求_____成一个完整的系统进行的测试,故也称_____或_____。
【答案】单元测试;组装;组装测试;联合测试
7. 用等价类划分的方法设计测试用例的步骤为_____、_____。
【答案】划分等价类;确定测试用例
8. 详细设计的目标不仅是逻辑上正确地实现_____,还应使设计出的处理过程_____。_____是实现该目标的关键技术之一,它指导人们用良好的思想方法开发易于_____、易于_____的程序。
【答案】每个模块的功能;清晰易读;结构化程序设计;理解;验证
9. 软件生命周期的一种典型的阶段划分为:_____、_____、需求分析、概要设计、详细设计、编码、测试和_____。
【答案】问题定义;可行性研究;维护
10.主要有两种方法来建立有限状态机,一种是“_____”,另一种是“_____”,分别用_____方式和_____方式建立有限状态机。
【答案】状态转移图;状态转移表;图形;表格
二、简答题
11.可行性研究的任务有哪些?
【答案】可行性研究首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制。然后,分析员进行简要的需求分析,经过压缩的设计,探索出若干种可供选择的主要解决办法。对每种解决方法都要研究它的可行性,可从以下三个方面分析研究每种解决方法的可行性。
(1)技术可行性
要确定使用现有的技术能否实现系统,就要对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目能否实现。这里的资源包括已有的或可搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。
(2)经济可行性
进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。对于大多数系统,一般衡量经济上是否合算,应考虑一个最小利润值,经济可行性研究范围较广,包括成本一效益分析、公司经营长期策略、开发所需的成本和资源、潜在的市场前景。
(3)社会可行性
确定要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
12.在软件测试中,应注意哪些原则?
【答案】(1)测试用例应由输入数据和预期的输出数据两部分组成。这样便于对照检查,做到“有的放矢”。
(2)测试用例不仅用合理的输入数据,还要选择不合理的输入数据。这样能更多地发现错误,提高程序的可靠性。对于不合理的输入数据,程序应拒绝接收,并给出相应提示。
(3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。例如程序正确打印出用户并不需要的多余信息。
(4)应定制测试计划并严格执行,排除随意性。
(5)长期保留测试用例。测试用例的设计耗费很大的工作量,必须作为文档保存。因为修改后的程序可能有新的错误,需要进行回归测试。同时,为以后的维护提供方便。
(6)对发现错误较多的程序段,应进行更深入的测试。有统计数字表明,一段程序中已发现的错误越多,其中存在的错误概率也越大。因为发现错误数越多的程序段,其质量较差。同时在修改错误过程中又容易引入新 的错误。
(7)程序员避免测试自己的程序。测试是一种“挑剔性”的行为,心理状态是测试自己程序的障碍。另外,对需求规格说明的理解而引入的错误则更难发现。因此由别的人或另外的机构来测试程序员编写的程序会更客观、更有效。
13.软件维护有哪些内容?
【答案】(1)校正性维护
在软件交付使用后,由于在软件开发过程中产生的错误被带到维护阶段上来。这些隐含的错误在某些特定的使用环境下会暴露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。
(2)适应性维护
随着计算机的飞速发展,计算机硬件和软件环境也不断发生变化,数据环境也在不断发生变化。为了使应用软件适应这种变化而修改软件的过程称为适应性维护。
(3) 完善性维护
在软件漫长的运行时期中,用户往往会对软件提出新的功能要求和性能要求。这是因为用户的业务会发生变化,组织机构也会发生变化。为了适应这些变化,应用软件原来的功能和性能需要扩充和增强。这种增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。
(4)预防性维护
为了提高软件的可维护性和可靠性对软件进行的修改称为预防性维护。这是为以后进一步地运行和维护打好基础。这需要采用先进的软件过程方法对需要维护的软件或软件中的某一部分进行设计、编码和测试。
14.测试面向对象软件时,主要有哪些设计确认测试用例的方法?
【答案】设计确认测试用例的方法主要有传统的黑盒方法、基于情景的方法。
(1)黑盒测试:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地就收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
(2)基于情景的方法:场景,是一种有假设条件的故事,可以辅助测试人员把一个复杂的问题或系统通过电影那样地过一遍。测试人员通过把整个场景都设想出来,在设想中的场景中进行的测试就是基于场景的测试。
15.什么是结构化维护?结构化维护的特点是什么?
【答案】(1)结构化维护的定义
若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工作,这是一种结构化的维护。
(2)结构化维护的特点
①有软件工程思想开发的软件具有各个阶段的文档,这对于理解和掌握软件功能、性能、系统结构、数据结构、系统接口和设计约束有很大作用。