软件体系结构风格PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
整的系统。 2.有关风格的使用带来了设计者的交流形式。关于设
计元素的词汇促进了设计者理解和交流。 3.使用风格能够使代码的重用性得到提高。当用不同
的系统时,基本的架构代码风格不需要修改,它能 够用于不同的系统中。
.
3
对于高质量的软件产品而言,首先要为其选择合 适的体系结构风格,这样就能够更好地重用已有 的设计方案和实现方案
.
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();
◎难以进行错误处理,管道/过滤器结构的固有特性,决定了 很难制定错误处理的一般性策略
.
9
实例: 传统的编译器是管道/过滤器体系结构风格的一个实例
源 程
词法分析
序
语法分析
语义分析
目 标 中间代码生成 中间代码优化 目标代码生成 程 序
.
10
面向对象风格
这种风格建立在数据抽象和面向对象的基础上, 数据的表示方法和它们的相应操作封装在一个抽象 数据类型或对象中。
理产生输出。 2.构件之间相对独立,相互之间无交互状态,非邻近
过滤器不共享任何信息。 3.整个体系结构的最终输出与格构件执行的顺序无关。 词汇: 过滤器:构件 管道:连接
.
6
过滤器
管道
.
7
优点
◎使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; ◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的 简单合成; ◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两 个过滤器都可被连接起来; ◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来; 旧的可以被改进的过滤器替换掉; ◎ 允许对一些如吞吐量、死锁等属性的分析; ◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其 它任务并行执行。
特点: 1.构件是模块,模块可以是过程也可以是事件的集
合。 2.连接件:往往是以过程之间的隐式调用(Implicit
Invocation)来实现的
.
15
例:观察者模式
public interface Subject { public void attach ቤተ መጻሕፍቲ ባይዱObserver observer);
.
13
缺点:
◎如果一个对象要调用另一个对象,则必须知道它的标识和 名称
◎会产生连锁反应,如果一个对象的标识发生改变,那么必 须修改所有显式调用它的其它对象,并消除由此引发的副作 用
.
14
事件驱动风格
构件不直接调用一个过程,而是触发或广播一个 或多个事件。系统中的其它构件中的过程在一个 或多个事件中注册,当一个事件被触发,系统自 动调用在这个事件中注册的所有过程,这样,一 个事件的触发就导致了另一模块中的过程的调用。
软件体系结构风格
.
1
软件框架设计的核心问题是:能否复用已经成型的 体系结构方案
不同系统的设计方案存在着许多共性问题,把这些 共性部分抽取出来,就形成了具有代表性的和可广 泛接受的体系结构风格
.
2
体系结构风格
什么是软件体系结构风格? 软件体系结构风格是描述某一特定应用领域中系统组
织方式的惯用模式。 软件体系结构风格的作用是什么? 1.指导如何将各个模块和子系统有效地组织成一个完
体系结构风格最关键的四要素
◎ 提供一个词汇表
◎ 定义一套配置规则
◎ 定义一套语义解释原则
◎ 定义对基于这种风格的系统所进行的分析
.
4
体系结构的风格有哪些? 管道-过滤器风格 面向对象风格 事件驱动风格 分层风格 数据共享风格 解释器风格 反馈控制环风格
.
5
管道-过滤器风格
特点: 1.每个构件都有输入输出,构件完成对输入数据的处
.
8
缺点 ◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器
可增量式地处理数据,但它们是独立的,所以设计者必须 将每个过滤器看成一个完整的从输入到输出的转换。
◎ 不适合处理交互的应用。当需要增量地显示改变时,这 个问题尤为严重。
◎ 因为在数据传输上没有通用的标准,每个过滤器都增加 了解析和合成数据的工作,这样就导致了系统性能下降, 并增加了编写过滤器的复杂性。
public void detach (Observer observer);
void notifyObservers(); }
.
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(); }
特点: 1.对象是构件。 2.在对象和对象之间,通过函数调用和过程调用来进
行交互。
.
11
对象
对象
对象
抽象数
据类型
对象 对象
过程调用
.
12
优点
◎一个对象对外界隐藏了自己的详细信息,改变一个 对象的表示,不会影响系统的其它部分
◎继承和封装方法为对象复用提供了技术支持。
◎对象将数据和操作封装在一起,提高了系统内聚性, 减小了模块之间的耦合程度,使系统更容易分解为既 相互作用又相互独立的对象集合
计元素的词汇促进了设计者理解和交流。 3.使用风格能够使代码的重用性得到提高。当用不同
的系统时,基本的架构代码风格不需要修改,它能 够用于不同的系统中。
.
3
对于高质量的软件产品而言,首先要为其选择合 适的体系结构风格,这样就能够更好地重用已有 的设计方案和实现方案
.
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();
◎难以进行错误处理,管道/过滤器结构的固有特性,决定了 很难制定错误处理的一般性策略
.
9
实例: 传统的编译器是管道/过滤器体系结构风格的一个实例
源 程
词法分析
序
语法分析
语义分析
目 标 中间代码生成 中间代码优化 目标代码生成 程 序
.
10
面向对象风格
这种风格建立在数据抽象和面向对象的基础上, 数据的表示方法和它们的相应操作封装在一个抽象 数据类型或对象中。
理产生输出。 2.构件之间相对独立,相互之间无交互状态,非邻近
过滤器不共享任何信息。 3.整个体系结构的最终输出与格构件执行的顺序无关。 词汇: 过滤器:构件 管道:连接
.
6
过滤器
管道
.
7
优点
◎使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; ◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的 简单合成; ◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两 个过滤器都可被连接起来; ◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来; 旧的可以被改进的过滤器替换掉; ◎ 允许对一些如吞吐量、死锁等属性的分析; ◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其 它任务并行执行。
特点: 1.构件是模块,模块可以是过程也可以是事件的集
合。 2.连接件:往往是以过程之间的隐式调用(Implicit
Invocation)来实现的
.
15
例:观察者模式
public interface Subject { public void attach ቤተ መጻሕፍቲ ባይዱObserver observer);
.
13
缺点:
◎如果一个对象要调用另一个对象,则必须知道它的标识和 名称
◎会产生连锁反应,如果一个对象的标识发生改变,那么必 须修改所有显式调用它的其它对象,并消除由此引发的副作 用
.
14
事件驱动风格
构件不直接调用一个过程,而是触发或广播一个 或多个事件。系统中的其它构件中的过程在一个 或多个事件中注册,当一个事件被触发,系统自 动调用在这个事件中注册的所有过程,这样,一 个事件的触发就导致了另一模块中的过程的调用。
软件体系结构风格
.
1
软件框架设计的核心问题是:能否复用已经成型的 体系结构方案
不同系统的设计方案存在着许多共性问题,把这些 共性部分抽取出来,就形成了具有代表性的和可广 泛接受的体系结构风格
.
2
体系结构风格
什么是软件体系结构风格? 软件体系结构风格是描述某一特定应用领域中系统组
织方式的惯用模式。 软件体系结构风格的作用是什么? 1.指导如何将各个模块和子系统有效地组织成一个完
体系结构风格最关键的四要素
◎ 提供一个词汇表
◎ 定义一套配置规则
◎ 定义一套语义解释原则
◎ 定义对基于这种风格的系统所进行的分析
.
4
体系结构的风格有哪些? 管道-过滤器风格 面向对象风格 事件驱动风格 分层风格 数据共享风格 解释器风格 反馈控制环风格
.
5
管道-过滤器风格
特点: 1.每个构件都有输入输出,构件完成对输入数据的处
.
8
缺点 ◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器
可增量式地处理数据,但它们是独立的,所以设计者必须 将每个过滤器看成一个完整的从输入到输出的转换。
◎ 不适合处理交互的应用。当需要增量地显示改变时,这 个问题尤为严重。
◎ 因为在数据传输上没有通用的标准,每个过滤器都增加 了解析和合成数据的工作,这样就导致了系统性能下降, 并增加了编写过滤器的复杂性。
public void detach (Observer observer);
void notifyObservers(); }
.
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(); }
特点: 1.对象是构件。 2.在对象和对象之间,通过函数调用和过程调用来进
行交互。
.
11
对象
对象
对象
抽象数
据类型
对象 对象
过程调用
.
12
优点
◎一个对象对外界隐藏了自己的详细信息,改变一个 对象的表示,不会影响系统的其它部分
◎继承和封装方法为对象复用提供了技术支持。
◎对象将数据和操作封装在一起,提高了系统内聚性, 减小了模块之间的耦合程度,使系统更容易分解为既 相互作用又相互独立的对象集合