VS2010建模概述
VS 2010在软件应用生命周期管理(ALM)中,在架构方面则是通过新的架构浏览器(Architecture Explorer)和架构层图(Architecture Layer Diagram),以图形化的方式描述系统架构,从而使得项目中的技术人员或非技术人员都能以模型透过图形化的方式进行协作,以及定义企业与系统功能。另外,VSTS 2010也同时支持统一建模语言(UML,Unified Modeling Language)及特定领域语言(DSL,Domain Specific Language),架构设计人员在VS2010中可以进行架构与建模设计,从而摆脱了传统使用非VS架构设计工具,使得设计师可以更有效率的进行.Net架构设计工作。
微软在最初的时候,项目中的技术人员使用一些单独的开发工具进行软件开发,例如架构师使用Rose进行架构设计,开发人员则使用Visual Studio进行编码。同时,项目中的非技术人员则使用一些通用的项目管理工具进行项目管理,例如项目经理使用Project,Excel等制定项目计划,进行任务划分和分配等。所以,在VS2010中的各个功能之间,彼此相互关联和互通也大大增强。
我们可以通过VS2010架构泳道(swim-lane)图,来对VS2010建模过程功能应用更直观的了解。如图1所示。
在架构建模设计过程中,同样遵循ALM的过程定义(理解代码、域理解、控制维护、扩展性等)。我们可以根据产品所针对的问题,将通过上图中的4个主题的方式来分析VS2010建模功能过程。例如,“理解代码”描述如何利用VS2010中的代码分析和可视化技术帮助用户分析理解已有的系统。最终,用户可以利用这些技术在已有的代码库基础上帮助客户实现最新的功能需求。
VS2010架构分析工具
VS 2010全新的架构工具可以让我们了解应用程序和功能设计,并帮助验证设计与执行过程中不偏离开发目的。它除了支持一般系统分析设计流程(需求—>实体)外,也支持另一类的流程——逆向工程 (Reverse Engineering)。
通过逆向工程可以理解应用程序之间的部分是重要的依赖,以确定可能会出现问题。此外,直观图可以帮助我们找到最佳地方来执行新的功能。DGML文件可以使解决方案产生的依赖矩阵和布局,每个视图可以在项目结构中提供一个不同的视图。如图2所示。
通过高级的视图功能可以来分析模型的整体结构。在一个区域中,可以根据需要修改15分钟到一个小时之间的变化差异的依赖关系,也可以放大局部类之间的关系图。
VS2010逆向工程类型可分为静态与动态,静态指的是整个程序代码的静态结构,如组件或类别间的关系;动态则是程序代码执行的顺序,如某个程序代码区段相关方法调用与响应顺序。
静态逆向工程(Static Reverse Engineering)
VS2010提供针对不同功能层面的分析工具来辅助程序代码进行逆向工程。Layer Diagram可从高阶面来看架构;Architecture Explorer能从特定点切入,只探索我们所关心的部分;.net Class Diagram则可分析详细部分的Class结构。静态的逆向工程,主要有三个工具:Architecture Explorer、Layer Diagram和Class Diagram。Layer Diagram可以让我们以高层角度来分析整个软件结构,细腻程度可以自由选择,从项目、Namespace、Classs、到方法都可以。
动态逆向工程(Dynamic Reverse Engineering)
在以前程序开发等人员,当分析程序代码完全没头绪时,需要从程序代码中直接理解程序流程,这是一件困难且很痛苦的事。 VS2010新增架构工具支持动态逆向工程,主要有两个工具:依赖图(Dependency Graph)和Sequence Diagram(时序图),使用这两个工具会大大增强代码分析的效率。依赖图可以协助理解程序代码的结构与关系,可以透过架构浏览器(Architecture Explore)来生成依赖图。顺序图是用来表达程序流程的图像工具,VS2010也用于对象导入系统设计,可以手工直接绘制Sequence Diagram功能,也能通过逆向工程依选择代码段自动生成图形。如图3所示。
VSTS 2010模型浏览器
在实际的项目开发实践中,大多数情况下都是在已有代码的基础上构建新的系统。在这种情况下,架构师或者开发人员遇到的一个典型的问题是:没有好的工具可以帮助他们很好的理解现有代码的架构,从而很难有效地在现有代码的基础上,添加新的功能以满足新的需求。为了解决这个问题,VSTS 2010提供了新的两个重要的建模工具:UML模型浏览器(UML Model Explorer)和架构浏览器(Architecture Explorer)。新的模型浏览器可以让架构师为已有代码创建完整的架构图,并且能够理解原有系统的各个组件是怎样协作在一起的。这将为架构师决定如何设计、使用、复用或者是否放弃现有代码,提供了非常有价值参考信息。
UML模型浏览器(UML Model Explorer)
在VSTS 2010 Architecture和Ultimate版本中,新增加了一个新的工具窗(UML Model Explorer)来帮助用户理解和使用所创建的UML模型。它是一个树状结构的WPF组件,用来展示UML模型中的层次结构。在这里,模型是指所创建Modeling Project(工程模板)中的内容。通过这个工程模板可以创建模型工程,在模型工程中再创建UML图。也就是说UML类图、活动图、用例图、组件图,只能在模型工程中才能创建,并且可以按照模型架构进行设计与创建层次。
Modeling Project是模型数据、图表文件和其他用户想要存储的资源(比如Excel、Word文档)的容器。用户可以在任何新建的或者已有的解决方案中添加该工程,在解决方案中同样支持不同程序工程(C#、VB、Web等等)。模型工程Modeling Project同样也支持版本控制。一般来说,UML Model Explorer中的根节点用来表示Modeling Project本身。如图4所示。
创建模型工程后,在Solution Explorer下有一个默认创建的文件夹“ModelDefinition”下面的*.uml文件是建模工具自动添加和维护,不需要用户任何手工干预。它们存储了UML图内部所对应的模型关系定义,这是整个模型工程的核心。uml文件和模型中Package对象是一一对应的,当创建好一个新的模型工程后,会有一个默认ModelDefinition.uml文件被创建,它对应了整个模型的根Package,也就是“UML Model Explorer”窗口中的根节点。
架构浏览器(Architecture Explorer)
在Visual Studio 2010中,提供了构架浏览器(Architecture Explorer)工具来辅助广大开发人员来分析和理解已有代码或者编译好的.Net Assembly。它能够以Class View、Solution View和 File System的方式来浏览已有的系统代码。Class View和Solution View支持对Visual C#和Visual Basic.Net工程的浏览,而File System -> Select Files方式则可以用来浏览任何基于.Net的编译好的Assembly文件的内容,类似Reflection反编译工具的功能。如图5所示。
另外,可以通过鼠标拖拽的方式,直接把构架浏览器中的内容通过拖拽的方式添加到已有的依赖图上。除了能浏览打开的工程之外,构架浏览器还可以直接浏览编译好的Assembly文件中的名字空间、类型等,只是不能双击导向到相应的代码,其它都与直接浏览工程差不多。如图6所示。
规格浏览器(Spec Explorer)
Spec Explorer是微软发布的一款与Visual Studio 2010紧密整合的基于模型测试的工具,也是一个Visual Studio集成开发环境的插件。它已经被大量用于微软内部技术团队的测试,并已在Windows协议测试工程(超过两百工程师参与并协同工作)。Spec Explore与VS整合工作环境是基于模型的测试(Model-Based Testing,MBT)技术,它是一个轻量级的,形式化的验证软件系统的方法,并可以对测试软件系统(System Under Test,SUT)进行形式化的建模,设计出机器可读的模型;目前完全验证一致性的代价非常高,重量级的形式化方法往往难以被应用到实际工程中,而基于模型的测试在这方面体现了优势,并已被运用到很多大型项目中。如图7所示。
用户可以通过Spec Explorer对一个软件系统的期望行为进行建模,并自动生成能够在Visual Studio的测试框架下运行的测试代码。模型可以用当前主流的程序设计语言C#开发,然后通过Cord语言脚本对模型进行配置和裁剪。
Spec Explorer工具可以自动探索规格说明(Specification,Spec)的所有潜在行为,并将其行为模型表示为状态机。一次探索的输出有可能非常大,所以Spec Explorer提供了Cord语言对输出进行裁剪,并选出测试中真正关心的场景。并能够高效的解决状态爆炸的问题。
SpecExplorerVS2010.msi插件可以在
http://msdn.microsoft.com/en-us/devlabs/ee692301.aspx下载。
开发设计模型
Visual Studio 2010 Ultimate的ALM涵盖了系统设计到测试阶段的工具。其中,在架构方面包括新的架构检视工具(Architecture Explorer),增加对统一建模语言(UML)的支持,例如类图、用例图、活动图和时序图等;以及架构层图(Architecture Layer Diagram),以图形化的方式描述系统架构,从而使得项目中的技术人员或非技术人员都能以模型透过图形化的方式进行协作,以及定义企业与系统功能关系等。
VSTS 2010架构功能组成,主要功能分为三部分:1)理解现有代码;2)明确结构设计;3)团队合作。如图8所示。
• 理解现有代码。VSTS2010的Architecture目标之一就是就是帮助理解现有的代码。因为只有理解了才能够正确地使用它。在实际的工作中,我们经常会遇到这样的问题,只有了解现有代码能够做什么才能开展后续的工作。
• 明确结构设计。软件人员经常需要设计和描述软件的构架,并为某一个特定问题定义名称来描述它,然后使开发团队内的其它成员也能接受并理解它。VSTS2010 Architecture支持UML的模型,为此微软增强了DSL工具,它支持VS2010中很多功能的关键技术,VS2010 Architecture的所有的UML图表都是通过DSL工具来建立,并运行在DSL运行库之上。VSTS 2010中,支持5种UML图表。
• 团队合作。在开发项目中,我们经常需要使建模的结果能够成为整个软件开发周期中重要的一部分。VSTS 2010提供了多种方法可以让模型和Team Foundation Server以及Visual Studio自身进行交互,例如新引入的工程种类“Modeling Project”等。
新增VS2010的Architecture功能,可供软件架构师和开发等人员使用模型图可以帮助理解代码和用户需求,使软件系统具有更好的质量。例如,可以使用统一建模语言设计用户需求的用例,活动类和序列图功能等,来描述和沟通用户需求,从而增强ALM的周期管理控制。Architecture工具模板,如图9所示。
当在系统需求确定之后,我们便进入基于UML的面向对象的设计(Object-Oriented Design,OOD)系统设计阶段,在这个阶段中,将通过以下UML图来呈现VS2010在设计阶段的支持和应用。
VS2010的Architecture工具包括以下UML图(参考图9):
• 活动图(Activity Diagram):在参与者之间阐明业务用例实现的工作流程。
• 组件图(Component Diagram):组件图的主要目的是显示系统组件间结构或接口的关系。
• 类图(Class Diagram):展示了系统的逻辑结构,类和接口的关系。可以用于存储和系统之间的关系交换数据类型。
• 顺序图(Sequence Diagram):主要是显示对象之间发送的消息的时间顺序。
• 用例图(Use Case Diagram):描述角色和用例之间的关系,着重展示系统必须实现的功能,用于在需求分析阶段分析客户需求。
此外,可以从已有代码创建:层图(Layer Diagram),代码之间的不同部分依赖;类图,
类型及其.NET关系代码;顺序图,在方法调用.NET代码顺序。
UML 2.1.2规范定义了13种图,Visual Studio 2010支持其中最常用的5种图(类图、用例图、活动图、组件图和顺序图)。它们的底层的Meta模型是完全符合UML2.1.2规范定义的模型关系。
原文请见赛迪网:http://news.ccidnet.com/art/32857/20100709/2110919_1.html