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

news2024/11/24 19:12:08

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

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

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

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

相关文章

【AD速成】半小时入门AltiumDesigner(速通基础)

一.创建工程 1.工程 文件->新的->项目 PCB选择<Default>Project Name填入自己的工程名称Folder选择工程保存的路径 创建后如图&#xff1a; 这里的.prjPcb的文件即为AD的工程文件。 如果没有Project栏可以在视图->面板->Projects中勾选Projects CtrlS保存工…

Java学习-JVM调优

目录 1. JDK工具包 1.1 jps 1.2 jstat 1.3 jinfo 1.4 jmap 1.5 jhat 1.6 jstack 1.7 VisualVM 2. 第三方工具 2.1 GCEasy 2.2 MAT 2.3 Arthas 3. JVM参数 3.1 标准参数 3.2 非标准参数 3.3 不稳定参数 4. 调优 4.1 什么时候调优 4.2 调优调什么 4.3 调优原…

LINUX 系统管理操作

基础编辑 Tab 单击一次补全 双击列举候选 CTRL U 删除光标前 K 删除光标后 L 清屏&#xff08;只剩新命令行&#xff09; C 取消当前操作 反斜杠“\” 在需要转行的时候输入反斜杠 “\”回车 在>后继续输入 帮助命令 help 命令 大部分内建命令 格式&#xff1a;h…

直播预告 | 药品安全与合规保障难?智能温度监测助您领先制药工业4.0!

您是否在为温度敏感药品的运输和存储合规而苦恼&#xff1f; 是否担心冷链物流中的温度监控漏洞导致药品质量下降&#xff1f; 制药环境中的温湿度监控是否让您无从下手&#xff1f; 这些问题不仅影响药品的安全性&#xff0c;也直接影响企业的合规性和市场竞争力。如何确保环…

Android 保存图片到相册却不在“照片”中显示,只在相簿中显示

背景 需要从网络上下载图片到本地&#xff0c; 并显示在相册中 问题 将图片保存到内存中&#xff0c; 通过媒体API插入到媒体库后&#xff0c;图片只在“相簿”中的“所有项目”中显示&#xff0c;第一个页面的“照片”却不显示 解决办法 图片被保存到 Pictures/AppName 目录…

Linux系统通过编辑crontab来设置定时任务---定时关机

在Linux系统中&#xff0c;crontab 是用来设置周期性被执行的指令的守护进程。通过编辑 crontab&#xff0c;您可以安排定时任务&#xff0c;比如定时关机、定时备份文件、定时运行脚本等。以下是如何编辑 crontab 来设置定时任务的步骤&#xff1a; 打开终端&#xff1a;您可以…

基于springboot+vue的在线宠物用品交易网站

一、系统架构 前端&#xff1a;vue | element-ui | html 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.8 | mysql | maven | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页1 02. web端-首页2 03. web端-注册 04. web端-登录 05. w…

“万万没想到”,“人工智能”获得2024年诺贝尔物理学奖

近日&#xff0c;2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者&#xff0c;这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家&#xff0c;如今却将全球范围内对机器学习和神经网络的研究和开发作为了一种能…

SQLite Developer使用说明

1.SQLite Developer下载 SQLite Developer官方版是SharpPlus出品的一款数据库管理工具。支持对sqlite3数据库的管理&#xff0c;能够自动完成窗口显示和执行数据库命令等多种特色。并且支持打开.db文件&#xff0c;适用于Android的开发。另外&#xff0c;使用Sqlite Developer…

压缩包格式未知或损坏怎么办?四个简单修复步骤

压缩文件是我们日常工作中常用的工具&#xff0c;但有时在解压时会遇到提示“格式未知”或“压缩包已损坏”的情况。 这可能是由于下载不完整、文件传输错误、存储介质损坏等原因导致的。这种情况会影响到我们正常获取文件&#xff0c;尤其是当压缩包内含重要数据时更让人头疼…

跨境电商独立站||代码建站和SaaS建站的区别

代码建站和SaaS建站是两种不同的网站搭建方式&#xff0c;它们各有特点和适用场景&#xff1a; 1. 代码建站&#xff1a; 定义&#xff1a;指的是从零开始&#xff0c;使用HTML、CSS、JavaScript等编程语言编写代码来构建网站的过程。 技术要求&#xff1a;需要具备一定的编程知…

vue-自定义加载界面v-loading

在网络请求中&#xff0c;页面会出现空白&#xff0c;要使页面好看点&#xff0c;通常页面会出现一些加载页面 1.准备一个伪类元素需要&#xff0c;用伪类元素给加载界面装上蒙层 .loading:before{content:;position: absolute;left:0;top:0;width: 100%;height: 100%;backgrou…

360度评估与绩效考核的深度融合,助力员工提升自我

客户背景 该零售业企业是一家集水果采购、种植支持、采后保鲜、物流仓储、标准分级、营销拓展、品牌运营、门店零售、信息科技、金融资本、科研教育于一体的大型连锁企业。 在当今快速变化的商业环境中&#xff0c;企业对于人才管理的要求日益提高&#xff0c;传统的绩效考核方…

Windows环境下CTRL+C信号处理函数的执行线程

1. 捕获CTRLC 有时候我们希望自己的程序被CTRLC以后&#xff0c;可以先执行一些收尾的工作才结束&#xff0c;比如释放动态内存&#xff0c;关闭网络端口、保存一些状态日志等等&#xff0c;可以用到C的signal的机制。 例程如下&#xff1a; #include <iostream> #inc…

前端视角下的状态机范式

状态机范式及状态管理 前言 随着产品迭代、业务量和需求量的增加&#xff0c;通常系统平台会出现代码逻辑复杂、状态混乱、维护成本增加等现象。 做同一个需求&#xff0c;最开始可能只需一天完成&#xff0c;经过长期迭代后&#xff0c;修改一个小点就可能花上两三天甚至更…

‌美国加勒比烈火波本混合威士忌新品发布会盛大举行‌

近日&#xff0c;美国知名威士忌品牌GARBBEN BLAZE加勒比烈火在北京举行了一场别开生面的新品发布会&#xff0c;正式推出了其最新力作——加勒比烈火波本混合威士忌。此次发布会吸引了众多威士忌爱好者、行业专家代表前来见证这一重要时刻。 加勒比烈火波本威士忌作为GARBBEN …

SSH 公钥认证:从gitlab clone项目repo到本地

这篇文章的分割线以下文字内容由 ChatGPT 生成&#xff08;我稍微做了一些文字上的调整和截图的补充&#xff09;&#xff0c;我review并实践后觉得内容没有什么问题&#xff0c;由此和大家分享。 假如你想通过 git clone git10.12.5.19:your_project.git 命令将 git 服务器上…

【Golang】Go语言Seeker接口与文件断点续传实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

kubelet PLEG 实现

概述 kubelet的主要作用是确保pod状态和podspec保持一致&#xff0c;这里的pod状态包括pod中的container状态&#xff0c;个数等。 为了达到这个目的&#xff0c;kubelet需要从多个来源watch pod spec的变化&#xff0c;并周期从container runtime获取最新的container状态。比如…

【Linux:线程锁】

目录 锁的接口&#xff1a; ​编辑 关于锁的几个问题&#xff1a; 从底层实现理解锁&#xff1a; 锁的接口&#xff1a; pthread_mutex_lock函数申请锁成功后&#xff0c;会返回&#xff0c;申请失败&#xff0c;函数不返回&#xff0c;继续申请&#xff0c;线程阻塞pthrea…