软考错题集软件工程
某广告公司的宣传产品有宣传册、文章、传单等多种形式,宣传产品的出版方式包括纸质方式、CD、DVD、在线发布等。现要求为该广告公司设计一个管理这些宣传产品的应用,采用( )设计模式较为合适,该模式( )
本题考点是设计模式,不同的设计模式可以应用于不同的场景,在本题题干部分提到宣传产品有多种表现形式,又有多种媒介,如果用一棵类树来表达,必然会带来“类爆炸”的问题,所以使用桥接模式是合适的。桥接模式的最核心特点便是:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
软件的逆向工程是一个恢复设计的过程,从现有的程序中抽取数据、体系结构和过程的设计信息。逆向工程的完备性可以用在某一个抽象层次上提供信息的详细程度来描述,在大多数情况下,抽象层次越高,完备性就越低。下列可以通过逆向工程恢复的制品中,完备性最低的是( )。
软件的逆向工程是一个设计恢复的过程,从现有的程序中抽取数据、体系结构和过程的设计信息。逆向工程的完备性是指在某一个抽象层次上提供信息的详细程度,在大多数情况下,抽象层次越高,完备性就越低。逆向过程和实现该过程的工具的抽象层次是指可从源代码中抽取出来的设计信息的精密程度。理想情况下,抽象程度应该尽可能高。逆向工程过程应该能够导出过程的设计模型(一种底层的抽象);程序和数据结构信息(稍高层次的抽象);对象模型、数据和控制流模(相对高层的抽象);UML图,状态及部署图(高层抽象)。随着抽象层次增高,完备性就会降低。因此本题应该选择D。
螺旋模型将瀑布模型和( 快速原型开发 )结合起来,强调项目的风险分析,特别适合大型复杂系统的开发过程。螺旋模型沿着螺线进行若干次迭代,依次经历了计划制定、风险分析、工程实施和 ( 用户评估 )四个主要活动。
本题主要考查对软件开发模型中的螺旋模型的概念。1988年,Barry Boehm正式发表了软件系统开发的"螺旋模型",它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:
① 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
② 风险分析:分析评估所选方案,考虑如何识别和消除风险;
③ 实施工程:实施软件开发和验证;
④ 客户评估:评价开发工作,提出修正建议,制定下一步计划。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:
① 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。
② 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。
③ 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。
首先是确定一个阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。
在软件系统工具中,软件评价工具属于( )。
软件系统工具的种类繁多,很难有统一的分类方法。通常可以按软件过程活动将软件工具分为软件开发工具、软件维护工具 、软件管理和软件支持工具。
软件开发工具:需求分析工具、设计工具、编码与排错工具。
软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。
软件过程是制作软件产品的一组活动以及结果,这些活动主要由软件人员来完成,主要包括( )。软件过程模型是软件开发实际过程的抽象与概括,它应该包括构成软件过程的各种活动。软件过程有各种各样的模型,其中,( )的活动之间存在因果关系,前一阶段工作的结果是后一阶段工作的输入描述。
软件过程模型的基本概念:软件过程是制作软件产品的一组活动以及结果,这些活动主要由软件人员来完成,软件活动主要有:
(1)软件描述。必须定义软件功能以及使用的限制。
(2)软件开发。也就是软件的设计和实现,软件工程人员制作出能满足描述的软件。
(3)软件有效性验证。软件必须经过严格的验证,以保证能够满足客户的需求。
(4)软件进化。软件随着客户需求的变化不断地改进。
瀑布模型的特点是因果关系紧密相连,前一个阶段工作的结果是后一个阶段工作的输入。或者说,每一个阶段都是建筑在前一个阶段正确结果之上,前一个阶段的错漏会隐蔽地带到后一个阶段。这种错误有时甚至可能是灾难性的。因此每一个阶段工作完成后,都要进行审查和确认,这是非常重要的。历史上,瀑布模型起到了重要作用,它的出现有利于人员的组织管理,有利于软件开发方法和工具的研究。
)的开发过程一般是先把系统功能视作一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组含。(请作答此空)使用了建模的思想,讨论如何建立一个实际的应用模型,包括对象模型、动态模型和功能模型,其功能模型主要用( )实现
结构化方法假定待开发的系统是一个结构化的系统,其基本思想是将系统的生命周期划分为系统规划、系统分析、系统设计、系统实施、系统维护等阶段。这种方法遵循系统工程原理,按照事先设计好的程序和步骤,使用一定的开发工具,完成规定的文档,在结构化和模块化的基础上进行信息系统的开发工作。结构化方法的开发过程一般是先把系统功能视为一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合。 OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型,包括对象模型、动态模型和功能模型。对象模型描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用对象图来实现;动态模型描述与时间和操作顺序有关的系统特征,例如,激发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现动态模型;功能模型描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主要用DFD来实现功能模型。简单地说,功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。
软件开发模型大体上可以分为三种类型:第一种是以完全确定软件需求为前提的( ) ;第二种是在软件开发初始 阶段只能提供基本需求时采用的( );第三种是以形式化为基础的变换模型。
软件开发模型大体上可以分为三种类型。第一种是以软件需求完全确定为前提的瀑布模型;第二种是在软件开发初 始阶段只能提供基本需求时采用的迭代式或渐进式模型,例如喷泉模型、螺旋模型、统一开发过程和敏捷方法等;第三 种是以形式化为基础的变换模型。
统一过程(UP)定义了初启阶段、精化阶段、构建阶段、移交阶段和产生阶段,每个阶段以达到某个里程碑时结束,其中 ( )的里程碑是生命周期架构。
统一过程(UP)定义了初启阶段、精化阶段、构建阶段、移交阶段和产生阶段,每个阶段达到某个里程碑时结束。其中初启阶段的里程碑是生命周期目标,精化阶段的里程碑是生命周期架构,构建阶段的里程碑是初始运作功能,移交阶段的里程碑是产品发布。
基于构件的软件开发中,构件分类方法可以归纳为三大类:( )根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树形或有向无回路图结构 ;( )利用Facet描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征;( )使得检索者在阅读文档过程中可以按照人类的联想思维方式任意跳转到包含相关概念或构件的文档。
本题考查的是构件管理相关知识。目前,已有的构件分类方法可以分为三大类,分别是关键字分类法、刻面分类法和超文本组织方法。关键字分类法:是一种最简单的构件库组织方法,其基本思想是:根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树状或有向无回路图结构。每个概念用一个描述性的关键字表示。不可分解的原子级关键字包含隶属于它的某些构件。第一空描述的是关键字分类法,选择A选项。刻面分类法:在刻面分类机制中,定义若干用于刻画构件特征的“面”(facet),每个面包含若干概念,这些概念表述构件在面上的特征。刻画可以描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。第二空描述的是刻面分类法,选择B选项。超文本组织方法:超文本组织方法与基于数据库系统的构件库组织方法不同,它基于全文检索技术,主要思想是:所有构件必须辅以详尽的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照人类的联系思维方式任意跳转到包含相关概念或构件的文档;全文检索系统将用户给出的关键字与说明文档中的文字进行匹配,实现构件的浏览式检索。第三空描述的是超文本方法,选择D选项。
RUP模型的“4+1”视图模型中,逻辑视图对应的人员是 ( ) 。
RUP模型的“4+1”视图模型中,逻辑视图对应最终用户,主要支持功能性需求。
分布性问题强调系统或系统中构件在一个分布的环境中相互通信的方式。解决分布性问题最普通的设计模式是( ),CORBA是其一个范例。
分布性问题强调系统或系统中构件在一个分布的环境中相互通信的方式。分布性问题有两个元素:①实体间连接方式;②实体间通信的特性。解决分布性问题最普通的体系结构模式是代理(Proxy)模式。CORBA是代理模式的一个范例。
下列关于敏捷方法的叙述,错误的是( )。
敏捷方法是从20世纪90年代开始逐渐引起广泛关注的一些新型软件开发方法,以应对快速变化的需求。虽然它们的具体名称、理念、过程、术语都不尽相同,但相对于“非敏捷”而言,它们更强调开发团队与用户之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队等,也更注重人的作用。敏捷开发是由一些业界专家针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则,并于2001初成立了敏捷联盟。他们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,他们认为:
个体和交互胜过过程和工具
可以工作的软件胜过面面俱到的文档
客户合作胜过合同谈判
响应变化胜过遵循计划
并提出了以下遵循的原则:
每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。故选项C遵循计划胜过响应变化不符合敏捷开发的要求。
体系结构模型的多视图表示是从不同的视角描述特定系统的体系结构。著名的4+1模型支持从( )描述系统体系结构。
架构4+1视图即:逻辑视图、开发视图、物理视图、进程视图、场景视图。
快速应用开发(Rapid Application Development,RAD)通过使用基于 ( ) 的开发方法获得快速开发,当 ( ) 时,最适合采用RAD方法。
快速应用开发是一种比传统生存周期法快得多的开发方法,它强调极短的开发周期。 RAD 模型是瀑布模型的一个高速变种,通过使用基于构件的开发方法获得快速开发。如果对 需求理解得很好且约束了项目范围, 利用这种模型可以很快地开发出功能完善的信息系统。 但是 RAD 也具有以下局限性。
(1) 并非所有应用都适合 RAD,RAD 对模块化要求比较高。如果有哪一项功能不能被 模块化, 那么 RAD 所需要的构件就会有问题; 如果高性能是一个指标且该指标必须通过调 整接口使其适应系统构件才能获得, 则 RAD 也可能不能奏效。
(2) 开发者和客户必须在很短的时间完成一系列的需求分析, 任何一方配合不当都会导致 RAD 项目失败。
(3) RAD只能用于管理信息系统的开发,不适合技术风险很高的情况。例如,当一个新系统要采用很多新技术,或当新系统与现有系统有较高的互操作性时就不适合使用RAD。
螺旋模型将整个软件开发过程分为多个阶段,每个阶段都由目标设定、( )、开发和有效性验证以及评审4个部分组成。
螺旋模型是在快速原型的基础上扩展而成的一种生存周期模型。这种模型将整个软件开发流程分成多个阶段,每个阶段都由4部分组成,它们是:
① 目标设定。为该项目进行需求分析,定义和确定这一个阶段的专门目标,指定对过程和产品的约束,并且制定详细的管理计划。
② 风险分析。对可选方案进行风险识别和详细分析,制定解决办法,采取有效的措施避免这些风险。
③ 开发和有效性验证。风险评估后,可以为系统选择开发模型,并且进行原型开发,即开发软件产品。
④ 评审。对项目进行评审,以确定是否需要进入螺旋线的下一次回路,如果决定继续,就要制定下一阶段计划。 螺旋模型的软件开发过程实际是上述4个部分的迭代过程,每迭代一次,螺旋线就增加一周,软件系统就生成一个新版本,这个新版本实际上是对目标系统的一个逼近。经过若干次的迭代后,系统应该尽快地收敛到用户允许或可以接受的目标范围内,否则也可能中途夭折。
对于开发模型来说,( )复用好、开发过程无间隙、节省时间。( )是瀑布与原型(演化)模型结合体,适用于复杂项目。( )需要用户参与,模块化要求高,不适用新技术。( )是用例驱动、架构为中心、迭代、增量。

统一软件开发过程是一种基于面向对象技术的软件开发过程,其特点是“用例驱动,以架构为核心,迭代并增量”。统一软件开发过程定义了4种通用的开发阶段,它们按照过程顺序分别是:起始阶段、( )、构建阶段和( ),其中在构建阶段主要产生的文档有( )。
统一过程适合于大、中型项目的开发,可以分为4个顺序的阶段,分别是初始阶段、细化阶段、构建阶段和移交阶段。
初始阶段的任务是为系统建立业务模型并确定项目的边界。在初始阶段,必须识别所有与系统交互的外部实体,定义系统与外部实体交互的特性。在这个阶段中所关注的是整个项目的业务和需求方面的主要风险。对于建立在原有系统基础上的开发项目来说,初始阶段可能很短。
细化阶段的任务是分析问题领域,建立健全的架构基础,淘汰项目中最高风险的元素。在细化阶段,必须在理解整个系统的基础上,对架构做出决策,包括其范围、主要功能和诸如性能等非功能需求,同时为项目建立支持环境。
在构建阶段,要开发所有剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。从某种意义上说,构建阶段是一个制造过程,其重点放在管理资源及控制操作,以优化成本、进度和质量。构建阶段的主要任务是通过优化资源和避免不必要的报废和返工,使开发成本降到最低;完成所有所需功能的分析、开发和测试,快速完成可用的版本;确定软件、场地和用户是否已经为部署软件做好准备。在构建阶段,开发团队的工作可以实现某种程度的并行。即使是较小的项目,也通常包括可以相互独立开发的构件,从而使各团队之间实现并行开发。
当基线已经足够完善,可以安装到最终用户实际环境中时,则进入交付阶段。交付阶段的重点是确保软件对最终用户是可用的。交付阶段的主要任务是进行β测试,制作产品发布版本;对最终用户支持文档定稿;按用户的需求确认新系统;培训用户和维护人员;获得用户对当前版本的反馈,基于反馈调整产品,如进行调试、性能或可用性的增强等。根据产品的种类,交付阶段可能非常简单,也可能非常复杂。例如,发布现有桌面产品的新发布版本可能十分简单,而替换一个国家的航空交通管制系统可能就非常复杂。交付阶段结束时也要进行技术评审,评审目标是否实现,是否应该开始演化过程,用户对交付的产品是否满意等。
以下关于需求陈述的描述中,( )是不正确的。
需求是应该分优先等级的,不能把所有需求都视为同等重要。
( )中,编程开发人员分成首席程序员和"类"程序员。
(1) XP (Extreme Programming,极限编程)在所有的敏捷型方法中,XP是最引人瞩目的。它源于Smalltalk圈子,特别是Kent Beck和Ward Cunningham在20世纪80年代末的密切合作。XP在一些对费用控制严格的公司中的使用,已经被证明是非常有效的。
(2) Cockburn的水晶系列方法,水晶系列方法是由Alistair Cockburn提出的。它与XP方法一样,都有以人为中心的理念,但在实践上有所不同。Alistair考虑到人们一般很难严格遵循一个纪律约束很强的过程,因此,与XP的高度纪律性不同,Alistair探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。也就是说,虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。
(3) 开放式源码,这里提到的开放式源码指的是开放源码界所用的一种运作方式。开放式源码项目有一个特别之处,就是程序开发人员在地域上分布很广,这使得它和其他敏捷方法不同,因为一般的敏捷方法都强调项目组成员在同一地点工作。开放源码的一个突出特点就是查错排障(debug)的高度并行性,任何人发现了错误都可将改正源码的"补丁"文件发给维护者。然后由维护者将这些"补丁"或是新增的代码并入源码库。
(4) SCRUM。SCRUM己经出现很久了,像前面所论及的方法一样,该方法强调这样一个事实,即明确定义了的可重复的方法过程只限于在明确定义了的可重复的环境中,为明确定义了的可重复的人员所用,去解决明确定义了的可重复的问题。
(5) Coad的功用驱动开发方法(FDD-Feature Driven Development)FDD是由Jeff De Luca和大师Peter Coad提出来的。像其他方法一样,它致力于短时的迭代阶段和可见可用的功能。在FDD中,一个迭代周期一般是两周。
在FDD中,编程开发人员分成两类:首席程序员和"类"程序员(class owner)。首席程序员是最富有经验的开发人员,他们是项目的协调者、设计者和指导者,而"类"程序员则主要做源码编写。
(6) ASD方法,ASD (Adaptive Software Development)方法由Jim Highsmith提出,其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。
软件系统工具的种类繁多,通常可以按照软件过程活动将软件工具分为( ) 。
软件系统工具的种类繁多,很难有统一的分类方法。通常可以按照软件过程活动将软件工具分为软件开发工具、软件维护工具 、软件管理工具和软件支持工具。
软件开发工具:需求分析工具、设计工具、编码与排错工具。
软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理工具和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。
以下关于软件开发方法的叙述,错误的是( 对于较为复杂的应用问题,适合采用形式化方法进行需求分析 )。
软件开发方法是指软件开发过程所遵循的办法和步骤,从不同的角度可以对软件开发方法进行不同的分类。
形式化方法是一种具有坚实数学基础的方法,从而允许对系统和开发过程做严格处理和论证,适用于那些系统安全级别要求极高的软件的开发。形式化方法的主要优越性在于它能够数学地表述和研究应用问题及软件实现。但是它要求开发人员具备良好的数学基础。用形式化语言书写的大型应用问题的软件规格说明往往过于细节化,并且难以为用户和软件设计人员所理解。由于这些缺陷,形式化方法在目前的软件开发实践中并未得到普遍应用。
净室软件工程(Cleanroom Software Engineering,CSE)是软件开发的一种形式化方法,可以开发较高质量的软件。它使用盒结构规约进行分析和建模,并且将正确性验证作为发现和排除错误的主要机制,使用统计测试来获取认证软件可靠性所需要的信息。CSE强调在规约和设计上的严格性,还强调统计质量控制技术,包括基于客户对软件的预期使用测试。
一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。采用( )模式,用一个特定对象来封装一系列的对象交互,从而使各对象不需要显式地相互引用,使其耦合松散,而且可以独立地改变它们之间的交互。
解释器(Interpreter)模式。解释器模式属于类的行为型模式,描述了如何为语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子,这里的“语言”是使用规定格式和语法的代码。解释器模式主要用在编译器中,在应用系统开发中很少用到。
策略(Strategy)模式。策略模式是一种对象的行为型模式,定义一系列算法,并将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,其目的是将行为和环境分隔,当出现新的行为时,只需要实现新的策略类。
中介者(Mediator)模式。中介者模式是一种对象的行为型模式,通过一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者对象的存在保证了对象结构上的稳定,也就是说,系统的结构不会因为新对象的引入带来大量的修改工作。
迭代器(Iterator)模式。迭代器模式是一种对象的行为型模式,提供了一种方法来访问聚合对象,而不用暴露这个对象的内部表示。迭代器模式支持以不同的方式遍历一个聚合对象,复杂的聚合可用多种方法来进行遍历;允许在同一个聚合上可以有多个遍历,每个迭代器保持它自己的遍历状态,因此,可以同时进行多个遍历操作。
螺旋模型将瀑布模型和( 快速原型开发 )结合起来,强调项目的风险分析,特别适合大型复杂系统的开发过程。螺旋模型沿着螺线进行若干次迭代,依次经历了计划指定、风险分析、工程实施和( 用户评估 )四个主要活动。
本题主要考查对软件开发模型中的螺旋模型的概念。1988年,Barry Boehm正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:
① 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
② 风险分析:分析评估所选方案,考虑如何识别和消除风险;
③ 实施工程:实施软件开发和验证;
④ 客户评估:评价开发工作,提出修正建议,制定下一步计划。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:
① 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。
② 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。
③ 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。
首先是确定一个阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。
原型模型中,抛弃型原型的主要作用是 ( ) 。
抛弃型原型用于快速验证需求,确认后即被丢弃,后续采用瀑布模型开发;演化型原型则通过迭代逐步完善为最终系统。
若系统正在将( 目录 )文件修改的结果写回磁盘时系统发生掉电,则对系统的影响相对较大。
当文件处于“未打开”状态时,文件需占用三种资源:一个目录项;一个磁盘索引节点项;若干个盘块。当文件被引用或“打开”时,须再增加三种资源:一个内存索引节点项,它驻留在内存中;文件表中的一个登记项;用户文件描述符表中的一个登记项。由于对文件的读写管理,必须涉及上述各种资源,因而对文件的读写管理,又在很大程度上依赖于对这些资源的管理,故可从资源管理观点上来介绍文件系统。这样,对文件的管理就必然包括:①对索引节点的管理;②对空闲盘块的管理;③对目录文件的管理;④对文件表和描述符表的管理;⑤对文件的使用。因此如果目录文件在写回磁盘时发生异常,对系统的影响是很大的。对于空闲块、用户数据和程序并不影响系统的工作,因此不会有较大的影响。所以答案选择A选项。
DMA (直接存储器访问)工作方式是在( 主存和外设 )之间建立起直接的数据通路。
直接存储器访问(Direct Memory Access,DMA)是指数据在主存与I/O设备间的直接成块传送,即在主存与I/O设备间传送数据块的过程中,不需要CPU作任何干涉,只需在过程开始启动(即向设备发出“传送一块数据”的命令)与过程结束(CPU通过轮询或中断得知过程是否结束和下次操作是否准备就绪)时由CPU进行处理,实际操作由DMA硬件直接完成,CPU在传送过程中可做其他事情。
以下关于鸿蒙操作系统的叙述中,不正确的是( )。
HarmonyOS系统架构整体上遵从分层设计,从下向上分为内核层、系统服务层、框架层和应用层。HarmonyOS系统功能按照“系统->子系统->功能/模块”逐步逐级展开,在多设备部署场景下,支持根据实际需求裁剪或增加子系统或功能/模块。
内核层:鸿蒙系统分为内核子系统和驱动子系统。在内核子系统中鸿蒙系统采用多内核设计,支持针对不同资源受限设备选用合适的OS内核;鸿蒙系统驱动框架是鸿蒙系统硬件生态开放的基础,它提供统一外设访问能力和驱动开发、管理框架。
系统服务层:系统服务层是鸿蒙系统的核心能力集合,通过框架层对应用程序提供服务。包含了系统基本能力子系统集、基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统四个部分。
框架层:框架层为鸿蒙系统应用程序提供Java/C/C++/JS等多语言用户程序框架和Ability框架,及各种软硬件服务对外开放的多语言框架API,也为搭载鸿蒙系统的电子设备提供C/C++/JS等多语言框架API。
应用层:应用层包括系统应用和第三方非系统应用,鸿蒙系统应用由一个或多个FA或PA组成。
系统安全:在搭载鸿蒙系统的分布式终端上保证“正确的人通过正确的电子设备,正确地使用数据”。通过“分布式多段协同身份认证”保证“正确的人”,通过“在分布式终端构筑可信运行环境”保证“正确的电子设备”,通过“分布式数据在跨终端流动的过程中,对数据进行分类分级管理”来保证“正确地使用数据”。
以下关于操作系统微内核架构特征的说法,不正确的是()。
微内核相比于传统内核,效率较差。D选项的叙述是错误的。
采用微内核结构的操作系统与传统的操作系统相比,其优点是提高了系统的灵活性、可扩充性,增强了系统的可靠性,提供了对分布式系统的支持。其原因如下:
① 灵活性和可扩展性:由于微内核OS的许多功能是由相对独立的服务器软件来实现的,当开发了新的硬件和软件时,微内核OS只须在相应的服务器中增加新的功能,或再增加一个专门的服务器。与此同时,也必然改善系统的灵活性,不仅可在操作系统中增加新的功能,还可修改原有功能,以及删除已过时的功能,以形成一个更为精干有效的操作系统。
② 增强了系统的可靠性和可移植性:由于微内核是出于精心设计和严格测试的,容易保证其正确性;另一方面是它提供了规范而精简的应用程序接口(API),为微内核外部的程序编制高质量的代码创造了条件。此外,由于所有服务器都是运行在用户态,服务器与服务器之间采用的是消息传递通信机制,因此,当某个服务器出现错误时,不会影响内核,也不会影响其他服务器。另外,由于在微内核结构的操作系统中,所有与特定CPU和I/O设备硬件有关的代码,均放在内核和内核下面的硬件隐藏层中,而操作系统其他绝大部分(即各种服务器)均与硬件平台无关,因而,把操作系统移植到另一个计算机硬件平台上所需做的修改是比较小的。
③ 提供了对分布式系统的支持:由于在微内核OS中,客户和服务器之间以及服务器和服务器之间的通信,是采用消息传递通信机制进行的,致使微内核OS能很好地支持分布式系统和网络系统。事实上,只要在分布式系统中赋予所有进程和服务器唯一的标识符,在微内核中再配置一张系统映射表(即进程和服务器的标识符与它们所驻留的机器之间的对应表),在进行客户与服务器通信时,只需在所发送的消息中标上发送进程和接收进程的标识符,微内核便可利用系统映射表,将消息发往目标,而无论目标是驻留在哪台机器上。
在Linux系统中,DNS的配置文件是(),它包含了主机的域名搜索顺序和DNS服务器的地址。
当进行DNS解析的时候,需要系统指定一台DNS服务器,以便当系统要解析域名的时候,可以向所设定的域名服务器进行查询。在包括Linux系统在内的大部分UNIX系统中,DNS服务器的IP地址都存放在/etc/resolv.conf文件中。也就是说在图形方式配置网络参数的时候,所设置的DNS服务器就是存放在这个文件中的。用户也完全可以用手动的方式修改这个文件的内容来进行DNS设置。配置文件不会放在dev目录下。
「软考达人」点拨:
/etc/resolv.conf文件的每一行是由一个关键字和随后的参数组成的,常见的关键字有:
Nameserver:指定DNS服务器的IP地址,可以有多行,查询的时候按照次序进行,只有当一个DNS服务器不能使用的时候,才查询后面的DNS服务器。
Domain:用来定义默认域名(主机的本地域名)。
Search:它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由Search声明的域中分别查找。
Domain和Search不能共存;如果同时存在,后面出现的将会被使用。
某软件公司欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。在明确用户需求后,该公司的架构师决定采用Bridge模式实现该软件,并设计UML类图如下图所示。图中与Bridge模式中的“Abstraction”角色相对应的类是( ),与“Implementor”角色相对应的类是( )。
由此可见,Abstraction对应的是Shape,而Implementor对应的是Drawing。
虚拟存储器发生页面失效时,需要进行外部地址变换,即实现( 虚地址到辅存物理地址 )的变换。
虚拟存储器(Virtual Memory):在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多、可寻址的“主存储器”。虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址结构和可用磁盘容量。其页面的置换依据相应的页面置换算法进行,当页面失效时,需要进行数据交换,此时涉及逻辑地址(虚地址)到辅存物理地址的变换,所以本题应选D。