当前位置:问答库>考研试题

2017年河北大学综合卷之软件工程复试实战预测五套卷

  摘要

一、名词解释

1. 黑盒测试

【答案】黑盒测试一种单元测试方法,它把被测试的对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依照需求规格说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试。

二、简答题

2. 什么是事件?

【答案】事件是发生在某一个时问点的一件事,例如,用户单击左边按钮,或者某次航班从北京出发。

3. 面向对象建模的三种模型是什么,各自的主要功能有哪些,分别可用UML 的哪些图来描述?

【答案】(1)面向对象建模的三种模型是对象模型、动态模型、功能模型。

(2)三种模型的主要功能

①对象模型

表示静态的、结构化的系统的数据性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。.

②动态模型

表示瞬时的、行为化的系统的控制性质,它规定了对象模型中对象的合法变化序列。

③功能模型

表示软件系统的功能性质,它指明了系统应该“做什么”,更直接地反映了用户对目标系统的需求。

(3)UML 图描述

①在UML 中,使用类图来建立对象模型。

②在UML 中,使用状态图和事件追踪图来建立动态模型。

③在UML 中,使用用例图来建立功能模型。

4. 瀑布模型有哪些局限性?

【答案】(1)各阶段之间存在着严格的顺序性,特别强调预先定义需求的重要性,在着手进行具体的开发工作之前,必须通过需求分析预先定义并“冻结”软件需求,然后再一步一步地实现这些需求。但是实际项目很少是遵循着这种线性顺序进行的。

(2)虽然瀑布模型也允许迭代,但这种改变往往给项目开发带来混乱。在系统建立之前很难只依靠分析就确定出一套完整、准确、一致、有效的用户需求,这种预先定义需求的方法更不能

适应用户需求不断变化的情况。

(3)传统的瀑布模型很难适应需求可变、模糊不定的软件系统的开发,而且在开发过程中,用户很难参与进去,只有到开发结束才能看到整个软件系统。这种思想的、线性的开发过程,缺乏灵活性,不适应实际的开发过程。

5. 调试的目的是什么?调试有哪些技术手段?

【答案】(1)调试的目的

调试是在进行了成功的测试之后才开始的工作。调试的目的是确定错误的原因和位置,并改正错误,因此调试也称为纠错。

(2)调试技术

简单的调试方法

a. 在程序中插入打印语句

该方法的优点是能显示程序的动态过程,较易检查源程序中的有关信息。缺点是低效率,可能输出大量的无关的数据,发现错误带有偶然性,同时因插入打印语句要修改程序,这种修改可能会掩盖错误,改变关键的时间 关系或把新的错误引入程序。

b. 运行部分程序

有时为了测试某些被怀疑有错的程序段,整个程序反复执行多次,使很多时间浪费在执行已经是正确的程序段上。在此情况下,应设法使被测程序只执行需要检查的程序段,以提高效率。可通过注释程序或开发语言所带的调试工具来查找错误。

②归纳法调试

归纳法调试从调试结果发现的线索(错误迹象、征兆)入手,分析它们之间的联系,导出错误原因的假设,然后再证明或否定这个假设。归纳法调试的具体步骤如下:

a. 收集有关数据

列出程序做对了什么,做错了什么的全部信息。

b. 组织数据

整理数据以便发现规律,使用分类法构造一张线索表。

c. 提出假设

分析线索之间的关系,导出一个或多个错误原因的假设。如果不能推测一个假设,再选用测试用例去测试,以便得到更多的数据。如果有多个假设,首先选择可能性最大的一个。

d. 证明假设

假设不是事实,需证明假设是否合理。不经证明就根据假设改错,只能纠正错误的一种表现

(即消除错误 的征兆)或只纠正一部分错误。如果不能证明这个假设成立,需提出下一个假设。

③演绎法调试

演绎法调试是列出所有可能错误原因的假设,然后利用测试数据排除不适当的假设,最后再测试数据验证余下的假设确实是出错的原因。演绎法调试的具体步骤如下:

a. 列出所有可能错误原因的假设。

b. 排除不适当的假设。

c. 精化余下的假设。

d. 证明余下的假设。

④回溯法调试

该方法从程序产生错误的地方出发,人工沿程序的逻辑路径反向搜索,直到找到错误的原因为止。该方法是对小型程序寻找错误位置的有效方法。

6. 简述面向对象的要素。

【答案】(1)抽象

①定义

抽象是指强调实体的本质、内在的属性,忽略一些无关紧要的属性。

②抽象性

面向对象比其他方法技术有更高的抽象性,对象具有极强的抽象表达能力,对象可表示一切事物,可表达结构化的数据,也可表达非结构化的数据,如过程实体、图形、声音、规则等。

③共性抽象

类实现了对象的数据(即状态)和行为的抽象,它是对象的共性抽象。

(2)封装性(信息隐蔽)

①定义

封装性是指所有软件部件内部都有明确的范围以及清楚的外部边界,每个软件部件内部都有界面接口,软件部件的内部实现与外部可访问性分离。

②作用

面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。对象是封装的最基本的单位。封装防止了抽象相互依 赖性而带来的变动影响,面向对象的封装是比传统语言的封装更为清晰、更为有力。

(3)共享性

①同一类中的共享

在同一类中的对象有着相同数据结构。

②在同一个应用中的共享

在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承使相似子类共享共同的结构和行为。

③在不同应用中的共享

通过类库这种机制和结构来实现不同应用中的信息共享。

7. 什么是“事务流”?

【答案】若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输