代码改变世界

Visual Studio 2010中的UML

2010-12-16 22:35  Rollen Holt  阅读(3399)  评论(1编辑  收藏  举报

 

Visual Studio越来越丰满了,Visual Studio 2010没有MSDN,没有汉化包就2.18G了,可能有很多.net的程序员或初学人员在抱怨,这么大,都有什么用呀?我在刚学习.net的时候也有这样的问题,慢慢的随着我学习的深入,我越来越明白,其实Visual Studio之所以大,是因为其用处非常多,有非常多的工具集成在这里。其实微软也在着力把与开发相关的工具尽量往.net平台上集中。现在,广泛用作构架的UML,也出现在VS2010中。
VS中出现UML是最受构架师们欢迎的,因为他们和开发人员的工具得到了统一(对于VS2010中的UML,是有自己特点的,不是与其他工具中的UML完全重合)。现在,就让我们走近VS2010 中的UML。
现在来新建一个Project,选择“Modeling Projects”,名称为MyModelingProject,解决方案管理器如下图,http://img1.51cto.com/attachment/201004/201004261272264349125.jpg
 
在解决方案管理器中,会看到两部分,一部分是引用的文件夹“LayerReferences”另一部分是ModelDefinition,其中有一个扩展名为UML的文件,这个文件是存放项目所有图型的元素的层次关系(是层次关系,不是图形中元素间相互关系),这个文件在IDE中是打不开的,它其实是一个XML存储方式。说到XML,微软在一系列新产品中都用到了它,WPF中的XAML语言本质上就是XML,在ADO.NET Entity Frameworkr的配置中,也大量用到XML。VS 2010的Modeling Projects中又用到了,并且完全用XML来存储图和图之间的关系(下面还会看到使用XML),所以说XML是一种非常强大的标记语言,微软确实在应用XML上下了一翻功夫。同时在这个UML中还提供了几个预定义的类型,在<primitiveType>节点中,这些类型是在做类图的类成员——属性,方法时的参数或返回值用。
在项目中添加一个用例图,如下所示:http://img1.51cto.com/attachment/201004/201004261272264423515.jpg
添加完后在解决方案管理器上多了一个文件扩展名为usecasediagram的文件,并且这个文件有下一级,扩展名为layout,其实usecasediagram对应着图形界面,它本质上也是一个XML文件,只不过在IDE中解释时就解释成了图形,而layout是图形界面中各个元素的布局。
下面,就列个表,说明一下uml,usecasediagram,layout三个文件的关系:
(不同的类,图形的扩展名是不一样的,用例图的是usecasediagram)

 

 
UML
Usecasediagram
Layout
级别
项目级别,只有一个
项目项级别,可以有多个
与usecasediagram 成对出现,是对usecasediagram的完善
内容
项目,项目图文件,文件中的元素
元素,元素间的关系
元素间的布局
共同点
包含元素或元素关系节点

 

在VS 2010下,是与其他工具中画出的UML图是不同的,这里是通过Mark的方式来标记图形,而不是用一个图形来表示一类事物。这样做的好处是可以方便重用,扩展,分发等。
为了我们更容易的了解下面的知识,在项目中添加一个类图,放一个接口和一个类,类继承接口。
在VS2010中又增加了一个浏览窗体“UML Model Explorer”,它是展示所有的图中的元素,这里的元素是不区分在那个图中,是何种图。如下图所示:http://img1.51cto.com/attachment/201004/201004261272264468437.jpg
可以看到用例图的元素与类图的元素都在UML Model Explorer中显示了出来,并且也区分不出他们分别属于那个图中。(希望正式版本中能很好的区别开这些元素属于那些图中)
关于其他的图,与用例图和类图的结构层次是相似的。都有主文件和布局文件。
其实在VS2010这个IDE中去画UML图,还是与其他工具(Rose,Visio)有很大不同的,这种不同不是在UML本身语法和语义上的不同,而是在使用上的不同,毕竟在IDE中,与开发更近一步,并且与开发工具是集成在一起的,在一定程序减小了架构和开发人员间的交流。还有一点是VS 2010中的UML的特点,系统集成了很多约束。比如类只能继承接口,接口不可以继承类,还有接口中的成员必须是public,不可更改的等。
其实对于VS 2010的UML真正的价值,还有待架构和开发人员来给出一个真的评价。