软件体系结构风格ppt课件
合集下载
软件体系结构风格PPT课件

特点: 1.构件是模块,模块可以是过程也可以是事件的集
合。 2.连接件:往往是以过程之间的隐式调用(Implicit
Invocation)来实现的
.
15
例:观察者模式
public interface Subject { public void attach (Observer observer);
◎难以进行错误处理,管道/过滤器结构的固有特性,决定了 很难制定错误处理的一般性策略
.
9
实例: 传统的编译器是管道/过滤器体系结构风格的一个实例
源 程
词法分析
序
语法分析
语义分析
目 标 中间代码生成 中间代码优化 目标代码生成 程 序
.
10
面向对象风格
这种风格建立在数据抽象和面向对象的基础上, 数据的表示方法和它们的相应操作封装在一个抽象 数据类型或对象中。
体系结构风格最关键的四要素
◎ 提供一个词汇表
◎ 定义一套配置规则
◎ 定义一套语义解释原则
◎ 定义对基于这种风格的系统所进行的分析
.
4
体系结构的风格有哪些? 管道-过滤器风格 面向对象风格 事件驱动风格 分层风格 数据共享风格 解释器风格 反馈控制环风格
.
5
管道-过滤器风格
特点: 1.每个构件都有输入输出,构件完成对输入数据的处
软件体系结构风格
.
1
软件框架设计的核心问题是:能否复用已经成型的 体系结构方案
不同系统的设计方案存在着许多共性问题,把这些 共性部分抽取出来,就形成了具有代表性的和可广 泛接受的体系结构风格
.
2
体系结构风格
什么是软件体系结构风格? 软件体系结构风格是描述某一特定应用领域中系统组
合。 2.连接件:往往是以过程之间的隐式调用(Implicit
Invocation)来实现的
.
15
例:观察者模式
public interface Subject { public void attach (Observer observer);
◎难以进行错误处理,管道/过滤器结构的固有特性,决定了 很难制定错误处理的一般性策略
.
9
实例: 传统的编译器是管道/过滤器体系结构风格的一个实例
源 程
词法分析
序
语法分析
语义分析
目 标 中间代码生成 中间代码优化 目标代码生成 程 序
.
10
面向对象风格
这种风格建立在数据抽象和面向对象的基础上, 数据的表示方法和它们的相应操作封装在一个抽象 数据类型或对象中。
体系结构风格最关键的四要素
◎ 提供一个词汇表
◎ 定义一套配置规则
◎ 定义一套语义解释原则
◎ 定义对基于这种风格的系统所进行的分析
.
4
体系结构的风格有哪些? 管道-过滤器风格 面向对象风格 事件驱动风格 分层风格 数据共享风格 解释器风格 反馈控制环风格
.
5
管道-过滤器风格
特点: 1.每个构件都有输入输出,构件完成对输入数据的处
软件体系结构风格
.
1
软件框架设计的核心问题是:能否复用已经成型的 体系结构方案
不同系统的设计方案存在着许多共性问题,把这些 共性部分抽取出来,就形成了具有代表性的和可广 泛接受的体系结构风格
.
2
体系结构风格
什么是软件体系结构风格? 软件体系结构风格是描述某一特定应用领域中系统组
软件体系结构课件第5章统一建模语言

2:GetPrefSet()
10:PrefSet(date_mg)
1:GetPrefSet()
:MeetingInitiator
第5章 统一建模语言 直接使用UML建模 – 会议安排系统的类图
Person
StronglyConflicts With
Conflicts With
Important Attendee
0..* 0..*
0..* Profers
Attendee
1..* 1..* 0..* 0..*
11 1 1
1
Meeting Initiator
Find.exe
Query .dll
部署图 定义系 统中软 硬件的 物理体
系结构
第5章 统一建模语言 部署图
客户端:个人PC QueryClient.exe
服务器
《TCP/IP》 查询
QueryServer.exe 部署图
定义系
统中软
Find.exe
硬件的
物理体
Query.dll系结构
第5章 统一建模语言
第5章 统一建模语言
直接使用UML建模 – UML中的通用表示
➢ 字符串:表示有关模型的信息; ➢ 名字:表示模型元素; ➢ 标号:不同于编程语言中的标号,是用于表示或说明图形符号的字
符串; ➢ 特殊字符串:表示某一模型元素的特性; ➢ 类型表达式:声明属性、变量及参数,含义同编程语言中的类型表
0
10
20
30s 时间刻度
第5章 统一建模语言 状态图
提交订单 已审核 印前处理
客户付钱
已付款
已处理
进行冲印
冲印中 冲印完成
描述满足 用例要求 所要进行 的活动以 及活动间 的完约成束关 系,有利 于识别并 行活动
体系结构 第2章 软件体系结构风格 ppt课件

C/S体系结构有三个主要组成部分:数据库 服务器、客户应用程序和网络。
体系结构 第2章 软件体系 结构风格
体系结构 第2章 软件体系 结构风格
服务器
✓ 数据库安全性的要求;
✓ 数据库访问并发性的控制;
✓ 数据库前端的客户应用程序的全局数据完整性规则;
✓ 数据库的备份和恢复。
体系结构 第2章 软件体系 结构风格
体系结构 第 2章 软件体 系结构风格 软件体系结构风格
刘 伟 (Sunny)
体系结构 第2章 软 件体系结构风格
定义 管道和过滤器 数据抽象和面向对象组织 基于事件的隐式调用 分层系统 仓库系统 过程控制环路 C/S风格 三层C/S风格 B/S风格
体系结构 第2章 软 件体系结构风格
实例:
✓ 编译器,功能程序,并行程序
体系结构 第2章 软件 体系结构风格
体系结构 第2章 软件体系 结构风格
数据的表示方法和它们的相应操作被封装在 一个抽象数据类型或对象中
这种风格的构件是对象或者说是抽象数据类 型的实例
对象通过函数和过程的调用来进行交互
体系结构 第2章 软件体系 结构风格
客户应用程序
✓ 提供用户与数据库交互的界面;
✓ 向数据库服务器提交用户请求并接收来自数据库服务器 的信息;
✓ 利用客户应用程序对存在于客户端的数据执行应用逻辑 要求
体系结构 第2章 软件体系 结构风格
体系结构 第2章 软件体系 结构风格
C/S体系结构具有强大的数据操作和事务处理能力, 模型 思想简单,易于人们理解和接受。
实例:数据库管理系统,用户界面
体系结构 第2章 软件 体系结构风格
输入
事件接收
事件处理
输出
体系结构 第2章 软件体系 结构风格
体系结构 第2章 软件体系 结构风格
服务器
✓ 数据库安全性的要求;
✓ 数据库访问并发性的控制;
✓ 数据库前端的客户应用程序的全局数据完整性规则;
✓ 数据库的备份和恢复。
体系结构 第2章 软件体系 结构风格
体系结构 第 2章 软件体 系结构风格 软件体系结构风格
刘 伟 (Sunny)
体系结构 第2章 软 件体系结构风格
定义 管道和过滤器 数据抽象和面向对象组织 基于事件的隐式调用 分层系统 仓库系统 过程控制环路 C/S风格 三层C/S风格 B/S风格
体系结构 第2章 软 件体系结构风格
实例:
✓ 编译器,功能程序,并行程序
体系结构 第2章 软件 体系结构风格
体系结构 第2章 软件体系 结构风格
数据的表示方法和它们的相应操作被封装在 一个抽象数据类型或对象中
这种风格的构件是对象或者说是抽象数据类 型的实例
对象通过函数和过程的调用来进行交互
体系结构 第2章 软件体系 结构风格
客户应用程序
✓ 提供用户与数据库交互的界面;
✓ 向数据库服务器提交用户请求并接收来自数据库服务器 的信息;
✓ 利用客户应用程序对存在于客户端的数据执行应用逻辑 要求
体系结构 第2章 软件体系 结构风格
体系结构 第2章 软件体系 结构风格
C/S体系结构具有强大的数据操作和事务处理能力, 模型 思想简单,易于人们理解和接受。
实例:数据库管理系统,用户界面
体系结构 第2章 软件 体系结构风格
输入
事件接收
事件处理
输出
《软件体系结构实用教程》课件第1章

·装配的构件。装配的构件在安装前已经装配在操作系统、 数据库管理系统或信息系统不同层次上,使用胶水代码就可 以进行连接使用。目前一些软件商提供的大多数软件产品都 属于这一类。
·可修改的构件。可修改的构件可以进行版本替换。如果 对原构件修改错误、增加新功能,可以利用重新“包装”或 写接口来实现构件的替换。这种构件在应用系统开发中使用 的比较多。
13
第1章 软件重用与构件技术
图1-1 重用驱动的软件开发过程
14
第1章 软件重用与构件技术
应用者重用关心利用可重用构件来建立新系统,它包括 以下几个步骤:
(1) 寻找候选的可重用的构件,由它们来产生软件生命周 期每一阶段的交付。
(2) 对候选构件进行评价,选择那些适合于在本系统内重 用的构件。
10
第1章 软件重用与构件技术
1.1.3 重用驱动的软件过程 1.软件重用失败的原因 尽管软件产业从本质上是支持重用的,但到目前为止,
很少有成功实施重用的公司。主要原因有以下几点: (1) 缺乏对为什么要实施重用的了解。 (2) 认为重用没有创造性。 (3) 管理者没有对重用承担长期的责任和提供相应的支持。 (4) 没有支持重用的方法学。
(4) 根据构件重用时的形态,分为动态构件和静态构件。 动态构件是运行时可动态嵌入、链接的构件,如对象链接和 嵌入、动态链接库等;静态构件如源代码构件、系统分析构 件、设计构件和文档构件等。
23
第1章 软件重用与构件技术
(5) 根据构件的外部形态,将构成一个系统的构件分为以 下5类:
·独立而成熟的构件。独立而成熟的构件得到了实际运行 环境的多次检验,该类构件隐藏了所有接口,用户只需用规 定好的命令使用即可,例如数据库管理系统和操作系统等。
·可修改的构件。可修改的构件可以进行版本替换。如果 对原构件修改错误、增加新功能,可以利用重新“包装”或 写接口来实现构件的替换。这种构件在应用系统开发中使用 的比较多。
13
第1章 软件重用与构件技术
图1-1 重用驱动的软件开发过程
14
第1章 软件重用与构件技术
应用者重用关心利用可重用构件来建立新系统,它包括 以下几个步骤:
(1) 寻找候选的可重用的构件,由它们来产生软件生命周 期每一阶段的交付。
(2) 对候选构件进行评价,选择那些适合于在本系统内重 用的构件。
10
第1章 软件重用与构件技术
1.1.3 重用驱动的软件过程 1.软件重用失败的原因 尽管软件产业从本质上是支持重用的,但到目前为止,
很少有成功实施重用的公司。主要原因有以下几点: (1) 缺乏对为什么要实施重用的了解。 (2) 认为重用没有创造性。 (3) 管理者没有对重用承担长期的责任和提供相应的支持。 (4) 没有支持重用的方法学。
(4) 根据构件重用时的形态,分为动态构件和静态构件。 动态构件是运行时可动态嵌入、链接的构件,如对象链接和 嵌入、动态链接库等;静态构件如源代码构件、系统分析构 件、设计构件和文档构件等。
23
第1章 软件重用与构件技术
(5) 根据构件的外部形态,将构成一个系统的构件分为以 下5类:
·独立而成熟的构件。独立而成熟的构件得到了实际运行 环境的多次检验,该类构件隐藏了所有接口,用户只需用规 定好的命令使用即可,例如数据库管理系统和操作系统等。
第三章软件体系结构风格与模式

SAGroupSAGroupSAGro
Software ArchitecturuepSAGroup
软件体系结构的风格和模式
1
建筑模式
SAGroupSAGroupSAGro upSAGroup
❖ Christopher Alexander, The Timeless Way of
Building, p247, 1979
8
SAGroupSAGroupSAGro
管道-过滤器风格特u性pSAGroup
❖ 过滤器是独立运行的构件
▪ 非临近的过滤器之间不共享状态 ▪ 过滤器自身无状态
❖ 过滤器对其处理上下连接的过滤器“无知”
▪ 对相邻的过滤器不施加任何限制
❖ 结果的正确性不依赖于各个过滤器运行的先后次序
▪ 各过滤器在输入具备后完成自己的计算。完整的计算过程包含 在过滤器之间的拓扑结构中。
12
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 管道-过滤器风格支持功能模块的复用
▪ 任何两个过滤器,只要它们之间传送的数据遵守共同的规约, 就可以相连接。每个过滤器都有自己独立的输入输出接口,如 果过滤器间传输的数据遵守其规约,只要用管道将它们连接就 可以正常工作。
Splitter
MergeAndSort
MergeAndSort
Merge
Sort
11
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 设计者可以将整个系统的输入、输出特性简单的理解为 各个过滤器功能的合成。
▪ 设计人员将整个系统的输入输出行为理解为单个过滤器行为的 叠加与组合。这样可以将问题分解,化繁为简。将系统抽象成 一个“黑箱”,其输入是系统中第一个过滤器的输入管道,输 出是系统中最后一个过滤器的输出管道,而其内部各功能模块 的具体实现对用户完全透明。
Software ArchitecturuepSAGroup
软件体系结构的风格和模式
1
建筑模式
SAGroupSAGroupSAGro upSAGroup
❖ Christopher Alexander, The Timeless Way of
Building, p247, 1979
8
SAGroupSAGroupSAGro
管道-过滤器风格特u性pSAGroup
❖ 过滤器是独立运行的构件
▪ 非临近的过滤器之间不共享状态 ▪ 过滤器自身无状态
❖ 过滤器对其处理上下连接的过滤器“无知”
▪ 对相邻的过滤器不施加任何限制
❖ 结果的正确性不依赖于各个过滤器运行的先后次序
▪ 各过滤器在输入具备后完成自己的计算。完整的计算过程包含 在过滤器之间的拓扑结构中。
12
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 管道-过滤器风格支持功能模块的复用
▪ 任何两个过滤器,只要它们之间传送的数据遵守共同的规约, 就可以相连接。每个过滤器都有自己独立的输入输出接口,如 果过滤器间传输的数据遵守其规约,只要用管道将它们连接就 可以正常工作。
Splitter
MergeAndSort
MergeAndSort
Merge
Sort
11
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 设计者可以将整个系统的输入、输出特性简单的理解为 各个过滤器功能的合成。
▪ 设计人员将整个系统的输入输出行为理解为单个过滤器行为的 叠加与组合。这样可以将问题分解,化繁为简。将系统抽象成 一个“黑箱”,其输入是系统中第一个过滤器的输入管道,输 出是系统中最后一个过滤器的输出管道,而其内部各功能模块 的具体实现对用户完全透明。
概要设计-PPT精品.ppt

➢收敛(convergence):设计者从设计材料中选 择和组合合适元素,以满足设计目标。这是 一个不断删除的过程。
数据 字典
状态转换图
控制规格说明
过程 设计 接口设计
体系结构设计
数据设计
分析模型转变成软件设计示意图
4.1.2系统构成
体系结构的三个标准模型 : 1.容器模型:适合于数据是由一个子系统产生而
客户软件
客户软件
客户软件
数据存储
客户软件
客户软件
客户软件
Hale Waihona Puke 数据为中心的体系结构过滤器
过滤器
过滤器
过滤器
数据流体系结构
用户界面层 应用层 实用层 核心层
表示构件
层次式体系结构
体系结构设计的定量分析
• 目前在体系结构设计质量定量分析方面的研究 尚处于起步阶段。
• Asada提出了伪定量技术的简单模型帮助设计 者确定体系结构满足预定义的“好”标准的程 度.这些标准称为设计量纲(Design Dimension),包括软件的质量属性:可靠性、 安全性、可维护性、可测试性、可移植性、可 复用性等。
• 体系结构的设计过程 1)系统结构化:分解成子系统,划分子系统之间的通信. 2)控制建模:建立各部分之间的控制关系的一般模型. 3)模块分解:子系统进一步分解成模块.
常见软件体系结构风格
• 以数据为中心的体系结构; • 数据流体系结构; • 调用和返回体系结构; • 面向对象体系结构; • 层次式体系结构。
Asada提出的简单模型可分为: • 频谱分析(Spectrum analysis)模型 • 设计选择分析(Design selection analysis)模
型 • 贡献分析(Contribution analysis)模型
数据 字典
状态转换图
控制规格说明
过程 设计 接口设计
体系结构设计
数据设计
分析模型转变成软件设计示意图
4.1.2系统构成
体系结构的三个标准模型 : 1.容器模型:适合于数据是由一个子系统产生而
客户软件
客户软件
客户软件
数据存储
客户软件
客户软件
客户软件
Hale Waihona Puke 数据为中心的体系结构过滤器
过滤器
过滤器
过滤器
数据流体系结构
用户界面层 应用层 实用层 核心层
表示构件
层次式体系结构
体系结构设计的定量分析
• 目前在体系结构设计质量定量分析方面的研究 尚处于起步阶段。
• Asada提出了伪定量技术的简单模型帮助设计 者确定体系结构满足预定义的“好”标准的程 度.这些标准称为设计量纲(Design Dimension),包括软件的质量属性:可靠性、 安全性、可维护性、可测试性、可移植性、可 复用性等。
• 体系结构的设计过程 1)系统结构化:分解成子系统,划分子系统之间的通信. 2)控制建模:建立各部分之间的控制关系的一般模型. 3)模块分解:子系统进一步分解成模块.
常见软件体系结构风格
• 以数据为中心的体系结构; • 数据流体系结构; • 调用和返回体系结构; • 面向对象体系结构; • 层次式体系结构。
Asada提出的简单模型可分为: • 频谱分析(Spectrum analysis)模型 • 设计选择分析(Design selection analysis)模
型 • 贡献分析(Contribution analysis)模型
软件体系结构 PPT

•
1.1what is SA ?
• 这种全局结构的设计和规划问题包括 全局组织 结构;全局控制结构;通信和同步以及数据存 取协议;规定设计元素的功能;设计元素的组 合;物理分布;规模和性能;演化的维度;设 计方案的选择等。 • 1随着软件系统的规模和复杂性不断增加,系 统的全局结构的设计和规划变得比算法的选择 以及数据结构的设计更加重要。 • 2人们普遍认为,为系统设计一个合适的体系 结构是系统取得长远的成功的关键因素。 • 3非形式化的。
1.1what is SA ?
e.g. 每个Filter都有输入端和输出端,例如一个MPEG-1解码Filter它的输入是MPEG编码的 流数据,它的输出端是一解码过的流数据。DirectShow正是通过将不同的Filter连接在一起 完成特定的功能的,我们将这些Filter的连接叫做Filter Graph,如下图A给出是播放AVI的 Filter Graph:
1概述
• 它是一种简单的、清楚的、完善的方式 形成的 • 软件工程师需要一种更好的视角来理解 软件,并试图找到一种新的方法来构建 更复杂的大型软件系统 • SA (software architecture) • 一个简单程序到复杂系统软件的距离是 十年
1概述-需求开发的主要困难
1概述-软件危机的原因
• 软件规模越来越大 • 随着软件应用范围的增广,软件规模愈来愈大。 随着软件应用范围的增广,软件规模愈来愈大。大 型软件项目需要组织一定的人力共同完成, 型软件项目需要组织一定的人力共同完成,而多数管 理人员缺乏开发大型软件系统的经验, 理人员缺乏开发大型软件系统的经验,而多数软件开 发人员又缺乏管理方面的经验。 发人员又缺乏管理方面的经验。各类人员的信息交流 不及时、不准确、有时还会产生误解。 不及时、不准确、有时还会产生误解。 软件项目开发人员不能有效地、 软件项目开发人员不能有效地、独立自主地处理大 型软件的全部关系和各个分支, 型软件的全部关系和各个分支,因此容易产生疏漏和 错误。 错误。
软件体系结构描述语言 C2ppt课件

13
C2对于构件接口的描述
Component :: = Component component_name is Interface component_message_interface Parameters component_parameters Methods component_methods [behavior component_behavior] [context component_context] End component_name;
4
C2风格的中心原则
C2风格的中心原则是有限可视原则,或者说是下层 独立的原则: 在C2风格的体系结构中,某一构件只能感知层次高 于自己的构件所提供的服务,而不能感知到层次比 自己更低的构件的服务。 这种单向的传递性,有利于系统的维护和扩展。
5
C2风格的通信规则
C2中,所有构件间的通信必须通过消息来实现,这 也是构件之间的唯一通信途径。每个构件都有一个 顶端域、一个底端域。构件的顶端域定义了构件可 以对哪些通知做出响应,以及可以发出哪些请求; 构件的底端域定义了可以向下层发送哪些通知,以 及可以响应下层的哪些请求。
软件体系结构描述语言 C2
小组成员:
1
引言
软件体系结构是根植于软件工程发展起来的新兴学科,目前已经成为软件工 程研究和实践的一个重要领域。软件体系结构设计的一个核心问题是能否使 用重复的体系结构模式,即能否达到体系结构级的软件重用。也就是说,能 否在不同的软件系统中,使用同一体系结构。
C2体系结构风格作为一种经典的体系结构风格,它就具有平衡开发费用与近 产品的共同性的特性。按照C2体系结构风格的规则,我们能够把各种粒度的 构件集成到一个系统结构中。可以说,C2体系结构风格对软件结构和软件构 件交互定义了一个良好的设计规范,同时还具有广泛的试验和工具。因而, 它就为软件设计开发者提供了一个有界面密集的系统的软件体系结构风格。 在C2风格的体系结构中,连接件在构件之间转发消息,构件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
软件框架设计的核心问题是:能否复用已经成型的 体系结构方案
不同系统的设计方案存在着许多共性问题,把这些 共性部分抽取出来,就形成了具有代表性的和可广 泛接受的体系结构风格
2
什么是软件体系结构风格? 软件体系结构风格是描述某一特定应用领域中系统组 织方式的惯用模式。 软件体系结构风格的作用是什么? 1.指导如何将各个模块和子系统有效地组织成一个完 整的系统。 2.有关风格的使用带来了设计者的交流形式。关于设 计元素的词汇促进了设计者理解和交流。 3.使用风格能够使代码的重用性得到提高。当用不同 的系统时,基本的架构代码风格不需要修改,它能够 用于不同的系统中。
8
缺点 ◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器 可增量式地处理数据,但它们是独立的,所以设计者必须将 每个过滤器看成一个完整的从输入到输出的转换。 ◎ 不适合处理交互的应用。当需要增量地显示改变时,这 个问题尤为严重。 ◎ 因为在数据传输上没有通用的标准,每个过滤器都增加 了解析和合成数据的工作,这样就导致了系统性能下降,并 增加了编写过滤器的复杂性。 ◎难以进行错误处理,管道/过滤器结构的固有特性,决定 了很难制定错误处理的一般性策略
11
对象
对象
对象
对象 对象
过程调用
抽象数 据类型
12
优点 ◎一个对象对外界隐藏了自己的详细信息,改变一个 对象的表示,不会影响系统的其它部分 ◎继承和封装方法为对象复用提供了技术支持。 ◎对象将数据和操作封装在一起,提高了系统内聚性, 减小了模块之间的耦合程度,使系统更容易分解为既 相互作用又相互独立的对象集合
17
public interface Observer { void update(); }
public static void main(String args[]){ Subject s=new ConcreteSubject(); s.attach(new Observer(){ public void update(){ System.out.println("ok"); } }); s.notifyer();
13
缺点:
◎如果一个对象要调用另一个对象,则必须知道它的标识和 名称 ◎会产生连锁反应,如果一个对象的标识发生改变,那么必 须修改所有显式调用它的其它对象,并消除由此引发的副作 用
14
构件不直接调用一个过程,而是触发或广播一 个或多个事件。系统中的其它构件中的过程在一 个或多个事件中注册,当一个事件被触发,系统 自动调用在这个事件中注册的所有过程,这样, 一个事件的触发就导致了另一模块中的过程的调 用。
5
特点: 1.每个构件都有输入输出,构件完成对输入数据的处 理产生输出。 2.构件之间相对独立,相互之间无交互状态,非邻近 过滤器不共享任何信息。 3.整个体系结构的最终输出与格构件执行的顺序无关。 词汇: 过滤器:构件 管道:连接
6
过滤器
管道
7
优点
◎使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; ◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的 简单合成; ◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何 两个过滤器都可被连接起来; ◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中 来;旧的可以被改进的过滤器替换掉; ◎ 允许对一些如吞吐量、死锁等属性的分析; ◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与 其它任务并行执行。
16
public class ConcreteSubject implements Subject { public void attach(Observer observer) { observersVector.addElement(observer); } public void detach(Observer observer) { observersVector.removeElement(observer); } public void notifyObservers() { Enumeration enumeration = observers(); while (enumeration.hasMoreElements()) { ((Observer)enumeration.nextElement()).update(); } } public Enumeration observers() { return ((Vector) observersVector.clone()).elements(); } private Vector observersVector = new java.util.Vector(); }
3
对于高质量的软件产品而言,首先要为其选择合 适的体系结构风格,这样就能够更好地重用已有 的设计方案和实现方案
体系结构风格最关键的四要素
◎ 提供一个词汇表 ◎ 定义一套配置规则 ◎ 定义一套语义解释原则 ◎ 定义对基于这种风格的系统所进行的分析
4
体系结构的风格有哪些? 管道-过滤器风格 面向对象风格 事件驱动风格 分层风格 数据共享风格 解释器风格 反馈控制环风格
特点: 1.构件是模块,模块可以是过程也可以是事件的集 合。 2.连接件:往往是以过程之间的隐式调用(Implicit
Invocation)来实现的
15
例:观察者模式
public interface ct { public void attach (Observer observer); public void detach (Observer observer); void notifyObservers(); }
9
实例: 传统的编译器是管道/过滤器体系结构风格的一个实例
源 程
词法分析
序
语法分析
语义分析
目 标 中间代码生成 中间代码优化 目标代码生成 程 序
10
这种风格建立在数据抽象和面向对象的基础上, 数据的表示方法和它们的相应操作封装在一个抽象 数据类型或对象中。
特点: 1.对象是构件。 2.在对象和对象之间,通过函数调用和过程调用来进 行交互。
软件框架设计的核心问题是:能否复用已经成型的 体系结构方案
不同系统的设计方案存在着许多共性问题,把这些 共性部分抽取出来,就形成了具有代表性的和可广 泛接受的体系结构风格
2
什么是软件体系结构风格? 软件体系结构风格是描述某一特定应用领域中系统组 织方式的惯用模式。 软件体系结构风格的作用是什么? 1.指导如何将各个模块和子系统有效地组织成一个完 整的系统。 2.有关风格的使用带来了设计者的交流形式。关于设 计元素的词汇促进了设计者理解和交流。 3.使用风格能够使代码的重用性得到提高。当用不同 的系统时,基本的架构代码风格不需要修改,它能够 用于不同的系统中。
8
缺点 ◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器 可增量式地处理数据,但它们是独立的,所以设计者必须将 每个过滤器看成一个完整的从输入到输出的转换。 ◎ 不适合处理交互的应用。当需要增量地显示改变时,这 个问题尤为严重。 ◎ 因为在数据传输上没有通用的标准,每个过滤器都增加 了解析和合成数据的工作,这样就导致了系统性能下降,并 增加了编写过滤器的复杂性。 ◎难以进行错误处理,管道/过滤器结构的固有特性,决定 了很难制定错误处理的一般性策略
11
对象
对象
对象
对象 对象
过程调用
抽象数 据类型
12
优点 ◎一个对象对外界隐藏了自己的详细信息,改变一个 对象的表示,不会影响系统的其它部分 ◎继承和封装方法为对象复用提供了技术支持。 ◎对象将数据和操作封装在一起,提高了系统内聚性, 减小了模块之间的耦合程度,使系统更容易分解为既 相互作用又相互独立的对象集合
17
public interface Observer { void update(); }
public static void main(String args[]){ Subject s=new ConcreteSubject(); s.attach(new Observer(){ public void update(){ System.out.println("ok"); } }); s.notifyer();
13
缺点:
◎如果一个对象要调用另一个对象,则必须知道它的标识和 名称 ◎会产生连锁反应,如果一个对象的标识发生改变,那么必 须修改所有显式调用它的其它对象,并消除由此引发的副作 用
14
构件不直接调用一个过程,而是触发或广播一 个或多个事件。系统中的其它构件中的过程在一 个或多个事件中注册,当一个事件被触发,系统 自动调用在这个事件中注册的所有过程,这样, 一个事件的触发就导致了另一模块中的过程的调 用。
5
特点: 1.每个构件都有输入输出,构件完成对输入数据的处 理产生输出。 2.构件之间相对独立,相互之间无交互状态,非邻近 过滤器不共享任何信息。 3.整个体系结构的最终输出与格构件执行的顺序无关。 词汇: 过滤器:构件 管道:连接
6
过滤器
管道
7
优点
◎使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; ◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的 简单合成; ◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何 两个过滤器都可被连接起来; ◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中 来;旧的可以被改进的过滤器替换掉; ◎ 允许对一些如吞吐量、死锁等属性的分析; ◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与 其它任务并行执行。
16
public class ConcreteSubject implements Subject { public void attach(Observer observer) { observersVector.addElement(observer); } public void detach(Observer observer) { observersVector.removeElement(observer); } public void notifyObservers() { Enumeration enumeration = observers(); while (enumeration.hasMoreElements()) { ((Observer)enumeration.nextElement()).update(); } } public Enumeration observers() { return ((Vector) observersVector.clone()).elements(); } private Vector observersVector = new java.util.Vector(); }
3
对于高质量的软件产品而言,首先要为其选择合 适的体系结构风格,这样就能够更好地重用已有 的设计方案和实现方案
体系结构风格最关键的四要素
◎ 提供一个词汇表 ◎ 定义一套配置规则 ◎ 定义一套语义解释原则 ◎ 定义对基于这种风格的系统所进行的分析
4
体系结构的风格有哪些? 管道-过滤器风格 面向对象风格 事件驱动风格 分层风格 数据共享风格 解释器风格 反馈控制环风格
特点: 1.构件是模块,模块可以是过程也可以是事件的集 合。 2.连接件:往往是以过程之间的隐式调用(Implicit
Invocation)来实现的
15
例:观察者模式
public interface ct { public void attach (Observer observer); public void detach (Observer observer); void notifyObservers(); }
9
实例: 传统的编译器是管道/过滤器体系结构风格的一个实例
源 程
词法分析
序
语法分析
语义分析
目 标 中间代码生成 中间代码优化 目标代码生成 程 序
10
这种风格建立在数据抽象和面向对象的基础上, 数据的表示方法和它们的相应操作封装在一个抽象 数据类型或对象中。
特点: 1.对象是构件。 2.在对象和对象之间,通过函数调用和过程调用来进 行交互。