最近学习Mybatis的官方文档,看到了【项目文档】一节有很多内容没有见过,做个笔记,理解一下。

  

  百科上的介绍,我竟然都看懂了,那就不找其他地方的资料了。

  

  JDepend 一个开放源代码的可以用来评价Java程序质量的优秀工具(定义),它遍历Java class的文件目录,以Java包(package)为单位,为每一个包/类自动生成 包的依赖程度(怎么做的),稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程度,是否存在循环依赖关系 等(用途)
 
  是否符合面向对象设计
  
     我们可以根据JDepend给出的报告数据,分析出我们的包是否是可靠的,稳定的,健壮的包,是否符合面向对象的设计原则。
 
  我靠,原来面向对象设计不仅可以根据代码编程习惯来定义,还有具体的量化工具。具体公式如下,恩,我最喜欢有公式的世界了,哈哈。这要写成一篇论文,多牛逼啊。
 
  面向的设计原则之一The Stable Abstractions Principle (SAP):稳定抽象等价原则指出了包的稳定程度与它的抽象程度(接口的数目)成正比,也就是说,一个包内包含的接口所占的比重越大,这个包就越稳定。
 
  Abstractness (A):包的抽象度。指一个包内包含的抽象类或接口占整个包中的类的比重。该值处于0,1之间,若A=0,说明包内不包含任何抽象类或接口;若A=1,说明包内全部是抽象类或接口。包的抽象度与稳定性之间的关系上面已经作了说明。
 
  Afferent Couplings (Ca):向心耦合。依赖该包(包含的类)的外部包(类)的数目(i.e. incoming dependencies),该数值越大,说明该包的担当的职责越大,也就越稳定。
 
  Efferent Couplings (Ce):离心耦合。被该包依赖的外部包的数目(i.e. outgoing dependencies),该数值越大,说明该包越不独立(因为依赖了别的包),也越不稳定。
 
  Instability (I):衡量一个包的不稳定程度。
I=Ce/(Ce+Ca)
  它的值处于[0,1]之间。I=0时说明包是最稳定的,反之I=1则说明包极不稳定。
  
  Distance from the Main Sequence (D): 该指标主要用来评价包的抽象程度与稳定程度的平衡关系,它可以用二维直线图 A + I = 1 来表示。
                          D=abs((A + I) - 1)
  ,也就是说D为 一个包的抽象度 + 包的不稳定程度 - 1 的绝对值。一个理想的包是:完全抽象的(A=1),非常稳定的(I=0),这时D=0;或者是:完全具体类构成的包(A=0),非常不稳定的 (I=1),这时同样也有D=0。D=0说明包的抽象程度与稳定程度是平衡的,反之D=1说明包的平衡程度被严重破坏。
 
  Package Dependency Cycles:包的循环依赖度。(这个可以用对象图遍历来做,只是效率不高。不然线性查找。)
 
 
  
 
 

  

java 代码分析工具——JDepend的更多相关文章

  1. java代码分析及分析工具

    一个项目从搭建开始,开发的初期往往思路比较清晰,代码也比较清晰.随着时间的推移,业务越来越复杂.代码也就面临着耦合,冗余,甚至杂乱,到最后谁都不敢碰. 作为一个互联网电子商务网站的业务支撑系统,业务复 ...

  2. Java开发分析工具JProfiler的详细使用方法解析

    JProfiler 11 是一款功能强大的Java代码分析工具,JProfiler的直观UI可帮助您解决性能瓶颈,确定内存泄漏并了解线程问题且JProfiler 11 Mac破解版配置会话非常简单,第 ...

  3. 常用 Java 静态代码分析工具的分析与比较

    常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...

  4. [转载] 常用 Java 静态代码分析工具的分析与比较

    转载自http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代 ...

  5. 【转载】常用 Java 静态代码分析工具的分析与比较

    摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后 ...

  6. java静态代码分析工具infer

    infer是一个静态代码分析工具,探测bugs. 主要支持Java.C/C++ 安装:brew install infer 在线展示:https://codeboard.io/projects/115 ...

  7. 常用Java静态代码分析工具的分析与比较

    给国产静态代码检测工具Pinpoint打Call! 简介 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了4种现有的主流Java静态代码分析工具 (Checkstyle,FindBugs ...

  8. Android代码分析工具lint学习

    1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...

  9. Java 性能分析工具 , 第 3 部分: Java Mission Control

    引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...

随机推荐

  1. FusionCharts ajax 调用方式

    方式一:setJSONUrl function initChart() {                    var myChart = new FusionCharts("Fusion ...

  2. javascript密码强度验证!

    //CharMode函数 //测试某个字符是属于哪一类 function CharMode(iN) { if (iN>=48 && iN <=57) //数字 return ...

  3. Countries in War (POJ 3114) Tarjan缩点+最短路

    题目大意: 在一个有向图中,每两点间通信需要一定的时间,但同一个强连通分量里传递信息不用时间,给两点u,v求他们最小的通信时间.   解题过程: 1.首先把强连通分量缩点,然后遍历每一条边来更新两个强 ...

  4. HDU 3966 基础树链剖分

    题意:给一棵树,并给定各个点权的值,然后有3种操作:I C1 C2 K: 把C1与C2的路径上的所有点权值加上KD C1 C2 K:把C1与C2的路径上的所有点权值减去KQ C:查询节点编号为C的权值 ...

  5. xcode6 ios launchimage

    1.点击Image.xcassets 进入图片管理,然后右击,弹出"New Launch Image" 2.右侧的勾选可以让你选择是否要对ipad,横屏,竖屏,以及低版本的ios系 ...

  6. Android类参考---Fragment

    Android类参考---Fragment public final boolean isAdded() 如果该Fragment对象被添加到了它的Activity中,那么它返回true,否则返回fal ...

  7. DDOS攻击原理及防护方法论

      从 07年的爱沙尼亚DDOS信息战,到今年广西南宁30个网吧遭受到DDOS勒索,再到新浪网遭受DDOS攻击无法提供对外服务500多分钟. DDOS愈演愈烈,攻击事件明显增多,攻击流量也明显增大,形 ...

  8. adaboost算法

    三 Adaboost 算法 AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器.(很多博客里说的三个臭皮匠 ...

  9. SAP 中如何寻找增强

    http://blog.csdn.net/edifierliu/article/details/5978824 查找SAP标准事务代码中使用的BADI: 在SE24中,查看类对象CL_EXITHAND ...

  10. 怎么用sql语句查看某个字段值是否是唯一的

    select count(*) from table group by zd having count(*)>1 这是不唯一的过滤出来的语句