章二 软件体系结构的构建模式
一个设计良好的通用模式往往是这个工程领域技术成熟的标志。
1、管道过滤模式
1)概述:每个功能模块都有一组输入和输出;功能模块对输入数据流进行增量计算得到输出数据流。
功能模块称作过滤器filter;
功能模块间的连接可看作输入、输出数据流之间的通路,称作管道。
2)特征:过滤器的相对独立性,即过滤器独立完成自身功能,相互之间无需进行状态交互。整个管道过滤网络的最终输出和网络中各过滤器执行操作的顺序无关。
3)优点:
(1)设计者可以将整个系统的输入、输出特性简单的理解为各个过滤器功能的合成;
(2)管道过滤模式支持功能模块的复用;
(3)管道过滤模式的系统具有较强的可维护性和可扩展性;
(4)支持一些特定的分析,如吞吐量计算和死锁检测等;
(5)管道过滤模式具有并发性。
4)不足:
(1)管道过滤模式往往导致系统处理过程的成批操作;
(2)设计者也许不得不花费精力协调两个相对独立但又存在某种关系的数据流;
(3)根据实际设计的要求,设计者也需要对数据传输进行特定的处理,导致过滤器必须对输入、输出管道中的数据流进行解析或反解析,增加了过滤器具体实现的复杂性。
5)管道过滤模式的实例:数字通信系统
2、面向对象模式
1)概述:面向对象模式集数据抽象、类继承为一体,使软件工程公认的模块化、信息隐藏、抽象、重用性等原则在面向对象模式下得以充分体现。
追求问题空间和软件系统空间的一致性。
基于面向对象模式构建系统,首先要确定求解问题中有哪些对象,构造适当的类以反映各种不同的对象,通过对象间传递消息和类的继承机制,协同完成对问题的求解。
2)优点:
(1)高度模块性;
(2)封装功能;
(3)代码共享;
(4)灵活性;
(5)易维护性;
(6)可扩充性。
3)不足:在于如果一个对象需要调用另一个对象,它就必须知道那个对象的标识(对象名或其它标识符),这样就无形之中增强了对象之间的依赖关系。
4)实例
ODS开放式分布系统 Open Distributed System
构件:是一个封装了设计和实现的功能单元,它向外界提供接口,多个构件接口互连可以形成一个完整的系统。
构件的优点在于针对接口设计、提供标准的技术服务框架、实现语言和构件位置透明以及基于属性和事件的良好复合性。
CBA方法(Component-Based Analysis)中3个基本的建模概念:
(1)协作(Collaboration):根据构件所承担的不同角色,协作定义了一组构件之间的动作:ction集合。
(2)类型(Type):通过描述一个构件的外部可视行为来定义构件在系统中所承担的功能。
(3)细化(Refinement):体现了对同一事务的不同描述之间的关系,抽象Abstraction描述为基础,实现Realization描述可以看作抽象描述的具体的形式。
ODS系统中构件、连接器和配置的模型:
(1)构件(Component):是描述开放分布式系统的基本元素:接口Interface、类型Type、语义Semantics、约束条件Constraint、进化Evolution、非功能性属性Nonfunctional Property。
(2)连接器(Connector):用来分析构件之间的交互模型、定义交互规则。
连接器不一定是开放分布式系统中的一个可编辑单元,可以表现为共享变量、表入口指针、缓冲区、动态数据结构、一系列工程调用、初始化参数、通信协议、管道等多种形式。
对连接器的描述可从5方面展开:接口、类型、语义、约束条件、进化。
(3)配置(Configuration):也称为拓扑(Topology),是构件和连接器交互组成的体系结构图。
配置可用来判断4个问题:构件连接是否合适;接口是否匹配;连接器是否正常;构件连接的语义是否符合设计要求。
配置有8点特征:易理解性、复合性、细化和可描绘性、异构性、可扩充性、进化性、动态性、约束条件。
5)构件的描述方法
UML (Unified Modeling Language)统一建模语言
ADLs(Architecture Description Languages)体系结构描述语言
利用UML和ADLs可以对ODS系统中的构件及其相互之间的通信关系进行描述,利用,GUI体系结构框架自动生成工具,可完成下述几点功能:
(1)生成构件模型,包括构件的属性、接口和实现;
(2)建立连接器模型,包括协议、属性和实现;
(3)体系结构的抽象和封装;
(4)类型和类型检查;
(5)主动规范,提供设计向导;
(6)多视图模式,对不同层次的用户显示不同的内容;
(7)生成实现,如将构件对应为面向对象技术中的类;
(8)将系统的修改动态映射到实现。
6)具有自适应稳定性的连接器模型
包括:
(1)连接器中的通信协议栈;
连接器中的通信协议栈由一组功能各异的通信协议叠加而成,其中每个协议负责构件之间交互信息的一部分功能,这些功能的有机合成就实现了构件之间的可靠通信。
EJB,DCOM和CORBA的构件级复用框架中主要采用了Java/RMI和CORBA/IIOP等通信协议,
Internet采用了TCP/IP协议簇。
ODS系统中的通信协议栈包括以下几个基本协议:构件命名和寻址协议;构件通信传输协议;构件通信传输控制协议;构件通信管理协议。
(2)连接器的自适应稳定算法。