2017年南京信息工程大学F20软件工程复试实战预测五套卷
● 摘要
一、名词解释
1. 耦合性
【答案】耦合性也称块间联系,是软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
二、简答题
2. 列举出几种情况下运用整体一部分结构而实现或支持的复用。
【答案】(1)在两个或更多的对象类中都有一组属性和服务描述这些对象的一个相同的组成部分。把它们分离出来作为部分对象,建立整体一部分结构,这些属性和服务就被多个类复用,从而简化了它们的描述。
(2)系统中已经定义了某类对象,在定义其他对象时,发现其中一组属性和服务与这个已定义的对象是相同的,那就不必再重复地定义这些属性与服务,只需建立它与前一类对象之间的整体一部分结构。
(3)通过整体一部分结构提取可复用构件,以支持领域范围的复用问题。如果一个对象类中有一组属性和服务描述了该对象的一个独立部分,即使从本系统看并不需这样一个部分对象,只要它是一种在本领域经常使用的对象,就可把它从整体中分离出来作为部分对象,使它的类定义成为一个应用范围较广的可复用构件。
3. 简述动态模型的特征,说明事件、事件跟踪图、状态、状态图的含义。
【答案】(1)动态模型的特征
①动态模型是与时间和变化有关的系统性质,该模型描述了系统的控制结构。
②动态模型表示了瞬时的、行为化的系统控制性质。
③动态模型关心的是系统的控制,操作的执行顺序。
④动态模型从对象的事件和状态的角度出发,表现了对象的具体行为。
⑤动态模型描述的系统属性是触发事件、事件序列、状态、事件与状态的组织。使用状态图作为描述工具。
(2)事件的含义
事件是指时刻发生的某件事情。它是某事情发生的信号,它没有持续时间,它是一种相对性的快速事件。
(3)事件跟踪图的含义
①定义
事件跟踪图侧重于表达说明发生域系统执行过程中的一个特定“场景”(即脚本),是完成系
统某个功能的事件序列。
②作用
事件跟踪图用来表示事件、事件的接收对象和发送对象。各种有关事件的序列关系及由此表现出来的对象之间的交互作用可通过事件跟踪图来表达。
(4)状态的含义
对象在某个特定阶段所处的情形就是状态,它是对象行为的属性值的一种抽象。对象的属性值按照影响对象显著行为的性质将其归并到一个状态中去。状态指明了对象对输入事件的响应。事件和状态是孪生的,一事件分开两种状态,一个状态分开两个事件。
(5)状态图的含义
状态图反映了状态与事件的关系。当接收一事件时,下一状态就取决于当前状态和所接收的事件,由该事件引起的状态变化称为转换。状态图确定了由事件序列引起的状态序列。状态图描述了类中某个对象的行为,由于类的所有实例有相同的行为,那么这些实例共享同一状态图,正如它们共享相同的类性质一样。但因为各对象有 自己的属性值,因此各对象也有自己的状态,按自己的步调前进。
图 图书馆的软件结构图
4. 什么是软件配置管理?主要任务是什么?
【答案】(1)软件配置管理的定义
软件配置管理是在软件的整个生命期内管理变化的一组活动。
(2)软件配置管理的主要任务
软件配置的主要任务是控制变化,同时也负责各个软件配置项(包括程序、文档和数据)、软件各种版本的标识、软件配置审计以及对软件配置发生的任何变化的报告。
5. 非渐増式测试与渐増式测试有什么区别?
【答案】(1)渐增式测试和非渐增式测试的定义
集成测试的方法主要有两种:非渐増式测试和渐増式测试。
①非渐增式测试
首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行测试。 ②渐增式测试
逐个把未经过测试的模块组装成到已经测试的模块上去,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直至程序组装完毕。
(2)渐增式测试和非渐増式测试的区别
①非渐增式方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试把单元测试与集成测试合在一起,同时完成。
②非渐增式测试需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。
③渐增式可以较早地发现进口之间的错误,非渐增式最后组装时才发现。
④渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐増式发现进口错误推迟到最后,很难判断是哪一部分接口出错。
⑤渐增式比较彻底,已测试的模块和新的模块再测试。
⑥渐增式占用的时间较多,但非渐增式需更多地驱动模块。桩模块也占用一些时间。
⑦非渐増式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。
6. 在软件测试中,应注意哪些原则?
【答案】(1)测试用例应由输入数据和预期的输出数据两部分组成。这样便于对照检查,做到“有的放矢”。
(2)测试用例不仅用合理的输入数据,还要选择不合理的输入数据。这样能更多地发现错误,提高程序的可靠性。对于不合理的输入数据,程序应拒绝接收,并给出相应提示。
(3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。例如程序正确打印出用户并不需要的多余信息。
(4)应定制测试计划并严格执行,排除随意性。
(5)长期保留测试用例。测试用例的设计耗费很大的工作量,必须作为文档保存。因为修改后的程序可能有新的错误,需要进行回归测试。同时,为以后的维护提供方便。
(6)对发现错误较多的程序段,应进行更深入的测试。有统计数字表明,一段程序中已发现的错误越多,其中存在的错误概率也越大。因为发现错误数越多的程序段,其质量较差。同时在修改错误过程中又容易引入新 的错误。
(7)程序员避免测试自己的程序。测试是一种“挑剔性”的行为,心理状态是测试自己程序的障碍。另外,对需求规格说明的理解而引入的错误则更难发现。因此由别的人或另外的机构来测试程序员编写的程序会更客观、更有效。
7. 维护技术有哪些?
【答案】(1)面向维护的技术