使用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不仅可以深入到感兴趣的信息(如名称空间),还可以将名称空间拖放到层次图中,这些名称空间将表示为层次图上的一个层,与该层连接的层也将出现在层次图中。
还可以直接将依赖图信息拖到层次图中,这样也可以创建层。
转载于:https://www.cnblogs.com/Ribbon/p/4429040.html
使用Architecture Explorer分析应用程序及使用层次图相关推荐
- NVIDIA DeepStream 5.0构建智能视频分析应用程序
NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...
- 使用valgrind分析C程序调用线路图
Valgrind可以检测内存泄漏和内存违例,但是用Valgrind生成的日志信息结合kcachegrind就可以查看C程序的执行线路图,调用时间,是做性能优化和查看代码的非常好的工具. 1.下载安装 ...
- 基于Python分析深圳程序员工资有多高?
基于Python分析深圳程序员工资有多高? 概述 前言 统计结果 爬虫技术分析 爬虫代码实现 爬虫分析实现 后记 前言 多图预警.多图预警.多图预警.校招季,毕业也多,跳槽也多.我们的职业发展还是要顺 ...
- edgeR:一个数字基因表达数据差异表达分析Bioconductor程序包
edgeR:一个数字基因表达数据差异表达分析Bioconductor程序包 人们希望在不久的将来,对于许多功能基因组学应用,新兴的数字基因表达(digital gene expression,DGE) ...
- 【.NET程序性能分析】使用VS自带的工具分析.NET程序的性能
这篇博文给大家分享的是,如何使用VS自带的性能分析工具来分析我们编写的.NET程序,一边找出程序性能的瓶颈,改善代码的质量.在实际开发中,性能真的很重要,往往决定一个产品的生死~良好的用户体验的基础之 ...
- 如何分析java程序_如何利用 JConsole观察分析Java程序的运行,进行排错调优
一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JCons ...
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
原文链接:http://jiajun.iteye.com/blog/810150 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
- 四、分析HelloWorld程序,开始学习Java运算符
@Author:Runsen @Write Date : 2020/5/20 在配置完 Java 开发环境和,并下载 Java 开发工具.IDEA后,就可以写 Java 代码了,因为本篇文章是从头梳理 ...
- 无法定位程序输入点 在.exe上_win7提示explorer.exe应用程序错误的解决方法
相信有很多用户都清楚,explorer.exe是windows操作系统当中非常重要的程序,当explorer.exe发生错误的时候,系统很容易出现异常的情况,那么win7提示explorer.exe应 ...
最新文章
- Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 栈/dp
- 有关子矩阵最大累加和的总结
- ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph(有源上下界最大流 模板)
- 操作系统:第五章 磁盘管理 - I/O控制,缓冲区管理
- SAP UI5 Focus related
- u大师u盘装系统win7_优盘如何装系统 u盘装系统的步骤
- python变量类型是动态的_【Python】python动态类型
- [流体力学][NS方程]关于质量、动量、能量的控制方程的推导
- OSChina 周六乱弹 ——我的闺蜜是总统
- WindowsMac本地搭建Code-Push-Server热更新服务器
- 英语汉语对比学习:名词(一)
- 腾讯面试算法题——编码
- 路由器的两种工作模式~~~
- 基于nodejs的二手物物交换平台【毕业设计源码】
- GDOI2021赛后总结高一赛季总结
- wiki语料库训练检索式聊天机器人
- Revit二次开发-创建IURibbon中使用相对地址
- WordNet、FrameNet 同义词及相关词汇查询
- 手淘移动端适配的方案学习和相关思考
- ad 2008文件服务器搭建教程,Windows Server 2016 AD服务器搭建的步骤(图文)
热门文章
- MATLAB中如何让分度值小点,实验6 干涉的matlab模拟.doc
- OllyDbg笔记-初识PE文件(nag窗口破解)
- Qt修改QSS中的qlineargradient属性,实现颜色渐变
- C++学习笔记-利用rapidJSON读取JSON数据
- C++ opengl 使视野转头移动(站桩看世界)
- kl散度度量分布_概率图简要模型笔记(二)马尔可夫随机场与KL散度、最大熵、指数族分布、高斯分布、极大似然分布...
- Linux系统中read的用法,Linux中read命令的用法
- matlab 反激变压器,基于matlab的反激电路设计..doc
- 罗技 连点 脚本_罗技推出多款《英雄联盟》联名外设 看了就忍不住想要
- h5如何上传文件二进制流_HTML5新特性之文件和二进制数据的操作