2017年系统架构师案例分析的试题解析,

案例分析题考试,是系统架构师考试的必做题,一般是11月第一周的周六下午的第一场考试,满分75分,是三场考试中最好复习,最好拿分的一场考试!

首先要知道以下几点:

案例分析题一共5道题,第1题必做,后面4选2。后面四题必有一道嵌入式题,非嵌入式专业的请直接放弃。所有实际上是3选2。考试时间90分钟,基本上每道题平均30分钟,时间还是很紧的。答题时,写字一定要清晰,答题内容关键要切中要点,在时间允许的范围内,尽可能多写点。说不定,就答中关键点了。但是如果自己知道已经答中要点了,就不要多写废话了,节约时间。

构架师

01试题一

某单位为了建设健全的公路桥梁养护管理档案,拟开发一套公路桥梁在线管理系统。在系统的需求分析与架构设计阶段,用户提出的需求、质量属性描述和架构特性如下:(a)系统用户分为高级管理员、数据管理员和数据维护员等三类;(安全性、性能)(b)系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测与防御;(安全性)(c)正常负载情况下,系统必须在0.5秒内对用户的查询请求进行响应;(性能)(d)对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计;(性能)(e)系统的用户名不能为中文,要求必须以字母开头,长度不少于5个字符;(性能,安全性)(f)更改系统加密的级别将对安全性和性能产生影响;(可修改性,性能)(g)网络失效后,系统需要在10秒内发现错误并启用备用系统;(可用性)(h)查询过程中涉及到的桥梁与公路的实时状态视频传输必须保证画面具有*的分辨率,40帧/秒的速率;(性能)(i)在系统升级时,必须保证在10人月内可添加一个新的消息处理中间件;(可修改)(j)系统主站点断电后,必须在3秒内将请求重定向到备用站点;(可用性)(k)如果每秒钟用户查询请求的数量是10个,处理单个请求的时间为30毫秒,则系统应保证在1秒内完成用户的查询请求;(性能)(l)对桥梁信息数据库的所有操作都必须进行完整记录;(安全性)(m)更改系统的Web界面接口必须在4人周内完成;(可修改性)(n)如果养护报告生成业务逻辑的描述尚未达成共识,可能导致部分业务功能模块规则的矛盾,影响系统的可修改性(可修改性)(O)系统必须提供远程调试接口,并支持系统的远程调试。(可测试)在对系统需求,质量属性描述和架构特性进行分析的基础上,系统的架构师给出了三个候选的架构设计方案,公司目前正在组织系统开发的相关人员对系统架构进行评估。(12分)在架构评估过程中,质量属性效用树(utilitytree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入图1-1中(1)、(2)空白处;并选择题干描述的(a)~(o),填入(3)~(6)空白处,完成该系统的效用树。

答案及见上图解析

解析:

ATAM是在SAAM基础上发展起来的基于场景的分析方法,主要针对性能、可用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评估和折中,生成质量属性效用树(GenerateUtilityTree),目的是通过建立一个效用树来确定、区分优先级并细化最重要的质量属性目标。而效用树是一种自上而下的工具:

用于描述“驱动”属性的特定要求,选择最重要的质量目标作为高级节点(通常是性能、可修改性、安全性和可用性)场景是效用树的末端输出:特定质量属性要求的特征化和优先化。

02试题二

某软件企业受该省教育部门委托建设高校数字化教育教学资源共享平台,实现以众筹众创的方式组织省内普通高校联合开展教育教学资源内容建设,实现全省优质教学资源整合和共享。该资源共享平台的主要功能模块包括:(1)统一身份认证模块:提供统一的认证入口,为平台其他核心业务模块提供用户管理、身份认证、权限分级和单点登录等功能;(2)共享资源管理模块:提供教学资源申报流程服务,包括了资源申报、分类定制、资料上传、资源审核和资源发布等功能;(3)共享资源展示模块:提供教育教学共享资源的展示服务,包括资源导航、视频点播、资源检索、分类展示、资源评价和推荐等功能;(4)资源元模型管理模块:依据资源类型提供共享资源的描述属性、内容属性和展示属性,包括共享资源统一标准和规范、资源加工和在线编辑工具、数字水印和模板定制等功能;(5)系统综合管理模块:提供系统管理和维护服务,包括系统配置、数据备份恢复、资源导入导出和统计分析等功能。项目组经过分析和讨论,决定采用基于JavaEE的MVC模式设计资源共享平台的软件架构,如图2-1所示。

图2-1资源共享平台软件架构

(9分)MVC架构中包含哪三种元素,它们的作用分别是什么?请根据图2-1所示架构将JavaEE中JSP、Servlet、Service、JavaBean、DAO五种构件分别填入空(1)~(5)所示位置。

资源共享平台软件架构答案

(6分)项目组架构师王工提出在图2-1所示架构设计中加入EJB构件,采用企业级JavaEE架构开发资源共享平台。请说明EJB构件中的Bean(构件)分为哪三种类型,每种类型Bean的职责是什么。

EJB中的Bean分三种类型:SessionBean、EntityBeans和Message-DrivenBean。

SessionBean的职责是:维护一个短暂的会话EntityBeans的职责是:维护一行持久稳固的数据Message-DrivenBean的职责是:异步接受消息(10分)如果采用王工提出的企业JavaEE架构,请说明下列(a)-(e)所给出的业务功能构件中,有状态和无状态构件分别包括哪些。(a)IdentificationBean(身份认证构件)(b)ResPublishBean(资源发布构件)(c)ResRetrievalBean(资源检索构件)(d)OnlineEditBean(在线编辑构件)(e)StatisticsBean(统计分析构件)

有状态:(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试题三

随着人工智能技术的发展,工业机器人已成为当前工业界的热点研究对象。某宇航设备公司为了扩大业务范围,决策层研究决定准备开展工业机器人研制新业务。公司将论证工作交给了软件架构师王工,王工经过分析和调研,从机器人市场现状、领域需求、组成及关键技术和风险分析等方面开展了综合论证。论证报告指出:首先,为了保障本公司机器人研制的持续性,应根据领域需求选择一种适应的设计架构;其次,为了规避风险,公司的研制工作不能从零开始,应该采用国际开源社区所提供机器人操作系统(RobotOperatingSystem,ROS)作为机器人开发的基本平台。在讨论会上,架构师李工提出不同意见,他认为公司针对宇航领域已开发了某款嵌入式实时操作系统,且被多种宇航装备使用,可靠性较高。因此应该采用现有架构体系作为机器人的开发平台。会上王工说明了机器人操作系统与该款操作系统的差别,要沿用需要进行改造,技入较大。经过激烈讨论,公司领导同意了王工采用ROS的意见。

(5分)王工拟采用的ROS具有分布式进程框架,以点对点设计以及服务和节点管理器方式,使得执行程序可以各自独立地设计,松散地、实时地组合起来。这些进程可以按照功能包和功能包集的方式分组,因而可以容易地分享和发布。请用字以内文字说明ROS与嵌入式实时操作系统的共同点,以及在实时性和任务通信方式两个方面的差异。

ROS与嵌入式实时操作系统的共同点:

系统微型化系统专用性强软硬件依赖性强系统资源受限ROS与嵌入式实时操作系统的差异:

实性性:ROS弱于嵌入式实时操作系统通信方式:ROS的通信方式较为丰富,嵌入式实时操作系统通信方式单一。(10分)ROS为应用程序间通信提供了主题(Topic)、服务(Service)和动作(Action)三种消息通信方式,每种通信方式都有其特点。请将以下给出的三类通信的主要特点填入表3-1中(1)-(5)的空白处,将答案写在答题纸上。(a)适合用于传输传感器信息〈数据流)主题(b)能够知道是否调用成功服务(c)一对多模式主题(d)有握手信号动作(e)服务执行完会有反馈服务(f)可以监控长时间执行的进程服务(g)较复杂动作(h)可能让系统过载(数据太多)主题(i)服务执行完之前,程序会等待服务(j)建立通信较慢动作(k)可能丢失数据主题

三类通信的主要特点

(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平台和SQLServer数据库进行开发,但在数据库访问方式上出现了争议。王工认为应该采用程序在线访问的方式访问数据库;而李工认为本企业内部程序员缺乏数据库开发经验,而且应用筒单,应该采用ORM(对象关系映射)方式。最终经过综合考虑,该软件企业采用了李工的建议。随着业务的发展,该电子商务网站逐渐发展成一个通用的电子商务平台,销售多家制造企业的产品,电子商务平台的功能也日益复杂。目前急需对该电子商务网站进行改造,以支持对多种异构数据库平台的数据访问,同时满足复杂的数据管理需求。该软件企业针对上述需求,对电子商务网站的架构进行了重新设计,新增加了数据访问层,同时采用工厂设计模式解决异构数据库访问的问题。新设计的系统架构如图4-1所示。

电子商务平台架构

(9分)请用字以内的文字分别说明数据库程序在线访问方式和ORM方式的优缺点,说明该软件企业采用ORM的原因。

数据库程序在线访问方式优点:

性能比直接SQL好可以处理复杂查询语句数据库程序在线访问方式缺点:

要求程序员懂SQL语句修改与维护相对困难ORM优点:

使用ORM可以大大降低学习和开发成本。程序员不用再写SQL来进行数据库操作。减少程序的代码量。降低由于SQL代码质量差而带来的影响。ORM缺点

不太容易处理复杂查询语句。性能较直接用SQL差。此场景之所以选择ORM,主要考虑的是企业内部程序员缺数据库开发经验,这样SQL语句质量有很大风险。同时学习成本很高。此外应用简单,也不用担心ORM对性能的影响。

(9分)请用字以内的文字说明新体系架构中增加数据访问层的原因。请根据图4-1所示,填写图中空白处(1)-(3)。

新体系架构及答案

增加数据访问层的原因:

(1)由于涉及到多种异构数据库平台,数据访问复杂性增加,不宜与业务逻辑混合在一起(2)数据管理变复杂之后,需要使用的代码量增加,分单独层次有利于让逻辑更清晰。(3)业务逻辑应以相同的方式应对异构的数据库,此时需要单独的数据访问层屏蔽差异性。(7分)应用程序设计中,数据库访问需要良好的封装性和可维护性,因此经常使用工厂设计模式来实现对数据库访问的封装。请解释工厂设计模式,并说明其优点和应用场景;请解释说明工厂模式在数据访问层中的应用

工厂模式:定义一个创建对象的接口,让实现这个接口的类来决定创建什么样的对象。工厂方法(FactoryMethod)、抽象工厂(AbstractFactory).

优点:

原来创建一个对象是自己new,而现在可以直接通过工厂将我需要的对象直接给我。使用工厂模式易于功能扩展,不对其他产线造成影响。遵循代码开闭原则,系统对扩展开放,对修改封闭,增加产品族,增加新的产品等级结构。封装性,对外只保留基类(所有产线共有特征类),具体实现交由工厂帮我选择。适用场景:

当为了实现解耦,将对象的创建和使用分开,即应用程序将对象的创建和初始化职责交给工厂对象。降低代码重复。如果对象B的创建过程比较复杂,并且很多地方都用到了,那么很可能出现很多重复的代码,通过统一将创建对象B的代码放到工厂里面统一管理,可以减少代码的重复率,同时也方便维护。相比于构造函数来说,复杂的初始化,会使得构造函数非常的复杂。当类本身有很多子类,并且经常性发生变化,由工厂统一的管理,有利于当业务发生变化之后的修改。可以针对Oracle、MySQL、SQLServer分别建立抽象工厂,若指定当前工厂为Oracle工厂,则创建出来的数据库连接,数据集等一系列的对象都是符合Oracle操作要求的,这样便于数据库之间的切换。

解析:

简单工厂模式

定义:由一个工厂对象决定创建哪一种产品/类实例描述:一种工厂负责创建同一类的对象,创建型工厂,不属于GOF23范畴举例:冠状病毒疫苗工厂负责创建不同型号的冠状病毒疫苗,如:新COVID-19疫苗,SARS-CoV疫苗等;Java中Calendar.getInstance(),LoggerFactory.getLogger(XXX.class)等。使用场景:创建对象较少的情况,拒绝万能工厂优点:只需要传入一个简单参数(或者不传),就可以获得需要的对象,掩盖创建细节缺点:职责划分太粗(职责重),增加新的产品需要修改创建逻辑,违背开闭原则不易于扩展更为复杂的产品结构工厂方法模式

定义:定义一个创建对象的接口,让实现这个接口的类来决定创建什么样的对象描述:对象的创建推迟到子类中进行,创建型设计模式,解决产品扩展问题举例:javalogback包里的的ILoggerFactory,不同的实现对应不同的产品使用场景:当创建对象需要大量重复的代码,后续要考虑新增产品优点:用户只需要关心产品对应的工厂,不需要关心创建细节扩展新产品符合开闭原则,提高系统的可扩展性缺点:工厂相关类个数容易过多,增加了代码结构的复杂度,增加了系统的抽象性和理解难度抽象工厂模式:

定义:提供一个创建一系列相关或相互依赖的对象的接口,无需指定他们具体的实现类描述:创建型设计模式举例:java数据库连接池的使用场景做一个统一登录和支付功能模块,对接阿里,


转载请注明:http://www.aierlanlan.com/rzgz/4916.html

  • 上一篇文章:
  •   
  • 下一篇文章: