与算术表达式"(a+(b-c))*d" 对应的树是(21)。
对算术表达式"(a+(b-c))*d"求值的运算处理顺序是:先进行b-c,然后与a相加, 最后再与d相乘。只有选项B所示的二叉树与其相符。
某进程有4个页面,页号为0~3,页面变换表及状态位、访问位和修改位的含义如下图所示。若系统给该进程分配了3个存储块,当访问前页面1不在内存时,淘汰表中页号为(26) 的页面代价最小。
嵌入式系统初始化过程主要有3个环节,按照自底向上、从硬件到软件的次序依次为(27)。系统级初始化主要任务是(28)。
嵌入式系统初始化过程可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。
板级初始化完成嵌入式微处理器以外的其他硬件设备的初始化。另外,还需设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。
嵌入式系统初始化过程主要有3个环节,按照自底向上、从硬件到软件的次序依次为(27)。系统级初始化主要任务是(28)。
嵌入式系统初始化过程可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。
板级初始化完成嵌入式微处理器以外的其他硬件设备的初始化。另外,还需设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。
某公司计划开发一种产品,技术含量很高,与客户相关的风险也很多,则最适于采用(29)开发过程模型。
瀑布模型将软件生存周期各个活动规定为线性顺序连接的若干阶段的模型,规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。这种方法是一种理想的开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
原型模型从初始的原型逐步演化成最终软件产品,特别适用于对软件需求缺乏准确认识的情况。
增量开发是把软件产品作为一系列的增量构件来设计、编码、集成和测试,可以在增量开发过程中逐步理解需求。
螺旋将瀑布模型与快速原型模型结合起来,并且加入两种模型均忽略了的风险分析,适用于复杂的大型软件。
在敏捷过程的方法中(30)认为每一个不同的项目都需要一套不同的策略、约定和方法论。
极限编程XP是激发开发人员创造性、使得管理负担最小的一组技术.。
水晶法Crystal认为每—个不同的项目都需要一套不同的策略、约定和方法论。
并列争球法(Scram)使用迭代的方法,其中把每30天一次的迭代称为个冲刺, 并按需求的优先级来实现产品多个自组织和自治小组并行地递增实现产品,协调是通过简短的日常情况会议进行。
自适应软件开发(ASD)有六个基本的原则:
①在自适应软件开发中,有一个使命作为指导,它设立了项目的目标,但不描述如何达到这个目标;
②特征被视为客户键值的关键,因此,项目是围绕着构造的构件来组织并实现特征;
③过程中的迭代是很重要的,因此重做与做同样重要,变化也包含其中;
⑤确定的交付时间迫使开发人员认真考虑每一个生产版本的关键需求;
某模块实现两个功能:向某个数据结构区域写数据和从该区域读数据。该模块的内聚类型为(32)内聚。
模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。耦合程度越低,内聚程度越高,则模块的独立性越好。
存在多种模块内聚类型,从高到低依次为功能、通信、顺序、过程、时间、逻辑和偶然内聚。
一个模块内的几个操作是相关的,而且必须以特定的次序执行,则该模块的内聚类型为过程内聚。
模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行, 则该模块的内聚类型为时间内聚。
若一个模块的各个部分只是通过代码的逻辑结构相关联,则该模块的内聚类型为逻辑内聚。
把访问或操作在同一数据结构的操作放在一个模块中,则该模块的内聚类型为通信内聚。
软件评审的内容包括设计质量评审、程序质量评审和与运行环境接口的评审。评审的主要目标是为了发现软件中的错误。
软件测试分为单元测试、集成测试和系统测试。集成测试把模块按系统设计说明书的要求组合起来进行测试。
存在多种组合的集成测试策略:自底向上、自顶向下、一次性集成、明治集成等。
采用McCabe度量法计算下列程序图的环路复杂性为(35)。
向对象(38)选择合适的面向对象程序设计语言,将程序组织为相互协作的对象集合,每个对象表示某个类的实例,类通过继承等关系进行组织。
在采用面向对象技术开发系统时,主要步骤有面向对象分析、面向对象设计、面向对象程序设计和面向对象测试。
面向对象分析主要包括:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。
面向对象设计是设计分析模型和实现相应源代码。
面向对象程序设计选择合适的面向对象程序设计语言,将程序组织为相互协作的对象集合,每个对象表示某个类的实例,类通过继承等关系进行组织。
面向对象测试是尽可能早的开始进行系统测试,以发现系统中可能存在的错误并进行修复,进而保证系统质量。
UML中有4种关系:依赖、关联、泛化和实现。(40)是一种结构关系,描述了一组链,链是对象之间的连接;(41)是一种特殊/一般关系,使子元素共享其父元素的结构和行为。
由三个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制。
事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。其中关系包括4种:依赖、关联、泛化和实现。
依赖(Dependency)是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。
关联(Association)是一种结构关系,它描述了一组链,链是对象之间的连接。
泛化(Generalization)是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象,用这种方法,子元素共享了父元素的结构和行为。
实现(Realization)是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。
UML图中,对新开发系统的需求进行建模,规划开发什么功能或测试用例,采用(42)最适合。而展示交付系统的软件组件和硬件之间的关系的图是(43)。
UML中提供了多种建模系统需求的图,体现系统的静态方面和动态方面。
类图(Class Diagram)展现了一组对象、接口、协作和它们之间的关系。
在面向对象系统的建模中,最常见的就是类图,它给出系统的静态设计视图。
对象图(Object Diagram)展现了某一时刻一组对象以及它们之间的关系。对象图描述了在类图中所建立的事物的实例的静态快照,给出系统的静态设计视图或静态进程视图。
用例图(Use Case Diagram)展现了一组用例、参与者(Actor)以及它们之间的关系。这个视图主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。用例图用于对一个系统的需求进行建模,包括说明这个系统应该做什么(从系统外部的一个视点出发), 而不考虑系统应该怎样做。交互图用于对系统的动态方面进行建模。一张交互图表现的是一个交互,由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。交互图表现为序列图、通信图、交互概览图和时序图,每种针对不同的目的,能适用于不同的情况。序列图是强调消息时间顺序的交互图;通信图是强调接收和发送消息的对象的结构组织的交互图;交互概览图强调控制流的交互图。
时序图(Timing Diagram)关注沿着线性时间轴、生命线内部和生命线之间的条件改变。
部署图(Deployment Diagram)是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。
组件图(Component Diagram)展现了一组组件之间的组织和依赖。
下图所示为(44)设计模式,属于(45)设计模式,适用于(46)。
B. 当一个对象必须通知其它对象,而它又不能假定其它对象是谁时
C. 当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时
创建型模式包括 Factory Method、Abstract Factory、Builder、Prototype 和 Singleton。
结构型模式包括 Adapter (类)、Adapter (对象)、Bridge、Composite、Decorator、Fafade、 Flyweight 和 Proxy。
行为型模式包括 Interpreter、Template Method、Chain of Responsibility、 Command、Iterator、Mediator、Memento Observer State Strategy 和 Visitor。
Proxy模式的结构图如下所示:
Builder模式适用于当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;当构造过程必须允许被构造的对象有不同的表示时。
Composite模式的结构图如下所示:
Composite模式适用于:想表示对象的部分-整体层次结构;希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
Observer模式的结构图如下所示:
某些设计模式会引入总是被用作参数的对象。例如(47)对象是一个多态accept 方法的参数。
A. Visitor B. Command C. Memento D. Observer
在Visitor模式中,一个Visitor对象是一个多态的accept操作的参数,这个操作作用于该Visitor对象访问的对象。