Visual Studio 2010 建模学习(五) - UML那点事儿(转)

 题外话:今天是2009到10赛季CBA的首场揭幕战-上海吉玛斯vs浙江广厦,由于姚明是上海队的大老板并且出席这场比赛,所以比赛被炒得格外火爆,门票5个小时就全部卖出了。支持中国篮球,俺也从第二节开始坐在电视机前观看比赛,比赛还是很精彩的,一直到加时赛的最后一分钟才决出胜负,虽然上海憾负,但相对于上赛季的屡战屡败,这次进步还是十分明显的。比赛虽然很精彩,可转播实在让人无奈,屏幕上除了显示了双方比分,再没有其他任何信息,特别是没有每节的剩余时间和每次进攻的剩余时间信息,让人无语......汗!在此之前,下午去看了张艺谋的《三枪拍案惊奇》,整体感觉是:实在是没啥意思,论幽默还是要看冯小刚的!期待明年一月上映的《Avatar》。

      在上篇博客中简单介绍了Visual Studio 2010对5种符合UML2.1.2规范的UML图的支持,本篇博客将介绍一些它们在具体使用中的细节内容。

模型工程

       Visual Studio 2010中新引入了一个称为“Modeling Project”的工程模板,通过这个工程模板可以常见模型工程,在模型工程中再创建UML图。也就是说,UML类图、活动图、用例图、组件图只能在模型工程才能创建,而在其它工程中是没有的。在这里,顺序图比较特殊一些,因为它除了可以存在于模型工程中,也可以在C#/VB.NET工程中创建。

image     

      创建模型工程后,在Solution Explorer下你会发现有一个默认创建的文件夹"ModelDefinition",它下面的*.uml文件是建模工具自动添加和维护的,不需要用户任何手工干预。它们存储了UML图背后所对应的模型关系定义,应该说它们是整个模型工程的核心,如果这些文件损坏或者缺失了,那么模型也就很有可能不能正确工作了。.uml文件和模型中Package对象是一一对应的,在你刚创建好一个新的模型工程后,会有一个默认ModelDefinition.uml文件文件被创建,它对应了整个模型的根Package,更直观地讲也就是"UML Model Explorer"窗口中的根节点。接下来,当你在模型中创建任何一个新的Package对象时(可以在UML Model Explorer右键点击在菜单中选择Add -> Package,或者创建一个UML Class Diagram图,然后在图上添加),就会对应生成一个.uml文件。这里实际上是有一个小的设计缺陷,.uml文件只会被自动增加而不会被自动删除,例如:创建一个Package对象会自动增加一个Package_***.uml,在选择从''Delete from Model"删除这个Package对象后,Package_***.uml仍然存在那里。

UML模型浏览器

      在创建好一个UML图后,我们可以通过从工具箱中拖拽的方式或者右键菜单,直接在图上添加各种UML图的元素,例如:在类图上我们可以添加类、接口、包等内容,这些内容都会被加入到模型关系定义中。UML模型浏览器展示了你所创建的UML图及其上面的元素的真正模型定义关系,如下图所示: image      也可以不用创建任何的图(注意:这里的图是指类图、用例图和组件图,对于活动图和顺序图仍需要通过图来创建其上的元素),直接在UML模型浏览器中创建各种元素,定义模型关系,然后可以通过拖拽的方式把UML模型浏览器中内容拖拽到UML图上。UML模型浏览器是对模型关系的“最忠实的”展示,而图仅是对模型的一个展示的逻辑视角或者说是逻辑窗口。举个例子来说,当你在图上选择中一个元素(如:一个类),然后按删除键来删除这它,实际上这只是将它从图上删除了,并没有正真从模型中删除,打开UML模型浏览器你任然能够找到它,还可以再把它拖拽回图上。图上有两种删除方式:Remove From Diagram和Delete From Model,右键点击任何一个图上元素,你就会看到这两个选项,前者就是刚才所介绍的操作,而后者则是直接从模型中直接删除。

反向工程生成顺序图

      顺序图是由代码到模型(Code First)的一种重要功能,它可以直接由代码(仅限于C#和VB.NET)生成顺序图,你可以用它了写文档或者理解已有的代码。使用的方法很简单,在Visual Studio中打开你的C#/VB.NET工程,找到你所关心的函数定义,点击右键选择"Generate Sequence Diagram...",这是会弹出下面的对话框,让你对要生成的顺序图做简单的配置,比如说:顺序图所要显示对象的最大调用深度(Maximum call depth)等。image

      然后点击“OK”确认,工具就会开始生成顺序图,如下图是为PetShop工程中PetShop.OrderProcessor.ProcessOrders()方法所生成的顺序图,采用的是默认生成配置。Scott Guthrie在他的一个演示中展示了Sequence的反向工程功能,参见Channel 9的录像 《Visual Studio 2010 and .NET Framework 4.0 for web develpers Part 1 of 2》,大概在15分钟左右。

image      Visual Studio 2010中有个显示界面方面的改进,每个窗口(代码窗口或者设计器窗口等)可以独立显示在Visual Studio主窗口之外,可以全屏显示,如果你有双屏或者多屏,它们可以分别显示在不同屏幕上,这还是很方便的,呵呵!

      好了,今天就先写这些吧!对了提醒大家,本来Visual Studio 2010 Beta 2之后就直接是明年3月正式发布的RTM版本了,但昨天看到微软开发工具部门的掌门人Soma在他的博客上宣布,将会在Beta2增加一个RC-Release Candidate版本,以更好的倾听用户对Visual Studio 2010的反馈,以及对反馈意见进行修改,特别是要着重解决性能方面问题。最终的版本的发布日期仍然是在明年3月份,但比以前公布的时期晚了两周。我想着对用户是件好事,能有个性能更好的、Bug更少的Visual Studio 2010 远比多等两周更重要,呵呵!

posted @ 2011-01-13 23:30  董雨  阅读(545)  评论(0编辑  收藏  举报