单选题 统一软件开发过程是一种基于面向对象技术的软件开发过程,其特点是“用例驱动,以架构为核心,迭代并增量”。统一软件开发过程定义了四种通用的开发阶段,它们按照过程顺序分别是:起始阶段、______、构建阶段和______,其中在构建阶段主要产生的文档有______。
单选题
  • A.分析阶段
  • B.细化阶段
  • C.设计阶段
  • D.交付阶段
【正确答案】 B
【答案解析】
单选题
  • A.分析阶段
  • B.细化阶段
  • C.设计阶段
  • D.交付阶段
【正确答案】 D
【答案解析】
单选题
  • A.初始用户手册
  • B.用例模型
  • C.项目计划
  • D.设计模型
【正确答案】 D
【答案解析】[解析] 统一过程适合于大中型项目的开发,可以分为4个顺序的阶段,分别是初始阶段、细化阶段、构建阶段和移交阶段。 初始阶段的任务是为系统建立业务模型并确定项目的边界。在初始阶段,必须识别所有与系统交互的外部实体,定义系统与外部实体交互的特性。在这个阶段中所关注的是整个项目的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来说,初始阶段可能很短。 细化阶段的任务是分析问题领域,建立健全的架构基础,淘汰项目中最高风险的元素。在细化阶段,必须在理解整个系统的基础上,对架构做出决策,包括其范围、主要功能和诸如性能等非功能需求,同时为项目建立支持环境。 在构建阶段,要开发所有剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制操作,以优化成本、进度和质量。构建阶段的主要任务是通过优化资源和避免不必要的报废和返工,使开发成本降到最低;完成所有所需功能的分析、开发和测试,快速完成可用的版本;确定软件、场地和用户是否已经为部署软件做好准备。在构建阶段,开发团队的工作可以实现某种程度的并行。即使是较小的项目,也通常包括可以相互独立开发的构件,从而使各团队之间实现并行开发。 当基线已经足够完善,可以安装到最终用户实际环境中时,则进入交付阶段。交付阶段的重点是确保软件对最终用户是可用的。交付阶段的主要任务是进行β测试,制作产品发布版本;对最终用户支持文档定稿;按用户的需求确认新系统;培训用户和维护人员;获得用户对当前版本的反馈,基于反馈调整产品,如进行调试、性能或可用性的增强等。根据产品的种类,交付阶段可能非常简单,也可能非常复杂。例如,发布现有桌面产品的新发布版本可能十分简单,而替换一个国家的航空交通管制系统可能就非常复杂。交付阶段结束时还要进行技术评审,评审目标是否实现,是否应该开始演化过程,用户对交付的产品是否满意等。
单选题 敏捷软件过程强调:让客户满意和软件尽早增量发布;小而高度自主的项目团队;非正式的方法;最小化软件工程工作产品以及整体精简开发。______不是采用这种软件开发过程的原因。
  • A.难以提前预测哪些需求是稳定的和哪些需求会变化
  • B.对于软件项目开发来说,设计和实现可以做到基本分离
  • C.从制订计划的角度来看,分析、设计、实现和测试并不容易预测
  • D.可执行原型和部分实现的可运行系统是了解用户需求和反馈的有效媒介
【正确答案】 B
【答案解析】[解析] 敏捷软件过程主要有4大价值观:个体和交互胜过过程和工具;可以工作的软件胜过面面俱到的文档;客户合作胜过合同谈判;响应变化胜过遵循计划。这种价值观的前提是软件需求是难以提前确定的,会不断地发生变化,可以采用可执行原型和部分实现的可运行系统来了解用户需求,通过用户的反馈来明确需求。从制订计划的角度来看,分析、设计、实现和测试并不容易预测。
单选题 软件的逆向工程是一个恢复设计的过程,从现有的程序中抽取数据、体系结构和过程的设计信息。逆向工程的完备性可以用在某一个抽象层次上提供信息的详细程度来描述,在大多数情况下,抽象层次越高,完备性就越低。下列可以通过逆向工程恢复的制品中,完备性最低的是______。
  • A.过程的设计模型
  • B.程序和数据结构
  • C.对象模型、数据和控制流
  • D.UML状态图和部署图
【正确答案】 D
【答案解析】[解析] 本题考查逆向工程的制品层次。逆向工程过程及用于实现该过程的工具的抽象层次是指可从源代码中抽取出来的设计信息的精密程度。抽象层次应该尽可能高,即逆向工程过程应该能够导出过程的设计表示(一种低层的抽象);程序和数据结构信息(稍高一点层次的抽象);数据和控制流模型(一种相对高层的抽象);以及实体—关系模型(一种高层抽象)。随着抽象层次增高,软件工程师将获得更有助于理解程序的信息。 逆向工程过程的完备性是指在某抽象层次提供的细节程度。在大多数情况下,随着抽象层次增高,完整性就降低。例如,给定源代码列表,得到一个完整的过程设计表示是相对容易的,简单的数据流表示也可被导出,但是,要得到数据流图或状态图的完整集合却困难得多。备选答案中UML状态图和部署图抽象层次最高,所以完备性最低。
单选题 条件测试是检查程序模块中所包含逻辑条件的测试用例设计方法,注重于测试程序中的条件。BRO(Branch and Relational Operator)测试保证能发现布尔变量和关系操作符只出现一次且没有公共变量的条件中的分支和条件操作符错误。考虑条件C1:(E1>E2)&(E3<E4),其中E1,E2,E3,E4是数学表达式,“&”表示逻辑“与”,“>”和“=”是关系运算符,则C1的条件约束至少为______时,就可以检查C1中的关系操作符错误。
  • A.{(>,=),(>,>),(>,<),(<,<),(=,<)}
  • B.{(<,<),(<,=),(<,>),(=,<),(=,=),(=,>),(>,<),(>,=),(>,>)}
  • C.{(>,<),(=,<),(>,=)}
  • D.{(>,<),(=,<),(>,=),(<,<)}
【正确答案】 A
【答案解析】[解析] BRO测试保证能发现布尔变量和关系操作符只出现一次而且没有公共变量的条件中的分支和条件操作符错误。BRO策略利用条件C的条件约束。有n个简单条件的条件C的条件约束定义为(D1,D2,…,Dn),其中Di(0<i≤n)表示条件C中第i个简单条件的输出约束。如果C的执行过程中其每个简单条件的输出都满足D中对应的约束,则称条件C的条件约束D由C的执行所覆盖。 对于布尔变量B,B输出的约束说明B必须是真(t)或假(f)。类似地,对于关系表达式,符号<、=、>用于指定表达式输出的约束。 作为简单的例子,考虑条件C0:B1&B2,其中B1和B2是布尔变量。C0的条件约束式如(D1,D2),其中D1和D2是“t”或“f”,值(t,f)是C0的条件约束,由使B1为真B2为假的测试所覆盖。BRO测试策略要求约束集{(t,t),(f,t),(t,f)}由C0的执行所覆盖,如果C0由于布尔算子的错误而不正确,至少有一个约束强制C0失败。 作为第二个例子,考虑C2:B1&(E3=E4),其中B1是布尔表达式,而E3和E4是算术表达式。C2的条件约束形式如(D1,D2),其中D1是“t”或“f”,D2是<、=或>。除了C2的第二个简单条件是关系表达式以外,C2和C0相同,所以可以修改C0的约束集{(t,t),(f,t),(t,f)},得到C2的约束集,注意(E3=E4)的“t”意味着“=”,而(E3=E4)的“f”意味着“>”或“<”。分别用(t,=)和(f,=)替换(t,t)和(f,t),并用(t,<)和(t,>)替换(t,f),就得到C2的约束集{(t,=),(f,=),(t,<),(t,>)}。上述条件约束集的覆盖率将保证检测C2的布尔和关系算子的错误。 我们再来看试题中的例子,考虑C1:(E1>E2)&(E3<E4),其中E1,E2,E3,E4是数学(算术)表达式。C1的条件约束形式如(D1,D2),其中D1和D2是<、=或>。我们可以直接从C0的约束集推导出C1的约束集。(E1>E2)的“t”意味着“>”,“f”意味着“=”或“<”。首先,根据(E1>E2)把{(t,t),(f,t),(t,f)}替换为{(>,t),(=,t),(<,t),(>,f)}。而(E3<E4)的“t”意味着“<”,“f”意味着“=”或“>”,然后,我们再把{(>,t),(=,t),(<,t),(>,f)}替换为{(>,<),(=,<),(<,<),(>,=),(>,>)},这就是C1的约束集,能够保证检测C1的关系操作符的错误。
单选题 服务组件体系结构(Service Component Architecture,SCA)是基于面向服务体系结构(Service Oriented Architecture,SOA)的思想描述服务之间组合和协作的规范。以下关于SCA的叙述,不正确的是______。
  • A.SCA定义了语言中立的服务组合方式,能够进行跨语言的服务调用
  • B.SCA加强组件的接口与传输协议的关联,提高组件的内聚性
  • C.SCA实现服务组件和其传输协议的绑定,这种绑定是可扩展的
  • D.SCA主要是为了满足软件集成的需要而创建的架构
【正确答案】 B
【答案解析】[解析] 服务组件体系结构(SCA)是一个规范,它描述用于使用SOA构建应用程序和系统的模型。它可简化使用SOA进行的应用程序开发和实现工作。SCA提供了构建粗粒度组件的机制,这些粗粒度组件由细粒度组件组装而成。SCA将传统中间件编程从业务逻辑分离出来,从而使程序员免受其复杂性的困扰。它允许开发人员集中精力编写业务逻辑,而不必将大量的时间花费在更为底层的技术实现上。 SCA方法的优势包括:简化业务组件开发;简化作为服务网络构建的业务解决方案的组装和部署;提高可移植性、可重用性和灵活性;通过屏蔽底层技术变更来保护业务逻辑资产;提高可测试性。 SCA服务组件与传统组件的主要区别在于:服务组件往往是粗粒度的,而传统组件以细粒度居多;服务组件的接口是标准的,主要是WSDL接口,而传统组件常以具体API形式出现;服务组件的实现与语言是无关的,而传统组件常绑定某种特定的语言;服务组件可以通过组件容器提供QoS的服务,而传统组件完全由程序代码直接控制。
单选题 希赛公司欲实现一个数据处理软件,该软件需要从网络接收一组复杂的数据,然后分步进行解析和处理。在这种情况下,采用______的体系结构风格比较适合。
  • A.远程过程调用
  • B.层次化
  • C.管道/过滤器
  • D.共享数据
【正确答案】 C
【答案解析】[解析] 层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。例如,四层的分层式体系结构可以分为应用软件、业务软件、中间件和系统软件。这种风格支持基于可增加抽象层的设计。这样,允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。层次系统最广泛的应用是分层通信协议。在这一应用领域中,每一层提供一个抽象的功能,作为上层通信的基础。较低的层次定义低层的交互,最低层通常只定义硬件物理连接。 在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。因此,这里的构件被称为过滤器,这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。此风格特别重要的过滤器必须是独立的实体,它不能与其他的过滤器共享数据,而且一个过滤器不知道它上游和下游的标识。一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。 根据以上介绍,在本题中,希赛公司欲实现一个数据处理软件,该软件需要从网络接收一组复杂的数据,然后分步进行解析和处理,适合采用的是管道/过滤器风格。