You are on page 1of 91

软件 体系结 构和 UML

Grady Booch
构建 一个 小狗屋

可以由一个人制造
的需求:
最小模型
简单的过程
简单的工具
构造 一栋 房屋

由一个团体建设,并且需要更高的效率、更精确的时间限制
需求
模型
良好定义的过程
功能强大的工具
构建 一个 高层建 筑
早期 的结 构

过程
- 有限的理 论知 识
现代 的结 构

进步
- 先进的原 材料
- 先进的分 析

范围
- Pantheon 的五 倍范围
- Cheops 的 3 倍高 度
房屋 建模
民间 风格 的结构
 青铜时代 / 古埃及 (Imhotep)
 古希腊 / 罗马 (Vitruvius)
过程
 东罗马 / 罗马式 -
-
对早期成 就的 模仿
从失败中 学习
- 对其他影 响因 素的综 合
 哥特式 - 试验

 怪异的 ( 米开朗基罗 , Palladio)


 巴洛克
 工程 /Rational/National/Romantic
 艺术 noveau
 现代风格 (Wright, LeCorbusier)
Neufert Architect’s Data
The Handbook of Building Types

民用 建筑 结构的 种类
 社会
­ 房屋 , 、旗子和单元房、花园、教育、旅店和宗

 商务
­ 商店和仓库、饭店、旅馆、办公楼、银行、机场

 工业
­ 工业建筑、图书馆、农场建筑

 休闲
­ 运动、剧场、电影院、博物馆
民用 建筑 的影响 因素

负载
负载的 种类
- 固定的负 载
- 活动的负 载
- 动态的负 载
压缩 伸展 避免失 败
- 安全因素
- 冗余
- 平衡

负载

任何时 候您要抛 弃已经具有的 习惯时,特 别是大的项 目中,您最 好


要用多 十倍的努 力、多十倍的 调查。
- LeMessuier
Brand, How Buildings Learn

剪切 层的 改变

空间计 划

服务
填充
结构

表面

场地
Walker Royce

软件 复杂 性的度 数
更高的 技术复杂 性
- 嵌入式, 实时 的,分 布式 的,不 可出 错的
- 定制的 , 空前 的, 可复用 的
- 高性能的
一个比较中等的项目
- 5-10 人 防御
- 10-15 个月的开发周期 信息 武器系统
- 3-5 个外部界面 交换
- 一些不可知的事情 & 风险 国际空中运输
商业 控制系统
嵌入式 编译器
车用软件
大型组织 / 实体仿真模拟
较低的 管理复杂 度 CASE 工具 较高管 理复杂度
- 小范 围 - 大范围
- 非正 式的 - 合同契约 性
- 简单 的资 金运作 小型科学模拟 - 多数人控 制的
- “ 产品 ” - “ 项目 ”
IS 应用
分布式对象 企业 IS 防御 MIS 系统
( 订购实体 ) (IS 应用的家庭服务 )

IS 应用
GUI/RDB
( 订购实体 )
商业制表软件

低技术 复杂度
- 大部 分是 4GL, 或基 于组件 技术 的
- 应用 反向工 程
注: 什么 是 4GL? - 交互 性能
软件 中的 影响因 素
功能
成本 兼容性

容量 失败安全

可用性 出错容忍程度

性能 吞吐量

技术混合 恢复能力
20 年之后的挑战不是速度、成本和性能,而是复杂度的问题了。
Bill Raduchel, Sun 微系统公司策略执行总裁

复杂度是我们的敌人,是我们的目标,我们要消灭它。
Jan Baan
Wojtek Kozaczynski

体系 结构 的域
“ 什么” “ 为什么 ”
系统
体系 结构 满足 功能
质量

S/W
结构 需求
压制
体系 结构
表现方法
系统
质量属性

生产 技术 定义
“ 谁” “ 如何”
跟踪
构建 处理

技巧
定义规则
组织
风险承担 人
Philippe Kruchten

我们 知道 什么 ...
体系结构和设计是同一件事;
体系结构和基础结构是相同的;
< 我个人特长 > 是构造;
一个好的体系结构是简单的结构设计者的工作;
体系结构是旗子,一个蓝图就足够了;
体系结构就是结构;
系统体系结构优先于软件结构;
体系结构不能被标准化和验证;
体系结构是科学;
体系结构是艺术;
Merriam Webster’s Collegiate Dictionary
10th edition

体系 结构 定义 ( 又一次 )

体系结构
1: 是构建、特定的科学的艺术, 是设计和创
建结构或扩展子库的艺术或实践。
可理解的 2
a: 形成或够造成可能的有意识的行为 < 花园的
…> ;
b: 统一的或相关的结构 < 小说的需要 ~>
Mary Shaw, CMU
Grady Booch,

体系 结构 定义 Philippe Kruchten,
Rich Reitman
Kurt Bittner, Rational

 软件的体系结构包含关于软件系统组织的有
意义的定义配置
­ 组成系统的结构元素和界面;
­ 元素中协作的特定行为;
­ 大的子系统中这些结构和行为的复合;
­ 体系结构风格支配了组织;
Mary Shaw, CMU
Grady Booch,

体系 结构 定义 (continued)
Philippe Kruchten,
Rich Reitman
Kurt Bittner, Rational

 软件体系结构也涉及:
­ 用法
­ 功能
­ 性能
­ 伸缩能力
­ 重用
­ 内容广泛性
­ 经济上和技术上的冲突和平衡
­ 美学的观点
Mary Shaw, CMU

体系 结构 风格
 体系结构风格定义了在结构组织中模板阶段
的系列;
 体系结构风格定义了:
­ 构成元素和连接器类型的词汇;
­ 它们如何组合的约束;
­ 一个或多个指明系统的全部属性能够被它的部分
属性决定的语义模型;
体系 结构 元模型
模型
 在许多学科中,模型是设计者的语言
 模型是系统要被创建的描述;
 模型是不同的投资者通信的手段;
 可视化模型,蓝图
 范围
 模型允许推断真实系统的某些特征;
不同的投 资者, 不同 的观点
 体系结构有许多不同兴趣者的不同看法
­ 最终用户
­ 客户
­ 项目管理者
­ 系统工程师
­ 开发者
­ 构建者
­ 维护人员
­ 其他开发人员
 多维实体
 更多的投资者
多个观点,多个蓝图
体系 结构 观点
 体系结构的视图是描述简化的(抽象)来自
特定的观点或有利的观点、覆盖详细的关系
、忽略不与这观点有关的实体的系统。
体系 结构 重要的 元素
 不是所有的设计都是体系结构
 主要的“商业”类
 重要的商业机制
 处理器和处理过程
 层和子系统
 结构视图 = 模型切片
好的 体系 结构的 特征
 可伸缩性的
 简单
 亲切的
 关系清楚明了
 职责分布明确
 效益和技术平衡
描绘 系统 体系结 构

逻辑视图 实现视图

最终用户 编程
功能 软件管理
用例图

过程视图 分布图
系统集成 系统工程
性能 系统拓扑结构
可伸缩性 分发 , 安装
吞吐能力 通信

概念模型 物理模型
视图 间的 相关性

逻辑视 图 组件视 图

过程视 图
β

分布视 图
需要 多少 视图 ?

 适合需要的简单模型

 不是所有的系统都需要所有的视图
­ 单处理器 : 不用分布图
­ 简单处理过程 : 不用过程视图
­ 很小的程序 : 不用实现视图

 增加视图 :
­ 数据视图 , 安全视图
UML 的价值
 是一个开发的标准
 支持完整的软件开发生命周期模型
 支持不同的应用领域
 是基于经验的和用户群体需要的
 被许多工具支持
创建 UML

UML 1.3
OMG 认可 , Nov 1997
最后提 交给 OMG, Sep ‘97 UML 1.1
公共 第一次 提交给 OMG, Jan ´97
反馈
UML 团体 UML 1.0

Web - June ´96 UML 0.9

OOPSLA ´95 Unified Method 0.8

其他方法 Booch 方法 OMT OOSE


UML 合作伙伴
 Rational 软件公司
 Hewlett­Packard( 惠普 )
 I­Logix
 IBM
 ICON Computing
 Intellicorp
 MCI Systemhouse
 Microsoft
 ObjecTime
 Oracle
 Platinum Technology
 Taskon
 Texas Instruments/Sterling Software
 Unisys
对 UML 有贡献的
Harel
Meyer Gamma, et al
Statecharts
Before and after Frameworks and patterns,
conditions
HP Fusion
Booch
Operation descriptions and
Booch method message numbering

Embley
Rumbaugh
Singleton classes and
OMT
high-level view

Jacobson Wirfs-Brock
OOSE
Responsibilities

Shlaer - Mellor Odell

Object lifecycles Classification


UML 概要
 UML 是一种语言:
­ 可视化
­ 详细描述的
­ 构造性的
­ 文档化的

软件加强系统的
UML 概要
 模型元素
 关系
 扩展的机制
 图表
模型元素
 结构元素
­ 类,接口,协作,用例,活动类,组件,符号

 行为元素
­ 交互 , 状态机

 组元素
­ 包 , 子系统

 其它元素
­ 符号
关系
 依赖
 关联
 一般化
 实现
扩展机制
 套用类型
 特征值
 约束
模型 , 视图 , 和图表
模型 是对
一个系统
从详细观
State
察的角 State
Diagrams
度的 Use Case Diagrams
类图
描述 Use Case
Diagrams State
Use Case Diagrams State
Diagrams
Use Case 用例 图
Diagrams Diagrams
对象图
Diagrams
时序图

Scenario State
Scenario
Diagrams State
Diagrams
Diagrams
协作图 模型 Diagrams
组件图

Scenario Component
Scenario
Diagrams
Component
Diagrams
Diagrams
分布图
Diagrams
状态图
活动图
图表
 图表是模型的视图
­ 表现给投资者看得详细的描述 ;
­ 提供了系统的局部详细描述;
­ 和别的视图保持语义一致;

 在 UML 中 , 有九种标准图表
­ 静态视图 : 用例图 , 类图 , 对象图 , 组件图 ,
分布图
­ 动态视图 : 时序图 , 协作图 , 状态图 , 活动图
用例图
 捕获用户能够看到的系统功能
用例 图
 捕获系统中用户能够看见的功能
 在开发过程的早期创建
 目的:
­ 详细说明系统的表达含义;
­ 捕获系统的需求;
­ 验证系统的体系结构;
­ 驱动实现和生成测试用例。
 由分析人和领域专家开发
类图
 捕获系统的词汇表
类图
 捕获系统的词汇表
 在开发过程中被创建和精确化
 目的
­ 系统中的名字和模型概念
­ 详细描述协作关系
­ 详细描述逻辑数据库表

 由分析人员、设计人员和代码实现人员开发
对象图
 捕获实例和连接
对象图
 捕获实例和连接
 在分析和设计阶段创建
 目的
­ 举例说明数据 / 对象结构
­ 详细描述瞬态图

 由分析人员、设计人员和代码实现人员开发
组件图
 捕获实现的物理结构
组件图
 捕获实现的物理结构
 作为体系结构规范的一部分实现
 目的
­ 组织源代码
­ 构造一个可执行的发布版本
­ 指定物理数据库

 由集成人员和程序人员创建
分布图
 捕获系统硬件的拓扑结构
分布图
 捕获系统硬件的拓扑结构
 作为系统结构规范的一部分被创建
 目的
­ 描述组件的分布
­ 标识系统性能瓶颈

 由集成人员、网络工程师和系统工程师开发
时序图
 捕获系统的动态行为 ( 面向时间的 )
时序图
 捕获系统的动态行为 ( 面向时间的 )
 目的
­ 模型流程的控制
­ 举例说明典型的脚本
协作图
 捕获系统的动态行为 ( 面向消息的 )
协作图
 捕获系统的动态行为 ( 面向消息的 )
 目的
­ 模型流程控制
­ 举例说明对象结构和控制的协调
状态 图
 捕获系统动态行为 ( 面向事件的 )
状态图
 捕获系统动态行为 ( 面向事件的 )
 目的
­ 对象生命周期模型
­ 为起反作用的对象 ( 用户接口、设备等)建模
活动图
 捕获动态行为(面向活动的)
活动图
 捕获动态行为(面向活动的
 目的
­ 给商业工作流建模
­ 给操作建模
体系 结构 和 UML

设计视图 实现视图

类 , 接口 ,
协作 组件
用例

用例图

过程视图 分布视图

活动类 节点

组织: 动态
包 , 子系统 交互
状态机
软件 工程 过程
部分特定的顺序是为了达到一个目标 . 载软件
工程领域目标就是开发出软件产品或增强已
有系统的功能。
 体系结构构建过程
­ 导致体系结构产品产生的活动的顺序 :
 软件体系结构描述
 体系结构原型
Rational 统一过 程
 迭代
 以体系结构为中心的
 用例驱动的
 抵制奉献的
时间 上的 焦点

发现 创造 实现

焦点
关键 概念
什么时 候
 相态 , 迭代
体系结 构发生 ?

 过程工作流 发生什 么 ?
­ 活动 , 步骤

 人工活动 产生什么 ?

­ 模型
­ 报告 , 文档
如何做 ?
 工作者 : 构建
生命 周期 相态

最初 详细 构造 提交

时间

 最初 定义项目的范围和开发商业案例

 详细 计划项目,详细说明功能和结构的基线

 构造 创建产品
 提交 把产品提交给用户
重要 的里 程碑

最初 详细 构造 提交

时间

想象 体系结构基线 初始能力 产品发布


相态 和迭 代

最初 详细 构造 提交

预备 ... 主要 ... 开发 开发 ... 提交 ...


循环 循环 循环 循环 循环

发布 发布 发布 发布 发布 发布 发布 发布

一个循环是一次确定的计划评估标准的活动的阶段,最终
结果是产生可执行发布版本。
体系 结构 中心

 模型是使体系结构可视化、详细描述、可文档
化、构造的工具手段
 统一过程指明了可执行体系结构的顺序行为

初始化 详细描述 构造 提交

时间
体系结构
统一过程 结构
相态
处理工 作流 初始 化 详细 化 构造 提交

商业模 型
需求
分析和 设计
实现
测试
分布
支持工 作流
配置管理
管理
环境
预备循环 Iter. Iter. Iter. Iter. Iter. Iter. Iter.
#1 #2 #n #n+1 #n+2 #m #m+1

反复
体系 结构 和循环

用例模型 设计模型 实现模型 分布模型 测试模型

内容
体系 结构 设计
 标识、选择和验证“体系结构”元素
 不是所有的事物都是体系结构
­ 主要商业类
­ 重要的机制
­ 处理器和过程
­ 层和子系统
­ 接口
 产生软件体系结构文档
体系 结构 设计流 程
用例图
 选择一个脚本 : 危险程度和风险
 标识主要的类和它们的责任
 给类分配行为 逻辑视图

 子系统结构,层,定义接口
 定义分配和并发性 实现视图
 实现体系结构原型
分布视图
 从用例开始测试
过程视图
 评估体系结构
循环
体系 结构 的起源

方法 方法

偷窃 直觉 偷窃 直觉

传统系 统 新系统
模式
 模式是范围内的问题的解决方案
 模式是一个领域内的经验汇集成的正式的详
细知识
 所有好的系统结构都是完整的模式
­ 成语
­ 设计模式
­ 体系结构模式
daVinci

机械 装置
 Screws • Brakes
 Keys • Pipes
 Rivets • Valves
 Bearings • Springs
 Pins, axles, shafts • Cranks and rods
 Couplings • Cams
 Ropes, belts, and chains • Pulleys
 Friction wheels • Engaging gears
 Toothed wheels
 Flywheels
 Levers and connecting rods
 Click wheels and gears
 Ratchets
Design Patterns
Gamma et al

设计 模式
 创造性的模式
­ 抽象工厂
­ 原型
 结构模式
­ 适配器
­ 桥
­ 代理
 行为模式
­ 责任链
­ 担保人
­ 访问者
 机械装置是体系结构的灵魂
给设 计模 式建模
给设 计模 式建模 (cont.)
给设 计模 式建模 (cont.)
Software Architecture
Shaw and Garlan

体系 结构 模式 Buschmann et al
A System of Patterns
Buschman et al
Booch

 分布式的 分层的
 事件驱动的 多变量计数
 基于框架的 红外为中心的
 批处理 包容
 管道和过滤 可任意使用的
 中心知识库
 黑板
 解释程序
 基于规则的
Real-Life Object-oriented Systems
Soren Lauesen

复杂 的商 业系统
Customer
name : String Sales
Order
Address : String product : Product 用户界面层
date : Date
save()

ServiceAgent Observer

purchase(customer, product, items) update()

中间层

Customer Order Line Product


name : String items : Product name : String
Address : String price : Currency
getName()
save() updateName() getName()
getName() updateName()
updateName()

Customer Order Line Product SQL 数据库


* *
逻辑 应用 体系结 构

图形 图形 图形
用户 用户 用户
界面 界面 界面

Relational 商业 商业
Database 对象 对象
模型 模型

关系
数据库
关系
数据库
物理 应用 程序体 系结 构
廋客户端,胖服务器

A 客户端 B 客户 端 C 客户 端
应用 Application WWW Browser

DCOM
商业对象服务 CORBA Beans
ADO/R

商业对象引擎
Web
HTML
商业逻辑 服 COM Beans 服务器 CGI ASP Java
务器 MTS ETS

商业对象服务 商业对象服务

商业对象引擎 商业对象引擎

关系数 据库
The Second Wave
Paul Dreyfus, Netscape

复杂 的 Internet 系统

客户 端 Dynamic HTML, JavaScript, Java


plug-ins, source code enhancements

服务器 Java, C, C++, JavaScript, CGI

应用 Java, C, C++, JavaBeans, CORBA, DCOM


服务 器

执行 系统 金融 系统 库存 系统 关系 数据库 Native languages


系统
什么 是体 系结构 师 ?
 经验
­ 软件开发
­ 领域

 积极活跃 , 面向目标
 领导 , 权威
 体系结构小组
­ 平衡
建筑 师
 不是最高水平的设计者
 需要保证可行性

 不是项目管理者
 但是“作为熟悉内情的人而加入”

 不是技术专家
 对于系统来说是“适合”

 不是一位科学家
 交流者
软件 体系 结构团 体特 征
 定义软件的体系结构
 维护软件完整性的体系结构
 评估关系到软件设计的风险
 指定成功循环的顺序和内容
 咨询服务
 为将来产品的定义帮助营销
 推动项目团体间的沟通
体系 结构 促使早 下决 定

软件体系结构的周期是一个致使某
些部分进入黑暗地步的不理想决定的
长期连续工作。
远景
 ADL: 体系结构描述语言
­ UML, UniCon, LILEAnna, P++, LEAP, Wright,
µRapid
 概念标准化
­ IEEE 工作组体系结构
­ INCOSE 关于系统的工作组

 体系结构的系统捕获
参考 ( 体系结 构 )
 Len Bass, Paul Clements & Rick Kazman, Software Architecture in
Practice, Addison-Wesley, 1998.
 Frank Buschmann, Régine Meunier, Hans Rohnert, Peter Sommerlad,
and Michael Stahl, Pattern-Oriented Software Architecture - A System
of Patterns, Wiley and Sons, 1996.
 Christine Hofmeister, Robert Nord, Dilip Soni, Applied Software
Architecture, Addison-Wesley 1999.
 Eric Gamma, John Vlissides, Richard Helm, Ralph Johnson, Design
Patterns, Addison-Wesley 1995.
 Philippe Kruchten, “The 4+1 View Model of Architecture,” IEEE
Software, 12 (6), November 1995, IEEE.
­ http://www.rational.com/support/techpapers/ieee/

 Eberhardt Rechtin, Systems Architecting: Creating and Building


Complex Systems, Englewood Cliffs NJ, Prentice-Hall, 1991.
参考 ( 体系结 构 )
 Eberhardt Rechtin & Mark Maier, The Art of System
Architecting, CRC Press, 1997.
 Recommended Practice for Architectural Description, Draft 2.0 of
IEEE P1471, May 1998
­ http://www.pithecanthropus.com/~awg/

 Mary Shaw, and David Garlan, Software Architecture—


Perspectives on an Emerging Discipline, Upper Saddle River,
NJ, Prentice-Hall, 1996.
 Bernard I. Witt, F. Terry Baker, and Everett W. Merritt, Software
Architecture and Design—Principles, Models, and Methods,
New York NY, Van Nostrand Reinhold, 1995.
 The World-wide Institute of Software Architects
­ http://www.wwisa.org
参考 (UML)
 Grady Booch, James Rumbaugh, Ivar Jacobson, The Unified
Modeling Language User Guide, Addison-Wesley, 1999.
参考 ( 过程 )
 Barry Boehm, “A spiral model of software development and
enhancement,” IEEE Computer, May 1998.
 Barry Boehm, “Anchoring the software process,” IEEE
Software, July 1996.
 Grady Booch, Object Solutions, Addison-Wesley, 1995.
 Philippe Kruchten, “A Rational Development Process,”
CrossTalk, July 1996.
­ http://www.rational.com/support/techpapers/devprcs/

 Philippe Kruchten, The Rational Unified Process - An


Introduction, Addison-Wesley, 1999.
 Rational Unified Process 5.0, Rational, Cupertino, CA, 1998
 Walker Royce, Software Project Management: a Unified
Framework, Addison-Wesley, 1998
 The Software Program Manager’s Network
­ http://www.spmn.com

You might also like