2021年上半年软件设计师上午真题及答案解析(四)

31、模块A通过非正常入口转入模块B内部,则这两个模块之间是( )耦合。
A.数据
B.公共
C.外部
D.内容
参考答案:D
答案解析:

  • 数据耦合是通过参数表传递简单信息。
  • 公共耦合是多个模块访问同一个公共数据环境。
  • 外部耦合是一组模块访问同一个全局简单变量而没有通过参数表传递。
  • 内容耦合是一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口。

耦合类型:
内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合

  • 一个模块直接访问另一个模块的内部数据
  • 一个模块不通过正常入口转到另一模块内部
  • 两个模块有一部分程序代码重迭(只可能出现在汇编语言中)
  • 一个模块有多个入口

公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

外部耦合: 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。

控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。

标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。

数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。

非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。

32、软件详细设计阶段的主要任务不包括( )。
A.数据结构设计
B.算法设计
C.模块之间的接口设计
D.数据库的物理设计

参考答案:C
答案解析:
软件详细设计阶段的主要任务包括:

  • 对模块内的数据结构进行设计;
  • 对数据库进行物理设计;
  • 对每个模块进行详细的算法设计;
  • 代码设计、输入/输出设计、用户界面设计等其他设计。

软件概要设计阶段的主要任务包括:

  • 软件系统总体结构设计,将系统划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。
  • 数据结构及数据库设计。

33、以下关于文档的叙述中,不正确的是( )。
A.文档也是软件产品的一部分,没有文档的软件就不能称之为软件
B.文档只对软件维护活动有用,对开发活动意义不大
C.软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量
D.高质量文档对于发挥软件产品的效益有着重要的意义

参考答案:B
答案解析:
软件文档的作用:

  • 管理依据
  • 任务之间联系的凭证
  • 质量保证
  • 培训与参与
  • 软件维护支持
  • 历史档案

34、用白盒测试技术对下面流程图进行测试,至少采用( )个测试用例才可以实现路径覆盖。
在这里插入图片描述

A.3
B.4
C.6
D.8

参考答案:A
答案解析:
白盒测试也称结构测试,透明盒测试。主要用于单元测试阶段,代码和逻辑的测试,重点复杂的测试,是一种测试用例设计方法,不同于黑盒测试,白盒测试是可以看到内部代码如何运作的,可通过测试来检测产品内部是否符合规定正常运行。
白盒测试方法

  1. 静态
    桌面检查、代码审查、代码走查、代码扫描工具

  2. 动态
    1)逻辑覆盖:通过对程序逻辑结构的遍历实现程序的覆盖
    2)语句覆盖:设计测试用例,使得程序中每条语句至少被执行一次【语句覆盖率 = 被执行过的语句数量/可执行的语句总数】
    3)判断覆盖:也叫分支覆盖,设计测试用例,使得程序中的每个判断的”真“和”假“都至少被执行一次【判断覆盖率 = 每个判定的真假值至少出现一次/判断结果的总数】
    4)条件覆盖:设计测试用例,使得判定中的每个条件至少有一次取真值,有一次取假值【条件覆盖率 = 每个条件的真价值至少出现一次/条件结果的总数(条件结果 = 判断数 * 条件数)】
    5)判定条件覆盖:设计测试用例,使得被测程序中的每个判断本身的判定结果(真假)至少满足一次,每个逻辑条件的可能值也至少被满足一次。就是既满足判断覆盖,也满足条件覆盖。【判断条件覆盖率 =每个判断真假值和条件真假值至少出现一次/(判断结果的总数 + 条件结果的总数)】
    6)条件组合覆盖:设计测试用例,使得被测程序中的每个判定中条件结果的所有可能组合至少执行一次【条件组合覆盖率 = 条件组合至少出现一次的数量/条件组合的总数】
    7)路径覆盖:设计测试用例,覆盖程序中所有可能的路径【路径覆盖率 = 至少被执行过一次的路径数/总的路径数】
    条件组合覆盖能够满足语句覆盖、判定覆盖、条件覆盖、判定条件覆盖,但是条件组合覆盖不能保证所有路径被执行。
    8)基本路径测试法(最常使用):在程序控制流图的基础上,通过分析程序的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

本题给程序流程图每个结点进行标号如下:
在这里插入图片描述
图示中不同的路径为:①②;①③;①③④。

需要满足路径覆盖,则测试用例至少需要3组,以(x,y;result)格式记录,则可以设计为:

(0, 3; result) --①②; (0,1;result)–①③;(0,0;result)–①③④

35、软件可维护性是一个系统在特定的时间间隔内可以正常进行维护活动的概率。用MTTF和MTTR分别表示平均无故障时间和平均故障修复时间,则软件可维护性计算公式为( )。
A.MTTF/(I+MTTF)
B.I/(I+MTTF)
C.MTTR/(I+MTTR)
D.l/(I+MTTR)

参考答案:D
答案解析:
在软件外部,可以用MTTR来度量软件的可维护性,它指出处理一个有错误的软件需要花费的平均时间。如果用M表示可维护性指标,那么M=1/(1+MTTR);MTTF/(I+MTTF)一般用来表示可靠性或可用性指标。

36、某搜索引擎在交付后,开发人员修改了其中的索引方法,使得用户可以更快地得到搜索结果。这种修改属于( )维护
A.正确性
B.适应性
C.完善性
D.预防性

参考答案;C
答案解析:
在系统运行过程中,软件需要维护的原因是多样的,根据维护的原因不同,可以将软件维护分为以下四种:

  • 改正性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护。
  • 适应性维护。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。
  • 完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。更快地得到搜索结果,即提升了搜索引擎的性能,扩充功能或提升性能是完善性维护的工作。
  • 预防性维护。这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。通常,预防性维护可定义为“把今天的方法学用于昨天的系统以满足明天的需要”。也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编码和测试。

37、面向对象分析时,执行的活动质序通常是( )
A.认定对象、组织对象、描述对象的相互作用、确定对象的操作
B.认定对象、定义属性、组织对象、确定对象的操作识别包
C.认定对象、描述对象间的相互作用、确定对象的操作,识别包
D.识别类及对象、识别关系、定义属性、确定对象的操作

参考答案:A
答案解析:
面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。

  • 认定对象是指:在应用领域中,按自然存在的实体确立对象。在定义域中,首先将自然存在的“名词”作为一个对象,这通常是研究问题定义域实体的良好开始。通过实体间的关系寻找对象常常没有问题,而困难在于寻找(选择)系统关心的实质性对象。实质性对象是系统稳定性的基础。例如在银行应用系统中,实质性对象应包含客户账务、清算等,而门卫值班表不是实质性对象,甚至可不包含在该系统中。
  • 组织对象含义是:分析对象间的关系,将相关对象抽象成类,其目的是为了简化关联对象,利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑;如房子由门和窗构成,门和窗是房子类的子类。由对象抽象类,通过相关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。
  • 描述对象间的相互作用是:描述出各对象在应用系统中的关系。如一个对象是另一个对象的一部分,一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境,由一个对象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述。
  • 最后定义对象的操作和内部信息。

38、采用面向对象方法进行系统设计时,不应该强追客户依赖于他们不用的方法,即∶依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这属于( )
A.单一责任
B.开放-封闭
C.接口分离
D.里氏替换

参考答案:C
答案解析:

  • 单一职责原则:设计目的单一的类。
  • 开放封闭原则:对扩展开放,对修改封闭。
  • 里氏替换原则:子类可以替换父类。
  • 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。
  • 接口隔离原则:使用多个专门的接口比使用单一的总接口要好。不强迫客户依赖于他们不用的方法,即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。

39、40、假设Bird和Cat是Animal的子类,Parrot是Bird的子类,bird是Bird的一个对象,cat是Cat的一个对象,parrot是Parrot的一个对象。以下叙述中,不正确的是( )。
1)
A.cat和bird可看作是Animal的对象
B.parrot和bird可看作是Animal的对象
C.bird可以看作是Parrot的对象
D.parrot可以看作是Bird的对象

假设Animal类中定义接口move(), Bird、Cat和Parrot分别实现自己的move (),调用move()时,不同对象收到同一消息可以产生各自不同的结果,这一现象称为( )。
2)
A.封装
B.继承
C.消息传递
D.多态

参考答案:CD
答案解析:
在这里插入图片描述

cat、bird、parrot 都可以看作是Animal的对象。
parrot可以看作是Bird的对象。

不同对象接收到相同消息给出不同结果,这是多态的描述

封装:隐藏对象的属性和实现细节,仅对外公开接口(信息隐藏技术)。

继承与泛化:复用机制(单重继承和多重继承),子类可以继承父类的一些属性和方法。

消息和消息通信:对象之间进行通信的一种构造叫作消息。消息是异步通信的(消息传递:接收到信息的对象经过解释,然后予以响应)。

猜你喜欢

转载自blog.csdn.net/johnWcheung/article/details/127374650