体系结构风格比较

软件体系结构风格比较

体系结构风格比较_第1张图片

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

  1. 主程序-子程序风格

构件:主程序、子程序
连接器:调用返回机制
拓扑结构:层次化结构

系统由一个主程序和一些具有层次结构的子程序构成,(主程序调用比较高层次的主程序,高子程序调用低子程序,一个子程序的正确性依赖于它调用的子程序),一个子程序或辅程序是一个比较大的程序中的一部分代码,它执行一个特定的任务,并且代码相对独立,结构化程序使用。

优点:
(1)有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。已被证明是成功的设计方法,可以被用于较大程序
缺点:
(1)主程序的正确性依赖于子程序的正确性
(2)可重用性差
(3)数据安全性差
(4)开发和维护困难

2.数据抽象与面向对象风格

构件:对象
连接器:函数调用和过程调用

优点:
(1)使细节内容对外部环境得以良好的隐藏
(2)提高了系统内举行,减小了模块之间的耦合度
(3)使用某个对象提供的服务并不需要知道服务内部如何实现
(4)使组件和组件之间的操作以良好的黑箱方式进行
缺点:
(1)如果一个对象要调用另一个对象,则必须知道它的标识和名称
(2)会产生连锁反应(如果一个对象的标识发生变化,那么必须显示调用它的其他对象,并消除由此引发的副作用)

3.分层系统风格
优点:
(1)支持基于抽象成都递增的系统设计
(2)支持功能增强
(3)支持虫蛹
缺点:
(1)不是所有的系统都容易被组织成层次结构
(2)正确的层次抽象很难
(3)有时即便一个系统可以从逻辑上被组织成一个层次结构,但是出于性能方面的考虑,可能要求层
次结构中的逻辑上的较高层次与较低层次之间有比较紧密的耦合

二、数据流体系结构风格

连接件:数据流
计算模型:从入口读书,计算,然后写到出口
构件接口:输入/输出端口
拓扑结构:无序流向数据流 线性数据流 循环数据流

1.管道-过滤器风格
过滤器组件:丰富提炼数据和转换数据
构件:过滤器
连接件:管道
过滤器必须是独立实体

优点:

(1)每个构件行为不受其他构件影响,系统行为易于理解
(2)支持功能模块复用
(3)具有较强的可维护性和可扩展性
(4)支持如吞吐量计算和死锁检测等数据分析
(5)支持并发执行
缺点:
(1)交互能力差,处理两个独立但又相关的数据流时可能会遇到困难
(2)需要对数据传输进行特定的处理时,会导致对于每个过滤器的解析输入和格式化输出要做更多的工作,系统复杂性的上升
(3) 占用较多存储空间

2.批处理风格
优点:
(1)每个处理步骤是一个独立程序
(2)每一步在前一步结束后才能开始
(3)数据必须是完整的,以整体方式传递
(4)由于组件顺序执行,不必对组件进行额外的同步处理
缺点:
(1)不适用对数据进行实时处理的系统
(2)性能较差

批处理风格与管道过滤器风格比较:
⚫ 共同点:把任务分成一系列固定顺序的计算单元(组件).组件间只通过数据传递交互。
⚫ 区别: 批处理是全部的、高潜伏性的,输入时可随机存取,无合作性、无交互性;
而管道-过滤器是递增的,数据结果延迟小,输入时处理局部化,有反馈、可交互。

三、独立组件体系结构风格

1.基于事件的隐式调用风格
事件系统中的构件:
(1)一个过程集合
(2)一个事件集合

优点:
(1)为软件重用提供了强大支持。(当需要将一个构件加入现存系统重视,只需将它注册到系统的事件中。)
(2)为改进系统带来了方便。(当用一个构件代替另一个构件时,不会影响到其他构件的接口。)

缺点:

(1)构件放弃了对系统计算的控制。(一个构件触发一个事件时,不能确定其他构件是否会响应它,而且它也不知道响应它的其他事件过程被调用的顺序。)
(2)数据交互问题。(有时数据可能被一个事件传递,但另一些情况下,基于事件的系统必须依靠一个共 享的仓库进行交互。在这些情况下,全局性能和资源管理便成了问题(当事件数据比较大的时候)。)
(3)过程的语义必须依赖于被触发事件的上下文约束,所以关于正确性的推理存在问题。(如:A要B前发生,但是如果A、B都依赖于C,当C触发时,A 和B的先后顺序便未知了。)

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

1.黑板风格

一个标准的黑板型仓库模式系统通常包括3个组成部分:
⚫ 知识源
⚫ 中央数据单元
⚫ 控制单元

优点:
(1)可重用的知识源。
(2) 便于多客户共享大量数据
(3)便于扩展、支持容错性和健壮性

缺点:
(1)没有直接的算法可解
(2)不确定性

2.仓库风格

仓库风格的系统由两个构件组成:
⚫ 一个中央数据结构,它表示当前状态;
⚫ 一个独立构件的集合,它对中央数据结构进行操作。

优点:
(1)很容易增加数据的生产者和消费者
缺点:
⚫ 同步问题
⚫ 配置和管理问题
⚫ 原子性问题
⚫ 一致性问题
⚫ 持久性问题
⚫ 性能问题

五、虚拟机体系结构风格

1.解释器
解释器风格的系统通常包括一个作为执行引擎的状态机3个存储器,即系统由4个构件组成执行引擎的当前状态:正在被解释的程序,执行引擎,被解释的程序的状态。
连接件包括过程调用和直接存储器访问。

优点:
(1)有助于应用程序的可移植性和程序设计语言的跨平台能力
(2) 可以对未实现的硬件进行仿真
缺点:
(1)额外的间接层次带来了系统性能的下降

六、C2 体系结构风格

优点:
(1)可以使用任何编程语言来开发构件,构件重用和替换比较容易实现
(2)具有一定的扩展能力,可以有多种不同粒度的构件
(3)构件不需要共享地址空间,避免了共享全局变量所造成的复杂关系
(4)具有良好的适应性
(5)在C2体系结构中,可以使用多个工具集和多种媒体类型,能够动态地更新系统的框架结构

缺点:
(1)构件和构件之间不允许直接相连
(2)与某一个连接件相关联的构件和连接件的数目没有限制

七、C/S 体系结构风格

优点:
(1)客户机构件和服务器构件分别运行在不同的计算机上,有利于分布式数据的组织和处理。
(2)构件之间的位置是相互透明的,客户机程序和服务器程序都不必考虑对方的实际存储位置。
(3)客户机侧重数据的显示和分析,服务器则注重数据的管理。
(4)构件之间是彼此独立和充分隔离的。
(5)将大规模的业务逻辑分布到多个通过网络连接的低成本的计算机,降低了系统的整体开销。

缺点:
(1)开发成本较高。
(2)在开发C/S结构系统时,大部分工作都都集中在客户机程序的设计上,增加了设计的复杂度。
(3)信息内容和形式单一。
(4)如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要对运行环境进行重新配置,增加了维护费用。
(5)两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Intranet和Internet。
(6)数据安全性不高

八、B/S 体系结构风格

优点:
(1)客户端只需要安装浏览器,操作简单。
(2)运用HTTP标准协议和统一客户端软件,能够实现跨平台通信。
(3)开发成本比较低,只需要维护Web服务器程序和中心数据库。

缺点:
(1)个性化程度比较低,所有客户端程序的功能都是一样的。
(2)客户端数据处理能力比较差。
(3)在B/S结构的系统中,数据提交一般以页面为单位,动态交互性不强,不利于在线事务处理。
(4)B/S体系结构的可扩展性比较差,系统安全性难以保障。
(5)B/S结构的应用系统查询中心数据库,其速度要远低于C/S体系结构。

九、正交体系结构风格

优点:
(1)结构清晰。
(2)便于修改和维护。
(3)易于重用。

十、MVC 体系结构风格

优点:
(1)多个视图与一个模型相对应
(2)具有良好的移植性。
(3)系统被分割为三个独立的部分,当功能发生变化时,改变其中的一个部分就能够满足要求。

缺点:
(1)增加了系统设计和运行复杂性。
(2)视图与控制器连接过于紧密,妨碍两者的独立复用。
(3)视图访问模型的效率比较低。

你可能感兴趣的:(体系结构风格比较)