第2章 软件体系结构风格1 - 经典风格
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
从建筑风格说起 – 土耳其
10
从建筑风格说起 – 美国
11
建筑风格(Style)具备如下特点
describes a class of architectures
描述了一类建筑的总体结构
is found repeatedly in practice
在实践中被多次设计、应用
is a package of design decisions
在很多工程领域,基于模式和设计风格的开发方法是非常 普遍的,一个设计良好的通用模式是一个工程领域技术成 熟的标志之一
2
从建筑风格说起 – 雅典
3
从建筑风格说起 – 罗马
4
从建筑风格说起 – 哥本哈根
5
从建筑风格说起 – 巴黎
6
卢浮宫的三件宝
7
从建筑风格说起 – 香港
8
从建筑风格说起 – 韩国
必须修改所有显式调用它的其它对象,并消除由此带来的 一些副作用。例如,如果A使用了对象B,C也使用了对 象B,那么,C对B的使用所造成的对A的影响可能是料想 不到的
24
分层系统
用户系统 基本工具
核心层
过程调用
各种构件
25
分层系统的特征
按层次结构组织软件系统,每一层为上层服务,并作为下 层客户,内部的层只对相邻的层可见
◦ 对基于这种风格的软件系统所进行的分析方法
15
讨论体系结构风格时要回答的问题
构件和连接件的类型是什么? 可容许的结构模式(包括构件、连接件、约束)
是什么? 风格的基本不变性是什么? 其使用的常见例子是什么? 使用此风格的优缺点是什么? 是否存在使用多种风格的软件系统?
16
是若干设计思想的综合
has known properties that permit reuse
具有已经被熟知的特性,并且可以复用
ths same to Software Architecture
12
软件体系结构风格的产生
软件体系结构设计的一个核心问题是: ◦ = 能否使用重复的体系结构模式 ◦ = 能否达到体系结构级的软件重用 ◦ = 能否在不同的软件系统中使用同一个体系结构
这种风格的连接件就象是数据流传输的管道,将一个过滤
器的输出传到另一过滤器的输入
18
管道和过滤器实例
19
管道-过滤器的特性
过滤器是独立运行的构件
◦ 过滤器之间不共享状态 ◦ 过滤器自身无状态
过滤器对其处理上下连接的过滤器“无知”
◦ 仅需要对输入管道的输入数据流进行限制,并保证输出 管道的输出数据流有适合的内容,对相邻过滤器的实现 细节不施加任何限制
抽象数 是一种被称作管理者
据类型
的构件,因为它负责
保持资源的完整性。
对象
对象
对象是通过函数和过
过程调用
程的调用来交互的
23
数据抽象和面向对象的优缺点
因为一个对象对其它对象隐藏了它的具体实现,所以可以 改变一个பைடு நூலகம்象的实现,而不影响其它的对象
继承、封装、多态
为了使一个对象和另一个对象通过过程调用等进行交互, 必须知道对象的标识。只要一个对象的标识改变了,就必 须修改所有其他明确调用它的对象
第三章 软件体系结构风格
3.1 经典的软件体系结构风格 3.2 C/S、B/S类架构 3.3 分布式对象技术 3.4 其他软件体系结构风格
1
为什么形成了不同的风格
风格是带有倾向性的模式。针对同一个问题,可以有不同 的解决方案或模式,但我们根据经验和问题特征,通常会 强烈倾向于采用特定的模式,这就是风格
最终输出的正确性不依赖于过滤器运行的次序
◦ 各过滤器在输入具备后完成自己的计算,完整的计算过 程包含在过滤器之间的拓扑结构中
管道和过滤器的优点
使得软构件具有高内聚、低耦合、易理解的特点,允许设 计者将整个系统的输入/输出行为看成是多个过滤器的行 为的简单合成
支持构件重用,只要提供适合在两个过滤器之间传送的数 据,任何两个过滤器都可被连接起来
软件体系结构风格是描述某一特定应用领域中,系统组织 方式的惯用模式 (idiomatic paradigm),反映了该领域 中众多系统所共有的结构和语义特性,并指导如何将各个 模块或子系统有效的组织成一个完整的系统
13
常用的体系结构风格
数据抽象和面向对象的组织结构 事件驱动和隐式调用 分层系统(OSI七层协议) C/S, B/S ……
交互只在相邻的层间发生,同时,这些交互按照一定的协 议进行,连接件可以用层次间的交互协议来定义
这种风格允许将一个复杂问题分解成一个增量步骤序列的 实现。由于每一层最多只影响两层,同时只要给相邻层提 供相同的接口,允许每层用不同的方法实现,同样为软件 重用提供了强大的支持
系统维护和增强系统性能简单,新的过滤器可以添加到现 有系统中来;旧的可以被改进的过滤器替换掉
允许对一些如吞吐量、死锁等属性的分析 支持并行执行,每个过滤器是作为一个单独的任务完成,
因此可与其它任务并行执行
21
管道和过滤器的缺点
导致过滤器的处理过程包含只能批量执行的若干操作。这 是因为,过滤器是独立的,设计者必须将每个过滤器看成 一个完整的输入到输出的转换,而不能将其中的操作分解
经典的软件体系结构风格
1. 管道和过滤器 2. 数据抽象和面向对象组织 3. 分层系统 4. 基于事件的隐式调用 5. 黑板风格 6. MVC框架
17
管道和过滤器
管道
过滤器
每个构件(称为过滤器)都有一组输入和输出,构件从输 入源读入数据流,并在输出池产生输出数据流,构件对输 入流进行内部转换和增量计算,因此在输入数据流被全部 处理之前,输出就已经开始了
14
软件体系结构风格的四要素
一个体系结构风格定义一个词汇表和一组约束:
◦ 词汇表中包含一些构件(如客户机、服务器、层、数据库等)和 连接件(如过程调用、事件消息、协议等)类型
◦ 这组约束指出系统是如何将这些构件和连接件组合起来的
此外,一个体系结构风格还包括:
◦ 一套语义解释规则,说明构件和连接件的组装是具有良定义的实 际意义的;
不适合处理交互的应用,当需要增量地显示改变时,这个 问题尤为严重
因为在数据传输上没有通用的标准,每个过滤器都增加了 解析和合成数据的工作,这样就导致了系统性能下降,并 增加了编写过滤器的复杂性
22
数据抽象和面向对象组织结构
对象
对象
这种风格的构件是对
象,或者说是抽象数
据类型的实例。对象
对象
从建筑风格说起 – 土耳其
10
从建筑风格说起 – 美国
11
建筑风格(Style)具备如下特点
describes a class of architectures
描述了一类建筑的总体结构
is found repeatedly in practice
在实践中被多次设计、应用
is a package of design decisions
在很多工程领域,基于模式和设计风格的开发方法是非常 普遍的,一个设计良好的通用模式是一个工程领域技术成 熟的标志之一
2
从建筑风格说起 – 雅典
3
从建筑风格说起 – 罗马
4
从建筑风格说起 – 哥本哈根
5
从建筑风格说起 – 巴黎
6
卢浮宫的三件宝
7
从建筑风格说起 – 香港
8
从建筑风格说起 – 韩国
必须修改所有显式调用它的其它对象,并消除由此带来的 一些副作用。例如,如果A使用了对象B,C也使用了对 象B,那么,C对B的使用所造成的对A的影响可能是料想 不到的
24
分层系统
用户系统 基本工具
核心层
过程调用
各种构件
25
分层系统的特征
按层次结构组织软件系统,每一层为上层服务,并作为下 层客户,内部的层只对相邻的层可见
◦ 对基于这种风格的软件系统所进行的分析方法
15
讨论体系结构风格时要回答的问题
构件和连接件的类型是什么? 可容许的结构模式(包括构件、连接件、约束)
是什么? 风格的基本不变性是什么? 其使用的常见例子是什么? 使用此风格的优缺点是什么? 是否存在使用多种风格的软件系统?
16
是若干设计思想的综合
has known properties that permit reuse
具有已经被熟知的特性,并且可以复用
ths same to Software Architecture
12
软件体系结构风格的产生
软件体系结构设计的一个核心问题是: ◦ = 能否使用重复的体系结构模式 ◦ = 能否达到体系结构级的软件重用 ◦ = 能否在不同的软件系统中使用同一个体系结构
这种风格的连接件就象是数据流传输的管道,将一个过滤
器的输出传到另一过滤器的输入
18
管道和过滤器实例
19
管道-过滤器的特性
过滤器是独立运行的构件
◦ 过滤器之间不共享状态 ◦ 过滤器自身无状态
过滤器对其处理上下连接的过滤器“无知”
◦ 仅需要对输入管道的输入数据流进行限制,并保证输出 管道的输出数据流有适合的内容,对相邻过滤器的实现 细节不施加任何限制
抽象数 是一种被称作管理者
据类型
的构件,因为它负责
保持资源的完整性。
对象
对象
对象是通过函数和过
过程调用
程的调用来交互的
23
数据抽象和面向对象的优缺点
因为一个对象对其它对象隐藏了它的具体实现,所以可以 改变一个பைடு நூலகம்象的实现,而不影响其它的对象
继承、封装、多态
为了使一个对象和另一个对象通过过程调用等进行交互, 必须知道对象的标识。只要一个对象的标识改变了,就必 须修改所有其他明确调用它的对象
第三章 软件体系结构风格
3.1 经典的软件体系结构风格 3.2 C/S、B/S类架构 3.3 分布式对象技术 3.4 其他软件体系结构风格
1
为什么形成了不同的风格
风格是带有倾向性的模式。针对同一个问题,可以有不同 的解决方案或模式,但我们根据经验和问题特征,通常会 强烈倾向于采用特定的模式,这就是风格
最终输出的正确性不依赖于过滤器运行的次序
◦ 各过滤器在输入具备后完成自己的计算,完整的计算过 程包含在过滤器之间的拓扑结构中
管道和过滤器的优点
使得软构件具有高内聚、低耦合、易理解的特点,允许设 计者将整个系统的输入/输出行为看成是多个过滤器的行 为的简单合成
支持构件重用,只要提供适合在两个过滤器之间传送的数 据,任何两个过滤器都可被连接起来
软件体系结构风格是描述某一特定应用领域中,系统组织 方式的惯用模式 (idiomatic paradigm),反映了该领域 中众多系统所共有的结构和语义特性,并指导如何将各个 模块或子系统有效的组织成一个完整的系统
13
常用的体系结构风格
数据抽象和面向对象的组织结构 事件驱动和隐式调用 分层系统(OSI七层协议) C/S, B/S ……
交互只在相邻的层间发生,同时,这些交互按照一定的协 议进行,连接件可以用层次间的交互协议来定义
这种风格允许将一个复杂问题分解成一个增量步骤序列的 实现。由于每一层最多只影响两层,同时只要给相邻层提 供相同的接口,允许每层用不同的方法实现,同样为软件 重用提供了强大的支持
系统维护和增强系统性能简单,新的过滤器可以添加到现 有系统中来;旧的可以被改进的过滤器替换掉
允许对一些如吞吐量、死锁等属性的分析 支持并行执行,每个过滤器是作为一个单独的任务完成,
因此可与其它任务并行执行
21
管道和过滤器的缺点
导致过滤器的处理过程包含只能批量执行的若干操作。这 是因为,过滤器是独立的,设计者必须将每个过滤器看成 一个完整的输入到输出的转换,而不能将其中的操作分解
经典的软件体系结构风格
1. 管道和过滤器 2. 数据抽象和面向对象组织 3. 分层系统 4. 基于事件的隐式调用 5. 黑板风格 6. MVC框架
17
管道和过滤器
管道
过滤器
每个构件(称为过滤器)都有一组输入和输出,构件从输 入源读入数据流,并在输出池产生输出数据流,构件对输 入流进行内部转换和增量计算,因此在输入数据流被全部 处理之前,输出就已经开始了
14
软件体系结构风格的四要素
一个体系结构风格定义一个词汇表和一组约束:
◦ 词汇表中包含一些构件(如客户机、服务器、层、数据库等)和 连接件(如过程调用、事件消息、协议等)类型
◦ 这组约束指出系统是如何将这些构件和连接件组合起来的
此外,一个体系结构风格还包括:
◦ 一套语义解释规则,说明构件和连接件的组装是具有良定义的实 际意义的;
不适合处理交互的应用,当需要增量地显示改变时,这个 问题尤为严重
因为在数据传输上没有通用的标准,每个过滤器都增加了 解析和合成数据的工作,这样就导致了系统性能下降,并 增加了编写过滤器的复杂性
22
数据抽象和面向对象组织结构
对象
对象
这种风格的构件是对
象,或者说是抽象数
据类型的实例。对象
对象