软件体系结构2-04层次体系结构
软件体系结构

软件体系结构引言软件体系结构是指在软件系统中,对系统整体结构进行组织和设计的过程。
一个合理的软件体系结构能够帮助开发者降低系统的复杂度,提高系统的可维护性和可扩展性。
本文将介绍软件体系结构的基本概念和常用的体系结构模式,以及如何进行软件体系结构设计。
软件体系结构的基本概念软件体系结构是一个抽象的概念,用于描述软件系统中各个组件之间的关系和交互方式。
它主要由以下几个基本概念组成:1.组件(Component):组件是软件系统中的一个独立的功能单元,可以由一个或多个模块(Module)组成,实现特定的功能。
2.接口(Interface):接口定义了组件之间的通信方式和消息传递方式。
一个组件可以提供多个接口供其他组件使用。
3.关系(Relationship):组件之间的关系可以是依赖关系(Dependency)、关联关系(Association)、聚合关系(Aggregation)和组合关系(Composition)等。
这些关系将多个组件链接起来,形成一个组织结构。
4.架构风格(Architectural Style):架构风格定义了软件系统的整体结构的模式和约束。
常见的架构风格包括层次结构(Layered)、客户端-服务器(Client-Server)、发布-订阅(Publish-Subscribe)等。
常用的软件体系结构模式在进行软件体系结构设计时,可以借鉴一些常用的体系结构模式。
下面介绍几种常见的模式:1.层次结构(Layered):层次结构将软件系统划分为若干层,每一层负责特定的功能。
上层的组件可以调用下层的组件,反之则不行。
这种模式可以降低系统的复杂度和耦合度,提高系统的可维护性。
2.客户端-服务器(Client-Server):客户端-服务器模式将软件系统划分为客户端和服务器两个部分。
客户端负责与用户进行交互,而服务器负责处理客户端的请求并返回结果。
这种模式可以实现系统的分布式部署,提高系统的可伸缩性。
软件体系结构

7
践者提供设计体系结构更好的方法,以便设计人员相互交流,并可以使 用支持体系结构描述语言的工具来分析案例。 这些内容将在第5 章介绍。 第二类是体系结构领域知识的总结性研究。这一领域关心的是工程 师通过软件实践总结而来各种体系结构原则和模式的分类和阐释。 第三类是针对特定领域的框架 [SEI90,Tra94] 的研究。这类研究产生 了针对一类特殊软件的体系结构框架,比如,航空电子控制系统、移动 机器人、用户界面。这类研究一旦成功,这样的框架便可以被毫不费力 实例化来生产这一领域新的产品。这部分内容将在第 7 章介绍。 第四类是软件体系结构形式化支持的研究。随着新的符号的产生, 以及人们对体系结构设计实践的理解逐步深入,需要用一种严格的形式 化方法刻画软件体系结构及其相关性质。这些内容将在第 5 章介绍。
8
设计或实现中一种特殊的重复出现的问题。例如,Bridge 模式,它为解 决抽象部分和实现部分独立变化的问题提供了一种通用结构。因此,设 计模式更强调直接复用的程序结构。 3. 应用框架(Application Framework) 应用框架是整个或部分系统的可重用设计,表现为一组抽象构件的 集合以及构件实例间交互的方法。可以说,一个框架是一个可复用的设 计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的 依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协 作的方法,它为构件复用提供了上下文 (Context) 关系。在很多情况下, 框架通常以构件库的形式出现,但构件库只是框架的一个重要部分。框 架的关键还在于框架内对象间的交互模式和控制流模式 [2]。 设计模式是对在某种环境中反复出现的问题以及解决该问题的方 案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复 用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的 元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特 定应用领域,但同一模式却可适用于各种不同的应用。体系结构风格描 述了软件系统的整体组织结构,它独立于实际问题。而设计模式和应用 框架更加面向具体问题。 体系结构风格、设计模式和应用框架的概念是从不同的目的和出发 点讨论软件体系结构,它们之间的概念经常互相借鉴和引用。
软件体系结构

这种系统主要适用于控制系统,信息管理系 统,CAD系统,CASE工具集。
13
集成的CASE工具集的体系结构 以数据仓库为核心
设计编辑器
代码生成器
设计翻译器
项目数据仓库
程序编辑器
设计分析器
报告生成器
14
这种体系结构包括数据库、超文本系统及数 据黑板系统等。它包含两种成分:一是共享 的结构化数据;二是所有访问这些数据的操 作。
集中控制模型分为两类: 控制子系统顺序执行 控制子系统并发执行
作为集中控制器的子系统在将控制转交给另 一子系统后,该子系统完成它的功能后控制 权还要归还给集中控制器子系统。
33
(1)调用-返回模型 (Call-Return model)
此即熟悉的自顶向下的子程序模型。 控制始于子程序层次的顶部,通过子程序调
用,从层次结构较高层的程序向较低层的程 序传递控制信息。程序执行结束将向较高层 的父程序返回。 这种程序模型仅应用于顺序系统。 该模型可以在模块层使用,以控制函数或对 象。
34
控制的Call-Return模型
Main Program
Routine Routine Routine
1
2
3
Routine Routine
6
4) 控制构件: 管理其它构件运行的时间、时 机及次序。例如,调度器、同步器等。
5) 链接构件: 在实体之间传递信息。例如, 通信机制、用户界面等。
1.5 构件之间的连接方式
1) 过程调用: 在某一特定执行路径中传递执行 指针。如普通过程调用、远程过程调用。
2) 数据流: 相互独立的处理通过数据流进行交 互,在得到数据的同时被赋予控制权限。 如 UNIX 系统中的管道。
软件体系结构

软件体系结构在软件开发过程中,软件体系结构是一个至关重要的概念。
软件体系结构是指软件系统中的各个组件、模块和它们之间的关系。
一个优秀的软件体系结构可以提高软件系统的可维护性、可扩展性和可重用性,同时也有利于降低开发成本和提高软件质量。
软件体系结构的定义软件体系结构是指软件系统中各个部分相互之间的组织方式。
它包括软件系统中的组件、组件之间的关系,以及这些组件和关系在整体上所形成的结构。
软件体系结构描述了软件系统的整体结构,以及各个组件之间的相互作用。
软件体系结构的重要性软件体系结构在软件开发过程中起着至关重要的作用。
一个良好的软件体系结构可以帮助开发人员更好地理解软件系统的结构和设计,从而更容易进行软件开发、测试、部署和维护。
此外,良好的软件体系结构还可以提高软件系统的性能、可靠性和安全性,降低软件开发和维护的成本。
软件体系结构的组成一个软件系统的体系结构通常由以下几个组成部分组成:1.组件(Components):软件系统中的各个部分。
2.接口(Interfaces):组件之间进行通信和交互的方式。
3.关系(Relationships):描述组件之间的依赖关系,如依赖、引用、调用等。
4.约束(Constraints):对组件之间交互的限制条件。
5.配置(Configurations):软件系统中各个组件的布局和部署方式。
软件体系结构的类型软件体系结构可以分为多种类型,常见的软件体系结构包括:•分层体系结构:软件系统按层次结构组织,每一层负责不同的功能。
•客户端-服务器体系结构:软件系统分为客户端和服务器,客户端负责用户界面,服务器负责处理业务逻辑。
•面向服务的体系结构:软件系统以服务为中心,各个组件之间通过服务进行通信和交互。
•事件驱动体系结构:软件系统通过事件进行通信和控制。
•管道和过滤器体系结构:软件系统通过一系列过滤器进行数据处理。
软件体系结构的设计原则在设计软件体系结构时,需要遵循一些设计原则,以确保软件系统的质量和可维护性:1.模块化:将软件系统划分为多个独立的模块,每个模块负责一个特定的功能。
软件体系结构

1.2软件体系结构研究的内容和范畴
• 体系结构风格、设计模式和应用框架的概念是从不同的目的和出发点讨论
软件体系结构,它们之间的概念经常互相借鉴和引用。
1.3体系结构设计原则
• 抽象
• 分而治之
• 封装和信息隐藏
• 模块化
• 高内聚和低耦合
• 关注点分离
• 策略和实现的分离
• 接口和实现的分离
1.3体系结构设计原则
Filter将文件分离为音频流和视频流,AVI解码Filter对视频流进行解码并送往Video表现Filter,
由后者将各帧在显示器上显示,默认的DirectSound设备用DirectSound将音频流输
出。。
1.1what is SA ?
• 其次,体系结构的描述的作用好像一个框架,系
统属性在这个框架下进行扩充,并且,它在考察
设计出合适的体系结构。经验不丰富的设计师往往把注意力集中在“功能性
需求”而疏忽了“非功能性需求”,殊不知后者恰恰是最能体现设计水平的
地方。
高水平的设计师高就高在“设计出恰好满足客户需求的软件,并且使开
发方和客户方获取最大的利益,而不是不惜代价设计出最先进的软件。(以
设计住宅为例)…
对于软件系统而言,能够满足需求的设计方案可能有很多种,究竟该选
能力,新的、更大的、更复杂的问题又摆在人们的面前。
1.1what is SA ?
• 这种全局结构的设计和规划问题包括 全局组织
结构;全局控制结构;通信和同步以及数据存取
协议;规定设计元素的功能;设计元素的组合;
物理分布;规模和性能;演化的维度;设计方案
的选择等。
• 1随着软件系统的规模和复杂性不断增加,系统
软件体系结构风格综述

LOGO
数据抽象和面向对象组织
对象A
对象B
优点:对象对它的客 户隐藏了自己的表示, 所以对象可以不影响 这些客户就改变其实 现方法
对象C
缺点:对象之间的交互 必须知道对方的标识,增 强了对象之间的依赖关 系,降低了独立性。而且 一旦一个对象身份改变 , 则必须修改所有与之相 关的对象,进而可能带来 副作用问题。
LOGO
参考文献
[1]GARLAN D ,SHAW M. An Introduction to Software Architecture[R] . CMU-CS94-166 ,1994. [2]Liliana Dobrica and Eilaniemela. A Survey on Software Architecture Analysis Methods[J]. IEEE Transactions on Software Engineering,2002, 28(7):638- 653. [3]SHAW M, CLEMENTS P . A field guide to boxology : preliminary classification of architectural styles for software systems[C]//Proc of the 21st International Computer Software and Applications Conference . Washington DC: IEEE Computer Society , 1997: 6-13. [4]ABOWD G, ALLEN R, GARLAN D. Using style to understand descriptions of software architecture[J] .Software Engineering Notes , 1993 , 18(5) : 9-20 . [5]PERRY D E, WOLF A L . Foundations for the study of software architecture[J] . ACM SIGSOFT Software Engineering Notes ,1992, 17(4) : 40-52 . [6]李树澍.软件体系结构风格综述[J]. 安庆师范学院学报, 2006,12(4):1-4. [7]何炎祥,黄浩,石莉,张戈,李超. 软件体系结构中五种常见风格的剖析[J]. 计算机工 程,2000,26(10):30-32. [8]张广泉. 软件体系结构: 概念、风格与描述语言[J]. 重庆师范学院学 报,2000,17(3):1-5. [9]毛斐巧,齐德昱. 软件体系结构风格研究现状及存在的问题[J]. 计算机应用研 究,2008,25(8):2270-2273.
软件体系结构描述

精选ppt
9
第一章 软件体系结构概论 1.4 体系结构的应用现状
◇ 软件体系结构的应用现状
◎ 软件体系结构描述语言
ADL(体系结构描述语言)提供了具体的语法与刻 画体系结构的概念框架。ADL使得系统开发者能够很好 地描述他们设计的体系结构,以便与他人交流,能够用 提供的工具对许多实例进行分析。
对于ADL现在也是无统一认识。书上第四章有介绍。
◎ IEEE P1471详细介绍了一套体系结构描述的概念框 架,并给出建立框架的思路。但如何描述以及具体的描 述技术等方面缺乏更进一描述
◇ Rational
4.2 软件体系结构描述框架标准
◎ Rational起草了可重用的软件资产规格说明,专门讨论了体系 结构描述的规格说明,提出了一套易于重用的体系结构描述规范。 该建议草案已经提交OMG。
◎ 这种表达和描述方式虽然也是较好的一种以构件为单位的软件 系统描述方法,但是他们所面向和针对的系统元素仍然是一些层 次较低的以程序设计为基础的通信协作软件实体单元,而且这些 语言所描述和表达的系统一般而言都是面向特定应用的特殊系统, 这些特性使得基于软构件的系统描述仍然不是十分适合软件体系 结构的描述和表达。
精选ppt
12
第四章 软件体系结构描述
4.3 软件体系结构描述语言
ADL是在底层语义模型的支持下,为软件系统的概念体系结构 建模提供了具体语法和概念框架。基于底层语义的工具为体系结构 的表示、分析、演化、细化、设计过程等提供支持。其三个基本元 素是:构件、连接件、体系结构配置。
主要的体系结构描述语言有 Aesop、 MetaH 、C2、 Rapide 、 SADL、Unicon和Wright等,尽管它们都描述软件体系结构,却有 不同的特点。
软件体系结构

1、MVC(模型-视图-控制):针对用户界面 模型:核心数据封装、逻辑和功能的计算,它独立于具体的界面表达和输入/输出操作。 视图:把模型数据等信息以特定形式展示给用户。 控制:处理用户与软件的交互操作。它接受用户的输入,将输入反馈给模型,进而实现对模 型的计算控制,是使模型和视图协调工作的部件。
2、软件重用的定义 软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。 可重用软件元素越大,重用粒度越大。
7、基于事件的隐式调用的定义 基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事 件。系统中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调 用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一个模块中过程的调用。
8、基于事件的隐式调用的优缺点 优点: (1)为软件重用提供了强大的支持。 (2)为系统带来了方便。
end Attendห้องสมุดไป่ตู้e;
16、C2 对体系结构的描述 architecture MeetingScheduler is
conceptual_components Attendee;ImportantAttendee;MeetingInitiator;
connector connector MainConn is message_filter no_filtering; connector AttConn is message_filter no filtering; connector ImportantAttConn is message_filter no filtering;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
① 设计内容分层/分块组织,
形成纵向(分层)和横向(分块)的功能分割体系; 纵向体现层间关联,横向体现层内功能 ② 层间信息交换需要以接口/协议的形式进行 接口:功能互操作和数据互交换的调用服务与连接机制
协议:通信体在连接交互过程中应共同遵守的规约
2. 结构组成:基于“调用—返回”原理和接口互连机制
④ 把代码变化的影响限制在本层内
缺点: ① 可维护性较差(改变结构或行为时,会引起连锁效应) ② 数据通信效率较低(可能存在多层次的数据传送) ③ 层次间的功能冗余会增加系统运行的开销
④ 找出正确的层次划分及结构关系并非易事
2.3.2 层次结构的应用实例
1. 层次模型的设计过程
① 定义设计目标:设计对象(S,A),分层标准,模型层数 ② 层内功能描述:层次命名,功能/任务描述, 方法(面向过程,面向对象) ③层次接口定义:黑盒原则,灰盒原则,白盒原则
拉式机制:低层
高层
通知-回调方法
层次结构中应避免拉式机制(强依赖)
讨论3:层次结构的变异
① 松弛型:层间约束条件放松,允许跨层次的交互通信;
每一层可使用所有下层的服务,而不限于相邻层 优缺点:提高了服务的灵活性;牺牲了软件的可维护性 适用场合:可用于系统软件(少修改,对性能要求高) 不宜用于应用软件(应用多变,对可维护性要求高)
② LAN构成:设备互连,数据流传输;Bridge接口
③ LAN互连:路由选择,拥塞(流量)控制;Router接口 ④ WAN通信:网间数据传输,可靠性/安全性控制 ⑤ 数据通信:会话连接,交互管理,同步控制 ⑥ 公共表示:数据交换/通信服务的公共表示方法
⑦ Internet服务:网络/设备管理,应用服务;Gateway接口
② 层次结构的正确画法
3. 技术特征
分层/分块+调用/返回+接口/协议 ① 结构分层/层内分块:层间工作过程遵循调用/返回原理 层间耦合采用接口/协议机制 层内功能实现为基于虚拟机的抽象基(接口/实现程序)
结构优化:可引入客户/服务计算逻辑(集中式系统)
甚至引入客户/代理/服务计算逻辑(分布式系统)
② 继承型:面向对象系统中的分类结构;
超类使用子类提供的服务,子类继承超类固有的属性 优缺点:高层可根据需要改写低层提供的服务; 超类/子类的依赖关系影响了结构的可修改性 适用场合:面向对象的软件设计
4. 优缺点评价
优点: ① 支持层次抽象过程的渐进式设计 ② 支持基于接口的系统功能扩充 ③ 提供层次独立性级别的可重用环境
(3) 接口与协议:OSI/RM与Internet协议集见下图
② 调用/返回关系:
自顶向下的调用:把高层请求映射成低层的基本操作
例如,层 K 把层 K+1 发出的请求, 转换成对层 K-1 层的多个请求 自底向上的返回:把低层处理结果发送给高层(提供服务) 并释放控制权
③ 部件功能:作为一个虚拟机,屏蔽掉低层的处理细节,
但不一定采用解释执行和状态模拟工作方式; 提供过程调用操作;为高层提供连接服务 ④ 连接功能:以协议形式,定义部件间的交互/合成规则 ⑤ 语义约束:每一层至多和相邻的上下层存在交互关系,
④层间协议说明:采用的协议格式,
层间的调用—返回限制,出错处理 ⑤ 确定邻层通信:推模型(高 → 低的调用请求) 拉模型(避免依赖,引入回调) ⑥ 设计优化:高层—服务综合化,低层—服务原子化;
层间耦合弱化;错误处理
2. ISO/OSI参考模型(层次模型的精华)
网络体系结构参考模型分析:层次,服务,接口,协议 (1) 层次划分:7个功能层次 (2) 服务功能—应用设计目标定位 ① 设备连接:介质连接,位流传输;Modem接口
一般不可跨层次进行数据通信
讨论1:一般通信协议的组成
语义部分:决定交互双方的对话类型 语法部分:决定交互双方的对话格式 交换规则:决定交互双方的应答关系 关联:构件协议
协议∷=(协议名,状态表,身份认证表)
状态表∷={状态,转换,映射方法} 身份认证表∷={身份标识,描述信息} 讨论2:层次结构中的 Push/Pull机制 推式机制:高层 低层 请求-调用方法
区别:参数连接,事件连接,操作链连接 每一层作为一个抽象基体,包括三部分: ① 构成系统的部件(一个虚拟机的实现:过程调用) ② 部件间的连接(接口说明,上下文约定,合成规则)
③ 行为操作的语义约束(层间交互/层内的限制条件)
讨论1:层次模型设计的核心理念
(1) 层次:模型复杂度的纵向分割 可分解可重叠的分块单元的迭放次序 关联 粒度:可封装可重用的独立分块的大小程度
(2) 功能:模型复杂度的横向分割;单层部件内部所提供的服务
(3) 接口:层间数据交换的连接机制
层内功能抽象的封装机制 避免层间共享合)
(4) 协议:接口语境即上下文(context)描述(状态/转换集) 接口与实现之间调用服务应遵守的顺序性等限定
讨论2:① 层次模型的复杂性:层间接口/协议
第 4 讲:层次体系结构 2.3 层次体系结构 2.3.1 层次结构组成原理
1. 设计思想
2. 结构组成 3. 技术特征 4. 优缺点评价 2.3.2 层次结构的应用实例
1. 层次模型的设计过程
2. ISO/OSI参考模型
2.3 层次体系结构
学科关联:计算机网络,操作系统,数据库,工作流参考模型
层次结构:是一种基本的体系结构设计风格; 也是一种普遍适用的软件设计方法与通用抽象原则 2.3.1 层次结构组成原理 1. 设计思想:问题抽象层次化,层间交互接口化