软件架构设计试题.docx
《软件架构设计试题.docx》由会员分享,可在线阅读,更多相关《软件架构设计试题.docx(34页珍藏版)》请在冰豆网上搜索。
软件架构设计试题
软件架构设计
[单项选择题]
1、编译器的主要工作过程是将以文本形式输入的代码逐步转化为各种形式,最终生成可执行代码。
现代编译器主要关注编译过程和程序的中间表示,围绕程序的各种形态进行转化与处理。
针对这种特征,现代编译器应该采用()架构风格最为合适。
A.数据共享
B.虚拟机
C.隐式调用
D.管道-过滤器
参考答案:
A
参考解析:
本题主要考查对架构风格的理解和掌握。
根据题干描述,现代编译器主要关注编译过程和程序的中间表示,围绕程序的各种形态进行转化与处理。
这种情况下,可以针对程序的各种形态构建数据库,通过中心数据库进行转换与处理。
根据上述分析,选项中列举的架构风格中,数据共享风格最符合要求。
[单项选择题]
2、架构描述语言(ArchitectureDescriptionLanguage,ADL)是一种为明确说明软件系统的概念架构和对这些概念架构建模提供功能的语言。
ADL主要包括以下组成部分:
组件、组件接口、()和架构配置。
A.架构风格
B.架构实现
C.连接件
D.组件实现
参考答案:
C
参考解析:
本题主要考查架构描述语言的知识。
架构描述语言(ArchitectureDescriptionLanguage,ADL)是一种为明确说明软件系统的概念架构和对这些概念架构建模提供功能的语言。
ADL主要包括组件、组件接口、连接件和架构配置。
ADL对连接件的重视成为区分ADL和其他建模语言的重要特征之一。
[单项选择题]
3、服务组件体系结构(ServiceComponentArchitecture,SCA)是基于面向服务体系结构(ServiceOrientedArchitecture,SOA)的思想描述服务之间组合和协作的规范。
以下关于SCA的叙述,不正确的是()
A.SCA定义了语言中立的服务组合方式,能够进行跨语言的服务调用
B.SCA加强组件的接口与传输协议的关联,提高组件的内聚性
C.SCA实现服务组件和其传输协议的绑定,这种绑定是可扩展的
D.SCA主要是为了满足软件集成的需要而创建的架构
参考答案:
B
参考解析:
服务组件体系结构(SCA)是一个规范,它描述用于使用SOA构建应用程序和系统的模型。
它可简化使用SOA进行的应用程序开发和实现工作。
SCA提供了构建粗粒度组件的机制,这些粗粒度组件由细粒度组件组装而成。
SCA将传统中间件编程从业务逻辑分离出来,从而使程序员免受其复杂性的困扰。
它允许开发人员集中精力编写业务逻辑,而不必将大量的时间花费在更为底层的技术实现上。
SCA方法的优势包括:
简化业务组件开发;简化作为服务网络构建的业务解决方案的组装和部署;提高可移植性、可重用性和灵活性;通过屏蔽底层技术变更来保护业务逻辑资产;提高可测试性。
SCA服务组件与传统组件的主要区别在于:
服务组件往往是粗粒度的,而传统组件以细粒度居多;服务组件的接口是标准的,主要是WSDL接口,而传统组件常以具体API形式出现;服务组件的实现与语言是无关的,而传统组件常绑定某种特定的语言;服务组件可以通过组件容器提供QoS的服务,而传统组件完全由程序代码直接控制。
[单项选择题]
4、博学公司欲实现一个数据处理软件,该软件需要从网络接收一组复杂的数据,然后分步进行解析和处理。
在这种情况下,采用()的体系结构风格比较适合。
A.远程过程调用
B.层次化
C.管道/过滤器
D.共享数据
参考答案:
C
参考解析:
层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。
例如,四层的分层式体系结构可以分为应用软件、业务软件、中间件和系统软件。
这种风格支持基于可增加抽象层的设计。
这样,允许将一个复杂问题分解成一个增量步骤序列的实现。
由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。
层次系统最广泛的应用是分层通信协议。
在这一应用领域中,每一层提供一个抽象的功能,作为上层通信的基础。
较低的层次定义低层的交互,最低层通常只定义硬件物理连接。
在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。
这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。
因此,这里的构件被称为过滤器,这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。
此风格特别重要的过滤器必须是独立的实体,它不能与其他的过滤器共享数据,而且一个过滤器不知道它上游和下游的标识。
一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。
根据以上介绍,在本题中,博学公司欲实现一个数据处理软件,该软件需要从网络接收一组复杂的数据,然后分步进行解析和处理,适合采用的是管道/过滤器风格。
[单项选择题]
5、设计模式(DesignPattem)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
下面关于设计模式所倡导的基本原则的描述,错误的是()
A.模块应对扩展开放,而对修改关闭
B.优先使用继承,而不是组合
C.要针对接口编程,而不是针对实现编程
D.抽象不应该依赖于细节,细节应当依赖于抽象
参考答案:
B
参考解析:
设计模式所倡导的基本原则如下。
①开闭原则:
一个软件实体应当对扩展开放,对修改关闭。
在设计一个模块时,应当使这个模块可以在不被修改的情况下被扩展。
关键在于抽象,抽象层要预见所有可能的扩展,因此,抽象层在任何扩展情况下都不会改变,即对修改关闭。
同时,由于从抽象层导出一个或多个新类,可以有不同的实现,改变系统的行为,此即为对扩展开发。
简而言之,抽象层对修改关闭,通过扩展实现改变系统行为。
②里氏代换原则:
任何基类可以出现的地方,子类一定可以出现。
③依赖原则:
要依赖于抽象,而不是具体实现。
也可以这样说,要针对接口编程,不要针对实现编程。
④接口分离原则:
应当为客户端提供尽量小的单独的接口,而不是提供大的接口。
⑤组合复用原则:
要尽量使用组合,而不是继承关系达到复用目的。
⑥迪米特法则:
又叫最少知识法则,就是说一个对象应当对其他对象有尽可能少的了解。
[单项选择题]
6、在企业应用系统开发中,方法调用(MethodInvocation)和消息(Messaging)机制是两种常用的数据处理与交换方式,下面关于这两种机制的描述,不正确的是()
A.方法调用一般具有同步特性,而消息机制具有异步的特点
B.从可靠性方面考虑,消息机制比方法调用更有优势
C.从效率方面考虑,一般情况下消息机制比方法调用更有优势
D.消息调用机制可以支持多个数据的发送者和接收者,更加灵活
参考答案:
C
参考解析:
方法调用是指当某个事件发生时,调用某个对象的方法来处理事件。
消息机制是指当某个事件发生时,把相关的消息发送给某些对象(一个或多个),相关对象捕获消息后,进行相应的处理。
从以上定义可以看出,方法调用一般具有同步特性,而消息机制具有异步的特点。
在消息调用机制中,消息是通过消息总线进行发送的,可以支持多个数据的发送者和接收者,更加灵活。
从效率方面考虑,由于方法调用指定调用某个对象的方法,同步进行,所以效率要高一些。
而消息机制由于采用异步方法,数据不一定得到很快的处理,具体要根据接收消息的对象的处理情况,所以一般情况下效率会低一些。
但是,从可靠性方面考虑,由于消息机制是通过系统总线来完成,且可能有多个接收者,所以比方法调用更有优势。
[单项选择题]
7、JavaEE是Java领域内企业级应用开发的框架与标准。
下面关于采用JavaEE架构的描述,不正确的是()
A.JavaEE定义了分布式环境中多层应用系统的架构,是多种Java技术的混合体
B.具有典型的3层结构:
表现层、业务逻辑层和基础设施层
C.不同的应用系统对底层支持系统的要求可能不同,因此每次开发时应该针对不同的应用需求对底层系统进行二次开发,提供支持接口
D.要严格区分业务逻辑层和表现层,尤其应该注意不要在表现层中混杂业务代码
参考答案:
C
参考解析:
JavaEE以前称为J2EE,可以帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。
JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(SOA)和Web2.0应用程序。
JavaEE定义了分布式环境中多层应用系统的架构,是多种Java技术的混合体,具有典型的3层结构:
表现层、业务逻辑层和基础设施层。
在实际应用中,基础设施层应该要保持稳定,要严格区分业务逻辑层和表现层,尤其应该注意不要在表现层中混杂业务代码。
[单项选择题]
8、在CORBA体系结构中,()属于客户端接口。
A.静态IDLSkeletons
B.POA
C.静态IDLStubs
D.动态Skeletons
参考答案:
C
[单项选择题]
9、系统应用架构设计中,网络架构数据流图的主要作用是将处理器和设备分配到网络中。
()不属于网络架构数据流图的内容。
A.服务器、客户端及其物理位置
B.处理器说明信息
C.单位时间的数据流大小
D.传输协议
参考答案:
C
参考解析:
应用架构建模中要绘制的第一个物理数据流图(PDFD)是网络架构DFD,它们不显示单位时间的数据流量,需要显示的信息包括服务器及其物理位置、客户端及其物理位置、处理器说明、传输协议。
[单项选择题]
10、软件架构贯穿于软件的整个生命周期,但在不同阶段对软件架构的关注力度并不相同,在()阶段,对软件架构的关注最多。
A.需求分析与设计
B.设计与实现
C.实现与测试
D.部署与变更
参考答案:
B
参考解析:
本题主要考查软件架构对软件开发的影响和在生命周期中的关注力度。
软件架构贯穿于软件的整个生命周期,但在不同的阶段对软件架构的关注力度并不相同。
其中需求分析阶段主要关注问题域;设计阶段主要将需求转换为软件架构模型;软件实现阶段主要关注将架构设计转换为实际的代码;软件部署阶段主要通过组装软件组件提高系统的实现效率。
其中,设计与实现阶段在软件架构上的工作最多,也最重要,因此关注力度最大。
[单项选择题]
11、软件架构需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
以下活动中,不属于软件架构需求过程范畴的是()
A.设计构件
B.需求获取
C.标识构件
D.架构需求评审
参考答案:
A
参考解析:
软件架构需求是指用户对目标软件系统在功能、行为、性能和设计约束等方面的期望。
需求过程主要是获取用户需求,标识系统中所要用到的构件,并进行架构需求评审。
其中标识构件又详细分为生成类图、对类图进行分组和将类打包成构件3步。
软件架构需求并不应该包括设计构件的过程。
[单项选择题]
12、基于架构的软件设计(ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计。
以下关于ABSD的叙述中,错误的是()
A.使用ABSD方法,设计活动可以从项目总体功能框架明确就开始
B.ABSD方法是一个自顶向下,递归细化的过程
C.ABSD方法有3个基础:
功能分解、选择架构风格实现质量和商业需求及软件模板的使用
D.使用ABSD方法,设计活动的开始意味着需求抽取和分析活动可以终止
参考答案:
D
参考解析:
基于架构的软件设计(ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计。
使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,并且设计活动的开始并不意味着需求抽取和分析活动可以终止,而是应该与设计活动并行。
ABSD方法有3个基础:
第一个基础是功能分解,在功能分解中使用已有的基于模块的内聚和耦合技术;第二个基础是通过选择体系结构风格来实现质量和商业需求;第三个基础是软件模板的使用。
ABSD方法是一个自顶向下,递归细化的过程,软件系统的架构通过该方法得到细化,直到能产生软件构件的类。
[单项选择题]
13、软件架构文档是对软件架构的正式描述,能够帮助与系统有关的开发人员更好地理解软件架构。
软件架构文档的写作应该遵循一定的原则。
以下关于软件架构文档写作原则的叙述中,错误的是()
A.架构文档应该从架构设计者的角度进行编写
B.应该保持架构文档的即时更新,但更新不要过于频繁
C.架构文档中的描述应该尽量避免不必要的重复
D.每次架构文档修改,都应该记录修改的原则
参考答案:
A
参考解析:
软件架构文档是对软件架构的一种描述,帮助程序员使用特定的程序设计语言实现软件架构。
软件架构文档的写作应该遵循一定的原则,这些原则包括:
文档要从使用者的角度进行编写;必须分发给所有与系统有关的开发人员;应该保持架构文档的即时更新,但更新不要过于频繁;架构文档中描述应该尽量避免不必要的重复:
每次架构文档修改都应该记录进行修改的原则。
[单项选择题]
14、架构复审是基于架构开发中一个重要的环节。
以下关于架构复审的叙述中,错误的是()
A.架构复审的目标是标识潜在的风险,及早发现架构设计的缺陷和错误
B.架构复审过程中,通常会对一个可运行的最小化系统进行架构评估和测试
C.架构复审人员由系统设计与开发人员组成
D.架构设计、文档化和复审是一个迭代的过程
参考答案:
C
参考解析:
架构复审是基于架构开发中一个重要的环节。
架构设计、文档化和复审是一个迭代的过程。
从这个方面来说,在一个主版本的软件架构分析之后,要安排一次由外部人员(用户代表和领域专家)参加的复审。
架构复审过程中,通常会对一个可运行的最小化系统进行架构评估和测试。
架构复审的目标是标识潜在的风险,及早发现架构设计的缺陷和错误。
[单项选择题]
15、某软件开发公司负责开发一个Web服务器服务端处理软件,其核心部分是对客户端请求消息的解析与处理,包括HTTP报头分离、SOAP报文解析等功能。
该公司的架构师决定采用成熟的架构风格指导整个软件的设计,以下()架构风格,最适合该服务端处理软件。
A.虚拟机
B.管道.过滤器
C.黑板结构
D.分层结构
参考答案:
B
参考解析:
根据题干描述,Web服务器服务端的核心功能是数据处理,由于Web服务在数据传输方面具有协议分层的特征,即底层协议会包装上层协议(HTTP协议体中包含整个SOAP消息内容),因此需要数据内容的逐步分解与分阶段处理。
比较选项中的架构风格,由于管道,过滤器的架构风格支持分阶段数据处理,因此特别适合该服务端处理软件的要求。
[单项选择题]
16、博学公司欲开发一个基于图形用户界面的集成调试器。
该调试器的编辑器和变量监视器可以设置调试断点。
当调试器在断点处暂停运行时,编辑程序可以自动卷屏到断点,变量监视器刷新变量数值。
针对这样的功能描述,采用()的架构风格最为合适。
A.数据共享
B.虚拟机
C.隐式调用
D.显式调用
参考答案:
C
参考解析:
根据题干描述,调试器在设置端点时,其本质是在断点处设置一个事件监听函数,当程序执行到断点位置时,会触发并调用该事件监听函数,监听函数负责进行自动卷屏、刷新变量数值等动作。
这是一个典型的回调机制,属于隐式调用的架构风格。
[单项选择题]
17、某公司欲开发一种工业机器人,用来进行汽车零件的装配。
公司的架构师经过分析与讨论,给出了该机器人控制软件的两种候选架构方案:
闭环控制和分层结构。
以下对于这两种候选架构的选择理由,错误的是()
A.应该采用闭环控制架构,因为闭环结构给出了将软件分解成几个协作构件的方法,这对于复杂任务特别适合
B.应该采用闭环控制结构,因为闭环控制架构中机器人的主要构件监控器、传感器、发动机等)是彼此分开的,并能够独立替换
C.应该采用分层结构,因为分层结构很好地组织了用来协调机器人操作的构件,系统结构更加清晰
D.应该采用分层结构,因为抽象层的存在,满足了处理不确定性的需要:
在较低层次不确定的实现细节在较高层次会变得确定
参考答案:
A
参考解析:
采用闭环结构的软件通常由几个协作构件共同构成,且其中的主要构件彼此分开,能够进行替换与重用,但闭环结构通常适用于处理简单任务(如机器装配等),并不适用于复杂任务。
分层结构的特点是通过引入抽象层,在较低层次不确定的实现细节在较高层次会变得确定,并能够组织层间构件的协作,系统结构更加清晰。
[单项选择题]
18、一个软件的架构设计是随着技术的不断进步而不断变化的。
以编译器为例,其主流架构经历了管道-过滤器到数据共享为中心的转变过程。
以下关于编译器架构的叙述中,错误的是()
A.早期的编译器采用管道.过滤器架构风格,以文本形式输入的代码被逐步转化为各种形式,最终生成可执行代码
B.早期的编译器采用管道-过滤器架构风格,并且大多数编译器在词法分析时创造独立的符号表,在其后的阶段会不断修改符号表,因此符号表并不是程序数据的一部分
C.现代的编译器采用以数据共享为中心的架构风格,主要关心编译过程中程序的中间表示
D.现代的编译器采用以数据共享为中心的架构风格,但由于分析树是在语法分析阶段结束后才产生作为语义分析的输入,因此分析树不是数据中心的共享数据
参考答案:
D
参考解析:
一个软件的架构设计是随着技术的进步而不断变化的。
以编译器为例,其主流架构经历了管道.过滤器到数据共享为中心的转变过程。
早期的编译器采用管道-过滤器架构风格,以文本形式输入的代码被逐步转化为各种形式,最终生成可执行代码。
早期的编译器采用管道.过滤器架构风格,并且大多数编译器在词法分析时创造独立的符号表,在其后的阶段会不断修改符号表,因此符号表并不是程序数据的一部分。
现代的编译器采用以数据共享为中心的架构风格,主要关心编译过程中程序的中间表示。
现代的编译器采用以数据共享为中心的架构风格,分析树是在语法分析阶段结束后才产生作为语义分析的输入,分析树是数据中心中重要的共享数据,为后续的语义分析提供了帮助。
[单项选择题]
19、某软件公司基于面向对象技术开发了一套图形界面显示构件库VisualComponent。
在使用该库构建某图形界面时,用户要求为界面定制一些特效显示效果,如带滚动条、能够显示艺术字体的透明窗体等。
针对这种需求,公司采用()最为灵活。
A.桥接模式
B.命令模式
C.组合模式
D.装饰模式
参考答案:
D
参考解析:
本题考查设计模式的应用。
每一种设计模式,都有自身的一些优势,以应对某些特定的应用场合。
根据题目的描述,需要开发的是图形界面构件库,并要求为图形界面提供一些定制的特效,如带滚动条的图形界面,能够显示艺术字体且透明的图形界面等。
这要求能够动态地对一个对象进行功能上的扩展,也可以对其子类进行功能上的扩展。
对照选项中的4种设计模式,装饰模式最符合这一要求。
[单项选择题]
20、某软件公司承接了为某工作流语言开发解释器的工作。
该工作流语言由多种活动节点构成,具有类XML的语法结构。
用户要求解释器工作时,对每个活动节点进行一系列的处理,包括执行活动、日志记录、调用外部应用程序等,并且要求处理过程具有可扩展能力。
针对这种需求,公司采用()最为恰当。
A.适配器模式
B.迭代器模式
C.访问者模式
D.观察者模式
参考答案:
C
参考解析:
根据题目的描述,可以看出本题的核心在于对某个具有固定结构的活动节点需要多种处理能力,且处理能力可扩展,也就是说要求在不改变原来类结构(活动节点)的基础上增加新功能。
对照4个选项,发现访问者模式最符合要求。
[单项选择题]
21、识别风险点、非风险点、敏感点和权衡点是ATAM方法中的关键步骤。
已知针对某系统所做的架构设计中,提高其加密子系统的加密级别将对系统的安全性和性能都产生非常大的影响,则该子系统一定属于()
A.风险点和敏感点
B.权衡点和风险点
C.权衡点和敏感点
D.风险点和非风险点
参考答案:
C
参考解析:
本题考查软件体系结构中的评估方法。
加密子系统的加密级别会对安全性和性能产生影响,一般而言,加密程度越高,安全性越好,但是其性能会降低;而加密程度越低,安全性越差,但性能一般会提高。
因此,该子系统将在安全性和性能两个方面产生冲突,所以该子系统一定属于权衡点和敏感点。
更多内容请访问《睦霖题库》微信公众号
[单项选择题]
22、软件的分层式体系结构把软件系统划分为4层,这4层结构自顶向下分别是()
A.应用软件、业务构件、中间件、系统软件
B.业务构件、应用软件、中间件、系统软件
C.应用软件、中间件、系统软件、业务构件
D.业务构件、中间件、应用软件、系统软件
参考答案:
A
参考解析:
软件的分层式体系结构把软件系统划分为4层,这4层结构自顶向下分别是应用软件、业务构件、中间件和系统软件。
[单项选择题]
23、结构模板能够帮助分析员建立一个逐层细化的层次结构。
结构环境图(ArchitectureContextDiagram,ACD)位于层次结构的顶层。
在从ACD导出的()中给出了各个专门子系统和重要(数据与控制)信息流。
A.系统语境图(SCD)
B.结构互连图(AID)
C.结构流程图(AFD)
D.结构图的规格说明(ADS)
参考答案:
C
参考解析:
结构模板能帮助系统分析员建立一个细节的层次结构。
结构环境图ACD则位于层次结构的顶层,建立了待实现系统与系统运行环境之间的信息边界。
ACD定义了:
①系统使用的所有信息的外部产生者。
②由系统建立的所有信息的外部使用者。
⑧通过接口进行通信或实施维护与自测试的所有实体。
专门子系统定义在从ACD导出的结构流程图(ArchitectureFlowDiagram,AFD)中。
信息流穿越ACD的各个区域,可用于引导系统工程师开发AFD。
AFD给出了各个专门子系统和重要的(数据与控制)信息流。
结构模板把子系统处理划分成5个处理区域。
每个子系统可以包含一个或多个系统元素(如硬件、软件、人),它们是系统工程师分配给子系统的。
[单项选择题]
24、管道和过滤器模式属于()
A.数据为中心的体系结构
B.数据流体系结构
C.调用和返回体系结构
D.层次式体系结构
参考答案:
B
参考解析:
体系结构风格有九大类:
①数据流系统:
包括顺序批处理、管道和过滤器。
②调用和返回系统:
包括主程序和子程序、面向对象系统、层次结构。
③独立部件:
包括通信进程、事件隐式调用。
④虚拟机:
包括解释器、规则基系统。
⑤以数据为中心的系统:
包括数据库、超文本系统、黑板系统。
⑥特殊领域风格;如过程控制、模拟器。
⑦特殊结构的风格:
如分布式处理、状态转移系统。
⑧不同风格合成建立的异构结构。
⑨最初始、最基本的主程序/子程序。
管道和过滤器模式是为处理数据流的系统提供的一种模式。
它是由过滤器和管道组成的。
每个处理步骤都被封装在一个过滤器组件中,数据通过相邻过滤器之间的管道进行传输。
每个过滤器可以单独修改,功能单一,并且它们之间的顺序可以进行配置。
[单项选择题]
25、在客户机/服务器系统开发中,采用()时,应将数据层和数据处理层放置于服务器,应用逻辑层、表示逻辑层和表示层放置于客户机。
A.分布式表示结构
B.分布式应用结构
C.分布式数据和应用结构
D.分布式数据结构
参考答案:
D
参考解析:
客户机/服务器系统开发时可以采用不同的分布式计算架构:
分布式表示架构是将表示层和表示逻辑层迁移到客户机,应用逻辑层、数据处理层和数据层仍保留在服务器上;分布式数据架构是将数据层和数据处理层放置于服务器,应用逻辑层、表示逻辑层和