构架模式、 UML 与组件设计

136
1 构构构构构构构构UML UML 构构构构构 构构构构构 竞竞竞竞竞

description

构架模式、 UML 与组件设计. 竞争的优势. 议程. 软件架构与模式 UML: 通用建模语言 组件设计过程. 议程. 软件架构与模式 架构的定义 优秀软件的标准 模式 UML: 通用建模语言 组件设计过程. Load. Load. 民用建筑中的受力. 负载的种类 - 固定的负载 - 变化的负载 - 动态负载 防止失败 - 安全因素 - 冗余 - 均衡. 压缩. 拉伸. 任何时间你必须放弃原有经验 , 使用 10 倍的力量 , 再加以 10 倍的调研 . 对于大的项目尤为如此. 技术因素. 功能性. 性能. - PowerPoint PPT Presentation

Transcript of 构架模式、 UML 与组件设计

Page 1: 构架模式、 UML 与组件设计

11

构架模式、构架模式、 UMLUML 与组件设与组件设计计竞争的优势

Page 2: 构架模式、 UML 与组件设计

22

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言 通用建模语言 组件设计过程组件设计过程

Page 3: 构架模式、 UML 与组件设计

33

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式– 架构的定义架构的定义– 优秀软件的标准优秀软件的标准– 模式模式UML: UML: 通用建模语言 通用建模语言 组件设计过程组件设计过程

Page 4: 构架模式、 UML 与组件设计

44

Microsoft Architect 2000

民用建筑中的受力民用建筑中的受力

压缩

Load

拉伸

Load

负载的种类 - 固定的负载 - 变化的负载 - 动态负载防止失败 - 安全因素 - 冗余 - 均衡

任何时间你必须放弃原有经验 , 使用 10 倍的力量 , 再加以 10 倍的调研 . 对于大的项目尤为如此 .

Page 5: 构架模式、 UML 与组件设计

55

Microsoft Architect 2000

软件构架中的受力软件构架中的受力性能

吞吐量

容量

功能性

可用性

恢复力

失效安全

容错能力

Have an architecture that makes sense before you write 3.5 millionlines of code.

技术因素区别 - 没有运动的部分 - 可以创建新材料 - 可以改变物理现象避免失败 - 将关键部分分散开来 - 语义上的一致性 - 职责分散

Page 6: 构架模式、 UML 与组件设计

66

Microsoft Architect 2000

复杂性度量复杂性度量更高的技术复杂性 - 内嵌的,实时的,分布的,容错的 - 定制的,空前的,结构重新设计 - 高性能

更低的技术复杂性 - 大多数是 4GL, 或者是基于组件的 - 应用程序重新创建 - 交互式性能

更高的管理复杂性 - 大规模 - 契约的 - 多个资金保管者 - “ 工程”

更低的管理复杂性 - 小规模 - 非正式的 - 单个资金保管者 - “ 产品”

Defense MIS System

Defense Weapon SystemTelecom

Switch

CASE Tool

National Air TrafficControl System

Enterprise IS(Family of ISApplications)

CommercialCompiler

BusinessSpreadsheet

IS ApplicationDistributed Objects

(Order Entry)

Small ScientificSimulation

Large-ScaleOrganization/Entity

Simulation

An average software project: - 5-10 people - 10-15 month duration - 3-5 external interfaces - Some unknowns & risks

EmbeddedAutomotive

Software

IS ApplicationGUI/RDB

(Order Entry)

Walker Royce, Rational

Page 7: 构架模式、 UML 与组件设计

77

Microsoft Architect 2000

构架的定义构架的定义软件构架是围绕着一系列关于软件系统组软件构架是围绕着一系列关于软件系统组织的重要决定织的重要决定– 选择组成系统的结构单元和接口选择组成系统的结构单元和接口– 这些单元之间的协作行为这些单元之间的协作行为– 这些单元之间的协作行为这些单元之间的协作行为– 综合这些小的结构和动作单元为较大的子系统综合这些小的结构和动作单元为较大的子系统– 管理整个组织的结构形式管理整个组织的结构形式

Page 8: 构架模式、 UML 与组件设计

88

Microsoft Architect 2000

构架的定义构架的定义软件构架同时包括软件构架同时包括– 用法用法– 功能性功能性– 性能性能– 可恢复性可恢复性– 可重新利用率可重新利用率– 综合性综合性– 经济和技术的相互约束和权衡关系经济和技术的相互约束和权衡关系– 审美学的观点审美学的观点

Page 9: 构架模式、 UML 与组件设计

99

Microsoft Architect 2000

以构架为中心以构架为中心目的目的– 智能控制智能控制– 以可重复利用为基础以可重复利用为基础– 以项目管理和减小危险性为基础以项目管理和减小危险性为基础表示方法表示方法– 4+1 4+1 视图模型视图模型步骤步骤– 迭代的和增量的发展迭代的和增量的发展– 从可执行的构架中进行连续地提炼从可执行的构架中进行连续地提炼

Page 10: 构架模式、 UML 与组件设计

1010

Microsoft Architect 2000

构架的前后联系构架的前后联系选择在什么规章或契约之下组建软件是一选择在什么规章或契约之下组建软件是一个构架级的决定个构架级的决定– 但这绝不是一个完整的构架级决定但这绝不是一个完整的构架级决定

Page 11: 构架模式、 UML 与组件设计

1111

Microsoft Architect 2000

除去变化的层除去变化的层

站点外表

结构服务

空间计划

材料

Page 12: 构架模式、 UML 与组件设计

1212

Microsoft Architect 2000

分层设计的 分层设计的 MS Search 2.5MS Search 2.5代码的组件化(模块代码的组件化(模块化)是第一位的。化)是第一位的。相比相比2.02.0 版本三个主要的搜版本三个主要的搜索功能。而 索功能。而 Search Search 2.5 2.5 由于把应用程序分由于把应用程序分割为不同模块,分别处割为不同模块,分别处理代码的执行和用户界理代码的执行和用户界面的表示,从而实现了面的表示,从而实现了代码与界面的分离。这代码与界面的分离。这

是通过 是通过 XML XML 和 和 XSL XSL 来实现的。来实现的。

Page 13: 构架模式、 UML 与组件设计

1313

Microsoft Architect 2000

构架的定义构架的定义 查询先被提交给解析器 查询先被提交给解析器 (Parser) (Parser) 进行词条分割和词表解进行词条分割和词表解

析析 找到项目的显示术语 找到项目的显示术语 (Display Term) (Display Term) 被传给 被传给 Best BetsBest Bets 找到项目的首选术语 找到项目的首选术语 (Preferred Term) (Preferred Term) 和剩余项目被传和剩余项目被传

给 给 Search ResultsSearch Results 使用 使用 XSL XSL 编译生成并转换为 编译生成并转换为 XML XML 格式的结果文档格式的结果文档

HTML HTML 被提交到用户 被提交到用户 Web Web 浏览器浏览器

Page 14: 构架模式、 UML 与组件设计

1414

Microsoft Architect 2000

完成优秀的设计完成优秀的设计通过如下方法达到:通过如下方法达到:– 以用户为中心的方法以用户为中心的方法– 与企业架构相一致与企业架构相一致– 构建时规划构建时规划– 基于解决方案的设计基于解决方案的设计– 迭代过程迭代过程– 完全的完全的 MSFMSF 团队输入团队输入

Page 15: 构架模式、 UML 与组件设计

1515

Microsoft Architect 2000

优秀的设计优秀的设计有用的有用的– 解决商业问题解决商业问题– 保证信息、服务和产品的交付保证信息、服务和产品的交付

可用的可用的– 保证生产率保证生产率– 直觉的直觉的– 无错的无错的

期望的期望的– 性价比高的性价比高的– 灵活的灵活的– 可扩展的可扩展的– 可维护的可维护的

Page 16: 构架模式、 UML 与组件设计

1616

Microsoft Architect 2000

降低设计风险降低设计风险MSFMSF 设计过程是一个有效的工具,用以降设计过程是一个有效的工具,用以降低那些因为不满足商业需求而产生的设计低那些因为不满足商业需求而产生的设计风险。风险。

Page 17: 构架模式、 UML 与组件设计

1717

Microsoft Architect 2000

模式模式模式是针对一个特定问题的解决方案模式是针对一个特定问题的解决方案模式是从一个领域的经验中所提炼出来的模式是从一个领域的经验中所提炼出来的特定的知识特定的知识所有具有良好结构的系统都有非常丰富的所有具有良好结构的系统都有非常丰富的模式模式– 习惯用语习惯用语– 设计模式设计模式– 构架的模式构架的模式

Page 18: 构架模式、 UML 与组件设计

1818

Microsoft Architect 2000

设计模式设计模式创造性的模式创造性的模式– 抽象抽象 factoryfactory– 原型原型构架的模式构架的模式– 适配器适配器– 桥桥– 代理代理动作的模式动作的模式– 职责链职责链– 协调者协调者– 访客访客机制是构架的灵魂机制是构架的灵魂

Page 19: 构架模式、 UML 与组件设计

1919

Microsoft Architect 2000

模式与架构的来源模式与架构的来源借鉴

方法直觉

古典的系统 不可预知的系统

借鉴方法

直觉

Page 20: 构架模式、 UML 与组件设计

2020

Microsoft Architect 2000

受关注的程度受关注的程度发现 发明 实施

注意力

时间

Page 21: 构架模式、 UML 与组件设计

2121

Microsoft Architect 2000

讨论讨论一个典型的设计一个典型的设计– 优秀的架构优秀的架构– 吸取的教训吸取的教训– 得到的经验得到的经验

Page 22: 构架模式、 UML 与组件设计

2222

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言 通用建模语言 – OODA: OODA: 面对对象的分析与设计面对对象的分析与设计– UMLUML介绍介绍– 使用案例视图使用案例视图– 类图表类图表– 交互图表与行为图表交互图表与行为图表– 模块与组件模块与组件组件设计组件设计

Page 23: 构架模式、 UML 与组件设计

2323

Microsoft Architect 2000

OODA: OODA: 面对对象的分析与设计面对对象的分析与设计类、对象以及元件类、对象以及元件 一般概念一般概念

Page 24: 构架模式、 UML 与组件设计

2424

Microsoft Architect 2000

类、对象以及元件类、对象以及元件类:蓝图,对象的模版类:蓝图,对象的模版对象:类的实例对象:类的实例元件:一个系统的物理执行单元元件:一个系统的物理执行单元– 包括一个或多个类,很强的依存关系包括一个或多个类,很强的依存关系– 物理的、可用二进制表示的应用程序物理的、可用二进制表示的应用程序– 可运行一个或以上的界面可运行一个或以上的界面– 包含一个或以上的类别包含一个或以上的类别– 可替换性可替换性

Page 25: 构架模式、 UML 与组件设计

2525

Microsoft Architect 2000

类和对象类和对象 对象的状态有时间变化的趋势对象的状态有时间变化的趋势 类是对象的抽象类是对象的抽象

PersonFirst nameLast nameDate of birth

JaneLewis1/27/56

DonSmith7/9/63

DebbyBloom6/18/67

WarrenJohnson8/28/52

Page 26: 构架模式、 UML 与组件设计

2626

Microsoft Architect 2000

OOADOOAD 的一般概念的一般概念抽象抽象封装封装模块模块继承继承

Page 27: 构架模式、 UML 与组件设计

2727

Microsoft Architect 2000

OOADOOAD 的基本概念:抽象的基本概念:抽象 管理复杂性管理复杂性 关注实际的特性关注实际的特性 忽略详细说明忽略详细说明 从不同的角度看待问题从不同的角度看待问题

AssetValue

PersonName

owns

Page 28: 构架模式、 UML 与组件设计

2828

Microsoft Architect 2000

OOADOOAD 的基本概念:封装的基本概念:封装 隐藏信息隐藏信息 黑箱操作 黑箱操作 降低连锁反应的影响降低连锁反应的影响

Buy 100 shares of FM Stocks at

market price. 购买者不需要了解实现的具体细节

Page 29: 构架模式、 UML 与组件设计

2929

Microsoft Architect 2000

OOADOOAD 的基本概念:模块的基本概念:模块 分块降低复杂性分块降低复杂性 各部分协同工作各部分协同工作

Buy Stock

Close Account

Sell Stock

Create Account

Page 30: 构架模式、 UML 与组件设计

3030

Microsoft Architect 2000

OOADOOAD 的基本概念:继承的基本概念:继承 抽象的层次抽象的层次

Asset

Cash Stock BondReal estate

Commercial Residential

Higher levelof abstraction

Lower levelof abstraction

Page 31: 构架模式、 UML 与组件设计

3131

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言 通用建模语言 – OODA: OODA: 面对对象的分析与设计面对对象的分析与设计– UMLUML介绍介绍– 使用案例视图使用案例视图– 类图表类图表– 交互图表与行为图表交互图表与行为图表– 模块与组件模块与组件组件设计组件设计

Page 32: 构架模式、 UML 与组件设计

3232

Microsoft Architect 2000

什么是 什么是 UML?UML?

统一模型语言™ 统一模型语言™ (Unified Modeling Langu(Unified Modeling Language)age) 是一种用来定义,形象表示,创建和是一种用来定义,形象表示,创建和文档记载软件系统的工业标准语言。 它简文档记载软件系统的工业标准语言。 它简化了软件设计的复杂流程,为整个的构架化了软件设计的复杂流程,为整个的构架建立一个“蓝图”。建立一个“蓝图”。

Page 33: 构架模式、 UML 与组件设计

3333

Microsoft Architect 2000

为什么使用为什么使用 UML?UML?

一种形象,准确的表达软件功能和结构的一种形象,准确的表达软件功能和结构的标准方法,有效的避免误解标准方法,有效的避免误解 规划者规划者 //开发者开发者 // 测试者测试者 // 项目经理并不真项目经理并不真正了解我尝试规格化的内容正了解我尝试规格化的内容 写作规范很费时,但是产品周期越来越短写作规范很费时,但是产品周期越来越短

Page 34: 构架模式、 UML 与组件设计

3434

Microsoft Architect 2000

UML UML 使用在什么地方使用在什么地方 ??

高层的介绍总览的文档高层的介绍总览的文档 // 规范规范规范规范开发设计文档开发设计文档

Page 35: 构架模式、 UML 与组件设计

3535

Microsoft Architect 2000

什么是 什么是 UML UML 图表图表 ??

软件系统的蓝图,每个类型的图表都说明软件系统的蓝图,每个类型的图表都说明了系统的不同的方面了系统的不同的方面软件代码生成的一种方法软件代码生成的一种方法图形化表示系统如何工作, 更快,更好图形化表示系统如何工作, 更快,更好简练易懂的表述,讨论复杂的系统的一种简练易懂的表述,讨论复杂的系统的一种方法方法

Page 36: 构架模式、 UML 与组件设计

3636

Microsoft Architect 2000

UML UML 图表的类型图表的类型使用案例图表使用案例图表行为图表行为图表类图表类图表顺序图表顺序图表

其它类型的其它类型的 UMLUML 图表图表 ::协作图表协作图表数据流图表数据流图表包装图表包装图表状态图表状态图表物理图表物理图表

Page 37: 构架模式、 UML 与组件设计

3737

Microsoft Architect 2000

4+1 4+1 视图模式视图模式使用案例视图使用案例视图 ( “+1” ( “+1” 视图视图 ))– 使用案例模型使用案例模型逻辑视图逻辑视图– 设计模型设计模型实施视图实施视图– 实施模型实施模型

过程视图过程视图– 包括在设计模型中包括在设计模型中分发视图分发视图

逻辑视图 实施实施视图

分发视图过程视图

使用案例视图

最终用户:功能性

系统工程师:拓扑结构、联系

程序员:软件开发管理

综合:性能、扩展性

Page 38: 构架模式、 UML 与组件设计

3838

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言 通用建模语言 – OODA: OODA: 面对对象的分析与设计面对对象的分析与设计– UMLUML介绍介绍– 使用案例视图使用案例视图– 类图表类图表– 交互图表与行为图表交互图表与行为图表– 模块与组件模块与组件组件设计组件设计

Page 39: 构架模式、 UML 与组件设计

3939

Microsoft Architect 2000

使用案例使用案例情景情景 , , 在线消费情景在线消费情景为了一个满足共同的用户的要求,而产生的一系为了一个满足共同的用户的要求,而产生的一系列相互联系的情景列相互联系的情景使用案例图表使用案例图表辅助作用辅助作用可以使用其他形式可以使用其他形式表达行为者与使用案例表达行为者与使用案例 ,,及使用案例之间的关系及使用案例之间的关系

Page 40: 构架模式、 UML 与组件设计

4040

Microsoft Architect 2000

使用案例图表使用案例图表

Page 41: 构架模式、 UML 与组件设计

4141

Microsoft Architect 2000

使用案例文本使用案例文本售票员为顾客买电影票售票员为顾客买电影票 ::主要情景主要情景 ::

– 售票员在顾客挑选座次售票员在顾客挑选座次 , , 电影和时间后电影和时间后 , , 为顾客定票为顾客定票 ..– 售票员输入顾客的信用卡信息售票员输入顾客的信用卡信息 , , 收取购票费用收取购票费用– 信用卡认证系统授权交易信用卡认证系统授权交易– 售票员将票交给顾客售票员将票交给顾客扩展情景”扩展情景”– 11a. a. 顾客是一般顾客顾客是一般顾客 ::

11a1: a1: 在保留季节票的前提下销售在保留季节票的前提下销售11a2: a2: 顾客可以开始购买季节票顾客可以开始购买季节票

– 1b. 1b. 顾客持有季节票顾客持有季节票 ,,1b1: 1b1: 顾客可以使用季节票顾客可以使用季节票1b2: 1b2: 顾客也可以够买普通票顾客也可以够买普通票

– 3a. 3a. 信用卡授权失败信用卡授权失败 ,,3a1: 3a1: 售票员可以取消交易售票员可以取消交易 ,,3a2: 3a2: 售票员可以要求顾客提供正确的信用卡信息售票员可以要求顾客提供正确的信用卡信息 ..

Page 42: 构架模式、 UML 与组件设计

4242

Microsoft Architect 2000

使用案例图表使用案例图表行为者行为者指用户在系统中扮演的角色指用户在系统中扮演的角色““行为者”可能是用户,或者另一个系统行为者”可能是用户,或者另一个系统同一个用户根据扮演的角色同一个用户根据扮演的角色 , , 可以成为多个不同可以成为多个不同行为者行为者在图表中可以只列出主要的行为者或者引起使用在图表中可以只列出主要的行为者或者引起使用案例的行为者案例的行为者使用案例描述“行为者”如何使用系统来达到特使用案例描述“行为者”如何使用系统来达到特定的目标定的目标列出行为者可以帮助发现使用案例列出行为者可以帮助发现使用案例行为者的细节无关紧要行为者的细节无关紧要

Page 43: 构架模式、 UML 与组件设计

4343

Microsoft Architect 2000

使用案例图表使用案例图表使用案例之间的关系使用案例之间的关系 :: 包涵包涵 ,,概括概括 ,, 延伸延伸当两个使用案例有重叠的部分时当两个使用案例有重叠的部分时 , , 将重叠将重叠的部分独立出来成为一个单独的使用案例的部分独立出来成为一个单独的使用案例 ,,此使用案例包涵于原使用案例此使用案例包涵于原使用案例当一个使用案例当一个使用案例 AA 与另一个使用案例与另一个使用案例 BB 类类似似 , , 但有更多的内容时但有更多的内容时 , , 可以将可以将 BB 作为作为 AA的一个特例使用案例的一个特例使用案例 , , 这时这时 , A, A 是是 BB 的概括的概括

Page 44: 构架模式、 UML 与组件设计

4444

Microsoft Architect 2000

使用案例图表使用案例图表延伸延伸如果基本使用案例如果基本使用案例 AA宣称某些延伸点宣称某些延伸点 ,, 使用使用案例案例 BB只在这些延伸点上进行了扩充只在这些延伸点上进行了扩充 , B, B 就就成为成为 AA 的延伸使用案例的延伸使用案例规则规则– 使用包含来避免重复的使用案例使用包含来避免重复的使用案例 ,,– 使用概括来泛泛描述案例的特殊情况使用概括来泛泛描述案例的特殊情况 ,,– 使用延伸来严格描述案例的特殊情况使用延伸来严格描述案例的特殊情况

Page 45: 构架模式、 UML 与组件设计

4545

Microsoft Architect 2000

使用案例的识别使用案例的识别确定使用案例确定使用案例– 确定对象、参与者的关系与交互确定对象、参与者的关系与交互– 在类图表与交互图表中描述细节在类图表与交互图表中描述细节– 在逻辑视图中跟踪使用案例在逻辑视图中跟踪使用案例

危险:步骤太多或者太少。危险:步骤太多或者太少。– 如果在如果在 Use CaseUse Case 中有超过中有超过 1515 个步骤,它可能包含一个步骤,它可能包含一些实现明细。如果它只有非常少的步骤则检查它的目些实现明细。如果它只有非常少的步骤则检查它的目标是否是达到一个没有很多分支的活动的单一线索。标是否是达到一个没有很多分支的活动的单一线索。

Page 46: 构架模式、 UML 与组件设计

4646

Microsoft Architect 2000

使用案例的类别使用案例的类别Business Use CaseBusiness Use Case :系统都用于同一商:系统都用于同一商业领域。不假定任何公司内部的结构 业领域。不假定任何公司内部的结构 System Use CaseSystem Use Case :整个系统看作是一个:整个系统看作是一个黑盒 黑盒 Implementation Use CaseImplementation Use Case :设计子系统和:设计子系统和系统内部组件。系统内部组件。每个每个 Use CaseUse Case 只描述没有大的分支的行为只描述没有大的分支的行为的单个线索 的单个线索

Page 47: 构架模式、 UML 与组件设计

4747

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言 通用建模语言 – OODA: OODA: 面对对象的分析与设计面对对象的分析与设计– UMLUML介绍介绍– 使用案例视图使用案例视图– 类图表类图表– 交互图表与行为图表交互图表与行为图表– 模块与组件模块与组件组件设计组件设计

Page 48: 构架模式、 UML 与组件设计

4848

Microsoft Architect 2000

类图表类图表什么是类图表?什么是类图表?描述了系统中的对象类型,和其相互之间描述了系统中的对象类型,和其相互之间的各种不同的静态联系的各种不同的静态联系描述了各个对象属性描述了各个对象属性提示 提示 : : 常在开发中使用常在开发中使用

Page 49: 构架模式、 UML 与组件设计

4949

Microsoft Architect 2000

类图表类图表

Page 50: 构架模式、 UML 与组件设计

5050

Microsoft Architect 2000

定义完善的类定义完善的类 拥有唯一确认的名字,容易识别拥有唯一确认的名字,容易识别 代表了类的操作及属性代表了类的操作及属性 与其他类协作良好与其他类协作良好 按照项目或企业的标准命名按照项目或企业的标准命名

Page 51: 构架模式、 UML 与组件设计

5151

Microsoft Architect 2000

边界类边界类在应用程序以及运行环境建立界面在应用程序以及运行环境建立界面包括的方法可以处理用户与应用程序内某包括的方法可以处理用户与应用程序内某个商业流程的交互个商业流程的交互主要用于界面窗体以及其他与用户交互的主要用于界面窗体以及其他与用户交互的建模建模

Boundary class name

Boundary class

name

<<boundary>>

Page 52: 构架模式、 UML 与组件设计

5252

Microsoft Architect 2000

定义边界类定义边界类 在使用案例中,每个脚色至少定义一个边在使用案例中,每个脚色至少定义一个边界类。脚色可以是外部系统界类。脚色可以是外部系统 边界类的最后实现可能是一个边界类的最后实现可能是一个 ASPASP 页面,页面,也可能是程序窗体也可能是程序窗体

Page 53: 构架模式、 UML 与组件设计

5353

Microsoft Architect 2000

控制类控制类 封装了商业逻辑层的的事务复杂性封装了商业逻辑层的的事务复杂性 通常用于在应用过程协调行为通常用于在应用过程协调行为在使用案例中控制事件流在使用案例中控制事件流

Control class name

Control class name<<control>>

Page 54: 构架模式、 UML 与组件设计

5454

Microsoft Architect 2000

定义控制类定义控制类每个复杂的使用案例 至少定义一个控制类每个复杂的使用案例 至少定义一个控制类 控制类相当于一个控制者,不应当关注内控制类相当于一个控制者,不应当关注内部的过程部的过程 复杂的使用案例需要更多的控制类复杂的使用案例需要更多的控制类

Page 55: 构架模式、 UML 与组件设计

5555

Microsoft Architect 2000

实体类实体类 为应用程序存储信息的模型为应用程序存储信息的模型 稳定的数据模型稳定的数据模型 通常用于商业逻辑层通常用于商业逻辑层

Entity class name

Entity class name

<<entity>>

Page 56: 构架模式、 UML 与组件设计

5656

Microsoft Architect 2000

定义实体类定义实体类Noun-Verb-Adjective (NVA) Noun-Verb-Adjective (NVA) 方法分析使用方法分析使用案例文档,寻找潜在的实体类案例文档,寻找潜在的实体类– 确定使用案例的场景,在文档描述中确定句子确定使用案例的场景,在文档描述中确定句子的主语(名词)的主语(名词)– 将潜在的实体类列出将潜在的实体类列出– 检查使用案例的其他要求或数据字典已确定是检查使用案例的其他要求或数据字典已确定是否有附加的实体类否有附加的实体类– 与客户以及开发人员共同确定最后清单与客户以及开发人员共同确定最后清单

Page 57: 构架模式、 UML 与组件设计

5757

Microsoft Architect 2000

对象的例子对象的例子任务序列 任务序列 对象 对象 前台服务员前台服务员查找查找顾客顾客的的预定记录 预定记录 前台服务员,顾客,预定前台服务员,顾客,预定记录 记录 系统系统提取出空余的提取出空余的房间房间 系统,房间系统,房间将该将该房间房间分配给分配给客人客人 房间,客人房间,客人前台服务员前台服务员发放给客人发放给客人房间房间钥匙钥匙 前台服务员,钥匙前台服务员,钥匙

Page 58: 构架模式、 UML 与组件设计

5858

Microsoft Architect 2000

服务的例子服务的例子任务序列 任务序列 服务 服务 前台服务员前台服务员查找查找顾客的预顾客的预定记录 定记录 查看预定记录 查看预定记录 系统系统提取提取出空余的房间 出空余的房间 提取空余的房间提取空余的房间将该房间将该房间分配分配给客人 给客人 分配房间分配房间前台服务员前台服务员发放发放给客人房给客人房间钥匙 间钥匙 发放钥匙 发放钥匙

Page 59: 构架模式、 UML 与组件设计

5959

Microsoft Architect 2000

属性的例子属性的例子叙述叙述 属性属性顾客有姓名和地址顾客有姓名和地址 姓名,地址姓名,地址顾客通过各种类型的预定 顾客通过各种类型的预定 预定类型预定类型客人所属的公司 客人所属的公司 公司公司顾客抽烟不?顾客抽烟不? 抽烟否抽烟否

Page 60: 构架模式、 UML 与组件设计

6060

Microsoft Architect 2000

UML UML 中类图表的表示中类图表的表示 类的关联与关系:关联描述了对象之间的类的关联与关系:关联描述了对象之间的协作关系。协作关系。– 集合与合成集合与合成– 概括概括– 实现实现关联的属性:描述了类的关联的细节。关联的属性:描述了类的关联的细节。– 名称名称– 脚色脚色– 浏览方向浏览方向

Page 61: 构架模式、 UML 与组件设计

6161

Microsoft Architect 2000

关 联关 联 表示了类之间的使用关系表示了类之间的使用关系 包括了两类:包括了两类:– ””uses a” uses a” – ““knows of a”knows of a”

方向表示了数据之间的交换性方向表示了数据之间的交换性用户 账号

单向关联

地址

双向关联

Page 62: 构架模式、 UML 与组件设计

6262

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言 通用建模语言 – OODA: OODA: 面对对象的分析与设计面对对象的分析与设计– UMLUML介绍介绍– 使用案例视图使用案例视图– 类图表类图表– 交互图表与行为图表交互图表与行为图表– 模块与组件模块与组件组件设计组件设计

Page 63: 构架模式、 UML 与组件设计

6363

Microsoft Architect 2000

交互图表交互图表表示对象类型之间的协作关系表示对象类型之间的协作关系对应一个使用案例对应一个使用案例两种格式两种格式– 顺序图表顺序图表– 协作图表协作图表表示单一顺序过程表示单一顺序过程 , , 无复杂的条件和循环无复杂的条件和循环分支分支

Page 64: 构架模式、 UML 与组件设计

6464

Microsoft Architect 2000

交互图表交互图表顺序图表强调事件间的次序顺序图表强调事件间的次序 , , 表示对象类表示对象类的激活和消灭的激活和消灭协作图表强调对象类之间的静态联系协作图表强调对象类之间的静态联系弱点弱点– 对对象类的行为描述不能深入对对象类的行为描述不能深入– 状态图表状态图表

Page 65: 构架模式、 UML 与组件设计

6565

Microsoft Architect 2000

顺序图表顺序图表描述在某一个场景下消息在对象之间按时描述在某一个场景下消息在对象之间按时间顺序的流动间顺序的流动消息消息– 对象之间的交流对象之间的交流– 只是出消息的流动方向只是出消息的流动方向– 转化为类的方法转化为类的方法

Page 66: 构架模式、 UML 与组件设计

6666

Microsoft Architect 2000

顺序图表的产生顺序图表的产生 确定使用案例场景的开始确定使用案例场景的开始 分步确定在使用案例场景的事件流:分步确定在使用案例场景的事件流:– 创建对象创建对象– 根据步骤创建对象之间的消息根据步骤创建对象之间的消息– 确定消息的原型确定消息的原型– 确定消息的参数确定消息的参数– 说明消息的输出说明消息的输出

Page 67: 构架模式、 UML 与组件设计

6767

Microsoft Architect 2000

顺序图表顺序图表

Page 68: 构架模式、 UML 与组件设计

6868

Microsoft Architect 2000

顺序图表:另一种形式顺序图表:另一种形式

Page 69: 构架模式、 UML 与组件设计

6969

Microsoft Architect 2000

协作图表协作图表 以对象为中心的观点以对象为中心的观点 描述对象之间协作的信息描述对象之间协作的信息 设计者可以看到对象所有接受以及发送的设计者可以看到对象所有接受以及发送的消息消息 Rational RoseRational Rose :可以根据顺序图表自动创:可以根据顺序图表自动创建建

Page 70: 构架模式、 UML 与组件设计

7070

Microsoft Architect 2000

协作图表 协作图表 UML UML 符号表示符号表示参加者:动作序列的初始点参加者:动作序列的初始点连接:定义了消息在对象之间传递的路径。连接:定义了消息在对象之间传递的路径。

: Customer

: Account

1: Create

2: Validate

参加者

对象

消息名称

Link

Page 71: 构架模式、 UML 与组件设计

7171

Microsoft Architect 2000

协作图表的创建协作图表的创建自动 自动 – 从顺序图表自动产生协作图表 从顺序图表自动产生协作图表 手工手工– 在使用案例场景中确定对象在使用案例场景中确定对象– 创建对象创建对象– 定义对象之间的连接定义对象之间的连接– 定义对象之间的消息定义对象之间的消息– 定义消息的原型定义消息的原型– 定义消息的参数定义消息的参数

Page 72: 构架模式、 UML 与组件设计

7272

Microsoft Architect 2000

协作图表协作图表

Page 73: 构架模式、 UML 与组件设计

7373

Microsoft Architect 2000

状态转变图表状态转变图表表示特定对象的所有可能的状态和引起对表示特定对象的所有可能的状态和引起对象状态变化的事件及其条件象状态变化的事件及其条件 ..在面向对象程序设计中在面向对象程序设计中 , , 状态图表通常用状态图表通常用来描述某一对象类的全部的行为来描述某一对象类的全部的行为变化标签 变化标签 : : 事件 事件 [[条件条件 ] / ] / 行动行动状态行为标签状态行为标签 : : 做 做 / / 行为 行为 其他关键词其他关键词 ::– 总状态 总状态 superstate , superstate , 之后 之后 after, after, 当当 .. when, .. when, 入口 入口 entry, entry, 出口 出口 exit, exit, 自迁移 自迁移 self-transition, self-transition,

Page 74: 构架模式、 UML 与组件设计

7474

Microsoft Architect 2000

状态转变图表状态转变图表

Page 75: 构架模式、 UML 与组件设计

7575

Microsoft Architect 2000

行为图表行为图表描述了行为的顺序描述了行为的顺序 , , 可以描述复杂的选择可以描述复杂的选择性的或并行性的行为性的或并行性的行为是状态图表的一个变化是状态图表的一个变化类似于流程图类似于流程图关键词关键词分支 分支 brance,brance, 合并 合并 merge,merge,并行分支 并行分支 fork, fork, 并行合并 并行合并 joinjoin

Page 76: 构架模式、 UML 与组件设计

7676

Microsoft Architect 2000

行为图表行为图表Pick a show

Schedule a show

Publicize show

Sell tickets

Buy scripts and music

Hire artists

rehearsal

Design lighting

Design sets

Make costumes

Dressed rehearsal

perform

Page 77: 构架模式、 UML 与组件设计

7777

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言 通用建模语言 – OODA: OODA: 面对对象的分析与设计面对对象的分析与设计– UMLUML介绍介绍– 使用案例视图使用案例视图– 类图表类图表– 交互图表与行为图表交互图表与行为图表– 模块与组件模块与组件组件设计组件设计

Page 78: 构架模式、 UML 与组件设计

7878

Microsoft Architect 2000

模块图表模块图表

Page 79: 构架模式、 UML 与组件设计

7979

Microsoft Architect 2000

模块图表模块图表模块模块 ,,几个联系紧密的对象类组成的单元几个联系紧密的对象类组成的单元模块图表 模块图表 Package Diagram Package Diagram 在较高层次上在较高层次上表现对象类表现对象类 , , 或组成部分间的依赖关系或组成部分间的依赖关系 ..依赖依赖– 一个组成部分的变化决定与另一个组成部分的一个组成部分的变化决定与另一个组成部分的变化变化– 消息联系消息联系 ,,数据关系数据关系 ,,参数 参数 – 无传递性无传递性

Page 80: 构架模式、 UML 与组件设计

8080

Microsoft Architect 2000

定义模块的指南定义模块的指南找到逻辑上有关联的“类”找到逻辑上有关联的“类”– 例如: 集合或合成关系例如: 集合或合成关系考虑外在的系统接口考虑外在的系统接口检测系统构造检测系统构造– 层层– 节点节点决定元件的版面设计决定元件的版面设计

Page 81: 构架模式、 UML 与组件设计

8181

Microsoft Architect 2000

模块和其体系结构模块和其体系结构子系统可以用在项目的早期阶段子系统可以用在项目的早期阶段– 定义高层次应用的体系结构定义高层次应用的体系结构– 支持“从上到下”的设计方式支持“从上到下”的设计方式系统的系统系统的系统– 包含多样化引用的系统包含多样化引用的系统– 每一种引用是整个系统的一个子系统每一种引用是整个系统的一个子系统

Page 82: 构架模式、 UML 与组件设计

8282

Microsoft Architect 2000

组件组件元件元件– 物理的、可用二进制表示的应用程序,其物理的、可用二进制表示的应用程序,其中压缩了数据和资料的中压缩了数据和资料的

动态链接的数据库 动态链接的数据库 (DLL)(DLL)可执行的 可执行的 (EXE)(EXE)

– 可运行一个或以上的界面可运行一个或以上的界面– 包含一个或以上的类别包含一个或以上的类别

Page 83: 构架模式、 UML 与组件设计

8383

Microsoft Architect 2000

组件图表组件图表

Page 84: 构架模式、 UML 与组件设计

8484

Microsoft Architect 2000

部署图表部署图表 :: 描述图描述图

Page 85: 构架模式、 UML 与组件设计

8585

Microsoft Architect 2000

UMLUML 在程序规范中的应用在程序规范中的应用使用案例图表忽略了记录详细用户情景和使用案例图表忽略了记录详细用户情景和推断他们的需要的步骤推断他们的需要的步骤行为图表直观的表示了流程和功能行为图表直观的表示了流程和功能类图表定义了对象和属性,以及它们之间类图表定义了对象和属性,以及它们之间的相互关系的相互关系

Page 86: 构架模式、 UML 与组件设计

8686

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言通用建模语言组件设计过程组件设计过程– 三种设计角度三种设计角度– 概念性设计概念性设计– 逻辑性设计逻辑性设计– 物理性设计物理性设计– 综合设计综合设计

Page 87: 构架模式、 UML 与组件设计

8787

Microsoft Architect 2000

讨论讨论如何进行文档的组织?如何进行文档的组织?– 设计自己的工作方式设计自己的工作方式如何形成良好的工作模式?如何形成良好的工作模式?

Page 88: 构架模式、 UML 与组件设计

8888

Microsoft Architect 2000

FM StockFM Stock

Page 89: 构架模式、 UML 与组件设计

8989

Microsoft Architect 2000

FM Stocks FM Stocks 的结构的结构AccountSummary.asp

AccountSummary_Client

Form

IAccount

Inte

rnet

Info

rmat

ion

Serv

er a

nd A

SPSQLSQL

ServerServer

ActiveX DLL account

Business layerPresentation layer Data layer

Page 90: 构架模式、 UML 与组件设计

9090

Microsoft Architect 2000 设计设计将具体的用户需求转化成具体的编程规范(将具体的用户需求转化成具体的编程规范( programmiprogramming sepcification) ng sepcification) 的过程的过程

Vision Approved

Vision Approved

Project PlanApproved

Project PlanApproved

Scope Complete

Scope Complete

ReleaseRelease

Vision Approved

Vision Approved

Project PlanApproved

Project PlanApproved

Scope Complete

Scope Complete

ReleaseRelease

Page 91: 构架模式、 UML 与组件设计

9191

Microsoft Architect 2000

设计的演变设计的演变概念性设计概念性设计

逻辑性设计逻辑性设计

物理性设计物理性设计

Page 92: 构架模式、 UML 与组件设计

9292

Microsoft Architect 2000

三种设计角度三种设计角度商务解决方案

概念性

逻辑性

物理性

Page 93: 构架模式、 UML 与组件设计

9393

Microsoft Architect 2000

三种设计角度三种设计角度概念性设计概念性设计– 从用户和商务的角度看问题从用户和商务的角度看问题 , , 将问题和解决方将问题和解决方案定义场景和使用案例案定义场景和使用案例逻辑性设计逻辑性设计– 从设计组的角度看解决方案从设计组的角度看解决方案 , , 从使用案例中,从使用案例中,发掘一系列类和服务极其相互配合的关系发掘一系列类和服务极其相互配合的关系物理性设计物理性设计– 从程序员的角度看解决方案从程序员的角度看解决方案 , , 具体定义解决方具体定义解决方案的组件,包装,分布及技术实施案的组件,包装,分布及技术实施

Page 94: 构架模式、 UML 与组件设计

9494

Microsoft Architect 2000

4+1 4+1 视图模式视图模式使用案例视图使用案例视图 ( “+1” ( “+1” 视图视图 ))– 使用案例模型使用案例模型逻辑视图逻辑视图– 设计模型设计模型实施视图实施视图– 实施模型实施模型

过程视图过程视图– 包括在设计模型中包括在设计模型中分发视图分发视图

逻辑视图 实施实施视图

分发视图过程视图

使用案例视图

最终用户:功能性

系统工程师:拓扑结构、联系

程序员:软件开发管理

综合:性能、扩展性

Page 95: 构架模式、 UML 与组件设计

9595

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言通用建模语言组件设计过程组件设计过程– 三种设计角度三种设计角度– 概念性设计概念性设计– 逻辑性设计逻辑性设计– 物理性设计物理性设计– 综合设计综合设计

Page 96: 构架模式、 UML 与组件设计

9696

Microsoft Architect 2000

连续设计过程中的概念性设计连续设计过程中的概念性设计概念性设计 逻辑性设计应用场景 物理性设计

组件,用户接口,物理数据库服务和对象,用户接口,逻辑数据库

概念性设计的目标是用来确定商务需求概念性设计的目标是用来确定商务需求 , , 了解用户的工作和他们的需求了解用户的工作和他们的需求

Page 97: 构架模式、 UML 与组件设计

9797

Microsoft Architect 2000

概念性设计概念性设计定义定义– 获取问题和方案的商务视点和用户视点获取问题和方案的商务视点和用户视点 , , 加以加以文档化文档化 , , 并在验证其有效性后进行优化并在验证其有效性后进行优化目的目的– 获取并理解商务需要和用户需求获取并理解商务需要和用户需求输出输出– 一组用以记录系统现有状态和未来状态的信息一组用以记录系统现有状态和未来状态的信息模型和应用场景模型和应用场景

Page 98: 构架模式、 UML 与组件设计

9898

Microsoft Architect 2000

设计者的问题设计者的问题商务需要或者问题是什么?商务需要或者问题是什么?用户是谁?用户是谁?用户真正做什么?用户真正做什么?用户的需求是什么?用户的需求是什么?什么是现在已经存在的?什么是现在已经存在的?什么是最好的解决方案?什么是最好的解决方案?你如何知道你有了最好的解决方案?你如何知道你有了最好的解决方案?

Page 99: 构架模式、 UML 与组件设计

9999

Microsoft Architect 2000

澄清概念性设计澄清概念性设计概念性设计不是概念性设计不是

对用户接口的完整的对用户接口的完整的功能性详细描述功能性详细描述系统组件的定义系统组件的定义技术解决方案技术解决方案

但是使您能够但是使您能够开发部分功能性详细开发部分功能性详细描述描述设计有效的用户接口设计有效的用户接口了解事情如何协同工了解事情如何协同工作作设计商务问题的解决设计商务问题的解决方案方案

Page 100: 构架模式、 UML 与组件设计

100100

Microsoft Architect 2000

概念性设计期间团体中的角色概念性设计期间团体中的角色程序管理

开发

测试

后勤管理

用户教育

产品管理

阐明用户需求

把握整体的设计过程

依照项目使命文档来验证应用场景

识别基于应用场景的输出

考虑与场景相牵连的基础结构

在概念性设计中起主导作用

Page 101: 构架模式、 UML 与组件设计

101101

Microsoft Architect 2000

概念性设计的步骤概念性设计的步骤设计的范围设计的范围– 描述核心业务过程和范围, 包括业务功能元素描述核心业务过程和范围, 包括业务功能元素– 业务过程的详细描述业务过程的详细描述– 描述客户和用户描述客户和用户设计的结果设计的结果– 确定概念性设计的输入,包括适当的企业架构信确定概念性设计的输入,包括适当的企业架构信息,业务进程和活动,用户和用户原型息,业务进程和活动,用户和用户原型– 收集数据,包括商业和用户需求收集数据,包括商业和用户需求

Page 102: 构架模式、 UML 与组件设计

102102

Microsoft Architect 2000

概念性设计的步骤概念性设计的步骤分析的范围 :分析的范围 :– 详细回顾用户和商业研究详细回顾用户和商业研究– 建立关于内容,工作流以及任务次序的模型建立关于内容,工作流以及任务次序的模型

信息模型信息模型– 用户案例用户案例– 参与者在系统中通过对话产生的交互行为序列参与者在系统中通过对话产生的交互行为序列– 参与者可以为个人,小组,其他系统甚至设备。参与者是针对系统或业务参与者可以为个人,小组,其他系统甚至设备。参与者是针对系统或业务关系而定义的一组关系。关系而定义的一组关系。– 用户案例针对下列目标:用户案例针对下列目标:– 一个假定的关于参与者和对象的交互序列一个假定的关于参与者和对象的交互序列– 描述用户使用案例中某个实例的场景。这个场景显示了当前的状态以及一描述用户使用案例中某个实例的场景。这个场景显示了当前的状态以及一定时期内的变化定时期内的变化– 包括下面四种信息:上下文,工作流,任务序列,物理环境包括下面四种信息:上下文,工作流,任务序列,物理环境 ..

Page 103: 构架模式、 UML 与组件设计

103103

Microsoft Architect 2000

概念性设计概念性设计 :: 应用场景应用场景用叙述或图解的方式描述问题和解决方案,用叙述或图解的方式描述问题和解决方案,使得用户和项目团体成员能够直观地想象使得用户和项目团体成员能够直观地想象并勾画前景并勾画前景提供提供– 需求的上下文需求的上下文– 商务和用户的详细情况商务和用户的详细情况– 通用的观点和通用的词汇表通用的观点和通用的词汇表– 独立于物理实现的设计机会独立于物理实现的设计机会

Page 104: 构架模式、 UML 与组件设计

104104

Microsoft Architect 2000

概念性设计目标概念性设计目标基于从商务中和用户处获得的真实数据的基于从商务中和用户处获得的真实数据的设计设计对于产品连贯的、综合的描述对于产品连贯的、综合的描述有用的抽象层次或分类层次有用的抽象层次或分类层次商务、用户和项目团队中的展望商务、用户和项目团队中的展望设计中的团体意见设计中的团体意见与企业架构同步与企业架构同步团队交流的基础团队交流的基础

Page 105: 构架模式、 UML 与组件设计

105105

Microsoft Architect 2000

概念性设计的结果:使用案例概念性设计的结果:使用案例使用案例视图使用案例视图 ( “+1” ( “+1” 视图视图 ))– 使用案例模型使用案例模型

逻辑视图 实施实施视图

分发视图过程视图

使用案例视图

最终用户:功能性

系统工程师:拓扑结构、联系

程序员:软件开发管理

综合:性能、扩展性

Page 106: 构架模式、 UML 与组件设计

106106

Microsoft Architect 2000

FM StocksFM Stocks 概念性设计概念性设计FM StocksFM Stocks 的使用案例的使用案例BuyStock Use Case BuyStock Use Case Create Account Use CaseCreate Account Use Case

Page 107: 构架模式、 UML 与组件设计

107107

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言通用建模语言组件设计过程组件设计过程– 三种设计角度三种设计角度– 概念性设计概念性设计– 逻辑性设计逻辑性设计– 物理性设计物理性设计– 综合设计综合设计

Page 108: 构架模式、 UML 与组件设计

108108

Microsoft Architect 2000

连续设计过程中的逻辑性设计连续设计过程中的逻辑性设计逻辑性设计的目标是用以安排解决方案的逻辑性设计的目标是用以安排解决方案的组织形式以及其各个元素之间的通信组织形式以及其各个元素之间的通信

概念性设计 逻辑性设计应用场景 物理性设计

组件,用户接口,物理数据库服务和对象,用户接口,逻辑数据库

Page 109: 构架模式、 UML 与组件设计

109109

Microsoft Architect 2000

逻辑性设计逻辑性设计定义定义项目团队按照组织、结构、语法以及项目团队按照组织、结构、语法以及部件之间的交互关系部件之间的交互关系 , , 对解决方案进对解决方案进行描述的过程行描述的过程目的目的根据根据MSFMSF应用模型实施基于服务的组应用模型实施基于服务的组织原则并安排解决方案的结构和其部织原则并安排解决方案的结构和其部件间的关联件间的关联输出输出一组包含相应服务、属性和关联的对一组包含相应服务、属性和关联的对象集,高层次的用户接口设计以及逻象集,高层次的用户接口设计以及逻辑性数据库设计辑性数据库设计

逻辑性设计服务和对象,用户接口,逻辑数据库

Page 110: 构架模式、 UML 与组件设计

110110

Microsoft Architect 2000逻辑性设计期间团体中的角色逻辑性设计期间团体中的角色在逻辑性设计中起主导作用

确认逻辑性设计是有效的

为服务的改进和关联对象的鉴别提供帮助

解决方案实现的可行性评估

程序管理

开发

测试

后勤管理

用户教育

产品管理

阐明用户的性能目标和推荐的解决方案

保证设计能符合事务和用户的需求

Page 111: 构架模式、 UML 与组件设计

111111

Microsoft Architect 2000

组织方法组织方法逻辑系统层次逻辑系统层次 模块模块

房子厨房烹调食物洗盘子存放器具吃快餐 餐厅吃

餐具室储存食物

系统子系统

应用程序

Page 112: 构架模式、 UML 与组件设计

112112

Microsoft Architect 2000

逻辑设计的步骤逻辑设计的步骤分析过程分析过程 ::– 标识业务对象和服务标识业务对象和服务 ..– 标识属性和关系标识属性和关系 ..

合理化过程合理化过程 ::– 验证业务对象验证业务对象 ..– 验证隐含的业务对象和情境验证隐含的业务对象和情境 ..

Page 113: 构架模式、 UML 与组件设计

113113

Microsoft Architect 2000 描述模块描述模块服务服务–独立性能的单位独立性能的单位– 包括方法和功能包括方法和功能对象对象– 是数据和服务的封装是数据和服务的封装– 包括属性和方法包括属性和方法属性属性是重要的特性或者对象的值是重要的特性或者对象的值关联关联对象和服务的入口对象和服务的入口

服务 对象

关联

模块

Page 114: 构架模式、 UML 与组件设计

114114

Microsoft Architect 2000

逻辑性设计的价值逻辑性设计的价值管理复杂度管理复杂度设定边界并描述接口设定边界并描述接口 ,, 从而提供一个能使多个组从而提供一个能使多个组交互的组织结构交互的组织结构揭示概念性设计中的错误和矛盾之处揭示概念性设计中的错误和矛盾之处消除冗余并确定可能的重用消除冗余并确定可能的重用提供物理性设计的基础提供物理性设计的基础改进系统的部分运行方式改进系统的部分运行方式在项目团队成员中建立对于解决方案的通用观点在项目团队成员中建立对于解决方案的通用观点

Page 115: 构架模式、 UML 与组件设计

115115

Microsoft Architect 2000

逻辑性设计的结果逻辑性设计的结果逻辑视图逻辑视图– 设计模型设计模型过程视图过程视图– 包括在设计模型中包括在设计模型中

逻辑视图 实施实施视图

分发视图过程视图

使用案例视图

最终用户:功能性

系统工程师:拓扑结构、联系

程序员:软件开发管理

综合:性能、扩展性

Page 116: 构架模式、 UML 与组件设计

116116

Microsoft Architect 2000

FM StocksFM Stocks 的逻辑设计的逻辑设计通过使用案例文本定义类通过使用案例文本定义类子系统子系统顺序图与协作图顺序图与协作图状态图状态图

Page 117: 构架模式、 UML 与组件设计

117117

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言通用建模语言组件设计过程组件设计过程– 三种设计角度三种设计角度– 概念性设计概念性设计– 逻辑性设计逻辑性设计– 物理性设计物理性设计– 综合设计综合设计

Page 118: 构架模式、 UML 与组件设计

118118

Microsoft Architect 2000

连续设计过程中的物理性设计连续设计过程中的物理性设计物理性设计的目的是将现实世界中的技术约束,包括实现物理性设计的目的是将现实世界中的技术约束,包括实现和性能上的考虑,应用于逻辑性设计之上和性能上的考虑,应用于逻辑性设计之上。。

概念性设计 逻辑性设计应用场景 物理性设计

组件,用户接口,物理数据库服务和对象,用户接口,逻辑数据库

Page 119: 构架模式、 UML 与组件设计

119119

Microsoft Architect 2000

物理性设计物理性设计定义定义从开发团队角度描述解决方案的组件、从开发团队角度描述解决方案的组件、服务和技术的过程服务和技术的过程

目的目的将现实世界中的技术约束,包括实现和将现实世界中的技术约束,包括实现和性能上的考虑,应用于逻辑性设计之上性能上的考虑,应用于逻辑性设计之上

输出输出面向特定平台的组件、用户接口设计以面向特定平台的组件、用户接口设计以及物理数据库的设计及物理数据库的设计

物理性设计组件,用户接口,物理数据库

Page 120: 构架模式、 UML 与组件设计

120120

Microsoft Architect 2000

物理性设计期间团体中的角色物理性设计期间团体中的角色

评估和验证设计需求

把握整体的设计过程

评估及验证设计的功能性和项目使命的一致性

在物理性设计中起着主导作用

评估和验证设计的基础结构关联

管理用户的期望程序管理

开发

测试

后勤管理

用户教育

产品管理

Page 121: 构架模式、 UML 与组件设计

121121

Microsoft Architect 2000

物理性设计的步骤物理性设计的步骤研究研究– 现有基础设施现有基础设施 (infrastructure)(infrastructure) 的限制的限制– 解决方案的对基础设施的要求解决方案的对基础设施的要求– 处理要求与限制的冲突带来的风险处理要求与限制的冲突带来的风险分析分析– 选择用于实施解决方案的技术选择用于实施解决方案的技术– 初步建立部署草图初步建立部署草图 , , 包括对网络包括对网络 ,,数据和组件技术数据和组件技术合理化合理化– 决定包装和分布的策略和设计决定包装和分布的策略和设计– 将对象分配到以服务划分的组件中去将对象分配到以服务划分的组件中去– 将组件分配到网络节点上去,形成部署模型将组件分配到网络节点上去,形成部署模型– 使用策略和样板程序,优化部署模型使用策略和样板程序,优化部署模型

Page 122: 构架模式、 UML 与组件设计

122122

Microsoft Architect 2000

物理性设计的步骤物理性设计的步骤实施实施– 决定编程模型, 又称编程规范,编程标准决定编程模型, 又称编程规范,编程标准

主要考虑因素: 见下页主要考虑因素: 见下页– 具体规定组件的外部结构和界面具体规定组件的外部结构和界面

组件间的合同(组件间的合同( contract), contract), 获取服务的方式,组件提供的服务,获取服务的方式,组件提供的服务,组件包含的类的属性组件包含的类的属性考虑方面:考虑方面:

– 公布的接口将被认为是固定不变的公布的接口将被认为是固定不变的– 对已存在接口的修改应该被公布为新的组建或者新的接口对已存在接口的修改应该被公布为新的组建或者新的接口 ..– 公布属性的数据类型应该能够被客户的接口所支持具体规定组件公布属性的数据类型应该能够被客户的接口所支持具体规定组件的内部结构的内部结构考虑方面:编程语言和工具,提高重复使用率等考虑方面:编程语言和工具,提高重复使用率等

Page 123: 构架模式、 UML 与组件设计

123123

Microsoft Architect 2000

编程模型的各个方面编程模型的各个方面     编程模型的各个方面编程模型的各个方面– 实现技术实现技术– 有状态与无状态对象有状态与无状态对象– 进程内与进程外调用进程内与进程外调用– 连接与无连接模式连接与无连接模式– 同步与异步程序模式同步与异步程序模式– 线程模型线程模型– 错误处理错误处理– 安全安全– 分布式分布式

Page 124: 构架模式、 UML 与组件设计

124124

Microsoft Architect 2000

物理性设计的价值物理性设计的价值评估可供选择的实现评估可供选择的实现提供一个基于组件的灵活设计提供一个基于组件的灵活设计成为成本、计划和资源估算的基础成为成本、计划和资源估算的基础将解决方案映射成过程模型,用以设计过将解决方案映射成过程模型,用以设计过程中的里程碑或内部的发布程中的里程碑或内部的发布改进和修正具有风险的地方改进和修正具有风险的地方寻求与企业架构之间的兼容性寻求与企业架构之间的兼容性通过逻辑性设计使能够跟踪应用场景通过逻辑性设计使能够跟踪应用场景

Page 125: 构架模式、 UML 与组件设计

125125

Microsoft Architect 2000

FM StocksFM Stocks 的物理性设计的物理性设计实施视图实施视图– 实施模型实施模型分发视图分发视图

逻辑视图 实施实施视图

分发视图过程视图

使用案例视图

最终用户:功能性

系统工程师:拓扑结构、联系

程序员:软件开发管理

综合:性能、扩展性

Page 126: 构架模式、 UML 与组件设计

126126

Microsoft Architect 2000

FM StocksFM Stocks 的物理性设计的物理性设计组件设计组件设计分发设计分发设计

Page 127: 构架模式、 UML 与组件设计

127127

Microsoft Architect 2000

MSF MSF 设计原则设计原则理解商务理解商务解决商务问题并对产品和服务的分发提供解决商务问题并对产品和服务的分发提供支持支持有效地同用户及项目团队联系有效地同用户及项目团队联系基于模块化的设计基于模块化的设计在每次迭代中平衡创新和规范在每次迭代中平衡创新和规范与企业架构相结合与企业架构相结合

Page 128: 构架模式、 UML 与组件设计

128128

Microsoft Architect 2000

议程议程软件架构与模式软件架构与模式UML: UML: 通用建模语言通用建模语言组件设计过程组件设计过程– 三种设计角度三种设计角度– 概念性设计概念性设计– 逻辑性设计逻辑性设计– 物理性设计物理性设计– 综合设计综合设计

Page 129: 构架模式、 UML 与组件设计

129129

Microsoft Architect 2000

MSFMSF 设计的特性设计的特性综合的综合的迭代并改进的迭代并改进的可追踪的可追踪的高效的高效的

MSFMSF

Page 130: 构架模式、 UML 与组件设计

130130

Microsoft Architect 2000

综合性设计综合性设计统一观点并平衡需求统一观点并平衡需求考虑多种角度和用户考虑多种角度和用户– 概念性设计:用户;管理;商务概念性设计:用户;管理;商务– 概念性设计:团队概念性设计:团队– 物理性设计:开发者物理性设计:开发者

包括多种应用焦点和能力包括多种应用焦点和能力– 用户接口用户接口– 事务过程事务过程– 数据库数据库

Page 131: 构架模式、 UML 与组件设计

131131

Microsoft Architect 2000

经核准的预计 经核准的项目计划

逻辑性设计物理性设计

概念性设计

迭代并改进的设计迭代并改进的设计重复一个过程直到达到期望的结果重复一个过程直到达到期望的结果再访问设计的某一部分再访问设计的某一部分从每个角色的观点中获取额外的项目详细设计从每个角色的观点中获取额外的项目详细设计增量调整增量调整

Page 132: 构架模式、 UML 与组件设计

132132

Microsoft Architect 2000

可追踪的设计可追踪的设计提供满足需求的可见的证明提供满足需求的可见的证明在整个过程中跟踪设计在整个过程中跟踪设计– 商务预计和目标商务预计和目标– 需求需求– 范围 范围 vs. vs. 功能功能预先验证和连续验证预先验证和连续验证– 初步模型初步模型– 测试和验证测试和验证– 基于回馈的再设计基于回馈的再设计

Page 133: 构架模式、 UML 与组件设计

133133

Microsoft Architect 2000

高效的设计高效的设计使用产品的状态来评估项目使用产品的状态来评估项目基于商务和技术之间的协议,包括:基于商务和技术之间的协议,包括:– 什么是需要构建的什么是需要构建的– 是否拥有了足够的信息以启动开发阶段是否拥有了足够的信息以启动开发阶段而不是基于:而不是基于:– 文档的数量文档的数量– 会议的数量会议的数量

Page 134: 构架模式、 UML 与组件设计

134134

Microsoft Architect 2000

设计期间团体中的角色设计期间团体中的角色把握整体的设计过程

从用户角度评估和验证设计需求 依照项目的视角和范围来评估和验证设计的功能性和一致性

对商务需求提供技术解决方案

评估和验证设计的基础结构关联

管理客户的期望 程序管理

开发

测试

后勤管理

用户教育

产品管理

Page 135: 构架模式、 UML 与组件设计

135135

Microsoft Architect 2000

设计和设计和 MSFMSF 过程模型过程模型

经核准的项目计划

物理性设计基准

概念性设计逻辑性设计

物理性设计

经核准的预计

逻辑性设计基准

概念性设计基准

Page 136: 构架模式、 UML 与组件设计

136136

Microsoft Architect 2000

Summary

总结总结哪些是优秀设计的特性?哪些是优秀设计的特性?设计的三个角度是什么?每种角度可发布设计的三个角度是什么?每种角度可发布的内容是什么的内容是什么 ??如何使设计过程成为综合的?迭代并改进如何使设计过程成为综合的?迭代并改进的?可追踪的?高效的?的?可追踪的?高效的?