2017年江西农业大学软件工程(同等学力加试)复试仿真模拟三套题
● 摘要
一、名词解释
1. 多态性
【答案】多态性是指同一消息为不同的对象接受时,可产生完全不同的动作,利用多态性,用户可发送一个通用的消息,而将所有的实现细节都留给接受消息的对象自行决定。另外,多态性也可以指在父类中定义的属性或者 服务被子类集成后,可以具有不用的数据类型或者表现出不同的行为。
二、简答题
2. 什么是软件配置管理?主要任务是什么?
【答案】(1)软件配置管理的定义
软件配置管理是在软件的整个生命期内管理变化的一组活动。
(2)软件配置管理的主要任务
软件配置的主要任务是控制变化,同时也负责各个软件配置项(包括程序、文档和数据)、软件各种版本的标识、软件配置审计以及对软件配置发生的任何变化的报告。
3. 试述软件危机产生的原因。
【答案】软件危机产生的原因有:
(1)软件的规模越来越大,结构越来越复杂。随着计算机应用的日益广泛,需要开发的软件规模日益庞大,软件结构也日益复杂。
(2)软件开发管理困难。由于软件规模大,结构复杂,又具有无形性的特点,因此导致管理困难,进度控制困难,质量控制困难,可靠性无法保证。
(3)软件开发费用不断增加。软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多、周期长,费用上升很快。
(4)生产方式落后。仍然采用个体手工方式开发,根据个人习惯爱好工作,无章可循,无规范可依据,仅靠言传身教方式工作。
(5)软件开发技术落后。
(6)软件开发工具落后,生产率的提高速度缓慢。
4. 什么是测试用例?动态测试有哪些方法?
【答案】(1)测试用例的定义
“测试用例”是指为寻找程序中的错误而精心设计的一组测试数据,每个测试用例一般是一个二元组(输入数据、预期结果)。
(2)动态测试的分类
动态测试主要有两种方法:白盒法和黑盒法。但无论白盒法还是黑盒法都只能选择一些有代表性的测试用例进行有限的测试。
①白盒法测试
白盒法是从被测试程序的内部逻辑入手来设计测试用例;有六种用于有判定存在的逻辑覆盖标准,即程序内部路径的覆盖程度。对于有循环存在的覆盖用限制循环次数的办法来测试。但是对于一个实际问题的程序测试中,其路径是一个庞大的数字,基本路径测试告诉了最少路径计算办法,在分析程序控制流程图环路复杂性的基础上,导出基本路径集合,从而设计测试用例,保证这些基本路径至少执行一次,以最少的用例发现尽量多的错误。
②黑盒法测试
黑盒法着重测试被测试程序的功能,而不关心内部如何实现其功能的结构,是从用户观点出发的测试。具体方法有四种,采用黑盒法的综合策略是先用等价类划分法(包括边界值分析法,即取边值上的数)设计出测试用例,然后用错误推测法补充。如果被测试程序含有多个条件的逻辑组合,则开始就用因果图法。
5. 软件开发成本估算方法有哪些?
【答案】(1)自顶向下估算方法
①定义
估算人员参照以前完成的项目所耗费的总成本(或总工作量),来推算将要开发的软件的总成本(或总工作 量),然后把它们按阶段、步骤和工作单元进行分配。
②优点
自顶向下估算方法的主要优点是对系统级工作的重视,所以估算中不会遗漏系统级的诸如集成、用户手册和配置管理之类的事务成本估算,且估算工作量小、速度快。
③缺点
它的缺点是往往不清楚低级别上的技术性困难问题,而往往这些困难会使成本増加。
(2)自底向上估算方法
①定义
自底向上估算方法是将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,得到软件的总开发工作量。
②优点
这种方法的优点是对每一部分的估算工作交给负责该部分工作的人员来做,所以估算较为准确。
③缺点
其缺点是其估算往往缺少如软件开发有关的系统级工作量,如集成、配置管理、质量管理、项目管理等,所以估算往往偏低。
(3)差别估算方法
①定义
差别估算是将开发项目与一个或多个已完成的类似项目进行比较,找出与某个相似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。
②优点
该方法的优点是可以提高估算的准确度。
③缺点
该方法的缺点是不容易明确“差别”的界限。
6. 面向对象建模的三种模型是什么,各自的主要功能有哪些,分别可用UML 的哪些图来描述?
【答案】(1)面向对象建模的三种模型是对象模型、动态模型、功能模型。
(2)三种模型的主要功能
①对象模型
表示静态的、结构化的系统的数据性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。.
②动态模型
表示瞬时的、行为化的系统的控制性质,它规定了对象模型中对象的合法变化序列。 ③功能模型
表示软件系统的功能性质,它指明了系统应该“做什么”,更直接地反映了用户对目标系统的需求。
(3)UML 图描述
①在UML 中,使用类图来建立对象模型。
②在UML 中,使用状态图和事件追踪图来建立动态模型。
③在UML 中,使用用例图来建立功能模型。
7. 维护技术有哪些?
【答案】(1)面向维护的技术
面向维护的技术是在软件开发阶段用来减少错误,提高软件可维护性的技术,面向维护的技术涉及软件开发的所有阶段。
①在需求分析阶段,对用户的需求进行严格的分析定义,使之没有矛盾和易于理解,可以减少软件中的错误。
②在设计阶段,划分模块时充分考虑将来改动或扩充的可能性。使用结构化分析和结构化设计方法,采用容 易变更的、不依赖于特定硬件和特定操作系统的设计。
③在编码阶段,采用灵活的数据结构,是程序相对独立于数据的物理结构,养成良好的程序设计风格。
④在测试阶段,尽可能多地发现错误,保存测试用例和测试数据等。
(2)维护支援技术
维护支援技术是在软件维护阶段用来提高维护作业的效率和质量的技术,维护支援技术包括