第9章 软件体系结构与设计模式.ppt
《第9章 软件体系结构与设计模式.ppt》由会员分享,可在线阅读,更多相关《第9章 软件体系结构与设计模式.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第9章 软件体系结构与设计模式软件体系结构的基本概念软件体系结构的基本概念典型的软件体系结构风格典型的软件体系结构风格特定领域的软件体系结构特定领域的软件体系结构分布式系统结构分布式系统结构体系结构框架体系结构框架设计模式设计模式9.1 软件体系结构的基本概念什么是体系结构什么是体系结构目前还没有一个公认的关于软件体系结构的定义,许多专家目前还没有一个公认的关于软件体系结构的定义,许多专家学者从不同角度对软件体系结构进行了描述。学者从不同角度对软件体系结构进行了描述。Bass、Clements和和Kazman给出了如下定义:给出了如下定义:“一个程序或计算机一个程序或计算机系统的软件体系结构是
2、指系统的软件体系结构是指系统的一个或者多个结构。结构中系统的一个或者多个结构。结构中包括软件的构件、构件的外部可见属性以及它们之间的相互包括软件的构件、构件的外部可见属性以及它们之间的相互关系。外部可见属性则是指软件构件提供的服务、性能、使关系。外部可见属性则是指软件构件提供的服务、性能、使用特性、错误处理、共享资源使用等用特性、错误处理、共享资源使用等。”这一定义强调在任一体系结构表述中这一定义强调在任一体系结构表述中“软件构件软件构件”的角色。的角色。Dewayne Perry和和A1exander Wo1f曾这样定义:曾这样定义:“软软件件体系结构是具有一定形式的结构化元素,即构件的集合
3、,包体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。不同部分组合连接起来。”这一定义注重区分处理构件、数据构件和连接构件。这一定义注重区分处理构件、数据构件和连接构件。虽然软件体系结构的定义在变化,但其意图是清晰的。虽然软件体系结构的定义在变化,但其意图是清晰的。体系结构设计是一系列体系结构设计是一系列决策和基本原理的集合决策和基本原理的集合,这些决策的,这些决策
4、的目标在于开发高效的软件体系结构。在体系结构设计中所强目标在于开发高效的软件体系结构。在体系结构设计中所强调的基本原理是系统的可理解性、可维护性和可扩展性。调的基本原理是系统的可理解性、可维护性和可扩展性。9.1 软件体系结构的基本概念1模式模式 软件设计模式是从软件设计过程中总结出来的,是针对软件设计模式是从软件设计过程中总结出来的,是针对特定问题的解决方案。建筑师特定问题的解决方案。建筑师C.Alexander对模式给出的对模式给出的经典定义是:经典定义是:每个模式都描述了一个在我们的环境中不断每个模式都描述了一个在我们的环境中不断出现的问题及该问题解决方案的核心出现的问题及该问题解决方案
5、的核心。在软件系统中,可。在软件系统中,可以将模式划分为以下以将模式划分为以下3类。类。(1)体系结构模式体系结构模式(architectural pattern):表达了):表达了软软件系统的基本结构组织形式或者结构方案,包含了一组预件系统的基本结构组织形式或者结构方案,包含了一组预定义的子系统,规定了这些子系统的责任,同时还提供了定义的子系统,规定了这些子系统的责任,同时还提供了用于组织和管理这些子系统的规则和向导。典型的体系结用于组织和管理这些子系统的规则和向导。典型的体系结构模式如构模式如OSI参考模型参考模型。9.1 软件体系结构的基本概念体系结构模式、风格和框架的概念体系结构模式、
6、风格和框架的概念(2)设计模式设计模式(design pattern):为软件系统的子系):为软件系统的子系统、构件或者构件之间的关系提供一个精炼之后的解决方统、构件或者构件之间的关系提供一个精炼之后的解决方案,描述了在特定环境下,用于解决通用软件设计问题的案,描述了在特定环境下,用于解决通用软件设计问题的构件以及这些构件相互通信时的各种结构。有代表性的设构件以及这些构件相互通信时的各种结构。有代表性的设计模式是计模式是Erich Gamma及其同事提出的及其同事提出的23种设计模式种设计模式。(3)惯用法惯用法(idiom):是与编程语言相关的低级模式,):是与编程语言相关的低级模式,描述如
7、何实现构件的某些功能,或者利用编程语言的特性描述如何实现构件的某些功能,或者利用编程语言的特性来实现构件内部要素之间的通信功能。来实现构件内部要素之间的通信功能。9.1 软件体系结构的基本概念2风格风格 风格是带有一种倾向性的模式。同一个问题可以有不同风格是带有一种倾向性的模式。同一个问题可以有不同的解决问题的方案或模式,但我们根据经验,通常会强烈的解决问题的方案或模式,但我们根据经验,通常会强烈倾向于采用特定的模式,这就是风格。倾向于采用特定的模式,这就是风格。每种风格描述每种风格描述一种系统范畴一种系统范畴,该范畴包括:,该范畴包括:(1)一组构件一组构件(如数据库、计算模块)完成系统需要
8、的某(如数据库、计算模块)完成系统需要的某 种功能;种功能;(2)一组连接件一组连接件,它们能使构件间实现,它们能使构件间实现“通信通信”、“合作合作”和和 “协调协调”;(3)约束约束,定义构件如何集成为一个系统;,定义构件如何集成为一个系统;(4)语义模型语义模型,它能使设计者通过分析系统的构成成分的,它能使设计者通过分析系统的构成成分的 性质来理解系统的整体性质。性质来理解系统的整体性质。9.1 软件体系结构的基本概念 体系结构风格定义了一个系统家族,即体系结构风格定义了一个系统家族,即一个体系结构定一个体系结构定义一个词汇表和一组约束义一个词汇表和一组约束。词汇表中包含一些构件和连接。
9、词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格反映了领域中众多系统所共有组合起来的。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。地组织成一个完整的系统。对体系结构风格的研究和实践为大粒度的软件复用提供对体系结构风格的研究和实践为大粒度的软件复用提供了可能。了可能。9.1 软件体系结构的基本概念9.1 软件体系结构的基本概念3框架框架 随着应用的发展和完善,某些带有整体性的应用
10、模式被随着应用的发展和完善,某些带有整体性的应用模式被逐渐固定下来,形成特定的框架,包括逐渐固定下来,形成特定的框架,包括基本构成元素基本构成元素和和关关系系。框架框架是特定应用领域问题的体系结构模式,框架定义是特定应用领域问题的体系结构模式,框架定义了基本构成单元和关系后,开发者就可以集中精力解决业了基本构成单元和关系后,开发者就可以集中精力解决业务逻辑问题。务逻辑问题。在组织形式上,框架是一个待实例化的完整系统,定义在组织形式上,框架是一个待实例化的完整系统,定义了软件系统的元素和关系,创建了基本的模块,定义了涉了软件系统的元素和关系,创建了基本的模块,定义了涉及功能更改和扩充的插件位置。
11、典型的框架例子有及功能更改和扩充的插件位置。典型的框架例子有MFC框框架架和和Struts框架框架。体系结构的重要作用体现在以下三个方面体系结构的重要作用体现在以下三个方面:(1)体系结构的表示有助于风险承担者(项目干系)体系结构的表示有助于风险承担者(项目干系 人)进行交流。人)进行交流。(2)体系结构突出了早期设计决策。)体系结构突出了早期设计决策。(3)软件体系结构是可传递和可复用的模型。)软件体系结构是可传递和可复用的模型。9.1 软件体系结构的基本概念体系结构的重要作用体系结构的重要作用当输入数据经过一系列的计算和操作构件的变换形成输出当输入数据经过一系列的计算和操作构件的变换形成输
12、出数据时,可以应用这种体系结构。数据时,可以应用这种体系结构。管道管道/过滤器过滤器、批处理序批处理序列列都属于数据流风格。都属于数据流风格。管道管道/过滤器结构如下图所示。过滤器结构如下图所示。9.2 典型的体系结构风格数据流风格数据流风格 管道管道/过滤器结构过滤器结构 从从上上图图可可看看出出,管管道道/过过滤滤器器结结构构拥拥有有一一组组被被称称为为过过滤滤器器(filter)的的构构件件,这这些些构构件件通通过过管管道道(pipe)连连接接,管管道道将将数数据据从从一一个个构构件件传传送送到到下下一一个个构构件件。每每个个过过滤滤器器独独立立于于其其上上游游和和下下游游的的构构件件而
13、而工工作作,过过滤滤器器的的设设计计要要针针对对某某种形式的数据输入,并且产生某种特定形式的数据输出。种形式的数据输入,并且产生某种特定形式的数据输出。如如果果数数据据流流退退化化成成为为单单线线的的变变换换,则则称称为为批批处处理理序序列列(batch sequential)。这这种种结结构构接接收收一一批批数数据据,然然后后应应用一系列连续的构件(过滤器)变换它。用一系列连续的构件(过滤器)变换它。9.2 典型的体系结构风格管道管道/过滤器风格具有以下过滤器风格具有以下优点优点:(1 1)使得软构件具有良好的隐蔽性和高内聚、低耦合的特)使得软构件具有良好的隐蔽性和高内聚、低耦合的特 点。点
14、。(2 2)允许设计者将整个系统的输入)允许设计者将整个系统的输入/输出行为看成是多个过输出行为看成是多个过 滤器的行为的简单合成。滤器的行为的简单合成。(3 3)支持软件复用。只要提供适合在两个过滤器之间传送)支持软件复用。只要提供适合在两个过滤器之间传送 的数据,任何两个过滤器都可被连接起来。的数据,任何两个过滤器都可被连接起来。(4 4)系统维护和增强系统性能简单。新的过滤器可以添加)系统维护和增强系统性能简单。新的过滤器可以添加 到现有系统中来;旧的可以被改进的过滤器替换掉。到现有系统中来;旧的可以被改进的过滤器替换掉。(5 5)允许对一些如吞吐量、死锁等属性的分析。)允许对一些如吞吐
15、量、死锁等属性的分析。(6 6)支持并行执行。每个过滤器是作为一个单独的任务完)支持并行执行。每个过滤器是作为一个单独的任务完 成,因此可与其他任务并行执行。成,因此可与其他任务并行执行。9.2 典型的体系结构风格管道管道/过滤器风格过滤器风格主要主要缺点缺点如下:如下:(1)通常导致进程成为批处理的结构。这是因为虽然过滤)通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。将每个过滤器看成一个完整的从输入到输出的转换。(2)不适合处理交互的应用。当需
16、要增量地显示改变时,)不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重。这个问题尤为严重。(3)因为在数据传输上没有通用的标准,每个过滤器都增)因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。并增加了编写过滤器的复杂性。9.2 典型的体系结构风格在此类体系结构中,存在以下在此类体系结构中,存在以下3种子风格。种子风格。1主程序主程序/子程序体系结构子程序体系结构 这种传统的程序结构将功能分解为一个控制层次,其这种传统的程序结构将功能分解为一个控制层次,
17、其中中“主主”程序调用一组程序构件,这些程序构件又去调用程序调用一组程序构件,这些程序构件又去调用别别的程序构件,如下图所示。这种结构总体上为树状结的程序构件,如下图所示。这种结构总体上为树状结构,可以在底层存在公共模块。构,可以在底层存在公共模块。9.2 典型的体系结构风格调用调用返回风格返回风格 主程序主程序/子程序体系结构的子程序体系结构的优点优点如下如下:(1)可以使用自顶向下,逐步分解的方法得到体系结构)可以使用自顶向下,逐步分解的方法得到体系结构图,典型的拓扑结构为树状结构。基于定义图,典型的拓扑结构为树状结构。基于定义使用关系对子使用关系对子程序进行分解,使用过程调用作为程序之间
18、的交互机制。程序进行分解,使用过程调用作为程序之间的交互机制。(2)采用程序设计语言支持的单线程控制。)采用程序设计语言支持的单线程控制。其主要其主要缺点缺点如下如下:(1)子程序的正确性难于判断。需要运用层次推理来判断)子程序的正确性难于判断。需要运用层次推理来判断子程序的正确性,因为子程序的正确性取决于它调用的子程子程序的正确性,因为子程序的正确性取决于它调用的子程序的正确性。序的正确性。(2)子系统的结构不清晰。通常可以将多个子程序合成为)子系统的结构不清晰。通常可以将多个子程序合成为模块。模块。9.2 典型的体系结构风格 2面向对象风格面向对象风格 系统的构件封装了数据和必须应用到该数
19、据上的操系统的构件封装了数据和必须应用到该数据上的操作,构件间通过消息传递进行通信与合作。与主程序作,构件间通过消息传递进行通信与合作。与主程序/子程子程序的体系结构相比,面向对象风格中的对象交互会复杂一序的体系结构相比,面向对象风格中的对象交互会复杂一些。面向对象风格与网络应用的需求在分布性、自治性、些。面向对象风格与网络应用的需求在分布性、自治性、协作性、演化性等方面具有内在的一致性。协作性、演化性等方面具有内在的一致性。面向对象风格具有以下面向对象风格具有以下优点优点:(1 1)因为对象对其他对象隐藏它的表示,所以可以改变一)因为对象对其他对象隐藏它的表示,所以可以改变一 个对象的表示,
20、而不影响其他对象。个对象的表示,而不影响其他对象。(2 2)设计者可将一些数据存取操作的问题分解成一些交互)设计者可将一些数据存取操作的问题分解成一些交互 的代理程序的集合。的代理程序的集合。9.2 典型的体系结构风格其其缺点缺点如下如下:(1)为了使一个对象和另一个对象通过过程调用等进行)为了使一个对象和另一个对象通过过程调用等进行 交互,必须知道对象的标识。只要一个对象的标识交互,必须知道对象的标识。只要一个对象的标识 改变了,就必须修改所有其他明确调用它的对象。改变了,就必须修改所有其他明确调用它的对象。(2)必须修改所有显式调用它的其他对象,并消除由此)必须修改所有显式调用它的其他对象
21、,并消除由此 带来的一些副作用。例如,如果带来的一些副作用。例如,如果A使用了对象使用了对象B,C 也使用了对象也使用了对象B,那么,那么,C对对B的使用所造成的对的使用所造成的对A 的影响可能是料想不到的。的影响可能是料想不到的。9.2 典型的体系结构风格3层次结构层次结构 层次结构的基本结构如下图所示。在这种体系结构中,整层次结构的基本结构如下图所示。在这种体系结构中,整个系统被组织成一个分层结构,每一层为上层提供服务,并个系统被组织成一个分层结构,每一层为上层提供服务,并作为下一层的客户。作为下一层的客户。9.2 典型的体系结构风格 这种风格支持基于可增加抽象层的设计。允许将复杂问这种风
22、格支持基于可增加抽象层的设计。允许将复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。的方法实现,同样为软件复用提供了强大的支持。层次结构具有以下层次结构具有以下优点优点:(1)支持基于抽象程度递增的系统设计,使设计者可以把)支持基于抽象程度递增的系统设计,使设计者可以把 一个复杂系统按递增的步骤进行分解。一个复杂系统按递增的步骤进行分解。(2)支持功能增强,因为每一层至多和相邻的上下层交
23、)支持功能增强,因为每一层至多和相邻的上下层交 互,因此,功能的改变最多影响相邻的内外层。互,因此,功能的改变最多影响相邻的内外层。9.2 典型的体系结构风格(3)支持复用。只要提供的服务接口定义不变,同一层的)支持复用。只要提供的服务接口定义不变,同一层的 不同实现可以交换使用。这样,就可以定义一组标准不同实现可以交换使用。这样,就可以定义一组标准 的接口,从而允许各种不同的实现方法。的接口,从而允许各种不同的实现方法。其其缺点缺点如下如下:(1)并不是每个系统都可以很容易地划分为分层的模式,)并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系甚至即
24、使一个系统的逻辑结构是层次化的,出于对系 统性能的考虑,系统设计师不得不把一些低级或高级统性能的考虑,系统设计师不得不把一些低级或高级 的功能综合起来。的功能综合起来。(2)很难找到一个合适的、正确的层次抽象方法。)很难找到一个合适的、正确的层次抽象方法。9.2 典型的体系结构风格数据库系统数据库系统、超文本系统超文本系统和和黑板系统黑板系统都属于仓库风都属于仓库风格。在这种风格中,数据格。在这种风格中,数据仓库(如文件或数据库)仓库(如文件或数据库)位于这种体系结构的中心,位于这种体系结构的中心,其他构件会经常访问该数其他构件会经常访问该数据仓库,并对仓库中的数据仓库,并对仓库中的数据进行增
25、加、修改或删除据进行增加、修改或删除操作。右图为一个典型的操作。右图为一个典型的仓库风格的体系结构。仓库风格的体系结构。9.2 典型的体系结构风格仓库风格仓库风格 上图中上图中,可把中心存储库变换成可把中心存储库变换成“黑板黑板”,黑板构件负责,黑板构件负责协协调信息在客户间的传递,当用户感兴趣的数据发生变化时,调信息在客户间的传递,当用户感兴趣的数据发生变化时,它将通知客户软件。黑板系统的组成如下图所示。黑板系统它将通知客户软件。黑板系统的组成如下图所示。黑板系统的传统应用是信号处理领域,如语音和模式识别。另一应用的传统应用是信号处理领域,如语音和模式识别。另一应用是松耦合代理数据共享存取。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 软件体系结构与设计模式 软件 体系结构 设计 模式
限制150内