Hailstorm Press Event template

Download Report

Transcript Hailstorm Press Event template

可视化的软件架构设计
张炜
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
类图
search
searchresults
«uses»
«uses»
default
categories
«uses»
book
«uses»
使用 UML
用例(Use Case) 图

Customer Account
Management
用例通常用于:


对系统的前后
关联建模
对系统的需求
建模
Internet Customer
Purchase Books
Product Catalog
Search
使用 UML
构件(Component) 图

构件图通常用于:
 对源代码建模
 对可执行体的发布建模
 对物理数据库建模
 对可适应的系统建模
Web
SystemFramework
Business Facade
使用 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) 描述一个类的实例可以拥有的一组值
操作是一个服务的实现,该服务可以由类的任何对象请求以影响其行
为
Name
Categories
-dsCommand : SqlDataAdapter
Operations
+New()
+Dispose()
#Dispose(in disposing : Boolean)
+GetCategories(in categoryId : Integer) : CategoryData
-FillCategoryData(in commandText : String) : CategoryData
Attributes
使用 UML
依赖关系


依赖是一种使用关系,它说明一个事物规范的变化
可能影响到使用它的另一个事务,但反之则不然
在本例中, “Window” 类依赖于 “Event”类.
Window
+Open()
+Close()
+Move()
+Display()
+handleEvent()
Event
使用 UML
泛化(Generalization)/继承(Inheritance) 关系

泛化指把一般类连接到较为特殊的类,也称为超类/子类关
系或父类/子类关系
Web::PageBase
Web::PageBase
Web::PageBase
-UNHANDLED_EXCEPTION:::String
String==
="Unhandled?Exception:"
"Unhandled?Exception:"
-UNHANDLED_EXCEPTION
String
"Unhandled?Exception:"
-UNHANDLED_EXCEPTION
-KEY_CACHECART:::String
String==
="Cache:ShoppingCart:"
"Cache:ShoppingCart:"
-KEY_CACHECART
String
"Cache:ShoppingCart:"
-KEY_CACHECART
-KEY_CACHECUSTOMER:::String
String==
="Cache:Customer:"
"Cache:Customer:"
-KEY_CACHECUSTOMER
String
"Cache:Customer:"
-KEY_CACHECUSTOMER
-pageSecureUrlBase:::String
String
-pageSecureUrlBase
String
-pageSecureUrlBase
-pageUrlBase:::String
String
-pageUrlBase
String
-pageUrlBase
-urlSuffix:::String
String
-urlSuffix
String
-urlSuffix
+New()
+New()
+New()
+SecureUrlBase():::String
String
+SecureUrlBase()
String
+SecureUrlBase()
+UrlBase():::String
String
+UrlBase()
String
+UrlBase()
+Customer():::DataSet
DataSet
+Customer()
DataSet
+Customer()
+ShoppingCart(inforceCreate
forceCreate:::Boolean
Boolean==
=True)
True):::Cart
Cart
+ShoppingCart(in
forceCreate
Boolean
True)
Cart
+ShoppingCart(in
#OnError(inee
e:::EventArgs)
EventArgs)
#OnError(in
EventArgs)
#OnError(in
Web::Categories
Web::Categories
Web::Categories
Web::Book
Web::Book
Web::Book
-KEY_ID:::String
String==
="id"
"id"
-KEY_ID
String
"id"
-KEY_ID
-itemView:::DataView
DataView
-itemView
DataView
-itemView
#CategoryDesciptionLabel:::Label
Label
#CategoryDesciptionLabel
Label
#CategoryDesciptionLabel
#ModuleDailyPick:::DailyPickModule
DailyPickModule
#ModuleDailyPick
DailyPickModule
#ModuleDailyPick
-InitializeComponent()
-InitializeComponent()
-InitializeComponent()
-Page_Init(insender
sender:::Object,
Object,in
inee
e:::EventArgs)
EventArgs)
-Page_Init(in
sender
Object,
in
EventArgs)
-Page_Init(in
+ItemList():::DataView
DataView
+ItemList()
DataView
+ItemList()
-Categories_Load(insender
sender:::Object,
Object,in
inee
e:::EventArgs)
EventArgs)
-Categories_Load(in
sender
Object,
in
EventArgs)
-Categories_Load(in
-ReadQueryString(inoutid
id:::Integer)
Integer):::Boolean
Boolean
-ReadQueryString(inout
id
Integer)
Boolean
-ReadQueryString(inout
-KEY_ID:::String
String==
="id"
"id"
-KEY_ID
String
"id"
-KEY_ID
#FileSpecImage:::Image
Image
#FileSpecImage
Image
#FileSpecImage
#TitleLabel:::Label
Label
#TitleLabel
Label
#TitleLabel
#AuthorLable:::Label
Label
#AuthorLable
Label
#AuthorLable
#PublisherNameLabel:::Label
Label
#PublisherNameLabel
Label
#PublisherNameLabel
#IsbnLabel:::Label
Label
#IsbnLabel
Label
#IsbnLabel
#DescriptionLabel:::Label
Label
#DescriptionLabel
Label
#DescriptionLabel
#UnitPriceLabel:::Label
Label
#UnitPriceLabel
Label
#UnitPriceLabel
#AddToCartButton:::Button
Button
#AddToCartButton
Button
#AddToCartButton
-InitializeComponent()
-InitializeComponent()
-InitializeComponent()
#Page_Init(inSender
Sender:::Object,
Object,in
inee
e:::EventArgs)
EventArgs)
#Page_Init(in
Sender
Object,
in
EventArgs)
#Page_Init(in
-Book_Load(inSender
Sender:::Object,
Object,in
inee
e:::EventArgs)
EventArgs)
-Book_Load(in
Sender
Object,
in
EventArgs)
-Book_Load(in
-AddToCartButton_Click(insender
sender:::Object,
Object,in
inee
e:::EventArgs)
EventArgs)
-AddToCartButton_Click(in
sender
Object,
in
EventArgs)
-AddToCartButton_Click(in
-ReadQueryString(inoutId
Id:::Integer)
Integer):::Boolean
Boolean
-ReadQueryString(inout
Id
Integer)
Boolean
-ReadQueryString(inout
使用 UML
关联(Association)关系


是一种结构关系,它
指明一个事物的对象
与另一个事务的对象
间的联系
关联可以有
 名称
 角色
 多重性
Person
Company
Works For
Name
Person
Employee
Employer
Company
Role
Person
Employee
1*
Employer
*
Role w/Multiplicity
Company
使用 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 企业版开
发环境中




指定路径和文件名
会创建新的 Visio 模型


Project | Visio UML | Reverse Engineer
Visio UML Add-in toolbar button
可以马上在图中使用这些类
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