917876-软件工程-实验-第7章软件体系结构设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/9/17
国防科技大学计算机学院
2
第七章 软件体系结构设计
➢ 软件体系结构(architecture,也称“架构”)从 高层抽象的角度刻画组成目标软件系统的设计元素 (包括子系统、构件及类)以及它们之间的逻辑关 联。
➢ 在一个设计模型中可以存在一系列抽象级别不同的 体系结构模型。
➢ 抽象级别愈低,模型中子系统或构件的粒度越小, 软件实现的细节越多。
➢ 图7.1描绘了课程注册管理系统的高层软件结构。
➢ 结合此图依次介绍包图的相关概念、语言机制和布局规则。
2020/9/17
国防科技大学计算机学院
18

7.1
包 图 示 例
2020/9/17
Web服务层 面向教务管理的控制包
面向学生的控制包
安全服务包
面向教务管理的视图包
面向学生的视图包
应用服务层
公共视图包 业务服务请求
传感数据上报
2020/9/17
国防科技大学计算机学院
10
何谓体系结构
➢ 物理设备接口层应核心层的要求向传感器、报警器、 报警电话等物理设备发送必要的控制指令,也负责接 收来自传感器的监测数据。
➢ 图7.12所示的软件体系结构涉及的约束:
(1)位于较高层次的软件元素可以向低层元素发出服 务请求,低层元素完成计算后向高层元素发送服务应 答,反之不行;
求推导体系结构,如何确保体系结构满足软件需 求,尤其是非功能需求? ➢ 是否存在指导软件体系结构设计的过程及方法学?
2020/9/17
国防科技大学计算机学院
6
软件体系结构设计
➢ 本章试图回答上述问题。
➢ 7.1节描述与软件体系结构和体系结构设计有关的 基本概念
➢ 7.2节介绍为表示体系结构需要采用的UML包图、 构件图和部署图
2020/9/17
国防科技大学计算机学院
20
包及包间依赖
➢ ⑷作为访问控制的基本手段。 ➢ 可以将包视为名字空间,其中的每个模型元素可以
通过在其(简单)名称之前拼接包名,构成全系统 范围内的唯一的限定名(qualified name)来指 称它,正如在文件系统中以文件的全路径名来唯一 地指称一个文件。 ➢ 如,包p1的子包p11中的类class1的限定名为 p1.p11.class1。 ➢ UML以包为基准确立了可见性规则: ➢ 包中可见性定义为public的元素可以在模型的任何 地方被引用; ➢ 包中可见性定义为private的元素仅在该元素所在 的(最内层)包中可见,其他地方不能引用。
课表管理
选课计划管理
国防科技大学计算机学院
面向教师的控制包
面向教师的视图包 业务服务应答
课程管理
19
(一) 包及包间依赖
➢ 可以从四种不同角度来理解包的概念: ➢ ⑴作为软件模型的组织单元。对于一个大型的软件系统,
前述每一种UML模型图都可能非常庞大、复杂。此时, 就有必要将系统划分成不同的包,在每个包中构建各类 模型图。 ➢ ⑵作为模型管理的基本单元。只要包的分划合理,就可 以以包为单位分派软件开发任务、安排计划。与此同时, 在配置管理(包括版本控制)活动中,包是天然的基本 处理单元。 ➢ ⑶作为系统高层结构中的组成元素。在4.1.4小节曾谈 及,类图适于展示面向对象软件系统的静态结构。但是, 对于大型系统而言,类的粒度太小,类图过于细节化, 难以宏观地展现系统的高层结构。因此,对于大型软件 而言,可以逐级细分的包才是软件高层结构中恰当的组 成元素。这一结论可延伸至大型业务系统和软件需求的 顶层结构描述。
➢ 包在模型管理过程中是配置管理的基本单元,同时也为访 问控制提供基本手段。
➢ 在整个软件开发过程中,包图用于以结构化、层次化的方 式组织、管理大型的软件模型,使得分别处理不同包的开 发团队之间的相互干扰程度降至最低;在业务分析和需求 定义阶段,包图可用于刻画业务系统和用户需求的结构;
➢ 在设计和实现阶段,包图可用于描述软件系统的高层结构。
➢ 当然,也可以视具体项目的情况省略除逻辑视 图以外的其他体系结构视图。
2020/9/17
国防科技大学计算机学院
16
7.2 体系结构的表示
➢ 用于表示体系结构的逻辑视图的UML图形机制主要 是包图和构件图,有时还辅以类图;
➢ 开发视图的表示可能会用到包图;
➢ 物理视图显然应表示为部署图;
➢ 因为运行视图涉及到并发、同步以及软件运行过程 中的瞬时快照,所以它应表示为活动图与对象图;
国防科技大学计算机学院
4
软件体系结构设计
➢ 今天软件日益庞大复杂、交付时间日益紧迫、 详细设计和软件实现技术日益成熟,体系结构 设计已经成为软件质量的瓶颈。
➢ 与详细设计相比,体系结构设计对性能、灵活 性、可修改性、可扩充性等质量需求的影响是 全局性的、决定性的。
➢ 一旦启动基于体系结构的详细设计,对体系结 构进行调优的代价将远大于算法调优的代价。
2020/9/17
国防科技大学计算机学院
14
体系结构视图
➢ 物理视图:安装部署的物理机器及其网络连接, 逻辑视图及开发视图中模块或程序包的物理部 署位置。物理视图的示例见图7.20。
➢ 运行视图:软件运行时进程、线程的划分,它 们之间的并发与同步,瞬时快照——软件运行 过程中某个特定时刻活跃的对象及其协作关系, 以及它们与逻辑视图和开发视图之间的映射关 系。
户的界面输入并将其转换为内部事件传递给核心层。
2020/9/17
国防科技大学计算机学院
9
图7.12 家庭保安系统的体系结构雏形
用户界面层 输入键盘接口
显示面板接口(输入)
业务逻辑层 用户命令处理
命令
配置管理
日志管理
传感器监测
设备接口层 传感器接口
警报器接口
设备接口调用 报警电话接口
显示面板接口(输出)
➢ 详细设计只能实现、不能更改体系结构中规定的模块的对 外接口和外部行为;
➢ 软件体系结构必须为详细设计提供可操作的指导和充分的 约束。
2020/9/17
国防科技大学计算机学院
13
7.1.2 体系结构视图
➢ 针对大中型软件项目,软件系统的规模和复杂 性都会给体系结构设计造成许多困扰,任何从 单一视角出发的软件体系结构视图都难免片面 和遗漏。为全面认识软件体系结构、避免设计 遗漏,通常认为一个完整的软件体系结构应该 包含以下视
➢ 正如建筑的力学稳定结构设计、功能分区、楼 层设置等体系结构要素对建筑最终质量的影防科技大学计算机学院
5
软件体系结构设计
➢ 体系结构设计是从What(需求)迈向How(设 计)的第一步,选项很多,迷茫更多。
➢ 对系统进行模块划分时,怎样划分才合理? ➢ 在大型软件项目中,需求如此之多,如何基于需
➢ 自顶下向、逐步精化是一种广泛采用、行之有效的 设计原则
➢ 软件设计往往始于体系结构设计,其设计成果---软件体系结构----构成后续的详细设计和软件实现 的主要工作基础。
2020/9/17
国防科技大学计算机学院
3
软件体系结构设计
➢ 这好比建筑设计,建筑师开始仅考虑楼宇的位 置、朝向和外观,继而设计楼层内各房间的布 局,最后才会细化至房间内部的装饰设计。
➢ 体系结构设计的任务是,建立满足软件需求的 软件体系结构。
➢ 体系结构既要明确定义软件各子系统、构件、 关键类的职责划分及协作关系,也要描绘它们 在物理运行环境下的部署模型;
➢ 体系结构还必须针对软件系统全局性、基础性 的技术问题给出技术解决方案,这种方案构成 目标软件系统的技术基础设施。
2020/9/17
2020/9/17
国防科技大学计算机学院
21
包及包间依赖
➢ UML规定,任何一个模型元素,要么属于一个包, 要么属于其他模型元素。
➢ 如,类的属性和操作不直接属于包,它们属于其所 在的类。这样,模型元素之间的“属于”关系构成 严格的树形结构。
➢ 即便建模者不显式地定义包,UML缺省地认为所有 无明显归属的元素属于一个隐含的、匿名的顶层包, 它是“属于”关系树的根结点。
➢ 连接件表示组件之间的连接和交互关系 ➢ 约束表示组件中的元素应满足的条件,以及组件经由连接
件组装成更大模块时应满足的条件。 ➢ 如,图7.12所示的体系结构将家庭保安系统软件划分为界
面、核心和物理设备接口三个层次 ➢ 核心层负责存储所有业务数据并提供业务逻辑处理功能 ➢ 界面层负责向用户呈现家庭保安系统的操作界面,接收用
➢ 逻辑视图:体系结构中各软件模块的逻辑功能 划分(或曰职责分派),以及基于这种划分的 协作行为。逻辑视图的示例见图7.12。
➢ 开发视图:软件源代码的程序分包及目录结构, 采用的类库、中间件(见14.5.3节)或框架 (framework)[84],它们与逻辑视图中各模块 之间的映射关系。开发视图的示例见图7.19。
➢ 数据视图:持久数据的存储方案,数据传递、 备份、恢复、同步方案,与物理视图之间的映 射关系。
2020/9/17
国防科技大学计算机学院
15
体系结构视图
➢ 除以上5种标准的体系结构视图外,体系结构 设计师还可以根据具体项目的要求增添自定义 的体系结构视图。
➢ 如,如果安全性在当前项目中非常重要,可考 虑设置专门的安全视图以汇集其他视图中与安 全相关的要素,包括逻辑视图中的会话管理、 授权管理模块,开发视图中的第三方加密算法, 运行视图中的消息验证和转发,数据视图中的 数据访问安全控制策略、物理视图中的SSL安 全协议等。
(2)每个软件元素根据其职责位于最恰当的一个层次 当中,不可错置(如,核心层不能包含界面呈现和界 面输入接收职责,也不能直接与物理设备交互);
(3)每个层次都可替换,即,一个层次可以被能实现 同样对外服务接口的层次所替代。
2020/9/17
国防科技大学计算机学院
11
何谓体系结构
➢ 为进一步明确软件体系结构的概念,有必要讨论体系结构 与软件需求的关系、体系结构设计与详细设计的关系。
软件工程(第三版)
第七章 软件体系结构设计
齐治昌 谭庆平 宁洪 2012年8月
第七章 软件体系结构设计
7.1 软件体系结构的概念 7.2 体系结构的表示
包图、构件图、部署图、对象图
7.3 体系结构设计的过程 7.4 体系结构设计模式 7.5 概念设计 7.6 体系结构精化 7.7 基于构件的体系结构 7.8 体系结构验证
2020/9/17
国防科技大学计算机学院
12
何谓体系结构
➢ 算法设计指,问题求解过程的设计
➢ 类设计指,类的外部接口设计及类中部分关键方法的算法 设计
➢ 类间关系设计指,同一包(package)内若干类的职责划 分、静态关系及协作行为设计
➢ 数据模型设计指,持久数据在数据库中组织方式的设计。
➢ 详细设计是针对软件体系结构中某个未展开模块的局部设 计,必须遵循体系结构中规定的原则、接口及约束
➢ 前者直接而明晰:体系结构是以软件需求的实现为目标的 软件设计蓝图,软件需求是体系结构设计的基础和驱动因 素。
➢ 软件需求,尤其是非功能需求,对软件体系结构具有关键 性的塑形作用。
➢ 为厘清体系结构设计与详细设计的区别,必须明确定义详 细设计的范畴
➢ 详细设计包括: 算法设计、类及类间关系设计、数据模型设计。
➢ 7.3节讨论体系结构设计的过程模型
➢ 7.4节概述软件工程学术界和产业界关于体系结构 设计的经验结晶——体系结构模式。
➢ 最后,依次探讨体系结构设计三大主要活动(概 念设计、体系结构精化和体系结构验证)涉及的 过程、技术和方法。
2020/9/17
国防科技大学计算机学院
7
7.1 软件体系结构的概念
本节介绍: ➢ 什么是软件体系结构 ➢ 体系结构与需求 ➢ 体系结构设计与详细设计的关系 ➢ 从多种视角探讨软件体系结构的不同表现形式 ➢ 这些内容将为本章后续部分奠定概念基础。
2020/9/17
国防科技大学计算机学院
8
7.1.1 何谓体系结构
➢ 软件体系结构包括三大要素: 组件(component) 连接件(connector) 约束(constraints)
➢ 数据视图一般表示为类图或者实体-关系图,但前者 的表达能力完全涵盖后者,所以本书不准备介绍实 体-关系图。
➢ 对类图与活动图的介绍请分别参见4.1.4和4.1.5两 节。本节依次简介UML包图、构件图、部署图和对 象图。
2020/9/17
国防科技大学计算机学院
17
7.2.1 包图
➢ 包图刻画包之间的构成和依赖关系。其中,包是UML模 型的一种组织单元,它可以包含一组具有逻辑关联的 UML模型元素(例如用例、类等)、模型图(例如用例 图、类图、交互图、状态图、活动图等),以及其他的包。
相关文档
最新文档