使用Architecture Explorer分析应用程序及使用层次图
使用Architecture Explorer分析应用程序
Architecture Explorer和依赖图可以帮助我们了解所有的项目,包括小项目和大项目。Architecture Explorer可用于研究现有代码,还可以用依赖图选择要研究的代码并对其进行可视化。
Architecture Explorer将结构表示为节点,关系表示为连接,下图为WatiN框架项目下的图示:

最左侧的第一个选项的功能是从当前在Architecture Explorer中选中的所有节点生成新的依赖图文件。如果仅要包含当前栏目中的节点,则在单击这个选项前必须按下并持续按住Ctrl键。
第二个选项的功能是将Architecture Explorer中选中的节点添加到当前在VS中可见的依赖图中。
第三个选项功能是将信息从Architecture Explorer中输出到一个.dgml文件中,该文件是用于定义依赖图的xml架构。
第四个选项是重置Architecture Explorer为初始化状态,从而达到清除窗口重新开始的目的。
点击筛选器,可以选择其中的一个或多个筛选器选项,从而以不同的方式对该栏目所包含的信息进行研究:

除了上述筛选方式之外,我们还可以点击上图中的Types展开筛选栏:

该栏提供了很多选项可以用于决定该栏目的初始显示内容。可以将连接类型分为Outbound和Inbound,这种分类方法描述了与当前选中节点连接的方向。Outbound是指从当前选中节点指向相关节点。Inbound是指从前面的相关节点指向当前选中节点。使用Analysis选项可以查看循环引用或hub(例如,类),既可以是没有被调用的,也可以是已使用的。利用Grouping选项可以根据容器、属性进行分组。
依赖图可用于浏览现有代码的关系和组织。这些图使我们能很容易地对新的或不熟悉的代码进行了解。图中的关系清楚地表明了不同区域的代码之间的依赖关系,以及一段代码的修改会对哪些代码带来潜在的影响。
依赖图只会显示成功编译生成的代码中的依赖关系。没有生成成功的代码将不会出现在依赖图中。

上图表明了命名空间之间的关系,也可以提取其他信息得出想要查看的依赖图,如下图所示:

将鼠标悬停在图中的某个节点上,还可以浏览该节点的详细信息。右击节点还可以跳转到该节点的方法定义中。
上述创建依赖图是用过Architecture Explorer, 同时,我们可以在VS菜单中选择Architecture--> Generate Dependency Graph--> For Solution创建依赖图:

通过展开方式可以看到整个项目的架构,展开后显示的样式与使用Code Map效果是一样的。

因此,使用Architecture Explorer与依赖图结合的方式,和使用Code Map方式均可以帮助我们快速理解整个项目代码。
使用层次图
层次图不仅可以用于从较高层次描述一个应用程序的结构,而且还可以验证所开发的代码是否满足上层设计。层次图的一个非常优秀的功能在于可以验证应用程序设计的架构与基本代码是否一致,从而保证代码和架构在开发过程中始终保持匹配。
层次图显示了架构设计的主要组件,组件之间的依赖关系也体现在了层次图中。一个图由一个或多个节点组成,称为层。一个层表示一种逻辑分组——例如,一个名称空间或类文件。
虽然层次图位于建模项目内,但它可以连接到当前VS解决方案中的任何项。
层次图中的每一层都显示为一个矩形,不同层可以相互嵌套,称之为分组。层次图中不同的层用于定义项的逻辑分组,包括方法、类和名称空间。
作为一般原则,应该总是将具有相同依赖关系的项放在同一层上。而可以独立更新的项(或在独立的应用程序中所使用的项)则应该放在不同的层。
Layer Explorer可以用于浏览与特定的层相连接的项,并且可以在层之间移动这些项。
在层次图中定义了层之后,下一步就是要标识不同层之间的依赖关系。无论一个层中的项是引用还是使用另一个层中的项,这两个层之间就存在依赖关系。

层次图可以对架构进行验证。利用层次图的验证功能,可以验证各层之间的所有依赖关系是否正确。这个功能可以强制实施不同层之间的规则和依赖关系。如果验证成功返回如下图所示:

可以将Solution Explorer所包含的任何文件或项目拖放到层次图上,这样就会创建一个与文件名或项目名相同的新层,并包含一个到该文件或项目的连接。
用Architecture Explorer不仅可以深入到感兴趣的信息(如名称空间),还可以将名称空间拖放到层次图中,这些名称空间将表示为层次图上的一个层,与该层连接的层也将出现在层次图中。
还可以直接将依赖图信息拖到层次图中,这样也可以创建层。
使用Architecture Explorer分析应用程序及使用层次图的更多相关文章
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
原文链接:http://jiajun.iteye.com/blog/810150 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
- 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行
利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
- 在Eclipse中使用MAT分析Android程序内存使用状况(转)
对于Android这种手持设备来说,通常不会带有太大的内存,而且一般用户都是长时间不重启手机,所以编写程序的时候必须要非常小心的使用内存,尽量避免有内存泄露的问题出现.通常分析程序中潜在内存泄露的问题 ...
- 分析Android程序之破解第一个程序
破解Android程序通常的方法是将apk文件利用ApkTool反编译,生成Smali格式的反汇编代码,然后阅读Smali文件的代码来理解程序的运行机制,找到程序的突破口进行修改,最后使用ApkToo ...
- 关于电脑开机不出现桌面即不启动explorer.exe桌面程序--------正解
针对这个问题,一开始的思路是,把自己写的界面小程序(Win.exe)放在Windows启动文件夹中, 效果到是界面程序自启动了,但是还是先出现的桌面,然后才的启动的界面程序(Win.exe),并不是我 ...
- Net Memory Profiler 分析.Net程序内存泄露
Net Memory Profiler 分析.Net程序内存泄露 Haozes's Tech Space 人類的全部才能無非是時間和耐心的混合物 使用.Net Memory Profiler 分析.N ...
- 使用CLR Profiler分析.NET程序
使用CLR Profiler分析.NET程序 就像剥去.NET语法糖衣的工具(Reflector等)很多一样,我们可以用来分析.NET程序性能的工具有很多,如前面一片博文DebugLZQ给大家介绍的v ...
- 老李案例分享:MAT分析应用程序服务出现内存溢出过程
老李案例分享:MAT分析应用程序服务出现内存溢出过程 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loa ...
- 在Linux下,如何分析一个程序达到性能瓶颈的原因
0.在Linux下,如何分析一个程序达到性能瓶颈的原因,请分别从CPU.内存.IO.网络的角度判断是谁导致的瓶颈?注意现在的机器CPU是多核 1.用sar -n DEV 1 10 2.用iotop命令 ...
随机推荐
- 转:TinyXM--优秀的C++ XML解析器
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...
- C# Activex开发、打包、签名、发布 C# Activex开发、打包、签名、发布 [转]
C# Activex开发.打包.签名.发布 2013-06-22 12:01:20 浏览:3823 一.前言 最近有这样一个需求,需要在网页上面启动客户端的软件,软件之间的通信.调用,单单依靠HTML ...
- iOS客户端的在线安装和更新——针对ADHoc证书
这篇文章纯给自己留个备份,所以对AdHoc证书内部分发和对iOS客户端开发不了解的请直接无视. 一般在iOS游戏或应用开发过程中,正式发布到App Store之前,都需要内部的测试,客户端的安装是个不 ...
- Top 10 Universities for Artificial Intelligence
1. Massachusetts Institute of Technology, Cambridge, MA Massachusetts Institute of Technology is a p ...
- 【python】——小程序之电话薄
初学python,写一个小程序练习一下.主要功能就是增删改查的一些功能.主要用到的技术:字典的使用,pickle的使用,io文件操作.代码如下: import pickle #studentinfo ...
- rbenv Your user account isn't allowed to install to the system Rubygems
Clone一个新Rails项目到Mac, bundle install 的时候遇到下面的提示 Fetching source index from http://rubygems.org/ Your ...
- HTML5新特性之跨文档消息传输
1.同域限制 所谓“同域限制”是指,出于安全考虑,浏览器只允许脚本与同样协议.同样域名.同样端口的地址进行通信. 2.window.postMessage方法 浏览器限制不同窗口(包括iFrame窗口 ...
- android-tools-adb
sudo apt-get install android-tools-adbsudo apt-get install android-tools-fastboot
- C# 调用 WebService 连接ORACLE 11g
这几天开发一个WebService遇到很多问题,记录下来顺便帮助一下以后遇到情况的人. 我是通过ADO.NET来连接ORACLE的,也可以用ORACLE提供的ODP.NET. 通过正常的连接后部署II ...
- Foundation框架基本数据类型
NSNubmer NSNumber是一个类,该类中存在多种处理数值的方法,可直接创建该类的实例变量 // 定义3个NSNumber类型的变量 NSNumber *myNumber, *floatNum ...