软考系列(系统架构师)- 2021年系统架构师软考案例分析考点

news2024/11/16 11:24:57

试题一 软件架构(架构风格、质量属性)

【问题1】(9分)
在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。 请将合适的质量属性名称填入图1-1中(1)、(2)空白处,并从题干中的(a)-(i)中选择合适的质量属性描述,填入(3)-(6)空白处,完成该平台的效用树。
image
【问题2】(16分)
针对该系统的功能,赵工建议采用解释器(interpreter)架构风格,李工建议采用管道过滤器(pipe-and-filter)的架构风格,王工则建议采用隐式调用(implicit invocation)架构风格。请针对平台的核心应用场景,从机器学习流程定义的灵活性和学习算法的可扩展性两个方面对三种架构风格进行对比与分析,并指出该平台更适合采用哪种架构风格。

本题系统中有多个应用场景提到了系统分角色有不同的操作流程与界面,以及在修改扩充系统时,
需要能够在限定时间内快速完成任务。基于这样的情况,我们从两方面进行分析:
解释器:机器学习流程定义的灵活性高,可扩展能力强,
因为解释器风格可以通过自定义流程规则及配套流程解释引擎开发,
做到用户层面的流程完全定义,而不需要修改代码,所以无论是修改已有的业务流程,
还是要扩展不同的角色,创建新角色的流程都非常便利。
管道过滤器:机器学习流程定义的灵活性较低,可扩展能力较弱,
因为管道过滤器是把数据处理职能做成过滤器,把数据传递做成管道,此时如果流程不发生变化,
是可以通过这种方式实现的,但一旦流程变化,或是扩展功能,需要对过滤器进行修改调整,
或是流程在程序层面重建,此时必须修改代码完成任务。
隐式调用:机器学习流程定义的灵活性一般,可扩展能力一般,隐式调用强调的是通过间接方式
进行调用,如采用事件机制,要完成某个动作时先触发事件,事件与相关动作关联,
以提升灵活度,本题中可把角色执行业务的流程用事件触发。这种做法比管道过滤器强,
但弱于完全自定义的解释器。

试题二 系统开发(用例图、顺序图填空、模型对比)

image
image
【问题3】(9分)
采用面向对象方法开发软件,通常需要建立对象模型、动态模型和功能模型,请分别介绍这3种模型,并详细说明它们之间的关联关系,针对上述模型,说明哪些模型可用于软件的需求分析?

概念:
对象模型描述了系统的静态结构,一般使用对象图来建模。
对象模型是整个体系中最基础,最核心的部分。
动态模型描述了系统的交互次序,一般使用状态图来建模。
功能模型描述 了系统的数据变换,一般使用数据流图来建模。
相互关系:
对象模型描述了动态模型和功能模型所操作的数据结构,
对象模型中的操作对应于动态模型中事件和功能模型中的函数;
动态模型描述了对象模型的控制结构,告诉我们哪些决策是依赖于对象值,
哪些引起对象的变化,并激活功能;
功能模型描述了由对象模型中操作和动态模型中动作所激活的功能,
而功能模型作用在对象模型说明的数据上,同时还表示了对对象值的约束。

试题三 嵌入式

image
image

数据定义:数据定义要反映业务模式的本质,确保数据架构为业务提供全面、一致、完整的
高质量数据。数据定义要划分应用系统边界,明确数据引用关系,定义应用系统间的基础接口。
定义数据模型主要包括:数据概念模型、数据逻辑模型、数据物理模型和数据标准。

数据分布:数据分布是数据系统分布的基础。包含数据业务、数据分析和数据存储。
数据业务是分析业务数据在业务各环节的创建、引用、修改或删除的关系。
数据分析是在单一应用系统中的分析数据结构与应用系统各功能间的引用关系,分析数据在多个系统
间的引用关系。
数据存储包含分析数据集中存储和数据分布存储两种模式,要根据需求选择数据分布策略。

数据管理:数据管理是要制定贯穿数据生命周期的各项管理制度,包括:数据模型与数据标准管理,
数据分布管理,数据质量管理和数据安全管理等制度。确定数据管理组织或岗位。

image
image
image

试题四 数据库(反规范化设计方法、数据不一致、redis 同步)

image

常见的反规范化技术包括:
(1)增加冗余列:增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。
(2)增加派生列:增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。
(3)重新组表:重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
(4)分割表:有时对表做分割可以提高性能。
用户查询商品信息应该采用:增加冗余列。
用户查询商品信息时,需要显示药品信息(药品表中),供应商信息(供应商表),库存信息(库存表中),此时查询的是药品表,但表中缺了供应商的信息和库存信息,可以通过增加冗余列的方式把这些信息并过来。以避免连接操作带来的查询性能下降。

【问题2】(9分)
王工认为,反规范化设计可提高查询的性能,但必然会带来数据的不一致性问题。请用200字以内的文字说明在反规范化设计中,解决数据不一致性问题的三种常见方法,并说明该系统应该采用哪种方法。

针对反规范化数据不一致问题,可采用的解决方案包括:
1、触发器数据同步
2、应用程序数据同步
3、物化视图
4、批处理同步
本系统应采用触发器数据同步方式

【问题3】(7分)
该系统采用了Redis来实现某些特定功能(如当前热销药品排名等),同时将药品关系数据放到内存以提高商品查询的性能,但必然会造成Redis和MySQL的数据实时同步问题。
(1) Redis的数据类型包括String、 Hash、 List、 Set和ZSet等,请说明实现当前热销药品排名的功能应该选择使用哪种数据类型。
(2)请用200字以内的文字解释说明解决Redis和MySQL数据实时同步问题的常见方案。

(1)热销药品排名适合用:ZSet,即有序集合类型
(2)
1、实时同步方案,先查缓存,查不到再从DB查询,并保存到缓存;更新缓存时先更新数据库,再将缓存设置过期。
2、异步队列方式同步,可采用消息中间件处理。
3、通过数据库插件完成数据同步。
4、利用触发器进行缓存同步。

试题五 Web应用(云平台智能家居,看图填空,TCP/UDP 区别)

【问题1】(8分)
请用400字以内的文字简要描述基于家庭网关的传统智能家居管理系统和基于云平台的智能家居管理系统在网关管理、数据处理和系统性能等方面的特点,以说明项目组选择李工设计思路的原因。

网关管理:云平台更强,可以实现远程网关管理,可以对不同地点的多种设备进行统一管理,
管理能力更强。
数据处理:数据一般经由网关传递到云上数据库中,再进行处理,这样对数据进行分析、挖掘更便利,同时存储在云端,数据更安全,有容灾能力。
系统性能:数据存在云上数据库中,通信效率更高,同时云也有更强的数据处理能力,
所以会更高效。

image
【问题3】(5分)
该系统需实现用户终端与服务端的双向可靠通信,请用300字以内的文字从数据传输可靠性的角度对比分析TCP和UDP通信协议的不同,并说明该系统应采用哪种通信协议。

该系统应采用TCP协议,这样才能保障用户终端和服务端之间的双向可靠通信。
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP之所以可靠,
是因为建立连接时有3次握手,通信时有回应机制,所以丢了包,能重传以保障通信可靠性。
UDP是一种面向无连接的传输层通信协议,丢了包不会重传,所以不能保障通信可靠性。

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

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

相关文章

教您2个方法,轻松学会如何克隆硬盘或分区!

为什么需要克隆硬盘或分区? 在现在,学会如何克隆硬盘或分区是很重要的,因为这项技能本身是很简单的,并且也能够为我们带来足够多的好处与便利。 备份恢复:通过克隆硬盘驱动器或分区,您可以创建…

企业文件加密软件!哪个好用?

天锐绿盾是一款专业的企业文件加密软件,提供了多种功能来保护企业文件的安全。它的主要功能包括文件加密、文件外发控制、打印内容监控、内网行为管理、外网安全管理、文件管理控制、邮件白名单管理和U盘认证管理等功能。 PC访问地址: https://isite.ba…

节奏达人疯狂猜歌双端流量主小程序开发

节奏达人疯狂猜歌双端流量主小程序开发 流量主小程序千千万,可以长期运营且留存高的,猜歌小程序必有一席之地。 好运营:依靠社交属性,可以快速短时间裂变。依靠短视频可以快速吸引玩家。 活跃度高,粘性高&#xff0…

0基础学习PyFlink——使用PyFlink的SQL进行字数统计

在《0基础学习PyFlink——Map和Reduce函数处理单词统计》和《0基础学习PyFlink——模拟Hadoop流程》这两篇文章中,我们使用了Python基础函数实现了字(符)统计的功能。这篇我们将切入PyFlink,使用这个框架实现字数统计功能。 PyFl…

深入解析i++和++i的区别及性能影响

在我们编写代码时,经常需要对变量进行自增操作。这种情况下,我们通常会用到两种常见的操作符:i和i。最近在阅读博客时,我偶然看到了有关i和i性能的讨论。之前我一直在使用它们,但从未从性能的角度考虑过,这…

微信小程序——后台交互

目录 后台准备 pom.xml 配置数据源 整合mtbatis 前后端交互 method1 method2 后台准备 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org…

第二章 16位微处理器

考点1&#xff1a;功能结构类型、寄存器结构的类型 8088/86寄存器的总结 有8个8位、8个16位通用寄存器 有6个状态标志和3个控制标志 将1MB存储空间分段管理,有4个段寄存器【CPU中】&#xff0c;对应程序中4种逻辑段【段首地址】 默认【DS】的情况允许改变,需要使用段超越前…

nginx安装详细步骤和使用说明

下载地址&#xff1a; https://download.csdn.net/download/jinhuding/88463932 详细说明和使用参考&#xff1a; 地址&#xff1a;http://www.gxcode.top/code 一 nginx安装步骤&#xff1a; 1.nginx安装与运行 官网 http://nginx.org/1.1安装gcc环境 # yum install gcc-c…

k8s-----9、pod 影响调度的因素

资源限制和节点选择器 1、pod资源限制2、节点选择器&#xff08;pod属性&#xff09;3、 节点亲和性(nodeAffinity)&#xff08;pod属性&#xff09;3.1 硬和软亲和性3.2 反亲和性 4、污点&#xff08;taint&#xff09;和污点容忍&#xff08;节点属性&#xff09;4.1 定义4.2…

Janus: Data-Centric MoE 通讯成本分析(2)

文章链接&#xff1a;Janus: A Unified Distributed Training Framework for Sparse Mixture-of-Experts Models 发表会议: ACM SIGCOMM 2023 (计算机网络顶会) 系统学习&#xff1a;Janus: 逆向思维&#xff0c;以数据为中心的MoE训练范式&#xff08;1&#xff09; 目录 前…

【Javascrpt】比较,逻辑运算符

目录 比较运算符 逻辑运算符 &&(与&#xff09; ||&#xff08;或&#xff09; 两真&#xff08;||左侧为真&#xff0c;||右侧为真&#xff09; 两假&#xff08;||左侧为假&#xff0c;右侧为假&#xff09; 一真一假&#xff08;||一侧为假&#xff0c;另一侧为…

接口自动化必学的20个难点,学完至少涨5k

难点1&#xff1a;接口文档的不完整性 当我开始设计接口自动化测试用例时&#xff0c;我发现接口文档非常不完整。有些必要的字段没有说明&#xff0c;有些接口没有文档&#xff0c;这给我带来了很大的困难。 解决方案&#xff1a;与开发人员进行沟通&#xff0c;尽可能补充接口…

【Java集合类面试十】、HashMap中的循环链表是如何产生的?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;HashMap中的循环链表是如…

单片机矩阵键盘

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、什么是矩阵键盘&#xff1f;1.独立键盘2.矩阵键盘变化1变化2变化3 3. 通过变型&#xff0c;举一反三&#xff0c;就可以实现4*4的矩阵键盘扫描 二、使用步骤…

一文教你学会使用Cron表达式定时备份MySQL数据库

各位小伙伴大家好&#xff0c;今天我就来讲述一下作为一个运维&#xff0c;如何解放自己的双手去让服务器定时备份数据库数据&#xff0c;防止程序操作数据库出现数据丢失。 mysql_dump_script.sh脚本文件 #!/bin/bash#保存备份个数&#xff0c;备份7天数据 number7 #备份保存…

使用Kali进行实验---主机发现

主机发现 【实训目的】 掌握主机扫描的工作原理&#xff0c;学会使用ping等扫描工具&#xff0c;发现网络当中活跃的主机。 【场景描述】 在虚拟机环境下配置4个虚拟系统“Win XP1” “Win XP2” “Kali Linux”和“Metasploitable2”&#xff0c;使得4个系统之间能够相互通…

数据结构与算法第一课

文章目录 数据结构什么是数据结构数据结构相关单位 物理结构与逻辑结构物理结构逻辑结构 算法一个案例认识算法的重要性时间复杂度与空间复杂度时间复杂度事前计算时间复杂度与事后判断时间复杂度函数的渐进式变化常见函数的时间复杂度最坏时间与平均时间 空间复杂度 先看下目录…

使用vite搭建前端项目

1、在vscode 终端那里执行创建前端工程项目&#xff0c;其中shop-admin为项目名称&#xff1a; npm init vite-app shop-admin 提示如需安装其他依赖执行npm install ....,否则忽略(第三步再讲)。 2、执行npm run dev 命令直接运行创建好的项目&#xff0c;在浏览器打开链接…

变量的引用

1、变量 和 数据 都是保存在 内存 中的 2、在 Python 中 函数的参数传递以及返回值都是靠引用传递的 引用的概念 在 Python 中变量 和 数据 是分开存储的&#xff1b;数据 保存在内存中的一个位置&#xff1b;变量 中保存着数据在内存中的地址&#xff1b;变量 中 记录数据的…

初步认识Java

文章目录 一、什么是Java1、Java语言的重要性2、Java语言的发展史3、Java语言的特性 二、初识Java的main方法1、main方法示例2、运行Java程序3、JDK、JRE、JVM之间的关系 三、注释四、标识符 一、什么是Java Java是一种优秀的程序设计语言&#xff0c;它具有令人赏心悦目的语法…