一名良好的软件工程师应具备以下能力:
(1)具有扎实的计算机专业知识
(2) 良好的语言表达能力和沟通能力
(3) 健康的心理素质
(4) 快速学习能力
(5) 团队协作能力
题目:
一、选择题
1、软件生存周期模型有多种,下列选项中(C)不是软件生存周期模型。
A.螺旋模型 B.增量模型 C.功能模型 D.瀑布模型
2、 瀑布模型的关键不足在于( D )。
A.过于简单 B.各个阶段需要进行评审
C.过于灵活 D.不能适应需求的动态变更
3、下列模块独立性最强的是( A)
A.非直接耦合 B.数据耦合 C.公共耦合 D.内容耦合
4、需求分析阶段的任务是确定( D)。
A.软件开发方法 B.软件开发工具
C.软件开发费 D.软件系统的功能
5、下列选项中,不属于模块间耦合的是(B)。
A.内容耦合 B.异构耦合
C.控制耦合 D.数据耦合
6、在类图中,“#”表示的可见性是(B)
A.Public B.Protected C.Private D.Package
7、软件特性中,一个软件能再次用于其他相关应用的程度称为( B )。
A.可移植性 B.可重用性
C.容错性 D.可适应性
8、UML 是软件开发中的一个重要工具,它主要应用于哪种软件开发方法 ( C )
A .基于瀑布模型的结构化方法 B .基于需求动态定义的原型化方法
C .基于对象的面向对象的方法 D .基于数据的数据流开发方法
9、面向对象的分析方法主要是建立三类模型,即( D )。
A.系统模型、ER 模型、应用模型
B.对象模型、动态模型、应用模型
C.E-R模型、对象模型、功能模型
D.对象模型、动态模型、功能模型
10、数据耦合、公共耦合、标记耦合、控制耦合的耦合性从低到高的顺序是( B )
A.数据、公共、标记、控制 B.数据、标记、控制、公共
C.控制、数据、标记、公共 D.控制、数据、公共、标记
二、判断题
( × )(1)开发软件就是编写程序。
( √ )(2)快速原型模型可以有效地适应用户需求的动态变化。
( × )(3)软件需求分析的任务是建立软件模块结构图。
( × )(4)进行总体设计时加强模块间的联系。
( √ )(5)尽可能使用高级语言编写程序。
( × )(6)编程序时应尽可能利用硬件特点以提高程序效率。
( × )(7)数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。
( √ )(8)模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。
( × )(9)系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性等测试。
( × )(10)软件测试是要发现软件中的所有错误。
三、问答题
1、试举例说明聚集关系中共享聚集和组合聚集有何不同?
如果在聚集关系中部分对象可同时参与多个整体对象的构成,则该聚集称为共享聚集。例如,一个课题组包含许多成员,每个成员又可以是另一个课题组的成员,则课题组和成员之间是一种共享聚集的关系。
如果部分对象完全隶属于整体对象,并与整体对象共存,则该聚集称为组合聚集。例如,在屏幕上一个窗口由文本框、列表框、按钮和菜单等构成,且一旦关闭了窗口,则各组成部分也消失,则窗口和它的组成部分之间的关系为组合聚集关系。
2、什么是白盒测试?什么是黑盒测试?
答:白盒测试又称为结构测试,它的前提条件是可以看成将程序放在一个透明的白盒子中,也就是完全了解了软件系统的结构和整个处理过程。黑盒测试又叫功能测试、数据驱动测试或基于需求规格说明书的功能测试。该类测试注重于测试软件的功能性需求。
3、简述你对模块独立性的理解。
模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单,模块内部各部分及模块间的关系的--种衡量标准,由内聚和耦合来度量。
模块独立性的重要性:具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化;独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够"插入"模块。总之,模块独立是优秀设计的关键,而设计又是决定软件质量的关键环节。