系统架构设计师 - 软件架构设计 - 软件架构风格

软件架构风格描述

软件架构风格是描述某一特定领域内系统组织方式的惯用模式,它包括一个词汇表和一组约束.词汇表包扩一些构件和连接件的类型.而约束描述了系统是如何将这些构件和连接件组合到一起的.软件架构风格反映了特定领域内的系统共有的结构和语义,并指导系统如果将子系统和构件有效的连接在一起.
以下红色只为个人备忘,不代表知识点重要程度

数据流风格

批处理风格

由一组固定顺序的构件连接在一起组成
每个构件的开始必须在上一个构件的结束后开始。构件间交互的数据必须时完整的。

管道过滤器风格

构件有一个输入流、一个输出流。构件根据输入流进行内部处理,产生输出流,构件即过滤器。构件的连接件即为管道,负责把一个过滤器的输出传给另一个过滤器的输入
优点:
构件间具有良好的隐蔽性和低耦合性;
支持软件重用只需要确定构件间交互的数据格式,即可将任何两个构件连接在一起;
可扩展性强,添加新的构件,可修改性强,更换构件不会对其他构件和整体架构造成影响;
支持并行处理,每个过滤器可作为单独任务完成;
缺点:
难以定义过滤器间数据通信的统一标准;

调用返回风格

主子程序风格

单线程控制,把问题分成若干处理步骤主程序根据自身需要,选择子程序进行调用。

面向对象(显式调用风格)

将构件间交互的数据的表示形式及其操作封装成对象,即构件。构件间的过程调用或函数即连接件。
优点:
对象具有的封装性,修改一个对象不会对其他对象照成影响;
一个构件如果想要调用另一个构件,只需要知道另一个构件的标识即可。
缺点:
一但一个构件的标识发生变化,那么所有调用这个对象的构件都要发生变化;
如果A调用了C,B也调用了C,那么A对C的影响对B是不可预计的;

层次结构风格

每一层即为构件,层与层间的通讯即为连接件。每一层负责调用下一层的功能,并向上一层提供功能。每一层只可见其相邻的两个层次;
优点:
把一个复杂的问题分成增量步骤去解决,降低问题复杂度,逐个击破
具有良好的低耦合特性,每一层的变动仅对其相邻的层次照成影响;扩展性,添加新的层次简单;
缺点:过多的层次调用影响响应效率

独立构件风格

调用返回风格(隐式调用)

构件不直接调用构件的过程,而是触发一个事件或触发多个事件.系统中其他构件的过程在一个或多个构件中注册,当一个事件触发时,所有在该事件中进行注册的构件的过程都将被调用;
优点:
低耦合性,每个构件不直接关联到一起,二十通过注册的方式关联;
可复用性强,一个构件的过程可以被多个事件调用,只需要在事件中进行注册;
可扩展性强,新增一个构件时只需要把它注册在相关的事件中,替换一个构件时不会对其他构件或整体系统照成影响;
缺点:
一个事件触发后,其无法知晓其中注册的构件的过程是否成功执行;
即使知道一个事件中注册了哪些构件的过程,但其调用过程的顺序不可保证

虚拟机风格

基于规则风格

用于专家系统

解释器风格

完成解释工作的解释引擎,待解释代码的储存区,记录当前解释器解释状态的数据结构,记录源代码被解释进度的数据结构来屏蔽来自操作系统,数据等外部环境的差异,建立解释规则
优点:
缺点:
效率低

仓库风格

数据库风格

说明当前系统数据状态的中央数据结构,在中央数据结构上执行的构件
输入流中的某个事件触发进程的选择

黑板系统

说明系统数据状态的中央数据结构,在中央数据结构上运行的构件
中央数据结构的当前状态触发进程选择

浏览器风格

两层CS架构

胖客户端. 表示层- 数据层
缺点:
开发成本高,要开发客户端,客户端设计复杂;
软件移植困难;
客户端冗余业务,不利于维护,修改扩展时很麻烦;
优点:
响应效率会比BC略高,因为客户端负责了部分的运算;
网络负载小,一般都在内部局域网;
安全性高,不涉及互联网传输;

三层CS架构

瘦客户端. 表示层 - 功能层 - 数据层
对两层CS架构中,客户端和服务器端的均存在的功能层进行了提取

三层BS架构

0客户端. 浏览器 - web服务器
使用通用的浏览器和www访问Web服务器的方式进行交互.
优点:可扩展性强,浏览器不冗余业务.
缺点:
安全性不如CS(通过信息安全策略弥补);
对动态页面的支持不足(通过jsp css等弥补);
以页面为提交单位(通过ajax弥补)

混合架构

内外有别:
内部管理体系健全,客户端可维护且客户端数量校验,可采用CS;
外部分布区域广,免去客户端维护,可扩展性号;
查改有别:

其他风格

C2风格

每个构件都一个顶部和底部.每个构件可以和任何其他构件连接. 每个构件的顶部只能连接在另一个构件的底部.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值