当前位置: 湖北软考网>> 考试资料>> 软件设计师练习试题及答案解析(五)

软件设计师练习试题及答案解析(五)

来源: 湖北软考网    2018年08月06日

 61. 软件项目管理中可以使用各种图形工具,以下关于各种图形工具的论述中正确的是 (66) 。

  (66) A.流程图直观地描述了工作过程的具体步骤,以及这些步骤之间的时序关系,可以用于控制工作过程的完成时间

  B.PERT图画出了项目中各个活动之间的时序关系,可用于计算工程项目的关键路径,以便控制项目的进度

  C.因果分析图能表现出软件过程中各种原因和效果之间的关系,并且表现了它们随时间出 现的顺序和重要程度,这些数据可用于改进软件过程的性能

  D.Gantt图为整个项目建立了一个时间表,反映了项目中的所有任务之间的依赖关系,以及各个任务的起止日期,这些信息可用于项目的任务调度

  参考答案:(66)B。

  解析:项目管理是在指定时间内用最少的费用开发可接受的系统的管理过程,内容包括确定系统开发范围、计划、人员安排、组织、指导和控制。

  对于选项A的“流程图”,它表达了系统中各个元素之间的信息流动情况,是进行系统详细设计的工具,因此选项A的说法是错误的。

  选项B的“PERT图”,是一种图形化的网络模型,描述一个项目中的任务和任务之间的关系。PERT图用来在任务被调度之前弄清项目任务之间的依赖关系。PERT图的特点是通过关键路径法进行包括费用在内的资源最优化考虑,压缩关键路径上的工作,在规定的时间以前把它高效率地完成,因此选项B的说法是正确的。

  选项C的“因果分析图”,也称鱼骨图,是一种用于确定、探索和描述问题及其原因和结果的图形工具。可以用因果分析图来迫使团队考虑问题的复杂性,并让他们以一种客观的态度来看待引起问题的原因。因果分析图可以帮助团队来确立引起问题的首要和次要原因,并帮助他们组织产生于头脑风暴会议中的观点,因此选项C的说法是错误的。

  选项D的“Gantt图”,它和PERT图是安排进度时常用的图形描述方法。Gantt图中横坐标表示时间,纵坐标表示任务,图中的水平线段表示对一个任务的进度安排,线段的起点和终点所对应的横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间。

  Gantt图能够清晰地描述每个任务从何时开始,到何时结束及各个任务之间的并行关系,但是它不能清晰地反映出各任务之间的依赖关系,难以确定整个项目的关键所在,因此选项D的说法是错误的。

  62. 成功的SOA(面向服务架构体系结构)实施计划应该包含定义业务流程、SOA结构和模式、SOA基础架构和SOA开发程序等部分,其中 (67) 部分明确了需要哪些服务,哪些数据与此相关。

  (67) A.定义业务流程

  B.SOA开发程序

  C.SOA基础架构

  D.SOA结构和模式

  参考答案:(67)A。

  解析:面向服务架构体系结构(SOA)作为一种架构模型,它将应用程序的不同功能单元通过一些以中立方式定义的接口联系起来。成功的SOA实施计划应该包含①定义业务流程、②SOA结构和模式、③SOA基础架构和④SOA开发程序等4个主要的组成部分,每个部分完成的功能见表3。

  表3 SOA各组成部分功能表


组 成 部 分

功 能

① 定义业务流程

明确为了支持业务流程需要哪些服务,哪些数据与此相关

② SOA结构和模式

制定开发服务过程中应该遵循的原则和标准,描述服务如何定义及实施,说明通用实施和使用模式

③ SOA基础架构

包括支持开发和实施服务及业务流程所需要的网络、服务器、存储、信息工具、集成工具和流程自动化工具等

④ SOA开发程序

确定了服务开发和流程实施的优先顺序,指导整个项目,产生新的服务和流程


  63. 面向对象系统中有两种基本的复用方式:框架复用和类库复用。以下关于框架和类库的描述中,说法错误的是 (68) 。

  (68) A.框架是一个“半成品”的应用程序

  B.框架会为一个特定的目的实现一个基本的、可执行的架构

  C.类库只包含一系列可被应用程序调用的类

  D.类库是框架的一种扩展形式

  参考答案:(68)D。

  解析:本试题讨论的主题是框架和类库之间的区别。类库是一种预先定义的程序库,它以程序模块的形式,按照类层次结构把一组类的定义和实现组织在一起。可见,类库只包含一系列可被应用程序调用的类。

  框架是类库的一种扩展形式,它为一个特定的目的实现一个基本的、可执行的架构。换言之,它是一个“半成品”的应用程序。

 64. 以下关于面向对象技术的叙述中,说法正确的是 (69) 。

  (69) A.面向对象分析的第1步是定义类和对象

  B.面向对象程序设计语言为面向对象用例设计阶段提供支持

  C.构件表示的是物理模块而不是逻辑模块

  D.抽象类的主要特征是没有方法

  参考答案:(69)C。

  解析:由于定义服务、确定附加的系统约束,以及定义类和对象的前提是要确定问题域,因此面向对象分析的第1步是确定问题域。

  面向对象需求分析阶段、面向对象分析阶段和面向对象用例设计阶段都可以采用建模语言来进行描述,而面向对象程序设计语言主要为面向对象实现阶段提供支持。

  UML中的构件是遵从一组接口并提供一组接口的实现,它是组成系统的一部分,是可替换的。它表示的是物理模块而不是逻辑模块。构件与类处于不同的抽象层次。

  对象是数据及其操作的封装体。对象的名字、属性和方法是对象的三要素。对象之间的服务请求可以通过传递消息来实现。所有对象可以分成为各种对象类,每个对象都定义了一组方法。通常每个类都有实例,没有实例的类称之为抽象类。

  65. 在面向对象技术中,同一个算子在不同的表达式中可能有不同的操作意义,这种多态性称为(70) 。

  (70) A.参数多态

  B.过载多态

  C.包含多态

  D.隐含多态

  参考答案:(70)B。

  解析:多态性是指作用于不同对象的同一个操作可以有不同的解释,从而产生不同的执行结果。通俗地说,具有相似功能的不同函数使用同一个函数名来实现,从而可以使用相同的调用方法来调用这些具有不同功能的同名函数。多态性可分为①参数多态、②包含多态、③过载多态和④隐含多态等4种类型,这些类型的说明见表4。

  对于选项B的交互图(Interactive Diagram),是序列图(Sequence Diagram)和协作图的统称。它展现了各个对象如何依据某种行为进行相互协作。

  对于选项C的活动图(Activity Diagram),是一种特殊的状态图,它用于描述需要进行的活动、执行这些活动的顺序及工作流。它强调对象间的控制流。

  对于选项D的协作图(Collaboration Diagram),描述对象之间动态的交互关系,以及交互对象之间的静态链接关系。它强调收发消息对象的结构组织(上下层次关系)。

  70. 可以用项目三角形表示项目管理中主要因素之间相互影响的关系, (75) 处于项目三角形的中心,它会影响三角形的每条边,对三条边的任何一条所作的修改都会影响它。

  (75) A.范围

  B.时间

  C.成本

  D.质量

  参考答案:(75)D。

  解析:项目三角形是指项目管理三角形,3条边分别是指时间、成本和范围,三者存在密切的关系。质量是项目三角形中的第4个关键因素,可以把它看成三角形的重心,具体分析如下。

  ① 如果调整项目三角形的时间边,在分析项目工期之后,可能发现项目的实际工期超过了原来的预算,此时有多种方法可以调整项目工期的长度。选择的方法受到各种约束条件(如资金、项目范围和项目质量等)的影响。最有效的缩短工期的办法是调整项目关键路径上的任务,具体做法是,缩短一些工作任务的工期、安排一些工作任务同步进行、分配额外资源加速进度或者缩小项目范围。当调整项目工期时,项目成本可能增加,资源可能会被过度分配,而且项目范围也可能发生变化;

计算机软考:软件设计师练习试题及答案解析

计算机软考:软件设计师练习试题及答案解析

  参考答案:(71)D。

计算机软考:软件设计师练习试题及答案解析

  选项C中,类Q端的关联多重度被指定为“1…*”,说明类Q中必须包含(1…*)个类O的对象,这与试题中的描述恰好相反,因此选项C是错误答案,选项D是正确答案。

 67. 用UML建立业务模型是理解企业业务过程的第一步。使用活动图(Activity Diagram)可显示业务工作流的步骤和决策点,以及完成每一个步骤的角色和对象,它强调 (72) 。

  (72) A.上下层次关系

  B.时间和顺序

  C.对象间的迁移

  D.对象间的控制流

  参考答案:(72)D。

  解析:用UML建立业务模型是理解业务过程的第1步。使用活动图可表示企业业务的工作流。这种UML图显示工作流中的步骤和决策点,以及完成每一步骤的角色和对象。它强调对象间的控制流,是一种特殊的状态图(Statechart Diagram)。

  在UML模型图中,协作图(Collaboration Diagram)按组织结构对控制流建模,它强调上下层次关系。序列图(Sequence Diagram)用于按时间顺序对控制流建模,它强调的是时间和顺序。

  68.下面各语句中,能正确进行赋字符串操作的语句是(73)

  (73)A. chars[5]={"ABCDE"};

  B. chars[5]={’A’,’B’,’C’,’D’,’E’};

  C. char*s;s="ABCDE";

  D. char*s;scanf("%",s);

  参考答案:(73)C。

  解析:字符串最终存储于字符数组中,存储字符串的字符数组可以是程序主动引入的(定义或动态分配),也可以是字符串常量,由系统分配。其中字符数组用字符串初始化就是字符串存储于由程序引入的字符数组的例子。给字符指针赋字符串则是系统自动分配字符率存储空间的例子。给字符指针赋字符串并不是将一个长长的字符串存于字符指针变量中,而是将字符串常量存储于常量区,并将存储这个字符串的首字节地址赋给指针变量,让指针变量指向字符率常量的首字符。对于以字符串作为字符数组初值的情况,要求字符数组足够的大,能存得下字符串常量。这里有一个特别的规定,若数组的大小少于存储字符串有效字符的字节个数,系统将报告错误;当字符数组的大小只能存储字符串的有效字符,而不能存储字符率结束标记符时,则存储于字符数组中的内容是字符序列,因没有存储字符率结束标记符,存储的内容就不是字符串。如代码chara[5]="ABCDE"。另外,给字符数组元素逐一赋字符初值,并在字符初值中没有字符串结束标记符,则存于字符数组中的内容也不是字符率。如代码chars[5]={’A’,’B’,’C’,’D’,’E’}。特别要注意当字符指针还未指向某个字符数组的元素时,不可以通过字符指针输入字符串。如代码char*s;scanf("%s",s)。若写成char*str;scanf("%s",&str)更是错误的了。由于C语言规定数组不能相互赋值,所以只能将字符串常量赋给某字符指针。如代码char*s;s="ABCDE"是正确的。实际上,字符率"ABCDE"被存储于常量区中,向指针变量赋的是字符指针,让s指向其中的字符’A’。所以解答是C。

  69. 在UML建模过程中,对象行为是对象间为完成某一目的而进行的一系列消息交换。若需要描述跨越多个用例的单个对象的行为,使用 (74) 是最为合适的。

  (74) A.状态图(Statechart Diagram)

  B.交互图(Interactive Diagram)

  C.活动图(Activity Diagram)

  D.协作图(Collaboration Diagram)

  参考答案:(74)A。

  解析:对于选项A的状态图(Statechart Diagram),展示了一个特定对象的所有可能状态,以及由于各种事件的发生而引起的状态间的转移。若需要描述跨越多个用例的单个对象的行为,使用它是最合适的。

  对于选项B的交互图(Interactive Diagram),是序列图(Sequence Diagram)和协作图的统称。它展现了各个对象如何依据某种行为进行相互协作。

  对于选项C的活动图(Activity Diagram),是一种特殊的状态图,它用于描述需要进行的活动、执行这些活动的顺序及工作流。它强调对象间的控制流。

  对于选项D的协作图(Collaboration Diagram),描述对象之间动态的交互关系,以及交互对象之间的静态链接关系。它强调收发消息对象的结构组织(上下层次关系)。

  70. 可以用项目三角形表示项目管理中主要因素之间相互影响的关系, (75) 处于项目三角形的中心,它会影响三角形的每条边,对三条边的任何一条所作的修改都会影响它。

  (75) A.范围

  B.时间

  C.成本

  D.质量

  参考答案:(75)D。

  解析:项目三角形是指项目管理三角形,3条边分别是指时间、成本和范围,三者存在密切的关系。质量是项目三角形中的第4个关键因素,可以把它看成三角形的重心,具体分析如下。

  ① 如果调整项目三角形的时间边,在分析项目工期之后,可能发现项目的实际工期超过了原来的预算,此时有多种方法可以调整项目工期的长度。选择的方法受到各种约束条件(如资金、项目范围和项目质量等)的影响。最有效的缩短工期的办法是调整项目关键路径上的任务,具体做法是,缩短一些工作任务的工期、安排一些工作任务同步进行、分配额外资源加速进度或者缩小项目范围。当调整项目工期时,项目成本可能增加,资源可能会被过度分配,而且项目范围也可能发生变化;

  ② 如果调整项目三角形的资金边,为了降低成本,可以缩小项目范围,这样任务减少,占用的资源也会下降,成本就会降低,同时项目的工期也会缩短;

  ③ 如果调整项目三角形的范围边,改变项目的范围一定包括改变项目任务的数量和工期。项目范围和质量是密切相关的,在缩小范围的同时,会降低既定的项目质量要求。否则不可能在原来的资源和时间内达成新的目标,所以项目的预期目标限定了相应的资源和时间;

  ④ 项目三角形的3条边中任何一条边发生变化都会影响项目质量,项目质量受3条边的约束。例如,如果发现项目工期还有剩余时间,可以通过增加项目任务来扩大范围。有了这种项目范围的扩大,就能够提高项目质量。反之,如果需要降低项目成本,将其控制在项目预算范围之内,就不得不通过减少项目任务或者缩短项目工期来缩小项目范围。随着项目的缩小,就很难保证既定的项目质量了,所以削减项目成本会导致项目质量的降低。

71. 以下关于用例(use case)的叙述中,说法不够准确的是 (76) 。

  (76) A.用例将系统的功能范围分解成许多小的系统功能陈述

  B.一个用例代表了系统的一个单一的目标

  C.用例是一个行为上相关的步骤序列

  D.用例描述了系统与用户的交互

  参考答案:(76)D。

  解析:用例(use case)用来描述系统在对事件做出响应时所采取的行动,即它确定了一个与系统参与者进行交互,并由系统执行的动作序列。可见,一个用例本身并不是一个功能需求,它代表了系统的一个单一的目标,是一个行为上相关的步骤序列。

  选项D所描述的范围太广,不够准确。在UML规范中,参与者是指系统所涉及到的人,或者是用户在本系统中扮演的角色。一个参与者总是在系统的自动化边界之外。

  72. 采用UML分析用户需求时,用例UCl可以出现在用例UC2出现的任何位置,那么UCl和UC2之间的关系是 (77) 关系。

  (77) A.include

  B.extend

  C.generalize

  D.call

  参考答案:(77)C。

  解析:用例之间的泛化(generalize)关系类似于类之间的泛化关系。子用例继承父用例的行为与含义。子用例还可以增加或者覆盖父用例的行为。子用例可以出现在父用例出现的任何位置。

  本试题中,由于用例UCl可以出现在用例UC2出现的任何位置,因此UCl与UC2之间是选项C的“泛化(generalize)”关系。要注意,不是“用例UCl可以出现在用例UC2的任何位置”。

  选项A的“包含(include)”关系,表示基础用例在它内部,说明某一位置上显式的合并是另一个用例的行为。被包含用例从不孤立存在,仅作为某些包含它的更大的基础用例的一部分出现。

  选项B的“扩展(extend)”关系,表示基础用例在延伸用例间的一个位置上,隐式合并了另一个用例的行为。基础用例可以单独存在,但是在一定的条件下,它的行为可以被另一个用例的行为延伸。

  选项D的“call”可解释成“调用”。

  73.若有以下定义,则值为3的表达式是(78)

  inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;

  (78) A. p+=2,*(p++)

  B. p+=2,*++p

  C. p+=3,*p++

  D. p+=2,++*p

  参考答案:(78) A。

  解析:数组a有10个元素,分别有值1至10,指针变量p指向a[0],A逗号表达式p+=2,*(P++),先是P+=2使P指向a[2],接着是*(P++),以当时P所指变量a[2]取内容3为表达式的值,同时使p指向a[3]。B返号表达式p+=2,*++p,先是p+=2使p指向a[2],以后是*++p,又使p增1,让它指向a[3],并取指针p所指变量a[3]的内容4作为表达式的值。C逗号表达式p+=3,*p++,先是p+=3使p指向a[3],以后是*p++,表达式的值是a[3]为4,而使p指向a[4]。D逗号表达式p+=2,++*p,先是p+=2,使p指向a[2],以后是++*p,因当时的*p就是a[2],++a[2]使a[2]增1,变成4,并以4为表达式的值。所以只有p+=2,*(p++)的值是3。所以解答是A。

  74.要求函数的功能是在一维数组a中查找x值。若找到,则返回所在的下标值;否则,返回0。设数据放在数组元素的a[1]到a[n]中。在以下给出的函数中,不能正确执行此功能的函数是(79)

  (79)A. funa(int*a,intn,intx)

  {*a=x;

  whlie(a[n]!=x)n--;

  returnn;

  }

  B. funb(int*a,intn,intx)

  {intk;

  for(k=l;k<=n;k++)

  if(a[k]==x)returnk;

  return0;

  }

  C. func(inta[],intn,intx)

  {int*k;

  a[O]=x;k=a+n;

  while(*k!=x)k--;

  returnk-n;

  }

  D. fund(inta[],intn,intx)

  {intk=0;

  dok++;

  while((kif((kelsereturn0;

  }

  参考答案:(79)C。

  解析:在数组中找指定值是经常遇到的计算要求,有多种编程方法。在这里,数据预放在数组下标1至n的元素中,下标为0的元素没有放数据,程序可以利用这个位置简化查找函数。函数funa先将要查找的情放入a[0],从数据表的最后一个元素开始逆序向前查找。这样做的好处是循环条件不必担心因数组中原先没有值为x的元素而一直顺序查找下去,访问不是数表的元素,需插入条件n>O。在a[0]处放入x后,这个条件就不必要了,循环至少在访问了a[0]后终止,并返回0值。所以该函数能完成指定的功能。函数funb采用常规的办法编写,循环在a[1]与a[n]之间顺序寻找,一旦找到立即返回找到处的下标,直至查找循环结束,查不到指定的值而返回0值。函数func采用与函数funa相同的方法,不过是另外引入一个指针变量。但是该函数return语句后的表达式有严重的错误,应返回k-a,两指针的差,其值等于找到元素的下标。表达式k-n是指针k向前移n个位置的指针值。函数fund预置k为0,循环让k增1,并在k在界内和a[k]不等于x的情况下循环。循环结束有两种情况,或k已不在界内,或k在界内,并且a[k]等于x。若是后者,函数返回k,而若前者,函数返回比该函数也能正确完成查找工作。这样,不能正确完成查找工作的函数是函数fonc。所以正确选择是C。


返回首页

相关推荐

  • 考试提醒
  • 热门题库
  • 热门课程
报名
预计从2019年3月底陆续开始
准考证
预计从2019年5月开始
考试
2019年5月18-19日统考
查分
预计为2019年7月底
领证
考试结束5-6个月后开始领取
 
在线客服
咨询电话
027-59278608
手机微信
18062110513