第3章软件体系结构风格 3.1软件体系结构风格概述 ◇定义 软件体系结构风格是描述某一特定应用领域中系统组 织方式的惯用模式。 体系结构风格定义了一个系统家族,即一个体系结构 定义一个词汇表和一组约束。词汇表中包含一些构件和 连接件类型,而这组约束指出系统是如何将这些构件和 连接件组合起来的。 体系结构风格反映了领域中众多系统所共有的结构和 语义特性,并指导如何将各个模块和子系统有效地组织 成一个完整的系统。 希赛
◇ 定义 第3章 软件体系结构风格 3.1 软件体系结构风格概述 软件体系结构风格是描述某一特定应用领域中系统组 织方式的惯用模式。 体系结构风格定义了一个系统家族,即一个体系结构 定义一个词汇表和一组约束。词汇表中包含一些构件和 连接件类型,而这组约束指出系统是如何将这些构件和 连接件组合起来的。 体系结构风格反映了领域中众多系统所共有的结构和 语义特性,并指导如何将各个模块和子系统有效地组织 成一个完整的系统
第3章软件体系结构风格 3.1软件体系结构风格概述 讨论体系结构风格时要回答的问题 构件和连接件的类型是什么? 可容许的结构模式是什么? 基本的计算模型是什么? 风格的基本不变性是什么? 其使用的常见例子是什么? 使用此风格的优缺点是什么? 其常见的特例是什么? 希赛⑧
◇ 讨论体系结构风格时要回答的问题 第3章 软件体系结构风格 3.1 软件体系结构风格概述 ◎ 构件和连接件的类型是什么? ◎ 可容许的结构模式是什么? ◎ 基本的计算模型是什么? ◎ 风格的基本不变性是什么? ◎ 其使用的常见例子是什么? ◎ 使用此风格的优缺点是什么? ◎ 其常见的特例是什么?
第3章软件体系结构风格 3.1软件体系结构风格概述 经典的体系结构风格 数据流风格:批处理序列;管道/过滤器 ◎ 调用/返回风格:主程序/子程序;面向对象风格;层 次结构。 独立构件风格:进程通讯; 事件系统。 虚拟机风格:解释器; 基于规则的系统。 仓库风格:数据库系统;超文本系统;黑板系统。 SA 希赛⑧
◇ 经典的体系结构风格 第3章 软件体系结构风格 3.1 软件体系结构风格概述 ◎ 数据流风格:批处理序列;管道/过滤器。 ◎ 调用/返回风格:主程序/子程序;面向对象风格;层 次结构。 ◎ 独立构件风格:进程通讯;事件系统。 ◎ 虚拟机风格:解释器;基于规则的系统。 ◎ 仓库风格:数据库系统;超文本系统;黑板系统
第3章软件体系结构风格 3.2 经典软件体系结构风格 管道和过滤器 每个构件都有一组输入和输出,构件读输入的数据流 经过内部处理,然后产生输出数据流。这个过程通常通 过对输入流的变换及增量计算来完成,所以在输入被完 全消费之前,输出便产生了。 这里的构件被称为过滤器,这种风格的连接件就象是 数据流传输的管道,将一个过滤器的输出传到另一过滤 器的输入。 希赛
◇ 管道和过滤器 第3章 软件体系结构风格 3.2 经典软件体系结构风格 每个构件都有一组输入和输出,构件读输入的数据流, 经过内部处理,然后产生输出数据流。这个过程通常通 过对输入流的变换及增量计算来完成,所以在输入被完 全消费之前,输出便产生了。 这里的构件被称为过滤器,这种风格的连接件就象是 数据流传输的管道,将一个过滤器的输出传到另一过滤 器的输入
第3章软件体系结构风格 3.2经典软件体系结构风格 管道和过滤器 管道 过滤器 希赛⑧
◇ 管道和过滤器 第3章 软件体系结构风格 3.2 经典软件体系结构风格 过滤器 管道
第3章软件体系结构风格 3.2经典软件体系结构风格 管道和过滤器风格的优点 使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; 允许设计者将整个系统的输入/输出行为看成是多个过滤器的 行为的简单合成; ◎支持软件重用。只要提供适合在两个过滤器之间传送的数据, 任何两个过滤器都可被连接起来; ◎系统维护和增强系统性能简单。 新的过滤器可以添加到现有系 统中来;旧的可以被改进的过滤器替换掉; 允许对一些如吞吐量、死锁等属性的分析; 支持并行执行。每个过滤器是作为一个单独的任务完成,因此 可与其它任务并行执行。 SA 希赛⑧
◇ 管道和过滤器风格的优点 第3章 软件体系结构风格 3.2 经典软件体系结构风格 ◎ 使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; ◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的 行为的简单合成; ◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据, 任何两个过滤器都可被连接起来; ◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系 统中来;旧的可以被改进的过滤器替换掉; ◎ 允许对一些如吞吐量、死锁等属性的分析; ◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此 可与其它任务并行执行
第3章软件体系结构风格 3.2 经典软件体系结构风格 管道和过滤器的缺点 ◎通常导致进程成为批处理的结构。这是因为虽然过滤器可增 量式地处理数据,但它们是独立的,所以设计者必须将每个过 滤器看成一个完整的从输入到输出的转换; ◎ 不适合处理交互的应用。当需要增量地显示改变时,这个问 题尤为严重; ◎因为在数据传输上没有通用的标准,每个过滤器都增加了解 析和合成数据的工作,这样就导致了系统性能下降,并增加了 编写过滤器的复杂性。 希赛⑧
◇ 管道和过滤器的缺点 第3章 软件体系结构风格 3.2 经典软件体系结构风格 ◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器可增 量式地处理数据,但它们是独立的,所以设计者必须将每个过 滤器看成一个完整的从输入到输出的转换; ◎ 不适合处理交互的应用。当需要增量地显示改变时,这个问 题尤为严重; ◎ 因为在数据传输上没有通用的标准,每个过滤器都增加了解 析和合成数据的工作,这样就导致了系统性能下降,并增加了 编写过滤器的复杂性
第3章软件体系结构风格 3.2 经典软件体系结构风格 数据抽象和面向对象组织 这种风格建立在数据抽象和面向对象的基础上,数 据的表示方法和它们的相应操作封装在一个抽象数据 类型或对象中。 这种风格的构件是对象,或者说是抽象数据类型的 实例。对象是一种被称作管理者的构件,因为它负责 保持资源的完整性。对象是通过函数和过程的调用来 交互的。 5ǖ 希赛
◇ 数据抽象和面向对象组织 第3章 软件体系结构风格 3.2 经典软件体系结构风格 这种风格建立在数据抽象和面向对象的基础上,数 据的表示方法和它们的相应操作封装在一个抽象数据 类型或对象中。 这种风格的构件是对象,或者说是抽象数据类型的 实例。对象是一种被称作管理者的构件,因为它负责 保持资源的完整性。对象是通过函数和过程的调用来 交互的
第3章软件体系结构风格 3.2经典软件体系结构风格 数据抽象和面向对象组织 对象 对象 对象 抽象数 据类型 对象 对象 过程调用 希赛
◇ 数据抽象和面向对象组织 第3章 软件体系结构风格 3.2 经典软件体系结构风格 对象 抽象数 据类型 过程调用 对象 对象 对象 对象
第3章软件体系结构风格 3.2 经典软件体系结构风格 ◇ 面向对象系统的优点 ◎ 因为对象对其它对象隐藏它的表示,所以可以改 变一个对象的表示,而不影响其它的对象; 设计者可将一些数据存取操作的问题分解成一些 交互的代理程序的集合。 希赛⑧
◇ 面向对象系统的优点 第3章 软件体系结构风格 3.2 经典软件体系结构风格 ◎ 因为对象对其它对象隐藏它的表示,所以可以改 变一个对象的表示,而不影响其它的对象; ◎ 设计者可将一些数据存取操作的问题分解成一些 交互的代理程序的集合