软件工程-实践者的研究方法讲义_第八章 体系结构设计.pdf_第1页
软件工程-实践者的研究方法讲义_第八章 体系结构设计.pdf_第2页
软件工程-实践者的研究方法讲义_第八章 体系结构设计.pdf_第3页
软件工程-实践者的研究方法讲义_第八章 体系结构设计.pdf_第4页
软件工程-实践者的研究方法讲义_第八章 体系结构设计.pdf_第5页
已阅读5页,还剩88页未读 继续免费阅读

软件工程-实践者的研究方法讲义_第八章 体系结构设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程 第8章 体系结构设计 主要内容 软件体系结构软件体系结构 体系结构类型体系结构类型 体系结构风格体系结构风格 体系结构设计体系结构设计 评估可选的体系结构设计评估可选的体系结构设计 使用数据流进行体系结构映射使用数据流进行体系结构映射 小结小结 进行体系结构设计 体系结构设计描述了建立计算机系统所需 的 体系结构设计描述了建立计算机系统所需 的数据结构数据结构和和程序构件程序构件 它需要考虑系统 采取的体系结构风格 系统组成构件的结 构 性质 以及所有体系结构构件之间的 相互关系 它需要考虑系统 采取的体系结构风格 系统组成构件的结 构 性质 以及所有体系结构构件之间的 相互关系 进行体系结构设计 尽管软件工程师能够设计数据和体系结 构 但是在建造大型复杂系统的时候 数 据和体系结构的设计往往由 尽管软件工程师能够设计数据和体系结 构 但是在建造大型复杂系统的时候 数 据和体系结构的设计往往由专家专家来完成 来完成 数据库或者数据仓库设计者数据库或者数据仓库设计者为系统创建数 据体系结构 为系统创建数 据体系结构 系统体系结构设计师系统体系结构设计师 为系 统工程和软件需求分析中导出的需求选择 合适的体系结构风格 为系 统工程和软件需求分析中导出的需求选择 合适的体系结构风格 进行体系结构设计 人们不能在没有图纸的情况下建房子 同样也不能通过勾画出房子的管道布局而 开始绘制房屋的蓝图 在开始考虑细节之 前 需要关注整体视图 人们不能在没有图纸的情况下建房子 同样也不能通过勾画出房子的管道布局而 开始绘制房屋的蓝图 在开始考虑细节之 前 需要关注整体视图 房子本身 这 就是体系结构设计需要做的事情 房子本身 这 就是体系结构设计需要做的事情 它为 你 它为 你提供整体的视图并保证得到正确的理解提供整体的视图并保证得到正确的理解 进行体系结构设计 体系结构设计体系结构设计始于数据设计始于数据设计 然后 然后导出系 统体系结构 导出系 统体系结构的一个或者多个表示 对可选 的体系结构风格或模式进行分析 以导出 最适合于客户需求和质量属性的结构 一 旦选定 使用体系结构设计方法对体系结 构进行精化 的一个或者多个表示 对可选 的体系结构风格或模式进行分析 以导出 最适合于客户需求和质量属性的结构 一 旦选定 使用体系结构设计方法对体系结 构进行精化 在体系结构设计过程中 将创建一个包括 在体系结构设计过程中 将创建一个包括 数据架构和程序结构的体系结构模型数据架构和程序结构的体系结构模型 此 外 还需描述 此 外 还需描述构件的性质以及交互关系构件的性质以及交互关系 进行体系结构设计 设计通常被描述为一个多步过程 其主要 任务是从需求信息中综合出 设计通常被描述为一个多步过程 其主要 任务是从需求信息中综合出数据的表示 程序结构 接口特征和过程细节 数据的表示 程序结构 接口特征和过程细节 设计是由设计是由信息驱动信息驱动的 软件设计方法都是 通过仔细考虑分析模型的三个域而得到的 因此 信息 功能和行为三个域是创建软 件设计的指南 的 软件设计方法都是 通过仔细考虑分析模型的三个域而得到的 因此 信息 功能和行为三个域是创建软 件设计的指南 体系结构设计是构建软件的体系结构设计是构建软件的初始蓝图初始蓝图 软件体系结构 从第一个程序从第一个程序被划分成模块开始 软件系 统就有了体系结构 被划分成模块开始 软件系 统就有了体系结构 同时 程序员已经开 始负责模块间的交互和模块装配的全局属 性 从历史的观点看 体系结构隐含了很 多内容 同时 程序员已经开 始负责模块间的交互和模块装配的全局属 性 从历史的观点看 体系结构隐含了很 多内容 实现的偶然事件或先前遗留系 统 好的软件开发人员经常采用一个或者 多个体系结构模式作为系统组织策略 但 是他们只是非正式地使用这些模式 并且 在最终系统中没有将这些模式清楚地体现 出来 实现的偶然事件或先前遗留系 统 好的软件开发人员经常采用一个或者 多个体系结构模式作为系统组织策略 但 是他们只是非正式地使用这些模式 并且 在最终系统中没有将这些模式清楚地体现 出来 什么是体系结构 一个程序和计算系统软件体系结构是指一个程序和计算系统软件体系结构是指系 统的一个或者多个结构 系 统的一个或者多个结构 结构中包括 结构中包括软件 的构件 软件 的构件 构件的 构件的外部可见属性外部可见属性以及它们之 间的 以及它们之 间的相互关系相互关系 体系结构并非可运行软件 它体系结构并非可运行软件 它是一种表 达 是一种表 达 使软件工程师能够 使软件工程师能够 1 分析设计在 满足规定需求方面的有效性 分析设计在 满足规定需求方面的有效性 2 在设计 变更相对容易的阶段 考虑体系结构可能 的选择方案 在设计 变更相对容易的阶段 考虑体系结构可能 的选择方案 3 降低与软件构造相关联 的风险 降低与软件构造相关联 的风险 什么是体系结构 在体系结构设计的环境中 软件构件可以简 单到 在体系结构设计的环境中 软件构件可以简 单到程序模块或者面向对象的类程序模块或者面向对象的类 也可以扩 充到包含数据库和能够完成客户与服务器网 络配置的 也可以扩 充到包含数据库和能够完成客户与服务器网 络配置的 中间件中间件 本教材中 软件体系结构的设计考虑了设计 金字塔中的两个层次 本教材中 软件体系结构的设计考虑了设计 金字塔中的两个层次 数据设计和体系结 构设计 数据设计和体系结 构设计 数据设计使我们表示出传统系统中 体系结构的 数据设计使我们表示出传统系统中 体系结构的数据构件和面向对象系统中类的 定义 数据构件和面向对象系统中类的 定义 体系结构设计则主要关注 体系结构设计则主要关注软件构件的 结构 属性和交互作用 软件构件的 结构 属性和交互作用 为什么体系结构如此重要 BAS03 给出了软件体系结构之所以重要的给出了软件体系结构之所以重要的三个关键原 因 三个关键原 因 软件体系结构的表示有助于对计算机系统开发感兴趣的 软件体系结构的表示有助于对计算机系统开发感兴趣的 各方开展交流各方开展交流 体系结构突出了体系结构突出了早期设计决策早期设计决策 这些决策对随后的所有 软件工程工作有深远的影响 同时对系统作为一个可运 行实体的最后成功有重要作用 这些决策对随后的所有 软件工程工作有深远的影响 同时对系统作为一个可运 行实体的最后成功有重要作用 体系结构 构建了一个相对小的 易于理解的模型 该 模型描述了 体系结构 构建了一个相对小的 易于理解的模型 该 模型描述了系统如何构成以及其构件如何一起工作系统如何构成以及其构件如何一起工作 体系结构体系结构设计模型和包含在其中的体系结构模式都是可 以传递的 设计模型和包含在其中的体系结构模式都是可 以传递的 即体系结构的风格和模式可以被应用于其他 系统的设计中 并且表示了一组使软件工程师能以可预 见的方式描述体系结构的抽象 即体系结构的风格和模式可以被应用于其他 系统的设计中 并且表示了一组使软件工程师能以可预 见的方式描述体系结构的抽象 数据设计 数据设计是把在分析模型中定义的数据对 象转化成 数据设计是把在分析模型中定义的数据对 象转化成软件构件级的数据结构软件构件级的数据结构 并且在 必要时转化为 并且在 必要时转化为应用程序级的数据库体系结 构 应用程序级的数据库体系结 构 在某些情况下 必须为一个新系统专 门设计和建立 在某些情况下 必须为一个新系统专 门设计和建立数据库数据库 体系结构级的数据设计 当今 大大小小的业务均充斥着数据 甚至一 个中型规模企业拥有为多个应用系统提供服务的 几十个数据库 问题在于 当今 大大小小的业务均充斥着数据 甚至一 个中型规模企业拥有为多个应用系统提供服务的 几十个数据库 问题在于如何从这样庞大的数据 环境中提取有用的信息 如何从这样庞大的数据 环境中提取有用的信息 特别当需要的信息是功 能交叉时 特别当需要的信息是功 能交叉时 IT界开发出了界开发出了数据挖掘数据挖掘技术 也称为技术 也称为数据库中 的知识发现 数据库中 的知识发现 该技术遍历现有的数据库以试图抽 取出合适的业务级信息 另一种可选的解决方案 称为 该技术遍历现有的数据库以试图抽 取出合适的业务级信息 另一种可选的解决方案 称为数据仓库数据仓库 它是一个独立的数据环境 但包 含了某业务使用的所有数据 它是一个独立的数据环境 但包 含了某业务使用的所有数据 构件级的数据设计 构件级的数据设计关注于那些被一个或者多个 软件构件直接访问的数据结构的表示 构件级的数据设计关注于那些被一个或者多个 软件构件直接访问的数据结构的表示 WAS80 提出了以下数据规格说明原则 提出了以下数据规格说明原则 1 应用于功能和行为的系统分析原则也可应用于 数据 应用于功能和行为的系统分析原则也可应用于 数据 同样应该开发和评审数据流和数据内容的 表示 标识数据对象 还应该考虑其他可选的数 据组织结构 评估数据模型对软件设计的影响 同样应该开发和评审数据流和数据内容的 表示 标识数据对象 还应该考虑其他可选的数 据组织结构 评估数据模型对软件设计的影响 2 标识所有数据结构及其完成的操作 标识所有数据结构及其完成的操作 设计一个 高效的数据结构 必须考虑其上的操作 把属性 和操作封装在一个类中满足这个原则 设计一个 高效的数据结构 必须考虑其上的操作 把属性 和操作封装在一个类中满足这个原则 构件级的数据设计 3 应该建立定义数据对象内容的机制 并 且用于定义数据及其操作 应该建立定义数据对象内容的机制 并 且用于定义数据及其操作 类图定义包含 在类中的数据项和应用到这些数据项上的 方法 类图定义包含 在类中的数据项和应用到这些数据项上的 方法 4 低层的数据设计决策应该延迟到设计过 程的后期 低层的数据设计决策应该延迟到设计过 程的后期 数据设计可以采用逐步求精的 过程 所有的数据组织可以在需求分析阶 段定义 在数据设计工作中精化 在构件 级设计阶段刻画细节 数据设计可以采用逐步求精的 过程 所有的数据组织可以在需求分析阶 段定义 在数据设计工作中精化 在构件 级设计阶段刻画细节 构件级的数据设计 5 只有那些直接使用数据结构内部数据的模块 才能够看到该数据结构的表示 只有那些直接使用数据结构内部数据的模块 才能够看到该数据结构的表示 信息隐蔽概念以 及相关的耦合概念为软件设计质量的评估提供了 依据 信息隐蔽概念以 及相关的耦合概念为软件设计质量的评估提供了 依据 6 应该开发一个由有用的数据结构及其操作组 成的库 应该开发一个由有用的数据结构及其操作组 成的库 类库即可实现这个目标 类库即可实现这个目标 7 软件设计和程序设计语言应该支持抽象数据 类型的规格说明和实现 软件设计和程序设计语言应该支持抽象数据 类型的规格说明和实现 如果没有办法对所选用 于实现的编程语言中的结构进行直接说明 那么 复杂数据结构的实现将变得非常困难 如果没有办法对所选用 于实现的编程语言中的结构进行直接说明 那么 复杂数据结构的实现将变得非常困难 体系结构风格和模式 建筑师使用建筑师使用体系结构体系结构 建筑风格建筑风格 作为描 述机制 将该房子和其他风格的房子区分 开来 但更重要的是 作为描 述机制 将该房子和其他风格的房子区分 开来 但更重要的是 体系结构风格也是 建筑的样板 体系结构风格也是 建筑的样板 必须进一步规定房子的细 节 具体说明它的最终尺寸 进一步给出 定制的特征 确定建筑材料等 实际上是 必须进一步规定房子的细 节 具体说明它的最终尺寸 进一步给出 定制的特征 确定建筑材料等 实际上是 建筑风格指导了建筑师的工作建筑风格指导了建筑师的工作 体系结构风格和模式 为计算机系统建造的软件也展示了众多体系 结构风格中的一种 每种风格描述一种系统 类别 包括 为计算机系统建造的软件也展示了众多体系 结构风格中的一种 每种风格描述一种系统 类别 包括 1 一组构件一组构件完成系统需要的某 种功能 完成系统需要的某 种功能 2 一组连接器一组连接器 它们能使构件间实 现 它们能使构件间实 现 通信 合作和协调通信 合作和协调 3 约束约束 定义构件 如何集成为一个系统 定义构件 如何集成为一个系统 4 语义模型语义模型 它能使 设计者通过分析系统的构成成分的性质来理 解系统的整体性质 它能使 设计者通过分析系统的构成成分的性质来理 解系统的整体性质 体系结构风格和模式 一种体系结构风格就是一种在整个系统设 计上面的 一种体系结构风格就是一种在整个系统设 计上面的变换变换 它的目的就是为系统的 它的目的就是为系统的所 有构件建立一个结构 所 有构件建立一个结构 在对已有体系结构 进行 在对已有体系结构 进行再工程再工程时 强制采用一种体系结构风 格会导致软件结构的根本性改变 包括对 构件功能的再分配 时 强制采用一种体系结构风 格会导致软件结构的根本性改变 包括对 构件功能的再分配 体系结构风格和模式 体系结构模式体系结构模式也对体系结构的设计施加一种变 换 然而 体系结构模式与体系结构风格在许多 基本方面存在不同 也对体系结构的设计施加一种变 换 然而 体系结构模式与体系结构风格在许多 基本方面存在不同 1 体系结构模式涉及的范 围要小一些 它更多集中在体系结构的 体系结构模式涉及的范 围要小一些 它更多集中在体系结构的某一局部 某一局部 而不是体系结构的整体 而不是体系结构的整体 2 模式在体系结构上 施加规则 描述了软件是如何在基础设施层次上 处理某些 模式在体系结构上 施加规则 描述了软件是如何在基础设施层次上 处理某些功能性方面功能性方面的问题 的问题 3 体系结构模式 倾向于在系统结构的环境中处理 体系结构模式 倾向于在系统结构的环境中处理特定的行为问题特定的行为问题 模式可以与体系结构风格结合起来 用于建立整 个系统结构的外形 模式可以与体系结构风格结合起来 用于建立整 个系统结构的外形 体系结构风格的简单分类 以数据为中心的体系结构以数据为中心的体系结构 数据存储数据存储驻留 在这种体系结构的中心 其他构件会经常 访问数据存储 并对存储中的数据进行更 新 增加 删除或者修改 图 驻留 在这种体系结构的中心 其他构件会经常 访问数据存储 并对存储中的数据进行更 新 增加 删除或者修改 图8 1描述了 一个典型的以数据为中心的体系结构风格 在某些情况下存储库是被动的 即客户软 件独立于数据的任何变化或其他客户软件 的动作而访问数据 该方法的一个变种是 将中心存储库变换成 描述了 一个典型的以数据为中心的体系结构风格 在某些情况下存储库是被动的 即客户软 件独立于数据的任何变化或其他客户软件 的动作而访问数据 该方法的一个变种是 将中心存储库变换成 黑板黑板 当用户感兴 趣的数据发生变化时 它将通知客户软件 当用户感兴 趣的数据发生变化时 它将通知客户软件 体系结构风格的简单分类 图8 1以数据为中心的体系结构 体系结构风格的简单分类 以数据为中心的体系结构提升了以数据为中心的体系结构提升了可集成 性 可集成 性 即现有的构件可以被修改而且新的客 户构件可以加入到系统结构之中 而无需 考虑其他的客户 另外 数据可以在客户 间通过 即现有的构件可以被修改而且新的客 户构件可以加入到系统结构之中 而无需 考虑其他的客户 另外 数据可以在客户 间通过 黑板黑板 机制传送 客户构件独立地 执行过程 机制传送 客户构件独立地 执行过程 体系结构风格的简单分类 数据流体系结构数据流体系结构 当输入数据经过一系列的计 算和操作构件的变换形成输出数据时 可以应用 这种体系结构 当输入数据经过一系列的计 算和操作构件的变换形成输出数据时 可以应用 这种体系结构 管道和过滤器结构管道和过滤器结构 如图如图8 2 拥 有一组被称为过滤器的构件 这些构件通过管道 连接 管道将数据从一个构件传送到下一个构件 每个过滤器独立于其上游和下游的构件而工作 过滤器的设计要针对某种形式的数据输入 并且 产生某种特定形式的数据输出 然而 过滤器没 有必要了解与之相邻的过滤器的工作 拥 有一组被称为过滤器的构件 这些构件通过管道 连接 管道将数据从一个构件传送到下一个构件 每个过滤器独立于其上游和下游的构件而工作 过滤器的设计要针对某种形式的数据输入 并且 产生某种特定形式的数据输出 然而 过滤器没 有必要了解与之相邻的过滤器的工作 如果数据流退化成单线的变换 则称为如果数据流退化成单线的变换 则称为批序列批序列 这种结构接收一批数据 然后应用一系列连续的 构件 这种结构接收一批数据 然后应用一系列连续的 构件 过滤器过滤器 变换它 变换它 体系结构风格的简单分类 图8 2 数据流体系结构 体系结构风格的简单分类 调用和返回体系结构调用和返回体系结构 该体系结构风格能够让软 件设计师设计出一个相对易于修改和扩展的程序 结构 存在两种子风格 该体系结构风格能够让软 件设计师设计出一个相对易于修改和扩展的程序 结构 存在两种子风格 主程序主程序 子程序体系结构 子程序体系结构 这种传统的程序结构将功能分解为 一个控制层次 其中 这种传统的程序结构将功能分解为 一个控制层次 其中 主主 程序调用一组程序构件 这些程序构 件又去调用别的程序构件 图 程序调用一组程序构件 这些程序构 件又去调用别的程序构件 图8 3描述了该种系统结构 描述了该种系统结构 远程过程调用体系结构 远程过程调用体系结构 主程序主程序 子程序体系结构的构件分布 在网络的多个计算机上 子程序体系结构的构件分布 在网络的多个计算机上 面向对象体系结构 面向对象体系结构 系统的构件封装了数据和必 须应用到该数据上的操作 构件间通过信息传递 进行通信与合作 系统的构件封装了数据和必 须应用到该数据上的操作 构件间通过信息传递 进行通信与合作 体系结构风格的简单分类 图8 3 主程序 子程序体系结构 体系结构风格的简单分类 层次体系结构层次体系结构 层次体系结构的基本结构如图 层次体系结构的基本结构如图 8 4所示 其中定义了一系列所示 其中定义了一系列不同的层次不同的层次 每个 层次各自完成操作 这些操作不断接近机器的指 令集 在最外层 构件完成用户界面的操作 在 最内层 构件完成与操作系统的连接 中间层提 供各种实用程序服务和应用软件功能 每个 层次各自完成操作 这些操作不断接近机器的指 令集 在最外层 构件完成用户界面的操作 在 最内层 构件完成与操作系统的连接 中间层提 供各种实用程序服务和应用软件功能 这些体系结构风格仅仅是软件设计师可用风格中 的 这些体系结构风格仅仅是软件设计师可用风格中 的一小部分一小部分 一旦需求工程提示了待构建系统的 特征和约束 就可以选择 一旦需求工程提示了待构建系统的 特征和约束 就可以选择最适合最适合这些特征和约束 的体系结构风格或者风格的组合 在很多情况 下 会有多种风格是适合的 需要对可选的体系 结构风格进行设计和评估 这些特征和约束 的体系结构风格或者风格的组合 在很多情况 下 会有多种风格是适合的 需要对可选的体系 结构风格进行设计和评估 体系结构风格的简单分类 图8 4 层次体系结构 体系结构模式 如果建筑工人决定建构一个如果建筑工人决定建构一个 殖民式中厅殖民式中厅 那 么只能应用一种体系结构风格 风格的 那 么只能应用一种体系结构风格 风格的细节细节内容 是可以 内容 是可以酌情变动酌情变动的 但是一旦确定了房子的整体 体系结构 这个风格就会影响设计 的 但是一旦确定了房子的整体 体系结构 这个风格就会影响设计 体系结构的模式体系结构的模式有所不同 例如 房子采用一 种 有所不同 例如 房子采用一 种Kitchen模式 这种模式 这种Kitchen模式规定了厨房 基本用具的放置 水池 橱柜等要求 如果可能 的话 也规定了房间中与完成做饭流程相关的这 些厨具的布置规则 另外 该模式还可能指明柜 台面 灯 墙上的插座 中心岛 地板等要求 显然对厨房有不止一种的设计 但是 模式规定了厨房 基本用具的放置 水池 橱柜等要求 如果可能 的话 也规定了房间中与完成做饭流程相关的这 些厨具的布置规则 另外 该模式还可能指明柜 台面 灯 墙上的插座 中心岛 地板等要求 显然对厨房有不止一种的设计 但是每种设计都 应该在 每种设计都 应该在Kitchen模式提供的解决方案环境下来构 思完成 模式提供的解决方案环境下来构 思完成 体系结构模式 软件的体系结构模式定义了软件的体系结构模式定义了处理系统某些行为特征处理系统某些行为特征的方 法 的方 法 BOS00 定义了一系列的体系结构模式域 定义了一系列的体系结构模式域 并发性并发性 很多应用系统必须以一种模拟并行的方式来操 作多个任务 在一个应用系统中有很多不同的方法处理 并发性 而且每种方法都可以由不同的体系结构模式来 呈现 例如 一种方法是使用 很多应用系统必须以一种模拟并行的方式来操 作多个任务 在一个应用系统中有很多不同的方法处理 并发性 而且每种方法都可以由不同的体系结构模式来 呈现 例如 一种方法是使用 操作系统进程管理操作系统进程管理 模 式 该模式提供了一些内置的操作系统特征 这些特征 允许构件并发执行 这个模式同时还结合了操作系统中 那些管理进程通信 调度的功能以及其他完成并发所需 要的功能 还有一种方法是在应用层上定义一个任务调 度器 模 式 该模式提供了一些内置的操作系统特征 这些特征 允许构件并发执行 这个模式同时还结合了操作系统中 那些管理进程通信 调度的功能以及其他完成并发所需 要的功能 还有一种方法是在应用层上定义一个任务调 度器 任务调度器任务调度器 模式包括一组含有模式包括一组含有tick 操作的活 动对象 调度器定期唤醒每个对象的 操作的活 动对象 调度器定期唤醒每个对象的tick 操作 该操 作在控制权返回调度器之前完成它负责的功能 接着调 度器唤醒下一个并发对象的 操作 该操 作在控制权返回调度器之前完成它负责的功能 接着调 度器唤醒下一个并发对象的tick 操作 操作 体系结构模式 持久性持久性 如果数据从创建它的进程执行以来 如果数据从创建它的进程执行以来一 直存在 一 直存在 则该数据是持久性存在的数据 持久数 据被存储在 则该数据是持久性存在的数据 持久数 据被存储在数据库数据库中或者中或者文件文件里 并且可以在稍 后的时间里被其他进程读取和修改 在面向对象 的环境中 里 并且可以在稍 后的时间里被其他进程读取和修改 在面向对象 的环境中 持久对象持久对象的概念对持久性概念做了一 些扩展 所有对象属性的值 对象的状态以及其 他的附加信息都被存储起来 以备今后的存取和 使用 一般说来 可以采用两种体系结构模式获 得持久性 一个是 的概念对持久性概念做了一 些扩展 所有对象属性的值 对象的状态以及其 他的附加信息都被存储起来 以备今后的存取和 使用 一般说来 可以采用两种体系结构模式获 得持久性 一个是数据库管理系统模式数据库管理系统模式 该模式 将 该模式 将DBMS的存储和存取能力用于应用系统的体系 结构中 另一个是 的存储和存取能力用于应用系统的体系 结构中 另一个是应用级的持久模式应用级的持久模式 此种模式 在应用体系结构中建立了持久性特征 此种模式 在应用体系结构中建立了持久性特征 体系结构模式 分布性分布性 分布性问题强调系统或系统中构件在 一个分布的环境中相互通信的方式 分布性问题 有两个元素 分布性问题强调系统或系统中构件在 一个分布的环境中相互通信的方式 分布性问题 有两个元素 1 实体间连接方式实体间连接方式 2 实体间通 信的特性 实体间通 信的特性 解决分布性问题最普遍的体系结构模 式是 解决分布性问题最普遍的体系结构模 式是代理模式代理模式 代理在客户端构件和服务器构件 之间充当 代理在客户端构件和服务器构件 之间充当 中间人中间人 客户端向代理发出一条信息 包含所有使通信有效的信息 代理完成 与 服务器的 连接 客户端向代理发出一条信息 包含所有使通信有效的信息 代理完成 与 服务器的 连接 在选择一种体系结构模式之前 必须在选择一种体系结构模式之前 必须评估其对 于应用和整个体系结构风格的适应性 评估其对 于应用和整个体系结构风格的适应性 即它的可 维护性 可靠性 安全性和性能 即它的可 维护性 可靠性 安全性和性能 组织和求精 设计过程经常给软件工程师留下一系列可 供选择的体系结构 建立一组用于 设计过程经常给软件工程师留下一系列可 供选择的体系结构 建立一组用于评估评估所 导出的体系结构设计的设计标准是非常重 要的 所 导出的体系结构设计的设计标准是非常重 要的 BAS98 提出的下面问题有助于对 导出的体系结构风格提供深层次的考察 提出的下面问题有助于对 导出的体系结构风格提供深层次的考察 组织和求精 控制控制 在体系结构中如何管理控制 是否 存在一个不同的控制层次 如果是 构件 在控制层次中担当什么角色 构件如何在 系统中传递控制 构件间如何共享控制 控制拓扑结构 即控制呈现的几何形状 是什么样 控制是否同步或构件是否异步 操作 在体系结构中如何管理控制 是否 存在一个不同的控制层次 如果是 构件 在控制层次中担当什么角色 构件如何在 系统中传递控制 构件间如何共享控制 控制拓扑结构 即控制呈现的几何形状 是什么样 控制是否同步或构件是否异步 操作 组织和求精 数据数据 构件间如何进行数据通信 数据流 是否是连接的 或数据对象是否是零散地 传递给系统 数据传递的模式是什么 即 数据是从一个构件传递到另一个构 件 还是系统中构件可以全局共享数 据 是否存在数据构件 如黑板或中心 存储库 如果存在 它们的角色是什 么 功能构件如何和数据构件交互 数据 构件是被动的还是主动的 即数据构件是 否主动地和系统中其他构件交互 数据 和控制如何在系统中交互 构件间如何进行数据通信 数据流 是否是连接的 或数据对象是否是零散地 传递给系统 数据传递的模式是什么 即 数据是从一个构件传递到另一个构 件 还是系统中构件可以全局共享数 据 是否存在数据构件 如黑板或中心 存储库 如果存在 它们的角色是什 么 功能构件如何和数据构件交互 数据 构件是被动的还是主动的 即数据构件是 否主动地和系统中其他构件交互 数据 和控制如何在系统中交互 体系结构设计 在体系结构设计开始的时候 软件必须放 在 在体系结构设计开始的时候 软件必须放 在所处环境所处环境进行开发 即 设计应该定义 与软件交互的 进行开发 即 设计应该定义 与软件交互的外部实体外部实体 其他系统 设备 人 和 其他系统 设备 人 和交互的特性交互的特性 一般在 一般在分析模型分析模型阶段 可以获得这些信息 而所有其他的信息都 是在 阶段 可以获得这些信息 而所有其他的信息都 是在需求工程需求工程阶段获得的 一旦建立了软 件的环境模型 并且描述出所有的外部软 件接口 那么设计师就可以通过 阶段获得的 一旦建立了软 件的环境模型 并且描述出所有的外部软 件接口 那么设计师就可以通过定义和求 精实现体系结构的构件 定义和求 精实现体系结构的构件来描述系统的结构 这个过程不停地迭代 直到获得一个完善 的体系结构 来描述系统的结构 这个过程不停地迭代 直到获得一个完善 的体系结构 系统的环境表示 系统环境图通过描述系统的系统环境图通过描述系统的出入信息流出入信息流 用户界面用户界面和相关的和相关的支持处理支持处理等来实现对环 境的建模 在体系结构设计层 软件架构 师用 等来实现对环 境的建模 在体系结构设计层 软件架构 师用体系结构环境图体系结构环境图对软件与外部实体交 互方式进行建模 图 对软件与外部实体交 互方式进行建模 图8 5给出了体系结构 环境图的通用结构 给出了体系结构 环境图的通用结构 系统的环境表示 图8 5 体系结构环境图 系统的环境表示 与目标系统交互的系统可以表示为 与目标系统交互的系统可以表示为 上级系统上级系统 这些系统把目标系统作为某些高层 处理方案的一部分 这些系统把目标系统作为某些高层 处理方案的一部分 下级系统下级系统 这些系统被目标系统使用 并为了 完成目标系统的功能提供必要的数据和处理 这些系统被目标系统使用 并为了 完成目标系统的功能提供必要的数据和处理 同级系统同级系统 这些系统在对等的基础上相互作用 这些系统在对等的基础上相互作用 参与者参与者 是指那些通过产生和消耗必不可少的 处理所需的信息 实现与目标系统交互的实体 人 设备 是指那些通过产生和消耗必不可少的 处理所需的信息 实现与目标系统交互的实体 人 设备 每个外部实体都通过某一接口 带阴影的小矩 形 与目标系统进行通信 每个外部实体都通过某一接口 带阴影的小矩 形 与目标系统进行通信 SAFEHOME实例 32 9 6 9 6 SAFEHOME实例 33 图8 6 SafeHome安全功能的体系结构环境图 定义原始模型 原始模型是一个类或者一个模式 描述了 一个目标系统体系结构设计的核心抽象 一般来讲 只需要设计相对较小的原始模 型集合 即使系统相对比较复杂 目标系 统的体系结构由这些原始模型组成 这些 原始模型表示体系结构中稳定的元素 但 是这些元素基于系统行为可用多种方式加 以说明 原始模型是一个类或者一个模式 描述了 一个目标系统体系结构设计的核心抽象 一般来讲 只需要设计相对较小的原始模 型集合 即使系统相对比较复杂 目标系 统的体系结构由这些原始模型组成 这些 原始模型表示体系结构中稳定的元素 但 是这些元素基于系统行为可用多种方式加 以说明 SAFEHOME实例 34 SAFEHOME实例 35 图8 7 SafeHome安全功能原始模型的UML关系图 将体系结构精化为构件 当软件体系结构精化为构件时 系统的结构开 始显现 但是 如何选择这些构件呢 体系结构 设计师先从 当软件体系结构精化为构件时 系统的结构开 始显现 但是 如何选择这些构件呢 体系结构 设计师先从分析模型中所描述的类分析模型中所描述的类开始 这些分 析类表示那些软件体系结构中必定涉及的应用 业务 领域内的实体 因此 开始 这些分 析类表示那些软件体系结构中必定涉及的应用 业务 领域内的实体 因此 应用领域应用领域是导出 和精化构件的一个源泉 另一源泉是 是导出 和精化构件的一个源泉 另一源泉是基础设施域 体系结构 基础设施域 体系结构必须容纳很多基础设施构件使应用构件 能够运作 但是这些基础设施构件与应用领域没 有业务联系 例如 内存管理构件 通信构件 数据库构件和任务管理构件往往归并到软件体系 结构中 必须容纳很多基础设施构件使应用构件 能够运作 但是这些基础设施构件与应用领域没 有业务联系 例如 内存管理构件 通信构件 数据库构件和任务管理构件往往归并到软件体系 结构中 将体系结构精化为构件 体系结构环境图中描述的接口隐含着一个 或者多个特定的构件 这些构件处理穿过 接口的数据 在某些情况下 需要设计一 个完整的包含众多构件的子系统体系结构 体系结构环境图中描述的接口隐含着一个 或者多个特定的构件 这些构件处理穿过 接口的数据 在某些情况下 需要设计一 个完整的包含众多构件的子系统体系结构 SAFEHOME实例 36 SAFEHOME实例 37 图8 8 带有高层构件的SafeHome整体体系结构 描述系统实例 至此所建立起来的体系结构设计依然处于比较 高的层次 系统的环境已经表示出来了 预示问 题域中重要抽象的原始模型也被定义出来 系统 的整个结构已经显现出来 并且主要的软件构件 也都定义出来了 然而 更进一步的精化仍然是 必要的 至此所建立起来的体系结构设计依然处于比较 高的层次 系统的环境已经表示出来了 预示问 题域中重要抽象的原始模型也被定义出来 系统 的整个结构已经显现出来 并且主要的软件构件 也都定义出来了 然而 更进一步的精化仍然是 必要的 为了完成体系结构设计 要开发一个体系结构 的实际实例 用意是将体系结构应用到一个特定 的问题上 目的是证明结构和构件都是合理的 为了完成体系结构设计 要开发一个体系结构 的实际实例 用意是将体系结构应用到一个特定 的问题上 目的是证明结构和构件都是合理的 SAFEHOME实例 38 评估可选的体系结构设计 设计会导致多种可供选择的候选体系结构 其 中每一种候选体系结构都需要评估 以确定哪种 体系结构最适合要解决的问题 设计会导致多种可供选择的候选体系结构 其 中每一种候选体系结构都需要评估 以确定哪种 体系结构最适合要解决的问题 体系结构权衡分析方法 SEI开发了一种体系结构权衡分析方法 该方法建立了 一个迭代的软件体系结构评估过程 开发了一种体系结构权衡分析方法 该方法建立了 一个迭代的软件体系结构评估过程 1 收集场景 收集场景 2 诱导需求 约束和环境描述 诱导需求 约束和环境描述 3 描述那些已经被选用于解决场景和需求的体系结构风格 描述那些已经被选用于解决场景和需求的体系结构风格 模 式 模 式 4 通过孤立地考虑每个属性来评估质量属性 通过孤立地考虑每个属性来评估质量属性 5 针对特定的体系结构风格 弄清质量属性对各种体系结构属 性的敏感性 针对特定的体系结构风格 弄清质量属性对各种体系结构属 性的敏感性 6 使用在第 使用在第5步中进行的敏感性分析鉴定候选体系结构 步中进行的敏感性分析鉴定候选体系结构 这这6个步骤描述了第一次个步骤描述了第一次ATAM迭代 基于第迭代 基于第5步和第步和第6 步的结果 某些候选体系结构可能被删除 剩余的一个 或多个体系结构可能被修改和进一步细化 然后 步的结果 某些候选体系结构可能被删除 剩余的一个 或多个体系结构可能被修改和进一步细化 然后 ATAM步骤被再次应用 步骤被再次应用 体系结构复杂性 对体系结构的整体复杂性进行评估 一种很有 用的技术是考虑体系结构中构件间的依赖关系 这些依赖关系是由系统中的信息 对体系结构的整体复杂性进行评估 一种很有 用的技术是考虑体系结构中构件间的依赖关系 这些依赖关系是由系统中的信息 控制流驱动的 控制流驱动的 ZHA98 建议了三种类型的依赖 建议了三种类型的依赖 共享依赖表示在使用相同资源的消费者间或为相同消费者生产 的生产者之间的依赖关系 共享依赖表示在使用相同资源的消费者间或为相同消费者生产 的生产者之间的依赖关系 流依赖表示资源的生产者和消费者间的依赖关系 流依赖表示资源的生产者和消费者间的依赖关系 约束依赖表示在一组活动间相关控制流上的约束 约束依赖表示在一组活动间相关控制流上的约束 体系结构描述语言 体系结构描述语言体系结构描述语言ADL为描述软件体系结构提 供一套语义和语法 为描述软件体系结构提 供一套语义和语法 HOF01 建议建议ADL应该使 得设计者具有分解体系结构构件 将单独构件组 合成大的体系结构块 以及描述构件之间的接口 的能力 一旦体系结构设计使用的描述的 基于 语言的技术被建立起来 那么很有可能随着设计 的进化而建立起体系结构的有效评估方法 应该使 得设计者具有分解体系结构构件 将单独构件组 合成大的体系结构块 以及描述构件之间的接口 的能力 一旦体系结构设计使用的描述的 基于 语言的技术被建立起来 那么很有可能随着设计 的进化而建立起体系结构的有效评估方法 映射数据流到软件体系结构 体系结构风格描述了本质上不同的体系结构 因此 并不存在一种能够实现从分析模型到各种 体系风格转换的 体系结构风格描述了本质上不同的体系结构 因此 并不存在一种能够实现从分析模型到各种 体系风格转换的全面映射全面映射 为了描述体系结构映射的方法 考虑为了描述体系结构映射的方法 考虑 调用和返 回 调用和返 回 体系结构的映射技术体系结构的映射技术 这种体系结构是非 常常见的结构 这种映射技术使得设计者能够从 分析模型的 这种体系结构是非 常常见的结构 这种映射技术使得设计者能够从 分析模型的数据流图数据流图中导出相当复杂的中导出相当复杂的 调用和 返回 调用和 返回 体系结构 这种技术也称为体系结构 这种技术也称为结构化设计结构化设计 结构化设计经常被刻画为结构化设计经常被刻画为面向数据流面向数据流的设计方 法 它提供了方便的从 的设计方 法 它提供了方便的从数据流图到软件体系结构 的变换 数据流图到软件体系结构 的变换 信息流的类型信息流的类型决定了映射方法 决定了映射方法 DFD的两种类型 为了实现从为了实现从DFD到体系结构的映射到体系结构的映射 需求模型 设计模型 需求模型 设计模型 需要仔细区分 需要仔细区分DFD中数据流的性 质 并分别学习相应的映射方法 中数据流的性 质 并分别学习相应的映射方法 变换型结构 变换流 变换型结构 变换流 事务型结构 事务流 事务型结构 事务流 变换映射 变换映射是一组设计步骤 可以将具有变 换流特征的 变换映射是一组设计步骤 可以将具有变 换流特征的DFD映射为某个特定的体系结 构风格 映射为某个特定的体系结 构风格 步骤1 评审基本系统模型 基本系统模型或者环境图把安全功能描述 为一个单一的变换 描述了流入和流出安 全功能的数据的生产者和消费者 图 基本系统模型或者环境图把安全功能描述 为一个单一的变换 描述了流入和流出安 全功能的数据的生产者和消费者 图8 11 刻画了一个刻画了一个0层模型 图层模型 图8 12描述了初步 精化后的安全功能数据流 描述了初步 精化后的安全功能数据流 SAFEHOME实例 39 图8 11 SafeHome的环境级DFD SAFEHOME实例 40 图8 12 SafeHome安全功能的第一层DFD 步骤2 评审和精化软件的数据流图 对从分析模型获得的信息进行精化 以获 得更多的细节 例如 检查第 对从分析模型获得的信息进行精化 以获 得更多的细节 例如 检查第2层监控传感 器的 层监控传感 器的DFD 如图如图8 13 并导出第 并导出第3层数据 流图 层数据 流图 如图如图8 14 在第 在第3层 数据流图中 的每个变换都展示了高内聚性 即变换所 包含的过程完成单一的 清楚的功能 该 功能可被实现为 层 数据流图中 的每个变换都展示了高内聚性 即变换所 包含的过程完成单一的 清楚的功能 该 功能可被实现为SafeHome软件中的一个 构件 图 软件中的一个 构件 图8 14中的中的DFD包含了设计监控传 感器子系统体系结构所需的细节信息 不 需要再进一步精化 包含了设计监控传 感器子系统体系结构所需的细节信息 不 需要再进一步精化 SAFEHOME实例 41 图8 13 精化 监控传感器 变换的第2层DFD SAFEHOME实例 42 图8 14 具有流边界的监控传感器的第3层DFD 步骤3 确定DFD是否含有变换流或事务流特征 通过评估通过评估DFD 图图8 14 可以看出 数据 通过一条输入路径进入软件 沿三条输出 路径流出 没有明显的事务中心 信息流 将呈现出一个从头到尾的变换特征 可以看出 数据 通过一条输入路径进入软件 沿三条输出 路径流出 没有明显的事务中心 信息流 将呈现出一个从头到尾的变换特征 步骤4 通过确定输入和输出流的边界 分离出变换中心 输入流被描述为信息从外部形式变换为内 部形式的路径 而输出流是信息从内部形 式变换为外部形式的路径 不同的设计人 员在选择流边界时可能不尽相同 事实 上 不同的流边界选择会导致不同的设计 方案 尽管在选择流边界时要加以注意 但沿流路径若有一个泡泡的差异对最终程 序结构的影响并不会太大 输入流被描述为信息从外部形式变换为内 部形式的路径 而输出流是信息从内部形 式变换为外部形式的路径 不同的设计人 员在选择流边界时可能不尽相同 事实 上 不同的流边界选择会导致不同的设计 方案 尽管在选择流边界时要加以注意 但沿流路径若有一个泡泡的差异对最终程 序结构的影响并不会太大 步骤5 完成 第一级分解 使用这个映射导出的程序体系结构导致了自顶向 下的控制分布 分解的作用是得到一个程序结 构 其中顶层模块做决策 低层模块完成大多数 输入 计算和输出工作 中层模块既完成一部分 控制 又完成适量的工作 使用这个映射导出的程序体系结构导致了自顶向 下的控制分布 分解的作用是得到一个程序结 构 其中顶层模块做决策 低层模块完成大多数 输入 计算和输出工作 中层模块既完成一部分 控制 又完成适量的工作 当遇到变换流时 当遇到变换流时 DFD将被映射成一个能为信息 的输入 变换和输出处理提供控制的特定结构 图 将被映射成一个能为信息 的输入 变换和输出处理提供控制的特定结构 图8 15给出了对给出了对监控传感器监控传感器子系统进行第一级分 解的结果 子系统进行第一级分 解的结果 主控制器主控制器 图中称为监控传感器输入 控制器 位于程序结构的顶端 负责 图中称为监控传感器输入 控制器 位于程序结构的顶端 负责协调从属控 制功能 协调从属控 制功能 SAFEHOME实例 43 图8 15 监控传感器的第一级分解 步骤5 完成 第一级分解 输入信息处理控制器输入信息处理控制器负责协调所有输入数据的接 收 负责协调所有输入数据的接 收 变换流控制器变换流控制器负责管理内部形式的数据上的所有 操作 负责管理内部形式的数据上的所有 操作 输出流信息处理控制器输出流信息处理控制器负责管理输出信息的产生 负责管理输出信息的产生 虽然图虽然图8 15蕴涵了三叉结构 但是 大型系统 的复杂数据流图可能会要求为上述每个类属控制 功能提供两个或多个模块 第一层模块的数量应 限定在既能完成 蕴涵了三叉结构 但是 大型系统 的复杂数据流图可能会要求为上述每个类属控制 功能提供两个或多个模块 第一层模块的数量应 限定在既能完成控制功能控制功能又能维持良好的独立特 征所要求的 又能维持良好的独立特 征所要求的最少模块数最少模块数 步骤6 完成 第二级分解 第二级分解是将第二级分解是将DFD中的每个变换映射到 程序结构中的相应模块 中的每个变换映射到 程序结构中的相应模块 从变换中心的边 界开始 沿输入路径和输出路径向外 将 变换依次映射到软件结构的从属层 从变换中心的边 界开始 沿输入路径和输出路径向外 将 变换依次映射到软件结构的从属层 图图8 16描述了第二级分解的一般方法 描述了第二级分解的一般方法 SAFEHOME实例 44 图8 16 监控传感器的第二级分解 步骤6 完成 第二级分解 虽然图虽然图8 16描述了描述了DFD变换和软件模块间 的 变换和软件模块间 的一对一映射一对一映射 但其他的映射方式也经常 采用 但其他的映射方式也经常 采用 两个甚至三个变换可以合并在一起 表示为一个构件 两个甚至三个变换可以合并在一起 表示为一个构件 或者 或者一个单独的变换也 可以扩展成两个或者多个构件 一个单独的变换也 可以扩展成两个或者多个构件 现实考虑 现实考虑 和和设计质量设计质量的权衡决定着第二级分解的输 出结果 的权衡决定着第二级分解的输 出结果 评审和精化评审和精化可能会导致这个结构 的改变 但这个结构仍然应作为 可能会导致这个结构 的改变 但这个结构仍然应作为第一次迭 代设计 第一次迭 代设计 步骤6 完成 第二级

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论