可视化的软件架构设计张炜
Technical Evangelist
Microsoft
议程
建模
使用 UML
生成代码
对代码进行反向工程
生成报表课程准备
有一定桌面或者 Web应用的开发经验
有一定使用 Visual C#?,
Visual C++?,Visual Basic?,
or Visual Basic,NET的经验难度:中议程
建模
使用 UML
生成代码
对代码进行反向工程
生成报表建模为什么要用模型?
在创建系统之前,可以更好的理解潜在的一些风险
模型可以让我们描述系统的结构和行为,
并且利用它和同事沟通
模型提供了指导我们创建系统的模板,我们还可以利用它为使用系统的人提供帮助
模型还描述了我们所做的决策建模企业架构功能
UML 软件建模
完全支持 UML 1.2 建模规范
对现有的代码进行 UML反向工程
生成可订制的 Visual Basic,C++ 和 C# 代码框架
自动检查语义错误
可定制的 UML 报表议程
建模
使用 UML
生成代码
对代码进行反向工程
生成报表使用 UML
UML 的定义
UML 是一种这样的语言,
可视化
功能规范
系统构造
文档化
使用 UML 让你用一种标准的方法来设计软件
UML 是一种开放式标准使用 UML
图表类型
结构化图表 (静态 )
类 (Class)图 (静态结构 )
构件 (Component)

实施 (Deployment)

行为图表 (动态 )
用例 (Use case)图
顺序 (Sequence)

协作
(Collaboration)图
状态 (Statechart)

活动 (Activity)图使用 UML
类图
usesuses?
uses?
uses?
default categories book
searchresultssearch
使用 UML
用例 (Use Case) 图
用例通常用于,
对系统的前后关联建模
对系统的需求建模 Internet Customer
Customer Account
Management
Purchase Books
Product Catalog
Search
使用 UML
构件 (Component) 图
构件图通常用于,
对源代码建模
对可执行体的发布建模
对物理数据库建模
对可适应的系统建模
Web
Business Facade
SystemFramework
使用 UML
实施 (Deployment)图
实施图通常用于,
对嵌入式系统建模
对客户 /服务器系统建模
对完全分布式系统建模
DataAccess
Database Server
Database
使用 UML
顺序 (Sequence) 图
顺序图通常用于,
按照时间顺序对控制流建模
,Web::book,BusinessFacade::ProductSystem,DataAccess::Books
GetBooksByISBN()
GetBooksByAuthor()
GetBooksByNaturalLanguage()
GetBooksBySubject()
GetBooksByTitle()
GetBookById()
使用 UML
其他类型图表
协作 (Collaboration)图通常用于,
按照组织对控制流建模
状态 (State chart) 图通常用于,
对反应型对象建模
活动 (Activity)图通常用于,
对工作流建模
对操作建模使用 UML
构造块 (Building Blocks)
元素
一个模型中最基本的构造块
关系
事物之间的联系

一组元素的图形表示使用 UML

每个类都必须有一个名字,以同其它类区分,
可能包含路径的名称,用以表示该类存在的地方
Business rules::Customer
(“Customer” 类存在于,Business rules” 包中,)
属性 (Attributes) 描述一个类的实例可以拥有的一组值
操作是一个服务的实现,该服务可以由类的任何对象请求以影响其行为
+ N e w ( )
+ D i s p o s e ( )
# D i s p o s e ( i n d i s p o s i n g,B o o l e a n )
+ G e t C a t e g o r i e s ( i n c a t e g o r y I d,I n t e g e r ),C a t e g o r y D a t a
- F i l l C a t e g o r y D a t a ( i n c o m m a n d T e x t,S t r i n g ),C a t e g o r y D a t a
- d s C o m m a n d,S q l D a t a A d a p t e r
C a t e g o r i e sName
Attributes
Operations
使用 UML
依赖关系
依赖是一种使用关系,它说明一个事物规范的变化可能影响到使用它的另一个事务,但反之则不然
在本例中,“Window” 类依赖于,Event”类,
Window
+Open()
+Close()
+Move()
+Display()
+handleEvent()
Event
使用 UML
泛化 (Generalization)/继承 (Inheritance) 关系
泛化指把一般类连接到较为特殊的类,也称为超类 /子类关系或父类 /子类关系
+ N e w ( )
+ S e c u r e U r l B a s e ( ),S t r i n g
+ U r l B a s e ( ),S t r i n g
+ C u s t o m e r ( ),D a t a S e t
+ S h o p p i n g C a r t ( i n f o r c e C r e a t e,B o o l e a n = T r u e ),C a r t
# O n E r r o r ( i n e,E v e n t A r g s )
- U N H A N D L E D _ E X C E P T I O N,S t r i n g = " U n h a n d l e d? E x c e p t i o n,"
- K E Y _ C A C H E C A R T,S t r i n g = " C a c h e,S h o p p i n g C a r t,"
- K E Y _ C A C H E C U S T O M E R,S t r i n g = " C a c h e,C u s t o m e r,"
- p a g e S e c u r e U r l B a s e,S t r i n g
- p a g e U r l B a s e,S t r i n g
- u r l S u f f i x,S t r i n g
W e b,,P a g e B a s e
- I n i t i a l i z e C o m p o n e n t ( )
- P a g e _ I n i t ( i n s e n d e r,O b j e c t,i n e,E v e n t A r g s )
+ I t e m L i s t ( ),D a t a V i e w
- C a t e g o r i e s _ L o a d ( i n s e n d e r,O b j e c t,i n e,E v e n t A r g s )
- R e a d Q u e r y S t r i n g ( i n o u t i d,I n t e g e r ),B o o l e a n
- K E Y _ I D,S t r i n g = " i d "
- i t e m V i e w,D a t a V i e w
# C a t e g o r y D e s c i p t i o n L a b e l,L a b e l
# M o d u l e D a i l y P i c k,D a i l y P i c k M o d u l e
W e b,,C a t e g o r i e s
- I n i t i a l i z e C o m p o n e n t ( )
# P a g e _ I n i t ( i n S e n d e r,O b j e c t,i n e,E v e n t A r g s )
- B o o k _ L o a d ( i n S e n d e r,O b j e c t,i n e,E v e n t A r g s )
- A d d T o C a r t B u t t o n _ C l i c k ( i n s e n d e r,O b j e c t,i n e,E v e n t A r g s )
- R e a d Q u e r y S t r i n g ( i n o u t I d,I n t e g e r ),B o o l e a n
- K E Y _ I D,S t r i n g = " i d "
# F i l e S p e c I m a g e,I m a g e
# T i t l e L a b e l,L a b e l
# A u t h o r L a b l e,L a b e l
# P u b l i s h e r N a m e L a b e l,L a b e l
# I s b n L a b e l,L a b e l
# D e s c r i p t i o n L a b e l,L a b e l
# U n i t P r i c e L a b e l,L a b e l
# A d d T o C a r t B u t t o n,B u t t o n
W e b,,B o o k
+ N e w ( )
+ S e c u r e U r l B a s e ( ),S t r i n g
+ U r l B a s e ( ),S t r i n g
+ C u s t o m e r ( ),D a t a S e t
+ S h o p p i n g C a r t ( i n f o r c e C r e a t e,B o o l e a n = T r u e ),C a r t
# O n E r r o r ( i n e,E v e n t A r g s )
- U N H A N D L E D _ E X C E P T I O N,S t r i n g = " U n h a n d l e d? E x c e p t i o n,"
- K E Y _ C A C H E C A R T,S t r i n g = " C a c h e,S h o p p i n g C a r t,"
- K E Y _ C A C H E C U S T O M E R,S t r i n g = " C a c h e,C u s t o m e r,"
- p a g e S e c u r e U r l B a s e,S t r i n g
- p a g e U r l B a s e,S t r i n g
- u r l S u f f i x,S t r i n g
W e b,,P a g e B a s e
- I n i t i a l i z e C o m p o n e n t ( )
- P a g e _ I n i t ( i n s e n d e r,O b j e c t,i n e,E v e n t A r g s )
+ I t e m L i s t ( ),D a t a V i e w
- C a t e g o r i e s _ L o a d ( i n s e n d e r,O b j e c t,i n e,E v e n t A r g s )
- R e a d Q u e r y S t r i n g ( i n o u t i d,I n t e g e r ),B o o l e a n
- K E Y _ I D,S t r i n g = " i d "
- i t e m V i e w,D a t a V i e w
# C a t e g o r y D e s c i p t i o n L a b e l,L a b e l
# M o d u l e D a i l y P i c k,D a i l y P i c k M o d u l e
W e b,,C a t e g o r i e s
- I n i t i a l i z e C o m p o n e n t ( )
# P a g e _ I n i t ( i n S e n d e r,O b j e c t,i n e,E v e n t A r g s )
- B o o k _ L o a d ( i n S e n d e r,O b j e c t,i n e,E v e n t A r g s )
- A d d T o C a r t B u t t o n _ C l i c k ( i n s e n d e r,O b j e c t,i n e,E v e n t A r g s )
- R e a d Q u e r y S t r i n g ( i n o u t I d,I n t e g e r ),B o o l e a n
- K E Y _ I D,S t r i n g = " i d "
# F i l e S p e c I m a g e,I m a g e
# T i t l e L a b e l,L a b e l
# A u t h o r L a b l e,L a b e l
# P u b l i s h e r N a m e L a b e l,L a b e l
# I s b n L a b e l,L a b e l
# D e s c r i p t i o n L a b e l,L a b e l
# U n i t P r i c e L a b e l,L a b e l
# A d d T o C a r t B u t t o n,B u t t o n
W e b,,B o o k
+ N e w ( )
+ S e c u r e U r l B a s e ( ),S t r i n g
+ U r l B a s e ( ),S t r i n g
+ C u s t o m e r ( ),D a t a S e t
+ S h o p p i n g C a r t ( i n f o r c e C r e a t e,B o o l e a n = T r u e ),C a r t
# O n E r r o r ( i n e,E v e n t A r g s )
- U N H A N D L E D _ E X C E P T I O N,S t r i n g = " U n h a n d l e d? E x c e p t i o n,"
- K E Y _ C A C H E C A R T,S t r i n g = " C a c h e,S h o p p i n g C a r t,"
- K E Y _ C A C H E C U S T O M E R,S t r i n g = " C a c h e,C u s t o m e r,"
- p a g e S e c u r e U r l B a s e,S t r i n g
- p a g e U r l B a s e,S t r i n g
- u r l S u f f i x,S t r i n g
W e b,,P a g e B a s e
- I n i t i a l i z e C o m p o n e n t ( )
- P a g e _ I n i t ( i n s e n d e r,O b j e c t,i n e,E v e n t A r g s )
+ I t e m L i s t ( ),D a t a V i e w
- C a t e g o r i e s _ L o a d ( i n s e n d e r,O b j e c t,i n e,E v e n t A r g s )
- R e a d Q u e r y S t r i n g ( i n o u t i d,I n t e g e r ),B o o l e a n
- K E Y _ I D,S t r i n g = " i d "
- i t e m V i e w,D a t a V i e w
# C a t e g o r y D e s c i p t i o n L a b e l,L a b e l
# M o d u l e D a i l y P i c k,D a i l y P i c k M o d u l e
W e b,,C a t e g o r i e s
- I n i t i a l i z e C o m p o n e n t ( )
# P a g e _ I n i t ( i n S e n d e r,O b j e c t,i n e,E v e n t A r g s )
- B o o k _ L o a d ( i n S e n d e r,O b j e c t,i n e,E v e n t A r g s )
- A d d T o C a r t B u t t o n _ C l i c k ( i n s e n d e r,O b j e c t,i n e,E v e n t A r g s )
- R e a d Q u e r y S t r i n g ( i n o u t I d,I n t e g e r ),B o o l e a n
- K E Y _ I D,S t r i n g = " i d "
# F i l e S p e c I m a g e,I m a g e
# T i t l e L a b e l,L a b e l
# A u t h o r L a b l e,L a b e l
# P u b l i s h e r N a m e L a b e l,L a b e l
# I s b n L a b e l,L a b e l
# D e s c r i p t i o n L a b e l,L a b e l
# U n i t P r i c e L a b e l,L a b e l
# A d d T o C a r t B u t t o n,B u t t o n
W e b,,B o o k
使用 UML
关联 (Association)关系
是一种结构关系,它指明一个事物的对象与另一个事务的对象间的联系
关联可以有
名称
角色
多重性
Person CompanyWorks For
Name
Person CompanyEmployee Employer
Role
Person CompanyEmployee Employer
Role w/Multiplicity
1 * *
使用 UML
演示 #1
议程
建模
使用 UML
生成代码
对代码进行反向工程
生成报表生成代码
企业架构版可以,
对某个类生成代码
将生成的代码作为新项目的一部分
Windows? Forms,ASP,NET,Class Library,Web
Service,etc.
用一种特定的语言生成代码,
C#
C++
Visual Basic,NET
使用代码模板生成代码生成代码操作
操作可以生成为,
属性 (Property )
过程 (Procedure )
事件 (Event )
构造函数或者淅构函数
可以为每个生成的类文件指定路径
预览选项可以让你查看将要生成的代码
用于类 Classes,属性 Attributes,操作
Operations,等的代码模板生成代码错误检查
UML 图会检查下述两种类型的错误,
语义
代码
语义错误包括图表相关遗漏和未完成的信息
代码错误包括能够导致代码编译失败的错误生成代码演示 #2
议程
建模
使用 UML
生成代码
对代码进行反向工程
生成报表反向工程
集成到了 Visual Studio?,NET 企业版开发环境中
Project | Visio UML | Reverse Engineer
Visio UML Add-in toolbar button
指定路径和文件名
会创建新的 Visio 模型
可以马上在图中使用这些类
Visio 图被加入到解决方案中反向工程演示 #3
议程
建模
使用 UML
生成代码
对代码进行反向工程
生成报表生成报表
UML | Reports 菜单
可以生成各种不同的,丰富的报表
静态结构
状态图
构件
实施
活动
报表是可以定制的生成报表报表内容
可以指定报表的范围
可以基于,
活动图
整个 UML 模型
指定对象种类以包括
每个报表都有它自己的类别
每个种类都有它自己的详细级别
可以为每个新的模型,包,构件选择定制的分隔符
UML 报表可订制生成报表其它报表选项
从 UML 报表窗口,可以,
打印
标准打印选项
预览
导出
指定文件名称和位置
RTF 格式生成报表导出到 Web
将 UML 图表存储为 web 页
HTML 帧格式
方便的浏览多个图表
可以将图表嵌入到现有的框架中
添加导航条
显示公司信息,标志
使用模板来保证一致性
很容易的将信息发布到 Intranet
生成报表演示 #4
总结
建模
使用 UML
生成代码
对代码进行反向工程
生成报表
MSDN
开发员最好的和必备的资源站在微软技术最前沿!
为开发者创建的网络
提供一年 12期的光盘资料
分三个级别
开发库 —最新的开发文档,示例代码
专业版 —开发库 +全部微软操作系统 +SDK+DDK
宇宙版 —专业版 +其他所有微软产品
目的,
为开发人员提供最先进的技术资料,产品,并提供相互帮助的机会调用 WEB服务,获得酷鼠滑板
用任何语言创建一个任何类型的程序
添加一个 Web引用
设置好各项参数( CdKey,sName,… )然后调用 Register()
请访问
http://www.microsoft.com/china/
events/2001/msdn.asp
获得详细信息参与世界大赛,总奖金
$400000美元
编写一个 Web服务的应用,并注册到 UDDI
服务器
一个小建议:可以对现有站点包装
www.eraserver.com可以免费 host你的服务请访问
http://www.gotdotnet.com/
wscontest/
获得详细信息
Questions And Answers