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

软考笔记--软件架构风格

软件体系结构设计的一个核心目标是重复的体系结构模式,即达到体系结构级的软件重用。也就是说,在不同的软件系统中,使用统一体系结构。基于这个目标,主要任务就是研究和实践体系结构风格和类型问题。

一.软件架构风格概述

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。

二.数据流体系结构风格

数据流体系结构是一种计算机体系结构,数据流体系结构没有概念上的程序计数器,指令的可执行和执行仅指令输入参数的可用性来确定,因此,指令执行的顺序是不可预测的,行为不确定的。数据流体系结构风格主要包括批处理风格和管道过滤器风格。

1.批处理体系结构风格

在批处理风格的软件体系结构中,每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以整体的方式传递。它的基本构件是独立的应用程序,连接件是某种类型的媒介。连接件定义了相应的数据流图,表达拓扑结构。

2.管道-过滤体系结构风格

当数据源源不断地产生,系统就需要对这些数据进行若干处理。现有的解决方案是把系统分解为几个处理步骤,这些步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入,每一个处理步骤由一个过滤器实现,处理步骤之间的数据传输由管道负责。每个处理步骤(过滤器)都有一组输入和输出,过滤器从管道中读取输入的数据流,经过内部处理,然后产生输出数据流并写入管道中。

三.调用/返回体系结构风格

调用/返回体系结构风格是指在系统中采用了调用与返回机制。利用调用返回实际上是一种分而治之的策略,其主要思想是将一个复杂的大系统分解为若干个子系统,以便降低复杂度,并且增加可修改性。调用/返回体系结构风格主要包括主程序/子程序风格,面向对象风格,层次型风格以及客户端/服务器风格。

1.主程序/子程序风格

主程序/子程序风格一般采用单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序、子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。

2.面向对象系统结构风格

抽象数据类型概念对软件系统有着重要作用,这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的响应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者是抽象数据类型的实例。

3.层次型体系结构风格

层次系统组成一个层次结构,每一层为上层提供服务,并作为下层的客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。

4.客户端/服务端体系结构风格

两层 C/S 体系结构有3个主要组成部分:数据库服务器、客户应用程序和网络。服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务,称为“胖客户机,瘦服务器”。

三层C/S结构增加了一个应用服务器。整个应用逻辑驻留在应用服务器上,只有表示层存在于客户机上,故称为“瘦客户机”。应用功能分为表示层、功能层和数据层三层。表示层是应用的用户接口部分,通常使用图形用户界面;功能层是应用的主体,实现具体的业务处理逻辑;数据层是数据库管理系统。以上三层逻辑上独立。

四.以数据为中心的体系结构风格

以数据为中心的体系结构风格主要包括仓库体系结构风格和黑板体系结构风格。

1.仓库体系结构风格

仓库是存储和维护数据的中心场所。在仓库风格中,有两种不同的构件:中央数据结构说明当前数据的状态以及一组对中央数据结构进行操作的独立构件,仓库与独立构件间的相互作用在系统中会有大的变化。这种风格的连接件即为仓库与独立构件之间的交互。

2.黑板体系结构风格

黑板体系结构风格适用于解决复杂的非结构化的问题,能子求解过程中综合运用多种不同知识源使得问题的表达,组织和求解变得比较容易。黑板系统是一种问题求解模型,是组织推理步骤、控制状态数据集和问题求解领域知识的概念框架。它将问题的解空间组织成一个或多个应用的分级结构,分级结构的每一层信息有一个唯一的词汇来描述,它代码了问题的部分解。

五.虚拟机体系结构风格

虚拟机体系结构风格的基本思想是人为构造一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加结构的灵活性。虚拟机体系结构风格主要包括解释器风格和规则系统风格。

1.解释器体系结构风格

一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行进度的数据结构。解释器通常被用来建立一种虚拟机以弥合程序语义与硬件语义之间的差异。其缺点是执行效率较低。典型的例子是专家系统。

2.规则系统体系结构风格

基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。

六.独立构件体系结构风格

独立构件风格主要强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。独立构件风格主要包括进程通信和事件系统风格。

1.进程通信体系结构风格

在进程通信体系结构风格中,构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程,消息传递的方式可以是点到点、异步或同步方式及远程调用等。

2.事件系统体系结构风格

事件系统体系结构风格基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一个模块中的过程调用。从架构上说,这种风格的构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。

相关文章:

  • Matlab/Simulink验证MAB建模规范
  • Android布局优化之include、merge、ViewStub的使用,7年老Android一次坑爹的面试经历
  • 宠物的异味,用空气净化器可以解决吗?宠物空气净化器品牌推荐
  • 【C++】贪心算法
  • Redis是单线程还是多线程?
  • 代码随想录算法训练营第三十三天|LeetCode1005 K次取反后最大化的数组和 、LeetCode134 加油站、LeetCode135 分发糖果
  • 【vue/组件封装】封装一个带条件筛选的搜索框组件(多组条件思路、可多选)详细流程
  • Nginx 常用的基础配置(前端相关方面)
  • C# SwinV2 Stable Diffusion 提示词反推 Onnx Demo
  • 微软研究深度报告:Sora文转视频AI模型全景剖析及未来展望
  • 网关kong记录接口处理请求和响应插件 tcp-log-with-body的安装
  • [python] dict类型变量写在文件中
  • js设计模式:解释器模式
  • day08_分类品牌管理商品规格管理商品管理
  • 前端知识点、技巧、webpack、性能优化(持续更新~)
  • 分享的文章《人生如棋》
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • es6
  • Spark学习笔记之相关记录
  • vue 配置sass、scss全局变量
  • 不上全站https的网站你们就等着被恶心死吧
  • 大快搜索数据爬虫技术实例安装教学篇
  • 对象引论
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2020)Java后端开发----(面试题和笔试题)
  • (C语言)球球大作战
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (八)c52学习之旅-中断实验
  • (八)Flask之app.route装饰器函数的参数
  • (办公)springboot配置aop处理请求.
  • (层次遍历)104. 二叉树的最大深度
  • (转)Windows2003安全设置/维护
  • (转)程序员疫苗:代码注入
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core跨平台微服务学习资源
  • .net 托管代码与非托管代码
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net反混淆脱壳工具de4dot的使用
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • /dev/sda2 is mounted; will not make a filesystem here!
  • :中兴通讯为何成功
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @RequestMapping用法详解
  • [1] 平面(Plane)图形的生成算法
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [ASP]青辰网络考试管理系统NES X3.5
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [c++] C++多态(虚函数和虚继承)
  • [C++基础]-入门知识
  • [CERC2017]Cumulative Code
  • [Codeforces] number theory (R1600) Part.11