演示文档-软件体系结构-第二章-软件体系结构风格-应用实例

合集下载

软件体系结构风格PPT课件

软件体系结构风格PPT课件
特点: 1.构件是模块,模块可以是过程也可以是事件的集
合。 2.连接件:往往是以过程之间的隐式调用(Implicit
Invocation)来实现的
.
15
例:观察者模式
public interface Subject { public void attach (Observer observer);
◎难以进行错误处理,管道/过滤器结构的固有特性,决定了 很难制定错误处理的一般性策略
.
9
实例: 传统的编译器是管道/过滤器体系结构风格的一个实例
源 程
词法分析

语法分析
语义分析
目 标 中间代码生成 中间代码优化 目标代码生成 程 序
.
10
面向对象风格
这种风格建立在数据抽象和面向对象的基础上, 数据的表示方法和它们的相应操作封装在一个抽象 数据类型或对象中。
体系结构风格最关键的四要素
◎ 提供一个词汇表
◎ 定义一套配置规则
◎ 定义一套语义解释原则
◎ 定义对基于这种风格的系统所进行的分析
.
4
体系结构的风格有哪些? 管道-过滤器风格 面向对象风格 事件驱动风格 分层风格 数据共享风格 解释器风格 反馈控制环风格
.
5
管道-过滤器风格
特点: 1.每个构件都有输入输出,构件完成对输入数据的处
软件体系结构风格
.
1
软件框架设计的核心问题是:能否复用已经成型的 体系结构方案
不同系统的设计方案存在着许多共性问题,把这些 共性部分抽取出来,就形成了具有代表性的和可广 泛接受的体系结构风格
.
2
体系结构风格
什么是软件体系结构风格? 软件体系结构风格是描述某一特定应用领域中系统组

体系结构 第2章 软件体系结构风格 ppt课件

体系结构 第2章 软件体系结构风格 ppt课件
C/S体系结构有三个主要组成部分:数据库 服务器、客户应用程序和网络。
体系结构 第2章 软件体系 结构风格
体系结构 第2章 软件体系 结构风格
服务器
✓ 数据库安全性的要求;
✓ 数据库访问并发性的控制;
✓ 数据库前端的客户应用程序的全局数据完整性规则;
✓ 数据库的备份和恢复。
体系结构 第2章 软件体系 结构风格
体系结构 第 2章 软件体 系结构风格 软件体系结构风格
刘 伟 (Sunny)
体系结构 第2章 软 件体系结构风格
定义 管道和过滤器 数据抽象和面向对象组织 基于事件的隐式调用 分层系统 仓库系统 过程控制环路 C/S风格 三层C/S风格 B/S风格
体系结构 第2章 软 件体系结构风格
实例:
✓ 编译器,功能程序,并行程序
体系结构 第2章 软件 体系结构风格
体系结构 第2章 软件体系 结构风格
数据的表示方法和它们的相应操作被封装在 一个抽象数据类型或对象中
这种风格的构件是对象或者说是抽象数据类 型的实例
对象通过函数和过程的调用来进行交互
体系结构 第2章 软件体系 结构风格
客户应用程序
✓ 提供用户与数据库交互的界面;
✓ 向数据库服务器提交用户请求并接收来自数据库服务器 的信息;
✓ 利用客户应用程序对存在于客户端的数据执行应用逻辑 要求
体系结构 第2章 软件体系 结构风格
体系结构 第2章 软件体系 结构风格
C/S体系结构具有强大的数据操作和事务处理能力, 模型 思想简单,易于人们理解和接受。
实例:数据库管理系统,用户界面
体系结构 第2章 软件 体系结构风格
输入
事件接收
事件处理
输出

体系结构PPT第2章软件体系结构风格

体系结构PPT第2章软件体系结构风格

B/S风格——体系结构
B/S风格——优点
基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。 用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真 正达到了“零客户端”的功能,很容易在运行时自动升级。
B/S体系结构还提供了异种机、异种网、异种应用服务器的联机、联 网、统一服务的最现实的开放性基础。
C/S风格——基本概念
C/S软件体系结构是基于资源不对
01
等,且为实现共享而提出来的,是
20世纪90年代成熟起来的技术,
C/S体系结构定义了工作站如何与
服务器相连,以实现数据和应用分
布到多个处理机上。
C/S体系结构有三个主要组成部分
02
:数据库服务器、客户应用程序和
网络。
C/S风格——体系结构
C/S风格——任务分配
B/S风格——缺点
01
B/S体系结构缺乏对动态 页面的支持能力,没有 集成有效的数据库处理 功能。
02
B/S体系结构的系统扩展 能力差,安全性难以控 制。
03
采用B/S体系结构的应用 系统,在数据查询等响 应速度上,要远远低于 C/S体系结构。
04ቤተ መጻሕፍቲ ባይዱ
B/S体系结构的数据提交 一般以页面为单位,数 据的动态交互性不强, 不利于在线事务处理 (OLTP)应用。
基于事件的隐式调用
输入
事件接收
事件处理
输出
反馈
分层系统
01
组织成一个层次结构
02
每一层都为上一层提供了相应的服务,并且接受下一层提供的服务
03
在分层系统的一些层次中构件实现了虚拟机的功能
04
实例:分层的通信协议
分层系统

软件体系结构 ppt课件

软件体系结构 ppt课件

图A 播放AVI文件的Graph Filter图
上图中每个模块分别代表了不同的Filter,媒体文件Filter从硬盘读取AVI文件,AVI分离 Filter将文件分离为音频流和视频流,AVI解码Filter对视频流进行解码并送往Video表现Filter, 由后者将各帧在显示器上显示,默认的 DirectSound 设备用DirectSound将音频流输 2019 10 出。。
6

2019
1概述-软件危机的原因
• 软件复杂度越来越高 • 软件不仅仅是在规模上快速地发展扩大,而且其复 杂性也急剧地增加。软件产品的特殊性和人类智力的 局限性,导致人们无力处理“复杂问题”。 所谓“复杂问题”的概念是相对的,一旦人们采用 先进的组织形式、开发方法和工具提高了软件开发效 率和能力,新的、更大的、更复杂的问题又摆在人们 的面前。
2019
-
3
1概述
• 它是一种简单的、清楚的、完善的方式 形成的
• 软件工程师需要一种更好的视角来理解 软件,并试图找到一种新的方法来构建 更复杂的大型软件系统 • SA (software architecture)
• 一个简单程序到复杂系统软件的距离是 十年
2019 4
1概述-需求开发的主要困难
软件体系结构
刘兴
2019
计算机学院软件工程系
1
软件体系结构内容
• • • • • • • 1概述 2软件体系结构风格 3案例研究 4软件体系结构的分析与评估(略) 5流行的软件体系结构 6设计模式与软件架构 7企业架构师和设计师、企业软件架构简介
2
2019
1概述
• • • • 我们要学的这个是什么玩意? 我们为什么要学这个玩意? 我们将来会怎么干? 其他人是怎么玩的?

演示文档软件体系结构第二章软件体系结构风格精品PPT课件

演示文档软件体系结构第二章软件体系结构风格精品PPT课件
当地约束于配置规则之中,并具有清晰的含义。
4.定义可以对基于这种风格建立的系统进行的分 析。如:Client/Server结构风格的实时处理过程的可调度性。
基本的软件体系结构风格
Garlan和Shaw对通用体系结构风格的分类:
•数据流风格:批处理序列;管道/过滤器; •过程/调用风格:主程序/子过程;面向对象;分层系统; •独立组件风格:进程通讯;基于事件驱动的系统(显式调用\隐式调用) •虚拟机风格:表格驱动的解释器(类似CPU);基于规则的系统(类似工业
件。系统中其它组件的过程在一个或多个事件中注册,当一个事件 被触发,系统自动调用在这个事件中注册的所有过程。这样,事件 的触发就可以隐式调用模块中的过程。
管道-过滤器
数据中心式
中央数据库:常见的数据库 应用系统
超文本系统: WWW 黑板
独立部件式
互通信进程:UNIX系统 事件系统(隐式调
用):Windows
显式调用
虚拟机式
解释器: JAVA虚拟机 基于规则的系统: 过程控
制系统
基本的软件体系结构风格
出发点:侧重于软件体系结构的结构模型,即观察软件部件、连
基本的软件体系结构风格
----管道/过滤器(pipes and filters)
计算过滤器
管道
计算过滤器
过滤器:对输入数据进行局部变换,并采用渐进式计算方法, 在未处理完所有输入数据以前,就可以产生部分计算结果, 并将其送到输出端口。
管道:各过滤器之间的连接器将一个过滤器的输出传到下一 过滤器的输入端。
Interpreter
Rule-based System
From Chapter 5, Software Architecture in Practice, p. 95

软件体系结构及应用课件

软件体系结构及应用课件
如果任务需要高度的灵活性与可配置性、松散耦合性,或者任务是被 动性的,那么考虑使用事件系统或C/S风格
– 如果任务的产生者与接收者之间不能预先绑定在一起,使用基于事件的风格 – 如果任务分为生产者与消费者,考虑C/S风格
• 如果追求客户端的计算效率,考虑胖客户端的C/S风格 • 如果客户端频繁发生变化,考虑瘦客户端的C/S风格(或B/S风格) • 如果服务器端的计算压力过大,考虑使用服务器的集群风格 • 如果无须中央服务器,使用点对点(P2P)风格
软件体系结构及应用
体系结构风格选择方 法
体系结构风格的选择
目前最常见的体系结构: 分层 +OO
我们已经学习过了十余种体系结构风格;
简单的判断某一个具体的应用应该采取何种体系结构是非常困难的, 需要借助于丰富的经验。
从目前的趋势来看:
– 管道-过滤器风格、批处理风格已经非常少见; – 过程控制风格、黑板结构、虚拟机风格往往针对具体的应用领域; – OO的思想已经融合在几乎所有的体系结构之中,而事件风格、层次化的思
4 构件-连接件划 分
SA风格选择需考虑的因素
体系结构风格的选择
技术因素:
性能因素:
– (1) 何种构件、连接件
– (2) 在运行时,构件之间的控制机制是如 何 被共享、分配和转移
– (3) 数据如何通讯
– (4) 数据与控制如何交互
–可修改性
• 算法的变化 • 数据表示方式的变 化 • 系统功能的可扩展 性
KWIC use case
体系结构风格的选择
Use
Use
r
r
Provides Input 提供输入
<uses>
Generate Circular Shift 产生循环移 位

《软件体系结构风格》课件

《软件体系结构风格》课件

应用领域:Web 应用程序、企业级 应用、移动应用等
优点:易于维护、 扩展性好、安全性 高
实践应用案例: Google、 Facebook、 Amazon等公司的 Web应用程序
分布式对象风格的实践应用
特点:松耦合、高内聚、可扩展性 应用场景:大型企业级应用、分布式系统 技术实现:RPC、SOAP、RESTful等 案例:亚马逊、谷歌、Facebook等公司的分布式系统
开发团队:考虑团 队的技术水平、经 验、技能等
技术趋势:考虑当 前和未来的技术发 展趋势,如云计算 、大数据、人工智 能等
成本预算:考虑开 发、维护、升级等 成本预算,选择合 适的体系结构风格
软件体系结构风格的适用场景
软件体系结构风格的优缺点分析
Part Five
软件体系结构风格 的实践应用
集中式风格的实践应用
软件体系结构风格是软件设计的重要组成部分,它直接影响到软件的可维护性、可扩 展性和可重用性。
软件体系结构风格分类
模块化风格:将系统划分 为多个模块,每个模块负 责特定的功能
分层风格:将系统划分为 多个层次,每个层次负责 特定的功能
管道与过滤器风格:将系 统划分为多个过滤器,每 个过滤器负责特定的功能
三层C/S风格
特点:客户端和服务器端分离,中间层负责数据传输和处理
优点:客户端和服务器端可以独立开发,便于维护和升级
缺点:中间层需要处理大量数据,可能导致性能瓶颈 应用场景:适用于需要大量数据处理和传输的场景,如银行、证券等金 融行业。
浏览器-服务器风格
特点:客户端和 服务器端分离, 客户端负责用户 界面,服务器端 负责数据处理和 存储
面向对象风格:将系统划 分为多个对象,每个对象 负责特定的功能

软件体系结构2软件体系结构风格与模式918409726

软件体系结构2软件体系结构风格与模式918409726

管道-过滤器风格
概述
在管道-过滤器风格下,每个功能模块都有一组输入和输出。功 能模块称作过滤器(filters);功能模块间的连接可以看作输 入、输出数据流之间的通路,所以称作管道(pipes)。
管道-过滤器风格的特性之一在于过滤器的相对独立性,即过滤 器独立完成自身功能,相互之间无需进行状态交互。
目前尚不完善 每个风格可以视为一组构件的集合,以及构件间的交互(连接
器)
构件(Components)+ 连接器(Connectors) E.g. C/S结构中
• 构件: Client, Server • 连接器: C/S间的通讯协议
软件体系结构的构建风格
风格分类: 1. 2. 3. 4. 5. 6. 7. 8.
课程编号:74100152
Software Architecture
软件体系结构(2) 软件体系结构的风格与模式
覃征 教授
THU SAGroup
建筑模式
Christopher Alexander, The Timeless Way of Building, p247, 1979
每个模式是一个由三部分组成的规则,表达了特定环境、问题 和解(solution)之间的关系。
12
管道-过滤器风格 实例
dir | more
THU SAGroup
13
管道-过滤器风格优点
设计者可以将整个系统的输入、输出特性简单的理解为 各个过滤器功能的合成。
设计人员将整个系统的输入输出行为理解为单个过滤器行为的 叠加与组合。这样可以将问题分解,化繁为简。将系统抽象成 一个“黑箱”,其输入是系统中第一个过滤器的输入管道,输 出是系统中最后一个过滤器的输出管道,而其内部各功能模块 的具体实现对用户完全透明。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• Key Word In Context:上下文关键字
• 上下文关键字索引系统 :
• 接收多个字符行line组成的有序序列 • 每个行包含一系列的词组word word • 每个词包含一系列的字母character
• 输入的每一行被“循环移位”(circular shifting)并复 制输出:
• 将每行的第一词从行首去掉 • 将它连接到行末
• 不用另外的存贮位置
• “字母排序”模块: 从Text array(原字符行首字符)和 Word index(移位后首字符)中读取数据, 创建一个按 7 字母排序的索引(一系列下标)
这一设计方案的效果
• 算法上的改变(灵活性):
• 可以轻微改变,因为数据结构已经限制了算法上可能的改变 • “你确定了数据结构,我就可以知道你的算法” – Fred Brooks的名言
• 是否很方便地进行改变,使系统实现交互性?
• 中等, 需要对“字母排序”部件单独进行修改
• 性能:
• 空间: 很好, 数据可以通过接口调用进行共享 • 时间: 很差,不可能实现并发
• 重用:
• 中等, 依赖于接口的定义
11
数据流风格
目标: 达到重用性(reuse)和可修改性(modifiability) Data-flow(数据库风格)
• 使用分层:
• 可以从更宏观、更全面的角度来进行系统全局的分 析和设计
17
10
这一设计方案的效果
• 算法上的改变:
• 容易实现, 数据访问是通过定义好的接口进行(可以不改变接口的情况下,改 变内部算法的实现) • 例如: “按字母排序” Alphabetizer部件可以实现这样的功能 如果我们在操作 过程中中断了KWIC的功能,可以在后面根据要求再次启动
• 在数据结构上的改变:
体系结构风格
• 一个体系结构风格包括:
• 一套 部件类型(component types) (例如,进程,处理过程) 它们在运行时完成特定的功能 • 一个显示部件间运行时关系拓扑结构 • 一套语义约束 (semantic constraints),例如,是什么是 • 一套连接(connectors) (例如,数据流,socket等) :它们是部 件之间通信的中介
• 输出是每个输入行及它们的各个循环移位的结果(按 字母顺序排列)
3
KWIC系统输入输出举例 系统输入输出举例
输入: bar sock car dog town fog 输出:
bar sock car dog dog car fog town sock bar town fog 四个步骤: Input Circular shift Alphabetize Output
• 数据结构上的改变(灵活性) :
• 很差, 因为部件间的接口已经定下了,就难以改变
• 附加属性的实现可能(可扩展性): • 是否很方便地进行改变,以实现对一些在行首的虚词,不进 行循环移位?
• 很好, 在系统中很容易增加新的过滤器
• 是否很方便地进行改变,使系统实现交互性?
• 很差, 没有状态记录, 无关实现诸如删除某些输入、中止后重新启动处理等 交互功能
• 中等, 需要对“字母排序”部件单独进行修改
• 性能:
• 空间: 性能很好, 因为数据是共享的 • 时间: 性能很差, 因为这种体系结构下无法进行并发(必须等所有输入在 “Input”部件都完成后,才可以进行后面的处理,如“循环移位”部件)
• 重用:
• 很差, 因为这个系统中每个部件都依赖我们所设计的特定数据结构
6
注意这里箭头 的含义(实线 、虚线)
• “输入”模块:读取字符行,并存放在 Text array(一个 一维字符数组)中, 并将每一行在Text array中的起始位 置(一个下标)作为原字符行索引记录下来 • “循环移位”模块: 对每一行,记录每个词的起始位置( 一个下标), 并将其作为移位后字符行的索引记录到 Word index中(一系列下标)
• 容易实现, 数据隐藏在接口的后面 • 例如: Line storage部件可以把数据存放在磁盘上,而不仅是内存中,这对其它 模块一点影响都没有
• 附加属性的实现可能(可扩展性): 这方面跟前一方案是一样的 • 是否很方便地进行改变,以实现对一些在行首的虚词,不进行循环移位 ?
• 中等, 需要对现有的部件进行修改
• 在连续的部件间进行数据的增量式传送/处理( 有一点数据就可以传送\处理)
• 过滤器转换数据时,不怎么考虑上下文,也不保存处 理状态 • 管理是无状态的(stateless),功能是在过滤器间转换 流数据(stream data) • 例如: 最典型的是数据加密系统、视频压缩/解压系 统(无状态,不考虑上下文)
Batch Sequential(批 处理序列) • 部件是独立程序 • 只有前一个部件完成了工作, 后一个才能开始工作 • 各个步骤间传递的数据是一个 整体(不可能只传送一部分) 经典的数据处理
12
Pipes and Filters管道-过滤器
管道-过滤器 管道-过滤器Pipe-Filter子风格 子风格
• 而对其它风格的部件,没有这种约束
9
• 对象:
• Line storage对象: 它的外部可见操作是读取或写入指 定位置的字符、词和行
• Circular shifter对象: 成员函数SHIFT(l,w,c)返回在 第l个移位中第w个词的第c个字符 • Alphabetizer对象: 成员函数iTH(i)在一个已按字 母顺序排列好的序列中返回第i行
• 用另外的内存进行存放 • 不另外存放(只保存循环移位所需的数据,例如每个词的)
• 附加特性:
• 是否对一些在行首的虚词,不进行循环移位? (例如“a”, “an”, “and”, 等). • 使系统变成一个交互式系统
• 例如: 允许删除某些输入,: 各个部件应该设计成一个多么独立的功能模块?
5
使用调用返回风格(Call-Return) 使用调用返回风格
• 目标: 使系统达到可修改modifiability 和可扩展scalability • 子风格:
• 主程序-子程序
• 程序的层次分解,每个子程序从其父部件获得控制权限
• 面向对象
• 下面是第一个体系结构设计方案:主 程序-子程序风格+共享数据方案
• 一个最常见的例子:分层面向对象(例如J2EE)
• 用分层风格来划分系统的层次 • 每一层内部,用面向对象来进行分析和设计 • 避免超大规模软件系统在分析和设计时形成“对象的海洋 ”
• 不使用分层:
• 可能造成分析、设计的复杂度导致分析、设计的错 误:同一时刻,只能考虑少数几个类,容易造成设 计时考虑不全面
• 体系结构风格提供了一套我们可以借鉴来 进行体系结构设计的框架
From Chapter 5, Software Architecture in Practice, p. 94
1
体系结构风格分类
Today Today
Next Time
2
体系结构设计案例: 体系结构设计案例 KWIC系统 系统
• KWIC
循环移位位置(??): 1 5 10 14 18 23 Alphabetize: 1 10 14 23 5 18
4
设计考虑
• 算法上的可能选项:我们可以执行“行移位”…
• 在每一行被读入后立即进行本行的移位 • 在所有行都被读入后才进行各行的移位 • 当执行“字母排序”的部件要求提供新的移位行时
• 数据表示上的可能选项:循环移位数据可以…
8
抽象数据类型/面向对象子风格方案 抽象数据类型 面向对象子风格方案
• 面向对象风格的系统可以较易达到可修改 性,因为对环境(其它对象)而言,对象内部秘 密被封装了起来
• 这样,修改一个对象的内部特征(属性、私有/保 护方法),不会影响其它类的代码
• 对对象的访问只能通过类方法 (一种受约束 的过程调用)
• 数据结构上的改变(灵活性) :
• 不可能, 因为Text Array等数据存储部件的结构已经对其它处理部件完全 可见
• 附加属性的实现可能(可扩展性): • 是否很方便地进行改变,以实现对一些在行首的虚词,不进行循环 移位?
• 中等, 需要对现有的部件进行修改
• 是否很方便地进行改变,使系统实现交互性?
14
基于管道-过滤器风格的 基于管道 过滤器风格的KWIC方案 过滤器风格的 方案
• 每个部件(过滤器)创建实现的文本,并传到下一个 部件
• 输入串序列;移位后的序列;按字母排序后的序列;输出
• 设计简单,易于理解
15
这一设计方案的效果
• 算法上的改变(灵活性):
• 很好, 因为部件间不需要有共享数据
• 过滤器之间没有共享数据,只通过管道传数据
• 管道的源端连接到过滤器的输出端口; 目的端连接到 过滤器的输入端口
13
管道-过滤器 管道-过滤器Pipe-Filter子风格 子风格
• 管道-过滤器系统不断地运行,直到再没有 数据要处理或传输
• 例如, 在Unix系统中遇到了EOF标志
+ 优点:简单,容易推理, 易于维护(易于修改和 升级), 易于重用(接入其它管道-过滤器系统 ), 易于通过并发和分布式处理来提高性能 - 缺点: 难于实现交互式系统, 过滤器难以集 合在一起去解决一个共同问题
• 性能:
• 空间: 很差,数据不共享,必须在各个过滤器之间不断复制 • 时间:
• 有可能好, 部件可以并发 • 有可能差, 复制数据需要大量时间
• 重用:
• 很好,唯一的限制是过滤器与管道间的接口 16
在体系结构设计中使用异种风格
• 异种:heterogeneity • 即在体系结构设计中使用了两种或以上的体系 结构风格
相关文档
最新文档