软件体系结构风格

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 在某一种消息机制的控制下,系统作为一个整体与环境相适应和协调;
• 在一个系统的若干子系统中,必定有一个子系统起着主导作用,而其他子系统则处于 从属地位;
• 任一系统和系统内的任一元素,都有1个事件收集机制和1个事件处理机制,通过这种 机制与周围环境发生作用和联系;
输入
事件接收器
事件处理器
输出
反馈
电报、电话、传真、数据传输及可视电话等。对于基本的点对点通信,是把发送 端的消息传递到接收端。
发送端
接收端
数字通信概念模型
4.2. 经典软件体系结构风格
◇管道-过滤器风格实例——数字通信系统
将上图发送端进一步细分为信息源和发送设备,将接收端细分为接收设备和受 信者;同时,在通信过程中会有噪声干扰,在模型中添加噪声源可得到图所示 的数字通信系统粗略模型。
处理单元:进行数据流到数据流之间的转换:输入是数据流,输出也是数据流。
管 道
过滤器系统示例: • UNIX Shell 编写的程序; • 传统编译器:一个阶段(词
法分析、句法分析、语义分 析和代码生成)的输出是另 一个阶段的输入。
过 滤 器
4.2. 经典软件体系结构风格
◇ 管道和过滤器概念
过滤器系统示例:
• 特别注意:体系结构风格不是对软件进行分类的标准。它仅仅是表示描 述软件的不同角度而已.
• 例如一个系统采用了分层风格,但这并不妨碍它用面向对象的方法来实现。同 一个系统采用多种风格造成了所谓体系结构风格的异构组合。
4.2. 经典软件体系结构风格 (1) 管道和过滤器
每个构件都有一组输入和输出。构件称作过滤器(filters);构件间的连接可 以看作输入、输出数据流之间的通路,所以称作管道(pipes)。
4.1. 软件体系结构风格的概念 4.2. 经典软件体系结构风格
第四章
4.3. 客户/服务器风格 4.4. 浏览/服务器风格
本章要点
1 • 理解软件体系结构风格的概念和意义 2 • 掌握经典软件体系结构风格的内涵表示 3 • 掌握客户/服务器风格的结构与表示 4 • 了解其他软件体系结构风格,特别是浏览/服务风格
4.2. 经典软件体系结构风格
◇ 管道和过滤器特性
• 过滤器是独立运行的构件
• 非邻近的过滤器之间不共享状态 • 过滤器自身无状态
• 过滤器对其处理上下连接的过滤器“无知”
• 对相邻的过滤器不施加任何限制
• 结果的正确性不依赖于各个过滤器运行的先后次序
• 各过滤器在输入具备后完成自己的计算。完整的计算过程包含在过滤器之间 的拓扑结构中。
4.2. 经典软件体系结构风格
◇ 经典的体系结构风格
◎ 数据流风格(Data Flow):批处理序列;管道/过滤器。 ◎ 调用/返回风格(Call/Return):主程序/子程序;面向对象风格;层次结构。 ◎ 独立构件风格(Independent Components):进程通讯;事件系统。 ◎ 仓库风格(Data-centered):数据库系统;超文本系统;黑板系统。
Pass Text
Cancel Button
Log in Button
Option Group
Public Option
Private Option
4.2. 经典软件体系结构风格
◇面向对象风格实例——人事档案管理系统
人事 档案管 理系统




























4.2. 经典软件体系结构风格
4.1. 软件体系结构风格的概念
◇ 软件体系结构风格的定义
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式 (idiomatic paradigm)。
体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约 束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构 件和连接件组合起来的。
软件体系结构
推荐参考书
软件体系结构:原理、方法与实践(第2 版)张友生著,清华大学出版社,2014年。
软件建模与设计:UML、用例、模式和 软件体系结构,Hassan Gomaa著,彭鑫 等译,机械工业出版社,2014年。
软件体系结构(第3版),谭征著,清华 大学出版社,2015年。
软件体系结构风格
在这种模型中,整个系统没有一个共享的数据区。
数据不同管道上传输没有统一标准,每个过滤器都要做类似的数据打包和解包 工作,增加了复杂性。
4.2. 经典软件体系结构风格
◇管道-过滤器风格实例——数字通信系统
• 通信的目的是传递消息。消息具有不同的形式,例如:符号、文字、语音、音乐、 数据、图片、图像等等。因而,根据所传递消息的不同,目前通信业务可以分为
这种风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样 不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的 系统也包含显式调用作为构件交互的补充形式。
4.2. 经典软件体系结构风格
◇ 基于事件的系统的特点
• 系统是由若干子系统或元素所组成的一个整体;
• 系统有一定的目标,各子系统在某一种消息机制的控制下,为了这个目标而协调行动;
• 体系结构模式是具体的软件体系结构的模板,描述系统级的结构特性,并影响到 子系统的结构
• 对体系结构模式的选择是开发软件系统时最根本的设计决策.
设计模式:Design Pattern
• 设计模式给出了进一步细化一个软件系统的子系统或者组件的方案
• 设计模式一般为中层或中低层模式,常与特定的编程语言与方法无关。许多设 计模式提供了分解复杂系统与组件的结构,也有的描述了它们之间的协作关系。
提供一个词汇表 定义一套配置规则 定义一套语义解释原则 定义对基于这种风格的系统所进行的分析。
4.1. 软件体系结构风格的概念 ◇使用软件结构风格带来的好处
• 促进设计重用 • 带来巨大的代码重用 • 采用例行的结构,将使系统组成更易于被他人理解 • 使用标准化的风格有益于系统的互操作性 • 采用了某种体系结构风格的设计,通常允许专门的、此风格特有的体系结构分析
例如,如果A使用了对象B,C也使用了对象B,那么,C对B的使用所造成的对A的影响
可能是料想不到的。
C
C
A B
A
B
B’
4.2. 经典软件体系结构风格 (3)基于事件的系统
构件不直接调用一个过程,而是触发或广播一个或多个事件,系统中其它构 件中的过程在一个或者多个事件中注册 当一个事件被触发,系统自动调用这个事件中注册的所有过程,这样,一 个事件的触发就导致了另一个模块中过程的调用
4.2. 经典软件体系结构风格 ◇ 管道和过滤器风格的优点
允许设计师将整个系统的输入/输出行为看成是多个过滤器的行为的 简单合成。
使得构件具有良好的隐蔽性和高内聚、低耦合的特点。
将系统抽象成一个“黑箱”,其输入是系统中第一个过滤器的输入管道,输出是系 统中最后一个过滤器的输出管道,而其内部各功能模块的具体实现对用户完全透 明。
抽象数 据类型
过程调用
4.2. 经典软件体系结构风格
◇应用场合
面向对象的体系结构风格适用于数据和功能分离的系统中,同样也适合于问题域模型 比较明显,或需要人机交互界面的系统。大多数应用事件驱动风格的系统也常常应用 了面向对象风格。
Log in Form
User Label
User Text
Pass Label
◇ 面向对象系统的优点
提高软件生产力
利用封装、继承、聚合,提高生产力
对象的内部实现容易修改
因为对象对其它对象隐藏了它的数据表示,所以可以改变一个对象 的数据表示,而不影响其它的对象;
4.2. 经典软件体系结构wenku.baidu.com格
◇ 面向对象系统的缺点
◎ 为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。只 要一个对象的标识改变了,就必须修改所有其他明确调用它的对象; ◎ 必须修改所有显式调用它的其它对象,并消除由此带来的一些副作用。
4.2. 经典软件体系结构风格
◇ 管道和过滤器的缺点
容易导致批处理风格的系统设计 设计者也许不得不花费精力协调两个相对独立但又存在某种关系的数据流之间的关
系,例如多过滤器并发执行时数据流之间的同步问题等。
不适合交互式的应用 管道-过滤器模型适于数据流的处理和变换,不适合为与用户交互频繁的系统建模。
4.2. 经典软件体系结构风格
◇ 基于事件的隐式调用的优点
构件之间松耦合
事件发布者不必知道哪些构件会被事件影响,事件的接收者也可以不关心事件是 由谁发出的
(2)数据抽象和面向对象系统
对象
这种风格建立在数据抽象和面向对象的基 础上,数据的表示方法和它们的相应操作封 装在一个抽象数据类型或对象中。
对象
这种风格的构件是对象,或者说是抽象数
据类型的实例。对象是一种被称作管理者的
构件,因为它负责保持资源的完整性。对象
是通过函数和过程的调用来交互的。
对象
对象
对象
噪声源
信息源
发送设备
接收设备
信道
数字通信系统粗略模型
受信者
4.2. 经典软件体系结构风格
◇管道-过滤器风格实例——数字通信系统 • 图中各单元作用:
• 信息源把各种可能信息转换成原始电信号; • 发送设备对原始电信号完成某种变化,便于原始信号在信道中传输,然后再送
入信道; • 信道是指信号传输的通道,它既可以看成是管道(因为它的目的并不是为了实
支持软件重用。
只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可以连接起来。每 个过滤器都有自己独立的输入输出接口,如果过滤器间传输的数据遵守其规约, 只要用管道将它们连接就可以正常工作。
4.2. 经典软件体系结构风格
◇ 管道和过滤器风格的优点
允许设计师将整个系统的输入/输出行为看成是多个过滤器的行为,系 统易于维护和增强
现某种功能,仅仅是为了信号的传输),也可以从某种意义上看做是过滤器 • 接收设备从接收信号中恢复出相应的原始信号; • 受信者(也称为信息宿或接收终端)是将复原的原始信号转换成相应的消息。 • 噪声源是信道中的噪声以及分散在通信系统其它各处的噪声的集中体现,它使
原信号受到了干扰,产生畸变。
4.2. 经典软件体系结构风格
旧的过滤器可以被替代,新的过滤器可以添加到已有的系统上;系统的可维护性和 可升级性得到了保证。
支持并发
各过滤器可以并发运行,大大提高系统的整体效率,加快处理速度。
方便系统分析
利用管道-过滤器风格的视图,可以很容易的得到系统的资源使用和请求的状态图。 然后,根据操作系统原理等相关理论中的死锁检测方法就可以分析出系统目前所处 的状态,是否存在死锁可能及如何消除死锁等问题。
4.1. 软件体系结构风格的概念
模式
• 当一个行业专家解决一个特定问题时,很少使用完全不同于已有方案的全新 的解决方法 • 一般回顾所解决的类似问题,然后用类似的方法解新的问题
• 如:建筑学、经济学、软件工程
• 从特定的问题解决方案中提取出共同点即为模式 • 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解 决方案的核心
DOS 中的管道命令 DOS允许在命令中出现用竖线字符“|”分开的 多个命令,将符号“|”之前的命令的输出,作 为“|”之后命令的输入,这就是“管道功能”, 竖线字符“|”是管道操作符。 例如,命令dir | more使得当前目录列表在屏幕 上逐屏显示。dir的输出是整个目录列表,它不 出现在屏幕上而是由于符号“|”的规定,成为 下一个命令more的输入,more命令则将其输 入,more命令则将其输入一屏一屏地显示,成 为命令行的输出。
软件模式
• 描述公共软件问题的成功的解决方案
• 反映了解决方案的公共抽象结构,在特定的上下文中,能够在分析、设计 等应用构建过程中多次使用
4.1. 软件体系结构风格的概念
体系结构模式/风格
• 软件体系结构的特点之一就是抽象出了很多常见的系统构建模式,这些模式 (或者说结构风格)是系统设计人员多年工作经验的总结。
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将 各个模块和子系统有效地组织成一个完整的系统。一种软件体系结构风格是对某 个具体环境下问题的结构性解决方法。
4.1. 软件体系结构风格的概念
◇ 讨论体系结构风格时要回答的问题
◎ 构件和连接件的类型是什么? ◎ 可容许的结构模式是什么? ◎ 基本的计算模型是什么? ◎ 风格的基本不变性是什么? ◎ 其使用的常见例子是什么? ◎ 使用此风格的优缺点是什么? ◎ 其常见的特例是什么?
相关文档
最新文档