用好Visual Studio 2010进行层架构设计
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 设置签入方式