软件体系结构与设计模式
软件体系结构风格包含4个关键要素:
1) 提供一个词汇表; 2) 定义一套配置规则; 3) 定义一套语义解释规则; 4) 定义对基于这种风格的系统进行的分析。
根据以上4要素框架,Garlan和Shaw对通用软件体系结构风格的进 行分类,每种体系结构风格有各自的应用领域和优缺点。
8.2 典型的软件体系结构风格
系统结构模式层是软件的上层体系结构,它是最高层次 的软件结构概念,其涉及的概念通常有客户端/服务器、 解释器、编译器、框架等。
应用层是建立在软件概念之上的领域问题描述,它是基 于纯粹的应用领域的。
8.1 软件体系结构的概念
8.1.4 软件体系结构的作用
设计软件的体系结构在设计阶段非常重要。软件体系结构就好比软 件系统的骨骼,如果骨骼确定了,那么软件系统的框架就确定了。软件 体系结构在软件开发过程中的作用如下。
我们在软件体系结构设计时除了考虑到系统要实现的功能外,还应充 分考虑到系统所要求的各类质量属性。
8.4 分布式系统结构
• 8.4.1 多处理器体系结构
多处理器系统是分布式系统的最简单模型,系统同时运行许多进程, 这些进程分布在不同的处理器上,可以极大地提高系统的性能。
由于大型实时系统对响应时间要求很高,多采用这种模型。大型实 时系统需要实时采集信息,并利用采集到的信息进行决策,然后发送信 号给执行机构。虽然,信息采集、决策和执行可以在一个处理器上统一 调度完成,但多处理器的并行计算比单处理器的分时片计算能够极大地 提高系统的性能,而且可靠度也相对较高。
第8章 软件体系结构与设计模式
本章目标
了解软件体系结构的定义和建模方法 熟悉常见的软件体系结构风格 了解软件的质量属性 了解体系结构框架 了解软件系统的设计模式
8.1
软件体系结构的概念
• 8.1.1 什么是软件体系结构
软件体系结构是系统的一个或多个结构,它 包括:
– 1) 软件的组成元素(组件); – 2) 这些(组件)元素的外部可见特性; – 3) 这些元素(组件)之间的相互关系。
8.4 分布式系统结构
• 8.4.5 代理
代理可以用于构件包含隔离组件的软件系统, 软件通过远程服务调用进行交互。代理者负责协 调通信,诸如转发请求和传递结果、异常等。
在ORB上有4个对象接口。
对象服务。定义加入ORB的系统级服务,如安全性、 命名、事务处理,这类与应用领域无关。
公共设施。定义应用程序级服务。 领域接口。面向特定领域接口。 应用接口。面向指定的外界应用,一般是供应商或
具体来说,部件包括客户端、服务器、数据库、程序包、 过程、子程序等一切软件的组成部分。相互作用的关系可以 是过程调用、消息传递、共享内存变量、客户端/服务器的访 问协议、数据库的访问协议等。
8.1 软件体系结构的概念
• 8.1.2软件体系结构建模
根据建模的侧重点的不同,可以将软件体系结构的模型分为结构模型、 框架模型、动态模型、过程模型和功能模型5种。
服务器。负责给其子系统提供服务,如数据库服务器提供数据存储和管理服务,文件 服务器提供文件管理服务,搜索服务器提供数据检索等。 客户机。通常是独立的子系统,通过向服务器请求约定的资源获取数据。一台服务器 可以同时为许多客户机提供服务。 网络。连接服务器和客户机。有时客户机和服务器位于同一台物理主机上,但多数情 况下它们分布在不同主机上。网络可以有各种形式,包括有线和无线等。
1)结构模型 这是一个最直观、最普遍的建模方法。这种方法以体系结构的构件、连接件和其 他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配 置、约束、隐含的假设条件、风格、性质。研究结构模型的核心是体系结构描述 语言。 2)框架模型 框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。 框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
三层C/S结构就避免了这个问题,将数据管理层和应用逻辑层分别 放在两个物理层或物理主机上,客户端仍然保留在客户机上。对于三层 C/S结构,各层的功能或指责如下:
表示层。表示层是应用系统的用户界面部分,担负着用户与应用程序之间的 对话功能。通常采用图形界面的方式呈现。
应用逻辑层。应用逻辑层为应用系统的主体,包含全部的业务逻辑。比如数 据处理,用户管理,与其他系统交互,以及记录系统日志等。通常是应用服 务器。
8.1 软件体系结构的概念
3)动态模型 动态模型是对结构模型或框架模型的补充,研究系统的"大颗粒"的行为性质。例 如,描述系统的重新配置或演化。动态可能指系统总体结构的配置、建立或拆除 通信通道或计算的过程。这类系统常是激励型的。 4)过程模型 过程模型研究构造系统的步骤和过程,因此结构是遵循某些过程脚本的结果。 5)功能模型 该模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。它可 以看作是一种特殊的框架模型。
分布式对象技术的应用目的主要是为了降低服务器 负荷、共享网络的资源、平衡分配计算任务到不同的主 机,提高系统的协同处理能力。
8.4 分布式系统结构
• 8.4.4 对等端体系结构
对等端体系结构可以视为客户端/服务器体系结构和分布式对象体系 结构的融合。它没有严格的客户机、服务器划分,所有的分布的对等端 根据需要既能充当服务器,又能充当客户端。但有些情况下,对等端体 系结构仍然需要设计一个端节点服务器,用于存储端节点信息。在通信 之时,对等端首先连接到端节点服务器上,下载可用的对等端节点信息。 之后的通信就是根据这些端节点信息连接到其他对等端请求信息,这时, 该节点常常充当客户端,其它被请求的端充当服务器。对等端体系结构 常常用于数据共享类系统的设计。
软件体系结构不仅指定了系统的组织结构和 拓扑结构,也显示了系统需求和构成系统的元素 之间的对应关系,提供了一些设计决策的基本原 理。
8.1 软件体系结构的概念
软件体系结构描述的对象是直接构成系统的抽象组件。 它由功能各异、相互作用的部件按照层次构成,包含了系统 的基础构成单元、单元之间的相互作用关系、在构成系统时 它们的合成方法以及对合成约束的描述。
8.1
软件体系结构的概念
• 8.1.3 软件体系结构的分层模型
计算机硬件层是软件实现的物质基础,比如存储器、时 钟、高速缓存等。
软件硬件层实现了软件与硬件的分离,既是对软件实现 的最底层的描述,也是对硬件实现的操作和控制的描述。
基础控制描述层、资源和管理调度层是体系结构构件和 连接的内在构成模型。
8.2 典型的软件体系结构风格
• 8.2.4 虚拟机风格
它创建了一种虚拟的环境,将用户 与底层平台隔离开来,或者将高层 抽象和底层实现隔离开来。其中包 括解释器、基于规则的系统。
8.2 典型的软件体系结构风格
• 8.2.5 仓库风格
仓库是存储和维护数据的 中心场所。在仓库风格中 存在两类构件,表示当前 数据的状态的中心数据结 构和一组对中心数据进行 操作的独立构件。其中包 括数据库系统、超文本系 统、黑板系统。
各个构件通过调用其他构件和 获得返回参数来进行交互,配合完 成功能。包括主程序/子程序、面 向对象风格、层次结构。
8.2 典型的软件体系结构风格
• 8.2.3 独立构件风格
这种风格的主要特点是:事 件的触发者并不知道哪些构 件会被这些事件影响,相互 保持独立,这样不能假定构 件的处理顺序,甚至不知道 哪些过程会被调用;各个构 件之间彼此无连接关系,各 自独立存在,通过对事件的 发布和注册实现关联,其中 包括进程通讯、事件系统。
1)规范软件开发的基本架构 2)便于开发人员与用户的沟通 3)模块化、层次化设计,有利于减少返工,提高效率 4)便于系统开发前、后期的筹备与的软件体系结构如图所示。
树形结构
网状结构
8.2 典型的软件体系结构风格
所谓软件体系结构风格,是描述某一特定应用领域中系统组织方式 的惯用模式。
8.4 分布式系统结构
• 8.4.2 客户机/服务器体系结构
客户机/服务器(Client/Server,简称C/S)体系结构是为了共享不 对等的资源而提出来的,是20世纪90年代成熟起来的技术,C/S体系结 构定义了客户机如何与服务器连接,以将数据和应用系统分部到多个处 理机上。
C/S体系结构有3个主要的组成部分。
8.3 软件质量属性
系统属性按运行时是否可见又分为: 运行时可观察到的:包括性能、安全性、可用性、易用性; 运行时不可观察的:包括可修改性、可移植性、可测试性、可集成性、
可重用性。
商业属性包括投放市场时间、成本和预计的系统生命周期长短。 构架属性包括软件体系结构本身的概念完整性、正确性和可构建性。
8.3 软件质量属性
软件质量属性是指软件系统在其生 存周期过程中所表现出的各种特征。质 量属性既和软件体系结构有关,也和具 体实现有关。但软件设计是保证软件质 量的重要阶段,而软件体系结构是获取 许多质量属性的基础,因此在软件体系 结构设计时就应考虑到这些质量属性, 并在软件体系结构层次上进行评估。质 量属性可以分为3类:系统属性、商业 属性和构架属性。
8.1 软件体系结构的概念
软件体系结构建模可分为4个层次。
1)软件体系结构核心元模型:软件体系结构模型由哪些元素组成,这些组成元 素之间按照何种原则组织; 2)软件体系结构模型的多视图表示:从不同的视角描述特定系统的体系结构, 从而得到多个视图,并将这些视图组织起来以描述整体的软件体系结构模型; 3)软件体系结构描述语言:在软件体系结构基本概念的基础上,选取适当的形 式化或半形式化的方法来描述一个特定的体系结构; 4)软件体系结构文档化:记录和整理上述3个层次的描述内容。
C/S体系结构通常有两层或三层,也可根据需要划分为更多层。两层 C/S结构一般有两种形态。
瘦客户机模型。在瘦客户机模型中,数据管理和应用逻辑都在服务器端执行, 客户机只负责表示部分。