201211架构下午真题
第 1 题
请详细阅读有关数据架构方面的描述,回答问题1至问题3。
【说明】
某软件公司欲开发一个基于Web 2.0的大型社交网络系统。就该系统的数据架构而言,李工决定采用公司熟悉的数据架构,使用通用的商用关系型数据库,系统内部数据采用中央集中方式存储。
该系统投入使用后,初期用户数量少,系统运行平稳。6个月后,用户数出现了爆炸式增长,系统暴露出诸多问题,集中表现在:
(1)用户执行读写操作时,响应时间均变得很慢;
(2)随着系统功能的扩充,原有数据格式发生变化,又出现新的数据格式,维护困难;
(3)数据容量很快超过系统原有的设计上限,数据库扩容困难;
(4)软件系统不断出现宕机,整个系统可用性较差。
经过多次会议讨论,公司的王工建议采用NoSQL数据库来替代关系数据库,以解决上述问题。但李工指出NoSQL数据库出现时间不长,在使用上可能存在风险。公司技术人员对NoSQL数据库产品进行了认真测试,最终决定采用NoSQL数据库来替代现有的数据库系统。
【问题1】(11分)
分别解释产生问题(1)~(4)的原因。
【问题2】(8分)
请针对问题(1)~(4),分别指出NoSQL数据库的哪些特点促使公司最终采用了NoSQL数据库。
【问题3】(6分)
请指出该系统采用NoSQL数据库时可能存在的问题。
答案与解析
- 试题难度:较难
- 知识点:案例分析>数据架构建模
- 试题答案:
【问题1】
其原因主要是:
(1)用户响应时间慢。大型社交网络系统要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强可以,但是应付上万次SQL写数据请求,硬盘I/O就已经无法承受了。特别是涉及到多表连接操作,会导致响应变慢。
(2)数据格式变化。大型社交网络系统随着用户的使用,会不断地增加新的功能,导致原有数据格式发生变化,甚至出现新的数据格式。但关系数据库中采用元组方式组织数据,难以使用新型数据格式,难以维护。
(3)数据容量超过设计上限。对于大型社交网络系统,往往会在很短时间内产生海量数据。关系数据库多采用中央数据存储,使得数据容量受限于前期设计的上限,很难实现数据容量的横向扩展。
(4)系统可用性差:关系数据库采用中央数据存储,容易成为系统的性能瓶颈,单点故障很容易导致系统崩溃,负载过高往往导致系统出现宕机现象。
【问题2】
针对问题(1),NoSQL数据库支持高并发数据访问,性能较高。
针对问题(2),NoSQL数据库的数据存储结构松散,能够灵活支持多种类型的数据格式。
针对问题(3),NoSQL数据库能够支持海量数据的存储,且易于横向扩展。
针对问题(4),NoSQL数据库基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高。
【问题3】
该系统采用NoSQL数据库时可能存在的问题有:
(1)NoSQL数据库的现有产品不够成熟,大多数产品处于初创期。
(2)NoSQL数据库并未形成一定的标准,产品种类繁多,缺乏官方支持。
(3)NoSQL数据库不提供对SQL的支持,学习和应用迁移成本较高。
(4)NoSQL数据库支持的特性不够丰富,现有产品提供的功能比较有限。 - 试题解析:
本题主要考查考生对NoSQL数据库的理解与掌握情况。
【问题1】
本问主要考查对题干(1)~(4)出现问题的分析与理解情况,考生一定要紧紧围绕大型社交网络的特点,即海量用户、大量实时操作等特征进行论述。
【问题2】
本问题承接上面的问题,主要考查如何结合实际场景,描述如何采用NoSQL数据库解决上述问题。注意需要有的放矢,不要发散。
【问题3】
本问主要考查考生对NoSQL数据库缺点的理解。需要注意必须围绕题干中系统建设的特点和要求进行论述。
第 2 题
阅读以下关于面向对象系统建模的叙述,在答题纸上回答问题1至问题3。
【说明】
某软件企业为影音产品销售公司W开发一套在线销售系统,以提升服务的质量和效率。项目组经过讨论后决定采用面向对象方法开发该系统。在设计建模阶段需要满足以下设计要求:
(1)W公司经常进行促销活动。根据不同的条件(如订单总额、商品数量、产品种类等),公司可以提供百分比折扣或现金减免等多种促销方式供提交订单的用户选择。实现每种促销活动的代码量很大,且会随促销策略不同经常修改。系统设计中需要考虑现有的促销和新的促销,而不用经常地重写控制器类代码。
(2)该在线销售系统需要计算每个订单的税率,不同商品的税率及计算方式会有所区别。所以W公司决定在系统中直接调用不同商品供应商提供的税率计算类,但每个供应商的类提供了不同的调用方法。系统设计中需要考虑如果公司更换了供应商,应该尽可能少地在系统中修改或创建新类。
项目组架构师决定采用设计模式来满足上述设计要求,并确定从当前已经熟练掌握的设计模式中进行选择,这些设计模式包括:适配器模式(Adapter)、构造器模式(Builder)、命令模式(Command)、外观模式(Facade)、中介模式(Mediator)、原型模式(Prototype)、代理模式(Proxy)、状态模式(State)和策略模式(Strategy)等。
【问题1】(6分)
设计模式按照其应用模式可以分为三类:创建型、结构型和行为型,请用200字以内文字说明三者的作用。
【问题2】(9分)
请将项目组已经掌握的设计模式按照其作用分别归类到创建型、结构型和行为型模式中。
【问题3】(10分)
针对题目中所提出的设计要求(1)和(2),项目组应该分别选择何种设计模式?请分别用200字以内文字说明具体的解决方案。
答案与解析
- 试题难度:较难
- 知识点:案例分析>设计模式
- 试题答案:
【问题1】
创建型模式主要用于创建对象,为设计类实例化新对象提供指南。
结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南。
行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。
【问题2】
创建型模式:构造器模式、原型模式。
结构型模式:适配器模式、外观模式、代理模式。
行为型模式:命令模式、中介模式、状态模式和策略模式。
【问题3】
(1)策略模式
解决方案:在具有公共接口的独立类中定义每个计算。可以利用该模式创建各种促销类,它们从同一个超类继承。每个类都有相同名称的标准接口方法,用于根据订单编号计算将要折扣的金额总数。计算每个促销的内部代码对促销类来说完全不同(3分)。
(2)适配器模式
解决方案:增加一个类作为适配器,转换类的接口到客户端类期望的另一个接口。实现一个适配器类,这个类为系统的其他部分提供了一个不变的方法供调用,为了集成不同商品供应商提供的税率计算类,编写一个适配器类的子类,包含调用购买类所需的代码。该子类将系统的调用映射到某个供应商的税率计算类。如果要更换供应商,那么只需要写一个新的适配器子类,其他保持不变。 - 试题解析:
本题主要考查系统建模技术中的设计模式。
设计模式是前人经验的总结,它使人们可以方便地复用成功的设计和架构。当人们在特定的环境下遇到特定类型的问题,采用他人已经使用过的一些成功的解决方案,一方面可以降低分析、设计和实现的难度,另一方面可以使系统具有更好的可复用性和灵活性,随着面向对象技术的发展和广泛应用,设计模式已经成为系统架构设计师所需掌握的基本技能之一。
【问题1】
设计模式根据目的和用途不同,可以分为创建型(Creational)模式、结构型(Structural)模式和行为型(Behavioral)模式三种。创建型模式主要用于创建对象,为设计类实例化新对象提供指南;结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南;行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。
【问题2】
创建型模式对类的实例化过程进行了抽象,能够使得软件模块做到与对象的创建和组织无关。创建型模式隐藏了对象是如何被创建的和组合在一起的,以达到使整个系统独立的目的。创建型模式包括工厂方法模式、抽象工厂模式、原型模式、单例模式和构造器模式等。
结构型模式描述如何将类或对象组合在一起形成更大的结构。结构型模式描述两种不同的事物,即类与类的实例。结构型模式包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式等。
行为型模式是对在不同的对象之间划分责任和算法的抽象,它不仅是关于类和对象的,而且是关于它们之间的相互作用的。行为型模式包括职责链模式、命令模式、解释器模式、迭代器模式、中介模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式等。
【问题3】
设计要求(1)中不同的促销方法有不同的实现代码,在不同促销活动中需要能够替换实现代码,适合采用策略模式。策略模式是一种对象的行为型模式,定义一系列算法,并将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,其目的是将行为和环境分隔,当出现新的行为时,只需要实现新的行为型模式。
设计要求(2)中不同商品供应商提供的税率计算类需要提供统一的方法调用接口,适合采用适配器模式。适配器模式将一个接口转换成客户希望的另一个接口,从而使接口不兼容的那些类可以一起工作。适配器模式既可以作为类结构型模式,可以作为对象结构型模式。在类结构型模式中,通过使用一个具体类将适配者适配到目标接口中;在对象适配器模式中,一个适配器可以将多个不同的适配者适配到同一个目标。
第 3 题
请详细阅读有关嵌入式软件架构设计方面的描述,回答问题1和问题2。
【说明】
在嵌入式系统中,软件采用开放式架构已成为新的发展趋势。软件架构设计的优劣将直接影响软件的重用和移植能力。
某软件公司主要从事宇航领域的嵌入式软件研发工作。经二十多年的发展,其软件产品已被广泛应用于各种航天飞行器中。该公司积累了众多成熟软件,但由于当初没有充分考虑软件的架构,原有软件无法被再利用,为适应嵌入式软件技术发展需要,该公司决策层决定成立宇航嵌入式软件开放式架构研究小组,为公司完成开放式架构的定义与设计,确保公司软件资源能得到充分利用。
研究小组查阅了大量的国外资料和标准,最终将研究重点集中在了SAE AS4893《通用开放式架构(GOA)框架》标准,图3-1给出了GOA定义的架构图。
图3-1 GOA开放式架构
【问题1】(9分)
请用300字以内的文字简要说明开放式架构的四个基本特点。
【问题2】(16分)
如图3-1所示,GOA框架规定了软件、硬件和接口的结构,以在不同应用领域中实现系统功能。GOA框架规定了一组接口,其重要特点是建立了关键组件及组件间接口关系,这些接口的确定可用于支持软件的可移植性和可升级性,以满足功能的增加和技术的更新要求。除操作系统服务与扩展操作系统之间的接口(3X)外,GOA将其它接口分为两类:即直接接口(iD(i=1,2,3,…))和逻辑接口(iL(i=1,2,3,…)),直接接口定义了信息传输方式;逻辑接口定义了对等数据交换的要求,逻辑接口没有定义真正的信息传输方式,其传输发生在一个或多个直接接口。根据图3-1所标注的接口在框架中的具体位置,请填写表3-1的(1)~(8)处空白。
表3-1 GOA中的接口与功能
答案与解析
- 试题难度:较难
- 知识点:案例分析>嵌入式系统设计
- 试题答案:
【问题1】
开放架构应具有以下4个基本特点:
① 可移植性。各种计算机应用系统可在具有开放架构特性的各种计算机系统间进行移植,不论这些计算机是否同种型号、同种机型。
② 可互操作性。如计算机网络中的各结点机都具有开放架构的特性,则该网上各结点机间可相互操作和资源共享。
③ 可剪裁性。如某个计算机系统是具有开放架构特性的,则在该系统的低档机上运行的应用系统应能在高档机上运行,原在高档机上运行的应用系统经剪裁后也可在低档机上运行。
④ 易获得性。在具有开放架构特性的机器上所运行的软件环境易于从多方获得,不受某个来源所控制。
【问题2】表3-1 GOA中的接口与功能
- 试题解析:
本题主要考查嵌入式软件开放式架构的理解与掌握。
【问题1】
本问题主要考查开放架构的基本特点。开放架构于20世纪80年代初提出,与开放系统概念的提出和实现密切相关。它的发展是为了适应更大规模地推广计算机的应用和计算机网络化的需求,现仍处于继续发展和完善之中。开放架构具有应用系统的可移植性和可剪裁性、网络上各结点机间的互操作性和易于从多方获得软件的体系结构。
开放架构有四个基本特点:
① 可移植性。各种计算机应用系统可在具有开放架构特性的各种计算机系统间进行移植,不论这些计算机是否同种型号、同种机型。
② 可互操作性。如计算机网络中的各结点机都具有开放架构的特性,则该网上各结点机间可相互操作和资源共享。
③ 可剪裁性。如某个计算机系统是具有开放架构特性的,则在该系统的低档机上运行的应用系统应能在高档机上运行,原在高档机上运行的应用系统经剪裁后也可在低档机上运行。
④ 易获得性。在具有开放架构特性的机器上所运行的软件环境易于从多方获得,不受某个来源所控制。
【问题2】
本问题主要考查SAE AS4893《通用开放式架构(GOA)框架》标准的理解与掌握。考生需要在对题干描述以及示意图进行认真解读的基础上填写空白。
根据题干描述,GOA框架规定了软件、硬件和接口的结构,以在不同应用领域中实现系统功能。GOA框架规定了一组接口,其重要特点是建立了关键组件及组件间接口关系,这些接口的确定可用于支持软件的可移植性和可升级性,以满足功能的增加和技术的更新要求。除操作系统服务与扩展操作系统之间的接口(3X)外,GOA将其他接口分为两类:即直接接口(iD(i=1,2,3,…))和逻辑接口(iL(i=1,2,3,…)),直接接口定义了信息传输方式;逻辑接口定义了对等数据交换的要求,逻辑接口没有定义真正的信息传输方式,其传输发生在一个或多个直接接口。
根据上述提示,可以看出:
4D的功能是为任何处理机中的服务功能提供各应用软件互操作服务的接口(应用到系统服务的直接接口)。
1L的功能是一组对等的物理资源之间数据交换接口/协议的要求组成的接口,它能实现通信链路物理资源访问(物理资源逻辑接口)。
3D的功能是一组软件(操作系统)访问硬件资源的服务接口。该组接口为软件与硬件资源之间定义了一个边界(系统服务到资源访问直接接口)。
4L的功能是提供在任何处理机中应用软件与其他应用软件之间的接口。也包括不同系统间的应用软件之间的接口(应用逻辑接口)。
3L的功能是在同一个或不同的处理机之间,为处理机中的系统服务提供逻辑服务和远程服务的接口(系统服务逻辑接口)。
2L的功能是根据对等信息/数据交换要求。在同一处理机或不同处理机间,资源访问服务之间的对等操作服务的接口(资源访问服务逻辑接口)。
2D的功能是:由服务于硬件指令机制和寄存器使用的资源访问服务组成的接口(资源服务到物理资源直接接口)。
第 4 题
阅读以下关于分布式系统设计的说明,在答题纸上回答问题1至问题3。
【说明】
某软件公司拟开发一套电信领域的分布式系统,该系统后台多个功能模块同时运行时的计算负载较大,且需要控制不同的特定电信硬件设备,由于硬件体积和I/O端口冲突等原因,这些设备需要分散安装在多个不同计算机系统中。该系统上线运行后将为企业最终用户提供7×24小时的不间断服务,而用户的单次接入服务往往需要后台多个模块共同协作完成。基于上述原因,该系统后台软件模块需分布在局域网内的多台计算机上。
项目组决定基于ISO的开放分布进程(ODP)规范来进行系统架构的设计与开发,近期项目组召开了多次会议,对架构设计阶段的关键问题进行了讨论分析。
【问题1】(10分)
ODP从5个标准的视点组织分析系统的架构,这些视点描述了同一系统的不同重要方面,请根据图2-1中不同视点所关注的核心内容,将备选的架构视点填入图中的(1)~(5)。
图2-1 ODP架构视点示意图
备选答案:技术选择架构、企业业务架构、分布式工程架构、计算接口架构、逻辑信息架构
【问题2】(9分)
在技术选择架构规划时,王工认为系统应基于现有分布式基础设施(分布式中间件)来构建,因为这样可以充分利用现有基础设施提供的各种支撑,在更短时间内构造出质量更高的分布式系统;而李工则认为可基于基本的进程间通信机制自主开发系统的支撑平台,这样可以避免对特定中间件的依赖,项目组经过认真讨论,最终采用了王工的方案。请用400字以内文字,从构件管理支持、互操作支持以及公共服务支持三个方面说明现有分布式基础设施为构建分布式系统所提供的基本支撑。
【问题3】(6分)
由于系统后台模块的分布式特性,后台分布式对象之间的互操作机制是需要考虑的核心问题之一。图2-2所示是当前分布式基础设施中支持分布式对象互操作的基本机制,请将相应部件名称填入图中(1)~(2);基于图2-2给出的结构,用300字以内文字说明完成一次分布式对象调用的详细步骤。
图2-2 分布式对象互操作基本机制
答案与解析
- 试题难度:较难
- 知识点:案例分析>分布式系统设计
- 试题答案:
【问题1】
(1)企业业务架构
(2)逻辑信息架构
(3)计算接口架构
(4)分布式工程架构
(5)技术选择架构
【问题2】
(1)构件管理支持:现有分布式基础设施一般通过构件容器为构件提供基本的运行环境;具体功能一般包括管理构件的实例及其生命周期、管理构件的元信息等。
(2)互操作支持:现有分布式基础设施均提供了高层通信协议以屏蔽节点的物理特性以及各节点在处理器、操作系统、程序设计语言等方面的异构性;基于互操作支持,开发人员在开发与调用分布式对象时,均不需自己编写处理底层通信的代码。
(3)公共服务支持:现有分布式基础设施通常将针对分布式软件的通用支持集成于一身,以公共服务的形式提供给应用程序;其提供的常见公共服务包括命名服务、事务服务、安全服务、持久性服务等。
【问题3】
(1)存根/桩
(2)框架
或
(1)代理
(2)存根
一次远程调用的过程如下:
① 客户程序将调用请求发送给客户端桩,对于客户程序来说,桩就是服务程序在客户端的代理。
② 客户端桩负责将远程调用请求进行编组并发送给通信总线。
③ 调用请求经通信总线传送到服务端框架。
④ 服务端框架将调用请求解组并分派给真正的远程对象实现(服务程序)。
⑤ 服务程序完成客户端的调用请求,将结果返回给服务端框架。
⑥ 服务端框架将调用结果编组并发送给通信总线。
⑦ 调用结果经通信总线传送到客户端桩。
⑧ 客户端桩将调用结果解组并返回给客户程序,客户程序得到调用结果。 - 试题解析:
本题考查考生对典型分布式系统架构设计相关基础知识的掌握,要求考生了解基于ODP的架构设计过程中不同架构视点所关注的核心工作,充分理解现有分布式基础设施为分布式系统构建提供的各种基本支撑,掌握分布式对象互操作的基本原理与交互过程。
【问题1】
本问题考查考生对ODP架构视点的理解程度。
ISO定义的ODP参考模型为分布式计算进程提供了一个基本框架,它定义了分布式系统中包括开放性、整体性、灵活性、可塑性、联合性、可操作管理性、优质服务、安全性和透明性等在内的重要性质。其体系结构视点把抽象的符号或图表(如UML图表)运用到具体的体系结构开发任务中,每个视点有具体的建模目标和系统相关者。ODP从5个标准的视点组织分析了系统的架构,描述了同一系统的不同重要方面,这些视点包括企业业务架构、逻辑信息架构、计算接口架构、分布式工程架构和技术选择架构。
企业业务架构从IT的角度,对企业的业务结构、企业机构与业务的关系、企业内部的关系以及企业与外部机构的关系进行整理定义。该架构视点关注的核心内容包括业务目标、业务对象和业务策略等。
逻辑信息架构标识出系统必须知道什么,这种架构通过一个对象模型来表达,强调定义系统状态的属性。该架构视点关注的核心内容包括信息、对象、信息联合和信息行为等。
计算接口架构定义顶层的应用程序接口,这些是完全工程化的子系统边界的接口,这些接口的架构控制对于一个支持变化和控制复杂性的稳定的系统结构来说,是非常重要的。该架构视点关注的核心内容包括子系统的一致性、应用程序接口和接口行为等。
分布式工程架构定义了底层结构的需求,而独立于所选择的技术,它很好地解决了包括物理位置、系统规模可变性和通信服务质量等在内的复杂系统策略。该架构视点关注的核心内容包括软件分配、过程分配和服务质量等。
技术选择架构确定了实际的技术选择,所有其他视点都独立于这些决定,一个系统的选择过程包括初始概念机制的确认、具体机制的标识及最终实际机制的选择。该架构视点关注的核心内容包括概念性机制、具体的机制和实际的机制等。
基于上述分析,图5-1中的(1)~(5)应分别填写企业业务架构、逻辑信息架构、计算接口架构、分布式工程架构和技术选择架构。
【问题2】
本问题考查考生对现有分布式基础设施的理解。
随着软件系统规模与复杂度的不断提高,软件开发过程中复杂度高、开发周期长、可靠性保证难等突出问题并没有得到根本缓解,而分布式软件面临更大的挑战,分布式软件所运行的网络环境具有明显的分布性、开放性、演化性、异构性、并发性等特征,因此分布式软件必须解决互操作、数据交换、分布性、可行性等一系列更复杂的问题。现有的分布式基础设施典型地为三层/多层结构的分布式软件系统提供各种开发支撑,因为三层结构的分布式软件的核心为中间层,因此支撑主要集中在对中间层开发的支撑上。现有基础设施为分布式软件系统提供的基本支持与分布式软件所运行的网络环境密切相关,具体可归为提供构件运行环境、提供互操作机制与提供公共服务三个方面,基于分布式基础设施提供的支持,可以在更短时间构造出质量更高的分布式系统。
(1)提供构件运行环境:现有分布式基础设施均提供构件化的基本支持,支持方便开发与使用符合特定规范的构件(分布式对象)。中间件一般通过构件容器为构件提供基本的运行环境,具体功能一般包括管理构件的实例及其生命周期、管理构件的元信息等。
(2)提供互操作机制:因为分布式软件跨越了多台计算机,因此跨越网络的交互是每个分布式系统必须解决的首要问题,现有分布式基础设施均集成了早期远程过程/方法调用中间件的功能,提供了很强的高层通信协议以屏蔽节点的物理特性以及各节点在处理器、操作系统等方面的异构性。基于中间件的互操作支持,开发人员在开发与调用分布式对象时,均不需自己编写处理底层通信的代码。
(3)提供公共服务:除了互操作的支持外,现有分布式基础设施将早期各种中间件中针对分布式软件的通用支持集成于一身,以公共服务的形式提供给应用程序。公共服务又称为系统级服务,指由中间件(应用服务器)实现的、应用程序使用的软件系统中共性程度高的功能成分。与应用程序中开发人员开发的构件实现的功能不同,公共服务通常不实现应用系统中具体业务逻辑,而是为具体业务逻辑的实现提供共性的支持,而开发人员开发的构件则实现具体的业务逻辑。常见了公共服务包括命名服务、事务服务、安全服务、持久性服务等。
【问题3】
本问题考查考生对现有分布式对象互操作机制的理解。
各种互操作通信协议,包括RPC、IIOP、DCOM通信协议、JRMP、RMI/IIOP等,均可以帮助应用程序完成编组与解组等跨越网络通信的底层工作。这些高层通信协议尽管具体的实现细节不尽相同,但是在实现方式上与开发模式上均采用了RPC中相同的通信模型与类似的开发模式,它们采用的通信模型称为存根/框架(也称为桩/框架或代理/存根)结构。
在该结构中,由客户端桩(Stub)替客户端完成与服务端程序交互的具体底层通信工作,客户程序中的远程对象引用实际上是对本地桩的引用;而服务端框架(Skeleton)负责替服务端完成与客户端交互的具体底层通信工作。由于客户端桩与服务端框架分别位于客户端与服务端程序的进程内,因此开发人员开发客户端与服务端程序时只需分别与本进程内的桩与框架构件交互即可实现与远端的交互,而负责底层通信的客户端桩与服务端框架在开发过程中自动生成而非由开发人员编写,从而为开发人员省去底层通信相关的开发工作。
在存根/框架机制的支撑下,客户程序与分布式对象之间按照以下8个步骤完成一次远程调用:
① 客户程序将调用请求发送给客户端桩,对于客户程序来说,桩就是服务程序在客户端的代理。
② 客户端桩负责将远程调用请求进行编组并发送给通信总线。
③ 调用请求经通信总线传送到服务端框架。
④ 服务端框架将调用请求解组并分派给真正的远程对象实现(服务程序)。
⑤ 服务程序完成客户端的调用请求,将结果返回给服务端框架。
⑥ 服务端框架将调用结果编组并发送给通信总线。
⑦ 调用结果经通信总线传送到客户端桩。
⑧ 客户端桩将调用结果解组并返回给客户程序,客户程序得到调用结果。
第 5 题
阅读以下关于软件架构风格的说明,在答题纸上回答问题1和问题2。
【说明】
某软件公司为其新推出的字处理软件设计了一种脚本语言,专门用于开发该字处理软件的附加功能插件。为了提高该语言的编程效率,公司组织软件工具开发部门为脚本语言研制一套集成开发环境。软件工具开发部门根据字处理软件的特点,对集成开发环境进行了需求分析,总结出以下3项核心需求:
(1)集成开发环境需要提供对脚本语言的编辑、语法检查、解释、执行和调试等功能的支持,并要实现各种功能的灵活组合、配置与替换。
(2)集成开发环境需要提供一组可视化的编程界面,用户通过对界面元素拖拽和代码填充的方式就可以完成功能插件核心业务流程的编写与组织。
(3)在代码调试功能方面,集成开发环境需要实现在脚本语言编辑界面中的代码自动定位功能。具体来说,在调试过程中,编辑界面需要响应调试断点命中事件,并自动跳转到当前断点处所对应的代码。
针对上述需求,软件工具开发部门对集成开发环境的架构进行分析与设计,王工认为该集成开发环境应该采用管道-过滤器的架构风格实现,李工则认为该集成开发环境应该采用以数据存储为中心的架构风格来实现。公司组织专家对王工和李工的方案进行了评审,最终采用了李工的方案。
【问题1】(12分)
请用200字以内的文字解释什么是软件架构风格,并从集成开发环境与用户的交互方式、集成开发环境的扩展性、集成开发环境的数据管理三个方面说明为什么最终采用了李工的设计方案。
【问题2】(13分)
在对软件系统架构进行设计时,要对架构需求进行分析,针对特定需求选择最为合适的架构风格,因此实际的软件系统通常会混合多种软件架构风格。请对核心需求进行分析,说明为了满足需求(2)和(3),分别应采用何种架构风格,并概要说明采用相应架构风格后的架构设计过程。
答案与解析
- 试题难度:较难
- 知识点:案例分析>软件架构风格与架构设计
- 试题答案:
【问题1】
软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。
从集成开发环境与用户的交互方式看,用户通常采用交互式的方式对脚本语言进行编辑、解释执行与调试。在这种情况下,采用以数据存储为中心的架构风格能够很好地支持交互式数据处理,而管道-过滤器架构风格则对用户的交互式数据处理支持有限。
从集成开发环境的扩展性来看,系统核心需求要求实现各种编辑、语法检查、解释执行等多种功能的灵活组织、配置与替换。在这种情况下,采用以数据存储为中心的架构风格,以数据格式解耦各种功能之间的依赖关系,并可以灵活定义功能之间的逻辑顺序。管道-过滤器架构风格同样以数据格式解耦数据处理过程之间的依赖关系,但其在数据处理逻辑关系的灵活定义方面较差。
从集成开发环境的数据管理来看,集成开发环境需要支持脚本语言、语法树(用于检查语法错误)、可视化模型、调试信息等多种数据类型,并需要支持数据格式的转换。以数据存储为中心的架构将数据存储在统一的中心存储器中,中心存储器能够表示多种数据格式,并能够为数据格式转换提供各种支持。管道-过滤器架构风格通常只能支持有限度的数据格式,并且在数据格式转换方面的灵活性较差。
【问题2】
为了满足需求(2),应该采用解释器架构风格。具体来说,需要:① 为可视化编程元素及其拖拽关系定义某种语言,并描述其语法与语义;② 编写解释器对该语言进行解释;③ 生成对应的脚本语言程序。
为了满足需求(3),应该采用隐式调用架构风格。具体来说,首先需要定义“断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。集成开发环境维护一个事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表中的一个记录项。在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调试代码的自动定位。 - 试题解析:
本题主要考查考生对软件架构风格的理解与掌握,特别是针对实际应用问题,如何采用基于软件架构风格的系统软件架构设计。软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。
【问题1】
本问题主要考查设计方案的比较与选型。题干明确指出从集成开发环境与用户的交互方式、集成开发环境的扩展性、集成开发环境的数据管理三个方面对两种方案进行比较,并说明选用李工方案的原因。
从集成开发环境与用户的交互方式看,根据题干描述,用户通常采用交互式的方式对脚本语言进行编辑、解释执行与调试。在这种情况下,采用以数据存储为中心的架构风格能够很好地支持交互式数据处理,而管道-过滤器架构风格则对用户的交互式数据处理支持有限。
从集成开发环境的扩展性来看,根据题干描述,要求实现各种编辑、语法检查、解释执行等多种功能的灵活组织、配置与替换。在这种情况下,采用以数据存储为中心的架构风格,以数据格式解耦各种功能之间的依赖关系,并可以灵活定义功能之间的逻辑顺序。管道-过滤器架构风格同样以数据格式解耦数据处理过程之间的依赖关系,但其在数据处理逻辑关系的灵活定义方面较差。
从集成开发环境的数据管理来看,集成开发环境需要支持脚本语言、语法树(用于检查语法错误)、可视化模型、调试信息等多种数据类型,并需要支持数据格式的转换。以数据存储为中心的架构将数据存储在统一的中心存储器中,中心存储器能够表示多种数据格式,并能够为数据格式转换提供各种支持。管道-过滤器架构风格通常只能支持有限度的数据格式,并且在数据格式转换方面的灵活性较差。
考生在回答上述问题时,不能仅仅列举教科书中对数据存储为中心的架构风格和管道-过滤器架构风格的特点描述,必须紧紧围绕题干对系统要求的描述,将系统要求与架构风格特点结合起来进行回答。【问题2】
本问题主要考查考生如何根据应用要求选择合适的架构风格。
需求(2)要求“集成开发环境需要提供一组可视化的编程界面,用户通过对界面元素拖拽和代码填充的方式就可以完成功能插件核心业务流程的编写与组织”,这是一个对可视化开发过程的典型描述,而可视化开发的核心是如何定义并解释可视化编程语言,其核心应该是解释器架构风格。因此针对需求(2),应该采用解释器架构风格。具体来说,需要:① 为可视化编程元素及其拖拽关系定义某种语言,并描述其语法与语义;② 编写解释器对该语言进行解释;③ 生成对应的脚本语言程序。
需求(3)要求“在代码调试功能方面,集成开发环境需要实现在脚本语言编辑界面中的代码自动定位功能。具体来说,在调试过程中,编辑界面需要响应调试断点命中事件,并自动跳转到当前断点处所对应的代码。”从描述中可以看出,这是一个具有“事件触发”能力的功能描述,即由“断点命中”事件触发事先定义的“代码自动定位”功能。可以看出,这样的需求采用隐式调用架构风格最为恰当。具体来说,首先需要定义“断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。集成开发环境维护一个事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表中的一个记录项。在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调试代码的自动定位。