《软件体系结构第5章》由会员分享,可在线阅读,更多相关《软件体系结构第5章(63页珍藏版)》请在金锄头文库上搜索。
1、软件设计和体系结构软件设计和体系结构第第5章章 软件体系结构风格软件体系结构风格1清华大学出版社内容提要内容提要p5.1 软件体系结构风格概述软件体系结构风格概述p5.2 软件体系结构基本风格解析软件体系结构基本风格解析l5.2.1管道-过滤器l5.2.2数据抽象与面向对象风格 l5.2.3基于事件的隐式调用风格l5.2.4 分层系统风格 l5.2.5 仓库风格和黑板风格 l5.2.6 模型-视图-控制器(MVC)风格l5.2.7 解释器风格l5.2.8 C2风格 5.3 案例研究案例研究l5.3.1案例1:上下文关键字l5.3.2案例2:仪器软件l5.3.3平台层PaaS和应用程序层SaaS
2、2清华大学出版社 5.4 客户客户/服务器风格服务器风格 5.5 三层三层C/S结构风格结构风格l5.5.1三层三层C/S结构的优点结构的优点l5.5.2实例:某石油管理局劳动管理信息系统实例:某石油管理局劳动管理信息系统5.6 B/S风格风格5.7 C/S与与B/S混合结构风格混合结构风格5.8 正交软件体系结构风格正交软件体系结构风格 5.8.1正交软件体系结构的概念正交软件体系结构的概念 5.8.2正交软件体系结构的优点正交软件体系结构的优点 5.8.3正交软件体系结构的实例正交软件体系结构的实例5.9 基于层次消息总线的体系结构风格基于层次消息总线的体系结构风格 5.9.1构件模型构件
3、模型 5.9.2构件接口构件接口 5.9.3消息总线消息总线 5.9.4构件静态结构构件静态结构 5.9.5构件动态行为构件动态行为 5.9.6运行时刻的系统演化运行时刻的系统演化3清华大学出版社p5.10异构结构风格异构结构风格l5.10.1 使用异构结构的原因l5.10.2 异构体系结构的实例l5.10.3 异构组合匹配问题p5.11小结小结4清华大学出版社5.1 软件体系结构风格概述软件体系结构风格概述 软件体系结构风格,是描述某一特定应用软件体系结构风格,是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格领域中系统组织方式的惯用模式。体系结构风格定义一个系统家族,即一个体系结
4、构定义一个词定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含了一些构件和连汇表和一组约束。词汇表中包含了一些构件和连接件类型,而这组约束指出系统是如何将这些构接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格,反映了件和连接件组合起来的。体系结构风格,反映了领域中众多系统所共有的结构和语义特征,并指领域中众多系统所共有的结构和语义特征,并指导如何将各个模块和子系统有效地组织成一个完导如何将各个模块和子系统有效地组织成一个完整的系统。按这种方式理解,软件体系结构风格整的系统。按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构建系
5、定义了用于描述系统的术语表和一组指导构建系统的规则。统的规则。5清华大学出版社5.2 软件体系结构基本风格解析软件体系结构基本风格解析5.2.1 管道管道-过滤器过滤器 适用于对有序数据进行一系列已经定义的相互计算适用于对有序数据进行一系列已经定义的相互计算的应用程序。管道过滤器模式下,每个功能模块都有一的应用程序。管道过滤器模式下,每个功能模块都有一组输入和输出。功能模块从输入集合读入数据流,并在组输入和输出。功能模块从输入集合读入数据流,并在输出集合产生输出数据流,即功能模块对输入数据流进输出集合产生输出数据流,即功能模块对输入数据流进行增量计算得到输出数据流。管道过滤器模式下,功能行增量
6、计算得到输出数据流。管道过滤器模式下,功能模块称作过滤器(模块称作过滤器(filter);功能模块间的连接可以看作);功能模块间的连接可以看作输入、输出数据流之间的通路,所以称作管道(输入、输出数据流之间的通路,所以称作管道(pipe)。)。6清华大学出版社图图5-1 管道管道过滤器风格的体系结构过滤器风格的体系结构 7清华大学出版社采用管道采用管道-过滤器模式建立的系统主要过滤器模式建立的系统主要有以下几个优点:有以下几个优点:p(1)由于每个构件的行为不受其他构件的影响,)由于每个构件的行为不受其他构件的影响,因此,整个系统的行为比较易于理解。因此,整个系统的行为比较易于理解。l设计者可以
7、将系统抽象成一个“黑匣子”,其输入是系统中第一个过滤器的输入管道,输出是系统中最后一个过滤器的输出管道,而其内部各功能模块的具体实现对用户完全透明。p(2)支持功能模块的复用。任意两个过滤器只)支持功能模块的复用。任意两个过滤器只要在相互的输入、输出管道格式上达成一致,就要在相互的输入、输出管道格式上达成一致,就可以连接在一起。可以连接在一起。l过滤器A和过滤器B只要对管道C中传输的数据格式达成一致就可以实现互连,其中过滤器A并不关心过滤器B如何处理管道C的内容,而过滤器B也不知道管道C的内容究竟是如何产生的,即在管道过滤器模式中,过滤器之间仅需很少的信息交换就可以完成互连。8清华大学出版社p
8、(3)具有较强的可维护性与可扩展性。)具有较强的可维护性与可扩展性。可维护性体现在系统过滤器部件的更新或可维护性体现在系统过滤器部件的更新或升级。升级。l由于技术改进等原因,过滤器A的实现发生了改变,采用新技术开发的过滤器D具有和A完全相同的输入、输出管道接口,这时可以直接将A替换为D,而无须对系统中的其他过滤器或管道进行任何修改。9清华大学出版社图图5-2 管道管道-过滤器支持功能模块复用过滤器支持功能模块复用图图5-3 管道管道-过滤器的可扩展性过滤器的可扩展性10清华大学出版社p (4)支持特殊的分析:如吞吐量计算和死)支持特殊的分析:如吞吐量计算和死锁检测等。利用管道锁检测等。利用管道
9、-过滤器模式图,可以很容过滤器模式图,可以很容易地得到系统的资源使用与请求状态图,然后,易地得到系统的资源使用与请求状态图,然后,根据操作系统原理等相关理论中的死锁检测方法根据操作系统原理等相关理论中的死锁检测方法就可以分析出系统目前所处的状态,是否存在死就可以分析出系统目前所处的状态,是否存在死锁可能及如何消除死锁等问题。锁可能及如何消除死锁等问题。p (5)支持并发执行。基于管道)支持并发执行。基于管道-过滤器模式过滤器模式的系统存在很多并行的过滤器,这样的系统在实的系统存在很多并行的过滤器,这样的系统在实际运行时,可以将存在并发可能的多个过滤器看际运行时,可以将存在并发可能的多个过滤器看
10、作多个并发的任务并行执行,从而大大提高了系作多个并发的任务并行执行,从而大大提高了系统的整体效率,加快了处理速度。当然,在调度统的整体效率,加快了处理速度。当然,在调度并行任务的时候,必须有相应的并行算法作基础,并行任务的时候,必须有相应的并行算法作基础,否则,可能导致系统功能的混乱。否则,可能导致系统功能的混乱。11清华大学出版社5.2.2 数据抽象与面向对象风格数据抽象与面向对象风格 图图5-4 数据抽象与面向对象风格的体系结构数据抽象与面向对象风格的体系结构12清华大学出版社面向对象的系统有许多优点,并早已为人所知:面向对象的系统有许多优点,并早已为人所知: (1)因为对象对其他对象隐藏
11、它的表示,所以可以改变一)因为对象对其他对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其他的对象。个对象的表示,而不影响其他的对象。 (2)设计者可将一些数据存取操作的问题,分解成一些交)设计者可将一些数据存取操作的问题,分解成一些交互的代理程序的集合。互的代理程序的集合。但是,面向对象的系统也存在着某些问题。但是,面向对象的系统也存在着某些问题。 (1)为了使一个对象和另一个对象通过过程调用等进行交)为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识,只要一个对象的标识改变了,就必须修互,必须知道对象的标识,只要一个对象的标识改变了,就必须修改所有其他明确调用它的对
12、象。改所有其他明确调用它的对象。 (2)必须修改所有显式调用它的其他对象,并消除由此带)必须修改所有显式调用它的其他对象,并消除由此带来的一些副作用。例如,如果来的一些副作用。例如,如果A使用了对象使用了对象B,C也使用了对象也使用了对象B,那么那么C对对B的使用所造成的对的使用所造成的对A的影响,可能是预想不到的。的影响,可能是预想不到的。13清华大学出版社5.2.3 基于事件的隐式调用风格基于事件的隐式调用风格p 基基于于事事件件的的隐隐式式调调用用风风格格的的思思想想是是构构件件不不直直接接调调用用一一个个过过程程,而而是是触触发发或或广广播播一一个个或或多多个个事事件件。系系统统中中的
13、的其其他他构构件件中中的的过过程程在在一一个个或或多多个个事事件件中中注注册册,当当一一个个事事件件被被触触发发,系系统统自自动动调调用用在在这这个个事事件件中中注注册册的的所所有有过过程程,这这样样,一一个个事事件件的的触触发发就就导致了另一模块中的过程的调用。导致了另一模块中的过程的调用。14清华大学出版社隐式调用系统的主要优点有以下两点:隐式调用系统的主要优点有以下两点:p为软件重用提供了强大的支持。当需要将为软件重用提供了强大的支持。当需要将一个构件加入现存系统时,只需将它注册一个构件加入现存系统时,只需将它注册到系统的事件中。到系统的事件中。p为改进系统带来了方便。当用一个构件代为改
14、进系统带来了方便。当用一个构件代替另一个构件时,不会影响到其他构件的替另一个构件时,不会影响到其他构件的接口。接口。15清华大学出版社隐式调用系统的主要缺点有以下几方面隐式调用系统的主要缺点有以下几方面:p 构件放弃了对系统计算的控制。一个构构件放弃了对系统计算的控制。一个构件触发一个事件时不能确定其他构件是否会响件触发一个事件时不能确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的过应它。而且即使它知道事件注册了哪些构件的过程,它也不能保证这些过程被调用的顺序。程,它也不能保证这些过程被调用的顺序。p 数据交换的问题。有时数据可被一个事数据交换的问题。有时数据可被一个事件传递,但在
15、另一些情况下,基于事件的系统必件传递,但在另一些情况下,基于事件的系统必须依靠一个共享的仓库进行交互。在这些情况下,须依靠一个共享的仓库进行交互。在这些情况下,全局性能和资源管理便成了问题。全局性能和资源管理便成了问题。p 既然过程的语义必须依赖于被触发事件既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题。的上下文约束,关于正确性的推理就存在问题。16清华大学出版社5.2.4分层系统风格分层系统风格p一个分层风格的系统按照层次结构组织,每一层一个分层风格的系统按照层次结构组织,每一层向它的上层提供服务,同时又是它的下层客户;向它的上层提供服务,同时又是它的下层客户;在
16、某些系统中,除了邻接的层,一个内部层次对在某些系统中,除了邻接的层,一个内部层次对于其他外部层次是隐藏的,对体系结构的约束包于其他外部层次是隐藏的,对体系结构的约束包括把系统内的交互限制在邻接层次之间。交互只括把系统内的交互限制在邻接层次之间。交互只在相邻的层间发生;同时,这些交互按照一定协在相邻的层间发生;同时,这些交互按照一定协议进行。议进行。l连接件可以用层次间的交互协议来定义。每个独立层都要防止较高层直接访问较低层。l每一层次是由不同的部件构成的实体集合。层内的部件可以交互。p相邻层的部件可直接从上向下调用,还可以设计相邻层的部件可直接从上向下调用,还可以设计统一的层调用接口对层进行保
17、护。统一的层调用接口对层进行保护。17清华大学出版社图图5-5 分层模型分层模型18清华大学出版社5.2.5仓库风格和黑板风格仓库风格和黑板风格p 仓仓库库风风格格的的体体系系结结构构由由两两个个构构件件组组成成:一一个个中中央央数数据据结结构构,它它表表示示当当前前状状态态;一一个个独独立立构构件件的的集集合合,它它对对中中央央数数据据结结构构进进行行操操作作。对对于于系系统统中中数数据据和和状状态态的的控控制制方方法法有有两两种种:一一个个传传统统的的方方法法是是,由由输输入入事事务务选选择择进进行行何何种种处处理理,并并把把执执行行结结果果作作为为当当前前状状态态存存储储到到中中央央数数
18、据据结结构构中中,这这时时,仓仓库库是是一一个个传传统统的的数数据据库库体体系系结结构构;另另一一种种方方法法是是,由由中中央央数数据据结结构构的的当当前前状状态态决决定定进进行行何何种种处处理理。这这时时,仓仓库库是是一一个个黑黑板板体体系系结结构构。即即黑黑板体系结构是仓库体系结构的特殊化。板体系结构是仓库体系结构的特殊化。19清华大学出版社p(1)适应的设计问题)适应的设计问题p(2)解决方案)解决方案20清华大学出版社p “黑黑板板”模模式式类类似似于于这这样样一一个个情情形形,即即让让专专家家们们坐坐在在真真实实黑黑板板前前并并一一起起工工作作来来解解决决一一个个问问题题。每每个个专
19、专家家独独立立评评估估解解法法的的当当前前状状态态,并并可可在在任任何何时时间间到到黑黑板板上上添添加加、更更改改或或删删除除信信息息。人人们们往往往往要要决决定定接接下下来来谁谁去去访访问问黑黑板板。在在黑黑板板模模式式中中,如如果果可可用用的的组组件件超超过过一一个个,仲仲裁裁者者(moderator)组件决定程序执行的顺序。)组件决定程序执行的顺序。图图5-6 黑板风格的体系结构黑板风格的体系结构21清华大学出版社 从从图图5-6中中不不难难看看出出,一一个个标标准准的的黑黑板板型仓库模式系统通常包括型仓库模式系统通常包括3个组成部分:个组成部分: (1)知识源:)知识源: (2)中央数
20、据单元:)中央数据单元: (3)控制单元:)控制单元:22清华大学出版社黑板风格的体系结构的优点有:黑板风格的体系结构的优点有:p 便于多客户共享大量数据,它们不用关心便于多客户共享大量数据,它们不用关心数据是何时出现的、谁提供的、怎样提供的。数据是何时出现的、谁提供的、怎样提供的。 p 既便于添加新的作为知识源代理的应用程既便于添加新的作为知识源代理的应用程序,也便于扩展共享的黑板数据结构。序,也便于扩展共享的黑板数据结构。p 可重用的知识源。可重用的知识源。l知识源是某类任务的独立专家。l黑板体系结构有助于使它们可重用。重用的先决条件是知识源和所基于的黑板系统理解相同的协议和数据,或者在这
21、方面相当接近而不排斥协议或数据的自适应程序。p 支持容错性和健壮性。支持容错性和健壮性。l在黑板体系结构中,所有的结果都只是假设。l只有那些被数据和其他假设强烈支持的才能生存。这提供了对噪声数据和不确定结论的容忍。23清华大学出版社黑板风格的体系结构的缺点有:黑板风格的体系结构的缺点有:p 不同的知识源代理对于共享数据结构要达不同的知识源代理对于共享数据结构要达成一致,而且,这也造成对黑板数据结构的修成一致,而且,这也造成对黑板数据结构的修改较为困难。改较为困难。p 需要一定的同步锁机制保证数据结构的完需要一定的同步锁机制保证数据结构的完整性和一致性,增大了系统复杂度。整性和一致性,增大了系统
22、复杂度。p 测试困难。由于黑板系统的计算没有依据测试困难。由于黑板系统的计算没有依据一个确定的算法,所以其结果常常不可再现。一个确定的算法,所以其结果常常不可再现。此外,错误假设也是求解过程的一部分。此外,错误假设也是求解过程的一部分。p 不能保证有好的求解方案。不能保证有好的求解方案。l一个黑板系统往往只能正确解决所给任务的某一百分比。l难以建立一个好的控制策略。l控制策略不能以一种直接方式设计,而需要一种试验的方法。24清华大学出版社p低效。低效。l黑板系统在拒绝错误假设中要承受多余的计算开销。l但是,如果没有确定的算法存在,那么与根本不存在的系统相比,低效总比没有强。p开发成本高。开发成
23、本高。l绝大多数黑板系统要花几年时间来进化。l我们把这归因于病态结构问题。25清华大学出版社5.2.6 模型模型-视图视图-控制器(控制器(MVC)风格)风格1. MVC模式模式 MVC由由Trygve Reenskaug提出,首先被应用在提出,首先被应用在SmallTalk-80环境中,是许多交互和界面系统的构成基础。环境中,是许多交互和界面系统的构成基础。MVC结构是为那些需要为同样的数据提供多个视图的应结构是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很好地实现了数据层与表示层的分离。用程序而设计的,它很好地实现了数据层与表示层的分离。作为一种开发模型,作为一种开发模型,MV
24、C通常用于分布式应用系统的设通常用于分布式应用系统的设计和分析中,以及用于确定系统各部分间的组织关系。对计和分析中,以及用于确定系统各部分间的组织关系。对于界面设计可变性的需求,于界面设计可变性的需求,MVC(ModelViewController)把交互系统的组成分解成模型、视图、控制)把交互系统的组成分解成模型、视图、控制器三种部件。器三种部件。26清华大学出版社p2. MVC中的模型、视图和控制类中的模型、视图和控制类p MVC中的模型、视图和控制类如图中的模型、视图和控制类如图5-7所示。所示。p (1)模型类)模型类p (2)视图类)视图类p (3)控制类)控制类27清华大学出版社模
25、型模型类数据结构关系数据结构关系变化变化-传播注册关系传播注册关系内部数据和逻辑计算内部数据和逻辑计算向视图和控制器通知数据变化向视图和控制器通知数据变化(a)视图类显示形式显示形式显示模式控制显示模式控制从模型获得数据视图从模型获得数据视图更新操作更新操作(b)控制控制类状态状态事件控制事件控制控制视图更新控制视图更新(c)28清华大学出版社p3.MVC的实现的实现p 实现基于实现基于MVC的应用需要完成以下工作,如图的应用需要完成以下工作,如图5-8所所示:示:图图5-8 MVC的实现的实现29清华大学出版社p(1)分析应用问题,对系统进行分离)分析应用问题,对系统进行分离p(2)设计和实
26、现每个视图)设计和实现每个视图p(3)设计和实现每个控制器)设计和实现每个控制器p(4)使用可安装和卸载的控制器)使用可安装和卸载的控制器30清华大学出版社5.2.7解释器风格解释器风格p 解释器风格通常被用于建立一种虚拟机以解释器风格通常被用于建立一种虚拟机以弥合程序的语义与作为计算引擎的硬件的间隙。弥合程序的语义与作为计算引擎的硬件的间隙。由于解释器实际上创建了一个软件虚拟出来的由于解释器实际上创建了一个软件虚拟出来的机器,所以这种风格又常常被称为虚拟机风格。机器,所以这种风格又常常被称为虚拟机风格。l(例如:程序设计语言的编译器,比如Java、Smalltalk等;基于规则的系统,比如专
27、家系统领域的Prolog等;脚本语言,比如Awk、Perl等。)31清华大学出版社图图5-9 解释器风格的体系结构解释器风格的体系结构32清华大学出版社p解释器风格的优点如下:解释器风格的优点如下:p 有助于应用程序的可移植性与程序设有助于应用程序的可移植性与程序设计语言的跨平台能力;可以对未实现的硬计语言的跨平台能力;可以对未实现的硬件进行仿真。件进行仿真。p解释器风格的缺点,解释器风格的缺点,p 是额外的间接层次带来的系统性能的是额外的间接层次带来的系统性能的下降。下降。33清华大学出版社5.2.8C2风格风格 C2体系结构风格可以概括为通过连接件绑定在一体系结构风格可以概括为通过连接件绑
28、定在一起的、按照一组规则运作的并行构件网络。起的、按照一组规则运作的并行构件网络。图图5-10 C2风格的体系结构风格的体系结构34清华大学出版社p C2风格,是最常用的一种软件体风格,是最常用的一种软件体系结构风格。从系结构风格。从C2风格的组织规则和结风格的组织规则和结构图中可以得出,构图中可以得出,C2风格具有以下特点:风格具有以下特点: 系统中的构件可实现应用需求,并能将任意复杂系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起。度的功能封装在一起。p 所有构件之间的通信是通过以连接件为中介的异所有构件之间的通信是通过以连接件为中介的异步消息交换机制来实现的。步消息交换机制来
29、实现的。p 构件相对独立,构件之间依赖性较少。系统中不构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。共享特定控制线程之类的相关性假设。35清华大学出版社5.3 案例研究案例研究p5.3.1案例案例1:上下文关键字:上下文关键字p (a)解解决决方方案案1:使使用用共共享享数数据据的的主主程程序序子程序子程序图图5-11 KWIC:共享数据解决方案:共享数据解决方案36清华大学出版社p(b)解决方案)解决方案2:抽象数据类型:抽象数据类型37清华大学出版社p(c)解决方案)解
30、决方案3:隐式调用:隐式调用p(d)解决方案)解决方案4:管道过滤器:管道过滤器 图图5-14 KWIC:管道过滤器方案:管道过滤器方案38清华大学出版社(e)各种方案的比较)各种方案的比较共享共享数据数据抽象数据抽象数据类型型隐式式调用用管道管道过滤器器算法算法变更更-+数据表示数据表示变更更-+-功能功能变更更+-+性能性能+-重用重用+-+39清华大学出版社5.3.2案例案例2:仪器软件:仪器软件p1. 面向对象模型面向对象模型图图5-16 示波器:面向对象模型示波器:面向对象模型40清华大学出版社p2. 分层模型分层模型图图5-17 示波器分层模型示波器分层模型41清华大学出版社3.管
31、道过滤器模型管道过滤器模型图图5-18 一个管道过滤器模型一个管道过滤器模型42清华大学出版社p4. 改进后的管道过滤器模型改进后的管道过滤器模型图图5-19示波器:改造后的管道过滤器模型示波器:改造后的管道过滤器模型43清华大学出版社5.4 客户客户/服务器风格服务器风格p 客户客户/服务器(服务器(Client/Server,C/S)计算技术在信息产业)计算技术在信息产业中占有重要的地位。网络计算经历了从基于宿主机的计算模型到客户中占有重要的地位。网络计算经历了从基于宿主机的计算模型到客户/服务器计算模型的演变服务器计算模型的演变。图图5-20 C/S体系结构示意图体系结构示意图44清华大
32、学出版社5.5 三层三层C/S结构风格结构风格p C/S体系结构具有强大的数据操作与事务处理能力,体系结构具有强大的数据操作与事务处理能力,模型思想简单,易于人们理解和接受,但随着企业规模的模型思想简单,易于人们理解和接受,但随着企业规模的日益扩大,软件的复杂程度不断提高,传统的二层日益扩大,软件的复杂程度不断提高,传统的二层C/S结结构存在诸多局限,三层构存在诸多局限,三层C/S体系结构应运而生。其结构如体系结构应运而生。其结构如图图5-21所示。所示。图图5-21 三层三层C/S结构示意图结构示意图45清华大学出版社图图5-22 三层三层C/S结构的一般处理流程结构的一般处理流程46清华大
33、学出版社p1. 表示层表示层 2. 功能层功能层 3. 数据层数据层图图5-23 三层三层C/S物理结构比较物理结构比较47清华大学出版社5.6 B/S风格风格p B/S软软件件体体系系结结构构,即即Browser/Server(浏浏览览器器/服服务务器器)结结构构,是是随随着着Internet技技术术的的兴兴起起,对对C/S体体系系结结构构进进行行改改进进后后一一种种结结构构。在在B/S体体系系结结构构下下,用用户户界界面面完完全全通通过过WWW浏浏览览器器实实现现,部部分分事事务务逻逻辑辑在在前前端端实实现现,但但是是主主要要事事务务逻逻辑辑在在服服务务器器端端实实现现。它它利利用用浏浏览
34、览器器技技术术,结结合合浏浏览览器器的的多多种种脚脚本本语语言言并并通通过过浏浏览览器器就就实实现现了了原原来来需需要要复复杂杂的的专专用用软软件件才才能能实实现现的的强强大大功功能能,是是一一种种全全新新的的软软件件体体系结构。系结构。B/S软件体系结构图如图软件体系结构图如图5-27所示。所示。48清华大学出版社图图5-27 浏览器服务器体系结构图浏览器服务器体系结构图49清华大学出版社p B/S与与C/S混合软件体系结构是一混合软件体系结构是一种典型的异构体系结构。种典型的异构体系结构。B/S软件体系结软件体系结构,即构,即Browser/Server(浏览器(浏览器/服服务器)结构,是
35、随着务器)结构,是随着Internet技术的兴技术的兴起,对起,对C/S体系结构的一种变化或者改进体系结构的一种变化或者改进的结构。在的结构。在B/S体系结构下,用户界面完体系结构下,用户界面完全通过全通过WWW浏览器实现,部分事务逻辑浏览器实现,部分事务逻辑在前端实现,但是主要事务逻辑在服务器在前端实现,但是主要事务逻辑在服务器端实现。端实现。5.7 C/S与与B/S混合结构风格混合结构风格50清华大学出版社5.8 正交软件体系结构风格正交软件体系结构风格p5.8.1 正交软件体系结构的概念正交软件体系结构的概念p 正交(正交(orthogonal)软件体系结构,由组)软件体系结构,由组织层
36、和线索的构件构成。层是由一组具有相同抽织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成的。线索是子系统的特例,它象级别的构件构成的。线索是子系统的特例,它由完成不同层次功能的构件组成(通过相互调用由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。不存在相互调用的。51清华大学出版社p正交软件体系结构的主要特征如下:正交软件体系
37、结构的主要特征如下:p(1)正交软件体系结构由完成不同功能的)正交软件体系结构由完成不同功能的n(n1)个线索(子系统)组成。)个线索(子系统)组成。p(2)系统具有)系统具有m(m1)个不同抽象级别的层。)个不同抽象级别的层。p(3)线索之间是相互独立的(正交的)。)线索之间是相互独立的(正交的)。p(4)系统有一个公共驱动层(一般为最高层,)系统有一个公共驱动层(一般为最高层,和公共数据结构(一般为最低层)。和公共数据结构(一般为最低层)。52清华大学出版社p图图5-28 正交软件体系结构框架正交软件体系结构框架53清华大学出版社p5.8.2正交软件体系结构的优点正交软件体系结构的优点p(
38、1)结构清晰,易于理解。)结构清晰,易于理解。 p(2)易修改,可维护性强。)易修改,可维护性强。 p(3)可移植性强,重用粒度大。)可移植性强,重用粒度大。p p5.8.3正交软件体系结构的实例正交软件体系结构的实例54清华大学出版社5.9基于层次消息总线的体系结构风格基于层次消息总线的体系结构风格图图5-33 HMB风格的系统示意图风格的系统示意图55清华大学出版社p5.9.1构件模型构件模型图图5-34 HMB风格的构件模型风格的构件模型56清华大学出版社p5.9.2构件接口构件接口p5.9.3消息总线消息总线图图5-35 消息总线的结构消息总线的结构57清华大学出版社p5.9.4构件静
39、态结构构件静态结构图图5-36 系统复合构件的静态结构示意围系统复合构件的静态结构示意围58清华大学出版社p5.9.5构件动态行为构件动态行为p5.9.6运行时刻的系统演化运行时刻的系统演化p(1)动态增加或删除构件)动态增加或删除构件p(2)动态改变构件响应的消息类型)动态改变构件响应的消息类型p(3)消息过滤)消息过滤59清华大学出版社5.10异构结构风格异构结构风格p5.10.1 使用异构结构的原因使用异构结构的原因 p 前面介绍和讨论了一些所谓的前面介绍和讨论了一些所谓的“纯纯”体系结构,但体系结构,但随着软件系统规模的扩大,系统也越来越复杂,所有的系随着软件系统规模的扩大,系统也越来
40、越复杂,所有的系统不可能都在单一的标准的结构上进行设计,这是因为以统不可能都在单一的标准的结构上进行设计,这是因为以下几个方面的原因:下几个方面的原因:p (1)从最根本上来说,不同的结构有不同的处理能)从最根本上来说,不同的结构有不同的处理能力的强项和弱点,一个系统的体系力的强项和弱点,一个系统的体系p结构应该根据实际需要进行选择,以解决实际问题。结构应该根据实际需要进行选择,以解决实际问题。p (2)关于软件包、框架、通信以及其他一些体系结)关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。构上的问题,目前存在多种标准。p即使在某段时间内某一种标准占统治地位,但变动最终
41、是即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。绝对的。60清华大学出版社 p (3)实际工作中,总会遇到一些遗留下来的代码,)实际工作中,总会遇到一些遗留下来的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。它们仍有效用,但是却与新系统有某种程度上的不协调。然而在许多场合,将技术与经济综合进行考虑时,总是决然而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。定不再重写它们。p (4)即使在某一单位中,规定了共享共同的软件包)即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不或相互关系的一些标准,仍会存在解释或表示习惯上
42、的不同,在同,在UNIX中就可以发现这类问题:即使规定用单一的中就可以发现这类问题:即使规定用单一的标准(标准(ASCII)来保证过滤器之间的通信,但因为不同人)来保证过滤器之间的通信,但因为不同人对关于在对关于在ASCII流中信息如何表示的不同的假设,不同的流中信息如何表示的不同的假设,不同的过滤器之间仍可能不协调。过滤器之间仍可能不协调。p5.10.2 异构体系结构的实例异构体系结构的实例61清华大学出版社p5.10.3 异构组合匹配问题异构组合匹配问题图图5-39 构件协调问题构件协调问题62清华大学出版社5.11小结小结p软件体系结构是软件工程领域中的一个重要研究软件体系结构是软件工程
43、领域中的一个重要研究方向,是大型软件开发中的关键技术。方向,是大型软件开发中的关键技术。l经过多年的发展,软件体系结构也超出了传统的对于软件设计阶段的支持,逐渐扩展到整个软件生命周期。p综述了体系结构的基本风格、三层综述了体系结构的基本风格、三层C/S结构风格、结构风格、浏览器浏览器/服务器、服务器、C/S与与B/S混合结构风格、正混合结构风格、正交软件风格、基于层次消息总线的体系风格与异交软件风格、基于层次消息总线的体系风格与异构结构风格的概念与优劣,并对现有若干种体系构结构风格的概念与优劣,并对现有若干种体系结构风格进行归纳、比较与总结,描述了其主要结构风格进行归纳、比较与总结,描述了其主要发展方向以及应用的主要意义。发展方向以及应用的主要意义。63清华大学出版社