一起谈.NET技术,用好Visual Studio 2010进行层架构设计

  微软已经把VS 2010(Visual Studio 2010 Ultimate)功能融入到软件应用生命周期管理(ALM)中。在架构设计方面则是通过新的架构层关系图(Architecture Layer Diagram),以图形化的方式描述系统架构,从而使得项目中的技术人员或非技术人员都能以模型透过图形化的方式进行协作与设计,以及定义企业的系统功能。

  Visual Studio 2010提供针对不同功能层面的分析工具来辅助程序代码进行逆向工程。Layer Diagram可从高阶面来看架构;Architecture Explorer能从特定点切入,只探索我们所关心的部分;.NET Class Diagram则可分析详细部分的Class结构。逆向工程类型可分为静态与动态,静态指的是整个程序代码的静态结构,如组件或类别间的关系;动态则是程序代码执行的顺序,如某个程序代码区段相关方法调用与响应顺序。

  静态的逆向工程,主要有三个工具:Architecture Explorer、Layer Diagram和Class Diagram。Layer Diagram可以让我们以高层角度来分析整个软件结构,细腻程度可以自由选择,从项目、Namespace、Classs、到方法都可以。本文将重点讲述VS2010静态逆向工程(Static Reverse Engineering)在软件架构层关系图设计方面的新功能应用。

  Visual Studio 2010架构层关系图设计

  在现实的项目中,我们需要分析别人的代码,或者约束团队的代码架构。当我们已经对现有程序的基本架构有了初步了解时,则想对现有架构进行进一步的分析并维护代码架构的逻辑。例如,当我们的项目为模型-视图-控制器(MVC,Model View Controller)架构风格创建架构应用的时候,让我们确保它是实际执行的方式。

  (1)创建一个层图(Building a Layer Diagram)

  首先,让我们创建一个新层架构使用菜单(命令为Architecture|New Diagram|Layer Diagram)。创建一个空层图,在图层设计器中可以指定设计(在Toolbox中拖曳元素实现层设计)架构层,可以得到所有我们所确定的形式与基本层,如图1所示。

图1  设计MVC架构层图类的实现

  如上图所示,这是一个典型的软件架构,需要实现物理与逻辑架构图的关联,我们通过拖动相应的执行层与实际类来实现。当放入图层类实现后,我们可以在该系统中用鼠标右键单击设计图面,在弹出的菜单中选择Generate Dependencies(生成依赖)命令,来建立依赖关系。

  一旦完成这一过程,最后将得到一个架构层图。层管理器(Layer Explorer)可以用来看到每一层的内容,以及架构层彼此之间的关系。

  (2)更新实现(Updating Your Implementation)

  在MVC架构模式中,我们不希望看到“Web→Model”层的直接对话模式,这种情况往往发生在团队中其他人编写的代码直接访问了数据层,而不通过合适的业务逻辑(这是一个非常容易犯的错误)。可以通过图层设计器删除依赖线来解决。当删除依赖线后,可以用鼠标右键单击图形,在弹出菜单中选择Validate Architecture(验证架构)命令,如图2所示。

图2  删除错误逻辑

  Visual Studio将分析所有的依赖和任何违反该层图关系的查询。这个错误结果将会出现在错误列表中,如图3所示。 

图3  错误结果列表

  现在,我们可以通过修复自己的代码,重复验证架构体系直到没有违反层关系的代码依赖出现为止。

  (3)执行中生成分层(Enforcing Layering in the Build)

  我们要保持一个干净的架构,并且知道未来将发生的问题,例如,对错误的分析和验证,可以审视到架构代码漂移,执行开发任务时进行对该错误的修复。我们需要一种方法来保持同步(sync)。为了解决这个问题,我们将添加一个新的TFS生成定义,将使用门控签入(Gated Check-in)来执行架构,如图4所示。

图4  设置签入方式

  当使用门控签入后,提交所有更改到TFS中时,必须先通过所有正常的测试(干净的构建、通过测试用例等),现在构建的做法将符合验证步骤,并通过在TFS中的检测来防止更多的风险侵入。

  如果进行全新的代码开发,我们就可以在开始阶段通过层图来进行逻辑设计,并努力执行设计方案,保证开发阶段与设计不偏离,团队人员的代码不漂移出架构。如果从现有的资源框架开始,我们也可以通过Visual Studio 2010的层图功能找到理想的逻辑分析与设计工作方法。一旦我们的物理和逻辑同步,就可以通过自动化(例如门控签入)进行强制执行,避免“漂移”发生。

时间: 2024-09-22 01:57:50

一起谈.NET技术,用好Visual Studio 2010进行层架构设计的相关文章

用好Visual Studio 2010进行层架构设计

微软已经把VS 2010(Visual Studio 2010 Ultimate)功能融入到软件应用生命周期管理(ALM)中.在架构设计方面则是通过新的架构层关系图(Architecture Layer Diagram),以图形化的方式描述系统架构,从而使得项目中的技术人员或非技术人员都能以模型透过图形化的方式进行协作与设计,以及定义企业的系统功能. Visual Studio 2010提供针对不同功能层面的分析工具来辅助程序代码进行逆向工程.Layer Diagram可从高阶面来看架构:Arc

一起谈.NET技术,应用Visual Studio 2010辅助敏捷测试(下)

随着需求的不断变化和迭代的深入,代码库不可避免的会有频繁的签入和签出,此时测试人员一项很重要的任务就是要预防回归问题发生.执行手工测试用例可以帮助我们预防及和发现回归问题,但是它的执行效率太低,无法胜任频繁执行的要求.这时就我们需要考虑采用自动化测试用例完成这项工作.决定是否采用自动化测试是有很多因素决定,其中很重要的一条就是自动测试的收益,下面的公式从概念上解释了如何来计算这个收益,当收益值大于1的时候,实施自动化测试就是合算的:否则,就是不合算的. 图1:计算收益公式 这其中,开发和维护自动

一起谈.NET技术,应用Visual Studio 2010辅助敏捷测试(上)

敏捷软件开发是近些年来比较热门的话题,<敏捷宣言>四条主要精神和十二条基本准则概括了敏捷开发的基本思想.围绕着这些基本概念和思想,产生了一系列的轻量级方法,如:极限编程.测试驱动开发.Scrum.特性驱动开发等.虽然具体名称.过程和侧重点不尽相同,但是相对于非敏捷的开发方法而言,它们都更强调面对面的沟通.团队不同角色之间的紧密协作.频繁交付新的可用的软件版本.紧凑而自我组织型的团队等.敏捷开发只是提供了一个思想和方法论,而要在实际的工程中正确运用它,并真正显现出它的优点和产生实际的效果,这对于

一起谈.NET技术,利用Visual Studio 2010流程模板实现Scrum敏捷开发

在我14年的编程生涯中,我从瀑布模型迁移到了迭代模型,然后又迁移到了Scrum,最后迁移到了Scrum-ban.下面是瀑布式的软件开发流程,迭代式的软件开发流程和Scrum软件开发流程的示意图.关于Kanban和Scrum-ban,我会在将来的博文中详细说明.在这篇文章中,我主要想通过一个Demo,来说明如何使用Microsoft Visual Studio Scrum 1.0,Microsoft Visual Studio Scrum 1.0是专门为Scrum团队构建的流程模板. (图1:瀑布

一起谈.NET技术,浅析Visual Studio 2010中常见Web.Config变换

我最近一直在摆弄Visual Studio 2010 Beta版,我最喜欢的一个新的特点(新特点很多)是新版web.config变换. Web.config变换是启动设定,所以你的每个编译链接设置都有一个设置"delta"(默认的是Debug和Release).当你建立你的解决方案(比如当你发布一个包的时候)你原始的Web.config会根据你的Web.debug.config文件中的设置变换(以debug设置为例). 有很多日志和MSDN可供你参考,但是我想我应该写一个简明扼要的帖子

一起谈.NET技术,基于Visual Studio 2010 阐述C#4个特性

Csharp4.0与以往版本基础体现了强大的性能优势,主要体现在以下四个方面: 1. 通过委托成员来实现接口 在C# 4.0中可以通过委托来实现某个成员的接口,例如下面的代码: public class Foo : IList { private List _Collection implements IList; public Foo() { _Collection = new List(); } } 被封闭的成员可以用委托实现一个或多个接口,多个接口用逗号分隔.这么做可以去掉很多冗余的代码,

Visual Studio 2010微软云计算架构构建云服务

4月12日,作为全球发布活动的第一站,微软新一代开发工具Visual Studio 2010在中国率先上市.Visual Studio 2010是微软云计算架构重要组成部分之一,它拥有强大的开发功能,支持开发者基于Windows Azure开发更多应用,从而进一步丰富微软的云计算平台.如果说今年初正式推出商用的云操作系统Windows Azure是微软云计算的左膀,那Visual Studio 2010就是微软云计算的右臂.众所周知,作为一个平台的供应商,微软平台的推广很大程度上将依赖于上面应用

网络语音视频技术浅议 Visual Studio 2010(转)

      我们在开发实践中常常会涉及到网络语音视频技术.诸如即时通讯.视频会议.远程医疗.远程教育.网络监控等等,这些网络多媒体应用系统都离不开网络语音视频技术.本人才疏学浅,对于网络语音视频技术也仅仅是略知皮毛,这里只想将自己了解到的一些最基础的知识分享给大家,管中窥豹,略见一斑,更重要的是抛砖引玉,希望更多的朋友们一起来探讨,同时,有讲得不正确的地方也希望大家批评指正.   一.基本流程    无论是即时通讯.视频会议,还是远程医疗.远程教育.网络监控等等系统,都需要获取到远程的语音.视频

Visual Studio 2010提高的生产力 (二)

你可以说代码编辑器是所有开发体验中最重要的功能,毕竟它让你创建.查看和更改你的代 码.没有代码编辑器,一个IDE中任何其他功能都无从谈及,而开发环境中的其余部分都是围绕 编辑器创建的. 上周,我们谈到了3个Visual Studio 2010中的新功能:多显示器支持,Multi-Targeting, 和代码导航.这周我想花点时间来谈Visual Studio 2010中关于代码编辑器的改进. 改进的智能提示 从某些方面讲,智能提示是提供类型和其成员最方便访问的文档.在有智能提示之前,开发 通常意