2017年系统架构师案例分析的试题解析 及精心总结应试技巧
案例分析题考试,是系统架构师考试的必做题,一般是11月第一周的周六下午的第一场考试,满分75分,是三场考试中最好复习,最好拿分的一场考试!
首先要知道以下几点:
案例分析题一共5道题,第1题必做,后面4选2。后面四题必有一道嵌入式题,非嵌入式专业的请直接放弃。所有实际上是3选2。考试时间90分钟,基本上每道题平均30分钟,时间还是很紧的。答题时,写字一定要清晰,答题内容关键要切中要点,在时间允许的范围内,尽可能多写点。说不定,就答中关键点了。但是如果自己知道已经答中要点了,就不要多写废话了,节约时间。
构架师
01试题一
某单位为了建设健全的公路桥梁养护管理档案,拟开发一套公路桥梁在线管理系统。在系统的需求分析与架构设计阶段,用户提出的需求、质量属性描述和架构特性如 下:(a) 系统用户分为高级管理员、数据管理员和数据维护员等三类;(安全性、性能)(b) 系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测与防御;(安全性)(c) 正常负载情况下,系统必须在 0.5 秒内对用户的查询请求进行响应;(性能)(d) 对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计;(性能)(e) 系统的用户名不能为中文,要求必须以字母开头,长度不少于5个字符;(性能,安全性)(f) 更改系统加密的级别将对安全性和性能产生影响;(可修改性,性能)(g) 网络失效后,系统需要在 10 秒内发现错误并启用备用系统;(可用性)(h) 查询过程中涉及到的桥梁与公路的实时状态视频传输必须保证画面具有1024*768的分辨率, 40帧 /秒的速率;(性能)(i) 在系统升级时,必须保证在 10 人月内可添加一个新的消息处理中间件;(可修改)(j) 系统主站点断电后,必须在 3 秒内将请求重定向到备用站点;(可用性)(k) 如果每秒钟用户查询请求的数量是 10 个,处理单个请求的时间为 30 毫秒,则系统应保证在 1秒内完成用户的查询请求;(性能)(l) 对桥梁信息数据库的所有操作都必须进行完整记录;(安全性)(m) 更改系统的 Web 界面接口必须在 4 人周内完成;(可修改性)(n) 如果"养护报告生成"业务逻辑的描述尚未达成共识,可能导致部分业务功能 模块规则的矛盾,影响系统的可修改性(可修改性)(O) 系统必须提供远程调试接口,并支持系统的远程调试。(可测试)在对系统需求,质量属性描述和架构特性进行分析的基础上,系统的架构师给出了三个候选的架构设计方案,公司目前正在组织系统开发的相关人员对系统架构进行评估。【问题1】 (12 分)在架构评估过程中,质量属性效用树 (utility tree) 是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入图 1-1 中 (1)、(2) 空白处;并选择题干描述的 (a)~(o) ,填入(3) ~(6) 空白处,完成该系统的效用树。
答案及见上图解析
解析:
ATAM是在SAAM基础上发展起来的基于场景的分析方法,主要针对性能、可用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评估和折中,生成质量属性效用树(Generate Utility Tree),目的是通过建立一个效用树来确定、区分优先级并细化最重要的质量属性目标。而效用树是一种自上而下的工具:
用于描述“驱动”属性的特定要求,选择最重要的质量目标作为高级节点(通常是性能、可修改性、安全性和可用性)场景是效用树的末端输出:特定质量属性要求的特征化和优先化。
02试题二
某软件企业受该省教育部门委托建设高校数字化教育教学资源共享平台,实现以众筹众创的方式组织省内普通高校联合开展教育教学资源内容建设,实现全省优质教学资源整合和共享。该资源共享平台的主要功能模块包括:(1)统一身份认证模块:提供统一的认证入口,为平台其他核心业务模块提供用户管理、身份认证、权限分级和单点登录等功能;(2) 共享资源管理模块:提供教学资源申报流程服务,包括了资源申报、分类定制、资料上传、资源审核和资源发布等功能;(3)共享资源展示模块:提供教育教学共享资源的展示服务,包括资源导航、视频点播、资源检索、分类展示、资源评价和推荐等功能;(4) 资源元模型管理模块:依据资源类型提供共享资源的描述属性、内容属性和展示属性,包括共享资源统一标准和规范、资源加工和在线编辑工具、数字水印和模板定制等功能;(5) 系统综合管理模块:提供系统管理和维护服务,包括系统配置、数据备份恢复、资源导入导出和统计分析等功能。项目组经过分析和讨论,决定采用基于Java EE的MVC 模式设计资源共享平台的软件架构,如图2-1所示。
图2-1 资源共享平台软件架构
【问题1】(9 分)MVC架构中包含哪三种元素,它们的作用分别是什么?请根据图 2-1 所示架构将JavaEE 中 JSP、Servlet、Service、JavaBean、DAO 五种构件分别填入空 (1)~(5) 所示位置。
资源共享平台软件架构答案
【问题2】(6 分)项目组架构师王工提出在图2-1所示架构设计中加入EJB构件,采用企业级JavaEE架构开发资源共享平台。请说明EJB构件中的Bean (构件)分为哪三种类型,每种类型Bean的职责是什么。
EJB中的Bean分三种类型:Session Bean、Entity Beans 和 Message-Driven Bean。
Session Bean的职责是:维护一个短暂的会话Entity Beans 的职责是:维护一行持久稳固的数据Message-Driven Bean的职责是:异步接受消息【问题3】 (10分)如果采用王工提出的企业 JavaEE架构,请说明下列(a)-(e) 所给出的业务功能构件中,有状态和无状态构件分别包括哪些。(a)Identification Bean (身份认证构件)(b)ResPublish Bean(资源发布构件)(c)ResRetrieval Bean(资源检索构件)(d)OnlineEdit Bean(在线编辑构件)(e)Statistics Bean(统计分析构件)
有状态:(a)、(d)无状态:(b)、(c)、(e)解析:
一,MVC架构包含:视图、控制器、模型
视图(View):视图是用户看到并与之交互的界面。(JSP、Servlet)控制器(Controller):控制器接受用户的输入并调用模型和视图去完成用户的需求。该部分是用户界面与Model的接口。一方面它解释来自于视图的输入;另一方面,它处理来自于模型的事件和模型逻辑执行的结果。(Service)模型(Model):模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。(JavaBean、DAO)二,应用的无状态和有状态
当用户登录时,将session或者token传给应用服务器管理,应用服务器里持有用户的上下文信息,这时应用服务器是有状态的 .
同样用户登陆时,我们将session或token存储在第三方的一些服务或者中间件上,比如存储在redis上。此时应用服务器不保存上下文信息,只负责对用户的每次请求进行处理,然后返回处理的结果即可,这时应用服务器是无状态的.
无状态和有状态的优缺点:
有状态
缺点:服务间数据需要同步 主从同步 副本同步等 扩容复杂 双机热备等 宕机容易丢失数据优点: 不需要额外的持久存储;通常,为低延时优化。无状态
优点:服务间数据不需要同步,扩容快速,热备冷备切换容易,容易水平扩展。缺点:需要额外的持久存储构建无状态:
将内存中的会话数据,如session,存放在第三方的一些服务或者中间件上,如使用redis做缓存将业务数据放在统一的数据库中,如mysql数据库,如果性能扛不住,可以进行系统拆分,功能拆分,读写拆分,aop拆分,模块拆分,使用分布式数据库对于文件,照片之类的数据,存放在统一的对象存储里面,通过CDN进行预加载对于非结构化数据,可以存在在统一的搜索引擎里面,例如solr
03试题三
随着人工智能技术的发展,工业机器人已成为当前工业界的热点研究对象。某宇航设备公司为了扩大业务范围,决策层研究决定准备开展工业机器人研制新业务。公司将论证工作交给了软件架构师王工,王工经过分析和调研,从机器人市场现状、领域需求、组成及关键技术和风险分析等方面开展了综合论证。论证报告指出:首先,为了保障本公司机器人研制的持续性,应根据领域需求选择一种适应的设计架构;其次,为了规避风险,公司的研制工作不能从零开始,应该采用国际开源社区所提供机器人操作系统(Robot Operating System ,ROS)作为机器人开发的基本平台。在讨论会上,架构师李工提出不同意见,他认为公司针对宇航领域已开发了某款嵌 入式实时操作系统,且被多种宇航装备使用,可靠性较高。因此应该采用现有架构体系作为机器人的开发平台。会上王工说明了机器人操作系统与该款操作系统的差别,要沿用需要进行改造,技入较大。经过激烈讨论,公司领导同意了王工采用 ROS的意见。
【问题1】(5分)王工拟采用的ROS具有分布式进程框架,以点对点设计以及服务和节点管理器方式, 使得执行程序可以各自独立地设计,松散地、实时地组合起来。这些进程可以按照功能包和功能包集的方式分组,因而可以容易地分享和发布。请用400字以内文字说明ROS与嵌入式实时操作系统的共同点,以及在实时性和任务通信方式两个方面的差异。
ROS与嵌入式实时操作系统的共同点:
系统微型化系统专用性强软硬件依赖性强系统资源受限ROS与嵌入式实时操作系统的差异:
实性性:ROS弱于嵌入式实时操作系统通信方式:ROS的通信方式较为丰富,嵌入式实时操作系统通信方式单一。【问题2】(10分)ROS为应用程序间通信提供了主题(Topic) 、服务 (Service)和动作 (Action) 三种消息通信方式,每种通信方式都有其特点。请将以下给出的三类通信的主要特点填入表3-1中(1)-(5) 的空白处,将答案写在答题纸上。(a) 适合用于传输传感器信息〈数据流) 主题(b) 能够知道是否调用成功 服务(c) 一对多模式 主题(d) 有握手信号 动作(e) 服务执行完会有反馈 服务(f) 可以监控长时间执行的进程 服务(g) 较复杂 动作(h) 可能让系统过载(数据太多) 主题(i) 服务执行完之前,程序会等待 服务(j) 建立通信较慢 动作(k) 可能丢失数据 主题
三类通信的主要特点
【问题3】(10分)ROS 的架构定义了ROS系统由多个各自独立的节点(组件〉组成,并且各个节点之间可以通过发布/订阅(Publish/Subscribe )消息模型进行通信。图 3-1给出一个简单机器人结构实例,请根据以下文字描述,补充图3-1 中(1)~(5) 处空白,将答案写在答题纸上。"机器人开始阶段,所有节点都要注册 (Registration) 到Master上,注册后,摄像头节点声明它要发布(Publish)一个叫做/image_data的消息。另外两个节点(图像处理处理节点和图像显示节点)声明它们需要订阅( Subscribe) 这个/image_data消息。因此, 一旦摄像头节点收到相机发送的数据(Data),就立即将数据/image_data直接发送到另外两个节点。
ROS 的架构通信流程及答案
04试题四
某制造企业为拓展网上销售业务,委托某软件企业开发一套电子商务网站。初期仅解决基本的网上销售、订单等功能需求。该软件企业很快决定基于.NET平台和SQL Server数据库进行开发,但在数据库访问方式上出现了争议。王工认为应该采用程序在线访问的方式访问数据库;而李工认为本企业内部程序员缺乏数据库开发经验,而且应用筒单,应该采用ORM (对象关系映射)方式。最终经过综合考虑,该软件企业采用了李工的建议。随着业务的发展,该电子商务网站逐渐发展成一个通用的电子商务平台,销售多家制造企业的产品,电子商务平台的功能也日益复杂。目前急需对该电子商务网站进行改造,以支持对多种异构数据库平台的数据访问,同时满足复杂的数据管理需求。该软件企业针对上述需求,对电子商务网站的架构进行了重新设计,新增加了数据访问层,同时采用工厂设计模式解决异构数据库访问的问题。新设计的系统架构如图 4-1 所示。
电子商务平台架构
【问题1】 (9分)请用300字以内的文字分别说明数据库程序在线访问方式和ORM方式的优缺点,说明该软件企业采用ORM的原因。
数据库程序在线访问方式优点:
性能比直接SQL好可以处理复杂查询语句数据库程序在线访问方式缺点:
要求程序员懂SQL语句修改与维护相对困难ORM优点:
使用ORM可以大大降低学习和开发成本。程序员不用再写SQL来进行数据库操作。减少程序的代码量。降低由于SQL代码质量差而带来的影响。ORM缺点
不太容易处理复杂查询语句。性能较直接用SQL差。此场景之所以选择ORM,主要考虑的是企业内部程序员缺数据库开发经验,这样SQL语句质量有很大风险。同时学习成本很高。此外应用简单,也不用担心ORM对性能的影响。
【问题2】(9分)请用100字以内的文字说明新体系架构中增加数据访问层的原因。请根据图4-1所示,填写图中空白处(1) - (3)。
新体系架构及答案
增加数据访问层的原因:
(1)由于涉及到多种异构数据库平台,数据访问复杂性增加,不宜与业务逻辑混合在一起(2)数据管理变复杂之后,需要使用的代码量增加,分单独层次有利于让逻辑更清晰。(3)业务逻辑应以相同的方式应对异构的数据库,此时需要单独的数据访问层屏蔽差异性。【问题3】(7分)应用程序设计中,数据库访问需要良好的封装性和可维护性,因此经常使用工厂设计模式来实现对数据库访问的封装。请解释工厂设计模式,并说明其优点和应用场景;请解释说明工厂模式在数据访问层中的应用
工厂模式:定义一个创建对象的接口,让实现这个接口的类来决定创建什么样的对象。 工厂方法(Factory Method)、抽象工厂(Abstract Factory).
优点:
原来创建一个对象是自己new,而现在可以直接通过工厂将我需要的对象直接给我。使用工厂模式易于功能扩展,不对其他产线造成影响。遵循代码开闭原则,系统对扩展开放,对修改封闭,增加产品族,增加新的产品等级结构。封装性,对外只保留基类(所有产线共有特征类),具体实现交由工厂帮我选择。适用场景:
当为了实现解耦,将对象的创建和使用分开,即应用程序将对象的创建和初始化职责交给工厂对象。降低代码重复。如果对象B的创建过程比较复杂,并且很多地方都用到了,那么很可能出现很多重复的代码,通过统一将创建对象B的代码放到工厂里面统一管理,可以减少代码的重复率,同时也方便维护。相比于构造函数来说,复杂的初始化,会使得构造函数非常的复杂。当类本身有很多子类,并且经常性发生变化,由工厂统一的管理,有利于当业务发生变化之后的修改。可以针对Oracle、MySQL、SQLServer分别建立抽象工厂,若指定当前工厂为Oracle工厂,则创建出来的数据库连接,数据集等一系列的对象都是符合Oracle操作要求的,这样便于数据库之间的切换。
解析:
简单工厂模式
定义:由一个工厂对象决定创建哪一种产品/类实例描述:一种工厂负责创建同一类的对象,创建型工厂,不属于GOF23范畴举例: 冠状病毒疫苗工厂负责创建不同型号的冠状病毒疫苗,如:新COVID-19疫苗,SARS-CoV疫苗等;Java中 Calendar.getInstance(),LoggerFactory.getLogger(XXX.class) 等。使用场景:创建对象较少的情况,拒绝万能工厂优点:只需要传入一个简单参数(或者不传),就可以获得需要的对象,掩盖创建细节缺点:职责划分太粗(职责重),增加新的产品需要修改创建逻辑,违背开闭原则不易于扩展更为复杂的产品结构工厂方法模式
定义:定义一个创建对象的接口,让实现这个接口的类来决定创建什么样的对象描述:对象的创建推迟到子类中进行,创建型设计模式,解决产品扩展问题举例:java logback包里的的ILoggerFactory,不同的实现对应不同的产品使用场景:当创建对象需要大量重复的代码,后续要考虑新增产品优点:用户只需要关心产品对应的工厂,不需要关心创建细节扩展新产品符合开闭原则,提高系统的可扩展性缺点:工厂相关类个数容易过多,增加了代码结构的复杂度,增加了系统的抽象性和理解难度抽象工厂模式:
定义:提供一个创建一系列相关或相互依赖的对象的接口,无需指定他们具体的实现类描述:创建型设计模式举例:java 数据库连接池的使用场景做一个统一登录和支付功能模块,对接阿里,微信等公众平台实现登录和支付操作,需要定义一个平台级别的抽象工厂类/接口,再分别实现阿里、微信等平台,再调用具体某一平台的的某一功能进行操作伪代码:TdPubPlatformFactory platformFactory = new AliPubPlatformFactory();platformFactory.getLoginPlatfrom().login();platformFactory.getPaymentPlatfrom().pay();优点:将一个系列的产品族统一到一起进行创建,具体的产品在应用层进行代码隔离,无需关心创建细节缺点:规定了所有可能被创建的产品集合,产品族中扩展新的产品比较困难,需要修改抽象工厂的接口。增加了系统的抽象性和理解难度,要是产品增加的不频繁(年级别),这种缺点还是可以接受的使用场景:应用层不依赖与产品类实例如何被创建、实现等细节强调的是一个系列的相关产品对象的创建,创建对应需要大量的重复代码提供一个产品类的库,所有不同系列产品以同样的接口来实现,达到与客户端(应用层)的解耦总结:
简单工厂:产品的工厂工厂方法:工厂的工厂抽象工厂:复杂产品的工厂
05试题五
电子商务企业因发展良好,客户量逐步增大,企业业务不断扩充,导致其原有的B2C商品交易平台己不能满足现有业务需求。因此,该企业委托某软件公司重新开发一套商品交易平台。该企业要求新平台应可适应客户从手机、平板设备、电脑等不同终端设备访问系统,同时满足电商定期开展"秒杀"、"限时促销"等活动的系统高并发访问量的需求。面对系统需求,软件公司召开项目组讨论会议,制定系统设计方案。讨论会议上,王工提出可以应用响应式Web设计满足客户从不同设备正确访问系统的需求。 同时,采用增加镜像站点、CDN 内容分发等方式解决高并发访问量带来的问题。李工在王工的提议上补充,仅仅依靠上述外网加速技术不能完全解决高用户并发访问问题,如果访问量持续增加,系统仍存在崩溃可能。李工提出应同时结合负载均衡、缓存服务器、Web应用服务器、分布式文件系统、分布式数据库等方法设计系统架构。经过项目组讨论,最终决定综合王王和李工的思路,完成新系统的架构设计。
【问题1】(5分)请用200字以内的文字描述什么是"响应式 Web 设计",并列举2个响应式Web设计的实现方式。
答案:
响应式web设计是指页面的设计与开发应当根据用户行为以及设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相应的响应和调整,由多方面组成,包括弹性网格和布局、图片、CSS media query的使用等,以提供用户可感知的、流畅的阅读和操作体验。
实现方式:
流式布局弹性布局加媒体查询【问题2】(16 分)综合王工和李工的提议,项目组完成了新商品交易平台的系统架构设计方案。新系统架构图如图5-1所示。请从选项 (a) - (j) 中为架构图中(1) - (8) 处空白选择相应的内容,补充支持高并发的Web应用系统架构设计图。
答案
【问题3】(4 分)根据李工的提议,新的B2C商品交易平台引入了主从复制机制。请针对B2C商品交易平台的特点,简要叙述引入该机制的好处。
答案:
提升性能交易平台要求高并发,主从复制方式一主多从,不同的用户请求可以从不同的从数据库读取数据,提高并发度。
可扩展性更优如果采用单台数据库服务器,则访问量持续增加时,数据库瓶颈暴露,且无法迅速解决问题。而主从结构可以快速增加从服务器数量,做到多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
提升可用性一主多从,做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
读写分离读写分离,相当于负载均衡,使数据库能支撑更大的并发。在交易平台中,由于部分交易sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,交易查询使用slave,那么交易sql将不会造成前台锁,保证了前台速度。
提升数据安全性系统中的数据冗余存放多份,不会因为某台机器硬件故障而导致数据丢失。
06案例分析题技巧总结
案例分析题,把握好三种类型:
知识概念记忆型,这种要靠平时积累了。一定要多背些知识点,后面我会总结一些常见的知识点,所以这种题要是记不得那就没办法了。(上面第一题就是)方案对比型,一般会列出两种方案,要么让你对比区别或者优劣势,要么是明确指出哪一种方案更优后让你分析。这种题主要看平时积累了,一般会考时下流行的新技能点。分析型。这种题目,要利用已有的知识,分析题干的内容,所以关键也是在平时积累,要有一定的分析能力。才能分析提取出题干中的内容,从而回答正确。总结,无论哪种类型,其实本质都要平时多积累知识点,真正掌握知识点,不仅能记住,还能理解掌握,这样碰到类似的题,才能举一反三。