第一篇:软考软件设计师教程重难点解析
软考软件设计师资讯
http:// 软考软件设计师教程重难点解析
2016下半年软考软件设计师考试即将开始,同学们准备好了吗,希赛小编为正在备战下半年考试的你们准备了一些软件设计师教程重难点解析,希望对大家有所帮助。
死锁(Deadlock)是指多个进程在运行的过程中因争夺资源而造成的一种僵局。当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。在软件设计师的考试当中,这个知识点的考查是以选择题的形式出现的,考点主要有:死锁的必要条件、解决死锁的方法,最难高难度会考到“银行家算法”。本文将介绍死锁的相关知识,但不会具体讲解“银行家算法”,该算法将在本系列的下一篇文章中详细说明。
1、死锁发生的必要条件
死锁的发生必须具备四个必要条件,这四个条件相互联系、缺一不可。
(1)互斥条件:指进程对所分配到的资源进行排他性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其他进程请求该资源,则请求者只能等待,直至占有该资源的进程用完并释放。
(2)请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资
软考软件设计师资讯
http:// 源请求,而该资源又已被其他进程占有,此时请求进程阻塞,但又对自己已获得的其他资源保持不放。
(3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
(4)环路等待条件:指在发生死锁时,必然存在一个进程--资源的环形链,即进程集合{P0,P1,P2…Pn}中的P0正在等待一个P1占用的资源,P1正在等待P2占用的资源,……Pn正在等待已被P0占用的资源。
2、判断系统是否可能进入死锁状态
从上面的死锁解决方案来看,无论哪一种方式都不可避免的要增加系统的负担。而同时一个系统是否有可进入死锁状态受系统资源数量,需要使用该资源的进程数量等因素影响。若系统本不可能引起死锁,而我们采用了死锁解决方案,是很不合理的。所以,考试中常考到这样的题型:给出系统的资源数,以及需要使用该资源的进程数量等参数,让考生判断系统有无可能产生死锁。下面我们以例题的方式来说明如何解决这类问题。
例题1:
系统有3个进程:A、B、C。这3个进程都需要5个系统资源。如果系统有多少个资源,则不可能发生死锁。
解答:
在分析这个问题时,我们可以取一些简单的数据代入试题进行验证、分析,以得到相应的规律。
如:
(1)当系统资源数量为9时,若给A与B分别分配了4个资源,C分配了
1软考软件设计师资讯
http:// 个资源,则系统中的每个进程都存在资源不足的情况,而都不放手自己拥有的资源。不能正常运行完毕,发生死锁。
(2)当系统资源数量为12时,若给A、B、C各分配4个资源,则死锁。
(3)当系统资源数量为13时,无论如何分配,总有至少1个进程能得到5个资源,得到5个资源的进程可以正常运行完毕,而后将自己占用的资源分配给其它进程,所以这样能使所有进程运行完毕。
从上面的尝试,我们可以总结出一个规律:先给所有进程分配他们所需要的资源数减1个资源,然后系统如果能再剩余1个资源,则系统不会发生死锁。这样解答本题变得非常容易。
(5-1)*3+1=13。
例题2:
一台计算机有10台磁带机被m个进程竞争,每个进程最多需要三台磁带机,那么m至多为时,系统没有死锁的危险。
A.3 B.4 C.5 D.6
解答
首先从m=6开始考察,首先每个进程分配1台,剩下的4台只能分配给4个进程,还有2个进程没有分配,如果已经分配了2台的4个进程需要3台的话,则系统就会死锁。同样,如果m=5,也会发生这种情况。当m=4时,每个进程可以分得2台,还有2个进程可分得3台,则可正常运行,运行完毕后可释放资源,从而不会死锁。在解这道题时有些学员提出“如果按照答案m=4,则这4个进程都是需要3台磁带机的话,共需要12台磁带机,这样还不会死锁?”。这种想法是错误的,因为并不是同时把所有进程都分配给足够的资源才能完成这
软考软件设计师资讯
http:// 些进程,可以是一个进程先执行完,释放完资源再执行另一个进程。
例如:4个进程中,每个进程分配2台磁带机,用去了8台。剩下2台,仍然可以满足两个进程,直到他们完成,释放他们暂用的磁带机。
流水线
流水线这个知识点在软件设计师考试中是个重点也是个难点,考查的频率比较高。之所以说流水线是个难点,有两方面的原因:一方面是需要理解流水线的理论,了解其工作原理,计算方式;另一方面是在软考当中,对于流水线的相关计算,标准并不是完全统一的,这一点在后面我们将详细介绍。
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
指令流水线是将指令执行分成几个子过程,每一个子过程对应一个工位,我们称为流水级或流水节拍,这个工位在计算机里就是可以重叠工作的功能部件,称为流水部件。
如图1所示,IF,ID,EX,WD分别是流水线的流水部件。
流水线要求所有的流水级部件必须在相同的时间内完成各自的子过程。在流水线中,指令流动一步便是一个机器周期,机器周期的长度必须由最慢的流水级部件处理子过程所需的时间来决定。
软考软件设计师资讯
http://
那么我们为什么要提出流水线这个概念,以及流水线是如何提高系统吞吐量的呢?下面我们来看几个图,概念自然就清楚了。
图2是一个非流水线结构系统执行指令时空图。
我们从图2中可以看到,任意一个系统时间都有大量的设备处于空闲状态,如第一个时间段有ID,EX,WB空闲,则第二个时间段有IF,EX,WB空闲。
我们再来看采用了流水线结构的时空图3。
显然,采用流水线可以大大提升系统资源的利用率,以及整个系统的吞吐量。
流水线的操作周期取决于基本操作中最慢的那个。例如:一个3段流水线,软考软件设计师资讯
http:// 各段的执行时间分别为t,2t,t。则最慢的一段为2t,所以流水线操作周期为2t。
流水线的执行时间公式为:
第1条指令的执行时间+(指令条数-1)*流水线操作周期
例题1
若每一条指令都可以分解为取指、分析和执行三步。己知取指时间t取指=4△t,分析时间t分析=3△t,执行时间t执行=5△t。如果按串行方式执行完100条指令需要(1)△t。如果按照流水方式执行,执行完100条指令需要(2)△t。
供选择的答案
(1)A.1190 B.1195 C.1200 D.1205
(2)A.504 B.507 C.508 D.510
试题分析
本题考查的是计算机系统指令流水线方面的基础知识。根据题意可以看到,在此流水线中按串行方式执行完100条指令要用1200△t。采用流水方式执行,执行的总时间的关键取决于最长的执行时间,所以执行完100条的时间为:4Δt+3Δt+5Δt+(100-1)*5Δt=507Δt。
试题答案
C B 例题2
现采用4级流水线结构分别完成一条指令的取指、指令译码和取数、运算,以及送回运算结果4个基本操作,每步操作时间依次为60 ns,100 ns,50 ns和70 ns。该流水线的操作周期应为A ns。若有一小段程序需要用20条基本指
软考软件设计师资讯
http:// 令完成(这些指令完全适合于流水线上执行),则得到第一条指令结果需B ns,完成该段程序需C ns。
在流水线结构的计算机中,频繁执行D指令时会严重影响机器的效率。当有中断请求发生时,采用不精确断点法,则将E。
供选择的答案
A:①50②70③100④280
B:①100②200③280④400
C:①1400②2000③2300④2600
D:①条件转移②无条件转移③算术运算④访问存储器
E:①仅影响中断反应时间,不影响程序的正确执行
②不仅影响中断反应时间,还影响程序的正确执行
③不影响中断反应时间,但影响程序的正确执行
④不影响中断反应时间,也不影响程序的正确执行
试题分析
本题主要考查对流水线技术的掌握。
对于CPU来说,流水线技术实际上是一种以增加硬件换取性能的方式:把一条指令分解成多条更小的指令,由不同的处理单元来处理,在理想的满负荷运行状态下,执行一条指令的时间虽然没有减少,但是由于多个处理单元同时工作,在同一时间上可以执行不同指令的不同部分,从而使得总体的执行时间大大减少。流水线的操作周期取决于基本操作中最慢的那个。这里最慢的是100 ns,所以操作周期是100 ns。在流水线中,其实每一条指令的执行时间并没有减少,而第一条指令的执行并没有体现流水线的优势,它在4个操作周期后才能执行完
软考软件设计师资讯
http:// 成,这以后每个操作周期都能完成一条指令的执行。
影响流水线效率的重要因素有条件转移指令和中断,因为它们打断了流水线,使得流水线不得不重新装载。
不精确断点法实现简单,但是要等到流水线内的指令完成之后再响应中断。
试题答案
A.③B.④C.③D.①E.②
上面的两个例题,都是软考当中出现过的真题。我们可以看出,两个题在计算流水线时间方面,标准并不是统一的。
在例题1中:
4Δt+3Δt+5Δt+(100-1)*5Δt=507Δt。
而在例题2中:
100ns+100ns+100ns+100ns+(20-1)*100ns=2300ns
这两种计算方法,都是在套用公式:“第1条指令的执行时间+(指令条数-1)*流水线操作周期”,而对于“第1条指令的执行时间”的理解并不相同。在例题1中,第1条指令的执行时间是将指令执行时的几个阶段所需时间相加得到,而在例题2中,认为每一个阶段所需时间都是流水线的周期时间。其中前者是流水线的理论计算方法,而后者是我们在设计硬件流水线时,常用的方式。两种计算方法,从理论上来讲,都是正确的,但考试时,只有一个是正确答案。那么我们应该怎么做呢?由于每次考试中,无论认可的是哪种计算方式,都只会把这种计算方式的正确答案放入选项中,而不会将两个正确答案都放入,所以我们在用一种方式不能得到正确选项时,应采用另一种方式进行计算,来得到正确答案。
第二篇:软考软件设计师教程综合知识集锦(五)
软件设计师
http:// 软考软件设计师教程综合知识集锦
(五)2016下半年软件设计师考试已经结束了,希赛小编为打算参加2017年考试的你们准备了一些软件设计师教程综合知识集锦,希望对大家有所帮助。
设备管理 其主要任务是:
实现对外部设备的分配和回收;启动外部设备
控制输入/输出设备与处理器或主存之间交换数据;实现对磁盘的调度;处理设备的中断;实现虚拟设备等。
根据不同的方面,可以对设备进行分类。
按数据组织方式:字符设备(常对应于慢速设备)和块设备(常对应于快速设备)。
按资源性质:独占设备(如终端、打印机)、共享设备(如磁盘)和虚拟设备。
外部设备和主存之间常用的传输方式有4种。程序控制方式 中断方式
直接存储访问(DMA)方式 通道方式
虚拟设备:采用假脱机技术,可以将低速的独占设备改造成一种共享设备。简称为spooling技术,利用多道程序技术,采用一组程序模拟一台I/O处理机
设备分配有两种方法,即静态分配方法和动态分配方法。其中设备的动态分配算法与进程调度相似,也具有一定的分配策略,如先请求先分配、优先级高者先分配等。
例如,关于磁盘调度的算法就有以下几种。
软件设计师
http:// 先来先服务(FCFS)调度
最短查找时间优先(SSTF)调度:离磁头最近的服务被响应 SCAN调度(电梯算法):在前进方向寻找最短的查找时间的 N步SCAN调度 C-SCAN调度
存储管理
现代计算机系统中的存储系统通常是多级存储体系,至少有主存(内存)和辅存(外存)两级,有的系统有更多的级数。
主存是由系统实际提供的存储单元组成的一个连续地址空间,处理器可以直接存取。它的存储容量受到实际存储单元的限制。
辅存是指软盘、硬盘、光盘和磁带等一些外部存储部件,常用来存放暂不执行的程序和数据,处理器不能直接访问,需启动I/O设备,才能进行内存、外存交换。
系统中主存的使用一般分系统空间和用户空间两个部分。把相对地址空间的程序转换成绝对地址空间(物理地址)空间上能够执行的过程称为地址重定位,也称为地址映射或地址映像。地址重定位有两种:静态重定位和动态重定位。
存储管理应该提高存储资源的利用效率,又方便用户使用,存储管理的任务应具有下列功能。
分配与回收 存储扩充来自 共享与保护
◆实存管理:实存的管理一般有三种分配方式。
单一连续分配:一个作业占全部空间,静态分配(不对主存保护,引起冲突)固定分区分配:静态,空间分区 可变分区分配:动态分配分区
软件设计师
http:// 交换:较小的空间运行较大的作业,采用的方法
其中,可变分区分配方法是目前的系统采用得较多的。它将主存空间按用户要求动态地分划成若干个分区。为了消除分配中的外部碎片,系统还需要合并自由区和进行存储拼接或紧凑。
关于实存的存储分配算法主要有4种。最佳适应算法 首次适应算法 最差适应算法 循环首次适应算法 ◆虚存管理
虚拟存储(简称虚存)不考虑实际主存的大小和数据存取的实际地址,只考虑相互有关的数据之间的相对位置,其容量由计算机的地址位数决定。
虚拟存储通常涉及存储空间大于计算机系统主存中可利用存储空间时的寻址能力问题。其特点是运行程序访问的地址不是从主存中可以获得的,即运行进程访问的地址与主存可用的地址分离。
运行进程访问的地址称为虚地址,主存中可用的地址称为实地址。一个运行进程可以访问的虚地址范围称为进程的虚地址空间,相应的,可使用的实地址范围称为实地址空间。
虚存的组织方式有3种。◆分段存储组织
一个作业是由若干个具有逻辑意义的段组成。在分段系统中,允许程序(作业)占据主存中若干分离的分区,每个分区存储一个程序分段。分段系统中的虚地址是一个有序对(段号、段内位移)。系统为每个作业建立一个段表,其内容包括段号与主存起始地址的对应关系、段长和状态。
◆页式存储组织
与段式存储组织相似。主存被划分成若干个定长的页,页式
软件设计师
http:// 系统中的虚地址是一个有序对(页号、页内位移)。系统为每个进程建立一个页表,其内容包括进程的逻辑页号与物理页号的对应关系、状态等。
◆段页式存储组织
综合了上述两种存储组织的特点。主存被划分成定长的页,段页式系统中虚地址形式是(段号、段内页号、页内位移)。系统为每个进程建立一个段表,再为每个段表建立一个页表。
虚存管理的置换策略有几种算法转自:考试网-[Examw.Com] 最优(OPT)算法:选择淘汰不再使用或最远的将来才使用的页。
随机(RAND)算法:随机的选择淘汰的页。
先进先出(FIFO)算法:选择淘汰主存驻留时间最长的页。最近最少使用(LRU)算法:选择淘汰离当前时刻最近的一段时间使用得最少的页。
虚存管理策略的基础是局部性原理——进程往往不均匀地高度局部化地访问主存。这种局部性表现为时间局部性和空间局部性两种。
根据局部性原理的特性,提出了工作集理论。工作集是指进程频繁访问页面的集合。工作集理论要求,为了使进程能有效的运行,它的页面工作集应驻留在主存中,以防止“颠簸”(又称抖动,即指由于进程频繁的从辅存请求页面而造成的过度的页面调度)现象。
第三篇:2015年软考软件设计师模拟试题及答案解析
2015年软考软件设计师模拟试题及答案解析[1] 【网络综合-2015年软考软件设计师模拟试题及答案解析】:
41.不是C语言提供的合法关键字是(46)
(45)A.switch
B.begin
C.case
D.default
参考答案:(46)B。
解析:因C语言的关键字表中没有begin,它不是C语言的关键字。所以解答是B。
42.下列字符列中,能作为单个标识符是(47)
(47)A.?a
B.a=2
C.a.3
D.a___3
参考答案:(47)D。
解析:在C语言中,规定标识符是这样一种字符序列,由英文字母或下线字符开始,后接任1个英文字母、下线字符和数字符组成。所以问题所列的字符列只有a_3是标识符,其余都l是标识符,一个是由字符’?’开头、一个中间有字符’=’,另一个有字符’.’。所以解答是D。
43.在C语言中,下列说法中错误的是(48)
(47)A.函数定义可以分为两个部分:函数说明部分和函数体
B.主函数可以调用任何非主函数
C.任何非主函数可以调用其它任何非主函数
D.程序可以从任何函数开始执行
参考答案:(48)D。
解析:每个C函数的定义分两部分,函数说明部分和函数体,所以叙述①是正确的叙述。C语言中,函数可以递归调用,主函数可以调用程序中的任何函数,当然可以调用任何非主教的其它函数,所以叙述②是一个正确的叙述。同样理由,叙述③也是正确的。C语言规,C程序只有一个主函数,并总是从主函数开始执行,不能从非主函数开始执行。所以,说程可以从任何函数开始执行是错误的。所以解答是D。
44.为了直观地分析系统的动作,从特定的视点出发描述系统的行为,需要采用动态分析的方法。其中,(49)适用于描述与分析相互独立、协同操作的处理系统,也就是并发执行的处理系统。
(49)A.状态迁移图
B.时序图
C.Petri网
D.HIPO图
参考答案:(49)C。
解析:为了直观地分析系统的动作,从特定的视点出发描述系统的行为,需要采用动态分析的方法。常用的动态分析方法有状态迁移图、时序图和Petri网。
状态迁移图是描述系统的状态如何响应外部的信号进行推移的一种图形表示。
时序图用于对比在系统中处理时间的时序与相应的处理时间,进行系统分析。
Petri网方法本来是表达异步系统的控制规则的图形表示方法,现在已经广泛地应用于硬件与软件系统的开发中,它适用于描述与分析相互独立、协同操作的处理系统,也就是并发执行的处理系统。
在结构化设计中,分层输入-处理-输出图(HIPO图)既可以描述软件总的模块层次结构,又可以描述每个模块的输入/输出关系、处理内容、模块的内部数据和模块的调用关系。它是系统设计的重要成果,也是系统实施阶段编制程序设计任务书和进行程序设计的出发点和依据。
46.函数调用语句“f((el,e2),(e3,e4,e5));”中参数的个数是(51)
(51)A.1
B.2
C.4
D.5
参考答案:(51)B。
解析:上述函数调用中,(e1,e2)和(e3,e4,e5)是两个带括号的表达式,所以函数调用只提供两个实参,其中第一个实参先计算el的值,然后计算e2,并以e2的值为实参。第二个实参顺序计算e3,e4,e5,并以e5的值为实参。所以解答是B。
47.C语言中,函数的隐含存储类型是(52)
(52)A.auto
B.static
C.extern
D.无存储类别
参考答案:(52)C。
解析:由于C函数内不能再定义函数,C函数的存储类型只能是静态的或外部的之一。若定义函数时不指定存储类型是静态的,则它的存储类型就是外部的(extern),即函数允许被程序的其它函数调用。所以解答是C。
48.测试是保证软件质量的重要手段。根据国家标准GB 8566-88《计算机软件开发规范》的规定,应该在(53)阶段制定系统测试计划。
(53)A.需求分析
B.概要设计
C.详细设计
D.系统测试
参考答案:(53)A 49.以下对C语言函数的有关描述中,正确的是(54)
(54)A.在C语言中,调用函数时,只能把实参的值传递给形参,形参的值不能传递给实参
B.C函数既可以嵌套定义,又可以递归调用
C.函数必须有返回值,否则不能定义成函数
D.C程序中,有调用关系的所有函数必须放在同一个源程序文件中
参考答案:(54)A。
解析:C语言规定,调用函数时,只能把实参的值传递给函数的形参。函数调用时,形参从实参表达式得到初值,报参也是函数的一种局部变量,其值可以改变,但形参的值不能传回给对应的实参。当函数设置非指针类型的形参时,实参可以是同类型的一般表达式;当函数设置指针类型的形参时,对应的实参也必须是同类型的指针表达式。所以叙述A是正确的。C语言虽可以递归调用,但同时规定,在函数内不能再定义函数,所以叙述B是错误的。通常C函数会有返回值,但也可以没有返回值。有许多情况,函数的执行是完成某种预定的工作,并没有返回值,所以叙述C是不正确的。在C程序中,如函数未指定是静态的,则就是外部的,能让别的文件中的函数调用。但函数要调用别的文件中的函数,在调用代码之前,需对它作说明,所以叙述D也是不正确的。正确的解答只有A。
50.某软件产品在应用初期运行在Windows 2000环境中。现因某种原因,该软件需要在Linux环境中运行,而且必须完成相同的功能。为适应该需求,软件本身需要进行修改,而所需修改的工作量取决于该软件的(55)。
(55)A.可复用性
B.可维护性
C.可移植性
D.可扩充性
参考答案:(55)C。
解析:软件的可复用性指软件或软件的部件能被再次用于其他应用中的程度。软件复用性取决于其模块独立性、通用性和数据共享性等。
软件的可维护性是指一个软件模块是否容易修改、更新和扩展,即在不影响系统其他部分的情况下修改现有系统功能中问题或缺陷的能力。
软件的可移植性指将软件系统从一个计算机系统或操作系统移植到另一种计算机系统或操作系统中运行时所需工作量的大小。可移植性取决于系统中硬件设备的特征、软件系统的特点和开发环境,以及系统分析与设计中关于通用性、软件独立性和可扩充性等方面的考虑。
软件的可扩充性指软件的体系结构、数据设计和过程设计的可扩充程度。可扩充性影响着软件的灵活性和可移植性。
由以上分析可知,该软件产品从Windows 2000环境中迁移到Linux环境中运行,为完成相同的功能,软件本身需要进行修改,而所需修改的工作量取决于该软件产品的可移植性。
51.进程的五态模型包括运行状态、活跃就绪状态、静止就绪状态、活跃阻塞状态和静止阻塞状态。针对图5的进程五态模型,为了确保进程调度的正常工作,(a)、(b)和(c)的状态分别为(56)。
软件设计师练习试题及答案解析
图6 进程的五态模型图
(56)A.静止就绪、静止阻塞和活跃阻塞
B.静止就绪、活跃阻塞和静止阻塞
C.活跃阻塞、静止就绪和静止阻塞
D.活跃阻塞、静止阻塞和静止就绪
参考答案:(56)D。
解析:在多道程序系统中,进程在处理器上交替运行,在运行、就绪和阻塞3种基本状态之间不断地发生变化。由于进程的不断创建,系统资源(特别是主存资源)已不能满足进程运行的要求。此时就必须将某些进程挂起,对换到磁盘镜像区,暂时不参与进程调度,以平衡系统负载的目的。如果系统出现故障,或者是用户调试程序,也可能需要将进程挂起检查问题。
在图6具有挂起状态的进程状态及其转换图中,活跃就绪是指进程在主存并且可被调度的状态。(1)空缺处各选项中,静止就绪是指进程被对换到辅存时的就绪状态,是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪。因此,图6的(c)空缺处应填入“静止就绪”这一状态。
活跃阻塞是指进程在主存中。一旦等待的事件产生,便进入活跃就绪状态。因此,图6的(a)空缺处应填入“活跃阻塞”。
静止阻塞是指进程对换到辅存时的阻塞状态。一旦等待的事件产生,便进入静止就绪状态。故图6的(b)空缺处应填入“静止阻塞”。
由以上分析可知,(56)空缺处的正确答案是选项D。
另外,对于一张完整的进程五态模型图,则需在图3-4模型图中增加一条从“运行”态到“活跃阻塞”态的边,其状态转换原因是“等待”事件(如I/O请求)发生,以及增加一条从“运行”态到“静止就绪”态的边,其状态转换原因是“挂起”。
52.基于构件的开发(CBD)模型,融合了(57)模型的许多特征。该模型本质是演化的,采用迭代方法开发软件。
(57)A.瀑布
B.螺旋
C.喷泉
D.快速应用开发(RAD)
参考答案:(57)B。
解析:螺旋模型是演化软件过程模型的一种,最早由Boehm提出,它将原型实现的迭代特征与线性顺序模型中控制的和系统化的方面结合起来,使软件增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。
面向对象技术为软件工程的基于构件的过程模型提供了技术框架。基于构件的开发模型融合了螺旋模型的许多特征。它本质上是演化型的,要求软件创建迭代方法。
基于构件的开发模型是利用预先包装好的软件构件来构造应用的。统一软件开发(RUP)过程是在产业界提出的一系列基于构件的开发模型的代表。
53.设有定义“inta=3,b,*p=&a;”,则下列语句中使b不为3的语句是(58)
(58)A.b=*&a;
B.b=*p;
C.b=a;
D.b=*a;
参考答案:(58)D。
解析:定义有inta=3,b,*p=&a;对b赋值的表达式有*&a、*p、a、*a。引用变量。的值有两种方法,一是直接引用a,二是通过a的指针间接引用a。对于后者,又有多种表达方法,通过指向a的指针p,间接引用a的内容,如*p。或通过求地址运算符由变量a得到其指针&a,再由这指针表达式间接引用a的内容,如*&a。所以表达式*&a、*p和a都能引用变量a的值,而使b的值为3。而表达式。a是错误的,因为a不是指针变量,不能对它施行取内容运算符。所以解答是D。
54.设指针x指向的整型变量值为万,则“printf(”%d “,++*x);”的输出是(59)
(59)A.23
B.24
C.25
D.26
参考答案:(59)D。
解析:若指针变量x指向某个变量,例如指向变量v,并且变量v的值是25,则表达式++*x的值是26。这是因为表达式的计算顺序可加圆括号表达成(++(*x)),首先是*x,是对X所指变量V的引用,所以++*X就是++V。++V是先让变量V增1,并以增至后的V的值为表达式++V的结果,所以其值是26。所以解答是D。
55.若有说明:“inti,j=7,*p=&i;”,则与“i=j;”等价的语句是(60)
(59)A.i=*p;
B.*P=*&j;
C.i==&j;
D.i=**p;
参考答案:(60)B。
解析:指针变量p指向变量i时,表达式i=*p等价于i=i;表达式*p=*&j等价于i=j;而表达式i=&j企图将整型变量的指针赋给整型变量,这是错误的;表达式i=**p也是一种错误的表达式。p是指针,*p是p所指变量j,**p是企图将整型变量j当作指针,并想通过j间接引用某个变量。所以解答是B。
56.以下关于软件质量度量指标的叙述中,说法正确的是(61)。
(32)A.正确性就是用每千行代码的故障(fault)数来度量
B.软件完整性是指软件功能与需求符合的程度
C.软件维护的工作量比开发阶段的工作量小
D.可用性与用户的操作效率和主观评价有关
参考答案:(61)D。
解析:最主要的软件质量度量指标有正确性、可维护性、完整性和可用性。软件的正确性是指软件完成所需功能的程度,尽管这种程度与每千行代码的故障数有关,但不完全等同。
软件完整性是指软件在安全方面抗攻击的能力。
软件维护的工作量比开发阶段的工作量大,通常的估计是,开发阶段的工作量占软件生命期整个工作量的40%,而维护阶段的工作量则占60%,甚至更多。
软件可用性用来度量软件的“用户友好性”,可以从①学会操作软件所需的体力和智力、②对系统的使用达到中等效率所需的时间、③当系统由一个中等效率的人使用时测量到的生产率增长值和④用户对系统的主观评价等4个方面来度量可用性。
第四篇:软装设计师培训教程
成都装修cd.oceano.com.cn 软装设计师培训教程
现在无论是在网上还是在我们身边,软装设计师培训教程都十分普遍,对于到处的软装设计师培训教程我们很容易会受到其中的误导。那么那些比较正规的软装设计师培训教程是怎样的呢?下面就让小编给大家说说其中的一些内容。
1、什么是软装
所谓的软装,指的是家居中可以移动、更换的饰品,如窗帘、靠垫、地毯、装饰画、灯具、工艺品以及绿植等。装修完毕后,我们可以利用这些可移动的饰品对家居进行进一步的装饰,又称为居室的二度陈列。
2、什么是硬装
成都装修cd.oceano.com.cn
硬装指的是对整个建筑结构的确定以及从设计上考虑的进一步的处理,也就是我们常见的对墙体、地面、天花等的装饰处理。硬装通常包括吊顶、地板、墙面乳胶漆、电线、水管、门窗、洁具、橱柜等不可随意移动的物体。
此外,家居空间格局的设计也属于硬装的一部分,也就是进行空间划分的隔墙等。
3、软装与硬装的区别
以前的家居装修中,人们很少注意到软装的这一方面,只要屋子里的硬装部分做好了,整个装修也就完工了。而现代的家居装修中,都在强调“重装饰,轻装修”这一说法,这也就体现了人们开始越来越重视家居的软装搭配。软装与硬装的区别,很大程度上是人们根据装修的顺序来分的,软装都是在硬装结束后才开始进行。但事实上,现在想要完全地区分开软装与硬装是不现实的一件事情,随着各类科技的发展,装修建材上也出现了越来越多“硬”材料与“软”材料相结合的新产品,在进行家居设计时,甚至会将硬装饰材料与软装饰材料相互交换使用,也常常会出现另一种的装饰效
成都装修cd.oceano.com.cn 果,让家居充满亮点。
4、软装与硬装的联系
软装与硬装都有着自身的优点,硬装能够使整体结构更加明确,软装能够帮助改变居室风格,硬装是软装的基础,软装是硬装的升华。
在现代家居装修中,人们渐渐地降低了硬装的地位,越来越重视起了家居的软装搭配,是因为软装容易更换,人们可以通过软装配饰来改变家居风格,各种软装饰品的使用,也能够让整个家居显得更加温馨,此外,装修预算上面,硬装的花费也常常高于软装的花费。
第五篇:软考软件设计师必做练习题及答案
软考软件设计师必做练习题及答案
软件设计师考试属于全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个中级考试。考试不设学历与资历条件,也不论年龄和专业,考生可根据自己的技术水平选择合适的级别合适的资格,但一次考试只能报考一种资格。考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试办法。下面是希赛小编整理的软考软件设计师考前必做的练习题。试题一分析
本题主要考查类图和顺序图。【问题1】
需要分析此门禁系统的体系结构,根据体系结构的描述来看什么数据放在什么类中最为合适。题目中提到:系统中的每个电控锁都有一个唯一的编号。锁的状态有两种:“已锁住”和“未锁住”。所以Lock中含有锁编号和锁状态这两个属性。又因为题中有:在主机上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级并且锁处于“已锁住”状态时,才能将锁打开。因此,Lock中还有锁的安全级别。
【问题2】
首先,(1)、(2)是FingerReader和LockController之间的交互。所以我们看题目中是如何描述他们的交互的。题目中有“指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹”,所以(1)应填“中断事件”,(2)应填“读取指纹”。(3)是主机与UserInfo的交互,从图2-35中可以看出,UserInfo中存储了用户的指纹信息和开锁权限,所以(3)应是从UserInfo读取用户的指纹信息和开锁权限。(4)空应填“读取锁的安全级别”。(5)是MainFrame向自己发送的一条消息,从题目中的“主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于已锁住状态,则将锁打开;否则系统报警”可以看出,主机在得到所有信息后要判断用户是否能开锁,所以(5)应填“判断用户是否能开锁”。
【问题3】
这是纯理论题,请直接阅读参考答案。
试题一参考答案
【问题1】
锁的编号、安全级别、锁的当前状态。
【问题2】
(1)中断事件(2)读取用户指纹
(3)读取用户开锁权限(4)读取锁的安全级别
(5)判断用户是否有权限开锁,或用户是否可以开锁
【问题3】
组装和聚集都表示实例之间的整体/部分关系。组装是聚集的一种形式。
聚集是概念性的,只是区分整体与部分。
组装具有很强的归属关系,而且整体与部分的对象生存周期是一致的。
试题二分析
本题考查的是UML类图和顺序图的基本知识。
【问题1】
由于一个商品分类中可以有多个商品,而一个商品仅仅对应一个商品分类,所以商品分类与商品之间的关系是1:0..*,即第(1)空填“0..*”,第(2)空填“1”。
促销活动与商品之间的关系是这样的:一个促销活动至少得有一种促销商品,否则就无法成为促销活动;而一种商品可以参与多个促销活动,所以促销活动与商品之间的关系有些特别,应是0..*:1..*,故第(3)空填“0..*”,第(4)空填“1..*”。
再看订单与促销活动之间的关系:由于题目中说明“用户可选择参与某一个促销(Promotion)活动”,同时对于一个促销活动可以有多个客户下订单,所以它们之间的关系为1:0..*,所以第(5)空填“1”,第(6)空填“0..*”。
【问题2】
在顺序图中,消息的执行顺序为:在垂直方向自上至下地执行,其中的虚线表示消息结果的返回。在图2-38中,包含着两个操作,第一个操作是得到某个商品的信息,其流程是:先在商品分类列表中找到相应的分类,再从分类中找到具体的商品,从此商品对应的类中得到相应信息。所以第(7)空应填“getCategories”,第(8)空应填“getCommodities”。第二个操作是创建一次促销活动,并为其指定促销品,所以第(9)空应填“createPromotion”,第(10)空应填“addCommodities”。
【问题3】
这是一个纯理论问题,请直接阅读参考答案。
试题二参考答案
【问题1】
(1)0..n或1..n(2)1(3)0..n
(4)1..n(5)1(6)0..n
【问题2】
(7)getCategories(8)getCommodities
(9)createPromotion(10)addCommodities
【问题3】
关系:聚集(聚合)是关联的特例。(聚集是关联的一种)
不同点:聚集表示部分与整体关系的关联。
试题三分析
本题考查类图和状态图。
【问题1】
根据“每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家及演奏这首歌曲的艺术家”和图2-39中类A与类B之间约束为“编写”、“演奏”,所以类A与类B只能是艺术家和歌曲,又根据图上标示的关联关系(1,0..*),可以确定类A为艺术家(Artist);类B为歌曲(Song)。类B与类E之间是聚集关系,根据题中“一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上”,可以得到类E为音轨(Track)。
接下来看类E与类F之间存在组成的关系,根据“每张唱片由多条音轨构成”得到,类F为唱片(Album)。再来看类C和类D,它们与类A存在泛化关系,根据“艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队”可知,类C与类D为歌手和乐队,又因为类C与类D存在聚集关系,根据题中“一名歌手可以不属于任何乐队,也可以属于一个或多个乐队”可知,类C为乐队(Band),类D为歌手(Musician)。
【问题2】
类C为乐队,类D为歌手,题中“一支由2名或2名以上的歌手所组成的乐队。一名歌手可以不属于任何乐队,也可以属于一个或多个乐队”,则第(1)空应填“0..*”,第(2)空应填“2..*”。类B与类E存在聚集关系,题中“一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上”,所以第(3)空应填“0..1”,第(4)空应填“1..*”。
类E与类F存在泛化关系,题中“每张唱片由多条音轨构成”,所以第(5)空应填“1..*”,第(6)空应填“1”。
特别要说明一下,是“0..*”还是“1..*”,要看表述和实际情况,比如第(5)空,一张唱片至少有几条音轨,当然至少有一条,否则就不是唱片了,故是从1开始的。
【问题3】
本问题考查的是类/对象关联中的一种特殊关联:递归关联,它描述的是同一个类的不同实例之间的关系。而类Track的不同实例之间恰好具有这种关系(因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么)。所以缺少的那条联系的两端都是类Track,其多重度都为0..1。下限为0,是对应不存在上一条或下一条音轨的情况。
【问题4】
问题4给定了两个状态“关闭”和“播放”,要求找出从“关闭”到“播放”的最短事件序列。这就要求我们能够在状态图上找到连接这两个状态的最短迁移,然后将迁移上的事件记录下来就可以了。
从“关闭”状态到“播放”状态可以选择经过迁移“连接电脑”到达“联机”状态,再经过迁移“断开连接”到达状态“打开”,再从“打开”状态的初始状态“歌曲待选”,经过迁移“选择歌曲”到达“播放状态”。这样经过的事件序列为:连接电脑电量饱和/完成复制断开连接选择歌曲。显然这样的事件序列远比“关闭”经过“按任意键”直接到达“打开”状态要长得多。所以从“关闭”到“播放”的最短事件序列是:按任意键,选择歌曲。
试题三参考答案
【问题1】
A:ArtistB:SongC:Band
D:MusicianE:TrackF:Album
【问题2】
(1)0..*(2)2..*(3)0..1
(4)1..*(5)1..*(6)1
【问题3】
【问题4】
按任意键,选择歌曲。
试题四分析
题目以希赛公司在线会议审稿系统为例,考查考生对UML用例图与活动图的掌握情况。
【问题1】
题目已经给出了4类参与者:用户、作者、审稿人、委员会主席,关键在于弄清楚各个参与者之间的关系,这些关系是通过题目中的系统功能描述来获得的。
(1)“用户在初始使用系统时,必须在系统中注册(register)成为作者或审稿人”,从此处可以得知系统中的用户分成了两类:作者和审稿人。
(2)“会议委员会主席是一个特殊审稿人”。
从上面两个条件得知:A1对应用户,A2对应作者,A3对应审稿人,A4对应会议委员会主席。同时由于UML图中不允许出现中文,且题目明确要求用英文名称给出A1~A4所对应的参与者,所以A1~A4处应分别填写User、Author、Reviewer和PCChair。
【问题2】
由“会议委员会主席是一个特殊审稿人,可以浏览提交的稿件,给审稿人分配稿件,罗列录用和(或)拒绝的稿件,以及关闭审稿过程”结合“用例名称列表”可以得知:会议委员会主席能操作的功能有浏览提交的稿件、分配稿件给审稿人、罗列录用或/和拒绝的稿件、关闭审稿过程。而从“其中关闭审稿过程须包括罗列录用和(或)拒绝的稿件”可以看出,用例“关闭审稿过程”与“罗列录用或/和拒绝的稿件”之间有包含关系。从这个关系可以得知,U1对应的用例为:罗列录用或/和拒绝的稿件。同时(2)对应的关系为包含关系,即U1应填“listaccepted/rejectedpapers”,(2)应填“>”。这样,剩余的两项功能“浏览提交的稿件”和“分配稿件给审稿人”对应的为U2与U3,所以U2和U3分别应填“browsesubmittedpapers”和“assignpapertoreviewer”。
【问题3】
该小题考查考生对包含与扩展关系的理解。在对问题2的分析中,已经得出(2)填“>”。现在来看(1),该空是填“登录”与“提交稿件”之间的关系,在提交稿件时,若用户已经登录,则可直接提交;但如果用户没有登录,则需要先登录再提交,所以它们之间的关系应是扩展关系,即(1)应填“>”。
【问题4】
该活动图所描述的是作者提交稿件的过程,对此过程题目有详细的描
述:“作者登录(login)后提交稿件和浏览稿件审阅结果。提交稿件必须在规定提交时间范围内,其过程为先输入标题和摘要、选择稿件所属主题类型、选择稿件所在位置(存储位置)。上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。”,所以Action1~Action4分别对应:输入标题和摘要、选择稿件所属主题类型、选择稿件所在位置、上传稿件。所以Action1~Action4分别填:entertitleandabstract、selectsubjectgroup、selectpaperlocation和uploadpaper。
试题四参考答案
【问题1】
A1:UserA2:AuthorA3:ReviewerA4:PCChair
【问题2】
U1:listaccepted/rejectedpapersU2:browsesubmittedpapers U3:assignpapertoreviewer
注:U2和U3的答案可互换
【问题3】
(1)>(2)>
【问题4】
Action1:entertitleandabstract Action2:selectsubjectgroup Action3:selectpaperlocation Action4:uploadpaper
试题五分析
本题考查面向对象系统开发时,采用UML模型进行建模的方法。
【问题1】
识别参与者时,考查和系统交互的人员和外部系统。在本题中,与系统交互的人员包括员工、注册到系统的员工(顾客)、餐厅员工、菜单管理员、送餐员以及工资系统。
由“菜单管理员是餐厅特定员工”以及图2-43中A2和图中餐厅员工之间的“是一种”关系可知,A2为菜单管理员;图2-43中还缺少描述中与工资系统的交互,由“……并发送给工资系统”可知,A1为工资系统。
【问题2】
在本题中,由“任何员工都可以查看菜单和今日特价”可知,图2-43中缺少用例查看今日特价,对应参与者是员工;由“系统的顾客是……,注册工资支付、……”可知,图中缺少用例注册工资支付,对应参与者是顾客和工资系统;由“餐厅员工是……,可以进行备餐、生成付费请求……发送给工资系统”可知,图2-43中缺少用例“生成付费请求”,对应的参与者是餐厅员工和工资系统;由“菜单管理员是餐厅特定员工,可以管理菜单”可知,图2-43中缺少用例管理菜单,对应的参与者是菜单管理员。
需要注意的是,在注册工资支付所对应的参与者中,虽然没有明确说明要和工资系统交互,但是由“对于注册工资支付的顾客生成付费请求并发送给工资系统”可知,工资支付是由工资系统控制,所以注册也需要和工资系统交互。
【问题3】
在顾客订餐过程的描述中,在“顾客选菜”之前,图中缺少符号和活动。由说明中顾客“可以订餐(如果未登录,需先登录)”可以判断,在系统“显示菜单和今日特价”之后“顾客选菜”之前,需要判断(判定符号)当前用户身份是否为顾客,如果不是,需先登录;由“……发送E-mail给顾客以确认订餐,同时发送相关订餐信息通知给餐于员工”可知,发送E-mail和通知餐厅员工为并行活动,需要在前后有同步条(或纵向
【问题4】
参与者之间的关系表示子类型“是一种”父类型,即泛化关系。其中父类型通常是一个抽象泛化的参与者,可以完成子类型可完成的共同行为,每个具体的子类型继承它,可以完成父类型参与者同样的任务,并可以补充额外的角色功能。
试题五参考答案
【问题1】)。
A1:工资系统A2:菜单管理员
【问题2】
【问题3】
【问题4】
泛化关系(一般/特殊关系、继承关系)。泛化关系描述了一个参与者可以完成另一个参与者同样的任务,并可补充额外的角色功能。