试题一(共25分) :
阅读以下关于软件架构设计与评估的叙述,在答题纸上回答问题1和问题2。
【说明】
某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户规模不大,业务也相对简单,系统性能方面不做过多考虑,新系统除了保持现有的四级固定会员制度外,还需要根据用户的消费金额、偏好、重复性等相关特征动态调整商品的折扣力度,并支持在特定的活动周期内主动筛选与活动主题高度相关的用户集合,提供个性化的打折促销活动。
在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:
(a)管理员能够在页面上灵活设置折扣力度规则和促销活动逻辑,设置后即可生效;
(b)系统应该具备完整的安全防护措施,支持对恶意攻击行为进行检测与报警;
©在正常负载情况下,系统应在0.3秒内对用户的界面操作请求进行响应;
(d)用户名是系统唯一标识,要求以字母开头,由数字和字母组合而成,长度不少于6个字符。
(e)在正常负载情况下,用户支付商品费用后在3秒内确认订单支付信息;
(f)系统主站点电力中断后,应在5秒内将请求重定向到备用站点;
(g)系统支持横向存储扩展,要求在2人天内完成所有的扩展与测试工作;
(h)系统宕机后,需要在10秒内感知错误,并自动启动热备份系统;
(i)系统需要内置接口函数,支持开发团队进行功能调试与系统诊断;
(j)系统需要为所有的用户操作行为进行详细记录,便于后期查阅与审计;
(k)支持对系统的外观进行调整和配置,调整工作需要在4人天内完成。
在对系统需求、质量属性描述和架构特性进行分析的基础上,系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对系统架构进行评估。
【问题1】(12分)
在架构评估过程中,质量属性效用树 (utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请将合适的质量属性名称填入图1-1中( )、( )空白处,并选择题干描述的(a)~(k)填入( )~( )空白处,完成该系统的效用树。
图1-1会员与促销管理系统效用树
【问题2】(13分)
针对该系统的功能,李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对应的功能:王工则建议采用解释器(interpreters) 架构风格,将折扣力度计算和用户筛选条件封装为独立的规则,通过解释规则实现对应的功能。请针对系统的主要功能,从折扣规则的可能改性、个性化折扣定义灵活性和系统性能三个方面对这两种架构风格进行比较与分析,并指出该系统更适合采用哪种架构风格。
参考:
【问题1】(1)安全性(2)可修改性(3)e(4)j(5)h(6)k
【问题2】折扣规则的可修改性:解释器风格折扣规则是独立的语法规则,由解释器可对变化的规则进行解析,修改更容易。而面向对象相对固定,有变化需要处改具体类。个性化折扣定义灵活性:解释器强于面向对象,解释器可以根据用户灵活解释执行规则。系统性能:面向对象优于解释器。面向对象的实现相对固定。而解释器是运行期动态绑定。
试题二(共25分)
阅读以下关于软件系统设计与建模的叙述,在答题纸上回答问题1至问题3。
【说明】
煤炭生产是国民经济发展的主要领域之一,其煤矿的安全非常重要。某能源企业拟
开发一套煤矿建设项目安全预警系统,以保护煤矿建设项目从业人员生命安全。本系统
的主要功能包括如下(a)~(h)所述。(a)项目信息维护
(b)影响因素录入
©关联事故录入
(d)安全评价得分
(e)项目指标预警分析
(f)项目指标填报
(g)项目指标审核
(h)项目指标确认
【问题1】(9分)王工根据煤矿建设项目安全预警系统的功能要求,设计完成了系统的数据流图,如
图2-1所示。请使用题干中描述的功能(a)~(h),补充完善空( )~( )处的内容,
并简要介绍数据流图在分层细化过程中遵循的数据平衡原则。
图2-1 煤矿建设项目安全预警系统数据流图
【问题2】(9分)
请根据【问题1】中数据流图表示的相关信息,补充完善煤矿建设项目安全预警系统总体ER图(见图2-2)中实体( )-( )的具体内容,将正确答案填在答题纸上。
图2-2 煤矿建设项目安全预警系统总体E-R图
【问题3】(7分)
在结构化分析和设计过程中,数据流图和数据字典是常用的技术手段,请用200字
以内的文字简要说明它们在软件需求分析和设计阶段的作用。
参考
【问题1】
f g h d b e
【问题1】 (9分)
(1)f (2)g (3)h (4)d (5)b (6)e
分层细化的数据平衡原则:
1.父图与子图的平衡:父图与子图之间平衡是指任何一张DFD子图边界上的输入/输出数据流必须与其父图中对应加工的输入/输出数据流保持一致。
2.数据守恒:一个加工的所有输出数据流中的数据必须能从该加工的输入数据流中直接获得或能通过该加工的处理而产生。
【问题2】 (9分)
(1)项目管理员 (2)项目经理 (3)项目指标数据
(4)项目信息 (5)指标参数 (6)事故及影响因素参数 (4~6可互换)
【问题3】
试题三(25分):
阅读以下关于嵌入式系统故障检测和诊断的相关描述,在答题纸上回答问题1至问题3
【说明】
系统的故障检测和诊断是宇航系统提高装备可靠性的主要技术之一,随着装备信息化的发展,分布式架构下的资源配置越来越多、资源布局也越来越分散,这对系统的故障检测和诊断方法提出了新的要求,为了适应宇航装备的分布式综合化电子系统的发展,解决由于系统资源部署的分散性,造成系统状态的综合和监控困难的问题,公司领导安排张工进行研究。张工经过分析、调研提出了针对分布式综合化电子系统架构的故障检测和诊断的方案。
【问题1】(8分)张工提出:宇航装备的软件架构可采用四层的层次化体系结构,即模块支持层、操作系统层、分布式中间件层和功能应用层。为了有效、方便地实现分布式系统的故障检测和诊断能力,方案建议将系统的故障检测和诊断能力构建在分布式中间件内,通过使用心跳或者超时探测技术来实现故障检测器。请用300字以内的文字分别说明心跳检测和超时探测技术的基本原理及特点。
【问题2】(8分)
张工针对分布式综合化电子系统的架构特征,给出了初步设计方案,指出每个节点的故障监测与诊断器主要负责监控系统中所有的故障信息,并将故障信息进行综合分析判断,使用故障诊断器分析出故障原因,给出解决方案和措施。系统可以给模块的每个处理机器核配置核状态监控器、给每个分区配置分区状态监控器、给每个模块配置模块状态监控器、给系统配置系统状态监控器,如图3-1所示。
图3-1系统故障检测和诊断原理请根据下面给出的分布式综合化电子系统可使产生的故障(a)-(h),判断这些故障分别属于哪类监控器检测的范围,完善表3-1的( )一(
)的空白。(a)应用程序除零
(b)看门狗故障
©任务超时
(d)网络诊断故障
(e)BIT检测故障
(f)分区堆栈溢出
(g)操作系统异常
(h)模块掉电
张工在方案中指出,本系统的故障诊断采用故障诊断器实现,它可综合多种故障信息和系统状态,依据智能决策数据库提供的决策策略判定出故障类型和处理方法。智能决策数据库中的策略可以对故障开展定性或定量分析,通常,在定量分析中,普遍采用基于解析模型的方法和数据驱动的方法,张工在方案中提出该系统定量分析时应采用基于解析模型的方法。但是此提议受到王工的反对,王工指出采用数据驱动的方法更适合分布式综合化电子系统架构的设计。请用300字以内的文字,说明数据驱动方法的基本概念,以及王工提出采用此方法的理由。
【问题1】(8分)
心跳检测是一种通过定期发送“心跳”信号来检查节点是否正常的机制。每个节点在固定时间间隔内向集群内的其他节点发送心跳消息,如果某个节点在一段时间内没有收到其他节点的回应,就认为该节点已经故障。但是,心跳检测可能会在高负载或网络延迟的情况下失效,造成误报或漏报。
超时探测技术则是通过超时等待的方式来检测故障。系统为每个操作设定一个超时时间,如果在超时时间内没有得到预期的结果,就认为该操作失败,从而检测到故障。这种技术比较精确,但是可能因为网络延迟或系统负载等原因造成误报。
扩展: 心跳检测和超时探测技术都是用于分布式系统中的故障检测和诊断技术,它们有以下相同点和不同点:
相同点:
- 都是为了实现分布式系统的故障检测和诊断能力而设计的。
- 都可以检测到节点的故障或异常情况。
不同点:
- 工作方式不同:心跳检测是通过节点间定期发送心跳信号来检查各个节点的状态,而超时探测技术是在执行某些操作时,为每个操作设定一个超时时间,以检测操作结果的异常。
- 检测的故障类型不同:心跳检测主要检测节点的可用性和连通性,而超时探测技术主要检测操作的正确性和响应时间。
- 适用场景不同:心跳检测适用于实时性要求较高的分布式系统,可以及时发现节点故障并采取相应措施,而超时探测技术适用于对操作结果进行检测的场景,如数据库事务或网络请求等。
- 误报和漏报情况不同:在网络延迟或系统负载较大的情况下,心跳检测可能会产生误报或漏报,而超时探测技术则相对较为稳定,但也可能因为超时时间设置不当而产生误报。
【问题2】(8分)
(1) (2) b、e (3) f (4) (5) (6) a、d、h (7)(8) g、c
【问题3】(9分)
通过对系统运行过程中的监测数据进行分析,从而在无精准系统数学模型情况下,对系统进行故障诊断,具体方法包括机器学习、统计分析法和信号分析法
因为宇航系统是一个非常复杂的系统,如果采用张工的基于解析模型的方法,这一类方法需要建立再精准数学模型的基础上来进行故障诊断。但是对于宇航系统这种非常复杂的系统难以精确建模。所以王工提出了数据驱动的方法,不需要精准系统数学模型。
扩展: 模型驱动和数据驱动在系统设计中有不同的应用方式和特点。
模型驱动的方法是根据业务需求建立业务对象模型(BOM),包括业务显示模型和持久对象模型,通过模型结构处理数据并得出预测结果。这种方法主要应用于业务型应用系统的建设,适合处理复杂的业务逻辑,并通过对录入或显示的信息进行业务逻辑的处理得出预测结果。模型驱动的方法增加了系统的复杂度,要求系统设计者对业务逻辑的理解程度较高,还要求对系统架构的约束有一定的掌握。
数据驱动的方法则是根据大量数据的输入训练模型,不需要手动设计模型的结构,模型会自动学习数据中的规律和模式,最终得出预测结果。这种方法主要应用于数据型应用系统的建设,适合处理大量信息数据的录入、显示和查询等基本过程,还可以通过数据模型的建立来完成系统的实现。数据驱动的方法相对简单快速,但是要求有足够的数据量和一定的数据质量,如果数据不足或数据质量不高,可能会影响模型的训练效果和预测结果的准确性。
试题四(25分):
阅读以下关于数据库缓存的叙述,在答题纸上回答问题1至问题3
【说明】
某大型电商平台建立了一个在线 B2B
商店系统,并在全国多地建设了货物仓储中心,通过提前备货的方式来提高货物的运送效率。但是在运营过程中,发现会出现很多跨仓储中心调货从而延误货物运送的情况。为此,该企业计划新建立一个全国仓储货物管理系统,在实现仓储中心常规管理功能之外,通过对在线
B2B商店系统中订单信息进行及时的分析和挖掘,并通过大数据分析预测各地仓储中心中各类货物的配置数量,从而提高运送效率,降低成本。当用户通过在线
B2B商店系统选购货物时,全国仓储货物管理系统会通过该用户所在地址、商品类别以及仓储中心的货物信息和地址,实时为用户订单反馈货物起运地(某仓储中心)并预测送达时间。反馈送达时间的响应时间应小于1秒。为满足反馈送达时间功能的性能要求,设计团队建议在全国仓储货物管理系统中采用数据缓存集群的方式,将仓储中心基本信息、商品类别以及库存数量放置在内存的缓存中,而仓储中心的其它商品信息则存储在数据库系统。
【问题1】(9分)设计团队在讨论缓存和数据库的数据一致性问题时,李工建议采取数据实时同步更新方案,而张工则建议采用数据异步准实时更新方案。
请用200字以内的文字,简要介绍两种方案的基本思路,说明全国仓储货物管理系统应该来用哪种方案,并说明采取该方案的原因。
【问题2】(9分)
随着业务的发展,仓储中心以及商品的数量日益增加,需要对集群部署多个缓存节点,提高缓存的处理能力。李工建议采用缓存分片方法,把缓存的数据拆分到多个节点分别存储,减轻单个缓存节点的访问压力,达到分流效果。
缓存分片方法常用的有哈希算法和一致性哈希算法,李工建议采用一致性哈希算法来进行分片。请用200字以内的文字简要说明两种算法的基本原理,并说明李工采用一致性哈希算法的原因。
【问题3】(7分)
全国仓储货物管理系统开发完成,在运营一段时间后,系统维护人员发现大量黑客故意发起非法的商品送达时间查询请求,造成了缓存击穿,张工建议尽快采用布隆过滤器方法解决。请用200字以内的文字解释布隆过滤器的工作原理和优缺点。
【问题1】(9分)
实时方案:强一致性,更新数据库之后主动淘汰缓存,读请求更新缓存,为避免缓存雪崩,更新缓存的过程需要进行同步控制,同一时间只允许一个请求访问数据库。
异步准实时更新方案:准一致性,当数据库数据更新时,异步更新缓存数据,采用多线程技术或MQ(消息队列)逐步完成数据的更新。
应该采用异步准实时更新方案,因为题目中对性能有严格要求,要求在1秒内完成,而且多数请求是读操作,写操作少。实时同步方案最大的问题在于同步并发时的性能不可控。
【问题2】(9分)
哈希分片:对缓存的 Key 做哈希计算,然后对总的缓存节点个数取余,得出的结果就是要存入缓存节点的序号。这种算法的优点就是简单易,缺点是当增加或者减少缓存节点时,缓存总的节点个数变化造成计算出来的节点发生变化,从而造成缓存失效不可用。
一致性哈希分片:将存储节点和数据都映射到一个0~232首尾相连的虚拟哈希环上,存储节点可以根据IP 地址进行哈希,数据通常通过顺时针方向寻找的方式,来确定自己所属的存储节点。这种算法的优点是增加和删除节点时,只有少量的 Key 会漂移到其它节点上,而大部分的 Key 命中的节点还是会保持不变,从而可以保证命中率不会大幅下降。缺点是缓存节点在圆环上分布不平均,会造成部分缓存节点的压力较大。
采用一致性哈希算法的原因:一致性哈希分片的方式在扩充缓存结点时,只需要对少量数据的存储位置进行更新,而哈希分片需要对几乎所有数据的存储位置进行更新。
扩展:
哈希分片主要有以下三种:
1、Round Robin哈希分片
Round Robin哈希分片是一种非常简单的数据分片方法,它通过一个哈希函数将数据的主键哈希成一个数字,然后将这个数字对物理机的数量取模,得到的结果就是数据应该存储在哪个物理机上。比如有3台物理机,一个主键为1的数据会被存储在编号为1的物理机上,一个主键为2的数据会被存储在编号为2的物理机上,以此类推。
这种分片方式的优点是实现起来非常简单,但是当物理机的数量发生变化时,所有数据的映射关系都需要重新计算,因此缺乏灵活性。
2、虚拟桶哈希分片
虚拟桶哈希分片也是通过哈希函数将数据映射到桶中,每个桶对应一个存储位置。与Round Robin不同,虚拟桶是逻辑上的概念,可以映射到多个物理机上。
这种分片方式通过引入虚拟桶层,将所有数据存储在对应的虚拟桶中,每个虚拟桶可以包含多条数据。当物理机数量增加或减少时,只需要改变虚拟桶和物理机的映射关系,而不需要重新计算所有数据的映射关系。
3、一致性哈希
一致性哈希是一种特殊的哈希分片方法,它通过哈希函数将数据映射到环形空间中,每个位置对应一个物理机。一致性哈希最大的特点是当物理机数量增加或减少时,只需要重新hash很小一部分数据。
这种分片方式在处理数据迁移、扩容、缩容等问题时非常有优势。比如当增加一台新的物理机时,只需要将环形空间中的一小段数据重新hash并存储到新的物理机上,而不需要对所有的数据进行重新hash。这样可以大大减少数据迁移的开销,提高系统的性能和可用性。
【问题3】(7分)
布隆过滤器通过一个很长的二进制向量和一系列随机映射函数来记录与识别某个数据是否在一个集合中。如果数据不在集合中,能被识别出来,不需要到数据库中进行查找,所以能将数据库查询返回值为空的查询过滤掉。
优点:占用内存小,查询效率高,不需要存储元素本身,在某些对保密要求比较严格的场合有很大优势。
缺点:有一定的误判率,不能100%准确判断元素是否在集合中,不能获取元素本身,一般情况下不能从布隆过滤器中删除元素。
试题五(25分):
阅读以下关于Web系统架构设计的叙述,在答题纸上回答问题1至问题3
【说明】
某公司拟开发一套基于边缘计算的智能门禁系统,用于如园区、新零售、工业现场等存在来访、被访业务的场景。来访者在来访前,可以通过线上提前预约的方式将自己的个人信息记录在后台,被访者在系统中通过此请求后,来访者在到访时可以直接通过“刷脸”的方式通过门禁,无需做其他验证。此外,系统的管理员可对正在运行的门禁设备进行管理。
基于项目需求,该公司组建项目组,召开了项目讨论会。会上,张工根据业务需求并结合边缘计算的思想,提出本系统可由访客注册模块、模型训练模块、端侧识别模块与设备调度平台模块等四项功能组成,李工从技术层面提出该系统可使用
Flask 框架与SSM 框架为基础来开发后台服务器,将开发好的系统通过 Docker 进行部署,并使用MQTT 协议对 Docker
进行管理。
【问题1】(5分)MQTT协议在工业物联网中得到广泛的应用,请用300字以内的文字简要说明MQTT协议。
【问题2】(14分)
在会议上,张工对功能模块进行了更进一步的说明:访客注册模块用于来访者提交申请与被访者确认申请,主要处理提交来访申请、来访申请审核业务,同时保存访客数据,为训练模块准备训练数据集:模型训练模块用于使用访客数据进行模型训练,为端侧设备的识别业务提供模型基础;端侧识别模块在边缘门禁设备上运行,使用训练好的模型来识别来访人员,与云端服务协作完成访客来访的完整业务;设备调度平台模块用于对边缘门禁设备进行管理,管理人员能够使用平台对边缘设备进行调度管理与状态监控,实现云端协同。
图5-1给出了基于边缘计算的智能门禁系统架构图,请结合 HTTP 协议和 MQTT协议的特点,为图5-1中( )-( )处选择合适的协议:并结合张工关于功能模块的描述,补充完善图5-1中( )~( )处的空白。
【问题3】(6分)请用300字以内的文字,从数据通信、数据安全和系统性能等方面简要分析在传统云计算模型中引入边缘计算模型的优势。
【问题1】(5分)
MQTT (消息队列遥测传输)是一个基于客户端-服务器的消息发布/订阅传输协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。MQTT协议是轻量、简单、开放和易于实现的。
【问题2 】(14分)
⑴HTTP ⑵MQTT (3)MQTT (4)MQTT ⑸HTTP ⑹HTTP
(7)端侧识别 (8)模型训练 (9)设备调度平台 (10)访客注册
【问题3】(6分)
数据通信:通信数据量更少速度更快。因为数据处理比对在边缘设备上完成,无需回传服务器,通信效率更高。
数据安全:数据以加密方式存储在需要用到的边缘设备上,本地化处理比对,减少原始信息在网上的传递带来的安全隐患。黑客无法通过攻击一台设备来影响整个系统。
系统性能:性能更高,以人脸识别为例,在进行识别时,只在本地进行比对不用把人脸数据传递到远程服务器对比。