一、经典软件体系结构风格
- 数据流风格:批处理序列;管道/过滤器
- 调用/返回风格:主程序/子程序;面向对象风格;层次结构
- 独立构件风格:进程通讯;事件系统
- 虚拟机风格:解释器;基于规则的系统
- 仓库风格:数据库系统;超文本系统;黑板系统
管道与过滤器
优点
- 使得软构件具有良好的隐蔽性和高内聚、低耦合的特点
- 允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成
- 支持软件重用
- 系统维护和增强系统性能简单
- 允许对一些如吞吐量、死锁等属性的分析
- 支持并行执行
缺点
- 通常导致进程成为批处理的结构
- 不适合处理交互的应用
- 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性
数据抽象和面向对象组织
优点
- 能形象地表现现实世界的领域,重用性高,对应变化很强。即易扩展,维护性强
缺点
- 性能损失。面向对象编程为了: 重用性、灵活性 和扩展性等特性而作出的牺牲。测试比较麻烦,对整体系统设计要求高
基于事件的隐式调用
优点
- 为软件重用提供了强大的支持。当需要将一个构件加入现存系统中时,只需将它注册到系统的事件中。
- 为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响到其它构件的接口。
缺点
- 构件放弃了对系统计算的控制。数据交换的问题。有时数据可被一个事件传递,但有时系统必须依靠一个共享的仓库进行交互。这时全局性能和资源管理便成了问题。既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题。
分层系统
优点
- 支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解
- 支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层
- 支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。
缺点
- 并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来。很难找到一个合适的、正确的层次抽象方法。
黑板系统
知识源、黑板数据结构、控制
C2风格
可以概括为通过连接件绑定在一起的按照一组规则动作的并行构件网络。
系统组织规则
- 系统中的构件和连接件都有一个顶部一个底部
- 构件的顶部应连接到某连接件的底部,构件的底部应连接到连接件的顶部,而构件与构件之间的直接连接是不允许的
- 一个连接件可以和任意数目的其他构件和连接件连接
- 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部
C2风格的特点
- 系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起
- 所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的
- 构件相对独立,构件之间依赖性较少
二、客户/服务器(C/S)风格【两层:表示层、数据层】
三个主要组成部分:数据库服务器、客户应用程序和网络。
-
服务器
-
数据库安全性的要求;
-
数据库访问并发性的控制;
-
数据库前端的客户应用程序的全局数据完整性规则;
-
数据库的备份与恢复。
-
客户应用程序
-
提供用户与数据库交互的界面;
-
向数据库服务器提交用户请求并接收来自数据库服务器的信息;
-
利用客户应用程序对存在于客户端的数据执行应用逻辑要求。
优点
- C/S 架构具有强大的数据操作和事务处理能力,模型思想简单,易于理解。
- 系统的客户应用程序和服务器构件分别运行在不同计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。
- 系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约费用。
缺点
- 开发成本较高
- 客户端程序设计复杂
- 信息内容和形式单一
- 用户界面风格不一使用繁杂,不利于推广使用
- 软件移植困难
- 软件维护和升级困难
- 新技术不能轻易应用
三、三层C/S结构风格
表示层
:应用的用户接口部分,它担负着用户与应用之间的对话功能
功能层
:相当于应用的实体,它是将具体业务处理逻辑编入程序中
数据层
:数据层就是数据库管理系统,负责管理对数据库的读写
优点
- 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性,和可扩展性。
- 允许更灵活选用相应的平台和硬件系统,使之在的各层可以并行开发,可以选择各自最适合的开发语言。
- 利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段非法访问数据层,为严格的安全管理奠定了坚实的基础。
要注意的问题
三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层C/S结构的关键问题。
四、三层B/S风格
B/S 风格就是上述三层应用结构的一种实现方式
具体结构
:浏览器、Web服务器、数据库服务器
优点
- 基于B/S体系结构的软件,系统安装,修改和维护全在服务器端解决。
- 提供了异种机,异种网,异种应用服务的联机,联网,同意服务的最现实的开放性基础。
缺点
- 缺乏对动态页面的支持能力,没有集成有效的数据库处理能力。
- B/S体系结构的系统扩展能力差,安全性难以掌控
- 在数据查询等响应速度上,要远远低于C/S体系结构。
- 数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理应用
五、其他
公共对象请求代理体系结构 ——CORAB
基于层次消息总线的体系结构风格 ——HMB
【层次消息总线】
- 动态增加或删除构件
- 动态改变构件响应的消息类型
- 消息过滤
异构结构风格
互连系统构成的系统【的软件体系结构】——SIS
【SASIS
】
特定领域软件体系结构 ——DSSA