软件体系结构-03-层次体系结构概述
层次体系结构概述
层次系统
在层次系统中,系统被分为若干个层次,每个层次由一些列构件组成
下层构件向上层构件提供服务,上层构件被看作是下层构件的客户端
层次系统的基本组成
- 构件:各层次内部包含的构件
- 连接件:层间的交互协议
- 拓扑结构:分层
- 拓扑约束:对相邻层间交互的约束
层次系统的特点
- 优点
- 支持基于抽象程度递增的系统设计,设计者可以把一个复杂的系统按递增的步骤进行分解
- 支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层
- 支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法
- 缺点
- 并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来
- 很难找到一个合适的,正确的层次抽象方法
分层模式
分层模式
某一层中的构件一般只与同一级别中的对等实体或较低级别中的构件交互
两种分层方法
- 严格分层
- 松散分层
严格分层
- 优点
- 修改简单
- 缺点
- 效率低
松散分层
允许构件与位于塔下面的任意层中的组件进行交互
- 优点
- 松散方法可以改变效率,因为系统不必将简单调用从一层转发到下一层
- 缺点
- 在层之间不提供相同的隔离级别,这使得在不影响较高层的情况下唤出较低层变得更困难
分层系统中的交互模式
分层系统中的两种交互模式
- 由上而下的交互模式
- 由下而上的交互模式
由上而下模式
- 外部实体与系统中的最高层交互
- 一个传入调用可能导致多个传出调用
- 可能会使用松散分层的方法
- 顶层服务的调用并不一定会到达(调用)所有层
由下而上模式
- 外部实体与系统中的最底层交互
- 客户端只能使用最底层的一组服务
二者区别
- 由上而下
- 较高层直接调用较低层
- 信息和控制通常被描述成请求
- 由下而上
- 较低层通过事件,回调和委派来与较高层通信
- 信息和控制被描述为通知
分层系统的几个例子
- DBMS的"三级模式-两层映像"
- ISO/OSI网络的分层模型
- 计算机操作系统的层次结构
- C/S
- B/S
- 信息系统的典型分层结构
分层设计的过程
分层设计的过程
- 定义抽象准则
- 松散耦合
- 只应与同一层及其下一层的构件存在依赖关系
- 易变性
- 通用性
- 定义抽象层数
- 层数越多,越须慎重:导致不必要的系统开销
- 层数太少:导致系统结构混乱不清
- 给每个层命名并指定他们的任务
- 设计层次内部的构件
- 定义接口与指定相邻层间的通信
- 自上而下
- 自下而上
- 双向模式
- 弱化相邻层之间的耦合
- 单项耦合:改变N层不需要考虑对N+1层的影响,只需保证N层的接口保持不变即可
- 设计错误处理策略
- 考虑如何处理错误
软件体系结构-03-层次体系结构概述相关推荐
- android平台体系结构的层次划分,Android复习
Q:简述Android平台体系结构的层次划分,并说明各个层次的作用. A:Android是基于Linux内核的软件平台和操作系统,采用了软件堆栈的架构,共分为4层:第一层Linux内核,提供有操作系统 ...
- HLS(一)Vivado高层次综合概述
目录 1.什么是FPGA? 1.1 简介 1.2 架构 1.3 FPGA并行方式与处理器对比 2.硬件设计基本概念 2.1 时钟频率 2.2 延迟 2.3 吞吐率 2.4 存储布局 3.高层次综合 3 ...
- 数据库系统内部体系结构与外部体系结构
数据库系统的内部和外部体系结构 (1)内部体系结构模式:概念视图,概念级数据库,整个数据库的实际存储的抽象.一个数据库只有一个模式. 外模式:子模式,用户模式,最外层,是模式的子集,可有多个,同一个外 ...
- 【宋红康 MySQL数据库】【03】SQL概述_常见的数据库对象
持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库][03]SQL概述_常见的数据库对象 SQL概述 什么是SQL SQL背景知识 SQL分类 DDL(Data Defini ...
- 【计算机体系结构】计算机体系结构(6) 并行处理技术(1) SIMD并行计算机、算法和互联网络
文章目录 6.1 并行处理技术的基本概念 6.2 `SIMD` 并行计算机(阵列处理机) 6.2.1 阵列机的基本结构 1. 分布式存储器的阵列机 2. 共享存储器的阵列机 6.2.2 阵列机的主要特 ...
- 各类软件马斯洛需求层次分析_需求的分析层次
各类软件马斯洛需求层次分析 When I joined Square, I was embedded on a product that had been in-market for a year b ...
- 计算机哈佛型体系结构,用于计算机体系结构教学哈佛体系结构模拟器.doc
用于计算机体系结构教学哈佛体系结构模拟器 用于计算机体系结构教学哈佛体系结构模拟器 摘要:已有的计算机体系结构教学模拟器主要是面向冯诺依曼体系结构.针对缺乏面向哈佛体系结构模拟器这一问题,本文提出并设 ...
- HTML/CSS学习笔记03【CSS概述、CSS选择器、CSS属性、CSS案例-注册页面】
w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...
- (134)FPGA面试题-介绍冯·诺依曼体系结构和哈佛体系结构
1.1 FPGA面试题-介绍冯·诺依曼体系结构和哈佛体系结构 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-介绍冯·诺依曼体系结构和哈佛体系结构: 5) ...
最新文章
- 除法取模(比赛常用)
- websocket ws 协议 简介
- 10分钟教你看懂mongodb的npm包
- python中nomodulenamed怎么解决_关于 python ImportError: No module named 的问题
- MySQL中文参考手册-- 常用查询的例子
- 数据库里账号的密码,这样存放最安全!
- 中文文本纠错 算例实现(有算例完整代码)
- 3模型大小_Github推荐一个国内牛人开发的超轻量级通用人脸检测模型
- access设置0字段为null是因为类型转换失败_Apache Pulsar 2.6.1 版本正式发布:2.6.0 加强版,新增 OAuth2 支持
- 请问我应该怎么做,才能让前端的基础打牢固?
- 计算机考试总时长,计算机等级考试时间|2013年计算机等级考试时长
- 自己对行业未来发展的认知_我们正在建立的认知未来
- TranslateAnimation详解
- 网刻教程,无光驱装系统
- Linux下C++轻量级Web服务器
- pc端常用电脑屏幕 媒体查询尺寸
- [Vue]@keyup.enter不起作用
- pythonocc_PythonOCC基础使用:点的性质(glsl定义)
- 国际化复数形式的支持与pygettext的补丁
- 综述:利用深度学习实现的虚拟试衣技术(基于图像)