课程名称软件工程 学期 2020 年春季 试卷种类A卷
考试时间100分钟 考试方式开卷 共 页第 页
一、填空题(每空1分,共10分)
- 文档 是一种数据媒体及其上所记录的数据。
2.软件工程方法学三要素包括 方法 、 工具 和 过程 。 - 系统流程图 是概括地描绘物理系统的传统工具,它用图形符号描绘组成系统的每个部件。
4.需求分析过程应该建立3种模型,分别是 数据模型 、 功能模型 和 行为模型 。 - 属性 定义了数据对象的性质。
- 事件 就是引起系统做动作或转换状态的控制信息。
二、选择题(每题2分,共30分)
1.E-R图中不包含( )。
A.实体 B.流程 C.属性 D.联系
2.数据字典中,一般不包括( )。
A.数据流 B.数据存储 C.处理 D.源点与终点
3.如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为( )。
A.数据耦合 B.控制耦合 C.特征耦合 D.公共环境耦合 - 下面不属于软件工程的基本原则的是( )。
A.模块化 B.抽象 C.局部化 D.自顶向上
5.为了提高模块的独立性,模块内部最好是( )。
A.逻辑内聚 B.时间内聚 C.功能内聚 D.通信内聚
6.程序的三种基本控制结构是( )。
A.过程、子程序和分程序 B.顺序、选择和循环
C.递归、迭代和回溯 D.调用、返回和转移
7.各种软件维护的类型中最重要的是( )。
A.完善性维护 B.纠错性维护 C.适应性维护 D.预防性维护 - 结构化设计方法是面向( )的设计方法。
A.过程 B.对象 C.数据流 D.数据结构
9.所有的对象可以成为各种对象类,每个对象类都定义了一组( )。
A.说明 B.方法 C.过程 D.类型 - 软件生命周期中,能准确确定软件系统体系结构的功能阶段是( )。
A.概要设计 B.详细设计 C.需求分析 D.可行性分析 - 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作( )。
A.软件投机 B.软件危机 C.软件工程 D软件产生 - 软件工程学的目的是以较低的成本,研制( )质量的软件。
A.较高 B.较低 C.可靠 D.优秀 - 软件开发中常采用的结构化生命周期方法,由于其特征称其为( )。
A.瀑布模型 B.对象模型 C.螺旋模型 D.层次模型 - 模块内部的算法设计在结构化方法的( )阶段进行。
A.系统分析 B.概要设计 C. 详细设计 D.编码 - 软件设计中,用抽象和分解的目的是( )。
A.提高易读性 B.降低复杂性 C.增加内聚性 D.降低耦合性
三、名词解释(每题4分,共20分)
1.软件:软件是与计算机系统操作有关的程序、规程、规则及任何与之有关的文档及数据。它是包括程序,数据及其相关文档的完整集合。 - 数据流图:是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
- 模块化 :模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
- 信息隐藏:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。
- 黑盒测试:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个黑盒子,在完全不考虑程序内部结构和处理过程的情况下,在程序接口进行测试。
四、简答题(每题8分,共40分) - 什么是软件工程?
答:软件工程是指导计算机软件开发和维护的一门工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 - 从哪些方面验证软件需求的正确性?
答:(1) 一致性 所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
(2) 完整性 需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
(3) 现实性 指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。
(4) 有效性 必须证明需求是正确有效的,确实能解决用户面对的问题。 - 简述软件工程抽象过程。
答:软件工程过程的每一步都是对软件解法的抽象层次的一次精化。
在可行性研究阶段,软件作为系统的一个完整部件;
在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;
当由总体设计向详细设计过渡时,抽象的程度也就随之减少了;
最后,当源程序写出来以后,也就达到了抽象的最低层。 - 简述模块独立性的重要性。
答:具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化;独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够“插入”模块。 - 什么是对象、类、封装、继承?
答:类(Class)是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。
对象(Object)是系统中描述客观事物的一个实体,它是构成系统的一个基本单位,由一组 属性和对这组属性进行操作的一组服务组成,是类的一个实例
封装(Encapsulation)是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。
继承性:如果一个类 A 继承自另一个类 B,就把这个 A 称为"B 的子类",而把 B 称为"A 的 父类"。继承使得相似对象可以共享程序代码和数据结构,大大减少程序中的冗余信息;继 承可以把已有的一般性的类具体化来提高软件的可重用性。