understand分析代码

分析法,从解决方案出发,从求解出发,去分析结论,找出和问题之间的关系。

understand是一款很强大的阅读代码软件。我通过一个java小代码的分析来梳理一下代码分析的过程。

  1. 系统外部学习,从使用者的角度来学习。画出系统的用例图和操作过程。画出流程图和顺序图(用户操作顺序图)。
  2. 从系统内部学习,从体系结构的角度去学习,画出系统的类图,也可以使用工具逆向出类图
  3. 从系统内部学习,从代码角度,从数据结构+算法的角度去学习和理解,列出所有的变量及其含义列出所有的函数和这些变量之间关系(影响矩阵)画出每个方法的顺序图和流程图。
  4. 将外部用户操作顺序图与内部操作之间映射起来,画出系统内部顺序图。

 

这个节选一下

1.Graph Architecture:展示一个框架节点的结构关系;

2.Declaration:展示一个实体的结构关系,例如:展示参数,则返回类型和被调用函数,对于类,则展示私有成员变量(谁继承这个类,谁基于这个类)

3.Parent Declaration:展示这个实体在哪里被声明了的结构关系;

4.Declaration File:展示所选的文件中所有被定义的实体(例如函数,类型,变量,常量等);

5.Declaration Type:展示组成类型;

6.Class Declaration:展示定义类和父类的成员变量;

7.Data Members:展示类或者方法的组成,或者包含的类型;

8.Control Flow:展示一个实体的控制流程图或者类似实体类型;

 

9.Cluster Control Flow:展示一个实体的流程图或者类似实体类型,这个比上一个更具有交互性;

10.UML Class Diagram:展示这个项目中或者一个文件中定义的类以及与这个类关联的类

 

11.UML Sequence Diagram:展示两个实体之间的时序关系图;

 

12.Package:展示给定包名中声明的所有实体

13.Task:展示一个任务中的参数,调用,实体

14.Rename Declaration:展示实体中被重命名的所有实体

跑一个绘制圆形的小程序。

使用rose绘制用例图

understand分析代码_第1张图片 操作流程图

understand分析代码_第2张图片 顺序图

understand分析代码_第3张图片 

利用rose绘制

understand分析代码_第4张图片 绘制类图

understand分析代码_第5张图片 

然后可以重新建立顺序图,对其流程大体把握(虽然只是一个简简单单的绘制扇形,绘制圆形java代码)

understand分析代码_第6张图片

对于我们所写的代码,生产,java程序,可以交由understand来分析一下自己所写代码的逻辑和脉络。

understand分析代码_第7张图片 直接生产uml图,这只表示出类之间的继承关系,没有表示出其关联和依赖关系,需要用另外的图。如果要看到类之间的引用关系,还需要产生graphs->graphs for ArcTest.java –>cluster call internal图,产生的图如下:

选中ArcControls,产生Graphs->cluster call internal

understand分析代码_第8张图片

如果选择主菜单graphs-call butterfly,则产生如下图:

understand分析代码_第9张图片

同时分析逻辑,看自己的代码在哪些耦合性方面有缺陷

understand分析代码_第10张图片

你可能感兴趣的:(understand分析代码)