一、软件架构风格-数据流风格

数据-》第1步处理-》数据-》第2步处理-》数据-》第N步处理 【分步处理】

优点:
1、松耦合【高内聚-低耦合】
2、良好的重用性/可维护性;
3、可扩展性【标准接口适配】
4、良好的隐蔽性;
5、支持并行。
缺点
1、交互性较差;
2、复杂性较高;
3、性能较差(每个过滤器都需要解析与合成数据)

典型实例
传统编译器、网络报文处理。

数据流风格:
**批处理序列:**大量整体数据、无需用户交互
**管道-过滤器:**流式数据弱用户交互

二、软件架构风格-调用/返回风格

主函数 -》调用子函数-》子函数-》返回给主函数执行结果

调用/返回风格:
**主程序/子程序:**面向过程
面向对象:对象的方法调用
分层:层与层之间的方法调用 (ISO网络分层,计算机软硬件系统)

优点
1、良好的重用性,只要接口不变可用在其它处
2、可维护性好;
3、可扩展性好,支持递增设计。
缺点
1、并不是每个系统都方便分层;
2、很难找到一个合适的、正确的层次抽象方法;
3、不同层次之间耦合度高的系统很难实现。
特点:
各个层次的组件形成不同功能级别的虚拟机;
多层相互协同工作,而且实现透明。

三、软件架构风格-独立构件风格

独立构件风格:
主函数-》触发事件-》事件管理机制-》通知执行-》子函数-》返回执行结果
构件之间不直接交互、松耦合

调用返回风格:
主函数-》调用子函数-》子函数-》返回执行结果
构件之间直接交互、紧耦合

优点:
1、松耦合。2、良好的重用性/可修改性/可扩展性。

缺点:
1、构件放弃了对系统计算的控制。一个构件触发一个事件时,不能确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的过程,它也不能保证这些过程被调用的顺序。
2、数据交换的问题。3、既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题。

特点:
系统由若干子系统构成且成为一个整体;系统有统一的目标;子系统有主从之分;每一子系统有自己的事件收集和处理机制

在这里插入图片描述

四、软件架构风格-虚拟机风格

C语言代码=》
编译=》
机器语言代码=》
操作系统

Java语言代码=》
编译=》
字节码文件=》
JAVA虚拟机=》
操作系统

在这里插入图片描述
在这里插入图片描述

基于规则的系统构成:规则集、规则解释器、规则/数据选择及工作内存,一般用在人工智能领域和DSS(决策支持系统)中。

在这里插入图片描述

五、软件架构风格-仓库风格

在这里插入图片描述
仓库风格【以数据为中心】
1、数据库系统
2、黑板系统:语音识别、知识推理
3、超文本系统

以下是黑板系统:
在这里插入图片描述
黑板上信息有变动会触发更新数据源,可以利用数据库系统来实现,需要在其上增加触发机制。

在这里插入图片描述
比如IDE也是黑板系统
剪贴板

六、软件架构风格 -闭环控制架构(过程控制)

开环控制系统:在这里插入图片描述

闭环控制系统:在这里插入图片描述
适合于嵌入式系统,用于解决简单闭环控制问题
经典应用:空调温控,定速巡航。

七、软件架构风格-C2风格

在这里插入图片描述
C2架构的基本规则:

  • 构件和连接件都有一个顶部和一个底部。
  • 构件的顶部要连接到连接件的底部,构件的底部要连接到连接件的顶部,构件之间不允许直连。
  • 一个连接件可以和任意数目的其他构件和连接件连接。
  • 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。

八、软件架构风格-MDA【Model Driven Architecture模型驱动架构】

Model Driven Architecture
【模型驱动架构】
-Model ?
客观事物的抽象表示

  • Architecture ?
    构成系统的部件、连接件及其约束的规约

-Model-Driven ?
使用模型完成软件的分析、设计、构建、部署、维护等各开发活动
-MDA起源于分离系统规约和平台实现的思想

-MDA的主要目标:
Portability(可移植性),interoperability(互通性)
Reusability(可重用性)

MDA的核心模型:

  • 计算无关模型(CIM):对某具体行业内一个项目的业务需求及其系统功能需求进行分析
  • 平合独立模型(PIM):具有高抽象层次、独立于任何实现技术的模型。
  • 平台相关模型(PSM):为某种特定实现技术量身定做,让你用这种技术中可用的实现构造来描述系统的模型。PIM会被变换成一个或多个PSM。
  • 代码Code:用源代码对系统的描述(规约)。每个PSM都将被变换成代码。

PIM(UML)=》变换工具=》PSM=》变换工具=》CODE

考试灵活多变,要举一反三。

例子:
Java程序可以做到“一次编写,到处运行”,从架构风格上看符合()风格的特点。虚拟机
在网络通信中,进行包的解析,一般先进行包头的分离,然后进行报文解析及后续处理根据这一特点,选用()风格最合适。数据流
某公司欲开发一个基于图形用户界面的集成调试器。该调试器的编辑器和变量监视器可以设置调试断点。当调试器在断点处暂停运行时,编辑程序可以自动卷屏到断点,变量监视器刷新变量数值。针对这样的功能描述,采用()的架构风格最为合适。隐式调用
某游戏公司欲开发一个大型多人即时战略游戏,游戏设计的目标之一是能够支持玩家自行创建战役地图,定义游戏对象的行为和之间的关系。针对该目标,公司应该采用()架构风格最为合适。(四选一:管道-过滤器、隐式调用、主程序-子程序、解释器)解释器
某公司承接了一个开发家用空调自动调温器的任务,调温器测量外部空气温度,根据设定的期望温度控制空调的开关。根据该需求,公司应采用()架构风格最为合适。(四选一:解释器、过程控制、分层、管道-过滤器)过程控制

某公司欲开发一个语音识别系统,语音识别的主要过程包括分割原始语音信号、识别音素、产生候选词、判定语法片断、提供语义解释等。每个过程都需要进行基于先验知识的条件判断并进行相应的识别动作。针对该系统的特点,采用()架构风格最为合适(四选一:解释器、面向对象、黑板、隐式调用)黑板

某公司欲开发一个漫步者机器人,用来完成火星探测任务。机器人的控制者首先定义探测任务和任务之间的时序依赖性,机器人接受任务后,需要根据自身状态和外界环境进行动态调整,最终自动完成任务。针对这些需求,该机器人应该采用()架构风格最为合适。(四选-:解释器、主程序-子程序、隐式调用、管道-过滤器) 解释器

Windows操作系统在图形用户界面处理方面采用的核心架构风格是()风格。隐式调用

历年考题例子
“编译器”是一种非常重要的基础软件,其核心功能是对源代码形态的单个或一组源程序依次进行预处理词法分析、语法分析、语义分析、代码生成、代码优化等处理,最终生成目标机器的可执行代码。考虑以下与编译器相关的软件架构设计场景:传统的编译器设计中,上述处理过程都以独立功能模块的形式存在,程序源代码作为一个整体,依次在不同模块中进行传递,最终完成编译过程。针对这种设计思路,传统的编译器采用(1)架构风格比较合适。随着编译、链接、调试、执行等开发过程的一体化趋势发展,集成开发环境(IDE)随之出现。

IDE集成了编译器、连接器、调试器等多种工具,支持代码的增量修改与处理,能够实现不同工具之间的信息交互,覆盖整个软件开发生命周期。针对这种需求,IDE采用(2)架构风格比较合适。IDE强调交互式编程,用户在修改程序代码后,会同时触发语法高亮显示、语法错误提示、程序结构更新等多种功能的调用与结果呈现,针对这种需求,通常采用(3)架构风格比较合适。
某公司已经开发了一款针对某种嵌入式操作系统专用编程语言的IDE,随着一种新的嵌入式操作系统上市井迅速占领市场,公司决定对IDE进行适应性改造,支持采用现有编程语言进行编程,生成符合新操作系统要求的运行代码,并能够在现有操作系统上模拟出新操作系统的运行环境,以支持代码调试工作。针对上述要求,为了使IDE能够生成符合新操作系统要求的运行代码,采用基于(4)的架构设计策略比较合适;为了模拟新操作系统的运行环境,通常采用(5)架构风格比较合适。

(1) A.管道-过滤器 B.顺序批处理 C.过程控制 D.独立进程

(2) A.规则引擎 B.解释器 C.数据共享 D.独立构件

(3) A.隐式调用 B.显式调用C.主程序-子程序 D.层次结构

(4)A代理B、适配 C、包装 D、模拟

(5)A.隐式调用 B.仓库结构 C.基于规则 D.虚拟机

参考答案:B、C、A、B、D

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初始QML

由于项目原因,最近要进行qml相关开发,我之前也没有搞过qml,因此开一个qml系列的专栏,记录自己关于qml的相关学习新建第一个qml工程按如下图所示方法新建一个最简单的qml工程:编译运行可以看到是一个标题为“hello word…

Coze源码分析-资源库-创建知识库-基础设施/存储/安全

6. 基础设施层 基础设施层为知识库创建功能提供底层技术支撑,包括数据存储、缓存、消息队列、文档处理、向量化等核心服务。 6.1 数据存储服务 6.1.1 MySQL数据库 文件位置: backend/infra/rdb/mysql.go // MySQLConfig MySQL配置 type MySQLConfig struct {Host …

【iOS】设计模式复习

目录 观察者模式 通知机制 基本使用 注册观察者 创建一个通知 发送通知 通知与多线程 使用异步发送通知 NSNotificationQueue通知队列 在子线程中运行观察者函数 实现原理 named表 nameless表 wildcard表 添加观察者 发送通知 移除通知​ KVO机制 基本使用 …

RK3568 NPU :RKNN-ToolKit2环境搭建

1. 安装Miniconda3 下载 Linux 64 位 Miniconda 最新版安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh安装 Miniconda bash Miniconda3-latest-Linux-x86_64.sh -u安装完成后会自动设置环境变量。打开新的终端,发现用户名前…

Ubuntu 24.04 Server 版系统安装及配置

Ubuntu 24.04 Server 版安装及配置 文章目录Ubuntu 24.04 Server 版安装及配置一、获取安装文件二、虚拟机配置三、安装界面四、配置网络五、扩容根分区 一、获取安装文件二、虚拟机配置三、安装界面 选择English(US)问是否升级内核配置键盘手动配置ipv4…

Java 事务失效场景全解析

在 Java 开发中,事务管理是保证数据一致性的核心机制,尤其是在 Spring 框架中,Transactional注解的使用极大简化了事务配置。然而,在实际开发中,事务常常会因为一些细节问题而失效,导致数据异常。本文将详细…

【Coze搞钱实战】14. 抖音直播间自动回复机器人实战教程:三小时搭建智能客服,互动率提升150%(保姆级无代码指南)

摘要:抖音直播间高频问题重复回复、观众互动不及时是运营痛点。本文针对新手和进阶用户,提供无代码的自动回复机器人搭建方案:新手1小时完成基础配置(Coze+抖音对接),进阶用户通过促销倒计时、粉丝分层、热点借势三大策略提升互动率150%。方案基于某女装直播间实测数据(…

云计算核心知识梳理

云计算作为新一代信息技术的核心,其体系涵盖特点、定义、技术演进及分类等多个维度,以下是对相关知识的系统整合与解读。 一、云计算的核心特点 / 优势 云计算的优势围绕资源利用效率、服务灵活性和管理便捷性展开,具体可拆解为五大核心特性: 按需自助服务:用户无需人工干…

安卓13_ROM修改定制化-----安卓 13 系统 ROM 定制化与低版本系统的核心区别

安卓系统凭借其全球领先的市场占有率,开放特性为厂商和开发者提供了深度定制的空间,形成了丰富的ROM生态圈。从最初的安卓1.0到最新的安卓15,系统在功能、性能和安全方面不断迭代升级,同时也为ROM定制带来了新的机遇与挑战。特别是从安卓11开始,谷歌对系统架构和安全机制进…

【Java后端】Spring Boot 2.7.x 和 Swagger 3.0.x (springfox 3.x) 的兼容性问题

springfox 在 Spring Boot 2.6 开始就有很多兼容性 bug(主要是 Spring MVC PathPatternParser 的引入),导致在 Spring Boot 2.6/2.7 里经常出现 无法启动 / 无法访问 swagger-ui.html 的情况。🔎 问题原因Spring Boot 2.6 开始默认…

Vue3+ts使用oidc-client-ts

配置 OIDC 客户端 在项目中创建 authOptions 对象,定义 OIDC 认证所需的配置项: export const authOptions {authority: https://xxxxxxxxx/UserCenter, // 认证服务器 URLclient_id: xxxx, // 客户端 IDredirect_uri: http://localhost:3000/callbac…

从 “数据中转站“ 到 “边缘智能中枢“:区域网关的技术突围与开发范式重构

在物联网架构中,区域网关长期被视为 "边缘与云端的桥梁"—— 负责协议转换、数据转发、设备接入等基础功能。但随着边缘计算兴起与 AI 模型轻量化,区域网关正经历从 "被动转发" 到 "主动决策" 的范式跃迁。 本文将从开发视角拆解区域网关的三大…

Django全栈班v1.04 Python基础语法 20250913 早上

print 函数基本用法 print函数会自加换行符,一个print,会打印一行输出。 print("第一行") print("第二行") print("第三行")输出结果:print 输出多个值 一个print可以同时输出多个值,这多个值会在一…

面试鸭Java八股之Kafka

Kafka是什么?它的主要应用场景有哪些? Kafka是一种分布式流事件处理平台,最初由 LinkedIn 开发,现在是 Apache 基金会的一部分。它的核心功能主要包括消息队列、流处理和数据集成。Kafka以高吞吐量、低延迟、可扩展和高容错性著称。 Kafka…

ARM32平台Bus Error深度排查:从调用栈到硬件原理的完整拆解

ARM32平台Bus Error深度排查:从调用栈到硬件原理的完整拆解 在嵌入式开发中,Bus Error(信号7)是个容易让人头疼的问题——它不像SIGSEGV(段错误)那样直观,常与硬件内存布局、指针破坏等底层问题…

适合工业用的笔记本电脑

在工业领域,生产环境往往复杂多变,从高温、高湿的车间,到布满粉尘的矿山,再到震动频繁的施工现场,普通的笔记本电脑很难在这样的环境中稳定运行,而工业用笔记本电脑的诞生,完美地解决了这一难题…

在LINUX中常见的文件系统类型

常见文件系统类型对比表文件系统类型作用和特点主要使用场景优缺点ext4Linux标准文件系统,日志式,支持大文件和分区Linux根文件系统、/home、/var等主要分区优点:稳定成熟,支持大文件(16TB),日志功能保证数据安全&…

Unity核心概念⑥:Time

一、Time的主要用途主要用于游戏中参与位移、记时、时间暂停等。二、时间缩放比例1.时间停止:Time.timeScale 0;2.回复正常:Time.timeScale 1;3.二倍速:Time.timeScale 2;三、帧间隔时间帧间隔时间是指最近的一帧用了多少时间。1.用途主要…

Node.js 模块化规范详解

在 Node.js 中,模块化是开发应用程序的核心概念,它使得代码可以按照功能模块进行分割,易于维护、复用和扩展。Node.js 支持两种模块化规范:CommonJS(CJS):这是 Node.js 最初使用的模块化规范。E…

前端网络性能优化实践:从 HTTP 请求到 HTTPS 与 HTTP/2 升级

在前端性能优化体系中,服务端与网络层的优化是提升用户体验的关键环节。本文将围绕 HTTP 请求优化、Cookie 管理、服务器缓存配置、gzip 压缩、HTTPS 部署及 HTTP/2 升级等核心内容,系统拆解优化策略与实施方法,为团队技术分享提供完整的知识…