软件体系结构风格_第1页
软件体系结构风格_第2页
软件体系结构风格_第3页
软件体系结构风格_第4页
软件体系结构风格_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件体系结构

推荐参考书软件体系结构:原理、方法与实践(第2版)张友生著,清华大学出版社,2014年。软件建模与设计:UML、用例、模式和软件体系结构,HassanGomaa著,彭鑫等译,机械工业出版社,2014年。软件体系结构(第3版),谭征著,清华大学出版社,2015年。第四章软件体系结构风格4.1. 软件体系结构风格的概念4.2. 经典软件体系结构风格4.3.

客户/服务器风格4.4. 浏览/服务器风格理解软件体系结构风格的概念和意义1掌握经典软件体系结构风格的内涵表示2掌握客户/服务器风格的结构与表示3了解其他软件体系结构风格,特别是浏览/服务风格4本章要点4.1.软件体系结构风格的概念

模式当一个行业专家解决一个特定问题时,很少使用完全不同于已有方案的全新的解决方法一般回顾所解决的类似问题,然后用类似的方法解新的问题如:建筑学、经济学、软件工程从特定的问题解决方案中提取出共同点即为模式每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心软件模式

描述公共软件问题的成功的解决方案反映了解决方案的公共抽象结构,在特定的上下文中,能够在分析、设计等应用构建过程中多次使用4.1.软件体系结构风格的概念

体系结构模式/风格软件体系结构的特点之一就是抽象出了很多常见的系统构建模式,这些模式(或者说结构风格)是系统设计人员多年工作经验的总结。体系结构模式是具体的软件体系结构的模板,描述系统级的结构特性,并影响到子系统的结构对体系结构模式的选择是开发软件系统时最根本的设计决策.设计模式:DesignPattern设计模式给出了进一步细化一个软件系统的子系统或者组件的方案设计模式一般为中层或中低层模式,常与特定的编程语言与方法无关。许多设计模式提供了分解复杂系统与组件的结构,也有的描述了它们之间的协作关系。4.1.软件体系结构风格的概念

软件体系结构风格的定义

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式(idiomaticparadigm)。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。一种软件体系结构风格是对某个具体环境下问题的结构性解决方法。4.1.软件体系结构风格的概念

讨论体系结构风格时要回答的问题◎

构件和连接件的类型是什么?◎可容许的结构模式是什么?◎基本的计算模型是什么?◎风格的基本不变性是什么?◎其使用的常见例子是什么?◎使用此风格的优缺点是什么?◎其常见的特例是什么?提供一个词汇表定义一套配置规则定义一套语义解释原则定义对基于这种风格的系统所进行的分析。4.1.软件体系结构风格的概念

使用软件结构风格带来的好处促进设计重用带来巨大的代码重用采用例行的结构,将使系统组成更易于被他人理解使用标准化的风格有益于系统的互操作性采用了某种体系结构风格的设计,通常允许专门的、此风格特有的体系结构分析4.2.经典软件体系结构风格

经典的体系结构风格

◎数据流风格(DataFlow):批处理序列;管道/过滤器。◎调用/返回风格(Call/Return):主程序/子程序;面向对象风格;层次结构。◎独立构件风格(IndependentComponents):进程通讯;事件系统。◎仓库风格(Data-centered):数据库系统;超文本系统;黑板系统。特别注意:体系结构风格不是对软件进行分类的标准。它仅仅是表示描述软件的不同角度而已.例如一个系统采用了分层风格,但这并不妨碍它用面向对象的方法来实现。同一个系统采用多种风格造成了所谓体系结构风格的异构组合。4.2.经典软件体系结构风格

(1)

管道和过滤器每个构件都有一组输入和输出。构件称作过滤器(filters);构件间的连接可以看作输入、输出数据流之间的通路,所以称作管道(pipes)。处理单元:进行数据流到数据流之间的转换:输入是数据流,输出也是数据流。过滤器系统示例:UNIXShell编写的程序;传统编译器:一个阶段(词法分析、句法分析、语义分析和代码生成)的输出是另一个阶段的输入。4.2.经典软件体系结构风格

管道和过滤器概念

过滤器系统示例:DOS中的管道命令DOS允许在命令中出现用竖线字符“|”分开的多个命令,将符号“|”之前的命令的输出,作为“|”之后命令的输入,这就是“管道功能”,竖线字符“|”是管道操作符。例如,命令dir|more使得当前目录列表在屏幕上逐屏显示。dir的输出是整个目录列表,它不出现在屏幕上而是由于符号“|”的规定,成为下一个命令more的输入,more命令则将其输入,more命令则将其输入一屏一屏地显示,成为命令行的输出。4.2.经典软件体系结构风格

管道和过滤器特性

过滤器是独立运行的构件非邻近的过滤器之间不共享状态过滤器自身无状态过滤器对其处理上下连接的过滤器“无知”对相邻的过滤器不施加任何限制结果的正确性不依赖于各个过滤器运行的先后次序各过滤器在输入具备后完成自己的计算。完整的计算过程包含在过滤器之间的拓扑结构中。4.2.经典软件体系结构风格

管道和过滤器风格的优点允许设计师将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成。使得构件具有良好的隐蔽性和高内聚、低耦合的特点。将系统抽象成一个“黑箱”,其输入是系统中第一个过滤器的输入管道,输出是系统中最后一个过滤器的输出管道,而其内部各功能模块的具体实现对用户完全透明。支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可以连接起来。每个过滤器都有自己独立的输入输出接口,如果过滤器间传输的数据遵守其规约,只要用管道将它们连接就可以正常工作。4.2.经典软件体系结构风格

管道和过滤器风格的优点

允许设计师将整个系统的输入/输出行为看成是多个过滤器的行为,系统易于维护和增强旧的过滤器可以被替代,新的过滤器可以添加到已有的系统上;系统的可维护性和可升级性得到了保证。支持并发各过滤器可以并发运行,大大提高系统的整体效率,加快处理速度。方便系统分析利用管道-过滤器风格的视图,可以很容易的得到系统的资源使用和请求的状态图。然后,根据操作系统原理等相关理论中的死锁检测方法就可以分析出系统目前所处的状态,是否存在死锁可能及如何消除死锁等问题。4.2.经典软件体系结构风格

管道和过滤器的缺点

容易导致批处理风格的系统设计设计者也许不得不花费精力协调两个相对独立但又存在某种关系的数据流之间的关系,例如多过滤器并发执行时数据流之间的同步问题等。不适合交互式的应用管道-过滤器模型适于数据流的处理和变换,不适合为与用户交互频繁的系统建模。在这种模型中,整个系统没有一个共享的数据区。数据不同管道上传输没有统一标准,每个过滤器都要做类似的数据打包和解包工作,增加了复杂性。4.2.经典软件体系结构风格

管道-过滤器风格实例——数字通信系统通信的目的是传递消息。消息具有不同的形式,例如:符号、文字、语音、音乐、数据、图片、图像等等。因而,根据所传递消息的不同,目前通信业务可以分为电报、电话、传真、数据传输及可视电话等。对于基本的点对点通信,是把发送端的消息传递到接收端。数字通信概念模型发送端接收端4.2.经典软件体系结构风格

管道-过滤器风格实例——数字通信系统将上图发送端进一步细分为信息源和发送设备,将接收端细分为接收设备和受信者;同时,在通信过程中会有噪声干扰,在模型中添加噪声源可得到图所示的数字通信系统粗略模型。数字通信系统粗略模型信息源发送设备接收设备受信者噪声源信道4.2.经典软件体系结构风格

管道-过滤器风格实例——数字通信系统图中各单元作用:信息源把各种可能信息转换成原始电信号;发送设备对原始电信号完成某种变化,便于原始信号在信道中传输,然后再送入信道;信道是指信号传输的通道,它既可以看成是管道(因为它的目的并不是为了实现某种功能,仅仅是为了信号的传输),也可以从某种意义上看做是过滤器接收设备从接收信号中恢复出相应的原始信号;受信者(也称为信息宿或接收终端)是将复原的原始信号转换成相应的消息。噪声源是信道中的噪声以及分散在通信系统其它各处的噪声的集中体现,它使原信号受到了干扰,产生畸变。4.2.经典软件体系结构风格

(2)数据抽象和面向对象系统

这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。4.2.经典软件体系结构风格

应用场合面向对象的体系结构风格适用于数据和功能分离的系统中,同样也适合于问题域模型比较明显,或需要人机交互界面的系统。大多数应用事件驱动风格的系统也常常应用了面向对象风格。LoginFormUserLabelPassLabelUserTextPassTextCancelButtonLoginButtonOptionGroupPublicOptionPrivateOption4.2.经典软件体系结构风格

面向对象风格实例——人事档案管理系统4.2.经典软件体系结构风格

面向对象系统的优点提高软件生产力利用封装、继承、聚合,提高生产力对象的内部实现容易修改因为对象对其它对象隐藏了它的数据表示,所以可以改变一个对象的数据表示,而不影响其它的对象;4.2.经典软件体系结构风格

面向对象系统的缺点◎为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。只要一个对象的标识改变了,就必须修改所有其他明确调用它的对象;◎必须修改所有显式调用它的其它对象,并消除由此带来的一些副作用。例如,如果A使用了对象B,C也使用了对象B,那么,C对B的使用所造成的对A的影响可能是料想不到的。ACBACBB’4.2.经典软件体系结构风格

(3)基于事件的系统这种风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。构件不直接调用一个过程,而是触发或广播一个或多个事件,系统中其它构件中的过程在一个或者多个事件中注册当一个事件被触发,系统自动调用这个事件中注册的所有过程,这样,一个事件的触发就导致了另一个模块中过程的调用4.2.经典软件体系结构风格

基于事件的系统的特点系统是由若干子系统或元素所组成的一个整体;系统有一定的目标,各子系统在某一种消息机制的控制下,为了这个目标而协调行动;在某一种消息机制的控制下,系统作为一个整体与环境相适应和协调;在一个系统的若干子系统中,必定有一个子系统起着主导作用,而其他子系统则处于从属地位;任一系统和系统内的任一元素,都有1个事件收集机制和1个事件处理机制,通过这种机制与周围环境发生作用和联系;4.2.经典软件体系结构风格

基于事件的隐式调用的优点

构件之间松耦合事件发布者不必知道哪些构件会被事件影响,事件的接收者也可以不关心事件是由谁发出的有助于软件复用允许任何构件注册其相关事件演化、升级简单可以在不影响其余构件的情况下替换某个构件,因而系统的演化、升级变得简单4.2.经典软件体系结构风格

基于事件的隐式调用的缺点

构件对系统进行的计算放弃了主动控制一个构件不能假设其它构件将会对它的请求作出响应,也不能得知事件处理的先后顺序。数据交换问题有时,数据可能被一个事件传递,但在另一些情况下,基于事件的系统必须依靠一个共享的仓库中进行交互。这样全局性能和资源管理器成为十分关键的因素。正确性推理存在问题过程的语义必须依赖于被触发事件的上下文约束4.2.经典软件体系结构风格

(4)分层系统

分层风格将任务分解为多个子项目组,其中某个子任务组处于某个特定的抽象层次上每一层只能与相邻层交互:为上层提供服务和调用下层提供的服务适当时候(必不得已的时候),可以允许一定的越层操作4.2.经典软件体系结构风格

分层风格实例:计算机网络的设计网络协议设计者将计算机网络中的各个部分按其功能划分为若干个层次(Layer),其中的每一个层次都可以看成是一个相对独立的黑箱、一个封闭的系统。用户只关心每一层的外部特性,只需要定义每一层的输入、数据处理和输出等外部特性。两台计算机通过网络进行通信时,只有两物理层之间能够通过媒体进行真正的数据通信,其余各对等层之间均不存在直接的通信关系,各对等层之间只能通过各对等层的协议来进行虚拟通信。4.2.经典软件体系结构风格

分层系统的优点

支持抽象程度递增的系统设计设计者可以把一个复杂系统按照递增的步骤进行分解支持功能扩充和修改因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层。支持灵活的实现和重用只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。4.2.经典软件体系结构风格

分层系统的缺点

并不是每个系统都可以很容易地划分为层次结构甚至即使一个系统的逻辑结构是层次化的,设计者出于对于系统性能的考虑,往往把一些低级和高级的功能综合起来。效率的降低由分层风格构成的系统,运行效率往往低于整体结构。在上层中的服务如果有很多依赖于最底层,则相关的数据必须通过中间层的若干次转化,才能传到。难于认可合适的、正确的层次抽象方法:层次太少,分层不能完全发挥这种风格的可重用性、可更改性、可移植性上的潜力。层次过多,则引入不必要的复杂性和层间隔离冗余以及层间传输的开销目前,没有可行的广为人们认可的层次粒度的确定和层任务的分配方法。4.2.经典软件体系结构风格

(5)

仓库系统及知识库

采用数据共享风格构建的系统中通常有两个截然不同的功能构件;中央数据结构说明当前状态,独立构件在中央数据存贮上执行;仓库与外构件间的相互作用在系统中会有大的变化。信息交互方式的差异导致了控制策略的不同,基于控制策略的选取不同形成两个主要的子类:基于传统数据库型数据共享风格的应用系统基于黑板型数据共享风格的应用系统4.2.经典软件体系结构风格

基于黑板型数据共享风格的应用系统知识源:知识源中包含独立的、与应用程序相关的知识,知识源之间不直接进行通讯,它们之间的交互只通过黑板来完成。黑板数据结构:黑板数据是按照与应用程序相关的层次来组织的解决问题的数据,知识源通过不断地改变黑板数据来解决问题。控制:控制完全由黑板的状态驱动,黑板状态的改变决定使用的特定知识。4.2.经典软件体系结构风格

数据共享风格实例:专家系统(ES,ExpertSystem)专家系统实质就是一组程序;从功能上:可定义为“一个在某领域具有专家水平解题能力的程序系统”,能像领域专家一样工作,运用专家积累的工作经验与专门知识,在很短时间内对问题得出高水平的解答。从结构上:可定义为“由一个专门领域的知识库,以及一个能获取和运用知识的机构构成的解题程序系统”。4.2.经典软件体系结构风格

(6)C2风格

通过连接件绑定在一起的按照一组规则运作的并行构件网络。C2风格中的系统组织规则如下:◎系统中的构件和连接件都有一个顶部和一个底部;◎构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;◎一个连接件可以和任意数目的其它构件和连接件连接;◎当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。4.2.经典软件体系结构风格

C2风格特点◎系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;◎所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;◎构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。4.3.客户/服务器风格

产生背景◎在集中式计算技术时代广泛使用的是大型机/小型机计算模型。它是通过一台物理上与宿主机相连接的非智能终端来实现宿主机上的应用程序。

◎20世纪80年代以后,集中式结构逐渐被以PC机为主的微机网络所取代。个人计算机和工作站的采用,永远改变了协作计算模型,从而导致了分散的个人计算模型的产生。◎C/S软件体系结构是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,C/S体系结构定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。4.3.客户/服务器风格

C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。4.3.客户/服务器风格

任务分配◎数据库服务器数据库安全性的要求;数据库访问并发性的控制;数据库前端的客户应用程序的全局数据完整性规则;数据库的备份与恢复。◎客户应用程序提供用户与数据库交互的界面;向数据库服务器提交用户请求并接收来自数据库服务器的信息;利用客户应用程序对存在于客户端的数据执行应用逻辑要求。4.3.客户/服务器风格

处理流程4.3.客户/服务器风格

优点◎

C/S体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。◎系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。◎在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。

4.3.客户/服务器风格

缺点◎开发成本较高:对客户端硬件配置要求较高◎客户端程序设计复杂:大部分工作量放在客户端,变得臃肿◎信息内容和形式单一:面向数据库的字段解释,界面只是数字和字符,枯燥死板。◎用户界面风格不一,使用繁杂,不利于推广使用◎软件移植困难:采用不同的平台开发的软件一般相互不兼容◎软件维护和升级困难:需开发人员到现场为客户机升级◎新技术不能轻易应用:系统平台工具较为固定,不可能轻易更改。4.3.客户/服务器风格

三层客户/服务器风格4.3.客户/服务器风格

处理流程三层客户/服务器风格4.3.客户/服务器风格

三层客户/服务器风格

物理结构4.3.客户/服务器风格

三层客户/服务器风格优点允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。允许更灵活有效地选用相应的平台和硬件系统,并且使这些平台和各个组成部分可以具有良好的可升级性和开放性应用的各层可以并行开发,可以选择各自最适合的开发语言利用功能层有效地隔离开表示层和数据层,未

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论