导图社区 软件体系结构风格
这是一个关于软件体系结构风格的思维导图,内容全面,对各种软件体系结构风格和模式的特点、应用及优缺点等进行了系统的梳理和展示。
编辑于2025-05-20 20:49:38软件体系结构风格和模式
管道过滤器风格
功能模块称作过滤器(filters);功能模块间的连接可以看作输入、输出数据流之间的通路,所以称作管道(pipes)。过滤器相对独立
应用
Unix系统
Dos的管道命令
数字通信系统
编译系统(一系列过滤器的连接体)
Asp.net管道模型
批处理系统
管线、有界管道
练习题
需求描述:假设有一批实时的二维坐标点数据需要变换(即对点的横、纵坐标进行缩放),并在屏幕上进行显示,要求外部要能设置变换规则(如缩放倍数)和显示规则(如显示模式和显示颜色)。
将这个系统分为两个过滤器,一个为坐标点数据流变换过滤器,另一个为坐标点数据流实时显示过滤器。
可以将过滤器用状态转换图表示
编程实现
优缺点
优点:功能模块复用;强可维护性和可扩展性;具有并发性;模块独立性高
缺点:不适于交互性强的应用;对于存在关系的数据流必须进行协调
面向对象风格
面向对象模式集数据抽象、抽象数据类型、类继承为一体,使软件工程公认的模块化、信息隐藏、抽象、重用性等原则在面向对象风格下得以充分实现。
面向对象设计的根本出发点是追求自然地刻画和求解现实世界中的问题:高度模块化、封装功能、对象之间消息传递
应用
数据和功能分离的系统
人事档案管理系统
GUI体系结构框架自动生成工具,ArchStudio、IBM Rational XDE
ENVI:一个完整的遥感图像处理平台
开放式分布系统
人机交互的系统
ATM机
需求分析、模块分析、功能分析(用例图)
编码实现
练习题
实时公交行驶状况查询系统
用例图
基本信息查询类图
实时信息查询类图
寻路
反馈
优缺点
优点:高度模块性;实现封装;代码共享;灵活;易维护;可扩充性好
缺点:增加了对象之间的依赖关系
事件驱动风格
侧重于人机交互的软件设计,一个系统对外部的表现可以从它对事件的处理表示出来,各子系统在某一种消息机制的控制下,为了目标协调行动
原则(需要区别对待这两种子系统)
管理系统:传递消息
执行系统:执行消息
有问才有答
基本结构
eventsystem既可以代表执行系统,又可以代表执行系统的容器(管理系统),它声明了一些与事件驱动相关的操作。
ExecSystem:在事件驱动模式系统中表示执行子系统,执行子系统是无子系统的系统;
Client通过EventSystem操作整个事件驱动模式系统,与系统中的子系统进行交互。如果消息接收者是一个执行子系统,则直接处理请求;如果接收者是管理子系统,它通常将请求以消息的形式发送给它的子系统,在转发请求消息之间或之后,可能执行一些辅助操作
实例
Turbo Vision(Pascal6.0 的开发工具包)
JavaBean
优缺点
优点:适合描写系统组;容易实现并发处理和多任务;可扩展性好;具有类层次结构;简化代码
缺点:因为树型结构所以削弱了对系统计算的控制能力;各个对象的逻辑关系复杂
基于事件驱动风格的系统往往都是面向对象的
分层风格
要为结构中的上层提供服务;还要作为结构中下面层次的客户,调用下层提供的功能函数
实例
计算机网络的设计
ISO/OSI采用了7层体系结构,从高到低分别是:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层
.Net框架
Android系统组成
Solaris 10 ZFS文件系统
基于Web浏览器的ZFS文件系统
优缺点
优点:支持系统设计过程中的逐级抽象;可扩展性好;支持软件复用
缺点:不同层次之间耦合度高的系统很难实现
数据共享风格
以数据为中心,共享数据。其运行机制是:收集、操作、保存大量的数据。
分类
基于传统数据库型数据共享风格的应用系统
外部元素来控制中央数据的状态
基于黑板型数据共享风格的应用系统
根据中央数据单元的各种不同的状态来启动不同的进程(外部单元)来响应知识库的状态变化
包括:知识源、黑板(数据)、控制
应用领域:信号处理、专家系统、模式识别
应用
专家系统ES
实质上是一组程序
搜索引擎
自然语言模型
优缺点
优点:中央数据单元实现了数据的集中,以数据为中心
缺点:适合于特定领域
解释器风格
解释器是用来执行其他程序的程序,其针对不同的硬件平台实现了一个虚拟机。将高级语言翻译为低级语言,消除程序语言与硬件之间的语义差异
核心在于虚拟机
应用
各类语言环境
Internet浏览器
数据分析与转换
LISP\PROLOG\JAVAScript\VBScript\matlab\数据库SQL解释器\通信协议
编译器
包括
伪码
需要被解释执行的源代码和解释引擎分析所得的中间代码
解释引擎
语法解释器和解释器当前的运行状态
实例
布尔表达式解释器
布尔表达式求值系统
Javascript 语言解释器JlBrowers
优缺点
优点:可以用多种操作来解释一个句子
缺点:适合于特定领域
虚拟机风格
实例
Kaffe虚拟机
Java虚拟机可以看做是一台抽象的计算机,如同真实的计算机一样,他有自己的指令集以及各种运行时内存区域。Java虚拟机只与特定的二进制文件格式(Class文件)格式关联,Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后把编译后的字节码文件放在Java虚拟机上来执行,Java虚拟机会将字节码再解释成机器码运行。
反馈控制环风格
控制系统必须事先知道被控对象的性质和特征,同时还须了解和掌握这些性质和特征随环境等因素变化的情况。为了将过程控制方法从单纯的控制领域中抽象出来,我们引入了 动态系统 的概念。
动态系统
分类(市内暖气系统)
开环控制
表示一个开放的作用过程(控制序列); 只能对抗指定由其处理的干扰,对于其他一些干扰因素无法消除; 只要被控制对象自己保持稳定,整个开环控制系统也就保持稳定。
闭环控制
表示一个闭合的作用过程,(控制回环); 根据闭环作用原理可增加抗干扰性(负反馈); 可能不稳定,也即被控量不再衰减,而是增长到无穷大(理论上)。
一个自动控制系统包括如下4个主要组成部分:被控对象、测量环节、调节器和执行环节
自适应控制环
参数自适应控制环
性能自适应控制环
实例
钢铁烧结工艺控制体系结构
优缺点
优点:将控制理论引入到计算机软件体系结构中
缺点:适合于特定领域
云体系结构风格
利用非本地或远程服务器(集群)的分布式计算机为互联网用户提供服务(计算、存储、软硬件等服务),以获得超级计算机的计算和存储功能,但是成本更低
可以划分为5个层次
案例
阿帕奇Hadoop(实现MapReduce模型的开源分布式并行编程框架)
优缺点
优点:提供可靠安全数据存储、端设备性能要求低 、设备间轻松数据共享
缺点:数据安全问题、网络通信质量问题
网格计算体系结构风格
属于分布式架构的一种,主要思想是利用各种分布在不同地点的资源来完成一个庞大到无法被一个机器实现的任务。
目标
资源和服务的无缝聚合
朴实服务架构
自发行为
案例
BOINC网格计算服务
优缺点
优点:- 让应用程序具有分布式的计算能力。 - 让应用程序可以获得更快的执行速度。 - 因为虚拟组织技术,应用具有很高的安全性能,和鲁棒性 - 跨组织性使得资源更加便宜,成本比较小
缺点:- 此架构风格不适用于小程序和计算需求不大的程序 - 运行速度仍然取决于网络中空闲的计算资源,并不是非常稳定。 - 网格计算程序应用程序设计比较复杂。
云计算考虑的情形是利用本地终端访问互联网并且将高计算需求的任务放到云端集群,以完成个人用户的高计算任务。 网格计算风格设计侧重在让各种异构的平台资源可以协同工作以及用户端对可利用资源的发现。
异构风格的集成
球队的运作可以用分层风格(Layered Pattern),面向对象风格(Object Oriented)和事件驱动(Event Driven)混合表示
分层风格是对整个球队基本阵型的模拟;
面向对象风格是对球队中的具体队员的模拟;
事件驱动风格对应于比赛过程中队员之间的相互通信方式
软件体系结构风格
允许风格异构组合,描述具有共享结构和语义的系统
软件体系结构模式
在某具体环境中提出结构性的解决办法