软考系列(系统架构师)- 2019年系统架构师软考案例分析考点
试题一 软件架构(架构风格、质量属性)
【问题1】(13分)
针对用户级别与折扣规则管理功能的架构设计问题,李工建议采用面向对象的架构风格,而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种架构风格,并从用户级别、折扣规则定义的灵活性、可扩展性和性能三个方面对这两种架构风格进行比较与分析,填写表1-1中的(1)~(3)空白处。

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

试题二 系统开发(数据流图 实体、加工、数据流、系统流程图区别)
【问题1】(8分)
根据订餐管理系统功能说明,请在图2-1所示数据流图中给出外部实体E1 ~ E4和加工P1 ~ P4的具体名称。
【问题2】(8分)
根据数据流图规范和订餐管理系统功能说明,请说明在图2-1中需要补充哪些数据流可以构造出完整的0层数据流图。

【问题3】(9分)
根据数据流图的含义,请说明数据流图和系统流程图之间有哪些方面的区别。
(1)数据流图中的处理过程可并行;
系统流程图在某个时间点只能处于一个处理过程。
(2)数据流图展现系统的数据流;系统流程图展现系统的控制流。
(3)数据流图展现全局的处理过程,过程之间遵循不同的计时标准;
系统流程图中 处理过程遵循一致的计时标准。
试题三 嵌入式(信息物理系统三层概念,三类安全威胁)
【问题1】(9分)
通常CPS结构分为感知层、网络层和控制层,请用300字以内文字说明CPS的定义,并简要说明各层的含义。
信息物理系统(Cyber Physical Systems,CPS)作为计算进程和物理进程
的统一体,是集计算、通信与控制于一体的下一代智能系统。
信息物理系统通过人机交互接口实现和物理进程的交互,
使用网络化空间,以远程的、可靠的、实时的、安全的、协作的
方式操控一个物理实体。
感知层:主要由传感器、控制器和采集器等设备组成,
它属于信息物理系统中的末端设备。
网络层:主要是连接信息世界和物理世界的桥梁,
实现的是数据传输,为系统提供实时的网络服务,
保证网络分组传输的实时可靠。
控制层:主要是根据认知结果及物理设备传回来的数据进行相应的分析,
将相应的结果返回给客户端。

【问题3】(6分)
王工在提交的战略规划中指出:未来宇航领域装备将呈现网络化、智能化和综合化等特征,形成集群式的协同能力,安全性尤为重要。在宇航领域的CPS系统中,不同层面上都会存在一定的安全威胁。请用100字以内文字说明CPS系统会存在哪三类安全威胁,并对每类安全威胁至少举出两个例子说明。
(1)感知层安全威胁:感知数据破坏、信息窃听、节点捕获。
(2)网络层安全威胁:拒绝服务攻击、选择性转发、方向误导攻击。
(3)控制层安全威胁:用户隐私泄露、恶意代码、非授权访问。
试题四 数据库(读写并发操作、key/value方案探讨)
【问题1】(11分)
该系统使用过程中,由于同样的数据分别存在于数据库和缓存系统中,必然会造成数据同步或数据不一致性的问题。该企业团队为解决这个问题,提出了如下解决思路:应用程序读数据时,首先读缓存,当该数据不在缓存时,再读取数据库;应用程序写数据吋,先写缓存,成功后再写数据库;或者先写数据库,再写缓存。
王工认为该解决思路并未解决数据同步或数据不一致性的问题,请用100字以内的文字解释其原因。
王工给出了一种可以解决该问题的数据读写步骤如下:
读数据操作的基本步骤:
1.根据key读缓存;
2.读取成功则直接返回;
3.若key不在缓存中时,根据key(a);
4.读取成功后,(b);
5.成功返回。
写数据操作的基本步骤:
1.根据key值写©;
2.成功后(d);
3.成功返回。
请填写完善上述步骤中(a)~(d)处的空白内容。
存在双写不一致问题,在写数据时,可能存在缓存写成功,数据库写失败,
或者反之,从而造成数据不一致。
当多个请求发生时,也可能产生读写冲突的并发问题。
(a)从数据库中读取数据或读数据库
(b)更新缓存中key值或更新缓存
(c)数据库
(d)删除缓存key或使缓存key失效或更新缓存(key值)
【问题2】(8分)
缓存系统一般以key/value形式存储数据,在系统运维中发现,部分针对缓存的杳询,未在缓存系统中找到对应的key,从而引发了大量对数据库服务器的查询请求,最严重时甚至导致了数据库服务器的宕机。
经过运维人员的深入分析,发现存在两种情况:
(1)用户请求的key值在系统中不存在时,会查询数据库系统,加大了数据库服务器的压力;
(2)系统运行期间,发生了黒客攻击,以大量系统不存在的随机key发起了査询请求,从而导致了数据库服务器的宕机。
经过研究,研发团队决定,当在数据库中也未查找到该key时,在缓存系统中为key设置空值,防止对数据库服务器发起重复查询。
请用100字以内文字说明该设置空值方案存在的问题,并给出解决思路。
存在问题:不在系统中的key值是无限的,如果均设置key值为空,
会造成内存资源的极大浪费,引起性能急剧下降。
解决思路:查询缓存之前,对key值进行过滤,
只允许系统中存在的key进行后续操作(例如采用key的bitmap进行过滤)。
【问题3】(6分)
缓存系统中的key—般会存在有效期,超过有效期则key失效;有时也会根据LRU算法将某些key移出内存。当应用软件查询key时,如key失效或不在内存,会重新读取数据库,并更新缓存中的key。
运维团队发现在某些情况下,若大量的key设置了相同的失效时间,导致缓存在同一时刻众多key同时失效,或者瞬间产生对缓存系统不存在key的大量访问,或者缓存系统重启等原因,都会造成数据库服务器请求瞬时爆量,引起大量缓存更新操作,导致整个系统性能急剧下降,进而造成整个系统崩溃。
请用100字以内文字,给出解决该问题的两种不同思路。
思路1:缓存失效后,通过加排它锁或者队列方式
控制数据库写缓存的线程数量,使得缓存更新串行化;
思路2:给不同key设置随机或不同的失效时间,
使失效时间的分布尽量均匀;
思路3:设置两级或多级缓存,避免访问数据库服务器。
试题五 Web应用(非功能性雷求、分布式架构图、Sql注入攻击)


【问题3】(7分)
该物流车辆管理系统需抵御常见的SQL注入攻击,请用200字以内的文字说明什么是SQL注入攻击,并列举出两种抵御SQL注入攻击的方式。
SQL注入攻击,就是通过把SQL命令插入到Web表单提交
或输入域名或页面请求的查询字符串,
最终达到欺骗服务器执行恶意的SQL命令。
可以通过以下方式抵御SQL注入攻击:
1.使用正则表达式;
2.使用参数化的过滤性语句;
3.检査用户输入的合法性;
4.用户相关数据加密处理;
5.存储过程来执行所有的查询;
6.使用专业的漏洞扫描工具。
相关文章:
软考系列(系统架构师)- 2019年系统架构师软考案例分析考点
试题一 软件架构(架构风格、质量属性) 【问题1】(13分) 针对用户级别与折扣规则管理功能的架构设计问题,李工建议采用面向对象的架构风格,而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种…...
安防视频监控系统EasyCVR视频汇聚存储平台定制化开发:新增kafka配置
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…...
C++设计模式_08_Factory Method工厂方法模式
文章目录 1. “对象创建模式”模式1.1 典型模式 2. 动机(Motivation)3. 代码演示Factory Method工厂方法模式3.1 常规方法3.2 面向接口的编程3.2.1 FileSplitter1.cpp3.2.2 MainForm1.cpp 3.3 Factory Method工厂方法3.3.1 ISplitterFactory.cpp3.3.2 Ma…...
【TensorFlow1.X】系列学习笔记【基础一】
【TensorFlow1.X】系列学习笔记【基础一】 大量经典论文的算法均采用 TF 1.x 实现, 为了阅读方便, 同时加深对实现细节的理解, 需要 TF 1.x 的知识 文章目录 【TensorFlow1.X】系列学习笔记【基础一】前言线性回归非线性回归逻辑回归总结 前言 本篇博主将用最简洁的代码由浅入…...
Linux 基础操作手记三(内存篇)
Linux 基础操作手记三 释放内存虚拟机彻底无网络测试网速设置虚拟内存交换空间未使用虚拟机设置虚拟内存无法开机问题GParted - 分配内存系统盘扩容自己 释放内存 sync && echo 3 > /proc/sys/vm/drop_caches 虚拟机彻底无网络 还原默认设置,静静的等待…...
NodeJS的初使用,以及引入第三方插件和安装淘宝镜像的教程
NodeJs 命令 npm init -y 生成package.json文件npm i jquery --save–dev 开发依赖(jQuery后面还可以跟模块,可以有多个)npm i jquery --save 生产依赖npm i jquery --D 开发依赖npm uninstall jquery 卸载删除npm i 把删掉的模块,全部重新加载回来 1.介绍 1.什么是NodeJs?…...
Java读取文件的N种方法
1.概述 在这篇文章里, 我们将探索不同的方式从文件中读取数据。 首先, 学习通过标准的的Java类,从classpath、URL或者Jar中加载文件。 然后,学习通用BufferedReader, Scanner, StreamTokenizer, DataInputStream, SequenceInput…...
子类的构造与析构过程
一、简介 父类,也称基类,其构造方法和析构方法不能被继承; 子类,也称派生类,继承父类的方法和属性,但要加入新的构造和析构函数。 二、构造与析构过程 构造:先调用父类——>再调用子类 析构&…...
位运算相关笔记
位运算 Part 1:基础 左移:左移一位,相当于某数乘以 2 2 2。左移 x x x位,相当于该数乘以 2 x 2^x 2x。 右移:右移一位,相当于某数除以 2 2 2。右移 x x x位,相当于该数除以 2 x 2^x 2x。 与运算&…...
uniapp 安装 u-view 组件库
u-view 组件库安装教程:https://uviewui.com/components/install.html 注:以下使用 HBuilderx 安装 u-view 2.0 版本,不适用于其它版本。 1.安装 u-view 组件库 2、注册并登录 HBuilderx 账号,点击下载 u-view 组件库。 3、点击…...
Go 语言的成功案例:谁在使用 Go?
Go 语言,也被称为 Golang,是一门由Google开发的开源编程语言。自从2009年首次亮相以来,它在编程社区中崭露头角,并吸引了越来越多的开发者和组织。Go 以其高效的并发性、出色的性能和简单易懂的语法而闻名。在本文中,我…...
UG\NX二次开发 实时查看 NX 日志文件
文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 a18037198459 订阅本专栏,非常感谢。 简介 实时查看 NX 日志文件,有助于分析保存时间等。打开WindowsPowerShell并实时获取日志文件内容的小功能。 效果 代…...
ZooKeeper+HBase分布式集群环境搭建
安装版本:hadoop-2.10.1、zookeeper-3.4.12、hbase-2.3.1 一、zookeeper集群搭建与配置 1.下载zookeeper安装包 2.解压移动zookeeper 3.修改配置文件(创建文件夹) 4.进入conf/ 5.修改zoo.cfg文件 6.进入/usr/local/zookeeper-3.4.12/zkdata…...
喜讯!持安科技入选2023年北京市知识产权试点单位!
近日,北京市知识产权局发布了“2023年度北京市知识产权试点示范单位及2020年度北京市知识产权试点示范单位复审通过名单”名单。 经过严格的初审、形式审核和专家评审,北京持安科技有限公司入选“2023年北京市知识产权试点单位”。 北京市知识产权试点示…...
笙默考试管理系统-MyExamTest----codemirror(39)
笙默考试管理系统-MyExamTest----codemirror(39) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 笙默考试…...
抛砖引玉:Redis 与 接口自动化测试框架的结合
接口自动化测试已成为保证软件质量和稳定性的重要手段。而Redis作为一个高性能的缓存数据库,具备快速读写、多种数据结构等特点,为接口自动化测试提供了强大的支持。勇哥这里粗略介绍如何结合Python操作Redis,并将其应用于接口自动化测试框架…...
网站如何才能不被黑,如何做好网络安全
当企业网站受到攻击时,首页文件可能被篡改,百度快照也可能被劫持并重定向到其他网站。首要任务是加强网站的安全防护。然而,许多企业缺乏建立完善的网站安全防护体系的知识。因此,需要专业的网站安全公司来提供相应的保护措施。今…...
人脸写真FaceChain风格写真的试玩(二)
接着上一篇【人脸写真FaceChain的简单部署记录(一)】来试玩一下。 1 无限风格写真 参考:让你拥有专属且万能的AI摄影师AI修图师——FaceChain迎来最大版本更新 1.1 人物形象训练 这里的步骤比较简单,就是选择照片,然…...
PHP 变量
变量 变量的声明、使用、释放 变量定义 形式 $ 变量名;严格区分大小写 $name; $Name; $NAME //三个变量不是同一个变量字母、数字、下划线组成,不能以数字开头,不能包含其他字符(空白字符、特殊字符) 驼峰式命名法、下划线式命名法 $first_name; $fi…...
牛客小白月赛79
给定一个数字n,你可以对它进行接下来的操作—— 选择数字中任意一个数位删除 例如对1024选择操作百位,数字则变成了124;对1024选择操作千位,数字则变成了024 我们称一个数字是干净的,当且仅当数字满足以下任意一种…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
