_软件体系结构.ppt
《_软件体系结构.ppt》由会员分享,可在线阅读,更多相关《_软件体系结构.ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件体系结构软件体系结构的基本概念软件体系结构的基本概念典型的软件体系结构风格典型的软件体系结构风格基基于网络的软件体系结构于网络的软件体系结构模式分类低层模式:惯用法低层模式:惯用法(idiom)中层模式:设计模式中层模式:设计模式(design pattern)高层模式:体系结构模式高层模式:体系结构模式(architecture pattern)惯用法惯用法的特点:惯用法的特点:是与具体语言密切相关的编程经验的总结是与具体语言密切相关的编程经验的总结描述如何使用给定的语言特征来实现构件的特描述如何使用给定的语言特征来实现构件的特定方面及其关系定方面及其关系代表最底层的模式代表最底层的模式
2、惯用法更关注设计的实现惯用法更关注设计的实现可能是一种特定设计模式的具体实现可能是一种特定设计模式的具体实现设计模式范围范围目的目的创建型模式创建型模式结构型模式结构型模式行为型模式行为型模式类模式类模式工厂方法模式(类)适配器模式解释器模式模板方法模式对象模式对象模式抽象工厂模式建造者模式原型模式单例模式(对象)适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式职责链模式命令模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式访问者模式基本概念什么是体系结构什么是体系结构目前还没有一个公认的关于软件体系结构的定义,许多专家目前还没有一个公认的关于软件体系结构的定义,许多专家学
3、者从不同角度对软件体系结构进行了描述。学者从不同角度对软件体系结构进行了描述。Bass、Clements和和Kazman给出了如下定义:给出了如下定义:“一个程序或计算机一个程序或计算机系统的软件体系结构是指系统的软件体系结构是指系统的一个或者多个结构。结构中系统的一个或者多个结构。结构中包括软件的构件、构件的外部可见属性以及它们之间的相互包括软件的构件、构件的外部可见属性以及它们之间的相互关系。外部可见属性则是指软件构件提供的服务、性能、使关系。外部可见属性则是指软件构件提供的服务、性能、使用特性、错误处理、共享资源使用等用特性、错误处理、共享资源使用等。”这一定义强调在任一体系结构表述中这
4、一定义强调在任一体系结构表述中“软件构件软件构件”的角色。的角色。Dewayne Perry和和A1exander Wo1f曾这样定义:曾这样定义:“软件软件体系结构是具有一定形式的结构化元素,即构件的集合,包体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。不同部分组合连接起来。”基本概念基本概念框架框架 随着应用的发展和完善,某些带有整体性的应用模式被随着应用的
5、发展和完善,某些带有整体性的应用模式被逐渐固定下来,形成特定的框架,包括逐渐固定下来,形成特定的框架,包括基本构成元素基本构成元素和和关关系系。框架框架是特定应用领域问题的体系结构模式,框架定义是特定应用领域问题的体系结构模式,框架定义了基本构成单元和关系后,开发者就可以集中精力解决业了基本构成单元和关系后,开发者就可以集中精力解决业务逻辑问题。务逻辑问题。在组织形式上,在组织形式上,框架是一个待实例化的完整系统框架是一个待实例化的完整系统,定义,定义了软件系统的元素和关系,创建了基本的模块,定义了涉了软件系统的元素和关系,创建了基本的模块,定义了涉及功能更改和扩充的插件位置。典型的框架例子有
6、及功能更改和扩充的插件位置。典型的框架例子有MFC框框架架和和Struts框架框架。体系结构的重要作用体现在以下三个方面体系结构的重要作用体现在以下三个方面:(1)体系结构的表示有助于风险承担者(项目干系)体系结构的表示有助于风险承担者(项目干系 人)进行人)进行交流交流。(2)体系结构突出了早期设计决策。)体系结构突出了早期设计决策。(3)软件体系结构是可传递和可复用的)软件体系结构是可传递和可复用的模型模型。基本概念体系结构的重要作用体系结构的重要作用体系结构风格传统的体系结构传统的体系结构数据流风格数据流风格(Dataflow):批处理序列、管道过滤器风格批处理序列、管道过滤器风格(Pi
7、pe-and-Filter)调用调用/返回风格返回风格:主程序主程序/子程序、面向对象风格子程序、面向对象风格(ADT)、层次系统、层次系统(Layered Systems)事件系统风格事件系统风格:进程通信、事件系统进程通信、事件系统仓库风格仓库风格:数据库系统、超文本系统、黑板系统数据库系统、超文本系统、黑板系统MVC软件体系结构软件体系结构体系结构风格基于网络的体系结构基于网络的体系结构客户端(服务器)客户端(服务器)/服务器体系结构服务器体系结构:一层一层/两层两层/三层结构、三层结构、Java EEP2P软件体系结构软件体系结构网格计算体系结构网格计算体系结构SOA与与Web Ser
8、vices云计算体系结构云计算体系结构当输入数据经过一系列的计算和操作构件的变换形成输当输入数据经过一系列的计算和操作构件的变换形成输出数据时,可以应用这种体系结构。出数据时,可以应用这种体系结构。管道管道/过滤器过滤器、批处理序列批处理序列都属于数据流风格。都属于数据流风格。管道管道/过滤器结构如下图所示:过滤器结构如下图所示:数据流风格数据流风格数据流风格 管道管道/过滤器结构过滤器结构 Linux系统中的命令序列堆叠的数据过程(图像处理)从从上上图图可可看看出出,管管道道/过过滤滤器器结结构构拥拥有有一一组组被被称称为为过过滤滤器器(filter)的的构构件件,这这些些构构件件通通过过管
9、管道道(pipe)连连接接,管管道将数据从一个构件传送到下一个构件。道将数据从一个构件传送到下一个构件。每每个个过过滤滤器器独独立立于于其其上上游游和和下下游游的的构构件件而而工工作作,过过滤滤器器的的设设计计要要针针对对某某种种形形式式的的数数据据输输入入,并并且且产产生生某某种种特特定定形形式的数据输出。式的数据输出。如如果果数数据据流流退退化化成成为为单单线线的的变变换换,则则称称为为批批处处理理序序列列(batch sequential)。这这种种结结构构接接收收一一批批数数据据,然然后后应应用用一系列连续的构件(过滤器)变换它。一系列连续的构件(过滤器)变换它。数据流风格管道管道/过
10、滤器风格具有以下过滤器风格具有以下优点优点:(1 1)使得软构件具有良好的隐蔽性和高内聚、低耦合的特)使得软构件具有良好的隐蔽性和高内聚、低耦合的特 点。点。(2 2)允许设计者将整个系统的输入)允许设计者将整个系统的输入/输出行为看成是输出行为看成是多个过多个过 滤器的行为的简单合成滤器的行为的简单合成。(3 3)支持软件复用支持软件复用。只要提供适合在两个过滤器之间传送。只要提供适合在两个过滤器之间传送 的数据,任何两个过滤器都可被连接起来。的数据,任何两个过滤器都可被连接起来。(4 4)系统维护和增强系统性能简单。)系统维护和增强系统性能简单。新的过滤器新的过滤器可以添加可以添加 到现有
11、系统中来;到现有系统中来;旧的旧的可以被改进的过滤器替换掉。可以被改进的过滤器替换掉。(5 5)允许对一些如吞吐量、死锁等属性的分析。)允许对一些如吞吐量、死锁等属性的分析。(6 6)支持并行执行支持并行执行。每个过滤器是作为一个单独的任务完。每个过滤器是作为一个单独的任务完 成,因此可与其他任务并行执行。成,因此可与其他任务并行执行。数据流风格管道管道/过滤器风格过滤器风格主要主要缺点缺点如下:如下:(1)通常导致进程成为批处理的结构。这是因为虽然过滤)通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须器可增量式地处理数据,但它们是独立的,所以
12、设计者必须将每个过滤器看成一个完整的从输入到输出的转换。将每个过滤器看成一个完整的从输入到输出的转换。(2)不适合处理交互不适合处理交互 的应用。当需要增量地显示改变时,的应用。当需要增量地显示改变时,这个问题尤为严重。这个问题尤为严重。(3)因为在数据传输上没有通用的标准,每个过滤器都)因为在数据传输上没有通用的标准,每个过滤器都增增加了解析和合成数据的工作加了解析和合成数据的工作,这样就导致了系统性能下降,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。并增加了编写过滤器的复杂性。数据流风格在此类体系结构中,存在以下在此类体系结构中,存在以下3种子风格种子风格。主程序主程序/子程序体
13、系结构子程序体系结构(C语言?)语言?)这种传统的程序结构将功能分解为一个控制层次,其这种传统的程序结构将功能分解为一个控制层次,其中中“主主”程序调用一组程序构件,这些程序构件又去调用别程序调用一组程序构件,这些程序构件又去调用别的程序构件,如下图所示。这种结构总体上为树状结的程序构件,如下图所示。这种结构总体上为树状结构,可以在底层存在公共模块。构,可以在底层存在公共模块。调用返回风格调用调用返回风格返回风格(常见,发挥主要作用)(常见,发挥主要作用)主程序主程序/子程序体系结构的子程序体系结构的优点优点如下如下:(1)可以使用)可以使用自顶向下自顶向下,逐步分解逐步分解的方法得到体系结构
14、的方法得到体系结构图,典型的拓扑结构为树状结构。基于定义图,典型的拓扑结构为树状结构。基于定义使用关系对子使用关系对子程序进行分解,使用过程调用作为程序之间的交互机制。程序进行分解,使用过程调用作为程序之间的交互机制。(2)采用程序设计语言支持的单线程控制。)采用程序设计语言支持的单线程控制。其主要其主要缺点缺点如下如下:(1)子程序的正确性难于判断。需要运用层次推理来判断)子程序的正确性难于判断。需要运用层次推理来判断子程序的正确性,因为子程序的正确性取决于它调用的子程子程序的正确性,因为子程序的正确性取决于它调用的子程序的正确性。序的正确性。(2)子系统的结构不清晰。通常可以将多个子程序合
15、成为)子系统的结构不清晰。通常可以将多个子程序合成为模块。模块。调用返回风格 面向对象的调用面向对象的调用返回风格返回风格 系统的构件系统的构件(类类/对象对象)封装了数据和必须应用到该数据上的操封装了数据和必须应用到该数据上的操作,构件间通过消息传递进行通信与合作。与主程序作,构件间通过消息传递进行通信与合作。与主程序/子程子程序的体系结构相比,面向对象风格中的对象交互会复杂一序的体系结构相比,面向对象风格中的对象交互会复杂一些。面向对象风格与网络应用的需求在分布性、自治性、些。面向对象风格与网络应用的需求在分布性、自治性、协作性、演化性等方面具有内在的一致性。协作性、演化性等方面具有内在的
16、一致性。面向对象风格具有以下面向对象风格具有以下优点优点:(1 1)因为对象对其他对象隐藏它的表示,所以可以改变一)因为对象对其他对象隐藏它的表示,所以可以改变一 个对象的表示,而不影响其他对象。个对象的表示,而不影响其他对象。(2 2)设计者可将一些数据存取操作的问题分解成一些交互)设计者可将一些数据存取操作的问题分解成一些交互 的代理程序的集合。的代理程序的集合。调用返回风格其其缺点缺点如下如下:(1)为了使一个对象和另一个对象通过过程调用等进行)为了使一个对象和另一个对象通过过程调用等进行 交互,必须知道对象的标识。只要一个对象的标识交互,必须知道对象的标识。只要一个对象的标识 改变了,
17、就必须修改所有其他明确调用它的对象。改变了,就必须修改所有其他明确调用它的对象。(2)必须修改所有显式调用它的其他对象,并消除由此)必须修改所有显式调用它的其他对象,并消除由此 带来的一些副作用。例如,如果带来的一些副作用。例如,如果A使用了对象使用了对象B,C 也使用了对象也使用了对象B,那么,那么,C对对B的使用所造成的对的使用所造成的对A 的影响可能是料想不到的。的影响可能是料想不到的。调用返回风格 层次结构层次结构 层次结构的基本结构如下图所示。在这种体系结构中,整层次结构的基本结构如下图所示。在这种体系结构中,整个系统被组织成一个分层结构,每一层为上层提供服务,并个系统被组织成一个分
18、层结构,每一层为上层提供服务,并作为下一层的客户。作为下一层的客户。调用返回风格各类网络协议栈层级之间的调用-返回避免复杂性 这种风格支持基于可增加抽象层的设计。允许将复杂问这种风格支持基于可增加抽象层的设计。允许将复杂问题分解成一个增量步骤序列的实现。题分解成一个增量步骤序列的实现。由于每一层最多只影响由于每一层最多只影响两层两层,同时只要给相邻层提供,同时只要给相邻层提供相同的接口相同的接口,允许每层用不同,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。的方法实现,同样为软件复用提供了强大的支持。调用返回风格调用返回风格调用返回风格765网络层网络层321应用层应用层表示层表示
19、层会话层会话层报文流报文流报文流报文流报文流报文流应用层应用层表示层表示层会话层会话层4传输层传输层段流段流传输层传输层转接节点转接节点网络层网络层网络层网络层 网络层网络层协议协议链路层链路层 链路层链路层 链路层链路层协议协议转接节点转接节点分组流分组流子子 网络层网络层网网内内 链路层链路层 帧流帧流 链路层链路层部部物理层物理层物理层物理层协议协议协协物理层物理层 议议 物理层物理层通信子网通信子网比特流比特流物理层物理层分层系统实例:分层系统实例:ISO/OSI网络的分层模型网络的分层模型调用返回风格用户用户Shell解释运行解释运行语言处理、系统工具、系统应用程序语言处理、系统工具
20、、系统应用程序系统调用系统调用操作系统内核操作系统内核(System kernel)基本输入输出基本输入输出(BIOS)计算机硬件计算机硬件(CPU、存储器、存储器、I/O等等)分层系统实例:计算机操作分层系统实例:计算机操作系统系统(OS)的层次结构的层次结构层次结构具有以下层次结构具有以下优点优点:(1)支持基于抽象程度递增的系统设计,使设计者可以把)支持基于抽象程度递增的系统设计,使设计者可以把 一个复杂系统按递增的步骤进行分解。一个复杂系统按递增的步骤进行分解。(2)支持功能增强,因为每一层至多和相邻的上下层交)支持功能增强,因为每一层至多和相邻的上下层交 互,因此,功能的改变最多影响
21、相邻的内外层。互,因此,功能的改变最多影响相邻的内外层。(3)支持复用。支持复用。只要提供的服务接口定义不变,同一层的只要提供的服务接口定义不变,同一层的 不同实现可以交换使用。这样,就可以定义一组标准不同实现可以交换使用。这样,就可以定义一组标准 的接口,从而允许各种不同的实现方法。的接口,从而允许各种不同的实现方法。调用返回风格其其缺点缺点如下如下:(1)并不是)并不是每个系统都可以很容易地划分为分层的模式每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系甚至即使一个系统的逻辑结构是层次化的,出于对系 统性能的考虑,系统设计师不得不把一些低级或高级统性能
22、的考虑,系统设计师不得不把一些低级或高级 的功能综合起来。的功能综合起来。(2)很难找到一个合适的、正确的层次抽象方法。)很难找到一个合适的、正确的层次抽象方法。调用返回风格数据流与调用-返回事件系统风格事件系统风格(独立构件)事件系统风格(独立构件)GUI编程Windows操作系统中Hook机制Jquery中的回调事件系统风格事件系统风格事件系统风格事件系统风格 典型的体系结构风格事件系统风格事件系统风格为何称为为何称为“独立构件独立构件”风格?风格?这种风格的主要特点是:这种风格的主要特点是:事件的触发者并不知道哪事件的触发者并不知道哪些构件会被这些事件影响,相互保持独立些构件会被这些事件
23、影响,相互保持独立。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用;各个构件之间彼此之间无连接关系,各自独立存在,通过对事件的发布和注册实现关联对事件的发布和注册实现关联;事件系统风格遇到断点,编辑器将源代码滚动到断点处,变量监测器则更新当前变量值并遇到断点,编辑器将源代码滚动到断点处,变量监测器则更新当前变量值并显示出来显示出来。如何完成如何完成?事件系统风格事件系统的基本构成与工作原理事件系统的基本构成与工作原理事件系统风格EventSource:debugger(调试器调试器)EventHandler:editor and variable monitor(编辑器与变量监视器编辑
24、器与变量监视器)EventManager:IDE(集成开发环境集成开发环境)编辑器与变量监视器向调试器注册,接收编辑器与变量监视器向调试器注册,接收“断点事件断点事件”;一旦遇到断点,调试器发布事件,从而触一旦遇到断点,调试器发布事件,从而触发发“编编辑器辑器”与与“变变量监测量监测器器”;编辑器将源代码滚动到断点处,变量监测器则更新当前变量值并显示编辑器将源代码滚动到断点处,变量监测器则更新当前变量值并显示出来出来。其他的例子?Windows本身就是事件驱动的事件系统风格事件分发的策略事件分发的策略事件系统风格无独立的事件派遣模块无独立的事件派遣模块通过通过“观察者模式观察者模式”实现实现模
25、块向事件发送模块注册某些消息模块向事件发送模块注册某些消息当某一模块发出某一事件时,它自动将这些事件发布给那些曾经当某一模块发出某一事件时,它自动将这些事件发布给那些曾经向自己注册过此事件的模块向自己注册过此事件的模块有独立的事件派遣模块有独立的事件派遣模块广播式广播式(All broadcasting):派遣模块将事件广播到所有的模块,:派遣模块将事件广播到所有的模块,但只有感兴趣的模块才去取事件并触发自身的行为;但只有感兴趣的模块才去取事件并触发自身的行为;选择广播式选择广播式(Selected broadcasting):派遣模块将事件送到那些:派遣模块将事件送到那些已经注册了的模块中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构
限制150内