🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2023年华为云十佳博主,2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
软件架构风格(Software Architectural Style)是指一组约定、惯用的设计模式和原则,用于定义和描述软件系统的结构和行为。它提供了一种通用的语言和标准,使得开发人员能够以一致和系统化的方式设计和构建软件系统。不同的架构风格适用于不同类型的问题和应用场景。
软件架构风格是描述特定应用领域中系统组织方式的惯用模式。它定义了一组系统家族,包括一个架构定义、一个词汇表和一组约束:
简单来说,软件架构风格就是一个模板,规定了特定应用领域中软件系统应该如何构建。
软件架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。这些风格不仅帮助开发人员理解和创建系统,还促进了设计模式和解决方案的复用,提高了软件开发的效率和质量。
架构风格 | 描述 | 代表风格 |
---|---|---|
数据流风格 | 面向数据流,按照一定的顺序从前向后执行程序。 | 批处理序列、管道-过滤器 |
调用/返回风格 | 构件之间存在互相调用的关系,一般是显式的调用。 | 主程序/子程序、面向对象、层次结构、客户端服务器 |
独立构件风格 | 构件之间是互相独立的,不存在显式的调用关系,而是通过某个事件触发、异步的方式来执行。 | 进程通信、事件驱动系统(隐式调用) |
虚拟机风格 | 自定义了一套规则供使用者使用,使用者基于这个规则来开发构件,能够跨平台适配。 | 解释器、基于规则的系统 |
以数据为中心风格 | 以数据为中心,所有的操作都是围绕建立的数据中心进行的。 | 数据库系统、仓库系统、黑板系统 |
批处理序列是一种架构风格,其构件是一系列按照固定顺序执行的计算单元。多个任务按照同步顺序执行,构件之间通过数据传递进行交互。每个处理步骤是一个独立的程序,必须在前一步结束后才能开始。数据以整体的方式传递,必须是完整的。典型的例子包括批量图像处理,如一次性处理大量图像,执行调整大小、添加水印或转换格式等操作。
管道-过滤器是一种架构风格,每个构件都有一组输入和输出。构件读取输入的数据流,经过内部处理,产生输出数据流。前一个构件的输出作为后一个构件的输入,前后数据流相互关联。过滤器是构件,连接件是管道。典型的例子包括文本处理管道,在文本分析中,可以将文本处理划分为分词、词干提取、情感分析等多个阶段,每个阶段都是一个过滤器。早期编译器也采用这种架构,需要一步一步处理。
批处理序列和管道-过滤器的主要区别在于数据处理方式和执行时机:
在这种架构中,系统按照单线程控制的方式,将问题划分为若干个处理步骤。构件包括主程序和子程序,且子程序通常可以合成为模块。过程调用作为交互机制,充当连接件的角色。主要特点是通过调用来实现各处理步骤的顺序执行和数据传递。
在面向对象的架构中,构件是对象。对象是抽象数据类型的实例,连接件即是对象间交互的方式。对象通过函数和过程的调用来进行交互。这种方法强调数据封装、继承和多态性,通过对象之间的消息传递实现系统功能。
层次结构架构将系统构件分组成一个层次结构。连接件通过定义层间交互的协议来决定层间的互动。每层为上一层提供服务,并使用下一层的服务,只能看到与自己邻接的层。修改某一层最多影响相邻的两层(通常只能影响上层)。其优点是可以将一个复杂问题分解为一个增量步骤序列来实现,但缺点是并不是每个系统都可以轻易划分为分层模式,并且层次调用会影响效率。
早期的两层C/S架构模式由三个部分组成:数据库服务器、客户端服务器和网络。服务器负责数据管理,客户端完成用户交互,称之为“胖客户端、瘦服务器”。后来,演变为三层C/S架构,增加了一个应用服务器,分别是表示层、功能层和数据层。表示层负责用户交互,功能层负责业务逻辑处理,数据层负责数据库处理。以上三层独立,互不干扰。
定义:
特性:
举例:
一个典型的示例是一个多线程的文件下载器,其中一个线程负责下载文件,另一个线程负责监视下载进度。这两个线程需要通过进程通信来共享下载状态信息,以便监视线程可以显示下载进度。
定义:
举例:
一个典型的示例是图形用户界面(GUI)应用程序。用户的操作(如点击按钮、键盘输入)会生成事件,应用程序的控件或组件会注册事件处理程序来响应这些事件。
优点:
缺点:
组成部分:
功能:
缺点:
举例:
编程语言的解释器是最常见的示例。例如,Python解释器会解释和执行Python编写的代码。用户输入一个数学表达式如"2 + 3",解释器会将其解析并执行计算,然后返回结果"5"。
组成部分:
应用领域:
功能:
举例:
银行的贷款审批系统。系统使用基于规则的风格,根据客户的信用评分、贷款金额和其他因素来应用一组贷款批准规则。如果满足规则的条件,系统将自动批准或拒绝贷款申请。
定义:
示例说明:
假设一个天气预报系统具有多个数据源,包括气象站、卫星数据和气象传感器。这些数据源将数据写入共享的中央仓库,然后天气预报应用程序可以定期查询仓库以获取最新的气象信息并生成天气预报。
定义:
示例说明:
假设一个医学诊断系统包括放射科医生、心脏专家和内科医生。每个专家可以根据患者的病历信息(例如X光片、心电图和实验室报告)向黑板提交自己的诊断。黑板负责集成各个专家的诊断,并生成最终的诊断结果。
闭环控制:当软件被用来操作一个物理系统时,软件与硬件之间可以粗略的表示为一个反馈循环,这个反馈循环通过接受一定的输入,确定一系列的输出,最终使环境达到一个新的状态,适合于嵌入式系统,涉及连续的动作与状态。比如开空调,不会一调到某个温度就马上能到该温度,是逐渐接收室内的温度来变化输出空调的冷气;
构C2体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。C2风格中
的系统组织规则如下:
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式,其中,在批处理风格软件体系结构中,每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以()的方式传递。基于规则的系统包括规则集、规则解释器、规则/数据选择器及()。
A.迭代 B.整体 C.统一格式 D.递增
A.解释引擎 B.虚拟机 C.数据 D.工作内存
题目涉及软件体系结构风格的描述,包括批处理风格和基于规则的系统。我们需要填补两个空白:
批处理风格:
在批处理风格的软件体系结构中,数据传输的方式是需要在每一步处理完成后进行的,并且数据是完整的。这种方式通常被描述为“整体”的方式,因为数据必须在每个步骤完成后以完整的形式被传递到下一个步骤。
因此,第一空应该填入 B.整体。
基于规则的系统:
基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。工作内存用于存储当前工作的状态和数据,是基于规则的系统中的重要组成部分。
因此,第二空应该填入 D.工作内存。
正确答案为:
所以,完整的句子应该是:
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式,其中,在批处理风格软件体系结构中,每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以整体的方式传递。基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。
软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式,按照软件架构风格,物联网系统属于()软件架构风格。
A.层次型 B.事件系统 C.数据线 D.C2
题目要求我们根据软件架构风格来判断物联网系统的架构风格。
物联网(Internet of Things, IoT)系统涉及大量的设备和传感器,这些设备和传感器需要协同工作,通常涉及以下几个方面:
这些特点表明物联网系统通常具有以下架构特征:
选项分析
A. 层次型:
B. 事件系统:
C. 数据线:
D. C2:
根据物联网系统的特点,最符合其描述的架构风格是 层次型,因为物联网系统通常包括多个层次,从设备层到应用层,各层次之间有明确的职责划分。
因此,正确答案是:
A.层次型
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有