软件架构风格

架构风格定义代表
1. 数据流风格面向数据流,按照一定的顺序从前向后执行

批处理序列

管道-过滤器

2. 调用/返回风格构件之间存在显式的互相调用关系

主程序/子程序

面向对象

层次结构

3. 独立构件风格构件之间相互独立,不存在显式的调用关系,而是通过某个事件触发、异步的方式来执行(隐式调用)

进程通信

事件驱动系统

4. 虚拟机风格自定义一套规则,使用者基于这个规则来开发构件,能够跨平台适配

解释器

基于规则的系统

5. 仓库风格以数据为中心,所有的操作都是围绕建立的数据中心进行的

数据库系统

超文本系统

黑板系统

1. 数据流风格

  • 批处理序列:构件为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在其前一步结束后才能开始,数据必须是完整的,以整体为单位的方式传递。传统编译器。

  • 管道-过滤器:每个构件都有一组输入数据流和输出数据流。前一个构件的输出作为后一个构件的输入,前后数据流关联,前面执行到部分可以开始下一个的执行。过滤器(构件)、管道(连接件)。典型就是流媒体,边看边缓存。

2. 调用/返回风格

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

  • 面向对象:构件是对象,对象是抽象数据类型的实例。连接件是对象间的交互方式,对象通过函数和过程的调用来交互。

  • 层次结构:构件组成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。修改某一层,最多影响其相邻的两层(通常只能影响上层)。优点:(1) 支持基于可增加抽象层的设计,将一个复杂问题分解成一个增量步骤序列的实现。(2)不同的层次处于不同的抽象级别,越靠近底层,抽象级别越高(封装通用的方法,与业务无关)。(3) 由于每层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,为软件复用提供支持。缺点:(1)很难找到一个合适且正确的层次抽象方法,系统划分层次不容易。(2) 层次越多,性能越差。

3. 独立构件风格

  • 进程通信:构件是独立的进程,连接件是消息传递。消息传递的方式有点对点、异步/同步、远程过程(方法)调用。

  • 事件驱动系统(隐式调用):构件触发/广播一个或多个事件,构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。程序语法的高亮、语法错误提示(触发了什么规则)。

4. 虚拟机风格

  • 解释器:自定义流程,灵活定义,执行效率低。

  • 基于规则的系统:人工智能、DSS、机器人、专家系统。

5. 仓库(共享数据)风格

  • 数据库系统:中央共享数据源+多个独立处理的单元。现代编译器的集成开发环境IDE

  • 黑板系统:应用在对于解决问题没有确定性算法的软件中,问题复杂、解空间很大,求解过程不确定(信号处理、问题规划、编译器优化、语音识别、知识推理)。(1) 知识源:独立计算的不同单元;(2)黑板:全局数据库;(3)控制:通过黑板状态的变化来控制。

  • 超文本系统:互联网领域,网状链接,构件之间任意跳转。

6. 闭环控制风格

适合于嵌入式系统,涉及连续的动作与状态。软件与硬件之间可以表示为一个反馈。汽车巡航定速,空调温度调节。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值