3.5.2典型架构
软件架构设计的一个核心问题是能否使用重复的架构模式,即能否达到架构级的软
件重用。也就是说,能否在不同的软件系统中,使用同一种架构。
软件架构模式描述了某一特定应用领域中系统的组织方式。它反映了领域中众多系
统所共有的结构和语义特性,描述了如何将各个模块和子系统有效地组织成一个完整的
系统。使用一些经过实践证实的解决方案(模式)可以有效地解决更多的软件开发问题。
几种常见的架构模式如下。
1.管道,过滤器模式
在管道,过滤器架构模式中,每个构件都有一组输入,输出,构件读取输入的数据流,
经过内部处理后,产生输出数据流,该过程主要完成输入流的变换及增量计算。通常,
将这里的构件称为过滤器,其中的连接器就像是数据流传输的管道,将一个过滤器的输
出传送到另一过滤器的输入。管道,过滤器输出的正确性并不依赖于过滤器进行增量计算
过程的顺序。
管道/过滤器模式的优点如下。
(l)体现了各功能模块的“黑盘”特性及高内聚、低耦合的特点。
(2)可以将整个系统的输入,输出行为看成是多个过滤器行为的简单合成。
(3)支持软件功能模块的重用。
(4)便于系统维护:新的过滤器可以添加到现有系统中来,旧的可以由改进的过滤
器替换。
(5)支持某些特定的分析,如吞吐量计算、死锁检测等。
(6)支持并行操作,每个过滤器可以作为一个单独的任务完成。
管道,过漶器模式的缺点如下。
(1)通常导致系统处理过程的成批操作。
(2)需要设计者协调两个相对独立但又存在关系的数据流。
(3)可能需要每个过滤器自己完成数据解析和合成工作(如加密和解密),从而导
致系统性能下降,并增加了过滤器具体实现的复杂性。
2.面向对象模式
抽象数据类型概念对软件系统有着重要作用,面向对象模式建立在数据抽象和面向
对象的基础上,将数据的表示方法及其相应操作封装在一个抽象数据类型或对象中。
面向对象模式的典型应用是基于构件的软件开发(Component-Based Development,
CBD)。
面向对象模式的优点如下。
(1)高度模块化。
(2)封装功能实现了数据隐藏。
(3)继承性提供了一种实现代码共享的手段。
(4)提供了系统的灵活性,便于维护及扩充。
面向对象系统的缺点在于:对象之间的调用需要知道所调用对象的标识。如果对象
的标识发生改变,就必须通知所有调用该对象的对象。否则系统将可能无法正常运行。
3.事件驱动模式
事件驱动模式的基本原理是构件并不直接调用过程,而是触发一个或多个事件。系
统中的其他构件可以注册相关的事件,触发一个事件时,系统会自动调用注册了该事件
的构件过程,即触发事件会导致另一构件中过程的调用。
事件驱动模式的主要特点是事件的触发者并不知道哪些构件会受到事件的影响,且
不能假定构件的处理顺序,甚至不知道会调用哪些过程,使用事件驱动模式的典型系统
包括各种图形界面工具。
事件驱动模式的优点如下。
(1)支持软件重用,容易实现并发处理。
(2)具有良好的可扩展性,通过注册可引入新的构件,而不影响现有构件。
(3)可以简化客户代码。
事件驱动模式的缺点如下。
(1)构件削弱了自身对系统的控制能力。一个构件触笈事件时,并不能确定响应该
事件的其他构件及各构件的执行顺序。
(2)不能很好地解决数据交换问题。
(3)使系统中各构件的逻辑关系变得更加复杂。
4.分层模式
分层模式采用层次化的组织方式,每一层都是为上一层提供服务,并使用下一层提
供的功能。这种模式允许将一个复杂问题逐步分层实现。层次模式中的每一层最多只影
响两层,只要给相邻层提供相同的接口,就允许每层用不同的方法实现,可以充分支持
软件复用。
分层模式的典型应用是分层通信协议,如ISO/OSI的七层网络模型。
的优点如下。
(1)有助把复杂的问题按功能分解,使整体设计更为清晰。
(2)支持系统设计的逐级抽象。
(3)具有较好的可扩展性。
(4)支持复用。
分层模式的缺点如下。
(1)并不是每个系统都可以很容易地划分出层次来;同时,各层功能的划分也没有
一个统一的、正确的抽象方法。
(2)层次的个数过多,系统性能可能会下降。
5.知识库模式
知识库模式采用两种不同的构件:中央数据结构构件说明当前状态,独立构件在中
央数据存储上执行,中央数据构件与独立的外部构件间的相互作用是系统中的主要问题。
知识库模式有两种不同的控制策略:如果输入流触发进程执行韵选择,则为基于传
统数据库型的知识库模式;如果中央数据结构的当前状态触发进程执行的选择,则为基
于黑板系统的知识库模式。
图3-8是黑板系统的示意图。黑板系统的典型应周是信号处理领域,如语音和模式
识别。
黑板系统主要由以下三部分组成。
(1)知识源:包含独立的、与应用程序相关的知识,知识源之间不直接进行通讯,
它们之间的交互只通过黑板来完成。
(2)黑板数据结构:按照与应用程序相关的层次来组织并解决问题的数据,知识源
通过不断地改变黑板数据来解决问题。
(3)控制;完全由黑板的状态驱动,黑板状态的改变决定了需要使用的特定知识。
6.客户机/服务器模式
客户机/服务器( Client/Server,c/s)模式是基于资源不对等,为实现共享而提出的。
C/S模式将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户
的交互任务。C/S模式具有强大的数据操作和事务处理能力,模型思想简单,易于人们
理解和接受。
图3-9是客户机/服务器模式的示意图,由两部分构成:前端是客户机,通常是PC:
后端是服务器,运行数据库管理系统,提供数据库的查询和管理。
1)客户机与服务器分离,允许网络分布操作:二者的开发也可分开同时进行。
(2) -个服务器可以服务于多个客户机。
随着企业规模的日益扩大,软件的复杂程度不断提高,传统的二层c/s模式的缺点
日益突出。
(1)客户机与服务器的通讯依赖于网络,可能成为整个系统运作的瓶颈;客户机的
负荷过重,难以管理大量的客户机,系统的性能受到很大影响。
(2)如果服务器及其界面定义有改变,则客户机也要做相应改变。’
(3)二层c/s模式采用单一服务器且以局域网为中心,难以扩展至广域网或Intemet。
(4)数据安全性不好。客户端程序可以直接访问数据库服务器,使数据库的安全性
受到威胁。
c/s模式适用于分布式系统,得到了广泛的应用。为了解决as模式中客户端的问
题,发展形成了浏览器朋显务器( Browser/Server,B/S)模式;为了解决as模式中服务
器端的问题,发展形成了三层(多层)c/s模式,即多层应用架构。
软件架构模式为粗粒度的软件重用提供了可能。但是,由于考虑问题的角度不同,
对于架构模式的选择会有很大的不同。为系统选择或设计架构时,需要根据特定项目的
具体特点,进行分析比较后再确定。同时应注意:各种架构模式并不是互斥的,某些应
用系统中可以综合使用多神架构模式。
各省软考办 | ||||||||||