系统架构设计师-案例分析题

218 阅读9分钟

什么是面向服务架构SOA?ESB在SOA中的作用和特点是什么

SOA是一种粗粒度、松耦合的服务架构,服务之间通过简单、精确定义的接口进行通信,不涉及底层编程接口和通信模型。SOA是一个组件模型,它将应用程序的不同功能单元(服务)通过服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言,这使得构件在各系统中的服务以一种统一和通用的方式进行交互。

ESB企业服务总线在SOA中的作用和特点:

  1. ESB是一种实现方式,ESB在面向服务的架构中起到总线作用,将各种服务进行连接和整合。
  2. 描述服务的元数据和服务注册管理。
  3. 在服务请求者和提供者之间传递数据,并且对这些数据进行转换,支持同步模式和异步模式。
  4. 具有发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力包括对安全的支持、服务质量保证、可管理性和负载均衡等。

2022年架构案例分析题

试题一

某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户规模不大,业务也相对简单,系统性能方面不做过多考虑

针对该系统的功能,李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对应的功能;王工则建议采用解释器(interpreters)架构风格,将折扣力度计算和用户筛选条件封装为独立的规则,通过解释规则实现对应的功能。请针对系统的主要功能,从折扣规则的可修改性、个性化折扣定义灵活性和系统性能三个方面对这两种架构风格进行比较与分析,并指出该系统更适合采用哪种架构风格

答:解释器

可修改性:

面向对象风格通过编写新的规则实现代码,并通过应用重启或热加载添加规则,可修改性稍差;解释器风格通过编写新的规则文件,并通过导入资源文件或外部配置添加规则,可修改性较好

灵活性:

面向对象风格通过策略模式定义规则对象,规则以程序逻辑实现,灵活性较差,解释器风格可灵活定义规则计算表达式,灵活性更好

性能:

面对对象风格以编译后代码计算规则,性能好;而虚拟机风格需要加载规则,解析规则,规则运算,再得出结果,性能较差。

从项目关注点来看,系统性能不做过多考虑,则王工建议的解释器风格较为合适;但根据项目需求来看,规则系统风格更加合适该项目

试题二

阅读以下关于软件系统设计与建模的叙述,在答题纸上回答问题1至问题3

煤炭生产是国民经济发展的主要领域之一,其煤矿的安全非常重要,某能源企业拟开发一套煤矿建设项目安全预警系统,以保护煤矿建设项目从业人员生命安全。本系统的主要功能包括如下(a)-(h)所述 (a)项目信息维护 (b)影响因素录入 (c)关联事故录入 (d)安全评价得分 (e)项目指标预警分析 (f)项目指标填报 (g)项目指标审核 (h)项目指标确认

问题1

王工根据煤矿建设项目安全预警系统的功能要求,设计完成了系统的数据流图,简要介绍数据流图在分层细化过程中遵循的数据平衡原则

层间平衡:数据流个数一致,方向一致 图内平衡:有输入无输出的黑洞,有输出无输入的奇迹,输入不足的灰洞

换言之

1、分层数据流图中的数据平衡原则

⽗类和⼦类之间的数据流必须保持⼀致,包括数量和内容上⼀致,或者上(下)层输出等于上(下)层的输出。

2、每张数据流图的数据平衡原则

加⼯的输⼊数据流和输出数据流要平衡,保证加⼯的输出数据流都有对应的输⼊和输出数据流,避免下面三种情况:

⿊洞:只进不出

奇迹:只出不进

灰洞:加⼯不出输出流

问题2

在结构化分析和设计过程中,数据流图和数据字典是常用的技术手段,请用200字以内的文字简要说明它们在软件需求分析和设计阶段的作用

在分析阶段:

数据流图用于界定系统上下文范围和建立业务流程的加工说明,自顶向下对系统进行功能分解;指明数据在系统内移动变换;描述功能及加工规约

数据字典用于建立业务概念有组织的集合,是模型核心库,有组织的系统相关数据元素列表,使涉众对模型中元素有共同的理解

在设计阶段:

结构化设计根据不同的数据流图类别分别做变换和事务映射来初始化系统结构图;根据数据字典中的数据存储描述来建立数据库存储设计

试题三

阅读以下关于web系统架构设计的叙述

某公司拟开发一套基于边缘计算的智能门禁系统,用于如园区、新零售、工业现场等存在来访、被访业务的场景。来访者在来访前,可以通过线上提前预约的方式将自己的个人信息记录在后台,被访者在系统中通过此请求后,来访者在到访时可以直接通过“刷脸”的方式通过门禁,无需做其他验证。此外,系统的管理员可对正在运行的门禁设备进行管理。

基于项目需求,该公司组建项目组,召开了项目讨论会。会上,张工根据业务需求并结合边缘计算的思想,提出本系统可由访客注册模块、模型训练模块、端侧识别模块与设备调度平台模块等四项功能组成,李工从技术层面提出该系统可使用Flask框架与SSM框架为基础来开发后台服务器,将开发好的系统通过Docker进行部署,并使用MQTT协议对Docker进行管理

问题1

MQTT协议在工业物联网中得到广泛的应用,请用300字以内的文字简要说明MQTT协议

MQTT协议是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景

问题2

请使用300字以内的文字,从数据通信、数据安全和系统性能等方面简要分析在传统云计算模型中引入边缘计算模型的优势

速度:如果使用边缘计算,则物联网设备将在边缘数据中心或本地处理数据。因此,数据无需传输回中央服务器,速度优势明显

安全:边缘计算将在不同的数据中心和设备之间分配数据处理工作。黑客无法通过攻击一台设备来影响整个网络

可扩展性:通过购买具有足够计算能力的设备来扩展边缘网络。企业无需为其数据需求建立自己的私有或集中式数据中心。

可靠性:所有的边缘数据中心和物联网设备都位于用户附近。因此,网络中断的可能性非常小

2010年架构案例分析题

某公司欲针对Linux操作系统开发一个KWIC(Keyword in Context)检索系统。该系统接收用户输入的查询关键字,根据字母顺序给出相关帮助文档并根据帮助内容进行循环滚动阅读

在对KWIC系统的架构进行设计时,公司的架构师王工提出采用共享数据的主程序-子程序的架构风格,而李工则主张采用管道-过滤器的架构风格。在架构评估会议上,大家从系统的算法变更、功能变更、数据表示变更和性能等方面对这两种方案进行评价,最终采用了李工的方案

问题1

在实际的软件项目开发中,采用恰当的架构风格是项目成功的保证。请用200字以内的文字说明什么是软件架构风格,并对主程序-子程序和管道-过滤器这两种架构风格的特点进行描述

软件架构风格是描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。

主程序-子程序架构风格中,所有的计算构件作为子程序协作工作,并由一个主程序顺序地调用这些子程序,构件通过共享存储区交换数据

管道-过滤器架构风格中,每个构件都有一组输入和输出,构件接受数据输入,经过内部处理,然后产生数据输出。这里的构件称为过滤器,构件之间的连接件称为数据流传输的管道