系统架构设计师-下午案例题(2022年下半年)

news2024/11/29 6:39:25

1.试题-(共25分):阅读以下关于软件架构设计与评估的叙述在答题纸上回答问题1和问题2。

【说明】某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户规模不大业务也相对简单,系统性能方面不做过多考虑,新系统除了保持现有的四级固定会员制度外,还需要根据用户的消费金额、偏好、重复性等相关特征动态调整商品的折扣力度,并支持在特定的活动周期内主动筛选与活动主题高度相关的用户集合,提供个性化的打折促销活动。在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:

(a)管理员能够在页面上灵活设置折扣力度规则和促销活动逻辑,设置后即可生效:

(b)系统应该具备完整的安全防护措施,支持对恶意攻击行为进行检测与报警:(安全性)

(c)在正常负载情况下,系统应在0.3秒内对用户的界面操作请求进行响应:(性能)

(d)用户名是系统唯一标识,要求以字母开头,由数字和字母组合而成,长度不少于6个字符。
(e)在正常负载情况下,用户支付商品费用后在3秒内确认订单支付信息:(性能)
(f)系统主站点电力中断后,应在5秒内将请求重定向到备用站点:(可用性)
(g)系统支持横向存储扩展,要求在2人天内完成所有的扩展与测试工作:(可修改性)
(h)系统宕机后,需要在10秒内感知错误并自动启动热备份系统:(可用性)
(i)系统需要内置接口函数,支持开发团队进行功能调试与系统诊断:

(j)系统需要为所有的用户操作行为进行详细记录,便于后期查阅与审计;(安全性)
(k)支持对系统的外观进行调整和配置,调整工作需要在4人天内完成。(可修改性)

在对系统需求、质量属性描述和架构特性进行分析的基础上,系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对系统架构进行评估。

【问题1】(12分)
在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请将合适的质量属性名称填入图1-1中(1)、(2)空白处,并选择题干描述的(a)~(k)填入(3)~(6)空白处,完成该系统的效用树。

【答案】(1)安全性(2)可修改性(3)e(4)j(5)h(6)k

【考点】

软件系统架构评估主要关注质量属性。主要包括以下几种:性能、可靠性、可用性、安全性、可修改性、功能性、可变性、互操作性。

  • 性能关注系统的响应能力;
  • 可靠性关注系统在错误面前的维持功能能力;
  • 可用性关注系统能够正常运行的时间比例;
  • 安全性关注系统阻止非授权用户使用的能力;
  • 可修改性关注系统能够快速进行变更的能力;
  • 功能性关注系统能完成期望工作的能力;
  • 可变性关注架构的变更能力;
  • 互操作性关注软件与其他系统或环境的相互作用能力。

 【问题2】(13分)针对该系统的功能,

李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对应的功能:

王工则建议采用解释器(interpreters)架构风格,将折扣力度计算和用户筛选条件封装为独立的规则,通过解释规则实现对应的功能。

请针对系统的主要功能,从折扣规则的可修改性个性化折扣定义灵活性系统性能三个方面对这两种架构风格进行比较与分析,并指出该系统更适合采用哪种架构风格。

【答案】

在比较李工的面向对象架构风格与王工的解释器架构风格时,我们可以从折扣规则的可修改性、个性化折扣定义灵活性和系统性能三个方面进行分析。

1. 折扣规则的可修改性

- **面向对象架构**:
  - 折扣规则通常被封装为类,修改规则可能需要修改类的实现,或者创建新的子类。这种方式在规则较多时可能导致类的数量激增,维护成本增加。
  - 适合于规则相对稳定的场景,修改时需要重新编译和部署。

- **解释器架构**:
  - 折扣规则以文本或其他形式定义,修改规则只需更改规则文件,无需重新编译代码。这种方式使得规则的更新更加灵活和快速。
  - 适合于规则频繁变动的场景,能够快速响应业务需求的变化。

2. 个性化折扣定义灵活性

- **面向对象架构**:
  - 通过继承和组合,可以实现一定程度的个性化折扣定义,但可能需要创建大量的类来处理不同的个性化需求。
  - 对于复杂的个性化需求,可能会导致设计复杂度增加,难以管理。

- **解释器架构**:
  - 允许用户通过定义规则来实现个性化折扣,用户可以直接修改规则文本,灵活性高。
  - 可以支持动态生成和组合规则,满足多样化的个性化需求。

3. 系统性能

- **面向对象架构**:
  - 在性能上,面向对象的实现通常会有较好的运行效率,因为编译后的代码是直接执行的。
  - 适合于对性能要求较高的场景,尤其是在规则复杂且调用频繁的情况下。

- **解释器架构**:
  - 解释器的性能可能较低,因为每次执行规则时都需要解析规则文本,可能导致性能瓶颈。
  - 适合于规则相对简单或不频繁调用的场景,性能影响较小。

 结论

综合考虑折扣规则的可修改性、个性化折扣定义灵活性和系统性能:

- 如果系统需要频繁修改折扣规则,且需要支持多样化的个性化折扣定义,王工的解释器架构风格更为适合。它提供了更高的灵活性和可维护性,能够快速响应业务需求的变化。
  
- 如果系统对性能要求极高,且折扣规则相对稳定,李工的面向对象架构风格可能更为合适,能够提供更好的运行效率。


3.试题二(共25分)
阅读以下关于软件系统设计与建模的叙述在答题纸上回答问题1至问题3。
【说明】
煤炭生产是国民经济发展的主要领域之一其煤矿的安全非常重要。某能源企业拟开发一套煤矿建设项目安全预警系统,以保护煤矿建设项目从业人员生命安全。本系统
的主要功能包括如下(a)~(h)所述
(a)项目信息维护
(b)影响因素录入
(c)关联事故录入
(d)安全评价得分
(e)项目指标预警分析
(f)项目指标填报
(g)项目指标审核
(h)项目指标确认

【问题1】(9分)
王工根据煤矿建设项目安全预警系统的功能要求,设计完成了系统的数据流图,如图2-1所示。请使用题干中描述的功能(a)~(h),补充完善空(1)~(6)处的内容并简要介绍数据流图在分层细化过程中遵循的数据平衡原则。

煤矿建设项目安全预警系统数据流图:

 

【答案】(1)f(2)g (3)h(4)d (5)b(6)e

层间平衡:数据流个数一致,方向一致

图内平衡:有输入无输出的黑洞,有输出无输入的奇迹,输入不足的灰洞

【问题2】(9分)请根据【问题1】中数据流图表示的相关信息,补充完善煤矿建设项目安全预警系统总体ER图(见图2-2)中实体(1)-(6)的具体内容

【答案】(1)项目管理员(2)项目经理标(4)项目信息 (5)影响因素(3)项目指(6)关联事故

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

【答案】

在分析阶段:

数据流图通过图形化的方式展示系统中数据的流动和处理过程,帮助分析师和开发人员理解系统的功能需求。

数据字典则是对系统中所有数据元素的详细描述,包括数据类型、格式、意义及其相互关系。它为数据流图中的元素提供了具体的定义,确保团队对数据的理解一致,减少了歧义和误解。

在设计阶段结构化:

根据不同的数据流图类别来初始化系统结构图;

根据数据字典中的数据存储描述来建立数据库存储设计。


未完待编辑……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2189236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

随笔(四)——代码优化

文章目录 前言1.原本代码2.新增逻辑3.优化逻辑 前言 原逻辑:后端data数据中返回数组,数组中有两个对象,一个是属性指标,一个是应用指标,根据这两个指标展示不同的多选框 1.原本代码 getIndicatorRange(indexReportLi…

逗比大神(ToyoDAdoubi)的ShadowsocksR/SSR一键搭建脚本

逗比大神(ToyoDAdoubi)的ShadowsocksR/SSR一键搭建脚本(推荐) 我推荐新手小白用户使用逗比大神(ToyoDAdoubi)的SSR一键搭建脚本,因为全中文界面,操作更加简单方便。 此一键安装脚本支持 CentOS 6、Debian 7、Ubuntu 12 及以上系…

10.4学习

1.Transactional 注意事项: ①事务函数中不要处理耗时任务,会导致长期占有数据库连接。 ②事务函数中不要处理无关业务,防止产生异常导致事务回滚。 ●事务传播属性 ①REQUIRED(默认属性) 如果存在一个事务&#…

ROS基础入门——实操教程

ROS基础入门——实操教程 前言 本教程实操为主,少说书。可供参考的文档中详细的记录了ROS的实操和理论,只是过于详细繁杂了,看得脑壳疼,于是做了这个笔记。 Ruby Rose,放在这里相当合理 本文初编辑于2024年10月4日 C…

云原生(四十五) | ECS服务器项目部署实战

文章目录 ECS服务器项目部署实战 一、ECS服务器项目部署说明 二、下载WordPress 三、部署WordPress需要哪些应用 ECS服务器项目部署实战 一、ECS服务器项目部署说明 案例:为了让大家更好的理解ECS服务器的使用场景,我们通过一个比较经典的WordPres…

红日靶机(三)笔记

VulnStack-红日靶机三 概述 相较于前边两个靶场环境,靶场三的难度还是稍难一点,有很多兔子洞,这就考验我们对已有信息的取舍和试错,以及对渗透测试优先级的判断。涉及到对数据库操作的试错,对 joomla 框架 cve 的快速…

vSAN01:vSAN简介、安装、磁盘组、内部架构与调用关系

目录 传统的共享存储vSAN存储OSA的系统要求vSAN安装vSAN集群vSAN skyline healthvSAN与HA磁盘组混合磁盘架构全闪磁盘架构 vSAN对象vSAN内部架构 传统的共享存储 通过隔离的存储网络使得不同的ESXi主机访问独立的存储设备。需要前期投入较高的资金单独采购存储、网络可以单独规…

OAuth2.0 设备授权流程

OAuth2.0设备授权流程(Device Authorization Grant)是一种为缺乏输入能力的设备(例如智能电视、游戏机、物联网设备等)设计的授权模式。这些设备通常不具备复杂的键盘或指定输入方式,无法直接进行OAuth2.0标准的交互授…

8c语言基础文件

关于文件你必须了解的一些基本概念 什么是文件? 文件是计算机文件,属于文件的一种,与普通文件的载体不同,计算机文件是以计算机硬盘为载体存储在计算机上的信息集合。 在程序设计中,我们一般关注的文件有两类&#x…

【C++】空指针和野指针

文章目录 1.空指针2.野指针总结 1.空指针 概念:指针变量指向内存中编号为0的空间。 用途:初始化指针变量。 注意:空指针指向的内存是不可以访问的。 示例: int main(){//指针变量p指向内存地址编号为0的空间int *PNULL&#…

从零开始学cv-15:图像分割

文章目录 前言一、全局阈值分割:二、自适应阈值分割:三、分水岭算法: 前言 在当代计算机视觉领域,图像分割技术扮演着至关重要的角色,它为图像理解、目标识别和场景解析等高级视觉任务提供了基础。OpenCV,…

Redis:hash类型

Redis:hash类型 hash命令设置与读取HSETHGETHMGET 哈希操作HEXISTSHDELHKEYSHVALSHGETALLHLENHSETNXHINCRBYHINCRBYFLOAT 内部编码ziplisthashtable 目前主流的编程语言中,几乎都提供了哈希表相关的容器,Redis自然也会支持对应的内容&#xf…

李宏毅深度学习-循环神经网络RNN

Recurrent Neural Network 这个问题可以使用一个前馈神经网络(feedforward neural network)来解,如图5.2 所示, 输入是一个单词,把“上海”变成一个向量,“丢”到这个神经网络里面。输入是一个单词&#x…

平衡二叉搜索树---java---黑马

平衡二叉搜索树 AVL树的实现 二叉搜索树在插入和删除时,节点可能发生失衡;如果在插入和删除时通过旋转,始终让二叉搜索树保持平衡,称之为平衡二叉搜索树;AVL树是自平衡二叉搜索树的实现之一 LL - 失衡节点(图中5红…

项目-坦克大战学习笔记-地图完善

之前我们详细讲解了怎么在地图上绘制墙&#xff0c;这次我们来完善整个地图&#xff0c; 地图的静态物体构成分为可破坏的墙体&#xff0c;不可破坏的铁块&#xff0c;以及最终boos 那我们为了方便存储将三个对象分开放为3个列表 private static List<gudin> walllist…

vscode有问题

开始给我报错&#xff0c;说命名不规范 然后我就改&#xff0c;改了好几遍之后还是报错。问了ai&#xff0c;也用它的方法改了&#xff0c;还是报错。。。 然后关掉vscode&#xff0c;重启&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;运行成功

【算法系列-链表】删除链表的倒数第N个结点

【算法系列-链表】删除链表的倒数第N个结点 文章目录 【算法系列-链表】删除链表的倒数第N个结点1. 算法分析&#x1f6f8;2. 模拟解决问题2.1 思路分析&#x1f3af;2.2 代码示例&#x1f330; 3. 双指针(快慢指针)解决问题3.1 思路分析&#x1f3af;3.2 代码示例&#x1f330…

Web-Machine-N7解题过程

1.主机探测 arp-scan -lnmap -sn 192.168.1.0/24sudo netdiscover -r 192.168.1.0/24masscan -p0-65535 192.168.1.0/24 2.端口扫描 nmap -A -sC -sT -sV 192.168.1.188 --min-rate 10000 &#xff08;简略扫描&#xff09;nmap -sS 192.168.1.188 -A&#xff1a; 启用操作系…

vue的图片显示

通过参数 调用方法 进行显示图片 方法一: 方法二:

使用TM1618控制LED了解P-MOS和N-MOS的开漏输出的不同

数据手册上的截取内容 推荐的共阴/阳极电路 可以发现GRID总接LED的负极&#xff0c;SEG引脚接的是LED 正极 分析输出的MOS管类型可以很好的知道原因 图片来源 通过都是开漏输出可以看出&#xff0c;引脚引出的内部电路是不同的。P-mos引出的是漏极&#xff0c;导通时&#…