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. 什么是“事务流”?
【答案】若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输