2017年华北电力大学(保定)软件工程(同等学力加试)复试仿真模拟三套题
● 摘要
一、名词解释
1. 内聚
【答案】内聚是衡量模块独立性的一个标准,指模块功能强度的度量,即一个模块内部各个元素彼此结合的紧密 程度的度量。模块内元素联系越紧密,内聚越高;内聚越高,模块独立性越强。
二、简答题
2. 简述面向对象的要素。
【答案】(1)抽象
①定义
抽象是指强调实体的本质、内在的属性,忽略一些无关紧要的属性。
②抽象性
面向对象比其他方法技术有更高的抽象性,对象具有极强的抽象表达能力,对象可表示一切事物,可表达结构化的数据,也可表达非结构化的数据,如过程实体、图形、声音、规则等。
③共性抽象
类实现了对象的数据(即状态)和行为的抽象,它是对象的共性抽象。
(2)封装性(信息隐蔽)
①定义
封装性是指所有软件部件内部都有明确的范围以及清楚的外部边界,每个软件部件内部都有界面接口,软件部件的内部实现与外部可访问性分离。
②作用
面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。对象是封装的最基本的单位。封装防止了抽象相互依 赖性而带来的变动影响,面向对象的封装是比传统语言的封装更为清晰、更为有力。
(3)共享性
①同一类中的共享
在同一类中的对象有着相同数据结构。
②在同一个应用中的共享
在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承使相似子类共享共同的结构和行为。
③在不同应用中的共享
通过类库这种机制和结构来实现不同应用中的信息共享。
3. 从软件工程的七条基本定理中任选四条,并对所选的每条定理做简要阐述。
【答案】(1)用分阶段的生命周期计划严格管理
在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作。应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。
(2)坚持进行阶段评审
软件的质量保证工作不能等到编码阶段结束之后再进行。因此,在每个阶段都进行严格的评审,以便尽早发 现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。
(3)实行严格的产品控制
当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。一切有关修改软件的建议,特别是涉及对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。
(4)结果应能清楚地审查
软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。
4. 面向对象实现应该选用哪种程序设计语言?为什么?
【答案】(1)面向对象实现应该尽量选用面向对象语言来实现面向对象分析、设计的结果。
(2)原因
①一致的表示方法。面向对象开发基于不随时间变化的、一致的表示方法。既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。
②可重用性。既可重用面向对象分析结果,也可重用相应的面向对象设计和面向对象程序设计结果。
③可维护性。程序显式地表达问题域语义,对维护人员理解待维护的软件有很大帮助。在选择编程语言时,应该考虑的首要因素是哪个语言能最恰当地表达问题域语义。
5. 什么是事件?
【答案】事件是发生在某一个时问点的一件事,例如,用户单击左边按钮,或者某次航班从北京出发。
6. 维护技术的副作用有哪些?
【答案】因修改软件而造成的错误或其他不希望出现的情况称为维护的副作用。维护的副作用有编码副作用、数据副作用、文档副作用三种。
(1)编码副作用
在使用程序设计语言修改源代码时可能引入下面错误。这些错误要到运行时才能被发现。例如:
①删除或修改一个子程序、一个标号、一个标识符。
②改变程序代码的时序关系,改变占用存储的大小,改变逻辑运算符。
③修改文件的打开和关闭。
④改进程序的执行效率。
⑤把设计上的改变翻译成代码的改变。
⑥为边界条件的逻辑测试做出改变。
(2)数据副作用
在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误。数据副作用是修改软件信息结构导致的结果。例如:
①重新定义局部或全局的常量,重新定义记录和文件格式。
②增加或减少一个数组或高层数据结构的大小。
③修改全局或公共数据。
④重新初始化控制标志或指针。
⑤重新排列输入/输出或子程序的参数。
(3)文档副作用
所有的维护活动都必须对相关技术文档进行相应修改。否则会导致文档与程序功能不匹配、缺省条件改变、新错误信息不正确等错误,使文档不能反映软件当前的状态。如果对可执行软件的修改没有反映在文档中,就会产生文档副作用。例如:
①修改交互输入的顺序和格式,没有正确地记入文档中。
②过时的文档内容、索引和文本可能造成冲突等。
7. 维护技术有哪些?
【答案】(1)面向维护的技术
面向维护的技术是在软件开发阶段用来减少错误,提高软件可维护性的技术,面向维护的技术涉及软件开发的所有阶段。
①在需求分析阶段,对用户的需求进行严格的分析定义,使之没有矛盾和易于理解,可以减少软件中的错误。
②在设计阶段,划分模块时充分考虑将来改动或扩充的可能性。使用结构化分析和结构化设计方法,采用容 易变更的、不依赖于特定硬件和特定操作系统的设计。
③在编码阶段,采用灵活的数据结构,是程序相对独立于数据的物理结构,养成良好的程序设计风格。
④在测试阶段,尽可能多地发现错误,保存测试用例和测试数据等。
(2)维护支援技术
维护支援技术是在软件维护阶段用来提高维护作业的效率和质量的技术,维护支援技术包括