当前位置: 首页 > news >正文

【软件系统架构设计师-案例-1】架构风格

1. 请用200字以内说明系统可靠性的定义及包含的4个子特性,并简要指出提高系统可靠性一般采用哪些技术?

(1)可靠性定义:系统在规定的时间或环境条件下,完成规定功能的能力,就是系统无故障运行的概率。
(2)包含的4个子特性:成熟性、容错性、易恢复性、可靠性。
(3)提高可靠性的4类技术:冗余技术、软件容错技术、双机容错技术、集群技术。

2. 围绕“软件架构风格”,简要说明你参与的系统开发工作。

(1)在企业家电商平台项目中,我采用了分层架构的架构风格,将软件系统分为不同的层次,每个层次都有明确的职责和功能,层与层之间通过接口通信。这个架构风格有助于提高软件的可维护性、可拓展性和可测试性。
(2)表示层:负责与用户做交互,展示商品信息、订单状态等。接受用户的输入,如点击、添加、提交等操作,并将这些操作传递给业务逻辑层。我们使用了前端技术框架。React.js来提供流畅的用户界面和交互。
业务逻辑层:处理核心的业务逻辑,如商品管理、订单处理、用户授权等,是整个系统的核心,负责协调各个模块之间的关系,确保业务规则的正确执行。
数据访问层:负责与数据库做交互,执行数据的存储、查询、更新等操作。将业务逻辑层的请求转化为对数据库的操作,如SQL查询语句,然后从数据库获取的数据返回给业务逻辑层。我们使用了数据库抽象层框架,如MyBatis,可以根据不同的数据库类型生成相应的SQL语句。
(3)主要做的工作内容,做架构风格的选型分析,收集和整理项目资料,技术选型,设计模式的选取。根据需求文档,设计和实现业务逻辑层的关键模块,比如订单处理模块的开发,编写单元测试框架对业务代码进行测试。参与定义表示层到业务逻辑层、业务逻辑层到数据访问层之间的接口,明确各个接口的输入输出参数、功能职责,确保层与层之间的通信清晰、高效。对层间接口进行优化,当新的业务功能需要在多个层次之间传递更多信息时,我们及时调整接口的参数结构,确保接口的稳定性,尽量减少对其他层代码的影响。

3. 质量属性

(1)性能:
例1:在正常负载情况下,系统应在0.3秒内对用户的界面操作请求进行响应。
例2:在正常负载情况下,用户支付商品费用后在3秒内确认订单支付信息。
例3:在查询过程中,涉及到车辆实时视频传输必须保证20帧/秒的速率,且画面有660x480的分辨率。
例4:系统应支持大于100个工业设备的进行检测。
(2)安全性:
例1:用户的信用卡支付必须保证99.999%的安全性。
例2:用户信息数据库授权必须保证99.999%的可用性。
例3:用户停滞时间超过时限需要验证。
(3)可用性:
例1:系统应该7X24小时工作。
例2:能够运行的时间不少于360小时,意外退出后能够在10S内自动重启。
(4)可修改性
例1:修改接口,需要3人/天完成。
例2:集成开发环境拥有丰富的插件库。
例3:支持用户通过配置界面根据自己的喜好修改界面风格,配置后无需修改环境。
(5)易用性(讨论是客户的习惯问题)
例1:系统进行文件保存操作时,应该与window系统的操作方式保持一致。
(6)可测试性
例1:系统应该提供一个开放的API接口,支持远程对系统的行为进行控制和调试。
例2:集成开发环境具有模块化结构,支持以模块为单位进行调试、测试和发布。
(7)可靠性
例1:系统具有故障自行诊断和快速恢复能力。
例2:系统能识别供应商异常的报价并防止干扰评选。
(8)互操作性
例1:用户界面支持用户的个性化定制。
例2:系统需要支持当前的主流的标准和服务,特别是通信协议和平台接口。

4. 从集成开发环境与用户的交互方式、集成开发环境的拓展性、集成开发环境的数据管理三个方面说明为什么选择数据存储风格而不使用管道过滤器风格?

(1)采用以数据存储的风格很好地支持交互式数据处理,而管道过滤器则对用户的交互式数据支持有限。
(2)以数据存储的风格以数据格式解耦各个功能之间的依赖关系,可以灵活定义功能之间的逻辑顺序,扩展性好,而管道过滤器灵活定义方面较差。
(3)数据管理方面,中心存储器能表示多种数据格式,并能够提供各种支持,管道过滤器只能支持有限的数据格式。
在这里插入图片描述
(1)语法结构树
(2)编辑器
(3)适配器
(4)应用模拟器工具

5. 面向对象风格与虚拟机风格:

可修改性:面向对象风格通过编写新的规则代码,通过应用重启或热加载添加规则,可修改性差;解释器风格通过编写新的规则文件,通过导入资源文件或外部配置添加规则,可修改性好。
灵活性:面向对象风格通过策略模式定义规则对象,规则以程序逻辑实现,灵活性较差;解释器可灵活定义规则计算表达式,灵活性更好。
性能:面向对象风格以编译后代码运算规则,性能好;而虚拟机风格需要加载规则、解析规则、规则运算,再得出结果,性能较差。
面向对象风格:效率高质量高易维护,可扩展性与性能较好,可修改性与灵活性较差。
解释器风格(虚拟机风格):可修改性高,个性化和灵活性强,性能较差。
【面向对象设计模式中的策略模式和虚拟机中的基于规则的架构风格是动态规则场景中两种常用的解决方案,基于规则的虚拟机风格在灵活性和可扩展性两个方面均具备较大优势,而从性能方面会比面向对象处理速度差一些】

6. 管道-过滤器、隐式调用、解释器风格三种架构风格在灵活性和可扩展性的分析与对比:

管道过滤器风格:每个构件都有一组输入输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。管道是连接件,过滤器是构件。
隐式调用风格:构件不直接调用一个过程,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另一个模块中的过程调用。
解释器风格:构建一个运行环境,在这个环境上,能解析和运行定义的一些语言增加架构的灵活性。适用于“自定义规则的场合”。

灵活性:管道-过滤器架构风格具有良好的灵活性。通过将系统分解为一系列独立的过滤器组件,可以灵活地组合和配置这些组件以满足不同的需求。解释器风格可以通过灵活的自定义规则来实现规则的重组,灵活性强。隐式调用架构风格相对较为简单,灵活性较低。在这种架构中,系统的组件之间通过隐式的调用来实现通信和协作。这种紧耦合的方式限制了组件之间的独立性和灵活性。
可扩展性:管道-过滤器架构风格具有较好的可扩展性。由于过滤器之间通过管道进行松耦合的通信,可以方便地添加、删除或替换过滤器组件,以实现系统的功能扩展。解释器架构风格的可扩展性相对较强。由于解释器本身可以解释和执行各种语言或规则,因此可以通过添加新的解释器来扩展系统的功能。隐式调用架构风格的可扩展性较差。由于组件之间的紧耦合和依赖关系,添加新的组件或修改现有的组件可能会导致较大的影响范围和修改工作量。这会增加系统的复杂性,并降低可扩展性。

7. 集成开发环境需要一组可视化的编程界面,用户通过对界面元素的拖拽和代码填充的方式就可以完成功能插件核心业务流程。用什么架构风格?

应该采用解释器架构风格。首先需要,1.为可视化编程元素以及其拖拽关系定义某种语言,并描述其语法和语义。2. 编写解释器对该语言解释。 3. 生成对应的脚本语言程序。

8. 集成开发环境需要实现在脚本语言编辑界面中的代码自动定位功能,编辑界面需要响应调试断点命中事件,并自动跳转到当前断点处对应的代码。用什么架构风格?

应采用事件驱动(隐式调用)架构风格,首先需要定义“断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。集成开发环境维护事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表的记录项。在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调式代码的自动定位。

相关文章:

【软件系统架构设计师-案例-1】架构风格

1. 请用200字以内说明系统可靠性的定义及包含的4个子特性,并简要指出提高系统可靠性一般采用哪些技术? (1)可靠性定义:系统在规定的时间或环境条件下,完成规定功能的能力,就是系统无故障运行的…...

神经网络整体架构

文章目录 1.输入层Input2.卷积层Conv3.激活函数层(一)Sigmoid 函数(二)Tanh 函数(三)修正线性单元ReLU(四)Leaky ReLU函数(带泄露的Relu)(五)参数化ReLU 4.池化层POOL5.全连接层FC6.输出层Output 用全连接神经网络处理大尺寸图像具有三个明显的缺点: ①将图像展开为…...

山西农业大学20241010

02-JAVASCRIPT 一.JS基础语法1. 数据类型转换1.1 隐式转换1.2 强制转换 2. 运算符 二.JS语句1. 条件语句2. 循环语句 三.函数(方法)1. 声明函数的第一种方法2. 声明函数的第二种方法3. 声明函数的第三种方法 四.对象1. 对象的创建 -- 字面量2. 访问对象的属性3. 内置构造函数以…...

小北的技术博客:探索华为昇腾CANN训练营与AI技术创新——Ascend C算子开发能力认证考试(中级)

前言 哈喽哈喽,这里是zyll~,北浊.(大家可以亲切的呼唤我叫小北)智慧龙阁的创始人,一个在大数据和全站领域不断深耕的技术创作者。今天,我想和大家分享一些关于华为昇腾CANN训练营以及AI技术创新的最新资讯和实践经验~(初级证书还没拿到的小伙伴,可以先参考小北的这篇技术…...

Docker极速入门一文通

文章目录 Docker极速入门一文通Docker命令搜索镜像docker search拉取镜像|下载镜像docker pull查看镜像docker images删除镜像docker rmi运行容器docker run查看容器 docker ps删除容器 docker rm后台启动容器 docker run -d进入容器 docker exec拷贝文件到容器 docker cp拷贝容…...

Unity网络开发基础 —— 实践小项目

概述 接Unity网络开发基础 导入基础知识中的代码 需求分析 手动写Handler类 手动书写消息池 using GamePlayer; using System; using System.Collections; using System.Collections.Generic; using UnityEngine;/// <summary> /// 消息池中 主要是用于 注册 ID和消息类…...

四、Spring Boot集成Spring Security之认证流程

Spring Boot集成Spring Security之认证流程 一、概要说明二、基于内存的用户名密码1、默认用户名密码2、自定义用户名密码3、为方便测试添加测试接口TestController 三、登录登出重要概念介绍四、登录业务逻辑1、登录业务相关过滤器2、访问业务请求处理流程①、访问业务请求地址…...

Chromium 中chrome.bookmarks扩展接口c++实现

一、扩展接口定义 chrome.bookmarks 使用 chrome.bookmarks API 创建、整理以及以其他方式操纵书签。另请参阅覆盖网页&#xff08;可用于创建自定义“书签管理器”页面&#xff09;。 更多参考chrome.bookmarks | API | Chrome for Developers (google.cn) 扩展可以请从…...

编程思想:编程范式:响应式编程

文章目录 概述实现的设计模式举例总结概述 响应 响应一般指对于事件的响应,事件包括数据变化或其他事件 响应流程包括事件的发生,事件的传递,和事件的最终处理 事件在起点处发生,开始传递过程 传递过程,包括对事件的一系列处理,如事件封装的数据的类型转化,数据集合…...

Leetcode 颜色分类

这个算法采用了荷兰国旗问题&#xff08;Dutch National Flag Problem&#xff09;的解法思想&#xff0c;用三个指针将数组中的元素分为三个区域&#xff0c;并且对这些区域进行动态调整&#xff0c;达到排序的目的。 算法思想&#xff1a; 三个指针&#xff1a; low 指针表示…...

ssh连接阿里云长连接

如何让ssh保持连接&#xff1f; 有时候用ssh连接阿里云莫名奇妙断开了。怎么样才能保持连接呢&#xff1f; 修改系统的链接参数: &#xff08;1&#xff09;修改/etc/ssh/sshd_config文件&#xff0c;找到 ClientAliveInterval 0和ClientAliveCountMax 3并将注释符号&#x…...

栈的C实现

栈的C实现 栈简介栈的C实现1.栈结构体2.初始化栈3.栈的基本操作 栈简介 栈&#xff08;Stack&#xff09;是一种后进先出的数据结构&#xff0c;类似于一个垂直的容器。 栈的特点是后进先出&#xff0c;即最后入栈的元素最先出栈。栈可以用来解决递归问题、实现函数调用、以及…...

【MySQL】入门篇—数据库基础:关系数据库概念

一、背景与重要性 在当今数字化时代&#xff0c;数据的管理和存储变得尤为重要。无论是企业的客户信息、产品数据&#xff0c;还是社交媒体上的用户互动&#xff0c;数据都是推动业务和决策的核心。 关系数据库管理系统&#xff08;RDBMS&#xff09;是一种广泛使用的数据管理…...

不到千元的自动猫砂盆是智商税吗?这四大选购技巧不看就亏大了

虽然现在的人都说&#xff0c;猫砂盆等上班一天回来再清理也没有任何关系&#xff0c;但实际上在这一天里&#xff0c;猫咪的粪便已经在猫砂盆里滋生了很多无法察觉的细菌&#xff0c;久而久之就会影响猫咪的健康&#xff0c;导致尿闭&#xff0c;放了一天的便便臭味也让人无法…...

【图论】(二)图论基础与路径问题

图论基础与路径问题 图的构造邻接矩阵邻接表 所有可达路径邻接矩阵存储邻接表存储 字符串接龙有向图的完全可达性 图的构造 这里仅对图论路径问题中图的构造做整理总结归纳&#xff0c;具体详细相关概念请参考代码随想录上的整理总结&#xff1a; 图论理论基础深度优先搜索理…...

Git常用命令(持续更新中)

mkdir one 在当前目录下创建一个名为one的文件夹 cd one 进入one 文件夹 git init 初始化git 仓库 touch README.md 创建一个后缀为.md的新文件README.md git add README.md 将README.md添加到git暂存区 git add * . * 将所有文件添加到暂存区 git add "E:/t…...

什么是PLM系统?PLM系统对制造业起到哪些作用?三品PLM系统对汽车制造业意义

在当今竞争激烈的制造业环境中&#xff0c;企业面临着来自市场、技术、客户需求等多方面的挑战。为了应对这些挑战&#xff0c;许多制造企业纷纷引入产品生命周期管理PLM系统&#xff0c;以实现更高效、更灵活的产品全生命周期管理。PLM系统以其独特的优势&#xff0c;在优化产…...

Pr 视频效果:元数据和时间码刻录

视频效果/视频/元数据和时间码刻录 Video/Metadata & Timecode Burn-in 元数据和时间码刻录 Metadata & Timecode Burn-in效果是一种在视频画面上叠加显示剪辑元数据或时间码的工具。它允许在导出视频时&#xff0c;将需用的元数据信息直接刻录在画面上&#xff0c;方便…...

前端MD5加密

1.导入包 npm install --save ts-md5 2.使用方式 import { Md5 } from ts-md5;//md5加密后的密码 const md5PwdMd5.hashStr("123456").toUpperCase(); 3. Vue解析token中携带的数据 3.1 安装插件 npm install jwt-decode --save 3.2 引入 import {jwtDecode} fro…...

仿IOS桌面悬浮球(支持拖拽、自动吸附、自动改变透明度与点击、兼容PC端与移动端)

使用 pointerdown/pointermove/pointerup 实现仿IOS桌面悬浮球效果&#xff0c;支持拖拽、指定拖拽选对容器&#xff0c;指定拖拽安全区、自动吸附、自动改变透明度与点击&#xff0c;兼容PC端与移动端。 效果展示 https://code.juejin.cn/pen/7423757568268304421 代码实现 …...

智谱开放平台API调用解析

一、什么是智谱AI 智谱AI成立于2019年&#xff0c;由‌清华大学计算机系知识工程实验室的技术成果转化而来&#xff0c;是一家致力于人工智能技术研发和应用的公司。智谱致力于打造新一代认知智能大模型&#xff0c;专注于做大模型的中国创新。 二、智谱开放平台API调用 官方文…...

Linux中定时删除10天前的日志文件

例如&#xff1a;删除/data/log/目录下所有10天前的.log文件 find /data/log/ -type f -name "*.log" -mtime 10 -exec rm -f {} \;只查看要删除的文件有哪些&#xff0c;不真正删除文件 logfiles$(find /data/log/ -type f -name "*.log" -mtime 10) ec…...

贝壳Android面试题及参考答案

详细说Final关键字 在编程语言中,final关键字具有重要的作用。以下为你详细介绍final关键字: 一、final关键字的主要作用 修饰变量 当final修饰基本数据类型变量时,该变量的值一旦被初始化就不能再被改变。例如:final int num = 10;num = 20; // 这会导致编译错误当final修…...

基于vue的酒店预订管理系统(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

FreeRTOS——TCB任务控制块、任务句柄、任务栈详解

任务控制块结构体 任务控制块是 FreeRTOS 中用于描述和管理任务的数据结构&#xff0c;包含了任务的状态、优先级、堆栈等信息。 TCB_t的全称为Task Control Block&#xff0c;也就是任务控制块&#xff0c;这个结构体包含了一个任务所有的信息&#xff0c;它的定义以及相关变…...

【STM32单片机_(HAL库)】4-5-2【定时器TIM】【感应开关盖垃圾桶项目】HC-SR04超声波模块实验

1.硬件 STM32单片机最小系统HC-SR04超声波模块 2.软件 hcsr04驱动文件添加main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "uart1.h" #include "hcsr04.h"int main(void) {HAL_Init(); …...

安全网络架构

网络安全解决方案是指通过一系列技术和措施来保护网络系统和数据的安全。它涉及多个方面&#xff0c;包括网络设备的防护、数据的加密和备份、安全策略的制定和执行等。以下是一些常见的网络安全解决方案&#xff1a; 防火墙&#xff1a;防火墙是一种硬件或软件设备&#xff0c…...

【万字长文】Word2Vec计算详解(二)Skip-gram模型

【万字长文】Word2Vec计算详解&#xff08;二&#xff09;Skip-gram模型 写在前面 本篇介绍Word2Vec中的第二个模型Skip-gram模型 【万字长文】Word2Vec计算详解&#xff08;一&#xff09;CBOW模型 markdown行 9000 【万字长文】Word2Vec计算详解&#xff08;二&#xff09;S…...

随机掉落的项目足迹:解决TypeError: Cannot read properties of undefined (reading ‘push‘)报错

问题引入 下面是request.js中请求拦截器相关的代码 但是运行时却出现了报错 问题解决 useRouter() 是 Vue Router 提供的组合式 API&#xff0c;它只能在 Vue 组件的 setup() 函数中有效。如果在其他地方&#xff08;例如 Axios 的拦截器中&#xff09;调用它&#xff0c;可…...

ChatTTS 本地安装和测试

Ubuntu 22服务器&#xff0c;3.9/3.10都可以&#xff0c;但是 3.11不可以 sudo apt install python3.10 apt install python3.10 python3.10-dev #ubuntu 22 安装python3.10对应的pip3.10 # 下载 get-pip.py curl -sS https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 使…...