免费智能真题库 > 历年试卷 > 信息系统项目管理师 > 2018年下半年 信息系统项目管理师 上午试卷 综合知识
  第63题      
  知识点:   风险应对规划   边界条件   异常   异常处理
  关键词:   边界条件   测试用例   风险   需求   异常处理   测试   用例        章/节:   项目风险管理过程       

 
小王在设计测试用例时,由于忽视了边界条件异常处理等情况,没有完全覆盖需求。这类风险属于测试工作中的()
 
 
  A.  测试用例风险
 
  B.  缺陷风险
 
  C.  代码质量风险
 
  D.  测试环境风险
 
 
 

 
  第48题    2016年下半年  
   54%
(48)风险应对策略是指通过改变计划,以排除风险,或者保护项目目标不受影响,或对受到威胁的一些项目目标放松要求。
  第49题    2014年下半年  
   47%
()不属于风险应对计划的内容。
  第48题    2018年下半年  
   42%
A公司刚刚中标一个大型系统集成项目,其中一台设备计划从国外采购,近期汇率波动明细,A公司准备与客户协商使用国产进行替代,这..
   知识点讲解    
   · 风险应对规划    · 边界条件    · 异常    · 异常处理
 
       风险应对规划
        风险应对规划过程是针对项目目标,制订提高机会、降低威胁的方案和措施的过程。在风险应对规划过程中,需要根据风险的优先级来制订应对措施,并把风险应对所需的资源和活动加进项目的预算、进度计划和项目管理计划中,还应确定和分配实施风险应对措施的风险应对责任人。
        输入
        1.风险登记册
        风险登记册最初在风险识别过程中形成,在定性和定量风险分析过程中进行了更新。风险应对规划过程需要风险登记册中的所有内容作为输入。
        2.风险管理计划
        风险管理计划的主要内容包括角色和职责、风险分析定义、审查时间安排以及关于低、中、高风险的风险临界值。风险临界值有助于识别需要特定应对措施的风险。
        工具与技术
        1.消极风险或威胁的应对策略
        有三种典型的方法可用来应对消极风险或威胁:
        .回避。指改变项目管理计划,以完全消除威胁。项目经理可以把项目目标从风险的影响中分离出来,或改变受到威胁的目标(如延长进度、改变策略或缩小范围)。最极端的回避策略是取消整个项目。在项目早期出现的某些风险,可以通过澄清需求、获得相关信息、改善沟通或取得专有技能来加以回避。
        .转移。指把某风险的部分或全部消极影响连同应对责任转移给第三方。转移风险只是把风险责任转移给另一方,而并非消除风险。转移风险对处理风险的财务问题最有效,需要向风险承担者支付风险费用。风险转移的方法包括保险、履约保函、授权、担保书和保证书等。
        .减轻。指把不利风险事件的概率和影响降低到一个可接受的范围内。提前采取行动来降低风险发生的概率和影响,比风险发生后的补救往往要有效得多。减轻措施的例子有采用更简单的流程、进行更多的测试、选择更稳定的供应商、开发原型等。
        2.积极风险或机会的应对策略
        对积极风险的应对策略包括以下三种:
        .开拓。旨在消除与某个特定积极风险相关的不确定性,确保机会肯定出现。直接开拓包括把组织中最有能力的资源分配给项目来缩短完成时间或节约成本。
        .分享。指把应对机会的部分或全部责任分配给最能为项目利益抓住该机会的第三方,使项目受益,各方受益。如建立风险共担的合作关系,为特殊目的成立公司或联营体等。
        .提高(强化)。提高机会的发生概率和积极影响。识别那些会影响积极风险发生的关键因素,并使这些因素最大化,可以提高机会的发生概率。如为尽早完成活动而增加资源。
        3.适用威胁和机会的应对策略
        既适用威胁又适用机会的应对策略为接受。
        项目团队已经决定不通过改变项目管理计划来应对风险,或者无法找到任何其他的合理应对策略。该策略可以是被动的或主动的。被动地接受风险,只需记录本策略,待风险发生时再由项目团队进行处理。最常见的主动接受策略是建立应急储备,安排一定时间、资金或资源来应对风险。
        4.应急应对策略
        可以针对某些特定事件,专门设计一些应对措施。对于有些风险,项目团队可以制订应急应对策略,即只有在某些预定条件发生时才能实施的应对计划。如果确定风险的发生会有充分的预警信号,就应该制订应急应对策略。应对促发应急策略的事件进行定义和跟踪,如未实现的阶段里程碑或获得供应商更高程度的重视。
        输出
        1.风险登记册(更新)
        在风险规划过程中,选择适当的风险应对措施,并记录到风险登记册。此时风险登记册应该包括如下内容:
        .已识别的风险及其描述、受影响的项目领域(如WBS要素)、风险起因(如RBS要素),及其对项目目标的潜在影响。
        .风险责任人及其职责。
        .定性和定量风险分析过程的输出,包括项目风险的优先级排序及概率分析。
        .一致认同的应对策略。
        .执行选定的应对策略所需的具体行动。
        .风险发生时的预警信号。
        .执行应对策略所需的预算和进度活动。
        .应急计划以及启动应急计划的触发器。
        .回退计划,以便在风险发生并且主要应对措施无效时使用。
        .残余风险(采取预定应对措施以后仍然存在的风险)和已经有意接受的风险。
        .次生风险(执行风险应对措施而直接导致的风险)。
        .应急储备(根据项目定量风险分析以及组织的风险临界值计算出来)。
        2.项目管理计划(更新)
        风险应对策略一经认可,则需要根据增加的应对活动对项目管理计划进行更新,可能需要更新的内容包括进度、成本、质量、采购、人力资源管理计划等。
        3.风险相关的合同决策
        本过程可能做出转移风险的决策,如采用保险协议、服务协议和其他协议。相关的合同决策可能是减轻或转移部分或全部威胁的需要,也可能是提高或分享部分或全部机会的需要。选定的合同类型也是分担风险的一种机制。在许多情况下,成本补偿合同可以把成本风险转移给买方,而总价合同可以把风险转移给卖方。这些决策是采购规划过程的输入。
 
       边界条件
        我们可以想象一下,如果在悬崖峭壁边可以自信地安全行走,平地就不在话下了。如果软件在能力达到极限时能够运行,那么在正常情况下一般也就不会有什么问题。
        边界条件是特殊情况,因为编程从根本上说不怀疑边界有问题。奇怪的是,程序在处理大量中间数值时都是对的,但是可能在边界处出现错误。下面的一段源代码说明了在一个极简单的程序中是如何产生边界条件问题的。
        
        这段代码的意图是创建包含10个元素的数组,并为数组中的每一个元素赋初值-1。看起来相当简单。它建立了包含10个整数的数组data和一个计数值i。For循环是从1~10,数组中从第1个元素到第10个元素被赋予数值-1。那么边界问题在哪儿呢?
        在大多数开发语言脚本中,应当以声明的范围定义数组,在本例中定义语句是dim data(10)as interger,第一个创建的元素是data(0),而不是data(1)。该程序实际上创建了一个从data(0)~data(10)共11个元素的数组。程序从1~10循环将数组元素的值初始化为-1,但是由于数组的第一个元素是data(0),因此它没有被初始化。程序执行完毕,数组值如下:
        
        注意data(0)的值是0,而不是-1。如果这位程序员以后忘记了,或者其他程序员不知道这个数据数组是如何初始化的,那么他就可能会用到数组的第1个元素data(0),以为它的值是-1。诸如此类的问题很常见,在复杂的大型软件中,可能导致极其严重的软件缺陷。
 
       异常
        异常是一种形式的异常控制流,它一部分是由硬件实现的,一部分是由操作系统实现的。因为它们有一部分是由硬件实现的,所以具体细节将随系统的不同而有所不同。然而,对于每个系统而言,基本的思想都是相同的。
        异常(exception)就是控制流中的突变,用来响应处理器状态中的某些变化。异常可以分为四类:中断(interrupt)、陷阱(trap)、故障(fault)和中止(abort)。下表对这些类别的属性做了小结。
        
        异常的类别
        (1)陷阱。陷阱是有意的异常,是执行一条指令的结果。就像中断处理程序一样,陷阱处理程序将控制返回到下一条指令。陷阱最重要的用途是在用户程序和内核之间提供一个像过程一样的接口,叫做系统调用。
        用户程序经常需要向内核请求服务,例如读一个文件、创建一个新的进程、加载一个新的程序或者中止当前进程。为了允许对这些内核服务的受控的访问,处理器提供了一条特殊的syscall指令,当用户程序想要请求服务n时,可以执行这条指令。执行syscall指令会导致一个到异常处理程序的陷阱,这个处理程序对参数解码,并调用适当的内核程序。
        (2)故障。故障由错误情况引起,它可能被故障处理程序修正。当一个故障发生时,处理器将控制转移给故障处理程序。如果处理程序能够修正这个错误情况,它就将控制返回到故障指令,从而重新执行它。否则,处理程序返回到内核中的abort例程,abort例程会中止引起故障的应用程序。
        (3)中止。中止是不可恢复的致命错误造成的结果,典型的是一些硬件错误,例如DRAM或者SRAM位被损坏时发生的奇偶错误。中止处理程序从不将控制返回给应用程序。处理程序将控制返回给一个abort例程,该例程会中止这个应用程序。
 
       异常处理
        异常(exception)是程序可能检测到的运行时刻不正常的情况,如new无法取得所需内存、除数为0、运算溢出、数组越界访问或函数参数无效等,这样的异常存在于程序的正常函数功能之外,但是要求程序立即处理。C++提供了一些内置的语言特性来产生并处理异常,以提高程序的容错能力,使程序更健壮。异常机制使一个函数可以在发现自己无法处理的错误时抛出一个异常,希望其调用者可以直接或者间接处理这个问题。
        传统的错误处理技术在检查到一个局部无法处理的问题时,常用以下方式:
        (1)终止程序。
        (2)返回一个表示错误的值。
        (3)返回一个合法值,让程序处于某种非法的状态。
        (4)调用一个预先准备好在出现“错误”的情况下的函数。
        第一种情况经常是不允许的,无条件终止程序的方式不适合应用到不能当机的程序中。第二种情况比较常用,但有时会带来不便,例如返回错误码是int型,每个调用都要检查错误值。第三种情况很容易误导调用者,如果调用者没有去检查表示错误码的全局变量或者通过其他方式检查错误,会造成无法预料的后果,这种方式在并发情况下也不能很好工作。第四种情况比较少用,而且回调的代码不该过多出现。
        C++的异常机制为程序员提供了一种处理错误的方式,使程序员可以更自然的方式处理错误。使用异常把错误和处理分开来,由库函数抛出异常,由调用者捕获这个异常,调用者就可以知道程序函数库调用出现错误并加以处理。
        try、catch、finally和throw是异常处理的关键字,它们配合起来工作。try内一般放入程序或函数的工作代码(出错时发生异常的代码),catch是程序发生异常后的出错处理代码,每个catch块指定捕获和处理一种异常,而finally块中则放着不论是否出错都需要处理的代码。throw用来声明函数可以抛出的异常和程序检测到出错时用来抛出一个异常对象。
        
        如果一个函数抛出一个异常,它必须假定该异常能被捕获和处理。在函数内抛出一个异常(或在函数调用时抛出一个异常)时,就退出函数的执行。如果不希望在异常抛出时退出函数,可在函数内创建一个特殊块用于解决实际程序中的问题,由于可通过它测试各种函数的调用,所以被称为测试块,由关键字try引导,如下所示:
        
        异常被抛出后,一旦被异常处理器接收到就被销毁。异常处理器由关键字catch引导,一般紧随在try块之后。
        如果一个异常信号被抛出,异常处理器中第一个参数与异常抛出对象相匹配的函数将捕获该异常信号,然后进入相应的catch语句,执行异常处理代码。
        函数的所有潜在异常类型随关键字throw插入在函数说明中。例如:
        
        而传统函数声明void f();意味着函数可能抛出任何一种异常。如果声明为void f() throw();,则意味着函数不会抛出异常。
   题号导航      2018年下半年 信息系统项目管理师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第63题    在手机中做本题