软件工程软件体系结构
第四章
软件设计
主要内容: 主要内容: 软件体系结构的概念 软件设计思想 结构化设计方法 面向对象设计方法
讨论要点
(1)什么是软件结构? (1)什么是软件结构? 什么是软件结构 (2)如何建立设计模型? (2)如何建立设计模型? 如何建立设计模型
软件设计的目标和目的 软件需求:解决“做什么” 软件需求:解决“做什么” 软件设计:解决“怎么做” 软件设计:解决“怎么做” 软件设计的任务 问题结构(软件需求) 问题结构(软件需求) 软件结构 从软件需求规格说明书出发, 从软件需求规格说明书出发,形成软 件的具体设计方案。 件的具体设计方案。 映射
表示层 功能层 数据层 三层明确分割, 三层明确分割 逻辑上独立
应用分层
瘦客户机和胖客户机
客户机 “胖” 胖 客户机 显 示 逻 辑 应用 处理 逻辑 表示 数据 管理 逻辑 服务器
数据库
客户机 “瘦” 瘦 客户机 显 示 逻 辑 表示 应用处理 应用 处理 逻辑
服务器 数据 管理 逻辑
数据库
客 户 机 服 务 器 服 务 器
SISD单指令流单数据流计算机 单指令流单数据流计算机
计算机硬件体系结构分类 处理1 处理1 控制 指令 处理2 处理2 …… 处理n 处理n 数据n 数据 数据1 数据 数据2 数据 存储1 存储1 存储2 存储2 …… 存储n 存储n
SIMD单指令流多数据流计算机 单指令流多数据流计算机
计算机硬件体系结构分类
三层C/S的基本硬件结构 的基本硬件结构 三层 表示层 表示层
表示层 功能层
功能层 数据层 功能层 数据层
(1)将数据层和 (1)将数据层和 功能层放在 一台服务器上 (2)将数据层和 (2)将数据层和 功能层放在 不同服务器上 (3)将功能层放 (3)将功能层放 在客户机上
数据层
将三层功能装载到硬件的三种基本方法
层次模型的结构关系
客户 使用 层N 层N-1 抽象的最高层
层1
抽象的最低层
2. 软件设计的问题
•工具 •方法
— 如何描述软件的总体结构 — 用什么方法有问题结构导出 软件结构 — 什么样的软件结构是 “最优的” 最优的”
•评估准则
•公认的、被多次使用的系统结构被称为结 公认的、被多次使用的系统结构 系统结构被称为结
根本革命的水平? 根本革命的水平?
广泛提及的体系结构风格: 广泛提及的体系结构风格:
管道和过滤器 (Pipe and Filters) ) 数据抽象或对象(Data Abstraction and Object Orientted) ) 隐式调用/消息(Event-Based/Implicit Invocation) 隐式调用/ ) 层次( 层次(Layered System) ) 仓库( 仓库(Repositories) ) 解释器( 解释器(Interpreters) ) 过程控制( 过程控制(Process Control) ) 分布式系统( 分布式系统(Distributed System) ) 客户/服务器( 客户/服务器(Client/Server) ) 主程序/子程序( 主程序/子程序(Main/Sub Programs) ) 状态转换( 状态转换(State Transition) ) 专用领域( 专用领域(Domain Specific Styles) )
指令1 指令 指令2 指令
指令1 处理1 数据 指令 处理1 数据1 控制1 控制1
存储1 存储1 存储2 存储2 ……
控制2 控制2 ……
指令2 指令
处理2 处理2 ……
数据2 数据
指令n 指令
控制n 控制n
指令n 指令
处理n 处理n
数据n 数据
存储n 存储n
MIMD多指令流多数据流计算机 多指令流多数据流计算机
与软件体系结构有关的研究: 与软件体系结构有关的研究:
• 体系结构风格(Architecture Styles) 体系结构风格(Architecture
表示软件系统的一种特别的基本结构, 表示软件系统的一种特别的基本结构,以及相 关的构造方法
• 设计模式(Design Patterns) 设计模式(Design
应用系统 工作流 应用集成平台 B2B集成平台 集成平台 以有应用系统 中间件基础设施 J2EE/CORBA/COM+传统中间件 传统中间件 操作系统 网络平台 数据库
面向电子商务的应用体系结构图
分布式对象体系结构
• 基本系统组件是对象,提供一组服务,对外给出 基本系统组件是对象,提供一组服务,
软件的总体结构主要回答的问题
•软件的组成部分 •软件的层次关系 •模块的内部处理逻辑 •模块之间的界面
软件体系结构
软件体系结构包括两部分: 软件体系结构包括两部分: (1)过程构件 模块) 过程构件( (1)过程构件(模块)的层次结构 (2)数据构件 (2)数据构件
§4.1
软件体系结构
• 软件体系结构的有关概念 • 软件体系结构的层次性 • 软件体系结构的设计原理
软件的构成
• 软件体系结构需要基础 • 软件体系结构需要层次 • 软件体系结构需要模式
软件的物质基础
软件设计的物质基础是计算 机硬件, 机硬件,当前的计算机硬件决定 了软件设计和实现的出发点, 了软件设计和实现的出发点,计 算机硬件的发展影响着软件体系 结构。 结构。
计算机硬件体系结构分类
指令 控制 指令 处理 数据 存储
构风格、设计模式、 设计)框架。 构风格、设计模式、(设计)框架。
•如果说一门工程技术的成熟表现在其基本
设计构件的提出和系统化, 设计构件的提出和系统化,那么体系结构 的风格、模式、框架就是软件工程中的基 的风格、模式、框架就是软件工程中的基 本构件。 本构件。
•体系结构概念能否成熟到使软件设计发生
服务的接口 • 对象之间不存在客户机与服务器的界限,接受服 对象之间不存在客户机与服务器的界限, 务者扮演客户机角色, 务者扮演客户机角色,提供服务者就是服务器 • 对象可能分布在网络的多台计算机上,通过中间 对象可能分布在网络的多台计算机上, 件相互通信 o1 o2 o3 o4 S(o1) S(o2) S(o3) S(o4)
指令1 指令 指令2 指令
指令1 处理1 指令 处理1 控制1 控制1
数据
存储1 存储1 存储2 存储2 ……
控制2 控制2 ……
指令2 指令
处理2 处理2 …… 数据
指令n 指令
控制n 控制n
指令n 指令
处理n 处理n
存储n 存储n
MISD多指令流单数据流计算机 多指令流单数据流计算机
计算机硬件体系结构分类
中间件) 软件总线 (中间件)
o5 S(o5) o6 S(o6)
OMG体系结构和服务参考模型 体系结构和服务参考模型
与特定非标准化应 用系统有关的对象 与特定纵向领 域有关的对象 横向工具对象
应用系统接口
领域接口
CORBA工具接口 工具接口
CORBA对象请求代理(ORB) 对象请求代理( 对象请求代理 ) CORBA服务接口 服务接口
软件设计思想
•强调信息隐蔽的单元概念 •应用基于操作和数据封装构成的单元设计
技术 •应用专门的机制可靠地处理并发控制和分 布系统问题
•提出基于模型的系统结构和设计方法 •明确提出软件体系结构的设计思想
什么是软件体系结构
•
软件体系结构定义了软件局部和 总体计算部件的构成, 总体计算部件的构成,以及这些部件之 间的相互作用关系。 间的相互作用关系。
多处理机系统
控制 处理 MAP
…… …… ……
互连网络
控制 处理 MAP 通道
……
通道 存储
……
I/O
I/O
存储
……
具有共享存储结构的多处连网络
…… …… ……
控制 处理 存储 MAP I/O
具有分布存储结构的多处理机
分布计算系统
电信网络
网络
交换机
交换机
部件 连接器 配置 运行限制 模块 新模块分割 运行实体 变化成运行实体 源代码
模块视图
新模块分割
运 行 视 图
代码视图
硬 件 和 操 作 系 统 体 系 结 构
软件的层次结构模型
• 计算机网络的体系结构 • 计算机操作系统的体系结构
软件体系结构的层次结构模型
第6层:应用层 第5层:系统结构模式层层 第4层:资源和管理调度层 第3层:基础控制描述层 第2层:软化的硬件层 第1层:计算机硬件层
构造型模式、结构型模式、 构造型模式、结构型模式、行为型模式
• 框架(Framework) 框架(Framework)
另一种研究和构造软件体系结构的方法, 另一种研究和构造软件体系结构的方法,更多 的是关于应用领域问题的已建立的系统结构。 的是关于应用领域问题的已建立的系统结构。
软件体系结构的层次结构 • 软件的构成 • 软件的物质基础 • 软件的结构基础 • 软件的层次结构模型 • 软件体系结构的层次结构模型 • 软件体系结构的体系
客户机/ 客户机/服务器体系结构
应用系统的组成: 应用系统的组成: •显示逻辑部分 表示层 实现与用户交互 显示逻辑部分(表示层 表示层):实现与用户交互 •应用处理部分 功能层 进行具体运算和数据处理 应用处理部分(功能层 功能层):进行具体运算和数据处理 •数据管理部分 数据层 对数据库中数据进行查询、 数据管理部分(数据层 对数据库中数据进行查询、 数据层):对数据库中数据进行查询 修改、 修改、更新等任务
•
普通部件及其支持的相互作用
序 号 1 2 3 4 5 6 7 部件类型 模块(Module) 模块 对象(Object) 对象 过滤器(Filter) 过滤器 部件支持的相互作用类型