【软考系统架构设计师】2019年下系统架构师案例分析历年真题

【软考系统架构设计师】2019年下系统架构师案例分析历年真题

2019年系统架构师案例分析真题第一题(架构风格+质量属性)

阅读以下关于软件架构设计与评估的叙述,在答题纸上回答问题1和问题2。
【说明】
某电子商务公司为了更好地管理用户,提升企业销售业绩,拟开发一套用户管理系统。该系统的基本功能是根据用户的消费级别、消费历史、信用情况等指标将用户划分为不同的等级,并针对不同等级的用户提供相应的折扣方案 。在需求分析与架构设计阶段,电子商务公司提出的需求、质量属性描述和架构特性如下 :
(a)用户目前分为普通用户、银卡用户、金卡用户和白金用户四个等级,后续需要能够根据消费情况进行动态调整;
(b)系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测与防御;
(c)在正常负载情况下,系统应在0.5秒内对用户的商品查询请求进行响应;
(d)在各种节假日或公司活动中,针对所有级别用户,系统均能够根据用户实时的消费情况动态调整折扣力度;
(e)系统主站点断电后,应在5秒内将请求重定向到备用站点;
(f)系统支持中文昵称,但用户名要求必须以字母开头,长度不少于8个字符;
(g)当系统发生网络失效后,需要在15秒内发现错误并启用备用网络;
(h)系统在展示商品的实时视频时,需要保证视频画面具有 1024×768 像素的分辨率,40帧/秒的速率;
(i)系统要扩容时,应保证在10人•月内完成所有的部署与测试工作;
(j)系统应对用户信息数据库的所有操作都进行完整记录:
(k)更改系统的Web界面接口必须在4人•周内完成;
(l)系统必须提供远程调试接口,并支持远程调试 。
在对系统需求、质量属性描述和架构特性进行分析的基础上,该系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对系统架构进行评估。
【问题1】(13 分)
针对用户级别与折扣规则管理功能的架构设计问题,李工建议采用面向对象的架构风格,而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种架构风格,并从用户级别、折扣规则定义的灵活性、可扩展性和性能三个方面对这两种架构风格进行比较与分析,填写表1-1中的(1)~(3)空白处。
在这里插入图片描述
【问题2】(12 分)
在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请合适的质量属性名称填入图1-1中(1)、(2)空白处,并选择题干描述的(a)(1)填入(3)(6)空白处,完成该系统的效用树。
在这里插入图片描述

  • 【问题1我的解答】
    该系统更加适合采用面向对象的架构风格
架构风格 灵活性 可扩展性 性能
面向对象 将用户级别,折扣规则封装为对象,在系统启动时加载 2)加入新的用户级别和折扣规则时使用类的继承机制即可实现扩展 3)集合设计模式能够根据消费情况动态的调整用户级别和折扣规则,性能好
基于规则 1)将用户级别和折扣规则定义为规则,系统启动时载入规则 加入新的用户级别和折扣规则时只需要定义新的规则,解释规则即可进行扩展 需要对用户级别和折扣规则进行实时解释,性能较差
  • 【问题1标准答案】
    用户级别和折扣规则管理功能更适合采用基于规则的架构风格。
    1)将用户规则,折扣规则等描述为可以动态改变的规则数据。
    2)加入新的用户级别和折扣规则时需要重新定义新的对象,并需要重启系统
    3)用户级别和折扣系统已经在系统内编码,可直接运行,性能较好。
  • 【问题2我的解答】
No 需求 评估属性
a 用户目前分为普通用户、银卡用户、金卡用户和白金用户四个等级,后续需要能够根据消费情况进行动态调整 系统需求
b 系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测与防御 安全性
c 在正常负载情况下,系统应在0.5秒内对用户的商品查询请求进行响应 性能
d 在各种节假日或公司活动中,针对所有级别用户,系统均能够根据用户实时的消费情况动态调整折扣力度 系统需求
e 系统主站点断电后,应在5秒内将请求重定向到备用站点 可用性
f 系统支持中文昵称,但用户名要求必须以字母开头,长度不少于8个字符 系统需求
g 当系统发生网络失效后,需要在15秒内发现错误并启用备用网络 可用性
h 系统在展示商品的实时视频时,需要保证视频画面具有 1024×768 像素的分辨率,40帧/秒的速率 性能
i 系统要扩容时,应保证在10人•月内完成所有的部署与测试工作 可修改性
j 系统应对用户信息数据库的所有操作都进行完整记录 安全性
k 更改系统的Web界面接口必须在4人•周内完成 可修改性
l 系统必须提供远程调试接口,并支持远程调试 可测试性

1)安全性
2)可修改性
3)h
4)j
5)e
6)k

  • 【问题2标准答案】
    同上。

2019年系统架构师案例分析真题第二题(数据流图)

阅读下列说明,回答问题1至问题3 ,将解答填入答题纸的对应栏内。
【说明】
某软件企业为快餐店开发一套在线订餐管理系统,主要功能包括:
(1)在线订餐
已注册客户通过网络在线选择快餐店所提供的餐品种类和数量后提交订单,系统显示订单费用供客户确认,客户确认后支付订单所列各项费用。
(2)厨房备餐
厨房接收到客户已付款订单后按照订单餐品列表选择各类食材进行餐品加工。
(3)食材采购
当快餐店某类食材低于特定数量时自动向供应商发起来购信息,包括食材类型和数量,供应商接收到采购信息后按照要求将食材送至快餐店并提交已采购的食材信息,系统自动更新食材库存 。
(4)生成报表
每个周末和月末,快餐店经理会自动收到系统生成的统计报表,报表中详细列出了本周或本月订单的统计信息以及库存食材的统计信息。现采用数据流图对上述订餐管理系统进行分析与设计,系统未完成的0层数据流图。
如图2-1 所示。
在这里插入图片描述
【问题 1】(8分)
根据订餐管理系统功能说明,请在图2-1所示数据流图中给出外部实体E1E4和加工P1 P4的具体名称。
【问题 2】(8 分)
根据数据流图规范和订餐管理系统功能说明,请说明在图2-1中需要补充哪些数据流可以构造出完整的0层数据流图。
【问题3】(9 分)
根据数据流图的含义,请说明数据流图和系统流程图之间有哪些方面的区别

  • 【问题1我的解答】
    E1:客户;
    E2:厨房;
    E3:报表;
    E4:供应商;
    P1:在线订餐
    P2:厨房备餐
    P3:生成报表
    P4:食材采购

  • 【问题1标准答案】
    E1:客户
    E2:厨房
    E3:经理
    E4:供应商
    P1:在线订餐
    P2:厨房备餐
    P3:生成报表
    P4:食材采购

  • 【问题2我的解答】
    P3到E3:生成报表时需要生成报表;
    E1到P1:缺少一个确认订单的数据流;
    P1到E2:缺少一个接受已付款订单这个数据流;
    D1到P3:缺少一个订单汇总信息的数据流。

  • 【问题2标准答案】
    增加E1到P1的数据流:餐品订单
    增加P1到P2的数据流:餐品订单
    增加D1到P3的数据流:订单汇总
    增加P3到E3的数据流:统计报表

  • 【问题3我的解答】
    系统流程图用来描述系统中业务处理的流程和先后次序;数据流图是用来对系统需求进行建模以便我们对用户需求进行更好分析。
    数据流图更多用来体现系统中数据的流动,而系统流程图更多的体现系统的控制流而不是数据流;
    数据流图中有四个元素组成:数据流+加工+存储+外部实体;而系统流程图的构成元素中不包含这些;
    数据流图用在需求分析阶段,而系统流程图一般用在对业务流程建模,业务流程改善的时候。

  • 【问题3标准答案】
    1)数据流图中的处理过程可以并行,系统流程图在某个时间点只能处于一个处理过程
    2)数据流图展现系统的数据流,系统流程图展现系统的控制流
    3)数据流图展现的是全局的处理过程,过程之间遵循不同的计时标准,系统流程图中处理过程遵循一致的计时标准。

2019年系统架构师案例分析真题第三题(嵌入式系统)

阅读以下关于嵌入式系统开放式架构相关技术的描述,在答题纸上回答问题1至问题3。
【说明】
信息物理系统(Cyber Physical Systems, CPS)技术已成为未来宇航装备发展的重点关键技术之一。某公司长期从事嵌入式系统的研制工作 ,随着公司业务范围不断扩展,公司决定进入宇航装备的研制领域。为了做好前期准备,公司决定让王工程师负责编制公司进军宇航装备领域的战略规划。王工经调研和分析,认为未来宇航装备将向着网络化、智能化和综合化的目标发展,CPS 将会是宇航装备的核心技术,公司应构建基于CPS技术的新产品架构,实现超前的技术战略储备。
【问题 1】 (9 分)
通常CPS结构分为感知层、网络层和控制层,请用300字以内文字说明CPS的定义,并简要说明各层的含义。
【问题 2 】(10 分)
王工在提交的战略规划中指出:飞行器中的电子设备是一个大型分布式系统,其传感器、控制器和采集器分布在飞机各个部位,相互间采用高速总线互连,实现子系统间的数据交换,而飞行员或地面指挥系统根据飞行数据的汇总决策飞行任务的执行。图3-1给出了飞行器系统功能组成图。请参考图3-1给出的功能图,依据你所掌握的CPS知识,说明以下所列的功能分别属于CPS结构中的哪层,哪项功能不属于CPS任何一层。
1.飞行传感器管理
2.步进电机控制
3.显控
4.发电机控制
5.环控
6.配电管理
7.转速传感器
8.传感器总线
9.飞行员
10.火警信号探测
在这里插入图片描述
【问题 3】 (6 分)
王工在提交的战略规划中指出:未来宇航领域装备将呈现网络化、智能化和综合化等特征,形成集群式的协同能力,安全性尤为重要。在宇航领域的CPS系统中,不同层面上都会存在一定的安全威胁。请用100字以内文字说明CPS系统会存在哪三类安全威胁,并对每类安全威胁至少举出两个例子说明

  • 【问题1我的解答】
    信息物理系统(Cyber Physical Systems, CPS)技术是物联网技术的一个应用。它集合了嵌入式技术,网络技术,实现智能化的物物相连。
    感知层:利用传感器从外部环境等地方获取信息以实现智能化。
    控制层:协调使用网络层的各模块,来完成飞行器的各个任务。
    网络层:从传感器总线获取来自传感器的信息,并对其进行管理,过滤出有用的信息。
  • 【问题1标准答案】
    信息物理系统作为计算进程和物理进程的统一体,是集计算,通信与控制与一体的下一代智能系统。信息物理系统通过人机交互接口实现和物理进程的交互,使用网络化空间,以远程的,可靠的,实时的,安全的,协作的方式操控一个物理实体。
层次 层次的含义
感知层 主要由传感器,控制器和采集器等设备所组成;它属于物理信息系统中的末端设备
网络层 主要是联系信息世界和物理世界的桥梁,实现的是数据传输,为系统提供实时的网络服务,保证网络分组传输的实时可靠
控制层 主要是根据认知结果,及物理设备传回来的数据进行相应的分析,将相应的结果返回给客户端
  • 【问题2我的解答】
    1.飞行传感器管理(网络层)
    2.步进电机控制(控制层)
    3.显控(控制层)
    4.发电机控制(控制层)
    5.环控(控制层)
    6.配电管理(网络层)
    7.转速传感器(感知层)
    8.传感器总线(网络层)
    9.飞行员(不属于任何一层)
    10.火警信号探测(控制层)
  • 【问题2标准答案】
No 模块名 我的解答 标准答案
1 飞行传感器管理 网络层 控制层
2 步进电机控制 控制层 感知层
3 显控 控制层 控制层
4 发电机控制 控制层 感知层
5 环控 控制层 控制层
6 配电管理 网络层 控制层
7 转速传感器 感知层 感知层
8 传感器总线 网络层 网络层
9 飞行员 不属于任何一层 不属于任何一层
10 火警信号探测 控制层 感知层
  • 【问题3我的解答】
    网络层通信过程中,消息会失真,信息会被截获和篡改;从而影响正确的结果。
    感知层中传感器会老化,会失效从而无法正确及时捕捉到正确的信息;

  • 【问题3标准答案】
    感知层安全威胁:感知数据破坏,信息窃听,节点捕获;
    网络层安全威胁:拒绝性服务攻击,选择性转发,方向误导攻击
    控制层安全威胁:用户信息泄漏,恶意代码,非授权访问。

  • 【心得体会】

  1. 火警信号探测,步进电机控制,发电器控制在图中是圈,所以它们属于感知层。
    传感器总线可以联想到ESB总线,它负责的功能之一就有消息转发,所以归属于网络层没有异议;
  2. 飞行员在系统之外的人,所以不包括在三层当中也没有异议;
  3. 最后就是控制层:飞行传感器管理和配电管理都在飞行器总线上,都也属于控制层。
  4. 这里要注意的是联系图作答,才可以找到归类的技巧。
  5. 第三空考查的是安全方面的知识。要结合不同层次的特点来作答。感知层是通过感知设备获取原始信息,所以有可能数据被破坏,信息被窃听;网络层是用来保证可靠传输的,有可能破坏可靠性的有:拒绝攻击,选择性转发;
  6. 到了控制层,控制层主要做的是汇总结果,分析信息的工作,所以用户信息泄露,非授权访问等极易发生。
  7. 最后回到第一问,第一问就是纯粹概念的考查。
    感知层由传感器,采集器等直接打交道,这点是算得分的。
    网络层是信息世界和物理世界的桥梁,实现可靠的数据传输。
    控制层则汇总认知结果,实现对于信息的分析,最终反馈给客户端。
    这三个其实还是比较好回答的。在这个基础上就可以得出CPS的概念。
  8. CPS是集计算,通信与控制与一体的下一代智能系统。使用网络化的方式可靠实时,并且安全的操控物理实体。其实这就是物联网的概念。

2019年系统架构师案例分析真题第四题(分布式数据库)

阅读以下关于分布式数据库缓存设计的叙述,在答题纸上回答问题1至问题3。
【 说明 】
某初创企业的主营业务是为用户提供高度个性化的商品订购业务,其业务系统支持PC端、手机App等多种访问方式。系统上线后受到用户普遍欢迎,在线用户数和订单数量迅速增长,原有的关系数据库服务器不能满足高速并发的业务要求。
为了减轻数据库服务器的压力,该企业采用了分布式缓存系统,将应用系统经常使用的数据放置在内存,降低对数据库服务器的查询请求,提高了系统性能。在使用缓存系统的过程中,企业碰到了一系列技术问题。
【问题 1】(11 分)
该系统使用过程中,由于同样的数据分别存在于数据库和缓存系统中,必然会造成数据同步或数据不一致性的问题。该企业团队为解决这个问题,提出了如下解决思路:应用程序读数据时,首先读缓存,当该数据不在缓存时,再读取数据库;应用程序写数据时,先写缓存,成功后再写数据库;或者先写数据库,再写缓存。王工认为该解决思路并未解决数据同步或数据不一致性的问题,请用100字以内的文字解释其原因 。王工给出了一种可以解决该问题的数据读写步骤如下 :
读数据操作的基本步骤 :
1.根据 key 读缓存:
2.读取成功则直接返回;
3.若 key 不在缓存中时,根据 key( );
4.读取成功后,( );
5.成功返回 。
写数据操作的基本步骤 :
1.根据 key 值写( );
2.成功后( );
3.成功返回。
请填写完善上述步骤中(a)~(d)处的空白内容。
【问题 2】(8 分)
缓存系统一般以key/value形式存储数据,在系统运维中发现,部分针对缓存的查询,未在缓存系统中找到对应的key,从而引发了大量对数据库服务器的查询请求,最严重时甚至导致了数据库服务器的宕机。
经过运维人员的深入分析,发现存在两种情况:
(1)用户请求的 key值在系统中不存在时,会查询数据库系统,加大了数据库服务器的压力:
(2)系统运行期间,发生了黑客攻击,以大量系统不存在的随机key发起了查询请求,从而导致了数据库服务器的宕机 。经过研究,研发团队决定,当在数据库中也未查找到该key时,在缓存系统中为key设置空值,防止对数据库服务器发起重复查询 。
请用100字以内文字说明该设置空值方案存在的问题,并给出解决思路。
【问题 3】(6 分)
缓存系统中的key一般会存在有效期,超过有效期则key失效;有时也会根据LRU算法将某些key移出内存。当应用软件查询key时,如key失效或不在内存,会重新读取数据库,并更新缓存中的key。运维团队发现在某些情况下,若大量的key设置了相同的失效时间,导致缓存在同一时刻众多key同时失效,或者瞬间产生对缓存系统不存在key的大量访问,或者缓存系统重启等原因,都会造成数据库服务器请求瞬时爆量,引起大量缓存更新操作,导致整个系统性能急剧下降,进而造成整个系统崩溃。请用100字以内文字,给出解决该问题的两种不同思路。

  • 【问题1我的解答】
    a)读数据库
    b)更新至缓存
    c)数据库
    d)更新至缓存
    因为存在以下两种情况,所以说该解决思路并未解决数据同步或数据不一致性的问题。
    1)用户请求的 key值在系统中不存在时,每次都会查询数据库系统,而没有同步更新至缓存。
    2)先写缓存,成功后再写数据库;如果此时数据库写入失败的话,就会出现不一致的情况了。
    3)先读缓存,失败后再读数据库,如果正确的从数据库中读取数据,不更新至缓存就会出现不一致的情况。
  • 【问题1标准答案】
    a)从数据库中读取数据或读数据库
    b)更新缓存中的key值或更新缓存
    c)数据库
    d)删除缓存key或者使缓存key失效或更新缓存
    存在双写不一致问题,在写数据时,可能存在缓存写成功,但数据库写失败;或者反之,从而造成数据不一致。
  • 【问题2我的解答】
    当在数据库中也未查找到该key时,在缓存系统中为key设置空值,防止对数据库服务器发起重复查询 。
    那么如果数据库key值已经更新的情况下,必定要同步到缓存才可以。
    同时必须要定期用key对数据库进行查找,如果能找到value,须同步至缓存以替换掉空值。所以使用空值方案无法很好保证数据一致性。当然频繁同步更新的话,牺牲了性能与效率。
  • 【问题2标准答案】
    不在缓存中的key值是无限的,如果均设置key值为空,会造成内存资源的极大浪费,引起性能急剧下降
    解决思路:查询缓存之前,对key值进行过滤,只允许系统中存在的key进行后续操作
    例如采用key的bitmap进行过滤。
  • 【问题3我的解答】
    定期定量将失效的key替换出缓存而不是全部一次性替换出缓存。
    替换出最近最久未使用的key可以优先替换出去。
    改进替换缓存的算法,如果某个key命中一次后,自动延长该Key驻留缓存的时间。
  • 【问题3标准答案】
    思路1:缓存失效后,通过排他锁或者队列的方式控制数据库写缓存的线程数量,使得缓存更新串型化;
    思路2:给不同的可以设置随机或不同的失效时间,使失效时间的分布尽量均匀
    思路3:设置两级或者多级缓存,避免访问数据库服务器
  • 【心得体会】
    本题对缓存的原理方面考查的比较深入,第一问基本答对之外,第二第三问只能说部分点到了关键字吧。

2019年系统架构师案例分析真题第五题(Web架构设计)

阅读以下关于Web系统架构设计的叙述,在答题纸上回答问题1至问题3。
【说明】
某公司拟开发一个物流车辆管理系统,该系统可支持各车辆实时位置监控、车辆历史轨迹管理、违规违章记录管理、车辆固定资产管理、随车备品及配件更换记录管理、车辆寿命管理等功能需求。其非功能性需求如下:
(1)系统应支持大于 50 个终端设备的并发请求;
(2)系统应能够实时识别车牌,识别时间应小于1s;
(3)系统应 7×24 小时工作;
(4)具有友好的用户界面;
(5)可抵御常见SQL注入攻击 ;
(6)独立事务操作响应时间应小于 3s;
(7)系统在故障情况下,应在1小时内恢复;
(8) 新用户学习使用系统的时间少于1小时 。
面对系统需求 ,公司召开项目组讨论会议,制订系统设计方案 ,最终决定基于分布式架构设计实现该物流车辆管理系统,应用Kafka、Redis数据缓存等技术实现对物流车辆自身数据、业务数据进行快速、高效的处理。
【问题 1】(4分)
请将上述非功能性需求(1)~(8)归类到性能、安全性、可用性、易用性这四类非功能性需求。
【问题 2 】(14 分)
经项目组讨论,完成了该系统的分布式架构设,如图5-1所示。请从下面给出的(a)(j)中进行选择,补充完善图5-1中(1)(7)处空白的内容。
(a)数据存储层
(b)Struct2
(c)负载均衡层
(d)表现层
(e)HTTP协议
(f)Redis数据缓存
(g)Kafka分发消息
(h)分布式通信处理层
(i)逻辑处理层
(j)CDN内容分发
在这里插入图片描述
【问题 3】(7 分)
该物流车辆管理系统需抵御常见的SQL注入攻击,请用200字以内的文字说明什么是SQL注入攻击,并列举出两种抵御SQL注入攻击的方式

  • 【问题1我的解答】
No 非功能需求 分类
1 系统应支持大于 50 个终端设备的并发请求 性能
2 系统应能够实时识别车牌,识别时间应小于1s 性能
3 系统应 7×24 小时工作 可用性
4 具有友好的用户界面 易用性
5 可抵御常见SQL注入攻击 安全性
6 独立事务操作响应时间应小于 3s 性能
7 系统在故障情况下,应在1小时内恢复 可用性
8 新用户学习使用系统的时间少于1小时 易用性
  • 【问题2我的解答】
    在这里插入图片描述
  • 【问题1标准答案】
    性能:126
    安全性:5
    可用性:3,7
    易用性:4,8
  • 【问题2标准答案】
    1)d
    2)e
    3)i
    4)h
    5)g
    6)f
    7)a
  • 【问题3我的解答】
    将SQL语句通过提交的表单数据的形式,从Web客户端传递给数据库服务器,从而获取一般手段无法取到的数据。
    增加系统的层次,如增加数据库视图层可以防止SQL注入攻击;表单验证也可以防止不必要的提交,提高SQL注入攻击。
  • 【问题3标准答案】
  1. SQL注入攻击就是把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意攻击的目的。
  2. 可以通过以下方式抵御SQL注入攻击:
    1)使用正则表达式
    2)使用参数化过滤性语句
    3)检查用户输入的合法性
    4)用户相关数据加密处理
    5)使用专业的漏洞扫描工具
    6)存储过程来执行所有的查询
  • 【心得体会】
  1. 第一问属于非功能需求的归类,送分题比较简单。
  2. 第二问看图填空题。在这里我在Kafka消息分发和CDN内容分发之间搞错了。
  3. Kafka是什么?它是一种高吞吐量的分布式发布订阅消息系统。
    生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,在生产者与消费者之间,需要一个沟通两者的桥梁-消息系统。kafka的作用就是在生产者和消费者之间,实现无缝连接。
  4. 高吞吐量,低延迟,可扩展可靠,高并发都是它的标签。
  5. 第三问考查的是SQL注入攻击的概念以及如何解决SQL注入攻击。
  6. 为了防止SQL注入攻击,可以使用正则表达式,可以对用户输入进行合法性的确认,这两点比较容易就可以想到。
  7. 对用户相关的数据进行加密,存储过程来执行所有的查询,使用参数化过滤性语句等这些首次听说到。

猜你喜欢

转载自blog.csdn.net/Last_Impression/article/details/120990386