1、试题1(2017年上半年试题1)论需求分析方法及应用需求分析是提炼、分析和仔细审查已经获取到的需求的过程。需求分析的目的是确保所有的项目干系人(利益相关者)都理解需求的含义并找出其中的错误、遗漏或其它不足的地方。需求分析的关键在于对问题域的研究与理解。为了便于理解问题域,现代软件工程所推荐的需求分析方法是对问题域进行抽象,将其分解为若干个基本元素,然后对元素之间的关系进行建模。常见的需求分析方法包括面向对象的分析方法、面向问题域的分析方法、结构化分析方法等。而无论采用何种方法,需求分析的主要工作内容都基本相同。请围绕需求分析方法及应用论题,依次从以下三个方面进行论述。1. 简要叙述你参与管理和
2、开发的软件系统开发项目以及你在其中所承担的主要工作。2. 概要论述需求分析工作过程所包含的主要工作内容。3. 结合你具体参与管理和开发的实际项目,说明采用了何种需求分析方法,并举例详细描述具体的需求分析过程。试题分析 本文的内容组织过程中需要注意的,主要是需求分析涉及到的工作内容。需求分析的工作通常包括以下七个方面:(1)绘制系统上下文范围关系图:这种关系图是用于定义系统与系统外部实体间的界限和接口的简单模型,它可以为需求确定一个范围。(2)创建用户界面原型:用户界面对于一个系统来说是十分重要的,因此在需求分析阶段通过快速开发工具开发一个抛弃式原型,或者通过PowerPoint、Flash等演
3、示工具制作一个演示原型,甚至是用纸和笔画出一些关键的界面接口示意图,将帮助用户更好地理解所要解决的问题,更好地理解系统。(3)分析需求的可行性:对所有获得的需求进行成本、性能和技术实现方面的可行性研究,以及这些需求项是否与其他的需求项有冲突,是否有对外的依赖关系等。(4)确定需求的优先级:这是一项很重要的工作,迭代开发已经成为了现代软件工程方法的一个基础,而需求的优先级是制订迭代计划的一个最重要的依据。对于需求优先级的描述,可以采用满意度和不满意度指标进行说明。其中满意度表示当需求被实现时用户的满意程度,不满意度表示当需求未被实现时用户的不满意程度。(5)为需求建立模型:也就是建立分析模型,这
4、些模型的表现形式主要是图表加上少量的文字描述,所谓“一图抵千字”,图形化地描述需求将使得其更加清晰、易懂。根据采用的分析方法不同,采用的图也将不同。例如,OOA中的用例模型和领域模型,SA中的DFD和E-R图等。需求分析模型主要描述系统的数据、功能、用户界面和运行的外部行为,它是系统的一种逻辑表示技术,并不涉及软件的具体实现细节。需求分析模型可以帮助系统分析师理解系统,使需求分析任务更加容易实现。同时,它也是以后进行软件设计的基础,为软件设计提供了系统的表示视图。(6)创建数据字典:数据字典是对系统用到的所有数据项和结构进行定义,以确保开发人员使用了统一的数据定义。(7)使用QFD:这是在需求
5、优先级基础上的一个升华,其原理与满意度和不满意度指标十分接近,通过将产品特性、属性与对用户的重要性联系起来。试题答案(1)试题2(2017年上半年试题2)论企业应用集成在企业信息化建设过程中,由于缺乏统一规划和总体布局,使企业信息系统形成多个信息孤岛,信息数据难以共享。企业应用集成(Enterprise Application Integration,EAI)可在表示集成、数据集成、控制集成和业务流程集成等多个层次上,将不同企业信息系统连接起来,消除信息孤岛,实现系统无缝集成。请围绕企业应用集成论题,依次从以下三个方面进行论述。1. 概要叙述你参与管理和开发的企业应用集成项目及你在其中所承担的
6、主要工作。2. 详细论述实现各层次的企业应用集成所使用的主要技术。3. 结合你具体参与管理和开发的实际项目,举例说明所采用的企业集成技术的具体实现方式及过程,并详细分析其实现效果。试题分析 在组织本文内容时需要注意各种集成所代表的含义,然后选择一种集成(或多种)表明其在系统中如何应用的。1. 表示集成表示集成也称为界面集成,这是比较原始和最浅层次的集成,但又是常用的集成。这种方法把用户界面作为公共的集成点,把原有零散的系统界面集中在一个新的界面中。表示集成是黑盒集成,无需了解程序与数据库的内部构造。常用的集成技术主要有屏幕截取和输入模拟技术。表示集成通常应用于以下几种情况:(1)在现有的基于终
7、端的应用系统上配置基于PC的用户界面。(2)为用户提供一个看上去统一,但是由多个系统组成的应用系统。(3)当只有可能在显示界面上实现集成时。表示集成的实现是很简单的,也是很不彻底的,只是做了一层“外装修”,而额外多出来的集成界面也将可能成为系统的性能瓶颈。2. 数据集成为了完成控制集成和业务流程集成,必须首先解决数据和数据库的集成问题。在集成之前,必须首先对数据进行标识并编成目录,另外还要确定元数据模型,保证数据在数据库系统中分布和共享。因此,数据集成是白盒集成。有很多不同的中间件工具可以用于数据集成。例如,批量文件传输,即以特定的或是预定的方式在原有系统和新开发的应用系统之间进行文件传输;用
8、于访问不同类型数据库系统的ODBC标准接口;向分布式数据库提供连接的数据库访问中间件技术等。通常在以下情况下,将会使用数据集成:(1)需要对多种信息源产生的数据进行综合分析和决策。(2)要处理一些多个应用程序需要访问的公用信息库。(3)当需要从某数据源获得数据来更新另一个数据源时,特别是它们之间的数据格式不相同时。相对而言,数据集成比表示集成要更加灵活。但是,当业务逻辑经常发生变化时,数据集成就会面临困难。3. 控制集成控制集成也称为功能集成或应用集成,是在业务逻辑层上对应用系统进行集成的。控制集成的集成点存于程序代码中,集成处可能只需简单使用公开的API就可以访问,当然也可能需要添加附加的代
9、码来实现。控制集成是黑盒集成。 实现控制集成时,可以借助于远程过程调用或远程方法调用、面向消息的中间件、分布式对象技术和事务处理监控器来实现。控制集成与表示集成、数据集成相比,灵活性更高。表示集成和数据集成适用的环境下,都适用于控制集成。但是,由于控制集成是在业务逻辑层进行的,其复杂度更高一些。而且,很多系统的业务逻辑部分并没有提供API,这样,集成难度就会更大。4. 业务流程集成业务流程集成也称为过程集成,这种集成超越了数据和系统,它由一系列基于标准的、统一数据格式的工作流组成。当进行业务流程集成时,企业必须对各种业务信息的交换进行定义、授权和管理,以便改进操作、减少成本、提高响应速度。业务
10、流程集成不仅要提供底层应用支撑系统之间的互连,同时要实现存在于企业内部的应用之间,本企业和其他合作伙伴之间的端到端的业务流程的管理,它包括应用集成、B2B集成、自动化业务流程管理、人工流程管理、企业门户,以及对所有应用系统和流程的管理和监控等。试题答案(2)试题3(2017年上半年试题3)数据流图 (Data Flow Diagram ,DFD) 是进行系统分析和设计的重要工具,是表达系统内部数据的流动并通过数据流描述系统功能的一种方法。DFD从数据传递和加工的角度,利用图形符号通过逐层细分描述系统内各个部件的功能和数据在它们之间传递的 情况,来说明系统所完成的功能。在系统分析中,逻辑DFD作
11、为需求规格说明书的组成部分,用于建模系统的逻辑业务需求;在系统设计中,物理DFD作为系统构造和实现的技术性蓝图,用于建模系统实现的技术设计决策和人为设计决策。请围绕“数据流图在系统分析与设计中的应用”论题,依次从以下三个方面进行论述。1. 简要叙述你参与的软件开发项目以及你所承担的主要工作。2. 列举出DFD中的几种要素及含义,简要说明在系统分析与设计阶段逻辑DFD和物理 DFD中这些要素之间有何区别。3. 根据所参与的项目,具体阐述你是如何通过绘制数据流图来进行系统分析与设计的。试题分析本文的内容组织,其关键在于对题目要求的一些知识内容要能准确把握。DFD是SA方法中的重要工具,是表达系统内
12、数据的流动并通过数据流描述系统功能的一种方法。DFD还可被认为是一个系统模型,在信息系统开发中,如果采用结构化方法,则一般将DFD作为需求规格说明书的一个组成部分。在DFD中,通常会出现4种基本符号,分别是数据流、加工、数据存储和外部实体(数据源及数据终点)。数据流是具有名字和流向的数据,在DFD中用标有名字的箭头表示。加工是对数据流的变换,一般用圆圈表示。数据存储是可访问的存储信息,一般用直线段表示。外部实体是位于被建模的系统之外的信息生产者或消费者,是不能由计算机处理的成分,它们分别表明数据处理过程的数据来源及数据去向,用标有名字的方框表示。DFD可以是一个物理系统模型,也可以是逻辑系统模
13、型,也可以是两者的混合。逻辑DFD与物理DFD最大的区别在于,逻辑DFD只描述了相关的组成要素,而物理DFD则会涉及到具体的实现技术。试题答案(3)试题4(2017年上半年试题4)软件系统测试的对象是完整的、集成后的计算机系统,其目的是在真实系统工作环境下,验证完整的软件配置项能否和系统正确连接,并满足系统设计文档和软件开发合同规定的要求。常见的系统测试包括功能测试、性能测试、压力测试、安全测试等。同时,在系统测试中,涉及到众多的软件模块和相关干系人,测试的组织和管理是系统测试成功的重要保证。请围绕软件的系统测试及其应用论题,依次从以下三个方面进行论述。1. 简要叙述你参与管理和开发的软件项目
14、以及你在其中所承担的主要工作。2. 概要论述系统测试过程中测试管理的主要活动内容,论述性能测试的目的和基本类型。3. 结合你具体参与管理和开发的实际项目,说明如何管理性能测试的各项活动,以及性能测试具体采用的方法、工具、实施过程以及应用效果。试题分析本题的要求与2016年论文中系统测试主题论文要求大同小异,只是本题更强调了要写性能测试方面的内容。系统测试的对象是完整的、集成的计算机系统,系统测试的目的是在真实系统工作环境下,验证完整的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。系统测试的技术依据是用户需求或开发合同,除应满足一般测试的准入条件外,在进行系统
15、测试前,还应确认被测系统的所有配置项已通过测试,对需要固化运行的软件还应提供固件。一般来说,系统测试的主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等,其中,最重要的工作是进行功能测试与性能测试。功能测试主要采用黑盒测试方法;性能测试主要验证软件系统在承担一定负载的情况下所表现出来的特性是否符合客户的需要,主要指标有响应时间、吞吐量、并发用户数和资源利用率等。功能测试的目的很简单,测试系统是否达到了用户明确提出的需求及隐含需求。性能测试的目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,并优化软件,最后起到优化系统的目的
16、。具体来说,包括以下四个方面:(1)发现缺陷。软件的某些缺陷与软件性能密切相关,针对这些缺陷的测试一般需要伴随着性能测试进行。(2)性能调优。与调试不同,性能调优并不一定针对发现的性能缺陷,也可能是为了更好地发挥系统的潜能。(3)评估系统的能力。软件性能测试不仅需要测试软件在规定条件下是否满足性能需求,往往还需要测试能够满足性能需求的条件极限。(4)验证稳定性和可靠性:在一定负载下测试一定的时间,是评估系统稳定性和可靠性是否满足要求的唯一方法。试题答案(4)试题5(2016年上半年试题1)论软件需求验证方法及其应用在软件开发过程中,如果后期或在交付之后发现了需求问题,则修补需求错误需要投入大量
17、的人力物力。因此,开展软件需求验证,对软件需求规格说明书(SRS)的正确性和质量进行验证,是需求分析的重要工作内容。需求验证也称为需求确认,主要内容包括:确定SRS正确地描述了预期的、满足项目干系人需求的系统行为和特征;确定软件需求是从用户需求、业务规格和其他来源中正确推导而来的;确定需求的完整性、一致性和高质量。需求验证为后续的系统设计、实现和测试提供了足够的基础。 请围绕“软件需求验证方法及其应用”论题,依次从以下三个方面进行论述。 1概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。 2简要说明需求验证的主要方法及实施过程。 3结合你具体参与管理和开发的实际项目,阐述所选择
18、的验证方法及其原因,说明具体实施过程,并详细分析实施效果。试题分析1、用400-600字叙述作者参与开发与管理的软件项目,包括但不仅限于,项目时间,规模,周期,背景,系统的主要功能,所采用的相关技术等。2、需求验证方法主要包括:需求评审与需求测试。需求评审:在软件开发的每个阶段结束前,都需要进行技术评审。所谓技术评审,是指对工作产品进行检查以发现产品中所存在的问题,其中的工作产品也称为工件,它不一定是最终的系统,也可以是一个文档、一个原型或一段代码等。例如,需求评审就是需求开发阶段结束前进行的技术评审,此时的产品就是SRS。SRS的评审是一项精益求精的技术,它可以发现那些二义性的或不确定性的需
19、求,为项目干系人提供在需求问题上达成共识的方法。需求测试:实际上,需求开发阶段不可能有真正意义上的测试进行,因为还没有可执行的系统,需求测试仅仅是基于文本需求进行“概念”上的测试。然而,以功能需求为基础(SA方法)或者从用例派生出来(OO方法)的测试用例,可以使项目干系人更清楚地了解系统的行为。虽然没有在系统上执行测试用例,但是涉及测试用例的简单动作可以解释需求的许多问题。这种测试用例通常称为概念测试用例,即不是真正执行的测试用例,它们可以发现SRS中的错误、二义性和遗漏,还可以进行模型分析,以及作为用户验收测试的基础。在正式的系统测试中,还可以将它们细化成测试用例。关于需求评审与需求测试的详
20、细资料请参看系统分析师教程11.7。3、结合项目实践说明需求验证方法的应用。试题答案(1)试题6(2016年上半年试题2)论软件的系统测试及其应用软件测试是软件交付客户前必须要完成的重要步骤之一,目前仍是发现软件错误(缺陷)的主要手段。系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,针对整个系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试的主要内容包括功能性测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等。 请围绕“软件的系统测试及其应用”论题,依次从以下三个方面进行论述
21、。 1概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。 2详细论述软件的系统测试的主要活动及其所包含的主要内容,并说明功能性测试和性能测试的主要的目的。 3结合你具体参与管理和开发的实际项目,概要叙述如何采用软件的系统测试方法进行系统测试,说明具体实施过程以及应用效果。试题分析写作要点:1、用400-600字叙述作者参与开发与管理的软件项目,包括但不仅限于,项目时间,规模,周期,背景,系统的主要功能,所采用的相关技术等。2、系统测试的对象是完整的、集成的计算机系统,系统测试的目的是在真实系统工作环境下,验证完整的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发
22、合同规定的要求。系统测试的技术依据是用户需求或开发合同,除应满足一般测试的准入条件外,在进行系统测试前,还应确认被测系统的所有配置项已通过测试,对需要固化运行的软件还应提供固件。一般来说,系统测试的主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等,其中,最重要的工作是进行功能测试与性能测试。功能测试主要采用黑盒测试方法;性能测试主要验证软件系统在承担一定负载的情况下所表现出来的特性是否符合客户的需要,主要指标有响应时间、吞吐量、并发用户数和资源利用率等。功能测试的目的很简单,测试系统是否达到了用户明确提出的需求及隐含需求。性能测试的目的是验证软件系统是否
23、能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,并优化软件,最后起到优化系统的目的。具体来说,包括以下四个方面:(1)发现缺陷。软件的某些缺陷与软件性能密切相关,针对这些缺陷的测试一般需要伴随着性能测试进行。(2)性能调优。与调试不同,性能调优并不一定针对发现的性能缺陷,也可能是为了更好地发挥系统的潜能。(3)评估系统的能力。软件性能测试不仅需要测试软件在规定条件下是否满足性能需求,往往还需要测试能够满足性能需求的条件极限。(4)验证稳定性和可靠性:在一定负载下测试一定的时间,是评估系统稳定性和可靠性是否满足要求的唯一方法。3、结合项目实践说明作者如何进行系统测试的,并论述效果。
24、在论述效果时,注意不要只报喜不报忧,指出做得不足的地方,并给出以后的改进方案,往往能让文章更具真实感。试题答案(2)试题7(2016年上半年试题3)论软件开发模型及应用软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发过程包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要任务和活动,用来作为软件项目工作的基础。对于不同的软件项目,针对应用需求、项目复杂程度、规模等不同要求,可以采用不同的开发模型,并采用相应的人员组织策略、管理方法、工具和环境。 请围绕“
25、软件开发模型及应用”论题,依次从以下三个方面进行论述。 1简要叙述你参与的软件开发项目以及你所承担的主要工作。 2列举出几种典型的软件开发模型,并概要论述每种软件开发模型的主要思想和技术特点。 3根据你所参与的项目中使用的软件开发模型,具体阐述使用方法和实施效果。试题分析1、用400-600字叙述作者参与开发与管理的软件项目,包括但不仅限于,项目时间,规模,周期,背景,系统的主要功能,所采用的相关技术等。2、开发模型多种多样,常见的包括:瀑布模型:严格遵循软件生命周期各阶段的固定顺序,一个阶段完成再进入另一个阶段。其优点是可以使过程比较规范化,有利于评审;缺点在于过于理想,缺乏灵活性,容易产生
26、需求偏差。快速原型模型:对于许多需求不够明确的项目,比较适合采用该模型。它采用了一种动态定义需求的方法,通过快速地建立一个能够反映用户主要需求的软件原型,让用户在计算机上使用它,了解其概要,再根据反馈的结果进行修改,因此能够充分体现用户的参与和决策。演化模型:也是一种原型化开发,但与快速原型不同的是,快速原型模型在获得真实需求时,就将抛弃原型。而演化模型则不然,它将从初始的模型中逐渐演化为最终软件产品,是一种“渐进式”原型法。增量模型:它采用的是一种“递增式”模型,它将软件产品划分成为一系列的增量构件,分别进行设计、编码、集成和测试。螺旋模型:结合了瀑布模型和演化模型的优点,最主要的特点在于加
27、入了风险分析。它是由制定计划、风险分析、实施工程、客户评估这一循环组成的,它最初从概念项目开始第一个螺旋。喷泉模型:主要用于描述面向对象的开发过程,最核心的特点是迭代。所有的开发活动没有明显的边界,允许各种开发活动交叉进行。统一过程(UP):统一过程是一个通用过程框架,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同的性能水平和不同的项目规模。UP是基于构件的,在为软件系统建模时,UP使用的是UML。与其他软件过程相比,UP具有三个显著的特点,即用例驱动、以架构为中心、迭代和增量。敏捷方法:敏捷方法是一种以人为核心、迭代、循序渐进的开发方法。在敏捷方法中,软件项目的构建被切分成
28、多个子项目,各个子项目成果都经过测试,具备集成和可运行的特征。在敏捷方法中,从开发者的角度来看,主要的关注点有短平快的会议、小版本发布、较少的文档、合作为重、 客户直接参与、自动化测试、适应性计划调整和结对编程;从管理者的角度来看,主要的关注点有测试驱动开发、持续集成和重构。3、结合项目实践说明作者在项目中所采用的开发模型,并阐述实施效果。试题答案(3)试题8(2016年上半年试题4)试题四 论信息系统规划及实践信息系统建设是投资大、周期长、复杂度高的系统工程。系统规划可以减少信息系统建设的盲目性,使系统具有良好的整体性和较高的适应性,建设工作有良好的阶段性,并能缩短系统开发周期,节约开发费用
29、。信息系统规划紧密围绕组织发展目标,统筹分析组织发展、业务开展所需的各类信息以及相关的业务系统、信息管理系统,提出完整的信息整合、集成方案,各类信息系统的建设方案,提出面向组织战略发展的系统开发计划。信息系统的规划是系统生命周期中的第一个阶段,也是系统开发过程的第一步,其质量直接影响系统开发的成败。 请围绕“信息系统规划及实践”论题,依次从以下三个方面进行论述。 1概要叙述你参与管理和开发的信息系统建设项目及其其中所担任的主要工作。 2根据系统规划的主要人数,详细论述系统规划工作的主要步骤。 3结合你具体参与管理和开发的实际项目,说明如何实施系统规划,并指出具体实施过程中遇到的问题和解决方案。
30、试题分析1、用400-600字叙述作者参与过的系统规划工作。2、系统规划工作的步骤为:(1)对现有系统进行初步调查。根据企业战略和发展目标,从类似企业和本企业内部收集各种信息,站在管理层的高度观察企业的现状,分析现有系统的运行状况。(2)分析和确定系统目标。系统目标应包括服务的质量和范围、政策、组织和人员等,它不仅包括信息系统的目标,还要反映整个企业的目标。(3)分析子系统的组成和基本功能。自顶向下对系统进行划分,并且详细说明各个子系统应该实现的功能。(4)拟定系统的实施方案。可以对子系统的优先级进行设定,以便确定子系统的开发顺序。(5)进行系统的可行性研究,编写可行性研究报告,召开可行性论证
31、会。(6)制订系统建设方案。对可行性研究报告中提出的各项技术指标进行分析、比较,落实各项假设的前提条件,制订系统建设方案,并根据该方案及其实施计划编写成系统设计任务书。系统设计任务书经上级主管部门批准后,正式作为系统建设的依据。关于系统规划工作的详细资料请参看系统分析师教程9.1。3、结合项目实践说明作者在系统规划中遇到的问题及解决方案。试题答案(4)试题9(2015年上半年试题1)论项目风险管理及其应用项目风险是一种不确定的事件或条件,一旦发生,会对项目目标产生某种负面(或正面)的影响。项目风险管理是项目管理人员通过风险识别、风险估计和评价,并以此为基础合理地使用多种管理方法、技术和手段,对
32、项目活动设计的风险实施有效的控制,采取主动行动,创建条件,可靠地实现项目的总体目标。请围绕“项目风险管理及其应用”论题,依次从以下三个方面进行论述。1概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。2论述在信息系统项目中,风险管理的基本过程。3针对你参与的实际项目中的风险,阐述该项目的风险管理过程,并具体说明其实施效果。试题分析本题是一个项目管理方向的考题,要求考生对项目管理中的风险管理过程以及方法工具有一定了解。文章第一部分是标准问题,进行详实的项目简介即可。文章第二部分要求写风险管理的基本过程,风险管理包括以下管理过程:(1)制订风险管理计划:定义如何实施项目风险管理活动。
33、(2)风险识别:判断哪些风险会影响项目并记录其特征。(3)风险定性分析:评估并综合分析风险的发生概率和影响,对风险进行优先排序,从而为后续分析或行动提供基础。(4)风险定量分析:就已识别风险对项目整体目标的影响进行定量分析。(5)编制风险应对计划:针对项目目标,制定提高机会、降低威胁的方案和措施。(6)风险监控:在整个项目中,实施风险应对计划、跟踪已识别风险、监测残余风险、识别新风险和评估风险过程有效性。考生可选取部分过程进行论述,在论述时,需要说明作者在这个阶段所做的工作,一般要结合这个阶段解决问题时的基本工具和方法进行,常见工具方法包括:制订风险管理计划:规划会议和分析。风险识别:文档审查
34、、信息收集技术(头脑风暴法、德尔菲技术、访谈、根本原因识别、SWOT分析)、核对表分析、假设分析、图解技术。风险定性分析:风险概率和影响评估、概率影响矩阵、风险数据质量评估、风险分类、风险紧迫性评估。风险定量分析:数据收集和表现技术、定量风险分析和建模技术。编制风险应对计划:消极风险或威胁的应对策略、积极风险或机会的应对策略、应急应对策略。风险监控:风险再评估、风险审计、偏差和趋势分析、技术绩效测量、储备分析、状态审查会。试题答案(1)试题10(2015年上半年试题2)论软件系统测试及其应用软件系统测试是将已经确认的软件与计算机硬件、外设、网络等其他设施结合在一起,进行信息系统的各种组装测试和
35、确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,进而完善软件。系统洌试的主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等,其中,最重要的是功能测试和性能测试。功能测试主要采用黑盒测试方法。请围绕“软件系统测试及其应用”论题,依次从以下三个方面进行论述。1概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。2详细论述软件系统测试中功能测试的主要方法,自动化测试的主要内容和如何选择适合的自动化测试工具。3结合你具体参与管理和开发的实际项目,说明你是如何采用软件系统测试方法
36、进行系统测试的,说明具体实施过程以及应用效果。试题分析本题属于软件工程方向的考题。文章第一部分是标准问题,进行详实的项目简介即可。文章第二部分与第三部分内容可以结合起来论述,需要理论结合实践。在此主要说明需要用到的理论知识。其实题目中所说的” 软件系统测试中功能测试“就是平时所说的黑盒测试与白盒测试。白盒测试的方法包括一系列的逻辑覆盖,主要的覆盖标准有语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、条件组合覆盖、修正的条件/判定覆盖和路径覆盖等。(1)语句覆盖。语句覆盖是指选择足够多的测试用例,使得运行这些测试用例时,被测程序的每个语句至少执行一次。很显然,语句覆盖是一种很弱的覆盖标准。(2)判
37、定覆盖。判定覆盖也称为分支覆盖,它是指不仅每个语句至少执行一次,而且每个判定的每种可能的结果(分支)都至少执行一次。判定覆盖比语句覆盖强,但对程序逻辑的覆盖程度仍然不高。(3)条件覆盖。条件覆盖是指不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取得各种可能的结果。条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖。(4)条件/判定覆盖。同时满足判定覆盖和条件覆盖的逻辑覆盖称为判定/条件覆盖。它的含义是,选取足够的测试用例,使得判定表达式中每个条件的所有可能结果至少出现一次,而且每个判定本身的所有可能结果也至少出现一次。(5)条件组合覆盖。条件组合覆盖是指选取足够的测试用例,使得
38、每个判定表达式中条件结果的所有可能组合至少出现一次。显然,满足条件组合覆盖的测试用例,也一定满足判定/条件覆盖。因此,条件组合覆盖是上述5种覆盖标准中最强的一种。然而,条件组合覆盖还不能保证程序中所有可能的路径都至少遍历一次。(6)修正的条件/判定覆盖。修正的条件/判定覆盖需要足够的测试用例来确定各个条件能够影响到包含的判定结果。首先,每个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and和or)连接的布尔条件,每个条件对于判定的结果值是独立的。(7)路径覆盖。路径覆盖是指选取足够的测试用例,使得程序的
39、每条可能执行到的路径都至少经过一次(如果程序中有环路,则要求每条环路路径至少经过一次)。路径覆盖实际上考虑了程序中各种判定结果的所有可能组合,因此是一种较强的覆盖标准。但路径覆盖并未考虑判定中的条件结果的组合,并不能代替条件覆盖和条件组合覆盖。常见的黑盒测试包括:(1)等价类划分。在设计测试用例时,等价类划分是用得最多的一种黑盒测试方法。所谓等价类就是某个输入域的集合,对于一个等价类中的输入值来说,它们揭示程序错误的作用是等效的。也就是说,如果等价类中的一个输入数据能检测出一个错误,那么等价类中的其他输入数据也能检测出同一个错误;反之,如果等价类中的一个输入数据不能检测出某个错误,那么等价类中
40、的其他输入数据也不能检测出这一错误(除非这个等价类的某个子集还属于另个一等价类)。(2)边界值分析。经验表明,软件在处理边界情况时最容易出错。设计一些测试用例,使软件恰好运行在边界附近,暴露出软件错误的可能性会更大一些。通常,每一个等价类的边界,都应该着重测试,选取的测试数据应该恰好等于、稍小于或稍大于边界值。例如,对于条件“10x30”的测试,可以选取x的值为9、10、30和31作为测试数据。在实际测试工作中,将等价类划分法和边界值分析法结合使用,能更有效地发现软件中的错误。(3)错误推测。使用等价类划分和边界值分析技术,有助于设计出具有代表性的、容易暴露软件错误的测试方案。但是,不同类型的
41、软件通常有一些特殊的容易出错的地方。错误推测法主要依靠测试人员的经验和直觉,从各种可能的测试用例中选出一些最可能引起程序出错的用例。虽然手工测试可以找到软件的很多缺陷,但这是一个艰苦和耗时的过程,而且可能无法有效地发现某些类型的缺陷。测试自动化是一个通过编程完成测试的过程,一旦测试实现了自动化,大量的测试用例就可以迅速得到执行。自动化测试通常需要构建存放程序软件包和测试软件包的文件服务器、存储测试用例和测试结果的数据库服务器、执行测试的运行环境、控制服务器、Web服务器和客户端程序。自动化测试的主要实现方法包括代码的静态与动态分析、测试过程的捕获与回放、测试脚本技术、虚拟用户技术和测试管理技术
42、等。自动化测试工具的关键特性之一是具有良好的脚本开发环境。测试工具首先应该具有相对应的容错处理系统,可以自动处理一些异常状况;其次要能够提供类似软件集成开发环境中的调试功能,支持脚本的运行、设置断点、得到变量返回结果等,可以更有效地对测试脚本的执行进行跟踪、检查并迅速定位问题;最后,测试脚本的开发通常也需要一个团队的开发环境,即测试工具对脚本代码能很好地进行控制与管理。目前,测试工具主要有单元测试工具、负载和性能测试工具、GUI功能测试工具和基于Web应用的测试工具等。(1)单元测试工具。单元测试工具主要包括C/C+测试工具(例如,Panorama C+和C+ Test等)、Java开源测试框
43、架JUnit、内存资源泄漏检查工具(例如,Numega的BounceChecker和Rational的Purify等)、代码覆盖率检查工具(例如,Numega的TrueCoverage、Rational的PureCoverage和TeleLogic的LogiScope等)、代码性能检查工具(例如,LogiScope的Macabe等)和软件纠错工具(例如,Rational Purl等)。(2)负载和性能测试工具。负载和性能测试工具是软件测试中作用最大的工具,可以完成一些难以用手工实现的测试,常用工具包括Mercury Interactive的LoadRunner和Compuware的QALoad
44、,以及IBM Rational的SQA Load、Performance和Visual Quality。(3)GUI功能测试工具。GUI功能测试工具主要用于回归测试,主要工具包括Mercury Interactive的WinRunner和Compuware的QARun,以及IBM Rational的SQA Robot和Microsoft的Visual Test Suite等。(4)基于Web应用的测试工具。基于Web应用的测试工具主要进行链接检查、HTML检查、Web功能和安全性等方面的测试。主要的测试工具包括MI公司的Astra系列和RSW公司的E-TestSuite,以及WorkBench
45、、Web Application Stress(WAS)Tool和Link Sleuth等。其他的测试工具还包括缺陷跟踪工具、综合测试管理工具、嵌入式测试工具、数据库测试工具等。面对如此众多的测试工具,在选择时应进行综合考虑,例如,考察测试工具是否支持脚本语言,是否具有良好的脚本开发环境;脚本语言是否支持外部函数库,以及函数的可复用;测试工具对程序界面中对象的识别能力,对分布式测试的网络支持,以及是否支持数据驱动测试等方面。试题答案(2)试题11(2015年上半年试题3)论软件系统的容灾与恢复随着计算机应用的日益普及和不断深入,软件系统的规模和复杂性急剧增大,软件已经成为系统中的核心部件。在航
46、空航天、武器装备、医疗设备、交通、核能、金融等安全攸关的应用领域,软件系统失效将导致灾难性的后果。因此,当软件系统的一个完整应用环境因灾难性事件遭到破坏时,为了迅速恢复系统的数据和环境,需要采用灾难备份和恢复技术,确保软件系统能够快速从灾难造成的故障或瘫痪状态恢复到正常运行状态,并将其支持的业务功能从灾难造成的不正常状态恢复到可接受状态。请围绕“软件系统的容灾与恢复”论题,依次从以下三个方面进行论述。1概要叙述你参与管理和开发的软件项目及在其中所担任的主要工作。2详细论述容灾系统灾难恢复的主要技术,涵盖灾难恢复的技术指标、灾难恢复等级划分、容灾系统的分类等方面。3结合你具体参与管理和开发的实际
47、项目,说明该项目中是如何实施灾难恢复的,实际效果如何。试题分析本题属于系统安全方向的考题。文章第一部分是标准问题,进行详实的项目简介即可。第二部分的知识内容完全来自系统分析师教程。灾难恢复是指为了将信息系统从灾难造成的故障或瘫痪状态恢复到可正常运行状态,并将其支持的业务功能从灾难造成的不正常状态恢复到可接受状态,而设计的活动和流程。灾难恢复措施在整个备份制度中占有相当重要的地位。因为它关系到系统在经历灾难后能否迅速恢复。1. 灾难恢复的技术指标发生灾难时,对于恢复工作所需的时间有一个清楚的认识是至关重要的,同样,了解现在的数据在恢复之后是什么样子的也同等重要。并非所有应用和数据都需要相同级别的
48、可用性,灾难恢复的指标主要与容灾系统的数据恢复能力有关。灾难恢复的两个关键概念是恢复点目标(Recovery Point Objective,RPO)和恢复时间目标(Recovery Time Objective,RTO)。RPO是指灾难发生后,容灾系统能将数据恢复到灾难发生前时间点的数据,它是衡量企业在灾难发生后会丢失多少数据的指标;RTO则是指灾难发生后,从系统宕机导致业务停顿之刻开始,到系统恢复至可以支持业务部门运作,业务恢复运营之时,此两点之间的时间。RPO可简单描述为企业能容忍的最大数据丢失量,RTO可简单描述为企业能容忍的恢复时间。理想状态下,希望RTO=0,RPO=0,即灾难发生对企业生产毫无影响,既不会导致生产停顿