可视化的软件架构设计张炜
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