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

系统架构设计师备考第34天——软件架构风格

一、软件架构风格概述

核心概念
  1. 定义

    • 软件架构风格是描述特定应用领域中系统组织方式的惯用模式,定义了一个系统家族的词汇表(构件与连接件类型)和组合约束
    • 作用:提供领域内共有的结构和语义特性,指导模块与子系统的有效组织,促进设计重用(如“客户/服务器”模式无需细节即可理解系统结构)。
  2. 目标

    • 实现体系结构级软件重用,通过统一架构模式支持不同系统的构建。
重点考点
  • 架构风格 vs. 设计模式
    • 架构风格关注系统整体结构(高层抽象),设计模式解决局部问题(如对象交互)。
  • 核心价值:提升设计复用性、降低沟通成本、加速系统开发。
典型考题

Q: 软件架构风格的核心目标是什么?
A: 实现体系结构级软件重用,通过统一模式指导系统组织,减少重复设计。


二、数据流体系结构风格

核心概念
  1. 特点

    • 基于数据可用性触发指令执行,无程序计数器,执行顺序不确定(非冯·诺依曼结构)。
    • 构件:数据处理单元;连接件:数据流通道。
  2. 子风格分类

    • 批处理风格
      • 特征:处理步骤为独立程序,需前一步完成且数据完整传递(整体性处理)。
      • 示例:传统报表生成系统(数据全量处理)。
    • 管道-过滤器风格
      • 特征:过滤器逐级处理数据流,管道连接输入/输出(增量式处理)。
      • 示例:编译器(词法分析 → 语法分析 → 语义分析)。
重点考点
  • 适用场景
    • 批处理:数据完整性要求高、无需实时处理的场景(如月度结算)。
    • 管道-过滤器:数据流连续、需分步处理的场景(如音视频转码)。
  • 缺点:数据格式强耦合、不适合交互式系统。
典型考题

Q: 管道-过滤器风格中,若需修改数据处理逻辑,应调整哪个部分?
A: 修改或替换特定过滤器,保持管道接口一致即可。


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

核心概念
  1. 核心思想

    • 分而治之:将系统分解为子系统,通过调用-返回机制降低复杂度。
  2. 子风格分类

    风格类型构件连接件特点
    主程序/子程序主程序、子程序过程调用单线程控制,层次化调用(子程序正确性依赖下层正确性)。
    面向对象对象方法调用/消息传递封装数据与操作,通过接口交互(如Java类实例化)。
    层次型层次(虚拟机)层间协议每层为上层服务,下层透明(如OSI网络模型)。
    客户端/服务器客户端、服务器网络协议资源不对等,分两层(胖客户端)或三层(瘦客户端+应用服务器+数据库)。
重点考点
  • C/S架构演进
    • 两层C/S:客户端处理业务逻辑,易导致“胖客户端”问题。
    • 三层C/S:表示层(UI)、业务逻辑层(应用服务器)、数据层(DB),解耦业务与数据。
  • 层次型架构关键约束:层间仅通过接口交互,增强可维护性与重用性。
典型考题

Q: 三层C/S架构中,为何称客户端为“瘦客户机”?
A: 业务逻辑移至应用服务器,客户端仅负责表示层(UI),功能简化。


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

核心概念
  1. 仓库风格

    • 构件:中央数据结构 + 独立操作构件。
    • 交互:构件通过查询/修改中央数据交互(如数据库管理系统)。
  2. 黑板风格

    • 适用场景:解决非结构化复杂问题(如语音识别、专家系统)。
    • 核心组件
      • 知识源:独立领域知识模块。
      • 黑板:分级组织的共享数据(部分解空间)。
      • 控制机制:事件驱动,动态调度知识源。
重点考点
  • 仓库 vs. 黑板
    • 仓库:数据被动响应操作(传统数据库)。
    • 黑板:数据状态主动触发知识源(动态问题求解)。
  • 黑板系统优势:支持多知识源协作,适应不确定性高的场景。
典型考题

Q: 黑板风格如何支持语音识别任务?
A: 声音信号作为黑板数据,知识源(如特征提取、模式匹配)逐步生成识别结果。


五、虚拟机体系结构风格

核心概念
  1. 核心思想

    • 构建自定义运行环境,解析执行特定语言(如脚本引擎、规则引擎)。
  2. 子风格分类

    • 解释器风格
      • 组件:解释引擎、代码存储区、状态跟踪数据结构。
      • 应用:仿真硬件/关键应用(如Java虚拟机),牺牲效率换灵活性。
    • 规则系统风格
      • 组件:规则集、规则解释器、工作内存。
      • 应用:业务规则频繁变化的系统(如风控引擎)。
重点考点
  • 优缺点
    • :灵活支持动态行为(如规则热更新)。
    • :执行效率低于编译型系统。
  • 典型应用:专家系统、DSL(领域特定语言)执行环境。
典型考题

Q: 解释器风格为何执行效率较低?
A: 需实时解析指令并模拟运行环境,无法像编译型语言直接执行机器码。


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

核心概念
  1. 核心思想

    • 构件独立运行,通过隐式通信降低耦合度。
  2. 子风格分类

    • 进程通信风格
      • 构件:独立进程;连接件:消息传递(RPC、消息队列)。
    • 事件系统风格
      • 原理:构件触发事件 → 系统自动调用注册过程(隐式调用)。
      • 特点:事件触发者无需知晓受影响构件(如IDE调试器断点事件)。
重点考点
  • 事件系统优势:支持松耦合集成(如工具插件化),增强扩展性。
  • 隐式调用挑战:行为不确定性(执行顺序不可预测),需结合显式调用补充。
典型考题

Q: 事件系统中,如何保证多个构件的响应顺序?
A: 无法保证,需通过优先级机制或显式依赖管理(如消息队列顺序消费)。


章节总结对比表

架构风格核心构件连接机制典型应用场景关键优势
数据流过滤器/处理步骤数据流管道编译器、ETL工具分步处理、高内聚
调用/返回程序/对象/层次过程调用/方法调用企业应用、分层系统结构清晰、易扩展
以数据为中心中央数据+操作构件数据访问/事件触发数据库、复杂决策系统数据统一管理、支持协作
虚拟机解释引擎/规则集指令解析/规则匹配DSL执行器、专家系统灵活性高、支持动态行为
独立构件进程/事件监听器消息传递/事件广播插件系统、分布式服务低耦合、易集成新功能

典型考题解析

  1. 概念辨析题

    Q: 主程序/子程序风格与面向对象风格的核心区别是什么?
    A: 前者基于过程分解(函数调用层次),后者基于数据抽象(对象封装状态与行为)。

  2. 场景应用题

    Q: 某电商系统需支持高并发订单处理与实时风控,应选择哪种混合架构?
    A:

    • 调用/返回(三层C/S):分离表示层、业务层、数据层。
    • 事件系统:异步处理订单流水(如库存扣减、支付通知)。
    • 规则系统:实时风控(动态规则匹配)。
http://www.dtcms.com/a/406831.html

相关文章:

  • postman使用总结
  • 做网站 怎么连到数据库怎么做存储网站
  • Java 后端面试技术文档(参考)
  • 分享智能跳绳解决方案
  • 毕业设计的网站app开发公司介绍
  • WebSocket实时通信不卡顿:cpolar内网穿透实验室第503个成功挑战
  • PyTorch 数据处理工具箱
  • C++项目:仿muduo库高并发服务器-------时间轮定时器
  • 边玩边学,13个Python小游戏(含源码)
  • 有了域名怎样做淘客网站中国铁建统一企业门户
  • 大连网站排名网络推广公司一个很好的个人网站开发
  • Windows文件快速检索工具:基于PyQt5的高效实现
  • C++Primerplus 编程练习 第十三章
  • Custom SRP 11 - Post Processing
  • 【Linux】进程替换
  • wordpress调用目录网址seo查询
  • 【C++】模版专题
  • K8s实践中的重点知识
  • 云栖2025 | 人工智能平台 PAI 年度发布
  • 【文献管理工具】学术研究的智能助手—Zotero 文献管理工具详细图文安装教程
  • H5平台网站建设wordpress 会话已过期
  • 建论坛网站印度人通过什么网站做国际贸易
  • UniApp ConnectSocket连接websocket
  • 正点原子【第四期】Linux之驱动开发学习笔记-5.1 设备树下的LED驱动实验
  • uniapp中全局封装一个跨组件的复制粘贴方法
  • 新奇特:神经网络烘焙坊(上),权重矩阵的甜蜜配方之谜
  • 分布式调度问题:定时任务
  • labelimg(目标检测标注工具)的安装、使用教程和问题解决
  • 【MFC】项目结构梳理
  • 中小企业声音克隆技术落地实践:痛点分析与轻量化解决方案建议