软件体系结构 张友生

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 428

软 件 体 系 结 构

张友 生
希赛 IT 教育 研发中 心
关 于 教 材

◇ 出版社 :清 华大学 出版 社
◇ 作者: 张友 生
课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 表现

◎ 软件成 本日 益增长

◎ 开发进 度难 以控制

◎ 软件质 量差

◎ 软件维 护困 难
第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 表现

◎ 软件成 本日益 增长
20 世纪 50 年代, 软件 成本在 整个计 算机系统 成
本中 所占 的比例 为 10 %-2 0% 。到 20 世纪 60 年代中
期, 软件 成本在 计算 机系统 中所 占的比 例已经 增长 到
50 % 左右。

而且 ,该 数字还 在不 断地递 增, 下面是 一组 来


自美 国空 军计算 机系 统的数 据: 19 55 年,软件 费用
约占 总费 用的 18 % , 19 70 年达到 60% , 197 5 年达
到 72 % , 19 80 年达 到 80 % , 198 5 年达到 85% 左右

第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 表现

◎ 开发进 度难以 控制

由于 软件 是逻辑 、智 力产品 ,软 件的开 发需 建


立庞 大的 逻辑体 系, 这是与 其他 产品的 生产不 一样 的

在软件 开发过 程中 ,用户 需求 变化 等各种 意想


不到 的情 况层出 不穷 ,令软 件开 发过程 很难保 证按 预
定的 计划 实现, 给项 目计划 和论 证工作 带来了 很大 的
困难 。

盲目增 加软件 开发 人员并 不能 成比 例地提 高软


件开 发能 力。相 反, 随着人 员数 量的增 加,人 员的 组
第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 表现

◎ 软件质 量差

软件 项目 即使能 按预 定日期 完成 ,结果 却不 尽


人意 。 19 65 年至 19 70 年,美国 范登 堡基地 发射火
箭多 次失 败,绝 大部 分故障 是由 应用程 序错误 造成 的

在“ 软件 作坊” 里, 由于缺 乏工 程化思 想的 指


导, 程序 员几乎 总是 习惯性 地以 自己的 想法去 代替 用
户对 软件 的需求 ,软 件设计 带有 随意性 ,很多 功能 只
是程 序员 的“一 厢情 愿”而 已, 这是造 成软件 不能 令
人满 意的 重要因 素。
第 1 章 软件体系结 构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 表现

◎ 软件维 护困难

由于 在软 件设计 和开 发过程 中, 没有严 格遵 循


软件 开发 标准, 各种 随意性 很大 ,没有 完整的 真实 反
映系 统状 况的记 录文 档,给 软件 维护造 成了巨 大的 困
难。

特别 是在 软件使 用过 程中, 原来 的开发 人员 可


能因 各种 原因已 经离 开原来 的开 发组织 ,使得 软件 几
乎不 可维 护。

有资 料表 明,工 业界 为维护 软件 支付的 费用 占


全部 硬件 和软件 费用 的 40% -75 % 。
第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 原因

◎ 用户需 求不 明确

◎ 缺乏正 确的 理论指 导

◎ 软件规 模越 来越大

◎ 软件复 杂度 越来越 高
第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 原因

◎ 用户需 求不明 确

在软件开 发完 成之前 ,用户 不清 楚软件 的具 体需


求;

用户 对软 件需求 的描 述不精 确, 可能有 遗漏 、有


二义 性、 甚至有 错误 ;

在软 件开 发过程 中, 用户还 提出 修改软 件功 能、


界面 、支 撑环境 等方 面的要 求;

开发 人员 对用户 需求 的理解 与用 户本来 愿望 有差


异。
第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 原因

◎ 缺乏正 确的理 论指 导

缺乏 有力 的方法 学和 工具方 面的 支持。 由于 软件


不同 于大 多数其 他工 业产品 ,其 开发过 程是复 杂的 逻
辑思 维过 程,其 产品 极大程 度地 依赖于 开发人 员高 度
的智 力投 入。由 于过 分地依 靠程 序设计 人员在 软件 开
发过 程中 的技巧 和创 造性, 加剧 软件产 品的个 性化 ,
也是 发生 软件危 机的 一个重 要原 因。
第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 原因

◎ 软件规 模越来 越大

随着 软件 应用范 围的 增广, 软件 规模愈 来愈 大。


大型 软件 项目需 要组 织一定 的人 力共同 完成, 而多 数
管理 人员 缺乏开 发大 型软件 系统 的经验 ,而多 数软 件
开发 人员 又缺乏 管理 方面的 经验 。各类 人员的 信息 交
流不 及时 、不准 确、 有时还 会产 生误解 。

软件 项目 开发人 员不 能有效 地、 独立自 主地 处理


大型 软件 的全部 关系 和各个 分支 ,因此 容易产 生疏 漏
和错 误。
第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 软件危机的 原因

◎ 软件复 杂度越 来越 高

软件 不仅 仅是在 规模 上快速 地发 展扩大 ,而 且其


复杂 性也 急剧地 增加 。软件 产品 的特殊 性和人 类智 力
的局 限性 ,导致 人们 无力处 理“ 复杂问 题”。

所谓 “复 杂问题 ”的 概念是 相对 的,一 旦人 们采


用先 进的 组织形 式、 开发方 法和 工具提 高了软 件开 发
效率 和能 力,新 的、 更大的 、更 复杂的 问题又 摆在 人
们的 面前 。
第 1 章 软件体 系结构概论 1. 1 从软 件危 机谈起

◇ 如何克服软 件危机

人们 面临 的不光 是技 术问题 ,更 重要的 是管


理问 题。 管理不 善必 然导致 失败 。

要提 高软 件开发 效率 ,提高 软件 产品质 量,


必须 采用 工程化 的开 发方法 与工 业化的 生产技 术

在技 术上 ,应该 采用 基于重 用的 软件生 产技


术; 在管 理上, 应该 采用多 维的 工程管 理模式 。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件模型及 实现

◎ 构件的 定义

构件 是指 语义完 整、 语法正 确和 有可重 用价 值


的单 位软 件,是 软件 重用过 程中 可以明 确辨识 的系
统; 结构 上,它 是语义描述 、通讯接 口和实现代 码
的复 合体 。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件模型及 实现

◎ 构件模 型的三个主 要流派

OM G ( Ob jec t M an ag eme nt Gr ou p ,对象 管理集 团


)的 CO RB A ( Co mmo n Ob jec t R eq ue st Bro ke r
Ar chi te ct ure ,通用 对象请 求代 理结构 )

Su n 的 EJ B ( Ent er pri se Ja va Be an )

Mi cro so ft 的 DC OM ( Dis tri but ed C omp one nt


Ob jec t Mo del ,分布 式构件 对象 模型) 。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件模型及 实现
◎ 青鸟构 件模型
参数化属性
构件名称 功能描述

提供的 具体成员 虚拟成员


功能
所需的构件

成员关系
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件获取

从现 有构 件中获 得符 合要求 的构 件,直 接使 用


或作 适应 性修改 ,得 到可重 用的 构件;

通过 遗留 工程, 将具 有潜在 重用 价值的 构件 提


取出 来, 得到可 重用 的构件 ;

从市 场上 购买现 成的 商业构 件, 即
CO TS ( Co mm erc ia l O ff -Th e- She ll )构件;

开发 新的 符合要 求的 构件。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件管理

◎ 构件描 述

◎ 构件分 类与组 织

◎ 人员及 权限管 理
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件管理

◎ 构件描 述

构件 模型 是对构 件本 质的抽 象描 述,主 要是 为


构件 的制 作与构 件的 重用提 供依 据;

从管 理角 度出发 ,也 需要对 构件 进行描 述, 例


如: 实现 方式、 实现 体、注 释、 生产者 、生产 日期
、大 小、 价格、 版本 和关联 构件 等信息 ,它们 与构
件模 型共 同组成 了对 构件的 完整 描述。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件管理

◎ 构件分 类与组 织

◇ 关键 字分 类法

◇ 刻面 分类 法

◇ 超文 本组 织方法
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件管理
◎ 关键字 分类法
图形用户界面

窗口 菜单 对话框 事件处理



弹 信 据
盘 点 拖
主 出 息 录
图形 文字 事 击 放
菜 式 对 入
窗口 窗口 件 处 处
单 菜 话 对
处 理 理
单 框 话


第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件管理

◎ 刻面分 类法

◇ 使用 环境
◇ 应用 领域
◇ 功能
◇ 层次
◇ 表示 方法
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件管理

◎ 超文本 组织法

·
……………
·
……………
·
……………
…………… ·
…………… ·
……………

·
…………… …………… ·
……………
…………… ··
…………… ·
…………… ……………
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件管理

◎ 人员及 权限管 理

一般 来讲 ,构件 库系 统可包 括五 类用户 ,即 注


册用 户、 公共用 户、 构件提 交者 、一般 系统管 理员
和超 级系 统管理 员。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件重用

◎ 检索与 提取构 件

◎ 理解与 评价构 件

◎ 修改构 件

◎ 构件组 装
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件重用

◎ 检索与 提取构 件

◇ 基于关 键字 的检索

◇ 刻面检 索法

◇ 超文本 检索 法

◇ 其他检 索方 法
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件重用

◎ 理解与 评价 构件

◇ 构件的 功能 与行为

◇ 相关的 领域 知识

◇ 可适应 性约 束条件 与例 外情

◇ 可以预 见的 修改部 分及 修改
方法
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件重用

◎ 修改构 件

理想 的情 形是对 库中 的构件 不作 修改而 直接 用


于新 的软 件项目 。

但是 ,在 大多数 情况 下,必 须对 构件进 行或 多


或少 的修 改,以 适应 新的需 求。

为了 减少 构件修 改的 工作量 ,要 求开发 人员 尽


量使 构件 的功能 、行 为和接 口设 计更为 抽象化 、通
用化 和参 数化。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件重用

◎ 构件组 装

◇ 基于功 能的 组装技 术

◇ 基于数 据的 组装技 术

◇ 面向对 象的 组装技 术
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件重用

◎ 构件组 装

◇ 基于功能 的组 装技术

基于功能的组 装技术采用 子程序 调用 和参数传 递的方式


将构件 组装起来。 它要求库中的 构件以子程 序 / 过程 / 函数的
形式出 现,并且接 口说明必须清 晰。当使用 这种组装技 术进行
软件开 发时,开发 人员首先应对 目标软件系 统进行功能 分解,
将系统 分解为 强内聚 、松耦合 的功能模块。 然后根据各 模块的
功能需 求提取构件 ,对它进行适 应性修改后 再挂接在上 述功能
分解框 架中。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件重用

◎ 构件组 装

◇ 基于数据 的组 装技术

首先根据 当前软件问 题的核心数 据结构设计出 一个 框架


,然后 根据框架中 各结点的需求 提取构件 并进行适应性修 改,
再将构 件逐个 分配 至框架 中的适当 位置。此 后,构件的组 装方
式仍然 是传统的 子程序调用 与参数传递 。这 种组装技术 也要求
库中构 件以子程序 形式出现,但 它所依赖的 软件设计方 法不再
是功能 分解,而是 面向数据 的设 计方法,例 如 Jac ks on 系统开
发方法 。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 构件重用

◎ 构件组 装

◇ 面向对象 的组 装技术

· 构造法
在子类 中引进 基类 的对象 作为子 类的 成员变 量
,然 后在 子类中 通过 成员变 量重 用基类 的属性 和方
法。

· 子类法
将新子 类直接 说明 为库中 基类的 子类 ,通过 继
承和 修改 基类的 属性 与行为 完成 新子类 的定义 。
第 1 章 软件体 系结构概论 1. 2 构件与软 件重 用

◇ 软件重用实 例

自学
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 背景资料

◎ 随着软 件系统 规模 越来越 大、越 来越 复杂, 整个


系统 的结 构和规 格说 明显得 越来 越重要 。

◎ 对于大 规模的 复杂 软件系 统来说 ,对 总体的 系统


结构 设计 和规格 说明 比起对 计算 的算法 和数 据结构
的选 择已 经变得 明显 重要得 多。

◎ 对软件 体系结 构的 系统、 深入的 研究 将会成 为提


高软 件生 产率和 解决 软件维 护问 题的新 的最 有希望
的途 径。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 背景资料

◎ 事实上 ,软件 总是 有体系 结构的 ,不 存在没


有体 系结 构的软 件。

◎ 软件体 系结构 虽脱 胎于软 件工程 ,但 其形成


同时 借鉴 了计算 机体 系结构 和网 络体系 结构 中很
多宝 贵的 思想和 方法 ,最近 几年 软件体 系结 构研
究已 完全 独立于 软件 工程的 研究 ,成为 计算 机科
学的 一个 最新的 研究 方向和 独立 学科分 支。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的定义

◎ Deway ne P erry 和 A1e xand er Wo 1f

软件体系 结构是 具有 一定形 式的 结构化 元素 ,即


构件 的集 合,包 括处 理构件 、数 据构件 和连接 构件 。

处理构件 负责对 数据 进行加 工, 数据构 件是 被加


工的 信息 ,连接 构件 把体系 结构 的不同 部分组 合连 接
起来 。

这一定义 注重区 分处 理构件 、数 据构件 和连 接构


件, 这一 方法在 其他 的定义 和方 法中基 本上得 到保 持。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的定义

◎ Mary Shaw 和 David G arla n

软件体 系结构是软 件设计过程 中的一个 层次 ,这一层次


超越 计算过 程中的算 法设计和 数据结构设计 。

体系结构问 题包括总体 组织和全局 控制、通讯 协议、同


步、数 据存取,给 设计元素分 配特定功能, 设计元素的 组织
,规模 和性能,在 各设计方案 间进行选择等 。

软件体系结 构处理算法 与数据结构 之上关于整 体系统结


构设计 和描述方面 的一些问题 ,如全局组织 和全局控制 结构
、关于 通讯、同步 与数据存取 的协议,设计 构件功能定 义,
物理分 布与合成, 设计方案的 选择、评估与 实现等 。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的定义

◎ Kruch ten

软件体 系结构 有四 个角度 ,它 们从 不同方 面对


系统 进行 描述: 概念 角度描 述系统 的主 要构件 及它
们之 间的 关系; 模块 角度包 含功能 分解 与层次 结构
;运行角度描述 了一 个系统 的动 态结构 ;代码角度
描述 了各 种代码 和库 函数在 开发 环境中 的组 织。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的定义

◎ Hayes Rot h

软件体系 结构 是一个 抽象 的系统规范 ,主 要包


括用 其行 为来描 述的 功能构 件和 构件之 间的相 互连
接、 接口 和关系 。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的定义

◎ David Gar lan 和 Dewne Perry

软件体 系结构 是一 个程序 /系 统各 构件的 结构


、它 们之 间的相 互关 系以及 进行 设计的 原则和 随时
间演化的指导方 针。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的定义

◎ Barr y Boe hm

软件体系 结构 包括一 个软 件和系 统构 件,互 联


及约 束的 集合; 一个 系统需 求说明的 集合; 一个 基
本原 理用 以说明 这一 构件, 互联 和约束 能够 满足系
统需 求。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的定义

◎ Bass , Ctement s 和 Kazman

软件体系 结构 包括一 个或 一组软 件构 件、软 件


构件 的外部的可 见特 性及其 相互 关系。 其中 ,“软
件外 部的 可见特 性” 是指软 件构 件提供 的服 务、性
能、 特性 、错误 处理 、共享 资源 使用等 。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的定义

◎ 我们的 定义

软件体系 结构 为软件 系统提 供了 一个结 构、 行


为和 属性 的高级 抽象 ,由构 成系 统的元 素的 描述、
这些 元素 的相互 作用 、指导 元素 集成的 模式 以及这
些模 式的 约束组 成。 软件体 系结 构不仅 指定 了系统
的组织结 构和拓扑结 构,并且 显示了 系统 需求和 构
成系 统的 元素之 间的 对应关 系, 提供了 一些 设计决
策的 基本 原理。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的意义

◎ 体系结 构是风 险承 担者进 行交 流的手 段

软件体系 结构 代表了 系统的 公共 的高层 次的 抽


象。 这样 ,系统 的大 部分有 关人 员(即 使不 是全部
)能 把它 作为建 立一 个互相 理解 的基础 ,形 成统一
认识 ,互 相交流 。

体系结构 提供 了一种 共同语 言来 表达各 种关 注


和协 商, 进而对 大型 复杂系 统能 进行理 智的 管理。
这对 项目 最终的 质量 和使用 有极 大的影 响。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的意义

◎ 体系结 构是早 期设 计决策 的体 现

( 1 )软 件体 系结构 明确 了对系 统实 现的约 束条件


( 2 )软 件体 系结构 决定 了开发 和维 护组织 的组织
结构
( 3 )软 件体 系结构 制约 着系统 的质 量属性
( 4 )通 过研 究软件 体系 结构可 能预 测软件 的质量
( 5 )软 件体 系结构 使推 理和控 制更 改更简 单
( 6 )软 件体 系结构 有助 于循序 渐进 的原型 设计
( 7 )软 件体 系结构 可以 作为培 训的 基础
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的意义

◎ 软件体 系结构 是可 传递和 可重 用的模 型

软件体系 结构 级的重 用意味 着体 系结构 的决 策


能在 具有 相似需 求的 多个系 统中 发生影 响, 这比代
码级 的重 用要有 更大 的好处 。
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的 发展史
以汇 编语言进行 小规模应用 程序
“ 无体系 结构”设计 阶 开发 为特征

出现 了程序结构 设计主题, 以控制
萌芽阶 段 流图 和数据流图 构成软件结 构为特

初期阶 段 出现了从 不同侧面描 述系统的结 构


模型,以 UML 为典 型代表。

以描述系 统的高层抽 象结构为中 心


,不关心 具体的建模 细节,划分 了
高级阶 段 体系结构 模型与传统 软件结构的 界
限,该阶 段以 Kru cht en 提出的“
4+1 ” 模型 为标志
第 1 章 软件体 系结构概论 1. 3 体系 结构 的兴起 和发

◇ 软件体系结 构的 发展史

Perry 和 Wolf 认为

未来的 年代 是研究 软件 体系结 构的 时代


第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 软件体系 结构 描述语 言
◎ 体系结构 描述 构造与 表示
◎ 体系结构 分析 、设计 与验 证
◎ 体系结构 发现 、演化 与重 用
◎ 基于体系 结构 的软件 开发 方法
◎ 特定领域 的体 系结构 框架
◎ 软件体系 结构 支持工 具
◎ 软件产品 线体 系结构
◎ 建立评价 软件 体系结 构的 方法
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 软件体 系结构 描述 语言

ADL 提供了 具体的 语法与 刻画 体系结 构的 概念


框架 。 AD L 使得系 统开发 者能 够很好 地描 述他 们设
计的 体系 结构, 以便 与他人 交流 ,能够 用提 供的工
具对 许多 实例进 行分 析。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构描述 构造 与表示 ( 1 )

按照一定 的描 述方法 ,用体 系结 构描述 语言 对


体系 结构 进行说 明的 结果则 称为 体系结 构的 表示,
而将 描述 体系结 构的 过程称 为体 系结构 构造
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构描述 构造 与表示 ( 2 )


( 1 ) Kruc ht en 提出的 “ 4+1 ” 模型。

( 2 ) Booc h 从 UML 的角度 给出了一 种由设计视 图、过程视 图


、实现 视图和部署 视图,再加上 一个用例视 图构成的体 系结构
描述模 型。

( 3 ) IEEE 于 19 95 年成立 了体系结构 工作组,起草 了体系结


构描述 框架标准 IEEE P 14 71 。

( 4 ) Rati on al 从资产 重用的角 度提出了 体系结构描述 的规格


说明框 架。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构分析 、设 计与验 证( 1 )

体系结构 分析 的内容 可分为 结构 分析 、功能分


析和非功 能分 析。
非功能分 析: 定量分 析方法 、推 断分析 方法 。
Kaz ma n 等人提 出了一 种非 功能分 析的 体系 结
构分 析方 法 SAA M ,并运 用场景 技术 ,提出 了基 于
场景 的体 系结构 分析 方法, 而 Ba rba cci 等人提出
了多 质量 属性情 况下 的体系 结构 质量模 型、 分析与
权衡 方法 ATAM 。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构分析 、设 计与验 证( 2 )

生成一个 满足软 件需 求的体 系结 构的过 程即 为


体系 结构 设计。 体系 结构设 计过 程的本 质在 于:将
系统 分解 成相应 的组 成成分 (如 构件、 连接 件),
并将 这些 成分重 新组 装成一 个系 统。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构分析 、设 计与验 证( 3 )

体系结构 设计有 两大 类方法 :过 程驱动 方法 和


问题 列表 驱动方 法。
基于过程 驱动的 体系 结构设 计方 法适用 范围 广
,易 于裁 减,具 备动 态特点 ,通 用性与 实践 性强。
问题列表 驱动法 的基 本思想 是枚举设计 空间 ,
并考 虑设 计维的 相关 性,以 此来 选择体 系结 构的风
格。 该方 法适用 于特 定领域 ,是 静态的 ,并 可以实
现量 化体 系结构 设计 空间。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构分析 、设 计与验 证( 4 )

体系结构 设计研 究的 重点内 容之 一就是 体系 结


构风 格或 模式, 体系 结构模 式在 本质上 反映 了一些
特定 的元 素、按 照特 定的方 式组 成一个 特定 的结构
,该 结构 应有利 于上 下文环 境下 的特定 问题 的解决

第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构分析 、设 计与验 证( 5 )

体系结构 模式 分为两 个大类 :固 定术语 和参 考


模型 。

已知的固 定术 语类的 体系结 构模 型包括 管道 过


滤器 、客 户 / 服务器 、面向 对象、 黑板 、分层 、对
等模 式、 状态转 换、 一些派 生的 固定术 语类 的体系
结构 模式 ,包括 Ge n Vo ca , C2 和 RES T 等;而 参考
模型 则相 对较多 ,常 常与特 定领 域相关 。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构分析 、设 计与验 证( 6 )

体系 结构 测试着 重于 仿真系 统模 型,解 决体系


结构 层的 主要问 题。 由于测 试的 抽象层 次不同 ,体
系结 构测 试策略 可以 分为单 元 / 子系统 / 集成 / 验收
测试 等阶 段的测 试策 略。

在体 系结 构集成 测试 阶段, Deb ra 等人提出 了


一组 针对 体系结 构的 测试覆 盖标 准, Pa ola
In ver ad i 提出了 一种基 于 CH AM 的体 系结 构语义验
证技 术。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构发现 、演 化与重 用( 1 )

体系结构 发现 解决如 何从已 经存 在的系 统中 提


取软 件的 体系结 构, 属于逆 向工 程范畴 。

Wat er s 等人提 出了一 种迭 代式体 系结 构发 现


过程 ,即 由不同 的人 员对系 统进 行描述 ,然 后对这
些描 述进 行分类 并融 合,发 现并 解除冲 突, 将体系
结构 新属 性加入 到已 有的体 系结 构模型 中, 并重复
该过 程直 至体系 结构 描述充 分。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构发现 、演 化与重 用( 2 )

由于系统 需求 、技术 、环境 、分 布等因 素的 变


化而 最终 导致软 件体 系结构 的变 动,称 之为 软件体
系结 构演 化。

软件系统 在运 行时刻 的体系 结构 变化称 为体 系


结构 的动 态性, 而将 体系结 构的 静态修 改称 为体系
结构 扩展 。体系 结构 扩展与 体系 结构动 态性 都是体
系结 构适 应性和 演化 性的研 究范 畴。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 体系结 构发现 、演 化与重 用( 3 )

体系结构 重用 属于设 计重用 ,比 代码重 用更 抽


象。 由于 软件体 系结 构是系 统的 高层抽 象, 反映了
系统 的主 要组成 元素 及其交 互关 系,因 而较 算法更
稳定 ,更 适合于 重用 。

体系结构 模式 就是体 系结构 重用 研究的 一个 成


果, 而体 系结构 参考 模型则 是特 定域软 件体 系结构
的重 用的 成熟的 象征 。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 基于体 系结构 的软 件开发 方法 ( 1 )

在引入了 体系 结构的 软件开 发之 后,应 用系 统


的构 造过 程变为 “问题定义 — > 软件需 求— > 软件
体系 结构 — > 软件设 计— > 软件实 现”,可 以认为
软件 体系 结构架 起了 软件需 求与 软件设 计之 间的一
座桥 梁。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 基于体 系结构 的软 件开发 方法 ( 2 )

软件开发 模型 是跨越 整个软 件生 存周期 的系 统


开发 、运 行、维 护所 实施的 全部 工作和 任务 的结构
框架 ,给 出了软 件开 发活动 各阶 段之间 的关 系。
目前,常 见的 软件开 发模型 大致 可分为 三种 类
型:
( 1 )以 软件 需求完 全确 定为前 提的 瀑布模 型。
( 2 )在 软件 开发初 始阶 段只能 提供 基本需 求时采
用的 渐进 式开发 模型 ,如螺 旋模 型等。
( 3 )以 形式 化开发 方法 为基础 的变 换模型 。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 基于体 系结构 的软 件开发 方法 ( 3 )

所有开发 方法都 是要 解决需 求与 实现之 间的 差距。


但是 ,这 三种类 型的 软件开 发模 型都存 在这 样或那
样的 缺陷 ,不能 很好 地支持 基于 软件体 系结 构的开
发过 程。

在基于构 件和基 于体 系结构 的软 件开发 逐渐 成为


主流 情况 下,已 经出 现了 基于构 件的软 件工 程。
但是,对 体系结 构的 描述、 表示 、设计 和分 析以
及验 证等 内容的 研究 还相对 不足 ,随着 需求 复杂化
及其 演化 ,切实 可行 的体系 结构 设计规 则与 方法将
更为 重要 。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 特定领 域的体 系结 构框架

特定领域 的体系 结构 是将体 系结 构理论 应用 到具


体领 域的 过程, 常见 的 DSS A 有: CAS E 体系结 构
、 CA D 软件 的参 考模型、 信息 系统 的参考 体系 结构
、网 络体 系结构 DS SA 、机场信 息系 统的体 系结 构
和信 息处 理 DSS A 等。国 内学者 提出 的 DS SA 有: 北
京邮 电大 学周莹 新博 士提出 的电 信软件 的体 系结构
,北 京航 空航天 大学 金茂忠 教授 等人提 出的 测试环
境的 体系 结构等 。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 软件体 系结构 支持 工具

几乎每种 体系 结构都 有相应 的支 持工具 ,如


Un ic on , Ae so p 等体系 结构 支持环 境, C2 的支持
环境 Arch St udi o ,支持 主动连接件 的 Tr ac er 工具
等。

支持体系 结构 分析的 工具, 如支 持静态 分析 的


工具 、支 持类型 检查 的工具 、支 持体系 结构 层次依
赖分 析的 工具、 支持 体系结 构动 态特性 仿真 工具、
体系 结构 性能仿 真工 具等。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 软件产 品线体 系结 构( 1 )

产品线代 表着 一组具 有公共 的系 统需求 集的 软


件系 统, 它们都 是根 据基本 的用 户需求 对标 准的产
品线 构架 进行定 制, 将可重 用构 件与系 统独 有的部
分集 成而 得到的 。

软件产品 线是 一个十 分适合 专业 的软件 开发 组


织的 软件 开发方 法, 能有效 地提 高软件 生产 率和质
量、 缩短 开发时 间、 降低总 开发 成本。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 软件产 品线体 系结 构( 2 )

软件体 系结 构有利 于形 成完 整的软 件产品 线。

体系结构 在软 件产品 线的开 发中 具有至 关重 要


的作 用, 在这种 开发 生产中 ,基 于同一 个软 件体系
结构 ,可 以创建 具有 不同功 能的 多个系 统。
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

◎ 建立评 价软件 体系 结构的 方法

目前 ,常 用的三 个软 件体系 结构 评估方 法是 :

( 1 )体 系结 构权衡 分析 方法( ATA M 方法)

( 2 )软 件体 系结构 分析 方法( SAA M 方法)

( 3 )中 间设 计的积 极评 审( AR ID 方法 )
第 1 章 软件体 系结构概论 1. 4 体系 结构 的应用 现状

◇ 软件体系结 构的应用现 状

目前,软件体系 结构尚处 在迅速发 展之中,越来 越多的研


究人员 正在把注意 力投向软件 体系结构的 研究。关于软 件体系
结构的 研究工作主 要在国外展 开的,国内 到目前为止对 于软件
体系结 构的研究尚 处在起步阶 段。软件体 系结构在国内 未引起
人们广 泛注意的原 因主要有两 点:

( 1 )软件体系结 构从表面上 看起来是 一个老话题 ,似乎没


有新东 西。

( 2 )与国外 相比,国内对 大型和超大 型复杂软件 系统


开发的 经历相对较 少,对软件 危机的灾难 性体会没有国 外深刻
,因而 对软件体系 结构研究的 重要性和必 要性的认识还 不很充
分。
第 1 章 软件体 系结构概论 本章作业 与思考 题

1 、根据自己的 经验,谈谈 对软件危 机的看法。

2 、就项目管理 方面而言, 软件重用 项目与非重 用项目有哪 些


不同之 处。

3 、实际参与 / 组织一 个软件重用 项目的开发, 然后总结你 是


如何组 织该项目的 开发的。

4 、为什么要研 究软件体系 结构?

5 、根据软件体 系结构的定 义,你认 为软件体系 结构的模型 应


该由哪 些部分组成 ?

6 、在软件体系 结构的研究 和应用中 ,你认为还 有哪些不足 之


处?
课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 2 章 软件体 系结构建模 2. 1 软件 体系 结构建 模概

◇ 软件体系结 构建模的种 类

◎ 结构模 型

◎ 框架模 型

◎ 动态模 型

◎ 过程模 型

◎ 功能模 型
第 2 章 软件体 系结构建模 2. 1 软件 体系 结构建 模概

◇ 软件体系结 构建模的种 类

◎ 结构模 型

这是一 个最直 观、 最普遍 的建模 方法 。这


种方 法以 体系结 构的 构件、 连接 件和其 他概 念来
刻画 结构 ,并力 图通 过结构 来反 映系统 的重 要语
义内 容, 包括系 统的 配置、 约束 、隐含 的假 设条
件、 风格 、性质 等。

研究结 构模型 的核 心是体 系结构 描述 语言。


第 2 章 软件体 系结构建模 2. 1 软件 体系 结构建 模概

◇ 软件体系结 构建模的种 类

◎ 框架模 型

框架模 型与结 构模 型类似 ,但它 不太 侧重描 述


结构 的细 节而更 侧重 于整体 的结 构。

框架模 型主要 以一 些特殊 的问题 为目 标建立 只


针对 和适 应该问 题的 结构。
第 2 章 软件体 系结构建模 2. 1 软件 体系 结构建 模概

◇ 软件体系结 构建模的种 类

◎ 动态模 型

动态模 型是对 结构 或框架 模型的 补充 ,研究 系


统的 “大 颗粒” 的行 为性质 。例 如,描 述系 统的
重新 配置 或演化 。动 态可以 指系 统总体 结构 的配
置、 建立 或拆除 通信 通道或 计算 的过程 。
第 2 章 软件体 系结构建模 2. 1 软件 体系 结构建 模概

◇ 软件体系结 构建模的种 类

◎ 过程模 型

过程模 型研究 构造 系统的 步骤 和过 程。

结构是 遵循某 些过 程脚本 的结 果。


第 2 章 软件体 系结构建模 2. 1 软件 体系 结构建 模概

◇ 软件体系结 构建模的种 类

◎ 功能模 型

功能模型 认为 体系结 构是 由一组 功能 构件按 层


次组 成, 下层向 上层 提供服 务。

功能模 型可以 看作 是一种 特殊 的框 架模型 。


第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ “4+1” 模型概述

Kr uch te n 在 199 5 年提出 了“ 4+ 1” 的视图 模


型。

“4+ 1” 视图模型 从 5 个不同 的视角 包括 逻辑


视图 、进 程视图 、物 理视图 、开 发视图 和场 景视
图来 描述 软件体 系结 构。

每一个 视图只 关心 系统的 一个侧 面, 5 个视图


结合 在一 起才能 反映 系统的 软件 体系结 构的 全部
内容 。
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ “4+1” 模型概述

最终 用户 :功能 需求 编程 人员 :软件 管理
逻辑 视图 开发 视图

场景

进程 视图 物理 视图
系统 集成 人员: 性能 系统 工程 人员: 系统
可扩 充性 、吞吐 量等 拓扑 、安 装、通 信等
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 逻辑视图

逻辑视 图主 要支持 系统 的功 能需求 ,即系 统提


供给最终 用户 的服务 。在逻 辑视 图中, 系统 分解
成一系列 的功 能抽象 ,这些 抽象 主要来 自问 题领
域。这种 分解 不但可 以用来 进行 功能分 析, 而且
可用作标 识在 整个系 统的各 个不 同部分 的通 用机
制和设计 元素 。

在面向 对象 技术中 ,通 过抽 象、封 装和继 承,


可以用对 象模 型来代 表逻辑 视图 ,用类 图来 描述
逻辑视图 。
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 逻辑视图

可以从 Booc h 标记法 中导出逻 辑视图的标 记法,只是 从


体系结 构级的范 畴来考虑这 些符号,用 Rati on al Rose 进
行体系 结构设计 。
构件 连接 件
类 关联

包含, 聚集

类服务 使用

继承

参数化 类 实例

类层次
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 逻辑视图
逻辑视图 中使用的风 格为面向对 象的风格,逻 辑视图设
计中要 注意的主 要问题是要 保持一个单一 的、内聚的 对象模
型贯穿 整个系统 。

会话 转换服务

终端 连接服务

编号计划
控制器
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 逻辑视图

对于规模 更大的系统 来说,体系 结构级中包含 数十甚至


数百个 类 。
显示及用户
接口
外部接口网
仿真和培训 关

空中交通管
飞行管理

航空信息
机械服务

基本元素
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 开发视图

开发视 图也 称模块 视图 ,主 要侧重 于软件 模块


的组织和 管理 。

开发视 图要 考虑软 件内 部的 需求, 如软件 开发


的容易性 、软 件的重 用和软 件的 通用性 ,要 充分
考虑由于 具体 开发工 具的不 同而 带来的 局限 性。

开发视图 通过 系统输 入输出 关系 的模型 图和 子系


统图来描 述。
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 开发视图

与逻辑视 图一 样,可 以使用 Boo ch 标记法中 某些


符号来表 示开 发视图 。
构件 连接件

模块 参照相关性

子系统


第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 开发视图

在开发 视图中 ,最好 采用 4-6 层子系统 ,而且


每个子系 统仅 仅能与 同层或 更低 层的子 系统 通讯
,这样可 以使 每个层 次的接 口既 完备又 精练 ,避
免了各个 模块 之间很 复杂的 依赖 关系。

设计时 要充 分考虑 ,对 于各 个层次 ,层次 越低


,通用性 越强 ,这样 ,可以 保证 应用程 序的 需求
发生改变 时, 所做的 改动最 小。 开发视 图所 用的
风格通常 是层 次结构 风格。
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 开发视图

通用空中交通管制代码 客户定制
各种各样的空中 5 人机接口 离线工具
交通管制系统 外部系统 测试工具

领域特定
特定的空中交通 4
管制系统构件 空中交通管制功能区:飞行管理、雷达管理等

空中交通管制 3
航空类、空中交通管制类
系统框架

分布式虚拟机 2

领域无关
支撑机制:通信、时间、储存、资源管理等

基本元素 1
公用构件 低层服务

硬件、操作系
统、数据库
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 进程视图

进程视 图侧 重于系 统的 运行 特性, 主要关 注一


些非功能 性的 需求。
进程视 图强 调并发 性、 分布 性、系 统集成 性和
容错能力 ,以 及从逻 辑视图 中的 主要抽 象如 何适
合进程结 构。 它也定 义逻辑 视图 中的各 个类 的操
作具体是 在哪 一个线 程中被 执行 的。
进程视 图可 以描述 成多 层抽 象,每 个级别 分别
关注不同 的方 面。在 最高层 抽象 中,进 程结 构可
以看作是 构成 一个执 行单元 的一 组任务 。它 可看
成一系列 独立 的,通 过逻辑 网络 相互通 信的 程序。
它们是分 布的 ,通过 总线或 局域 网、广 域网 等硬
件资源连 接起 来。
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 进程视图

通过扩展 Boo ch 对 Ad a 任务 的表 示法,来 表示


进程视图 。
构件 连接件

未指定
进程
消息

远程过程调用

简化进程 双向消息

事件广播
循环进程
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 进程视图

终端进程

控制器进程

慢周期控 主控制
制器任务 快周期控 器任务
制器任务
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 物理视图

物理视 图主 要考虑 如何 把软 件映射 到硬件 上,


它通常要 考虑 到系统 性能、 规模 、可靠 性等 。解
决系统拓 扑结 构、系 统安装 、通 讯等问 题。

当软件 运行 于不同 的节 点上 时,各 视图中 的构


件都直接 或间 接地对 应于系 统的 不同节 点上 。因
此,从软 件到 节点的 映射要 有较 高的灵 活性 ,当
环境改变 时, 对系统 其他视 图的 影响最 小。
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 物理视图

大型系 统的 物理视 图可 能会 变得十 分混乱 ,因


此可以与 进程 视图的 映射一 道, 以多种 形式 出现
,也可单 独出 现。
构件 连接件

通信
处理器

临时通信

单向通信

其他设备 双向通信

宽带或总线
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 物理视图

ACS 系统的物 理视 图
C C
主 备份

F F F F
主 备份 主 备份

K K K K K K K K
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 物理视图

F
具有 进程 分配
会话进程
的小 型 AC S 系
统的 物理 视图

终端进程

控制器进程
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 物理视图 C

中心进程
备份节点

具有进程 分
F F
配的大 型 伪中心进程 伪中心进程

ACS 系统 的
物理视 图 会话进程 会话进程

终端进程 终端进程 更多的K类


处理器

K K K

控制器进程 控制器进程 控制器进程

线路接口卡 线路接口卡 线路接口卡


第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 场景

场景 可以 看作是 那些 重要系 统活 动的抽 象, 它


使四 个视 图有机 联系 起来, 从某 种意义 上说场 景是
最重 要的 需求抽 象。 在开发 体系 结构时 ,它可 以帮
助设 计者 找到体 系结 构的构 件和 它们之 间的作 用关
系。 同时 ,也可 以用 场景来 分析 一个特 定的视 图,
或描 述不 同视图 构件 间是如 何相 互作用 的。

场景 可以 用文本 表示 ,也可 以用 图形表 示。


第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 场景

本地呼 叫场 景的一 个原 型

(1)摘机

(2)拨号音 (4)号码
小王:控制器 小王:终端 编号计划
(3)号码

(5)打
开会话

小王:会话
第 2 章 软件体 系结构建模 2.2 “ 4+1 ” 视图模 型

◇ 小结

逻辑 视图 和开发 视图 描述系 统的 静态结 构, 而


进程 视图 和物理 视图 描述系 统的 动态结 构。

对于 不同 的软件 系统 来说, 侧重 的角度 也有 所


不同 。例 如,对 于管 理信息 系统 来说, 比较侧 重于
从逻 辑视 图和开 发视 图来描 述系 统,而 对于实 时控
制系 统来 说,则 比较 注重于 从进 程视图 和物理 视图
来描 述系 统。
第 2 章 软件体 系结构建模 2. 3 体系 结构 的核心 模型

软件体系结构

1:N

配置 连接件

构件
1:N

1:N
端口 角色
第 2 章 软件体 系结构建模 2. 4 体系结 构的生命周 期模型

◇ 软件过程

需求分析

建立体系 结

设计

实现

测试
第 2 章 软件体 系结构建模 2. 4 体系结 构的生命周 期模型

◇ 生命周期模 型
体系结构的形式化
体系结构的非
基础(数学模型)
形式化描述

体系结构的终结

体系结构的 体系结构的
性质分析 规范描述
体系结构提供、
评价和度量


需要演化 需要求精
体系结构实施
或扩展否 否


体系结构演化 体系结构求精的验证 体系结构求精


第 2 章 软件体 系结构建模 2.5 软件体系结构抽 象模型

选读
第 2 章 软件体 系结构建模 本章作业与 思考题

1 、选择 一个 规模合 适的 系统 ,为其 建


立“ 4+ 1” 模型。

2 、引入 了软 件体系 结构 以后 ,传统 软件 过程发 生


了哪 些变 化?这 种变 化有什 么好 处?

3 、软件 体系 结构的 生命 周期 模型与 软件 生命周 期


模型 有什 么关系 ?
课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 3 章 软件体 系结构风格 3. 1 软件 体系 结构风 格概

◇ 定义

软件体系 结构 风格是 描述 某一特 定应 用领域 中系


统组 织方 式的惯 用模 式。

体系结构 风格 定义了 一个 系统家 族, 即一个 体系


结构 定义 一个词 汇表 和一组 约束 。词汇 表中包 含一
些构 件和 连接件 类型 ,而这 组约 束指出 系统是 如何
将这 些构 件和连 接件 组合起 来的 。

体系结构 风格 反映了 领域 中众多 系统 所共有 的结


构和 语义 特性, 并指 导如何 将各 个模块 和子系 统有
效地 组织 成一个 完整 的系统 。
第 3 章 软件体 系结构风格 3. 1 软件 体系 结构风 格概

◇ 讨论体系结 构风格时要 回答的问题

◎ 构件和 连接件 的类型 是什 么?


◎ 可容许 的结构 模式是 什么 ?
◎ 基本的 计算模 型是什 么?
◎ 风格的 基本不 变性是 什么 ?
◎ 其使用 的常见 例子是 什么 ?
◎ 使用此 风格的 优缺点 是什 么?
◎ 其常见 的特例 是什么 ?
第 3 章 软件体 系结构风格 3. 1 软件 体系 结构风 格概

◇ 经典的体系 结构风格

◎ 数据 流风 格:批处 理序 列; 管道 / 过滤 器。

◎ 调用 / 返回风 格: 主程序 / 子程序; 面向 对象


风格 ;层 次结构 。

◎ 独立 构件 风格:进 程通 讯; 事件系 统。

◎ 虚拟 机风 格:解释 器; 基于 规则的 系统 。

◎ 仓库风 格:数 据库 系统; 超文本 系统 ;黑板 系


统。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 管道和过滤 器

每个构件 都有 一组输 入和 输出, 构件读 输入 的数


据流 ,经 过内部 处理 ,然后 产生 输出数 据流。 这个
过程 通常 通过对 输入 流的变 换及 增量计 算来完 成,
所以 在输 入被完 全消 费之前 ,输 出便产 生了。

这里的构 件被 称为过 滤器 ,这种 风格的 连接 件就


象是 数据 流传输 的管 道,将 一个 过滤器 的输出 传到
另一 过滤 器的输 入。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 管道和过滤 器

管道

过滤器
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 管道和过滤 器风格的优 点

◎ 使得软构件 具有良好的隐 蔽性和高 内聚、低耦 合的特点


◎ 允许设计者将 整个系统的 输入 / 输出行为看 成是多个过


滤器的 行为的简单 合成;

◎ 支持软件重 用。只要提供 适合在两 个过滤器之 间传送的


数据, 任何两个过 滤器都可被 连接起来;

◎ 系统维护和 增强系统性能 简单。新 的过滤器可 以添加到


现有系 统中来;旧 的可以被改 进的过滤器替 换掉;

◎ 允许对一些 如吞吐量、 死锁等属性 的分析;

◎ 支持并行执 行。每个过滤 器是作为 一个单独的 任务完成


,因此 可与其它任 务并行执行 。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 管道和过滤 器的缺点

◎ 通常导致进 程成为批处 理的结构。 这是因为虽 然过滤器


可增量 式地处理数 据,但它们 是独立的, 所以设计者必 须
将每个 过滤器看成 一个完整的 从输入到输 出的转换;

◎ 不适合处理 交互的应用 。当需要增 量地显示改 变时,这


个问题 尤为严重;

◎ 因为在数据 传输上没有 通用的标准 ,每个过滤 器都增加


了解析 和合成数据 的工作,这 样就导致了 系统性能下降 ,
并增加 了编写过滤 器的复杂性 。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 数据抽象和 面向对象组 织

这种风 格建立 在数 据抽象 和面 向对 象的基


础上 ,数 据的表 示方 法和它 们的 相应操 作封 装在
一个 抽象 数据类 型或 对象中 。

这种风 格的构 件是 对象, 或者 说是 抽象数


据类 型的 实例。 对象 是一种 被称 作管理 者的 构件
,因 为它 负责保 持资 源的完 整性 。对象 是通 过函
数和 过程 的调用 来交 互的。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 数据抽象和 面向对象组 织

对象 对象

对象 抽象数
据类型

对象
对象

过程调用
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 面向对象系 统的优点

◎ 因为 对象 对其它 对象 隐藏它 的表 示,所 以可


以改 变一 个对象 的表 示,而 不影 响其它 的对 象;

◎ 设计 者可 将一些 数据 存取操 作的 问题分 解成


一些 交互 的代理 程序 的集合 。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 面向对象系 统的缺点

◎ 为了 使一 个对象 和另 一个对 象通 过过程 调用


等进 行交 互,必 须知 道对象 的标 识。只 要一 个对
象的 标识 改变了 ,就 必须修 改所 有其他 明确 调用
它的 对象 ;

◎ 必须 修改 所有显 式调 用它的 其它 对象, 并消


除由 此带 来的一 些副 作用。 例如 ,如果 A 使用了
对象 B , C 也使 用了 对象 B ,那 么, C 对 B 的使
用所 造成 的对 A 的影 响可 能是料想 不到的。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 基于事件的 隐式调用

构件不直接 调用一个过 程,而是触 发或广播一 个或多个


事件。 系统中的其 它构件中的 过程在一个 或多个事件中 注
册,当 一个事件被 触发,系统 自动调用在 这个事件中注 册
的所有 过程,这样 ,一个事件 的触发就导 致了另一模块 中
的过程 的调用。

这种风格的 构件是一些 模块,模块 既可以是一 些过程,


又可以 是一些事件 的集合。过 程可以用通 用的方式调用 ,
也可以 在系统事件 中注册一些 过程,当发 生这些事件时 ,
过程被 调用。

这种风格的 主要特点是 事件的触发 者并不知道 哪些构件


会被这 些事件影响 。这样不能 假定构件的 处理顺序,甚 至
不知道 哪些过程会 被调用,因 此,许多隐 式调用的系统 也
包含显 式调用作为 构件交互的 补充形式。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 基于事件的 隐式调用的 优点

◎ 为软 件重 用提供 了强 大的支 持。 当需要 将一


个构 件加 入现存 系统 中时, 只需 将它注 册到 系统
的事 件中 。

◎ 为改 进系 统带来 了方 便。当 用一 个构件 代替


另一 个构 件时, 不会 影响到 其它 构件的 接口 。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 基于事件的 隐式调用的 缺点

◎ 构件放弃了 对系统计算 的控制。一 个构件触发 一个事件


时,不 能确定其它 构件是否会 响应它。而 且即使它知道 事
件注册 了哪些构件 的构成,它 也不能保证 这些过程被 调用
的顺序 。

◎ 数据交 换的问题 。有时数据 可被一个事 件传递,但


另一些 情况下,基 于事件的系 统必须依靠 一个共享的仓 库
进行交 互。在这些 情况下,全 局性能和资 源管理便成了 问
题。

◎ 既然过程的 语义必须依 赖于被触发 事件的上下 文约束,


关于正 确性的推理 存在问题。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 分层系统

层次系统组织 成一个层次 结构,每 一层为上层 服务,并


作为下 层客户。在 一些层次系 统中,除了 一些精心挑选 的输
出函数 外,内部的 层只对相邻 的层可见。 这样的系统中 构件
在一些 层实现了虚 拟机(在另 一些层次系 统中层是部分 不透
明的) 。连接件通 过决定层间 如何交互的 协议来定义, 拓扑
约束包 括对相邻层 间交互的约 束。

这种风格支持基 于可增加 抽象层的 设计。允许将 一个复杂


问题分 解成一个增 量步骤序列 的实现。由 于每一层最多 只影
响两层 ,同时只要 给相邻层提 供相同的接 口,允许每层 用不
同的方 法实现,同 样为软件重 用提供了强 大的支持。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 分层系统

过程调用
用户系统

基本工具

核心层

各种构件
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 分层系统的 优点

◎ 支持 基于 抽象程 度递 增的系 统设 计,使 设计


者可 以把 一个复 杂系 统按递 增的 步骤进 行分 解;

◎ 支持 功能 增强, 因为 每一层 至多 和相邻 的上


下层 交互 ,因此 功能 的改变 最多 影响相 邻的 上下
层;

◎ 支持 重用 。只要 提供 的服务 接口 定义不 变,


同一 层的 不同实 现可 以交换 使用 。这样 ,就 可以
定义 一组 标准的 接口 ,而允 许各 种不同 的实 现方
法。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 分层系统的 缺点

◎ 并不 是每 个系统 都可 以很容 易地 划分为 分层


的模 式, 甚至即 使一 个系统 的逻 辑结构 是层 次化
的, 出于 对系统 性能 的考虑 ,系 统设计 师不 得不
把一 些低 级或高 级的 功能综 合起 来;

◎ 很难 找到 一个合 适的 、正确 的层 次抽象 方法



第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 仓库系统及 知识库

在仓库 风格中 ,有 两种不 同的构 件: 中央数 据


结构 说明 当前状 态, 独立构 件在 中央数 据存 贮上执
行, 仓库 与外构 件间 的相互 作用 在系统 中会 有大的
变化 。

控制原 则的选 取产 生两个 主要的 子类 。若输 入


流中 某类 时间触 发进 程执行 的选 择,则 仓库 是一传
统型 数据 库;另 一方 面,若 中央 数据结 构的 当前状
态触 发进 程执行 的选 择,则 仓库 是一黑 板系 统。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ 仓库系统及 知识库

计算

直接存取 知识源

知识源 黑板 知识源
(共享数据)

知识源 内存
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ C2 风格

通过连 接件绑定在 一起的按照一 组规则运作 的并行构件 网络。


C2 风格中 的系统组 织规则如下 :

◎ 系统中的构件 和连接件都 有一个顶 部和一个底 部;

◎ 构件的顶部应连 接到某连 接件的底 部,构件的底 部则应连


接到某 连接件的顶 部,而构件与 构件之间的 直接连接是 不允许
的;

◎ 一个连接件可 以和任意数 目的其它 构件和连接 件连接;

◎ 当两个连接件进 行直接连 接时,必 须由其中一个 的底部到


另一个 的顶部。
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ C2 风格

构件 构件 构件

连接件 连接件

构件 构件

连接件 连接件

连接件 连接件

构件 构件
第 3 章 软件体 系结构风格 3. 2 经典 软件 体系结 构风

◇ C2 风格的 特点

◎ 系统中的 构件 可实现 应用 需求, 并能将 任意 复杂


度的 功能 封装在 一起 ;

◎ 所有构件 之间 的通讯 是通 过以连 接件为 中介 的异


步消 息交 换机制 来实 现的;

◎ 构件相对 独立 ,构件 之间 依赖性 较少。 系统 中不


存在 某些 构件将 在同 一地址 空间 内执行 ,或某 些构
件共 享特 定控制 线程 之类的 相关 性假设 。
第 3 章 软件体 系结构风格 3. 3 客户 / 服务器 风格

◇ 产生背景

◎ 在集中 式计 算技术 时代广 泛使 用的 是大型 机 /


小型 机计 算模型 。它 是通过 一台 物理上 与宿 主机相
连接 的非 智能终 端来 实现宿 主机 上的应 用程 序。

◎ 20 世纪 80 年代 以后 ,集中 式结 构逐渐 被以 PC
机为 主的 微机网 络所 取代。 个人 计算机 和工 作站的
采用 ,永 远改变 了协 作计算 模型 ,从而 导致 了分散
的个 人计 算模型 的产 生。
第 3 章 软件体 系结构风格 3. 3 客户 / 服务器 风格

◇ 基本概念

◎ C/S 软件 体系 结构是 基于 资源不 对等 ,且为 实现


共享 而提 出来的 ,是 20 世纪 90 年代成 熟起来 的技
术, C/S 体系 结构 定义了 工作 站如何 与服 务器相 连
,以 实现 数据和 应用 分布到 多个 处理机 上。

◎ C/S 体系 结构 有三个 主要 组成部 分: 数据库 服务


器、 客户 应用程 序和 网络。
第 3 章 软件体 系结构风格 3. 3 客户 / 服务器 风格

◇ 体系结构

打印机
PWR

OK
WIC0
ACT/CH0

ACT/CH1
WIC0
ACT/CH0

ACT/CH1
ETH
ACT

COL

其他公用设备
调制解调器 数据库服务器
Power/TX Link/Rx LPT1 LPT2 COM
Print Server
Internet
Intranet

用户1 用户2 用户3 用户4 用户5


第 3 章 软件体 系结构风格 3. 3 客户 / 服务器 风格

◇ 任务分配

◎ 服务器
( 1 )数 据库 安全性 的要 求;

( 2 )数 据库 访问并 发性 的控制 ;

( 3 )数据 库前端 的客 户应用 程序 的全 局数


据完 整性 规则;

( 4 )数 据库 的备份 与恢 复。
第 3 章 软件体 系结构风格 3. 3 客户 / 服务器 风格

◇ 任务分配

◎ 客户应用程 序

( 1 )提 供用 户与数 据库 交互的 界面 ;

( 2 )向数 据库服 务器 提交用 户请 求并 接收来


自数 据库 服务器 的信 息;

( 3 )利用 客户应 用程 序对存 在于 客户 端的数


据执 行应 用逻辑 要求 。
第 3 章 软件体 系结构风格 3. 3 客户 / 服务器 风格

◇ 处理流程

输入数据 请求按钮 业务处理开始


业务处理请求和业务处
理所需的全部输入数据
数据存取请求

输出数据 业务处理结束
全部处理结束
表示层 业务处理程序

SQL 请求开始 业务处理开始


数据登录/更新/读取的
请求
数据存取请求
DBMS 执行SQL
业务处理结束
SQL 请求结束
数据登录/更新/读取的
结果 数据存取程序
数据层
第 3 章 软件体 系结构风格 3. 3 客户 / 服务器 风格

◇ 优点
◎ C/ S 体系结 构具有强 大的数据 操作和事务处 理能力,模
型思想 简单,易于 人们理解和 接受。

◎ 系统的客户应 用程序和服 务器构件 分别运行在 不同的计算


机上, 系统中每台 服务器都可 以适合各构件 的要求,这 对于
硬件和 软件的变化 显示出极大 的适应性和灵 活性,而且 易于
对系统 进行扩充和 缩小。

◎ 在 C/S 体系结 构中,系 统中的功 能构件充分隔 离,客户应


用程序 的开发集中 于数据的显 示和分析,而 数据库服务 器的
开发则 集中于数据 的管理,不 必在每一个新 的应用程序 中都
要对一 个 DB MS 进行编 码。将大的应 用处理任务 分布到许多通
过网络 连接的低成 本计算机上 ,以节约大量 费用。
第 3 章 软件体 系结构风格 3. 3 客户 / 服务器 风格

◇ 缺点

◎ 开发成本较 高

◎ 客户端程序 设计复杂

◎ 信息内容和 形式单一

◎ 用户界面风 格不一,使 用繁杂,不 利于推广使 用

◎ 软件移植困 难

◎ 软件维护和 升级困难

◎ 新技术不能 轻易应用
第 3 章 软件体 系结构风格 3. 4 三层客 户 / 服务 器风

◇ 体系结构

数据库服务器1 数据库服务器2

应用服务器

Internet
Intranet

... ...

用户1 用户2 用户n


第 3 章 软件体 系结构风格 3. 4 三层客 户 / 服务 器风

◇ 处理流程

输入数据 请求按钮 业务处理开始


业务处理请求和
业务处理所需的
全部输入数据 数据存取请求

输出数据 业务处理结束
全部处理结束
业务处理程序
表示层

SQL 请求开始 业务处理开始


数据登录/更新
/读取的请求

数据存取请求
DBMS 执行SQL

业务处理结束
SQL 请求结束
数据登录/更新
/读取的结果
数据层 数据存取程序

功能层
第 3 章 软件体 系结构风格 3. 4 三层客 户 / 服务 器风

◇ 物理结构

服务器2 数据层

数据层
服务器1 功能层 数据层
功能层

表示层 表示层 功能层


客户机
表示层

(1)将数据层 (2)将数据层 (3)将功能


和功能层放在同 和功能层放在不 层放在客户机
一台服务器上 同的服务器上 上
第 3 章 软件体 系结构风格 3. 4 三层客 户 / 服务 器风

◇ 应用实例

自学
第 3 章 软件体 系结构风格 3. 4 三层客 户 / 服务 器风

◇ 优点

◎ 允许合 理地划分 三层结构的 功能,使之 在逻辑上保 持相对独


立性, 能提高系统 和软件的可维 护性和可扩 展性。

◎ 允许更 灵活有效 地选用相应 的平台和硬 件系统,使 之在处理


负荷能 力上与处理 特性上分别适 应于结构清 晰的三层; 并且这些
平台和 各个组成部 分可以具有良 好的可升级 性和开放性 。

◎ 应用的 各层可以 并行开发, 可以选择各 自最适合的 开发语言


◎ 利用功 能层有效 地隔离开表 示层与数据 层,未授权 的用户难


以绕过 功能层而利 用数据库工具 或黑客手段 去非法地访 问数据层
,为严 格的安全管 理奠定了坚实 的基础。
第 3 章 软件体 系结构风格 3. 4 三层客 户 / 服务 器风

◇ 要注意的问 题

◎ 三层 C/S 结构各层 间的 通信效 率若不 高, 即使


分配 给各 层的硬 件能 力很强 ,其 作为整 体来 说也达
不到 所要 求的性 能。

◎ 设计时 必须慎 重考 虑三层 间的通 信方 法、通 信


频度 及数 据量。 这和 提高各 层的 独立性 一样 是三层
C/ S 结构的 关键 问题。
第 3 章 软件体 系结构风格 3.5 浏览器 / 服务器风 格

◇ 基本概念

◎ 浏览 器 / 服务器 ( B/ S )风格 就是上 述三 层应


用结 构的 一种实 现方 式,其 具体 结构为 :浏 览器
/W eb 服务器 / 数据库 服务 器。

◎ B/S 体系结构 主要 是利用 不断 成熟的 WWW 浏览器


技术 ,结 合浏览 器的 多种脚 本语 言,用 通用 浏览器
就实 现了 原来需 要复 杂的专 用软 件才能 实现 的强大
功能 ,并 节约了 开发 成本。 从某 种程度 上来 说,
B/ S 结构是 一种 全新的 软件 体系 结构。
第 3 章 软件体 系结构风格 3.5 浏览器 / 服务器风 格

◇ 体系结构

客户端
浏览器 数


数据库 服

Web服务器 器
客户端
浏览器
第 3 章 软件体 系结构风格 3.5 浏览器 / 服务器风 格

◇ 优点

◎ 基于 B/S 体系结构 的软 件,系 统安装 、修 改和


维护 全在 服务器 端解 决。用 户在 使用系 统时 ,仅仅
需要 一个 浏览器 就可 运行全 部的 模块, 真正 达到了
“零 客户 端”的 功能 ,很容 易在 运行时 自动 升级。

◎ B/ S 体系 结构 还提供 了异 种机、 异种网 、异 种应


用服 务的 联机、 联网 、统一 服务 的最现 实的 开放性
基础 。
第 3 章 软件体 系结构风格 3.5 浏览器 / 服务器风 格

◇ 缺点

◎ B/ S 体系 结构 缺乏对 动态 页面的 支持能 力, 没有


集成 有效 的数据 库处 理功能 。

◎ B/ S 体系 结构 的系统 扩展 能力差 ,安全 性难 以控


制。

◎ 采用 B/S 体系结构 的应 用系统 ,在数 据查 询等


响应 速度 上,要 远远 地低于 C/S 体系结构 。

◎ B/ S 体系 结构 的数据 提交 一般以 页面为 单位 ,数


据的 动态 交互性 不强 ,不利 于在 线事务 处理 (O LT P)
应用 。
第 3 章 软件体 系结构风格 3.6 公共对 象请求代 理体系结

◇ 对象管理结 构

应用对象 通用服务

对象请求代理(Object Request Broker)

对象服务(Object Services)
第 3 章 软件体 系结构风格 3.6 公共对 象请求代 理体系结

◇ CORB A 技术规范

◎ 接口定 义语言 ( IDL )

◎ 接口池 ( IR )

◎ 动态调 用接口 ( DII )

◎ 对象适 配器( OA )
第 3 章 软件体 系结构风格 3.6 公共对 象请求代 理体系结

◇ CORB A 技术规范

◎ 接口定 义语 言
CORB A 利用 IDL 统一 地描述服务 器对象( 向调用者提 供服
务的对 象)的接 口。 ID L 本身也是面 向对象的。它 虽然不是
编程语 言,但它 为客户对象 (发出服务请 求的对象) 提供了
语言的 独立性, 因为客户对 象只需了解服 务器对象的 IDL 接
口,不 必知道其 编程语言。

IDL 语言是 CO RB A 规范中定义的一 种中性语 言,它用 来描


述对象 的接口, 而不涉及对 象的具体实现 。

在 COR BA 中定义 了 ID L 语言 到 C 、 C+ + 、 Smal lT alk 和


Jav a 语言的 映射。
第 3 章 软件体 系结构风格 3.6 公共对 象请求代 理体系结

◇ CORB A 技术规范

◎ 接口池
CO RBA 的接口池包括 了分布计算 环境中所 有可用的服 务器
对象的 接口表示 。它使动态 搜索可用服务 器的接口、 动态构
造请求 及参数成 为可能。
第 3 章 软件体 系结构风格 3.6 公共对 象请求代 理体系结

◇ CORB A 技术规范

◎ 动态调 用接 口
CO RBA 的动态调用接 口提供了一 些标准函 数以供客户 对象
动态创 建请求、 动态构造请 求参数。客户 对象将动态 调用接
口与接 口池配合 使用可实现 服务器对象接 口的动态搜 索、请
求及参 数的动态 构造与动态 发送。当然, 只要客户对 象在编
译之前 能够确定 服务器对象 的 ID L 接口, COR BA 也允许客 户
对象使 用静态调 用机制。显 然,静态机制 的灵活性虽 不及动
态机制 ,但执行 效率却胜过 动态机制。
第 3 章 软件体 系结构风格 3.6 公共对 象请求代 理体系结

◇ CORB A 技术规范

◎ 动态调 用接 口
在 CORB A 中, 对象适配器 用于屏蔽 ORB 内核 的实现细节
,为服 务器对象 的实现者提 供抽象接口, 以便他们使 用 ORB
内部的 某些功能 。这些功能 包括服务器对 象的登录与 激活、
客户请 求的认证 等。
第 3 章 软件体 系结构风格 3.6 公共对 象请求代 理体系结

◇ 体系结构
OMG IDL

OMG IDL源文件

OMG IDL编译器

客户桩

动态激发API

ORB 客户端

上下文对象
接口仓库

对象服务

对象工具

服务器
ORB API

上下文对象 ORB 服务器端

BOA API
对象适配器

服务器应
用程序 服务器框架

方法

实现仓库
第 3 章 软件体 系结构风格 3.6 公共对 象请求代 理体系结

◇ 特点

◎ 引入 中间件作为 事务代理 ,完成客户 机向服务对 象方


( Ser ve r )提出的业务 请求。

◎ 实现客 户与服务对 象的完全分开 ,客户不需 要了解服务


对象的 实现过程 以及具体位 置。

◎ 提供软 总线机制, 使得在任何环 境下、采用 任何语言开


发的软 件只要符 合接口规范 的定义,均能 够集成到分 布式系
统中。

◎ CO RBA 规范软件系 统采用面向对 象的软件 实现方法开 发


应用系 统,实现 对象内部细 节的完整封装 ,保留对象 方法的
对外接 口定义。
第 3 章 软件体 系结构风格 3.7 正交软件体 系结构

◇ 概念

正交软件体系结 构由组织 层和线索 的构件构成 。层是由


一组具 有相同抽象 级别的构件 构成。线索 是子系统的特 例,
它是由 完成不同层 次功能的构 件组成(通 过相互调用来 关
联), 每一条线索 完成整个系 统中相对独 立的一部分功 能。
每一条 线索的实现 与其他线索 的实现无关 或关联很少, 在同
一层中 的构件之间 是不存在相 互调用的。

如果线索是相互 独立的, 即不同线 索中的构件 之间没有


相互调 用,那么这 个结构就是 完全正交的 。
第 3 章 软件体 系结构风格 3.7 正交软件体 系结构

◇ 框架

A 第 一 层

B … … C 第 二 层

… D … … E … 第 三 层

F … G … H … … J 第 四 层

K 第 五 层
第 3 章 软件体 系结构风格 3.7 正交软件体 系结构

◇ 特征

◎ 正交 软件 体系结 构由 完成不 同功 能的 n ( n >


1 )个 线索 (子系统 )组成;

◎ 系统具 有 m ( m > 1 )个不同 抽象 级别的 层;

◎ 线索之 间是相 互独 立的( 正交的 );

◎ 系统有一 个公 共驱动 层( 一般为 最高 层)和 公


共数 据结 构(一 般为 最低层 )。
第 3 章 软件体 系结构风格 3.7 正交软件体 系结构

◇ 实例

自学
第 3 章 软件体 系结构风格 3.7 正交软件体 系结构

◇ 优点

◎ 结构清晰,易于 理解。由 于线索功 能相互独立, 不进行互


相调用 ,结构简单 、清晰,构 件在结构图 中的位置已经 说明它
所实现 的是哪一级 抽象,担负 的是什么功 能。

◎ 易修改 ,可维护 性强。由于线 索之间是相 互独立的,所 以对


一个线 索的修改不 会影响到其 他线索。系 统功能的增加 或减少
,只需 相应的增删 线索构件族 ,而不影响 整个正交体系 结构,
因此能 方便地实现 结构调整。

◎ 可移植 性强,重 用粒度大。因 为正交结构 可以为一个领 域内


的所有 应用程序所 共享,这些 软件有着相 同或类似的层 次和线
索,可 以实现体系 结构级的重 用。
第 3 章 软件体 系结构风格 3.8 基于层 次消息总 线的体系
结构
◇ 概述

复合构件

构件

消息总线(连接件)
第 3 章 软件体 系结构风格 3.8 基于层 次消息总 线的体系
结构
◇ HMB 风格的 构件模型

接口部分 行为部分

结构部分
第 3 章 软件体 系结构风格 3.8 基于层 次消息总 线的体系
结构

◇ 构件接口

◎ HM B 风格 的构 件接口 是一 种基于 消息的 互联 接口


,可 以较 好地支 持体 系结构 设计 。构件 之间 通过消
息进 行通 讯,接 口定 义了构 件发 出和接 收的 消息集
合。

◎ 当某个 事件发 生后 ,系统 或构件 发出 相应的 消


息, 消息 总线负 责把 该消息 传递 到此消 息感 兴趣的
构件 。

◎ 按照响 应方式 的不 同,消 息可分 为同 步消息 和


异步 消息 。
第 3 章 软件体 系结构风格 3.8 基于层 次消息总 线的体系
结构
◇ 消息总线
构件1 构件2

消息传递

消息总线

属性:构件实例表
构件-消息响应登记表
消息过滤表

服务:消息登记
消息分派
消息传递
消息过滤
第 3 章 软件体 系结构风格 3.8 基于层 次消息总 线的体系
结构
◇ 构件 静态结 构

系统
C1 C2

C3 C4 C4-1
C3-1 C3-2

C3-3 C3-4 C4-2 C4-3


第 3 章 软件体 系结构风格 3.8 基于层 次消息总 线的体系
结构
◇ 构件 动态行 为

◎ 构件的 行为就 由外 来消息 的类型 唯一 确定, 即


一个 消息 和构件 的某 个操作 之间 存在着 固定 的对应
关系 。对 于这类 构件 ,可以 认为 构件只 有一 个状态
,或 者在 每次对 消息 响应之 前, 构件处 于初 始状态 。

◎ 更通常 的情况 是, 构件的 行为同 时受 外来消 息


类型 和自 身当前 所处 状态的 影响 。
第 3 章 软件体 系结构风格 3.8 基于层 次消息总 线的体系
结构
◇ 运行时刻的 系统演化

◎ 动态增 加或删 除构件

◎ 动态改 变构件 响应的 消息 类型

◎ 消息过 滤
第 3 章 软件体 系结构风格 3.9 异构结 构风格

◇ 为什么要使 用异构结构

◎ 不同的结构有不 同的处理 能力的强 项和弱点,一 个系统的


体系结 构应该根据 实际需要进 行选择,以 解决实际问题 。

◎ 关于软件包、框 架、通信 以及其他 一些体系结构 上的问题


,目前 存在多种标 准。即使在 某段时间内 某一种标准占 统治地
位,但 变动最终是 绝对的。

◎ 实际工作中,我 们总会遇 到一些遗 留下来的代码 ,它们仍


有效用 ,但是却与 新系统有某 种程度上的 不协调。然而 在许多
场合, 将技术与经 济综合进行 考虑时,总 是决定不再重 写它们

◎ 即使在某一单位 中,规定 了共享共 同的软件包或 相互关系


的一些 标准,仍会 存在解释或 表示习惯上 的不同。
第 3 章 软件体 系结构风格 3.9 异构结 构风格

◇ C/S 与 B/ S 混合之内外 有别模型


企业外部 企业内部

B/S结构 数据
修改和维护
工作站 库服
务器
Web服务器
Internet
查询和浏览 C/S结构
工作站
内部局域网

Internet
用户 查询和浏览工作站 修改和维护工作站
第 3 章 软件体 系结构风格 3.9 异构结 构风格

◇ C/S 与 B/ S 混合之查改 有别模型

企业外部 企业内部

Internet C/S结构
维护和修改
工作站 数据
Web服
B/S结构
务器 库服
务器

查询和浏览 Internet
C/S结构
工作站

内部局域网

Internet用户 查询和浏览工作站 维护和修改工作站


第 3 章 软件体 系结构风格 3.9 异构结 构风格

◇ 异构实例

变电站外部 变电站内部

B/S结构 数据
县调
库服
务器
Web服务器
地调 Internet
C/S结构
变电站内部局域网

省局

Internet用户 中央控制室 站长办公室 其他... 系统管理员


第 3 章 软件体 系结构风格 3. 10 SI S 体系结 构风格

◇ 互连系统构 成的系统
第 3 章 软件体 系结构风格 3. 10 SI S 体系结 构风格

◇ 基于 SASI S 的软件过 程

系统分解 用例建模 分析和设计

演化和维护 测试 实现
第 3 章 软件体 系结构风格 3. 10 SI S 体系结 构风格

◇ 基于 SASI S 的软件过 程

上级系统

A
B C

主角1 主角2
系统X

从属系统

A1 A2 B2 A3
主角1 B1 C2 C3 主角2

系统X1 系统X2 系统X3


第 3 章 软件体 系结构风格 3. 10 SI S 体系结 构风格

◇ 基于 SASI S 的软件过 程

A2 B2
C2
系统X1 系统X3
系统X2
第 3 章 软件体 系结构风格 3. 11 特定领域软 件体系结构

◇ 定义

◎ Ha yes -Ro th 对 DSSA 的定义 如下 :“ DS SA 就是


专用 于一 类特定 类型 的任务 (领 域)的 、在 整个领
域中 能有 效地使 用的 、为成 功构 造应用 系统 限定了
标准 的组 合结构 的软 件构件 的集 合”。

◎ Tr ac z 的定义 为: “ DS SA 就是一 个特 定的问 题


领域 中支 持一组 应用 的领域 模型 、参考 需求 、参考
体系 结构 等组成 的开 发基础 ,其 目标就 是支 持在一
个特 定领 域中多 个应 用的生 成” 。
第 3 章 软件体 系结构风格 3. 11 特定领域软 件体系结构

◇ 定义

◎ 垂直域 :定义 了一 个特定 的系统 族, 包含整 个


系统 族内 的多个 系统 ,结果 是在 该领域 中可 作为系
统的 可行 解决方 案的 一个通 用软 件体系 结构 。

◎ 水平域 :定义 了在 多个系 统和多 个系 统族中 功


能区 域的 共有部 分, 在子系 统级 上涵盖 多个 系统族
的特 定部 分功能 ,无 法为系 统提 供完整 的通 用体系
结构 。
第 3 章 软件体 系结构风格 3. 11 特定领域软 件体系结构

◇ 基本活动

◎ 领域分 析

◎ 领域设 计

◎ 领域实 现
第 3 章 软件体 系结构风格 3. 11 特定领域软 件体系结构
领域分 管理
◇ 领域分析 析方法 机制

领域知识资源

技术文献
分类方法
已完成的软件项目
标准
用户评述
功能模型
专家建议 领域分析
领域语言
当前及未来的需求

领域实现人员
领域设计人员
领域分析人员
领域专家
第 3 章 软件体 系结构风格 3. 11 特定领域软 件体系结构

◇ 建立过程
◎ 定义领 域范围: 确定什么在 感兴趣的领 域中以及本过 程到何时
结束。

◎ 定义领 域特定的 元素:编译 领域字典和 领域术语的同 义词词典。


识别领 域中应用间 的共同性和差 异性;

◎ 定义领 域特定的 设计和实现 需求约束: 描述解空间中 有差别的


特性。 不仅要识别 出约束,并且 要记录约束 对设计和实 现决定造 成
的后果 ,还要记录 对处理这些问 题时产生的 所有问题的 讨论;

◎ 定义领 域模型和 体系结构: 产生一般的 体系结构,并 说明构成


它们的 模块或构件 的语法和语义 ;

◎ 产生、搜集可 重用的产品 单元:为 DSSA 增加构件使 得它可以


被用来 产生问题域 中的新应用 。
第 3 章 软件体 系结构风格 3. 11 特定领域软 件体系结构

◇ 三层次系统 模型
领域构
领域开发环境
架师

参考结构

领域模型

开发工具
参考需求

构架
应用工
领域特定的应用开发环境
程师

实例化的
体系结构

操作员 应用执行环境
第 3 章 软件体 系结构风格 3. 11 特定领域软 件体系结构

◇ 实例

自学
第 3 章 软件体 系结构风格 3. 11 特定领域软 件体系结构

◇ DSSA 和体系结构 风格的比较


◎ DS SA 以问题 域为出发 点,体系结构 风格以解决 域为出发点

◎ DS SA 只对某 一个领域 进行设计专家 知识的提取 、存储和组


织,但 可以同时使 用多种体系 结构风格; 而在某个体系 结构风
格中进 行体系结构 设计专家知 识的组织时 ,可以将提取 的公共
结构和 设计方法扩 展到多个应 用领域。

◎ DS SA 通常选 用一个或 多个适合所研 究领域的体 系结构风格


,并设 计一个该领 域专用的体 系结构分析 设计工具。

◎ 体系结 构风格的 定义和该风格 应用的领域 是直交的,提 取的


设计知 识比用 DSS A 提取的 设计专家 知识的应用 范围要广。

◎ DS SA 和体系 结构风格是 互为补充的两 种技术。


第 3 章 软件体 系结构风格 本章作业 与思考 题

1 、层次系统 结构和基于 消息的层次 系统结构有 什么区别 ?

2 、试分析和 比较 B/S ,二层 C/S 和三 层 C/ S ,指出各自 的


优点和 缺点。

3 、组织或参 与一个采用 B/S 和 C/S 混合体 系结构的 软件项


目的开 发,总结 开发经验。

4 、组织或参 与一个采用 三层体系结 构的软件项 目的开发 ,


总结开 发经验。

5 、 SI S 和 DSSA 分别用在哪 些场合?

6 、在软件开 发中,采用 异构结构有 什么好处, 其负面影 响


有哪些 ?
课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 4 章 软件体 系结构描述 4.1 软件体系结 构描述方法

◇ 描述方法的 种类

◎ 图形表 达工具

◎ 模块内 连接语 言

◎ 基于软 构件 的系统 描述 语

◎ 软件体 系结构 描述 语言
第 4 章 软件体 系结构描述 4.1 软件体系结 构描述方法

◇ 图形表达工 具
项目管理 静态分析器 时间分析器

测试配置 测试结果库 缓冲

最优/最劣时间
布图算法 复杂度计算
计算

带时间特性的 函数调用关系
程序复杂度
流程图 图

测试结果打印
第 4 章 软件体 系结构描述 4.1 软件体系结 构描述方法

◇ 模块内连接 语言

◎ 采用将一种 或几种传统 程序设计语 言的模块连 接起来的


模块内 连接语言。 由于程序设 计语言和模 块内连接语言 具有
严格的 语义基础, 因此它们能 支持对较大 的软件单元进 行描
述,诸 如定义 / 使用和扇入 / 扇出等 操作。例如 , Ad a 语言
采用 use 实现包 的重用, Pasc al 语言采用 过程(函数 )模
块的交 互等。

◎ MIL 方式对 模块化的 程序设计和分 段编译等程 序设计与开


发技术 确实发挥了 很大的作用 。但是由于 这些语言处理 和描
述的软 件设计开发 层次过于依 赖程序设计 语言,因此限 制了
它们处 理和描述比 程序设计语 言元素更为 抽象的高层次 软件
体系结 构元素的能 力。
第 4 章 软件体 系结构描述 4.1 软件体系结 构描述方法

◇ 基于软构件 的系统描述 语言

◎ 基于软构件的系 统描述语 言将软件 系统描述成一 种是由许


多以特 定形式相互 作用的特殊 软件实体构 造组成的组织 或系统

◎ 例如,一种多变 配置语言 就可以用 来在一个较高 的抽象层


次上对 系统的体系 结构建模, Darw in 最初用 作设计和构 造复
杂分布 式系统的配 置说明语言 ,因具有动 态特性,也可 用来描
述动态 体系结构。

◎ 这种表达和描述 方式虽然 也是较好 的一种以构件 为单位的


软件系 统描述方法 ,但是他们 所面向和针 对的系统元素 仍然是
一些层 次较低的以 程序设计为 基础的通信 协作软件实体 单元,
而且这 些语言所描 述和表达的 系统一般而 言都是面向特 定应用
的特殊 系统,这些 特性使得基 于软构件的 系统描述仍然 不是十
分适合 软件体系结 构的描述和 表达。
第 4 章 软件体 系结构描述 4.1 软件体系结 构描述方法

◇ 软件体系结 构描述语言

◎ 软件体 系结构的第 四种描述和 表达方法是 参照传统程


序设计 语言的设计 和开发经验 ,重新设计、 开发和使用 针
对软件 体系结构特 点的专门的 软件体系结构 描述语言。

◎ 由于 ADL 是在吸收 了传统程序 设计中的语 义严格精确


的特点 基础上,针 对软件体系 结构的整体性 和抽象性特 点
,定义 和确定适合 于软件体系 结构表达与描 述的有关抽 象
元素, 因此, ADL 是当前软 件开发和设 计方法学中一 种
发展很 快的软件体 系结构描述 方法,目前, 已经有几十 种
常见的 AD L 。
第 4 章 软件体 系结构描述 4.2 软件体 系结构描 述框架标

◇ IEEE P147 1

◎ IE EE P1 471 于 200 0 年 9 月 21 日通 过 IE EE- SA


标准 委员 会评审 。

◎ IE EE P1 471 适用于 软件密 集的 系统, 其目标 在


于: 便于 体系结 构的 表达与 交流 ,并通 过体 系结构
要素 及其 实践标 准化 ,奠定 质量 与成本 的基 础。

◎ IE EE P1 471 详细介 绍了一 套体 系结构 描述的 概


念框 架, 并给出 建立 框架的 思路 。但如 何描 述以及
具体 的描 述技术 等方 面缺乏 更进 一步的 指导 。
第 4 章 软件体 系结构描述 4.2 软件体 系结构描 述框架标

◇ Rati onal

◎ Ra tio na l 起草了可重用的 软件资产 规格说明 ,专门讨论


了体系 结构描述的 规格说明, 提出了一套易 于重用的体 系结
构描述 规范。该建 议草案已经 提交 OMG 。

◎ 基于 RU P ( Ra tio na l Uni te d Pr oc ess )、采 用 UM L


模型描 述软件的体 系结构,认 为体系结构描 述的关键是 定义
视点、 视图以及建 模元素之间 的映射关系。

◎ 与 IEEE P1 471 相比, 该建议标准 的体系结构 描述方案涉


及面比 较窄,所注 重的层次比 较低,因而更 具体。由于 将体
系结构 的描述限于 UML 和 RUP ,具有 一定的局 限性,但该 建
议标准 结合了业界 已经广泛采 用的建模语言 和开发过程 ,因
而易于 推广,可以 有效实现在 跨组织之间重 用体系结构 描述
结果。
第 4 章 软件体 系结构描述 4.3 软件体系结 构描述语言

ADL 是在底 层语义模 型的支持下 ,为软件系 统的概念体


系结构 建模提供了 具体语法和 概念框架。 基于底层语义 的工
具为体 系结构的表 示、分析、 演化、细化 、设计过程等 提供
支持。 其三个基本 元素是:构 件、连接件 、体系结构配 置。

主要的 体系结构 描述语言有


Aes op 、 Me taH 、 C2 、 Rap id e 、 SADL 、 Un ic on 和
Wri gh t 等,尽管它们都 描述软件 体系结构 ,却有不同 的特点

这些 AD L 强调了体系结 构不同的侧 面,对体 系结构的研


究和应 用起到了重 要的作用, 但也有负面 的影响。每一 种
ADL 都以独立 的形式存在 ,描述语法 不同且互不兼 容,同时
又有许 多共同的特 征,这使设 计人员很难 选择一种合适 的
ADL ,若设计 特定领域的 软件体系结 构又需要从头 开始描述

第 4 章 软件体 系结构描述 4.3 软件体系结 构描述语言

◇ ADL 与其他 语言的比较 (1)

◎ 构造能力 : AD L 能够使 用较小 的独 立体系 结构


元素 来建 造大型 软件 系统;

◎ 抽象能力 : AD L 使得软 件体系 结构 中的构 件和


连接 件描 述可以 只关 注它们 的抽 象特性 ,而 不管其
具体 的实 现细节 ;

◎ 重用能力 : AD L 使得组 成软件 系统 的构件 、连


接件 甚至 是软件 体系 结构都 成为 软件系 统开 发和设
计的 可重 用部件 ;
第 4 章 软件体 系结构描述 4.3 软件体系结 构描述语言

◇ ADL 与其他 语言的比较 (2)

◎ 组合能力 : AD L 使得其 描述的 每一 系统元 素都


有其 自己 的局部 结构 ,这种 描述 局部结 构的 特点使
得 AD L 支持 软件 系统的动 态变 化组 合;

◎ 异构能力 : AD L 允许多 个不同 的体 系结构 描述


关联 存在 ;

◎ 分析和推 理能 力: AD L 允许对 其描 述的体 系结


构进 行多 种不同 的性 能和功 能上 的多种 推理 分析。
第 4 章 软件体 系结构描述 4.3 软件体系结 构描述语言

◇ 典型元素含 义比较
第 4 章 软件体 系结构描述 4.3 软件体系结 构描述语言

◇ 常见的软件 体系结构元 素
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 概述 (1 )

◎ C2 和其提 供的设 计环 境( Ar go )支持采 用基


于时 间的 风格来 描述 用户界 面系 统,并 支持 使用可
替换 、可 重用的 构件 开发 GU I 的体系 结构 。

◎ 在 C2 中,连 接件 负责构 件之 间消 息的传 递,


而构 件维 持状态 、执 行操作 并通 过两个 名字 分别为
“ to p ” 和“ bot to m ” 的端口和 其它的 构件 交换
信息 。

◎ 每个接 口包含 一种 可发送 的消 息和 一组可接 收


的消 息。 构件之 间的 消息要 么是 请求其 它构 件执行
某个 操作 的请求 消息 ,要么 是通 知其他 构件 自身执
行了 某个 操作或 状态 发生改 变的 通知消 息。
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 概述 (2 )

◎ 构件之 间的消 息交 换不能 直接 进行 ,而只 能通 过


连接件来 完成 。每个 构件接 口最 多只能 和一 个连接 件
相连,而 连接 件可以 和任意 数目 的构件 或连 接件相 连

◎ 请求消 息只能 向上 层传送 而通 知消 息只能 向下 层


传送。

◎ 通知消 息的传 递只 对应于 构件 内部 的操作 ,而 和


接收消息 的构 件的需 求无关 。

◎ C2 对构件 和连 接件的 实现 语言 、实现 构件 的线程


控制、构 件的 部署以 及连接 件使 用的通 讯协 议等都 不
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 对构件 接口的描述
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 对构件 的描述 int er fa ce_ req ue sts : :=
{re qu es t ; } | nu ll ;

int er fa ce_ not if ica ti on s : :=


om po nen t_ mes sa ge_ in ter fa ce :: = {no ti fi cat io n ; } | nul l ;
top _d om ain _in te rfa ce
bot to m_ dom ain _i nte rf ac e req ue st :: =

op _d oma in _in te rfa ce :: = mes sa ge _na me( re que st _p ara met er s)


top _d om ain is
ou t int er fa ce_ req ue sts req ue st _pa ram et ers : :=
in i nte rf ac e_n oti fi cat io ns [t o
com po ne nt_ nam e] [pa ra me ter _li st ]
ot to m_d om ain _i nte rf ace : :=
bot to m_ dom ain i s not if ic ati on :: =
ou t int er fa ce_ not if ica ti on s mes sa ge _na me [pa ram et er _li st ]
in i nte rf ac e_r equ es ts
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ 会议安排系 统的 C2 风格

... Important ... Important


Attendee-1 Attendee-M
Attendee-1 Attendee-N

AttConn Important
AttConn
MainConn
Meeting
Initiator
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 对 Me etgin gInit iator 构件的 描述
(1)
com po nen t Mee ti ngI ni tia to r i s
int erf ac e
top_ do mai n is
out
Ge tPr ef Se t() ;
Ge tEx cl Se t() ;
Ge tEq ui pR eqt s() ;
Ge tLo cP re fs( ) ;
Re mov eE xc lSe t() ;
Re que st Wi thd raw al (to A tt end ee) ;
Requ est Wi th dra wa l(t o
Imp or tan tA tte nd ee) ;
Ad dPr ef Da tes () ;
Ma rkM tg (d :da te ; l: lov _t yp e) ;
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 对 Me etgin gInit iator 构件的 描述
(2)
in
Pr efS et (p :da te_ mg ) ;
Ex clS et (e :da ta_ mg ) ;
Eq uip Re qt s(e q:e qu ip_ ty pe ) ;
Lo cPr ef (l :lo c_t yp e) ;
beh av io r
star tu p al way s_ gen er at e Ge tPr ef Set , Get Ex cl Set ,
Get Eq uip Re qts ,
Ge tLo cP re fs ;
rec ei ve d_m es sag es Pre fSe t ma y_ gen er at e Re mo veE xcl Se t xo r
Req ue stW it hdr aw al xo r M ar kMt g ;
rec ei ved _me ss ag es Exc lSe t ma y_g ene ra te Ad dPr ef Dat es xo r
Rem ov eEx cl Set
xor R equ es tWi th dra wa l x or Ma rk Mtg ;
rec ei ved _me ss ag es Eq uip Req ts may_ ge ner ate Add Pre fD ate s
xor
Rem ov eEx cl Set x or Re que st Wit hd raw al xo r Mar kM tg ;
rec ei ved _me ss ag es Lo cPr ef al wa ys_ ge ner ate n ul l ;
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 对 At tende e 构件的描述 (1)
co mpo ne nt At ten de e i s
int erf ac e
bott om _do ma in is
out
Pr efS et (p :da te_ mg ) ;
Ex clS et (e :da te_ mg ) ;
Eq uip Re qt s(e q:e qu ip_ ty pe ) ;
in
Ge tPr ef Se t() ;
Ge tEx cl Se t() ;
Ge tEq ui pR eqt s() ;
Re mov eE xc lSe t() ;
Re que st Wi thd raw al () ;
Ad dPr ef Da tes () ;
Ma rkM tg (d :da te ; l: loc _t yp e) ;
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 对 At tende e 构件的描述 (2)

beh av ior
rec ei ve d_m ess ag es Ge tP ref Set a lwa ys _g ene rat e Pre fS et ;
rec ei ve d_m ess ag es Ad dP ref Dat es al wa ys _ge ner at e P re fS et ;
rec ei ve d_m ess ag es Ge tE xcl Set a lwa ys _g ene rat e Exc lS et ;
rec ei ve d_m ess ag es Get Eqi pR eq ts alwa ys _g ene rat e
Eqi pR eq ts ;
rec ei ve d_m ess ag es Remo ve Ex clS et alwa ys_ ge ne rat e
Exc lS et ;
rec ei ve d_m ess ag es Re ues tWi th dr awa l alwa ys _g ene rat e
nul l ;
rec ei ve d_m ess ag es Ma rk Mtg al wa ys_ ge ne rat e n ul l ;
end A tt end ee ;
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 对 Im porta ntAtt endee 构件的 描述

co mpo ne nt Imp or tan tA tte nde e is su bt yp e Atte nd ee( in an d


beh )
int er fac e
bot tom _do ma in i s
out
Lo cPr ef s( l: loc _ty pe) ;
Ex clS et (e :d ate _mg ) ;
Eq uip Re qt s( eq: equ ip_ ty pe ) ;
in
Ge tLo cP re fs () ;
beh av io r
rec ei ve d_m ess ag es Ge tL ocP ref s alw ay s_ gen era te Lo cP re fs ;
end I mp ort ant At ten de e ;
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 对体系 结构的描述
arc hi tec tur e Me eti ng Sch edu le r is
con ce pt ual _c omp one nt s
Att end ee ; Im por ta nt Att end ee ; Me eti ng In iti at or ;
con ne ct ors
con nec to r M ai nC onn is m ess ag e_ fil ter n o_f il te rin g ;
co nn ect or A ttC onn i s m es sa ge_ fil te r n o_ fi lte rin g ;
con ne cto r Im por ta ntA tt Co nn is mes sag e_ fil te r
no_ fi lt eri ng ;
ar chi te ct ura l_ top olo gy
co nn ect or A ttC onn c onn ec ti ons
top _p or ts Att en dee ;
bot to m_ por ts Ma inC on n ;
con ne ct or Imp or tan tA tt Con n c on nec ti on s
top _p or ts Imp or tan tA tt end ee ;
bot to m_ por ts Ma inC on n ;
con ne ct or Mai nC onn c on nec tio ns
top _p or ts Att Co nn ; Imp or ta ntA ttC on n ;
bot to m_ por ts Me eti ng In iti ato r ;
end M ee tin gSc he dul er ;
第 4 章 软件体 系结构描述 4.4 典型软 件体系结 构描述语

◇ C2 对会议 安排系统的 描述

sys te m M eet in gS che du ler _1 is


arc hi tec tur e Me eti ng Sch edu le r wit h
Att end ee in st an ce Att _1 , At t_2 , At t_ 3 ;
Imp ort ant At te nd ee ins tan ce I mp Att _1 , Imp At t_2 ;
Mee tin gIn it ia to r i nst anc e Mt gI nit _1 ;
end M ee tin gSc he dul er _1 ;
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ UML 简介

◎ UM L(U nif ie d Mod eli ng L ang uag e) 是下面


这些 最好 的建模 方法 中最好 部分 的集成 :
◇ 商务流 程模型 (W ork F low )
◇ 对象建 模方法
◇ 软构件 建模思想

◎ UM L 是一种 用可视 化方 法对软 件系 统进 行描述


、实 施和 说明的 标准 语言。

◎ 支持 用不 同实现技 术进 行的 软件开 发全 过程

第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ UML 简介
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ UML 简介
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ UML 简介
State
State
Diagrams
Use Case
Use Case
类图
Diagrams
State
Use Case Diagrams State
Use Case
Diagrams
用例图
Diagrams Diagrams
对象图
Diagrams
序列图
Diagrams

Scenario State
Scenario State
Diagrams
Diagrams
协作图
Diagrams UML 构件图
Diagrams

Scenario Component
Scenario
Diagrams
Component
Diagrams
状态图
Diagrams 部署图
Diagrams

活动图
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 用例图

用于显 示
若干角 色
以及这 些
角色与 系
统提供 的
用例之 间
的连接 关
系。用 例
是系统 提
供的功 能
的描述
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 类图

表示系
统中的
类和类
与类之
间的关
系,它
是对系
统静态
结构的
描述
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 序列图

用来 反映若
干个 对象之
间的 动态协
作关 系,也
就是 随着时
间的 推移,
对象 之间是
如何 交互的
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 协作图
描述对 象间 的
协作关 系, 协
作图跟 序列 图
相似, 显示 对
象间的 动态 合
作关系 。

如果强 调时 间
和顺序 ,则 使
用序列 图; 如
果强调 上下 级
关系, 则选 择
协作图 。这 两
种图合 称为 交
互图。
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 状态图

描述类 的
对象所 有
可能的 状
态以及 事
件发生 时
状态的 转
移条件 。
通常, 状
态图是 对
类图的 补

第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 活动图

描述满 足
用例要 求
所要进 行
的活动 以
及活动 间
的约束 关
系,有 利
于识别 并
行活动
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 构件图

描述代
码构件
的物理
结构及
各构件
之间的
依赖关

第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 部署图

部署图
定义系
统中软
硬件的
物理体
系结构
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 直接使用 UM L 建模

元-元模型

元 - 元模 型层 定义了 元模
元模型
型层 的规 格说明 语言 ,元
模型 层为 给定的 建模 语言
模型
定义 规格 说明, 模型 层用
来定 义特 定软件 系统 的模
型, 用户 对象用 来构 建给
定模 型的 特定实 例。
用户对象
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 直接使用 UM L 建模

◎ 语义约束

由对 象约 束语言 OCL 表示 , OC L 基于一 阶谓


词逻 辑, 每一个 OC L 表达 式都 处于一 些 UM L 模型元
素的 背景 下(由 “ se lf” 引用), 可使 用该元 素
的属 性和 关系作 为其 项( te rm ), 同时 OCL 定义
了在 集合 ( set s )、袋 (ba gs) 等上的 公共操 作
集和 遍历 建模元 素间 关系的 构造 ,因此 ,其 它建模
元素 的属 性也可 以作 为它的 项。
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 直接使用 UM L 建模

◎ UML 中的通 用表示


( 1 )字符串:表 示有关模型 的信息;
( 2 )名字:表示 模型元素;
( 3 )标号:不同 于编程语言 中的标号 ,是用于表 示或说明
图形符 号的字符串 ;
( 4 )特殊字符串 :表示某一 模型元素 的特性;
( 5 )类型表达式 :声明属性 、变量及 参数,含义 同编程语
言中的 类型表达式 ;
( 6 )实体类型: 它是 UML 的扩充 机制,运用 实体类型可定
义新类 型的模型元 素;
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 直接使用 UM L 建模

◎ UML 语义部 分
◇ 通用元素:主 要描述 UML 中各元 素的语义。 通用元素是
UML 中的基本 构造单位, 包括模型元素 和视图元素 ,模型元
素用来 构造系统, 视图元素用 来构成系统的 表示成分;
◇ 通用机制:主要 描述使 UML 保持简 单和概念 上一致的机
制的语 义。包括定 制、标记值 、注记、约束 、依赖关系 、类
型 - 实例、类型 - 类的对 应关系等机 制;
◇ 通用类型:主要 描述 UML 中各种 类型的语义 。这些类型
包括布 尔类型、表 达式类型、 列表类型、多 重性类型、 名字
类型、 坐标类型、 字符串类型 、时间类型、 用户自定义 类型
等。

三部分 不是相互独 立的,而是 相互交叉重叠 、紧密相连 ,共


同构成 了 UM L 的完整语义。
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 直接使用 UM L 建模
◎ 会议安排系 统的类图
Person
0..*
0..* Attendee
StronglyConflicts With
Conflicts With
Important
Attendee 1..* 1..* 0..* 0..*

0..*
Profers
Date
0..*

Location
1 1 1
1 Profers 0..*
1 Excludes 0..*
Meeting
1 Proposes 1 Meeting
Initiator
1 Invites 2
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 直接使用 UM L 建模
◎ 会议安排系 统类接口
<<interface>>
MtgInit
<<interface>>
GetPrefSet(); ImportantMtgInit
GetExclSet();
RemoveExclSet();
GetLocPrefs();
RequestWithdrawal(Attendee);
AddPrefDates();

<<interface>>
MtgAttend
<<interface>>
ImportantMtgAttend
PrefSet(date_mg);
ExclSet(date_mg);
LocPrefs(loc_type);
EquipReqts(equip_type);
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 直接使用 UM L 建模
◎ C2 连接件 模型

AttConn
ImportantAttConn
GetPrefSet(); MainConn
GetExclSet();
GetLocPrefs();
RemoveExclSet();
LocPrefs(loc_type);
RequestWithdrawal(Attendee);
AddPrefDates();
PrefSet(date_mg);
ExclSet(date_mg);
EquipReqts(equip_type);
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 直接使用 UM L 建模
◎ 细化的类图
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 直接使用 UM L 建模
◎ 会议安排系 统的协作图
:Attendee :ImportantAttendee
7:PrefSet(date_mg) 6:PrefSet(date_mg)
5:GetPrefSet() 4:GetPrefSet()

:AttConn :ImportantAttConn

9:PrefSet(date_mg) 8:PrefSet(date_mg)

3:GetPrefSet() 2:GetPrefSet()
:MainConn

11:PrefSet(date_mg)

10:PrefSet(date_mg) 1:GetPrefSet()

:MeetingInitiator
第 4 章 软件体 系结构描述 4.5 软件体 系结 构与 UML

◇ 使用 UML 扩展机制

自学
第 4 章 软件体 系结构描述 本章作业 与思 考题

1 、体 系结 构描述有 哪些 方法 ?有哪 些标 准和规


范?

2 、体 系结 构描述语 言与 程序 设计语 言有 什么区


别?

3 、选 择一 个规模适 中的 系统 ,使用 UML 为其建


模。
课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 5 章 动态软 件体系结构 5.1 动态软件 体系 结构概

◇ 软件体系结 构动态性

◎ 交互 式动态 性

◎ 结构 化动态 性

◎ 体系 结构动 态性
第 5 章 动态软 件体系结构 5.1 动态软件 体系 结构概

◇ 动态体系结 构的研究

◎ 模拟和 描述 体系结 构动 态
更新
◎ 体系 结构动 态更 新的执 行
Change scripts
Design Changes
Changes environment
applies to implicitly affect
Model implementation

Architecture Implementation
Model

External
Architecture
Analysis
Evolution Manager Modules
第 5 章 动态软 件体系结构 5.2 软件体系 结构 动态模

◇ 基于构件的 动态系统结 构模型

◎ 模型 简介
体系结 体系结构配置 体系结构描述 执行
构层

构件 连接件 构件
构件配置 构件配置
连接件
中间层 构件描述 构件描述
配置
执行 执行
构件接口 构件连接 构件接口
应用层
执行 执行
第 5 章 动态软 件体系结构 5.2 软件体系 结构 动态模

◇ 基于构件的 动态系统结 构模型

◎ 更新请 求描述

◇ 更新类 型
◇ 更新对 象列 表
◇ 对象的 新版 本说明
◇ 对象更 新方 法
◇ 更新函 数
◇ 更新限 制
第 5 章 动态软 件体系结构 5.2 软件体系 结构 动态模

◇ 基于构件的 动态系统结 构模型

◎ 更新执 行步骤

◇ 检测更 新的 范围
◇ 更新准 备工 作
◇ 执行更 新
◇ 存储更 新
第 5 章 动态软 件体系结构 5.2 软件体系 结构 动态模

◇ 基于构件的 动态系统结 构模型
◎ 实例分 析
◇ 局部更 新

1.请求 构件A 连接件B 构件C


2.准备
更新
构件配置 构件配置
5.成功 4.重新
连接 连接配置
更 新 返回 接口
发起者 接口
3. 执行
更新
构件连接
执行
执行
第 5 章 动态软 件体系结构 5.2 软件体系 结构 动态模

◇ 基于构件的 动态系统结 构模型
◎ 实例分 析 ◇ 全局更 新
Server构件 体系结构 Client Server构件
连接件
配置器 配置器 配置器 执行

请求更新
提交更新请求

通知有更新请求

通知有更新请求
返回准备
就绪信息
返回准备 返回准备
就绪信息 就绪信息
通知一切就绪
准备执行更新 执行
更新
通知更新执行完毕并返回结果
通知更新 通知更新结束
结束 返回相应信息 通知更新结束

通知更新结束
第 5 章 动态软 件体系结构 5.2 软件体系 结构 动态模

◇ πADL 动态体 系结构

选读
第 5 章 动态软 件体系结构 5.2 动态体系 结构 的描述

◇ 动态体系结 构描述语言
◎ Dyna mic W right

Client L Server1
Client L Server1
L
C Server2
Server2

静态 描述 动态描 述
第 5 章 动态软 件体系结构 5.3 动态体系 结构 的描述

◇ 动态体系结 构描述语言
◎ Darw in

Component{
provide prev <port, int>;
require next <port, int>;
}
filter
prev next

output
第 5 章 动态软 件体系结构 5.3 动态体系 结构 的描述

◇ 动态软件体 系结构的形 式化描述


◎ 图形化 方法
Architectural Structure Architectural Element Behavior
Architectural Reconfiguration
Architectural Style System Architecture components connectors
graph rewriting rules with
Le Metayer Context-free Graph(formally nodes of a graph and a csp
edges of a graph side conditions to refer to the
approach graph grammar defined as a multiset) like behavior specification
status of public variables
nodes of a graph[point-
Hirsch et al Context-free edges of a graph with
hypergraph point communication and graph rewriting rules
approach graph grammar CCS labels
broadcast communication]
local graph of each
Taentzer et distributed graph network graph node and
al approach edges of a graph graph rewriting rules
(network graph) local transformations
between local graphs
links between two evolution CHAM reaction
CHAM creation CHAM molecule
component molecules rules
第 5 章 动态软 件体系结构 5.3 动态体系 结构 的描述

◇ 动态软件体 系结构的形 式化描述


◎ 进程代 数方法
第 5 章 动态软 件体系结构 5.3 动态体系 结构 的描述

◇ 动态软件体 系结构的形 式化描述


◎ 逻辑化 描述方 法

Architectural Structure Architectural Element Behavior Architectural


Architectural Style System Architecture components connectors Reconfiguration

interface in Gerel language


implicit graph defined by bind operation in
Gerel and behavior in a first order logic
representation configuration component
programming language

implicit graph association consisting of


Aguirre- class with attributes, first order logic,
representation participants and
Maibaum actions and read variables temporal logic
synchronization connections
implicit graph operation schema in
ZCL connection between ports
representation (defined by state schema in Z Z(predicate logic and
of component
set of state schema in Z) set theory)
第 5 章 动态软 件体系结构 5.4 动态体 系结 构特征

◇ 可构造性动 态特征

Static view

Configuration directives

Dynamic view
第 5 章 动态软 件体系结构 5.4 动态体 系结 构特征

◇ 适应性动态 特征

Static view

Events
Dynamic view
第 5 章 动态软 件体系结构 5.4 动态体 系结 构特征

◇ 智能性动态 特征

Static view

Events
Dynamic view
第 5 章 动态软 件体系结构 本章作业与思考题

1 、什 么是 动态软 件体 系结构 ?动态 软件 体系结 构


与静 态软 件体系 结构 有什么 区别 ?
2 、基 于构 件的动 态软 件体系 结构模 型的 层次结 构
是什 么?
3 、如 何使 用 πADL 进行动 态体 系结构 建模 ?
4 、试 比较 Dy na mi c W rig ht 和 Darw in 的特点。
5 、试 用 Dy nam ic Wr ig ht 描述 B/ S 结构。
课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 6 章 Web 服务体 系结构 6.1 Web 服务概述

◇ 什么是 We b 服务

◎ Web 服务作为 一种 新兴的 Web 应用模式 ,是 一种


崭新 的分 布式计 算模 型,是 Web 上数据和 信息 集成
的有 效机 制。

◎ Web 服务就像 Web 上的构 件编程 ,开发 人员 通过


调用 We b 应用 编程 接口, 将 We b 服务集 成进他 们的
应用 程序 ,就像 调用 本地服 务一 样。
第 6 章 Web 服务体 系结构 6.1 Web 服务概述

◇ 什么是 We b 服务

◎ 数据层
◎ 数据访问 层
◎ 业务层
◎ 业务面
◎ 监听者
第 6 章 Web 服务体 系结构 6.1 Web 服务概述

◇ Web 服务的 不同描述

◎ 应用的 分布式

◎ 应用到 应用的 交互

◎ 平台无 关性
第 6 章 Web 服务体 系结构 6.1 Web 服务概述

◇ Web 服务的 特点

◎ 使用标准 协议 规范

◎ 使用协约 的规 范性

◎ 高度集 成能力

◎ 完好的 封装性

◎ 松散耦 合
第 6 章 Web 服务体 系结构 6.2 Web 服务体系 结构模 型

◇ Web 服务模 型

服务代理

发布
发现

绑定
服务请求者 服务提供者
第 6 章 Web 服务体 系结构 6.2 Web 服务体系 结构模 型

◇ Web 服务开 发生命周期

◎ 构建

◎ 部署

◎ 运行

◎ 管理
第 6 章 Web 服务体 系结构 6.2 Web 服务体系 结构模 型

◇ Web 服务栈

发现服务 UDDI、DISCO
描述服务 WSDL、XML Schema
消息格式层 SOAP
编码格式层 XML
传输协议层 HTTP,TCP/IP,SMTP等
第 6 章 Web 服务体 系结构 6.2 Web 服务体系 结构模 型

◇ Web 服务体 系结构的优 势

◎ 高度的 通用性 和易 用性

◎ 完全 的平 台、语 言独 立

◎ 高度的 集成性

◎ 容易部 署和发 布
第 6 章 Web 服务体 系结构 6.3 Web 服务的核 心技 术

◇ 作为 Web 服务基础的 XM L

◎ XM L 是 W3 C 制定的 作为 In te rn et 上数
据交换和 表示 的标准 语言 ,是一 种允 许用户
定义自己 的标 记的元 语言 。
第 6 章 Web 服务体 系结构 6.3 Web 服务的核 心技 术

◇ 简单对象访 问协议
SOAP Envelope
SOAP Header
◎ SO AP 信封
SOAP Block

◎ SO AP 编码 规则 SOAP Block

◎ SO AP RP C 表示 SOAP Body
SOAP Block

◎ SO AP 绑定
SOAP Block
第 6 章 Web 服务体 系结构 6.3 Web 服务的核 心技 术

◇ Web 服务描 述语言

Service

Port
(e.g. http://host/svc)
Port

Binding
(e.g. SOAP)
Binding

portType

Operation(s)
inMessage OutMessage

Abstract interface
第 6 章 Web 服务体 系结构 6.3 Web 服务的核 心技 术

◇ 统一描述、 发现和集成 协议

◎ 商业实 体结构
businessEntity: 发布
服务信息的商业实体
的详细信息 tModel: 服务或分类
◎ 商业服 务结构 法的规范描述。是技
术指纹的表现基础

◎ 绑定模 板 businessService: 一
组特定的技术服务的
描述信息
◎ t 模型结 构
BindingTemplate: 关
于服务的入口点和构
造规范的技术信息
第 6 章 Web 服务体 系结构 6.4 面向服 务的 软件体 系结

◇ SOA 的概念

◎ W3C 定义
SO A 为一种 应用 程序体 系结 构, 在这种 体系 结构
中, 所有 功能都 定义 为独立 的服 务,这 些服 务带
有定 义明 确的可 调用 接口, 可以 以定义 好的 顺序
调用 这些 服务来 形成 业务流 程。
第 6 章 Web 服务体 系结构 6.4 面向服 务的 软件体 系结

◇ SOA 的概念

◎ Gart ner 定义

SO A 为客 户端 / 服务 器的 软件设 计方 法,一 项
应用由软 件服 务和软 件服务 使用 者组成 , SO A
与大多数 通用 的客户 端 / 服务器 模型不 同之 处
,在于它 着重 强调软 件构件 的松 散耦合 ,并 使
用独立的 标准 接口。
第 6 章 Web 服务体 系结构 6.4 面向服 务的 软件体 系结

◇ SOA 的概念

◎ 一个完 整的面 向服 务的体 系结 构模型

应用配置

服务1 服务2 服务3


应用管理
流 服务总线
I/O




器 服务4 服务5 服务6

历史遗留系统
第 6 章 Web 服务体 系结构 6.4 面向服 务的 软件体 系结

◇ SOA 的概念

◎ 单个服 务内 部结构

数 数据
服务接口 逻
服 共同的封装 据
辑 访
务 共同的语言格式 层 SQL
问 XML Flat File
共同的安全和容错处理 Database

第 6 章 Web 服务体 系结构 6.4 面向服 务的 软件体 系结

◇ SOA 的概念

◎ SOA 模型的特 征

◎ 松散耦 合

◎ 粗粒度 服务

◎ 标准化 接口
第 6 章 Web 服务体 系结构 6.4 面向服 务的 软件体 系结

◇ SOA 的设计 原则

◎ 面向服 务的 分析与 设计 原理

业务组织 业务流程建模

面向服务的分
体系结构 企业体系结构
析与设计

底层设计 面向对象分析与设计

分析 设计 开发
第 6 章 Web 服务体 系结构 6.4 面向服 务的 软件体 系结

◇ SOA 的设计 原则

◎ SOA 的实践原 则

◎ 业务驱 动服务 ,服 务驱动 技


◎ 业务敏 捷是基 本的业 务需 求


第 6 章 Web 服务体 系结构 6.5 Web 服务的应 用实 例

服务集成器
系统 过程模版 过程定义 过程库
入口 原 数据
GUI 过程监控 执行分析引擎 子 仓库

IE 务
运行交互 服务目录 库 数据
PDA 库
服务单元搜索
第 6 章 Web 服务体 系结构 本章作业 与思考 题

1 、什么是 Web 服务体 系结构? 与传统的结 构相比,使用 We b


服务有 哪些好处?

2 、在 We b 服务中,如何 实现其松散 耦合的特 点?

3 、试分析服务 提供者、服 务请求者 和服务代理 三者的作用


,以及 它们之间的 工作流程。

4 、试解释 Web 服务栈 的层次结 构。

5 、 We b 服务有哪些核心 技术,这 些技术是 如何在 We b 服务


中发挥 作用的。

6 、从管理的角 度看, SOA 有什么 优点?

7 、在实际开发 中,如何实 现 Web 服务和 SOA 结构?


课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式概 述

◎ 模式是指 从某 个具体 的形 式中得 到的一 种抽 象,


在特 殊的 非任意 性的 环境中 ,该 形式不 断地重 复出
现。

◎ 一个软件 体系 结构的 模式 描述了 一个出 现在 特定


设计 语境 中的特 殊的 再现设 计问 题,并 为它的 解决
方案 提供 了一个 经过 充分验 证的 通用图 示。解 决方
案图 示通 过描述 其组 成构件 及其 责任和 相互关 系以
及它 们的 协作方 式来 具体指 定。
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式概 述
◎ MV C 模式
Observer
call update update

Model
core data
setOfObservers

attach(Observer)
attach View
detach(Observer)
notify getData myModel
myController create
getData Controller
initialize(Model) manipulate
service makeController disaplay myModel
activate myView
display initialize(Model,View)
update attach
handleEvent
call service
update
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式概 述

一个 好的 模式必 须做 到以下 几点 :
◎ 解决一个问题: 从模式可 以得到解 ,而不仅仅是 抽象的原
则或策 略。
◎ 是一个被证明了 的概念: 模式通过 —个记录得到 解.而不
是通过 理论或推测 。
◎ 解并不是显然的 :许多解 决问题的 方法(例如软 件设计范
例或方 法)是从最 基本的原理得 到解;而最 好的方法是 以非直
接的方 式得到解, 对大多数比较 困难的设计 问题来说, 这是必
要的。
◎ 描述了一种关系 :模式并 不仅仅描 述模块,它给 出更深层
的系统 结构和机理 。
◎ 模式有重要的人 为因素: 所有的软 件服务于人类 的舒适或
生活质 量,而最好 的模式追求它 的实用性和 美学。
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式的 基本成分

◎ 模式名 称

◎ 问题

◎ 解决方 案

◎ 后果
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式的 描述( 1 )

Eri ch Ga mma 博士等 人采用 下面的 固定 模式来 描


述:
( 1 )模 式名 称和分 类
( 2 )目 的
( 3 )别 名
( 4 )动 机
( 5 )应 用
( 6 )结 构
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式的 描述( 2 )

Eri ch Gam ma 博士等人 采用 下面的 固定 模式来 描述



( 7 )成 分
( 8 )合 作
( 9 )后 果
( 10 )实现
( 11 )例程 代码
( 12 )已知 的应用
( 13 )相关 模式
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 模式和软件 体系结构

◎ 模式作为 体系 结构构 造块

◎ 构造异构 体系 结构

◎ 模式和方 法

◎ 实现模式
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式方 法分类

◎ Co ad 的面 向对 象模式

◎ 代码模 式

◎ 框架应 用模式

◎ 形式合 约
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式方 法分类

1 、 Co ad 的面 向对 象模式 ( 1 )

1992 年,美国的面 向对象技术 的大师 Pet er Coa d 从 MV C 的


角度对 面向对象系 统进行了讨 论,设计模 式由最底层的 构成部分
(类和 对象)及其 关系来区分 。他使用了 一种通用的方 式来描述
一种设 计模式:

( 1 ) 模式所 能解决问题 的简要介绍 与讨论;

( 2 ) 模式的 非形式文本 描述以及图 形表示;

( 3 ) 模式的 使用方针: 在何时使用 以及能够与 哪些模式结合 使


用。
第 7 章 基于体系结 构的软件开 发 7.1 设计 模式

◇ 设计模式方 法分类
1 、 Co ad 的面 向对 象模式 ( 2 )

( 1 )基本的继承 和交互模式 :主要包 括 OO PL 所提供的 基本


建模功 能,继承模 式声明了一个 类能够在其 子类中被修 改或
被补充 ,交互模式 描述了在有多 个类的情况 下消息的传 递。

( 2 )面向对象软 件系统的结 构化模式 :描述了在 适当情况


下,一 组类如何支 持面向对象软 件系统结构 的建模。

( 3 )与 MV C 框架相关的模 式。

几乎所 有 Co ad 提出的模 式都指明如 何构造面向对 象软件系统


,有助 于设计单个 的或者一小组 构件,描述 了 MVC 框架的各
个方面 。但是,他 没有重视抽象 类和框架, 没有说明如 何改
造框架 。
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式方 法分类

2 、代 码模 式

代码模 式的抽象 方式与 OOP L 中的代 码规范很 相似,该类模 式


有助于 解决某种 面向对象程 序设计语言中 的特定问题 。主要目
标在于 :
( 1 ) 指明结 合基本语 言概念的可 用方式;
( 2 ) 构成源 码结构与 命名规范的 基础;
( 3 ) 避免面 向对象程 序设计语言 (尤其是 C++ 语言) 的缺陷

代码模 式与具体 的程序设计 语言或者类库 有关,它们 主要从语


法的角 度对于软 件系统的结 构方面提供一 些基本的规 范。这些
模式对 于类的设 计不适用, 同时也不支持 程序员开发 和应用框
架,命 名规范是 类库中的名 字标准化的基 本方法,以 免在使用
类库时 产生混淆 。
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式方 法分类

3 、框架 应用 模式

在应用 程序框架“ 菜谱”中有很 多“菜谱条 ”,它们用 一种


不很规 范的方式描 述了如何应用 框架来解决 特定的问题 。程
序员将 框架作为应 用程序开发的 基础,特定 的框架适用 于特
定的需 求。“菜谱 条”通常并不 讲解框架的 内部设计实 现,
只讲如 何使用。

不同的 框架有各自 的“菜谱”。


第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式方 法分类

4 、形 式合 约 (1)
形式合 约也 是一种 描述 框架 设计的 方法, 强调 组成框 架的 对象间 的交
互关系 。有 人认为 它是 面向 交互的 设计, 对其 他方法 的发 展有启 迪作
用。但 形式 化方法 由于 其过 于抽象 ,而有 很大 的局限 性, 仅仅在 小规
模程序 中使 用。
优点:
( 1 )符 号所 包含的 元素 很少 ,并且 其中引 入的 概念能 够被 映射成 为
面向对 象程 序设计 语言 中的概 念。 例如, 参与者 映射 成为对 象。

( 2 )形 式合 约中考 虑到 了复 杂行为 是由简 单行 为组成 的事 实,合 约


的修订 和扩 充操作 使得 这种方 法很 灵活, 易于应 用。
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式方 法分类

4 、形 式合 约 (2)
缺点:

( 1 )在某些 情况 下很难 用, 过于繁 琐。若 引入 新的符 号, 则又


使符号 系统 复杂化 。

( 2 )强制性 地要 求过分 精密 ,从而 在说明 中可 能发生 隐患 (例


如冗余 )。

( 3 )形式合 约的 抽象程 度过 低,接 近面向 对象 的程序 设计 语言


,不易 分清 主次。
第 7 章 基于体 系结构的软 件开发 7.1 设计 模式

◇ 设计模式目 录的内容

Gam ma 在他的博 士论文中总 结了一系列的 设计模式, 用一种类


似分类 目录的形式 将设计模式 记载下来。我 们称这些设 计模
式为设 计模式目录 。

根据模 式的目标, 可以将它们 分成创建性模 式、结构性 模式


和行为 性模式。创 建性模式处 理的是对象的 创建过程, 结构
性模式 处理的是对 象 / 类的组 合,行为 性模式处理 类和对象
间的交 互方式和任 务分布。

根据它 们主要的应 用对象,又 可以分为主要 应用于类的 和主


要应用 于对象的。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ 有关概念
ABS D 方法为 产生软件 系统的概 念体系结构 提供构造,概 念体系
结构是 由 Ho fim ei ste r 、 Nord 和 So ni 提出的 四种不同的体 系
结构中 的一种, 它描述了系 统的主要设计 元素及其关 系。概念体
系结构 代表了在 开发过程中 作出的第一个 选择,相应 地,它是达
到系统 质量和商 业目标的关 键,为达到预 定功能提供 了一个基础

体系结 构驱动, 是指构成体 系结构的商业 、质量和功 能需求的组


合。

使用 ABSD 方法,设计活动 可以在体 系结构驱 动一决定就开 始,


这意味 着需求抽 取和分析还 没有完成,就 开始了软件 设计。设计
活动的 开始并不 意味着需求 抽取和分析活 动就可以终 止,而是应
该与设 计活动并 行。特别是 在不可能预先 决定所有需 求时,例如
产品线 系统或长 期运行的系 统,快速开始 设计是至关 重要的。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ 有关概念

软件 模板是一个 特殊类型 的软件元素 ,包括描述所 有这种类


型的元 素在共享服 务和底层构 造的基础上 如何进行交互 。软件模
板还包 括属于这种 类型的所有 元素的功能 ,这些功能的 例子有:
每个元 素必须记录 某些重大事 件,每个元 素必须为运行 期间的外
部诊断 提供测试点 等。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ 有关概念

系统

设计元素 概念子系统
模板

概念构件 模板

实际构件
图示

聚合
继承
进化
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ 有关概念

在使用 用例捕获功 能需求的同 时,我们通 过定义特定场 景来


捕获质 量需求,并 称这些场景 为质量场景 。这样一来, 在一
般的软 件开发过程 中,我们使 用质量场景 捕获变更、性 能、
可靠性 和交互性, 分别称之为 变更场景、 性能场景、可 靠性
场景和 交互性场景 。质量场景 必须包括预 期的和非预期 的刺
激。

例如, 一个预期的 性能场景是 估计每年用 户数量增加 10% 的


影响, 一个非预期 的场景是估 计每年用户 数量增加 100% 的影
响。非 预期场景可 能不能真正 实现,但它 们在决定设计 的边
界条件 时很有用。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法与生命 周期
商业用例
软件设计师的经验
遗留系统

需求分析

功能需求
抽象
用例
质量需求
抽象
质量因素
体系结构选项
约束
ABSD方法

抽象构件
软件模板
约束
需求

实际构件设计
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

1 、 AB SD 方法 定义 的设计 元素

系统

概念子系统
模板

概念构件 模板

实际构件
图示

聚合
继承
进化
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

2 、设计 元素 的产生 顺序

B C
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

3 、设计 元素 的活动

定义逻辑视图

校验质 定义
量因素 并发
和约束 视图

定义配置视图
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

定义 逻辑 视图 功能分解
选择基本体
系结构风格

为体系结构
分配功能

提炼模板

用用例和变化
因素进行校验
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

某系 统的 逻辑视 图
用户界面子系统
用户界面页服务1 用户界面页服务1

服务1子系统 服务2子系统

操作系统子系统
网络子系统

图注: 数据流
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤
( 1 )功能 分解

一个设 计元素有一 组功能,这些 功能必须分 组。分解的 目的是


使每个 组在体系结 构内代表独立 的元素。分 解可以进一 步细化。
这种分 解的标准取 决于对一个特 定的设计元 素来说是很 重要的
性能。 在不同的性 能基础上,可 以进行多重 分解。

如果象 通常的产品 一样,在分解 中起关键作 用的性能要 求是可


修改的 ,则功能的 分组可选择几 个标准:
( 1 ) 功能聚 合。
( 2 ) 数据或 计算行为的 类似模式。
( 3 ) 类似的 抽象级别。
( 4 ) 功能的 局部性。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

( 2 )选择 体系结构风 格
每个设 计元素有一 个主要的体系 结构风格或 模式,这是 设计元
素如何 完成它的功 能的基础。主 要风格并不 是唯一风格 ,为了
达到特 定目的,可 以进行修改。
体系结 构风格的选 择建立在设计 元素的体系 结构驱动基 础上。
在软件 设计过程中 ,并不总是有 现成的体系 结构风格可 供选择
为主要 的体系结构 风格。
一旦选 定了一个主 要的体系结构 风格,该风 格必须适应 基于属
于这个 设计元素的 质量需求,体 系结构选择 必须满足质 量需求

为设计 元素选择体 系结构风格是 一个重要的 选择,这种 选择在
很大程 度上依赖于 软件设计师的 个人设计经 验。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

( 3 )为风 格分配功能

选择体 系结构风格 时产生了一组 构件类型, 我们必须决 定这些


类型的 数量和每个 类型的功能, 这就是分配 的目的。在 功能分
解时产 生的功能组 ,应该分配给 选择体系结 构风格时产 生的构
件类型 ,这包括决 定将存在多少 个每个构件 类型的实例 ,每个
实例将 完成什么功 能。这样分配 后产生的构 件将作为设 计元素
分解的 子设计元素 。

每个设 计元素的概 念接口也必须 得到标识, 这个接口包 含了设


计元素 所需的信息 和在已经定义 了的体系结 构风格内的 每个构
件类型 所需要的数 据和控制流。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

( 4 )细化 模板

被分解 的设计元素 有一组属于它 的模板。在 ABSD 方法的初期 ,


系统没 有模板。当 模板细化了以 后,就要把 功能增加上 去。这
些功能 必须由实际 构件在设计过 程中加以实 现。

最后, 需要检查模 板的功能,以 判断是否需 要增加附加 功能到


系统任 何地方的设 计元素中。也 就是说,要 识别在该级 别上已
经存在 的任何横向 服务。模板包 括了什么是 一个好的设 计元素
和那些 应该共享的 功能。每种类 型的功能可 以需要附加 支持功
能,这 种附加功能 一旦得到识别 ,就要进行 分配。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

( 5 )功能 校验

用例用 来验证他们 通过有目的的 结构能够达 到。子设计 元素的


附加功 能将可能通 过用例的使用 得到判断。 然而,如果 用例被
广泛地 使用于功能 分解的过程中 ,将几乎不 能发现附加 功能。

也可以 使用变化因 素,因为执行 一个变化的 难点取决于 功能的


分解。
从这种 类型的校验 出发,设计就 是显示需求 (通过用例 )和支
持修改 (通过变化 因素)。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

( 6 )创建 并发视图

检查并 发视图的目 的是判断哪些 活动是可以 并发执行的 。这些


活动必 须得到识别 ,产生进程同 步和资源竞 争。

对并发 视图的检查 是通过虚拟进 程来实现的 。虚拟进程 是通过


程序、 动态模块或 一些其他的控 制流执行的 一条单独路 径。虚
拟进程 与操作系统 的进程概念不 一样,操作 系统的进程 包括了
额外的 地址空间的 分配和调度策 略。一个操 作系统进程 是几个
虚拟进 程的连接点 ,但每个虚拟 进程不一定 都是操作系 统进程。
虚拟进 程用来描述 活动序列,使 同步或资源 竞争可以在 多个虚
拟进程 之间进行。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤
( 6 )创建 并发视图

初始化
开始

计时服务

用户界面处理
(服务1)
用户界面处理 诊断例程
(服务2)

命令服务1 命令服务2

图注: 控制线程
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

( 7 )创建 配置视图

如果在 一个系统中 ,使用了多个 处理器,则 需要对不同 的处理


器配置 设计元素, 这种配置通过 配置视图来 进行检查。

例如, 我们检查网 络对虚拟线程 的影响,一 个虚拟线程 可以通


过网络 从一个处理 器传递到另一 个处理器。 我们使用物 理线程
来描述 在某个特定 处理器中的线 程。也就是 说,一个虚 拟线程
是由若 干个物理线 程串联而成的 。通过这种 视图,我们 可以发
现一个 单一的处理 器上的同步的 物理线程和 把一个虚拟 线程从
一个处 理器传递到 其他处理器上 的需求。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

( 7 )创建 配置视图
用户界面页服务1 用户界面页服务1

用户界面页服务2 用户界面页服务2

服务1子系统 服务1

服务2子系统 服务2

操作系统子系统
操作系统
网络子系统

图注: 控制线程 概念子系统 配置单元


第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

( 8 )验证 质量场景

一旦创 建了三个视 图,就要把质 量场景应用 到所创建的 子设计


元素上 。对每个质 量场景,都要 考虑是否仍 然满足需求 ,每个
质量场 景包括了一 个质量属性刺 激和所期望 的响应。考 虑到目
前为止 所作出的设 计决策,看其 是否能够达 到质量属性 的要求

如果不 能达到,则 需重新考虑设 计决策,或 者设计师必 须接受


创建质 量场景失败 的现实。
第 7 章 基 于体 系结 构的软 件开 发 7.2 基于体系 结构的设计方

◇ ABSD 方法的步骤

( 9 )验 证约 束

最后一 步就是要验 证所有的约 束没有互相 矛盾的地方, 对每一


个约束 ,都需提问 “该约束是 否有可能实 现?”。一个 否定的
回答就 意味着对应 的质量场景 也不能满足 。这时,需要 把问题
记录进 文档,对导 致约束的决 策进行重新 验证。
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 设计和演化 过程

◎ 实验原 型阶段

◎ 演化开 发阶段
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 实验原型阶 段

第一个 开发 周期
第一个 开发周期 没有具体的、 明确的目标 。此时,为
了提高 开发效率, 缩短开发周期 ,所有开发 人员可以分 成了
两个小 组,一个小 组创建图形用 户界面 ,另 一个小组 创建 一
个问题 域模型 。两个 小组要并行 地工作,尽 量不要发生相 互
牵制的 现象。

在第一个周 期结束时, 形成了两个 版本,一个 是图形用


户界面 的初始设计 ,另一个是问 题域模型, 该模型覆盖 了问
题域的 子集。用户 界面设计由 水平原型 表示 ,也就是说 ,运
行的程 序只是实现 一些用户界面 控制,没有 实现真正的 系统
功能。
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 实验原型阶 段

第二个 开发 周期

◎ 标识 构件
◎ 提出 软件 体系结 构模 型
◎ 把已标识 的构 件映射 到软 件体系 结构

◎ 分析 构件 之间的 相互 作用
◎ 产生 软件 体系结 构
◎ 软件 体系 结构正 交化
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 实验原型阶 段

第二个 开发 周期

( 1 )标识 构件

第一 步, 生成类 图

第二 步, 对类进 行分 组

第三 步, 把类打 包成 构件
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 实验原型阶 段

第二个 开发 周期

( 2 )提出 软件体系结 构模 型

在建立体 系结 构的初 期, 选择一 个合 适的体 系


结构 风格 是首要 的。 在这个 风格 基础上 ,开发 人员
通过 体系 结构模 型, 可以获 得关 于体系 结构属 性的
理解 。

此时, 虽然这 个模 型是理 想化的 ( 其中的 某些


部分 可能 错误地 表示 了应用 的特 征 ) ,但是 ,该模
型为 将来 的调整 和演 化过程 建立 了目标 。
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 实验原型阶 段

第二个 开发 周期

( 3 )把已 标识的构件 映射 到软 件体系 结构 中

把在第( 1 )阶段已 标识 的构件 映射 到体系 结


构中 ,将 产生一 个中 间结构 ,这 个中间 结构只 包含
那些 能明 确适合 体系 结构模 型的 构件。
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 实验原型阶 段

第二个 开发 周期

( 4 )分析 构件之间的 相互 作用

为了把所 有已 标识的 构件 集成到 体系 结构中 ,


必须 认真 分析这 些构 件的相 互作 用和关 系。我 们可
以使 用 UM L 的顺序 图来完 成这 个任务 。
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 实验原型阶 段

第二个 开发 周期

( 5 )产生 软件体系结 构

一旦决定 了关 键的构 件之 间的关 系和 相互作 用


,就 可以 在第( 3 )阶 段得 到的中 间结 构的基 础上
进行 精化 。可以 利用 顺序图 标识 中间结 构中的 构件
和剩 下的 构件之 间的 依赖关 系, 分析第 ( 2 )阶段
模型 的不 一致性 ( 例如 丢失 连接等 ) 。
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 实验原型阶 段

第二个 开发 周期

( 6 )软 件体 系结构 正交 化

在( 1 ) - ( 5 ) ) 阶段产 生的软 件体 系结构 不


一定 满足 正交性 (例 如:同 一层 次的构 件之 间可能
存在 相互 调用) 。整 个正交 化过 程以原 体系 结构的
线索 和构 件为单 位, 自顶向 下、 由左到 右进 行。通
过对 构件 的新增 、修 改或删 除, 调整构 件之 间的相
互作 用, 把那些 不满 足正交 性的 线索进 行正 交化。
第 7 章 基 于体 系结 构的软 件开 发 7.3 体系结 构的设计 与演化

◇ 演化开发阶 段

◎ 需求变 动归类
◎ 制订体 系结构 演化计 划
◎ 修改、 增加或 删除构 件
◎ 更新 构件 的相互作 用
◎ 产生演 化后的 体系结 构
◎ 迭代
◎ 对以上 步骤进 行确认 ,进 行阶段 性技 术评审
◎ 对所做 的标记 进行处 理
第 7 章 基 于体 系结 构的软 件开 发
7.4 基于体 系结构的软件 开发模型

◇ ABSD M
第 7 章 基 于体 系结 构的软 件开 发
7.4 基于体 系结构的软件 开发模型

◇ 体系结构需 求
第 7 章 基 于体 系结 构的软 件开 发
7.4 基于体 系结构的软件 开发模型

◇ 体系结构设 计
第 7 章 基 于体 系结 构的软 件开 发
7.4 基于体 系结构的软件 开发模型

◇ 体系结构文 档化

文档是在系统演 化的每一 个阶段, 系统设计与开 发人员的通


讯媒介 ,是为验证 体系结构设 计和提炼或修 改这些设计 (必要时
)所执 行预先分析 的基础。

体系结构文档化 过程的主 要输出结 果是 体系结构 需求规格说


明和测试 体系结构 需求的 质量设 计说明书 这两个文档。 生成需求
模型构 件的精确的 形式化的描 述,作为用户 和开发者之 间的一个
协约。

软件体系结构的 文档要求 与软件开 发项目中的其 他文档是类


似的。 文档的完整 性和质量是 软件体系结构 成功的关键 因素。文
档要从 使用者的角 度进行编写 ,必须分发给 所有与系统 有关的开
发人员 ,且必须保 证开发者手 上的文档是最 新的。
第 7 章 基 于体 系结 构的软 件开 发
7.4 基于体 系结构的软件 开发模型

◇ 体系结构复 审

体系结构设计、 文档化和 复审是一 个迭代过程。 从这个方


面来说 ,在一个主 版本的软件体 系结构分析 之后,要安 排一次
由外部 人员(用户 代表和领域专 家)参加的 复审。

复审的目的是标 识潜在的 风险,及 早发现体系结 构设计中


的缺陷 和错误,包 括体系结构能 否满足需求 、质量需求 是否在
设计中 得到体现、 层次是否清晰 、构件的划 分是否合理 、文档
表达是 否明确、构 件的设计是否 满足功能与 性能的要求 等等。

由外部人员进行 复审的目 的是保证 体系结构的设 计能够公


正地进 行检验,使 组织的管理者 能够决定正 式实现体系 结构。
第 7 章 基 于体 系结 构的软 件开 发
7.4 基于体 系结构的软件 开发模型

◇ 体系结构实 现
第 7 章 基 于体 系结 构的软 件开 发
7.4 基于体 系结构的软件 开发模型

◇ 体系结构演 化
第 7 章 基 于体 系结 构的软 件开 发 本章 作业与思考 题

1 、请 把基 于体系结 构的软件 开发模 型与 其他软 件


开发 模型 进行比 较。
2 、请 把基 于体系结 构的软件 设计方 法与 其他软 件
设计 方法 进行比 较。
3 、如 何才 能提高软 件系统的 可演化 性。
课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 8 章 软 件体 系结 构的分 析与 测试 8.1 可靠性 建模

S1 S2 Si Sn-1 Sn
S1 0 R1P12 R1P1i R1P 1n-1 R1P1n
S2 R2P21 0 R2P2i R2P 2n-1 R2P2n

M= Si RiPi1 RiPi2 0 RiPin-1 RiPin

Sn-1 RiP(n-1)1 Ri P(n-1)2 RiP (n-1)i 0 Ri P(n-1)n


Sn
RnPn1 RnP n2 RnPni RnPn(n-1) 0
第 8 章 软 件体 系结 构的分 析与 测试 8.1 可靠性 建模

◇ 顺序结构风 格

体系结构视图
p12
(a) C1 C2 Ck

状态视图 Rk
(b) R1 R2
S1 S2 Sk

 M (i, j )  0, Si 不能够到达S j
 ,for 1  i, j  k
 M (i, j )  ri pij , Si能够到达S j
第 8 章 软 件体 系结 构的分 析与 测试 8.1 可靠性 建模

◇ 并行 / 管道 - 过滤器 结构风格
C2 R2
体系结构视图 p
12 p2k
R1 Rk
C3
(a) C1 Ck

Ck-1

S p1
状态视图

(b) S1 Sk
k −1
P12
∏P
n =2
nk

 M (i, j )  Ri Pij , Si  S p

 for 1  i, j | S |
 M (i, j )   Rn Pnj , Si  S p ,
and 1  n  k
 Cn in Si
 M (i, j )  0, Si 不能到达S j

第 8 章 软 件体 系结 构的分 析与 测试 8.1 可靠性 建模

◇ 容错结构风 格 P
C2 2(k-2)
体系结构视图 p12 P2(k-1) Ck-2
C3 Rk
(a) C1 Ck
Ck-1
R1
Ck-3 Rk-1

Sb1
状态视图 Sk-2
(b) S1 Sk
Sk-1

 M (i, j )  Ri Pij , Si  Sb

 ar   q 1
 
 M (i, j )  Ra1     
q  a 2   m  a1
(1_ R )
m  n R  , Si  Sb并且包括
Si Ca1 ···Car
  
 M (i, j )  0, S 不能到达S ,1  i, j | S |,1  a  k
 i j r
第 8 章 软 件体 系结 构的分 析与 测试 8.1 可靠性 建模

◇ 调用 - 返回结构风 格

体系结构视图 p12
(a) C1 C2
p21
p13 R1
C3
状态视图
(b) S1 S2
R1
S3

 M (i, j )  Ri Pij , Si 可以到达S j



 M (i, j )  Pij , Si 可以到达是被调用构件,
Sj,Sj 1  i, j  k

 M (i, j )  0, Si 不能到达S j
第 8 章 软 件体 系结 构的分 析与 测试 8.1 可靠性 建模

◇ 系统的可靠 性模型化步 骤

◎ 通过系统 的详 细说明 书,确 定系 统所采 用的 体系


结构风格 。
◎ 把每一种 体系 结构风 格转换 成状 态视图 ,并 计算
状态视图 中每 一个状 态的 可靠性 及其 相应的 迁移
概率。
◎ 通过整个 系统 的体系 结构视 图, 把所有 的状 态视
图集成为 一个 整体状 态视 图。
◎ 通过整体 状态 视图构 造系统 的迁 移矩阵 ,并 计算
系统的可 靠性 。
第 8 章 软 件体 系结 构的分 析与 测试8.2 可靠性 风险分 析

◇ 软件体系结 构风险分析 背景

◎ 动态方 法

◎ 构件依 赖图
第 8 章 软 件体 系结 构的分 析与 测试8.2 可靠性 风险分 析

◇ 软件体系结 构风险分析 方法

◎ 采用体系 结构 描述语 言 AD L 对体系 结构进 行建



◎ 通过模 拟方法 执行复 杂性 分析
◎ 通过 FME A 和模拟 运行 执行严 重性 分析
◎ 为构件 和连接 件开发 其启 发式风 险因 子
◎ 建立用 于风险 评估的 CDG
◎ 通过图 论中的 算法执 行风 险评估 和分 析
第 8 章 软 件体 系结 构的分 析与 测试8. 3 基于 SA 的软 件测

◇ 测试方法

◎ 测试内 容
◎ 测试准 则
◎ 测试需 求和测 试用 例的生 成

1级测试: 2级测试: 3级测试:连 4级测试:组 4级测试:


组件内部 连接器内部 接器与组件 件与连接器 组件之间
第 8 章 软 件体 系结 构的分 析与 测试8. 3 基于 SA 的软 件测

◇ 实例与实现

自学
第 8 章 软 件体 系结 构的分 析与 测试 本章作业 与思 考题

1 、什 么是 软件体 系结 构的可 靠性 ?为什 么要 研


究软件体 系结 构的可 靠性?

2 、如 何模 型化系 统的 可靠性 ?

3 、软 件体 系结构 风险 分析有 哪些 基本步 骤?

4 、软 件体 系结构 测试 与程序 测试 的主要 区别 是


什么?
课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 性能

性能是指 系统 的响应 能力 ,即要 经过 多长时 间


才能 对某 个事件 做出 响应, 或者 在某段 事件内 系统
所能 处理 的事件 的个 数。

经常用单 位事 件内所 处理 事务的 数量 或系统 完


成某 个事 务处理 所需 的时间 来对 性能进 行定量 的表
示。

性能测试 经常 要使用 基准 测试程 序( 用以测 量


性能 指标 的特定 事务 集或工 作量 环境) 。
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 可靠性 (1 )

可靠性 是软件系统在 应用或系统 错误面前, 在意外或


错误使 用的情况下 维持软件系统 的功能特性 的基本能力 。

可靠性 通常用平 均失效等待 时间( MTT F )和平均失


效间隔 时间( MT BF )来衡 量。在失 效率为常数和 修复时
间很短 的情况下, MTTF 和 MT BF 几乎相等 。
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 可靠性 (2 )

◎ 容错

◎ 健壮性
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 可用性

可用 性是 系统能 够正 常运行 的时 间比例 。经 常用两


次故 障之 间的时 间长 度或在 出现 故障时 系统 能够恢
复正 常的 速度来 表示 。
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 安全性

安全性 是指 系统在 向合法 用户 提供 服务的 同时


能够 阻止 非授权 用户 使用的 企图 或拒绝 服务 的能力 。
安全 性是 根据系 统可 能受到 的安 全威胁 的类 型来分
类的 。

安全性 又可 划分为 机密性 、完 整性 、不可 否认


性及 可控 性等特 性。 其中, 机密 性保证 信息 不泄露
给未 授权 的用户 、实 体或过 程; 完整性 保证 信息的
完整 和准 确,防 止信 息被非 法修 改;可 控性 保证对
信息 的传 播及内 容具 有控制 的能 力,防 止为 非法者
所用 。
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 可修改性

◎ 可维护 性

◎ 可扩展 性

◎ 结构重 组

◎ 可移植 性
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 功能性

功能性是 系统 所能完 成所 期望的 工作 的能力 。


一项 任务 的完成 需要 系统中 许多 或大多 数构件 的相
互协 作。
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 可变性

可变性 是指 体系结 构经 扩充 或变更 而成 为新体


系结构的 能力 。这种 新体系 结构 应该符 合预 先定义
的规则, 在某 些具体 方面不 同于 原有的 体系 结构。
当要将某 个体 系结构 作为一 系列 相关产 品( 例如,
软件产品 线) 的基础 时,可 变性 是很重 要的 。
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 集成性

可集 成性 是指系 统能 与其他 系统 协作的 程度 。


第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 互操作性

作为系 统组成 部分 的软件 不是独 立存 在的, 经


常与 其他 系统或 自身 环境相 互作 用。为 了支 持互操
作性 ,软 件体系 结构 必须为 外部 可视的 功能 特性和
数据 结构 提供精 心设 计的软 件入 口。程 序和 用其他
编程 语言 编写的 软件 系统的 交互 作用就 是互 操作性
的问 题, 这种互 操作 性也影 响应 用的软 件体 系结构

第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 基本概念

(1) 敏 感点和 权衡点

敏感点 是一个 或多 个构件 (和 / 或构 件之 间的


关系 )的 特性。 研究 敏感点 可使 设计人 员或 分析员
明确 在搞 清楚如 何实 现质量 目标 时应注 意什 么。

权衡点 是影响 多个 质量属 性的特 性, 是多个 质


量属 性的 敏感点 。例 如,改 变加 密级别 可能 会对安
全性 和性 能产生 非常 重要的 影响 。提高 加密 级别可
以提 高安 全性, 但可 能要耗 费更 多的处 理时 间,影
响系 统性 能。如 果某 个机密 消息 的处理 有严 格的时
间延 迟要 求,则 加密 级别可 能就 会成为 一个 权衡点

第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 基本概念

( 2 )风 险承 担者

系统 的体 系结构 涉及 到很多 人的 利益, 这些 人都对


体系 结构 施加各 种影 响,以 保证 自己的 目标 能够实
现。
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 基本概念

( 3 )场 景 (1 )

在进行体系结 构评估时, 一般首先 要精确地得 出具体的


质量目 标,并以之 作为判定该 体系结构优 劣的标准。我 们把为
得出这 些目标而采 用的机制叫 做场景。场 景是从风险承 担者的
角度对 与系统的交 互的简短描 述。在体系 结构评估中, 一般采
用刺激 、环境和响 应三方面来 对场景进行 描述。
第 9 章 软 件体 系结 构评估 9.1 体系结 构评估 概述

◇ 基本概念
( 3 )场景 (2)

刺激是场景中解 释或描述 风险承担 者怎样引发 与系统的


交互部 分。例如, 用户可能会激 发某个功能 ,维护人员 可能会
做某个 更改,测试 人员可能会执 行某种测试 等,这些都 属于对
场景的 刺激。

环境描述的是刺 激发生时 的情况。 例如,当前 系统处于


什么状 态?有什么 特殊的约束条 件?系统的 负载是否很 大?某
个网络 通道是否出 现了阻塞等。

响应是指系统是 如何通过 体系结构 对刺激作出 反应的。


例如, 用户所要求 的功能是否得 到满足?维 护人员的修 改是否
成功? 测试人员的 测试是否成功 等。
第 9 章 软 件体 系结 构评估 9.2 SA 评估的 主要方 式

◇ 主要的评估 方式

◇ 基于 调查问 卷或 检查表 的评 估方式

◇ 基于 场景的 评估 方式

◇ 基于 度量的 评估 方式
第 9 章 软 件体 系结 构评估 9.2 SA 评估的 主要方 式

◇ 基于调查问 卷或检查表 的评估方式 (1 )

CMU /S EI 的软件 风险评估 过程采用 了这一方式。

调查问卷是一系 列可以应 用到各种 体系结构评估 的相关问


题,其 中有些问题 可能涉及到体 系结构的设 计决策;有 些问题
涉及到 体系结构的 文档,有的问 题针对体系 结构描述本 身的细
节问题 。

检查表中也包含 一系列比 调查问卷 更细节和具体 的问题,


它们更 趋向于考察 某些关心的质 量属性。
第 9 章 软 件体 系结 构评估 9.2 SA 评估的 主要方 式

◇ 基于调查问 卷或检查表 的评估方式 (2 )

这一评估 方式比较自 由灵活,可评 估多种质量 属性,也 可


以在软 件体系结 构设计的多 个阶段进行。 但是由于评 估的结果很
大程度 上来自评 估人员的主 观推断,因此 不同的评估 人员可能会
产生不 同甚至截 然相反的结 果,而且评估 人员对领域 的熟悉程度
、是否 具有丰富 的相关经验 也成为评估结 果是否正确 的重要因素

尽管基于 调查问卷与 检查表的评估 方式相对比 较主观, 但


由于系 统相关的 人员的经验 和知识是评估 软件体系结 构的重要信
息来源 ,因而它 仍然是进行 软件体系结构 评估的重要 途径之一。
第 9 章 软 件体 系结 构评估 9.2 SA 评估的 主要方 式

◇ 基于场景的 评估方式 (1 )

基于场景的方式 由 SEI 首先提出 并应用在体 系结构权


衡分析 方法( ATA M )和软 件体系结 构分析方法 ( SA AM )中

这种软件体系结 构评估方 式分析软 件体系结构 对场景也


就是对 系统的使用 或修改活动 的支持程度 ,从而判断该 体系
结构对 这一场景所 代表的质量 需求的满足 程度。例如, 用一
系列对 软件的修改 来反映易修 改性方面的 需求,用一系 列攻
击性操 作来代表安 全性方面的 需求等。
第 9 章 软 件体 系结 构评估 9.2 SA 评估的 主要方 式

◇ 基于场景的 评估方式 (2 )

这一评估方式考 虑到了包 括系统的 开发人员、维 护人员、


最终用 户、管理人 员、测试人 员等在内的 所有与系统相 关的人员
对质量 的要求。基 于场景的评 估方式涉及 到的基本活动 包括确定
应用领 域的功能和 软件体系结 构的结构之 间的映射,设 计用于体
现待评 估质量属性 的场景以及 分析软件体 系结构对场景 的支持程
度。

不同的应用系统 对同一质 量属性的 理解可能不同 ,例如,


对操作 系统来说, 可移植性被 理解为系统 可在不同的硬 件平台上
运行, 而对于普通 的应用系统 而言,可移 植性往往是指 该系统可
在不同 的操作系统 上运行。由 于存在这种 不一致性,对 一个领域
适合的 场景设计在 另一个领域 内未必合适 ,因此基于场 景的评估
方式是 特定于领域 的。这一评 估方式的实 施者一方面需 要有丰富
的领域 知识以对某 以质量需求 设计出合理 的场景,另一 方面,必
须对待 评估的软件 体系结构有 一定的了解 以准确判断它 是否支持
场景描 述的一系列 活动。
第 9 章 软 件体 系结 构评估 9.2 SA 评估的 主要方 式

◇ 基于度量的 评估方式 (1 )

度量是指为软件 产品的某 一属性所 赋予的数值, 如代码行


数、方 法调用层数 、构件个数 等。传统的 度量研究主要 针对代码
,但近 年来也出现 了一些针对 高层设计的 度量,软件体 系结构度
量即是 其中之一。 代码度量和 代码质量之 间存在着重要 的联系,
类似地 ,软件体系 结构度量应 该也能够作 为评判质量的 重要的依
据。

赫尔辛基大学提 出的基于 模式挖掘 的面向对象软 件体系结


构度量 技术、 Kar ls kr ona 和 Ron ne by 提出的 基于面向 对象度
量的软 件体系结构 可维护性评 估、西弗吉 尼亚大学提出 的软件体
系结构 度量方法等 都在这方面 进行了探索 ,提出了一些 可操作的
具体方 案。我们把 这类评估方 式称作基于 度量的评估方 式。
第 9 章 软 件体 系结 构评估 9.2 SA 评估的 主要方 式

◇ 基于度量的 评估方式 (2 )

基于度量的评估 技术都涉 及三个基 本活动:首先 需要建立


质量属 性和度量之 间的映射原 则,即确定 怎样从度量结 果推出系
统具有 什么样的质 量属性;然 后从软件体 系结构文档中 获取度量
信息; 最后根据映 射原则分析 推导出系统 的某些质量属 性。因此
,这些 评估技术被 认为都采用 了基于度量 的评估方式。

基于度量的评估 方式提供 更为客观 和量化的质量 评估。这


一评估 方式需要在 软件体系结 构的设计基 本完成以后才 能进行,
而且需 要评估人员 对待评估的 体系结构十 分了解,否则 不能获取
准确的 度量。自动 的软件体系 结构度量获 取工具能在一 定程度上
简化评 估的难度, 例如 MA ISA 可从文本格 式的 UML 图中抽取 面
向对象 体系结构的 度量。
第 9 章 软 件体 系结 构评估 9.2 SA 评估的 主要方 式

◇ 三种评估方式 的比较
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ ATAM 评估的步骤

整个 AT AM 评估过程 包括 九个步 骤,按 其编 号顺


序分 别是 描述 AT AM 方法、描 述商 业动机 、描述 体系
结构 、确 定体系 结构 方法、 生成 质量属 性效 用树、 分
析体 系结 构方法 、讨 论和分 级场 景、分 析体 系结构 方
法( 是第 六步的 重复 )、描 述评 估结果 。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 描述 ATAM 方法
AT AM 评估的 第一步要求 评估小组负 责人向参加会 议的风险
承担者 介绍 AT AM 评估方 法。在这一 步,要解释 每个人将要 参与
的过程 ,并预留出 解答疑问的 时间,设置 好其他活动的 环境和预
期结果 。关键是要 使每个人都 知道要收集 哪些信息,如 何描述这
些信息 ,将要向谁 报告等。特 别是要描述 以下事项:

( 1 ) AT AM 方法步骤 简介;
( 2 )获取和分析 技术:效用 树的生成 ,基于体系 结构方法的 获
取 / 分析,场景的 映射等;
( 3 )评估结果: 所得出的场 景及其优 先级,用户 理解 / 评估 体
系结构 的问题,描 述驱动体系 结构的需求 并对这些需求 进行分类
,所确 定的一组体 系结构方法 和风格,一 组所发现的风 险点和无
风险点 、敏感点和 权衡点。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 描述商业动 机
参加评估的所有 人员必须 理解待评 估的系统,在 这一步,
项目经 理要从商业 角度介绍系 统的概况

商业环 境 / 驱动描 述(约 12 张幻 灯片, 45 分钟 )


( 1 )描述商业环 境、历史、 市场划分 、驱动需求 、风险承担者
、当前 需要以及系 统如何满足这 些需要( 3-4 张幻灯 片)。
( 2 )描述商业方 面的约束条 件(例如 :推向市场 的时间、客户
需求、 标准和成本 等)( 1-3 张幻灯 片)。
( 3 )描述技术方 面的约束条 件(例如 : CO TS 、与其他 系统的
互操作 、所需要的 软硬件平台、 遗留代码的 重用等)( 1- 3 张幻
灯片) 。
( 4 )质量属性需 求(例如: 系统平台 、可用性、 安全性、可修
改性、 互操作性、 集成性和这些 需求来自的 商业需要) ( 2- 3 张
幻灯片 )。
( 5 )术语表( 1 张幻灯 片)。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 描述体系结 构 (1)

在这 一步 中,首 席设 计师或 设计 小组要 对体


系结 构进 行详略 适当 的介绍 ,这 里的“ 详略 适当”
取决 于多 个因素 ,例 如有多 少信 息已经 决定 了下来
,并 形成 了文档 ;可 用时间 是多 少;系 统面 临的风
险有 哪些 等。这 一步 很重要 ,将 直接影 响到 可能要
做的 分析 及分析 的质 量。在 进行 更详细 的分 析之前
,评 估小 组通常 需要 收集和 记录 一些额 外的 体系结
构信 息。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 描述体系结 构 (2)
体系结 构描述(约 20 张幻灯片 , 60 分钟)

( 1 )驱动体系结 构的需求( 例如:性 能、可用性 、安全性、 可


修改性 、互操作性 、集成性等 ),以及与 这些需求相关 的可度量
的量和 满足这些需 求的任何存 在的标准、 模型或方法( 2- 3 张幻
灯片) 。

( 2 )高层体系结 构视图( 4-8 张幻灯 片)。


① 功能: 函数、关 键的系统抽 象、领域元 素及其依赖关 系、数据
流;
② 模块 / 层 / 子系统 :描述系 统功能组成 的子系统、层 、模块,
以及对 象、过程、 函数及它们 之间的关系 (例如:过程 调用、方
法使用 、回调和包 含等);
③ 进程 / 线程:进程、 线程及其同 步,数据 流和与之相 连的事件

④ 硬件 : CPU 、存储器 、外设 / 传感器, 以及连接这些 硬件的网
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 描述体系结 构 (3)

( 3 )所采用的体 系结构方法 或风格, 包括它们所 强调的质


量属性 和如何实现 的描述( 3-6 张幻灯 片)。

( 4 ) CO TS 的使用, 以及如何选 择和集成( 1-2 张幻灯 片)


( 5 )介绍 1-3 个最重 要的用例场 景,如果可 能,应包括对


每个场 景的运行资 源的介绍( 1-3 张幻 灯片)。

( 6 )介绍 1-3 个最重 要的变更场 景,如果可 能,应描述通


过变更 构件、连接 件或接口所 带来的影响 ( 1- 3 张幻 灯片)

( 7 )与满足驱动 体系结构需 求相关的 体系结构问 题或风险


( 2-3 张幻灯 片)。

( 8 )术语表( 1 张幻灯 片)。


第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 确定体系结 构方法

AT AM 评估 方法 主要通 过理 解体系 结构 方法来 分析


体系 结构 ,在这 一步 ,由设 计师 确定体 系结 构方法
,由 分析 小组捕 获, 但不进 行分 析。

AT AM 评估 方法 之所以 强调 体系结 构方 法和体 系结


构风 格的 确定, 是因 为这些 内容 代表了 实现 最高优
先级 的质 量属性 的体 系结构 手段 。也就 是说 ,它们
是保 证关 键需求 按计 划得以 实现 的手段 。这 些体系
结构 方法 定义了 系统 的重要 结构 ,描述 了系 统得以
扩展 的途 径,对 变更 的响应 ,对 攻击的 防范 以及与
其他 系统 的集成 等。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 生成质量属 性效用树 (1 )

评估小组、设 计小组、管 理人员和 客户代表一 起确定系统


最重要 的质量属性 目标,并对 这些质量目标 设置优先级 和细
化。这 一步很关键 ,它对以后 的分析工作起 指导作用。 即使
是体系 结构级的分 析,也并不 一定是全局的 ,所以,评 估人
员需要 集中所有相 关人员的精 力,注意体系 结构的各个 方面
,这对 系统的成败 起关键作用 。这通常是通 过构建效用 树的
方式来 实现的。

效用树的输出 结果是对具 体质量属 性需求(以 场景形式出


现)的 优先级的确 定,这种优 先级列表为 ATAM 评估方法的后
面几步 提供了指导 ,它告诉了 评估小组该把 有限的时间 花在
哪里, 特别是该在 哪里去考察 体系结构方法 与相应的风 险、
敏感点 和权衡
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 生成质量属 性效用树 (2 )
(M,L)把客户数据库的存
数据延迟 储延迟减到最小值(200ms)
(H,M)提供实时视频图象
性能
(M,M)使认证服务器的
交易吞吐量
平均吞吐量最大化
新产品目录
(L,H)以小于20人月的
可修改性
商业产品 工作量添加CORBA中间件
的改变 (H,L)以小于4人周的工
作量更改Web用户界面
效用
(L,H)若站点1断电,要求在
3秒内将任务重定向到站点3
(M,M)若磁盘出现故障,
硬件故障
要在5分钟内重新启动
可用性 (H,M)要在1.5分钟内检
商业软件故障 测并恢复网络故障

(L,H)信用卡交易在
99.999%的时间内是安全的
数据机密性
(L,H)客户数据库认证在
安全性 99.999%的时间内能正常工作

数据完整性
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 分析体系结 构方法 (1 )

一旦有了效 用树的结果 ,评估小组 可以对实现 重要质量


属性的 体系结构方 法进行考察 。这是通过注 意文档化这 些体
系结构 决策和确定 它们的风险 、敏感点和权 衡点等来实 现的

在这一步中 ,评估小组 要对每一种 体系结构方 法都考察


足够的 信息,完成 与该方法有 关的质量属性 的初步分析 。这
一步的 主要结果是 一个体系结 构方法或风格 的列表,与 之相
关的一 些问题,以 及设计师对 这些问题的回 答。通常产 生一
个风险 列表、敏感 点和权衡点 列表。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 分析体系结 构方法 (2 )
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 分析体系结 构方法 (3 )
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 讨论和分级 场景 (1)
风险承担者需进 行两项相 关的活动 :集体讨论 用例场景
(描述 风险承担者 期望使用系 统的方式) 和改变场景( 描述
风险承 担者所期望 的系统在将 来变更的方 式)。用例场 景是
场景的 一种,在用 例场景中, 风险承担者 是一个终端用 户,
使用系 统执行一些 功能。改变 场景代表系 统的变更,可 分为
成长场 景和考察场 景两类。

成长 场景描述的 是体系结 构在中短期 的改变,包 括期望的


修改、 性能或可用 性的变更、 移植性、与 其他软件系统 的集
成等。 考察场景描 述的是系统 成长的一个 极端情形,即 体系
结构由 下列情况所 引起的改变 :根本性的 性能或可用性 需求
(例如 数量级的改 变)、系统 基础结构或 任务的重大变 更等。
成长场 景能够使评 估人员看清 在预期因素 影响系统时, 体系
结构所 表现出来的 优缺点,而 考察场景则 试图找出敏感 点和
权衡点 ,这些点的 确定有助于 评估者评估 系统质量属性 的限
制。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 讨论和分级 场景 (2)

一旦 收集了若干 个场景后 ,必须要设 置优先级。 评估人员


可通过 投票表决的 方式来完成 ,每个风险 承担者分配相 当于
总场景 数的 30 % 的选票,且 此数值只入 不舍。例如 ,如果共
有 17 个场景 ,则每个 风险承担 者将拿到 6 张选票, 这 6 张选
票的具 体使用则取 决于风险承 担者,他可 以把这 6 张票全部
投给某 一个场景, 或者每个场 景投 2-3 张票, 还可以一个场
景一张 票等。

一旦 投票结果确 定,所有 场景就可设 置优先级。 设置优先


级和投 票的过程既 可公开也可 保密。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 讨论和分级 场景 (3)
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 讨论和分级 场景 (4)
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 分析体系结 构方法

在收 集并分析了 场景之后 ,设计师就 可把最高级 别的场景


映射到 所描述的体 系结构中, 并对相关的 体系结构如何 有助
于该场 景的实现做 出解释。

在这 一步中,评 估小组要 重复第 6 步中的工作, 把新得到


的最高 优先级场景 与尚未得到 的体系结构 工作产品对应 起来。
在第 7 步中,如果 未产生任何 在以前的分 析步骤中都 没有发
现的高 优先级场景 ,则在第 8 步就是 测试步骤。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 描述评估结 果
最后,要 把 AT AM 分析中所 得到的各种 信息进行归 纳,并反
馈给风 险承担者。 这种描述一 般要采用辅 以幻灯片的形 式,
但也可 以在 AT AM 评估结 束之后,提 交更完整的 书面报告。

在描述过程中 ,评估负责 人要介绍 AT AM 评估的各 个步骤,


以及各 步骤中得到 的各种信息 ,包括商业 环境、驱动需 求、
约束条 件和体系结 构等。最重 要的是要介 绍 AT AM 评估的结 果

( 1 ) 已文档 化了的体系 结构方法 / 风格;
( 2 ) 场景及 优先级;
( 3 ) 基于属 性的问题;
( 4 ) 效用树 ;
( 5 ) 所发现 的风险决策 ;
( 6 ) 已文档 化了的无风 险决策;
( 7 ) 所发现 的敏感点和 权衡点。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ ATAM 评估的阶段
第一 个阶段以体 系结构为 中心,重点 是获取体系 结构信息
并进行 分析。第二 个阶段以风 险承担者为 中心,重点是 获取
风险承 担者的观点 ,验证第一 个阶段的结 果。

之所 以要分为两 个阶段, 是因为评估 人员要在第 一个阶段


收集信 息。在整个 AT AM 评估过程中 ,评估小组 中的部分人
(通常 是 1- 3 人)要与体系 结构设计师 和 1-2 个其他关 键的
风险承 担者(例如 ,项目经理 ,客户经理 ,市场代表) 一起
工作, 收集信息。 对支持分析 而言,在大 多数情况下, 这种
信息是 不完整的或 不适当的, 所以,评估 小组必须与体 系结
构设计 师一起协作 引导出必须 的信息,这 种协作通常要 花几
周的时 间。当评估 人员觉得已 经收集了足 够的信息,并 已把
这些信 息记录成文 档,则就可 进入第二个 阶段了。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 第一阶段 (1 )
AT AM 评估小 组要与提交待 评估的体系 结构的小组 见面(或
许这是 双方第一次 会见),这 一会议有两 方面的目的, 一是
组织和 安排以后的 工作,二是 收集相关信 息。从组织角 度来
看,体 系结构小组 负责人要保 证让合适的 人选参加后续 会议
,还要 保证这些人 为参加相关 会议做了充 分的准备,抱 着正
确的态 度。
第一天 通常作为整 个 AT AM 过程的一 个缩影,主 要关注 1-6 步
的工作 。第一次会 议所收集的 信息意味着 要保证体系结 构能
得到正 确的评估。 同时,在第 一次会议也 会收集和分析 一些
初步的 场景,作为 理解体系结 构、需要收 集和提交的信 息、
所产生 的场景的含 义的一种途 径。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 第一阶段 (2 )

例如, 在第一天, 体系结构设 计师可能提 交部分体系结 构,


确定部 分体系结构 风格或方法 ,创建初步 的效用树,就 选定
的一组 场景进行工 作,展示每 个场景是如 何影响体系结 构的
(例如 可修改性) ,体系结构 又是如何作 出响应的(例 如:
对质量 属性而言, 可以是性能 、安全性和 可用性)。其 他的
风险承 担者(例如 :关键开发 人员、客户 、项目经理等 )可
以描述 商业环境、 效用树的构 建,以及产 生场景的过程 。

第一个 阶段是一个 小型会议, 评估小组需 要尽可能多地 收集


有关信 息,这些信 息用来决定 :
( 1 ) 后续 评估工作 是否可行, 能否顺利进 行;
( 2 ) 是否需 要更多的体系 结构文档。 如果需要, 则应明确
需要哪 些类型的文 档,如何提 交这些文档 ;
( 3 ) 哪些 风险承担 者应参与第 二个阶段的 工作。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 第一阶段 (3 )
在这 一天的最后 ,评估人 员将对项目 的状态和环 境、驱动
体系结 构需求,以 及体系结构 文档都有较 清晰的认识。

在第一 次会议和第 二次会议之 间有一段中 断时间,其长 短取


决于第 一个阶段完 成的情况。 在这段时间 内,体系结构 设计
小组和 要评估小组 协作,做一 些探索和分 析工作。前面 已经
提到过 ,在第一个 阶段中评估 小组并不构 建详细的分析 模型
,而是 构建一些初 步模型,以 使评估人员 和设计人员能 对体
系结构 有更充分的 认识,从而 保证第二个 阶段的工作更 有效
率。另 外,在这段 时间内,还 要根据评估 工作的需要、 可用
人员的 状况和计划 来决定评估 小组的最终 人选。例如, 如果
待评估 的系统对安 全性的要求 很高,则需 要让安全专家 参与
评估工 作;如果待 评估的系统 是以数据为 中心的,则需 要让
数据库 设计方面的 专家参与评 估。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ 第二阶段

这时 ,体系结构 已经被文 档化,且有 足够的信息 来支持验


证已经 进行的分析 和将要进行 的分析。已 经确定了参与 评估
工作的 合适的风险 承担者,并 且给他们提 供了一些书面 阅读
材料, 如对 AT AM 方法的 介绍,某些 初步的场景 ,包括体系 结
构、商 业案例和关 键需求的系 统文档等。 这些阅读材料 有助
于保证 风险承担者 建立对 ATA M 评估 方法的正确 期望。

因为 将有更多的 风险承担 者参与第二 次会议,且 因为在第


一次会 议和第二次 会议之间, 可能还要间 隔几天或几个 星期
,所以 第二个阶段 首先有必要 重新简单介 绍 AT AM 方法,以 使
所有与 会者达成共 同的理解。 另外,在每 一步进行之前 ,简
单扼要 地介绍该步 的工作,也 是很有好处 的。
第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ ATAM 各步骤中相 关的风险承 担者


第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ ATAM 评估日程安 排 (1)


第 9 章 软 件体 系结 构评估 9.3 ATAM 评估 方法

◇ ATAM 评估日程安 排 (2)


第 9 章 软 件体 系结 构评估 9.4 SAAMM 评估 方法

自学
第 9 章 软 件体 系结 构评估 本章作 业与思 考题

1 、为什 么要 评估软 件体 系结 构?

2 、从哪 些方 面评估 软件 体系 结构?

3 、 AT AM 评估 方法 的基本 步骤 是什
么?
课 程 内 容
◇ 软件体 系结构 概论
◇ 软件体 系结构 建模
◇ 软件体 系结构 风格
◇ 软件体 系结构 描述
◇ 动态软 件体系 结构
◇ We b 服务体 系结 构
◇ 基于体 系结构 的软 件开发
◇ 软件体 系结构 的分 析与测

◇ 软件体 系结构 评估
◇ 软件产 品线体 系结 构
第 10 章 软 件产 品线 体系结 构10.1 软件 产品 线的出 现和 发

◇ 出现和发展

产品线的起 源可以追溯到 19 76 年 Par na s 对程序族的研


究。软 件产品线的 实践早在 20 世纪 80 年代中 期就出现。

据 HP 公司 19 96 年对 HP 、 IBM 、 NEC 、 AT & T 等几个


大型公 司分析研究 ,他们在采 用了软件产品 线开发方法 后,
使产品 的开发时间 减少 1. 5-2 倍,维护成本 降低 2 - 5 倍,
软件质 量提升 5 - 10 倍,软件重 用达 50% - 80% ,开发成 本
降低 12% - 15% 。

软件产品线 的发展得益 于软件体系 结构的发展 和软件重


用技术 的发展。
第 10 章 软 件产 品线 体系结 构10.1 软件 产品 线的出 现和 发

◇ 在软件工程 中的地位

软件工程
技术侧面

软件体系结构

领域工程

特定领域
软体体系结构

软件产品线

应用领域
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ 基本概念

◎ 将利用 了产品间 公共方面、 预期考虑了 可变性等设 计的产品


族称为 产品线 (We is s 和 Lai) 。

◎ 产品线 就是由在 系统的组成 元素和功能 方面具有共 性和个性


的相似 的多个系统 组成的一个 系统族。

◎ 软件产 品线就是 在一个公共 的软件资源 集合基础上 建立起来


的,共 享同一个特 性集合的系 统集合 (Ba ss ,Cl eme nt s 和
Kaz ma n) 。

◎ 一个软 件产品线 由一个产品 线体系结构 、一个可重 用构件集


合和一 个源自共享 资源的产品 集合组成, 是组织一组相 关软件
产品开 发的方式 (Jan B osc h) 。
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ 基本概念
CMU /S EI 的定义 :“产品 线是一个产 品集合,这 些产品共
享一个 公共的、可 管理的特征 集,这个特 征集能满足选 定的市
场或任 务领域的特 定需求。这 些系统遵循 一个预描述的 方式,
在公共 的核心资源 (c or e ass ets ) 基础上 开发的。 ”

根据 SEI 的定义 ,软件产 品线主要由 两部分组成 :核心资


源、产 品集合 。核心 资源是领 域工程的所 有结果的集合 ,是产
品线中 产品构造的 基础。也有 组织将核心 资源库称为“ 平台”。
核心资 源必定包含 产品线中所 有产品共享 的产品线体系 结构,
新设计 开发的或者 通过对现有 系统的再工 程得到的、需 要在整
个产品 线中系统化 重用的软件 构件。与软 件构件相关的 测试计
划、测 试实例以及 所有设计文 档,需求说 明书和领域模 型还有
领域范 围的定义也 是核心资源 ,采用 COT S 的构 件也属于核 心资
源。产 品线体系结 构和构件是 用于软件产 品线中的产品 的构建
和的核 心资源最重 要的部分。
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ 软件产品线 的过程模型

1 、双 生命 周期模 型

领域工程
现有系
统需求
领域分析 领域设计 领域实现

领域需求模型 领域体系 领域可重用构


件和生成器

应用工程
新系统
需求 新系统
需求分析 系统设计 系统实现
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ 软件产品线 的过程模型
2 、 SEI 模
型 产品线开发

核心资
产品开发
源开发

管理

领域工程 应用工程
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ 软件产品线 的过程模型

2 、 SEI 模型
◎ 循环重复是 产品线开发过 程的特征 ,也是核心 资源开发
、产品 线开发以及 核心资源和 产品之间协作 的特征;

◎ 核心资源开 发和产品开 发没有先后 之分;

◎ 管理活动协 调整个产品线 开发过程 的各个活动 ,对产品


线的成 败负责;

◎ 核心资源开 发和产品开发 是两个互 动的过程, 三个活动


和整个 产品线开发 之间也是双 向互动的。
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ 软件产品线 的过程模型

3 、三 生命周 期模 型
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ 软件产品线 的组织结构

管理者

体系结构组 配置管理组

核心资源组 产品组1 产品组2 产品组n


第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ SEI 产品线 组织结构 (1 )

将产品 线组织分 为四个工作 小组:

◎ 市场人员 是产品线和 产品能力、 客户需求之 间的沟通桥


梁;

◎ 核心资源 组负责体系 结构和其他核 心资源的开 发;

◎ 应用组 负责交付给客 户的系统的 开发;

◎ 管理者 负责开发过程 的协调、商 务计划等 。


第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ SEI 产品线 组织结构 (2 )

设有 独立核心资源小 组的组织 结构通常 合适于至少由


50 到 100 人组成 的较大型 的软件开发组 织,设立独 立的核
心资源 小组可以使 小组成员将 精力和时间 集中在核心资 源
的认真 的设计和开 发上,得到 更通用的资 源。

另外一种典 型的组织结 构不设立 独立的核心 资源小组


,核心 资源的开发 融入各系统 开发小组中 ,只是设立专 人
负责核 心资源开发 的管理。这 种组织结构 的重点不在核 心
资源的 开发上,所 以比较适合 于组成产品 线的产品 共性 相
对较少 ,开发独立 产品所需的 工作量相对 较大的情况 。也
是小型 软件组织向 软件产品线 开发过渡时 采用的一种方 法

第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ Jan Bosch 产品线组织 结构 (1)

◎ 开发部门 :所有的软件开 发集中在 一个部门 ,每个人都


可承担 领域工程和 应用工程中 适合的任务, 简单、利于 沟通
,适用 于不超过 30 人的组织。

◎ 业务部门 :每个部门负责 产品线中 一个和多 个相似的系


统,共 性资源由需 要使用它的 一个和几个部 门协作开发 ,整
个团体 都可享用。 资源更容易 共享,适用于 30 - 10 0 人的组
织,主 要缺点是业 务部门更注 重自己的产品 而将产品线 的整
体利益 放在第二位 。
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ Jan Bosch 产品线组织 结构 (2)

◎ 领域工程 部门 :有一 个专门的单 位——领域工 程部门负


责核心 资源库的开 发和维护,其 他业务单位 使用这些核 心资
源来构 建产品。这 种结构可有效 的降低通讯 的复杂度、 保持
资源的 通用性,适 于超过 100 人的组 织。缺点是 难以管理领
域工程 部门和不同 产品工程部门 之间的需求 冲突和因此 导致
的开发 周期增长。

◎ 层次领域工程 部门 :对于 非常巨大 和复杂的产 品线可以


设立多 层(一般为 两层)领域工 程部门,不 同层部门服 务的
范围不 同。这种模 型趋向臃肿, 对新需求的 响应慢。
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ 软件产品线 的建立方式
第 10 章 软 件产 品线 体系结 构 10.2 软件 产品 线概述

◇ 软件产品线 的演化

从整体 来看,软件产 品线的发展 过程有三个 阶段, 开发


阶段 、配置 分发阶段 和演化阶段 。

引起产品线 体系体系结构 演化的原 因:产品线 与技术变


化的协 调、现有问 题的改正、 新功能的增加 、对现有功 能的
重组以 允许更多的 变化等等。

产品线的演 化包括产品线 核心资源 的演化、产 品的演化


和产品 的版本升级 。这样在整 个产品线就出 现了:核心 资源
的新旧 版本、产品 的新旧版本 和新产品等。 它们之间的 协调
是产品 线演化研究 的主要问题 。
第 10 章 软 件产 品线 体系结 构 10.3 框架和 应用 框架技 术

框架 是封 装了特 定应 用族抽 象设 计的抽 象类


的集 合, 框架又 是一 个模板 ,关 键的方 法和
其他 细节 在框架 实例 中实现 。

应用 框架 又称为 通用 应用, 是为 一个特 定应


用领 域的 软件系 统提 供可重 用结 构的一 组相
互协 作的 类的集 合。

◎ 黑盒框 架

◎ 白盒框 架
第 10 章 软 件产 品线 体系结 构 10.4 软件产 品线 基本活 动

◇ 产品线基本 活动
产品线开发

核心资
产品开发
源开发

管理

领域工程 应用工程
第 10 章 软 件产 品线 体系结 构 10.4 软件产 品线 基本活 动

◇ 产品线分析

产品计划

产品线分析

资源开发

产品开发
(资源使用)
确认机遇

决策者 产品线开发

产品线开
产品
最终用户 发人员
第 10 章 软 件产 品线 体系结 构 10.4 软件产 品线 基本活 动

◇ 产品开发
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的设

◇ 产品线体系 结构简介
◎ 软件产品 线体 系结构 指一 个软件 开发 组织为 一组
相关 应用 或产品 建立 的公共 体系 结构。

◎ 同领域模 型一 样,软 件产 品线体 系结 构中也 可以


分为 共性 部分和 个性 部分。

◎ 产品线体 系结 构是产 品线 核心资 源的 早期和 主要


部分 ,在 产品线 的生 命周期 中, 产品线 体系 结构应
该保 持相 对小和 缓慢 的变化 以便 在生命 周期 中尽量
保持 一致 。产品 线体 系结构 要明 确定义 核心 资源库
中软 件构 件集合 及其 相关文 档。
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的设

◇ 产品线体系 结构的标准 化和定制

◎ 为适应 应用 的规模 增大 、复 杂度提 高,软 件


技术不断 发展 ,相继 出现了 中间 件技术 、软 件
产品线等 。

◎ 体系结 构风 格是一 个使 产品 和产品 线具有 良


好的可移 植性 的结构 ,产品 和产 品线通 过最 小
的修改就 可移 植到一 个新的 平台 上。
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

特定的产品线构件

框架体系结构

产品族 框架实现
商业部门 产品特定的代码

需求
产品线体系结构
产品线需求
产品线 产品线
构件 构件

产品线
构件
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 背景介绍

产品线体系结构

存储服务器体系结构 摄象服务器体系结构 扫描服务器体系结构

光盘服务器 Jaz服务器
体系结构 体系结构 各种产品 各种产品

各种产品 各种产品
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 背景介绍

NFS

文件系统框架 存取控制

ISO9660 Pseudo UFS FAT

块设备

SCSI

硬件

第一 代文 件系统 框架
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 背景介绍
NFS

文件系统框架 存取控制框架

ISO9660 FAT-16 Pseudo UFS

块设备

SCSI

硬件

第二 代文 件系统 框架
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 两代产品的 各种发行版 本
网络文件系统框架 文件系统框架
以太网模块
Netware Pseudo

令牌网模块
NFS ISO9660

SMB
网络协议框架 SCSI

图注: 新构件 修改了的构件 未改变的构件

第一 代产 品的第 二个 版本
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 两代产品的 各种发行版 本
网络文件系统框架 文件系统框架
以太网模块
Netware Pseudo

令牌网模块
NFS ISO9660

SMB
网络协议框架 SCSI
HTTP

图注: 新构件 修改了的构件 未改变的构件

第一 代产 品的第 三个 版本
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 两代产品的 各种发行版 本
网络文件系统框架 文件系统框架
以太网模块
Netware Pseudo

令牌网模块
NDS ISO9660

NFS
网络协议框架 SCSI
SMB

HTTP

图注: 新构件 修改了的构件 未改变的构件

第一 代产 品的第 四个 版本
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 两代产品的 各种发行版 本

1994 1995 1996 1997 1998 1999


版本一 版本二 版本三 版本四
第一代
第二代
版本一 版本二 版本三 版本四

文件 系统 框架的 时间 线
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 两代产品的 各种发行版 本
网络文件系统框架

NFS

文件系统框架
SMB
MUPP
块设备

存取控制框架 FAT-16

SCSI

新构件 修改了的构件 未改变的构件 删除的构件

第二 代产 品的第 二个 版本
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 两代产品的 各种发行版 本
网络文件系统框架 文件系统框架 备份
FAT-16
Netware
UDF
SMB
MTF 块设备->存储接口
HTTP

SNMP
存取控制框架 SCSI

图注: 新构件 修改了的构件 未改变的构件

第二 代产 品的第 三个 版本
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 两代产品的 各种发行版 本
网络文件系统框架 文件系统框架

FAT-16
Netware
UDF
SMB
MTF 存储接口
HTTP
ISO9660
SNMP
SCSI
NFS
存取控制框架

图注: 新构件 修改了的构件 未改变的构件

第二代产 品的 第四个 版本
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 需求和演化 的分类

4、扩展标准支持
2、在产品线中
增加新的产品

5、硬件、操作系统
的新版本,或第三方
1、构建新的 增加了新功能
产品族

3、改进已有功能 6、改进框架的质量
属性

图注: 通常/主版本 有时/主版本或通常/次版本 有时/次版本

需求分类 之间 的关系
第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 需求和演化 的分类
3、新产品线体
系结构构件

5、分解产品线
体系结构构件
7、增加构件
1、产品线体 之间的关系
系结构的分解

2、导出产品 4、修改产品线
线体系结构 体系结构构件 8、修改构件
之间的关系

6、代替产品线
体系结构构件

图注: 通常/主版本 有时/主版本或通常/次版本

产品线体 系结 构分类 之间的 关



第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 需求和演化 的分类
需要的接口
提供的接口 框架体系结构
4
外部构件
1
5
框架实现 2
3

通常/主版本 有时/主版本或通常/次版本 有时/次版本

产品线体 系结构 构件 演化分 类


第 10 章 软 件产 品线 体系结 构 10.5 产品 线体 系结构 的演

◇ 需求和演化 的分类
产品线体系结 产品线体系结构
需求分类
构演化的分类 构件演化的分类

(1)产品线体系 (1)构建新的产 (1)新框架的实


结构的分解 品族 现
(2)导出产品线
体系结构 (2)在产品线中 (2)修改框架的
增加新的产品 实现
(3)新产品线体
系结构构件 (3)改进已有功 (3)在框架实现
(4)修改产品线 能 中缩减功能
体系结构构件
(6)代替产品线 (4)扩展标准支 (4)增加框架功
体系结构构件 持 能
(5)使用其他的
(5)分解产品线 (5)硬件、操作 框架体系结构,
体系结构构件 系统的新版本, 增加外部构件
或第三方增加了
(7)增加构件之 新功能
间的关系
(8)修改构件之 (6)改进框架的
间的关系 质量属性

通常/主版本 有时/主版本或通常/次版本 有时/次版本

各种 演化 之间的 关系
第 10 章 软 件产 品线 体系结 构 本章作 业与思考题

A 公司是一 家相对较大 的软件和硬 件企业,专业 从事网络 设备的开


发。从 单一的产品 开始,现在, 已经延伸到 包括摄相服 务器、扫 描
服务器 、光盘服务 器以及其他的 存储服务器 在内的产品 。公司原 来
的产品 都是一个一 个地开发,每 个软件组织 一个项目组 。为了适 应
快速变 化的市场, 降低开发成本 ,公司想引 入产品线方 法。然而 ,
软件产 品线开发涉 及了一个软件 开发组织的 多个产品, 选择了软 件
产品线 意味着要承 担由此带来的 许多风险。
所以, 公司的 CT O 王总决定在 弄清三个问 题之后再做 决定,首先 就
是本公 司的业务范 围是否适合使 用产品线方 法,其次是 如何在原 有
产品的 基础上建立 产品线,最后 是成功实施 产品线的主 要因素是 什
么?

[ 问题 1]
请用 100 字以内 文字说明 A 公司是否 适合采用产 品线方法? 为什么

[ 问题 2]
请用 200 字以内 文字说明如何 在原有产品 的基础上建 立产品线?
[ 问题 3]
请用 150 字以内 文字说明成功 实施产品线 的主要因素 是什么?

You might also like