精华内容
下载资源
问答
  • Infusion Altar

    2017-04-07 15:41:12
    Bob built an infusion altar in his secret chamber, but it was not so symmetrical. After some explosions, Bob decided to fix the infusion altar to make it symmetrical. InfusionAltar You will be given ...
  • inFusion-QSG.pdf

    2015-08-23 23:25:54
    inFusion文档
  • 前端项目-infusion.zip

    2019-09-02 16:57:39
    前端项目-infusion,Infusion is an application framework for developing flexible stuff with JavaScript
  • Infusion-WoW-Launcher-源码

    2021-06-06 19:31:11
    Infusion-WoW-Launcher 这曾经是一个用于私人服务器的多游戏启动器,现在它只是一个简单的魔兽世界启动器。 截屏:
  • 软件设计度量工具inFusion(二):看懂inFusion度量结果 标签: infusion结果度量金字塔 2015-12-10 16:51 778人阅读 评论(0) 收藏 举报  分类: 架构/设计/模式(10)  版权声明:本文...

    软件设计度量工具inFusion(二):看懂inFusion度量结果

    标签: infusion结果度量金字塔
      778人阅读  评论(0)  收藏  举报
      分类:

    我们新建一个inFusion项目,指定好源码位置后,inFusion会对源码进行扫描分析,然后就会显示分析结果。


    1.右边的方框是缺陷视图,共三列,以第一行God Class说明。左边的一列是缺陷分类(God Class),其中的数字(11)是缺陷出现的次数;中间一列是单个缺陷的影响度(340),最后一列是总体影响度,其值为 缺陷出现次数×缺陷影响度(11*340=3740)。


    2.左上角的方框是QDI(Quality Deficit Index)视图,包括归一化QDI(210.7)和总的QDI(24634)。总的QDI是设计缺陷×权重的累加值,和系统的规模大小有关,不代表系统的好坏。归一化的QDI是一个标准值,这个值是每千行的一个加权平均值,这个值越大说明代码架构越不健康。将总的设计缺陷impact加起来就得到了总的QDI。归一化QDI = 1000 * (总QDI / 总代码行数)。比如上图中,代码行数(包含注释和空白)是116895,总QDI是24634。注意:按道理说代码行应该不包含注释和空白,不知道为啥inFusion不这么干。归一化QDI越小越好。


    3.现在轮到最复杂的度量金字塔了。


    靠中间的数字是某个metric的原始数值,其大小跟系统规模有关。比如上图中,NOP的值是84;CALL的值23746。金字塔阶梯上的数值是计算(下面 / 本行)出来的,比如NOP左边的14.90,下面的1252(类的总数NOC) / 本行的 84(包的总数NOP) = 14.90,其含义为平均每个包中类的个数;再如NOM右边的3.85,是下面的23746(调用的总数CALL) / 本行的6161(函数个数NOM) = 3.85。上图中红色代表这个指标值偏高、蓝色偏低、绿色正常


    弄清楚怎么计算之后,我们具体看下这些度量指标的含义,度量指标总共分成3类:继承、规模和复杂度、耦合。

    继承:

    NDD(Number of Derived Classes)平均子类个数,反映设计的抽象程度,如果数值过低,意味着抽象程度比较低。

    HIT(Height of the Inheritance Tree)平均继承树高度,这个值越大说明系统类的继承层次越深。继承层次比较深,也是代码坏味道。


    规模和复杂度:

    NOP (Number of Packages):包的个数。
    NOC (Number of Classes):类的个数。
    NOM (Number of Methods):函数的个数。
    LOC (Lines of Code):代码行数。
    CYCLO (Cyclomatic Number):圈复杂度总数。
    包的粒度(NOP左14.90):NOC / NOP,包中类的平均个数。
    类的粒度(NOC左4.92):NOM / NOC,类平均函数个数。
    函数的粒度(NOM左15.54):LOC / NOM,函数平均代码行数。
    代码的粒度(LOC左0.12):CYCLO / LOC,平均每行代码的圈复杂度。


    耦合:
    CALL (Number of Operation Calls):调用函数的次数,在一个函数中调用同一函数多次只会统计一次。
    FOUT (Number of Called Classes):调用类的次数,在一个函数中调用同一个类的多个函数统计一次。
    耦合密度:CALL / NOM,平均每个函数调用函数的次数,反应函数间的耦合程度。
    耦合散度:FOUT / NOM,平均每个函数调用涉及类的个数,反映函数与类之间的耦合程度。

    展开全文
  • 软件设计度量工具inFusion(一):inFusion的基本概念 标签: inFusion软件设计度量重构工具 2015-12-09 11:47 801人阅读 评论(0) 收藏 举报  分类: 架构/设计/模式(10)  版权声明:...

    软件设计度量工具inFusion(一):inFusion的基本概念

    标签: inFusion软件设计度量重构工具
      801人阅读  评论(0)  收藏  举报
      分类:

    之前我们学习了jDepend和structure101设计度量工具,能够帮助监视软件设计的质量。今天介绍一款更强大的工具:intooitus公司的inFusion工具。inFusion工具是一个基于对软件代码的扫描分析,得出子系统与子系统、模块与模块、类与类之间的关系,再根据这些关系推出是否有软件架构设计缺陷,并指导软件重构的工具。inFusion把质量模型(QM)的高层内容和底层的代码度量联系起来。通过对底层的代码扫描度量,根据代码度量值推出设计缺陷(DF)。再根据设计缺陷(DF)推出QM(质量模型)的高层属性(扩展性,维护性、可重用性、可理解性),从而得出代码质量的一个总体概况。同时工具针对每个设计缺陷(DF)给出修改建议,帮助软件重构,从而提供了从软件设计缺陷检测到重构的一整套完整解决方案。


    下面先介绍inFusion中几个很重要的概念:Metrics、Design Flaw、Design property、Quality model、QDI。

    Metrics:

    软件度量(mertics)是从源代码中得出的软件直接参数,比如代码行数(LOC)、函数的扇入扇出(FANOUT)、不稳定因数(IF)、抽象类的个数(NOAC)、类的个数(NOC)、函数调用的深度层次等各种指标。也就是说:metrics是inFusion中最底层、最基本的数据,是根据我们的源代码计算出来的一些很客观的数据。


    Design Flaw:

    Martin Fowler的《Refactoring - Improving the Design of Existing Code》和Arthur J. Riel的《Object-Oriented Design Heuristics》中提到了代码坏味道的概念,这就是inFusion中的设计缺陷。设计缺陷,体现了软件设计中不合理的地方,意味着低的软件质量,意味着软件不易维护,容易产生BUG。


    Design property:

    设计属性(Design property)比质量属性(Quality model)低一个层次,也更为具体。设计属性(Design property)分为以下6方面:代码规模与复杂度(Size and Complexity)、封装性(Encapsulation)、耦合(Coupling)、内聚性(Cohesion)、继承性(Hierarchies)、测试性(Testing)。


    Quality model:

    该模型聚焦于评价软件维护能力,把软件质量分解为4个方面的质量属性(Quality attribute):可读性(Understandability)、可扩展性(Changeability)、可重用性(Reusability)、可测试性(Testability)。


    QDI:

    质量缺陷指数(Qualiti Deficit Index),是通过质量缺陷模型计算出来的,展示系统归一化和总的质量缺陷指数。总的QDI是设计缺陷×权重的累加值,和系统的规模大小有关,不代表系统的好坏。归一化的QDI是一个标准值,可以对比参考。归一化质量缺陷指数,是1000行代码的缺陷指数。


    下图展示了质量模型和设计属性:



    上面几个概念的关系如下:



    展开全文
  • { "name": "my-infusion-electron-app", "dependencies": { "infusion": "2.0.0", "infusion-electron": "0.4.0" } } require()输液和输液-电子: var流体=需要(“输液”); 要求(“输液电子”); 定义您的...
  • infusion度量金字塔数据解释 inFusion能够探测超过20中代码味道和代码缺陷,包括重复代码,破坏封装的类(如数据类或者万能类),高耦合的方法和类,以及一些设计不合理的类继承结构。当我们使用inFusion...

    inFusion能够探测超过20中代码味道和代码缺陷,包括重复代码,破坏封装的类(如数据类或者万能类),高耦合的方法和类,以及一些设计不合理的类继承结构。当我们使用inFusion工具分析代码时,在分析界面左上侧出现一个代码数据度量窗口,下面将对度量金字段数据作详细的解释,从而对代码从整体上有一个宏观的认识,同时也能够预测代码中可能出现的问题,诸如类功能是否单一,成员方法复杂度是否过高,继承深度是否合理等等。

    度量金字数据具体示例如下:

    inFusion1

    鉴于上述图片中数据模糊,手工将上图黑色框中数据列出如下:

                                                    NDD  0.61

                                                    HIT   1.58

                                             20.0 NOP   30

                                     8.81   NOC         600

                             9.22   NOM                 5287   NOM  1.56

                    0.14    LOC                          48791 8298  CALL  0.37

                   CYCLO                                 7007   3076           FOUT

    顶部

    NDD,HIT分别指类的平均继承宽度和平均继承深度

    平均继承宽度:类继承树上,子类占所有类的比例,合理范围0.2~0.6

    平均继承深度:类继承树上,继承的层次,多棵继承树取平均值,合理范围0.1~0.3

    左侧                                         右侧

    CYCLO    圈复杂度                               FOUT   方法扇出次数

    LOC        代码行数                               CALL    方法调用(扇入)次数

    NOM       方法数量                               NOM     方法数量

    NOC        类数量

    NOP        package数量,C/C++中指目录数量

    左边斜坡上

    平均每个包中类个数                   600/30 = 20.0

    平均每个类中方法个数                5287/600 = 8.81

    平均每个方法的代码行数              48791/5287 = 9.22

    平均圈复杂度(CYCLO/LOC)      7007/48791 = 0.14

    右边斜坡上

    平均每个方法call的次数               8298/5287 = 1.56

    扇出扇入比                               3076/8298 = 0.37

    扇入扇出

    软件设计中,扇入和扇出的概念是指应用程序模块之间的层次调用情况。

    按照结构化设计方法,一个应用程序是由多个功能相对独立的模块所组成。

    扇入:是指直接调用该模块的上级模块的个数。扇入大表示模块的复用程度高。

    扇出:是指该模块直接调用的下级模块的个数。扇出大表示模块的复杂度高,需要控制和协调过多的下级模块;但扇出过小(例如总是1)也不好。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的模块。扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。

    设计良好的软件结构,通常顶层扇出比较大,中间扇出小,底层模块则有大扇入

    参考资料

    六种可定量分析的代码味道

    inFusion官网

     

    posted on 2015-08-17 16:07  octocat 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/zhouLee/p/4736865.html

    展开全文
  • InFusion官网: 简介 inFusion工具是一个基于对软件代码的扫描分析,得出子系统与子系统、模块与模块、类与类之间的关系,再根据这些关系推出是否有软件架构设计缺陷,并指导软件重构的工具。 工具针对每个设计...

    官网

    InFusion官网:

    简介

    inFusion工具是一个基于对软件代码的扫描分析,得出子系统与子系统、模块与模块、类与类之间的关系,再根据这些关系推出是否有软件架构设计缺陷,并指导软件重构的工具。

    工具针对每个设计缺陷(DF)给出修改建议,帮助软件重构,从而提供了从软件设计缺陷检测到重构的一整套完整解决方案。

    商业软件很贵的,花的是欧元。

    重要的概念

    下面先介绍inFusion中几个很重要的概念:Metrics、Design Flaw、Design property、Quality model、QDI。
    Metrics:
    软件度量(mertics)是从源代码中得出的软件直接参数,比如代码行数(LOC)、函数的扇入扇出(FANOUT)、不稳定因数(IF)、抽象类的个数(NOAC)、类的个数(NOC)、函数调用的深度层次等各种指标。也就是说:metrics是inFusion中最底层、最基本的数据,是根据我们的源代码计算出来的一些很客观的数据。
    Design Flaw:
    Martin Fowler的《Refactoring - Improving the Design of Existing Code》和Arthur J. Riel的《Object-Oriented Design Heuristics》中提到了代码坏味道的概念,这就是inFusion中的设计缺陷。设计缺陷,体现了软件设计中不合理的地方,意味着低的软件质量,意味着软件不易维护,容易产生BUG。
    Design property:
    设计属性(Design property)比质量属性(Quality model)低一个层次,也更为具体。设计属性(Design property)分为以下6方面:代码规模与复杂度(Size and Complexity)、封装性(Encapsulation)、耦合(Coupling)、内聚性(Cohesion)、继承性(Hierarchies)、测试性(Testing)。
    Quality model:
    该模型聚焦于评价软件维护能力,把软件质量分解为4个方面的质量属性(Quality attribute):可读性(Understandability)、可扩展性(Changeability)、可重用性(Reusability)、可测试性(Testability)。
    QDI:
    质量缺陷指数(Qualiti Deficit Index),是通过质量缺陷模型计算出来的,展示系统归一化和总的质量缺陷指数。总的QDI是设计缺陷×权重的累加值,和系统的规模大小有关,不代表系统的好坏。归一化的QDI是一个标准值,可以对比参考。归一化质量缺陷指数,是1000行代码的缺陷指数。

    下图展示了质量模型和设计属性:

    上面几个概念的关系如下:

     

     

    参考资料:

    软件设计度量工具inFusion(一):inFusion的基本概念 https://blog.csdn.net/aitangyong/article/details/50206419
    软件设计度量工具inFusion(二):看懂inFusion度量结果 https://blog.csdn.net/aitangyong/article/details/50250967

    InFusion错误类型分析 https://blog.csdn.net/wangdongliang129/article/details/52502225 

     

     

    展开全文
  • InFusion错误类型分析

    千次阅读 2016-09-13 05:48:59
    InFusion错误类型分析 1 God Class 1.1 特征 上帝类通常过多的操纵其他类的数据,从而破坏了类的封装性。上帝类从其他类中获得功能,同时增加了自身的耦合性,通常会导致自己具有规模过大和较高的复杂度...
  • An official Publication of the Infusion Nurses Society,解压密码 share.weimo.info
  • Monitoring of patient glucose infusion using a surface plasmon resonance-based fiber optic
  • ZOJ 3838 Infusion Altar

    2015-07-10 21:07:17
    ZOJ-3838-Infusion Altar 分类: ZOJ2015-07-10 11:40 3人阅读 评论(0) 收藏 举报 模拟 Infusion Altar Time Limit: 2 Seconds Memory Limit: 65536 KB Bob is recently
  • infusion 循环依赖

    2013-11-02 20:59:59
    infusion扫描结果的循环依赖是指目录之间的依赖,而不是类之间的依赖,也就是说A目录中的一个类依赖于B目录中的一个类,B目录中的一个类依赖于A目录中的一个类就可以说是循环依赖了。...
  • ZOJ-3838-Infusion Altar

    2015-07-10 11:40:52
    Infusion Altar
  • zoj 3838 Infusion Altar

    千次阅读 2014-11-30 21:50:32
    Infusion Altar Time Limit: 2 Seconds Memory Limit: 65536 KB Bob is recently playing a game called Minecraft, especially a mod called Thaumcraft. It is a mod of magic. Usually, Bob has Ob
  • Python Infusion-开源

    2021-05-12 20:38:52
    Python注入-使用Python和Pygame的简单动画和幻灯片演示。
  • 输液 什么是输液? 注入是另一种JavaScript框架。 我们的方法是让您掌控一切-它是您的界面,使用您的标记,您的方式。 输液是可访问的,并且非常非常可配置的。 输液包括: 一个使用JavaScript和jQuery开发灵活...
  • <div><p>This currently uses GitHub branch endpoints for the update to eslint-config-fluid and fluid-grunt-lint-all. The following PRs will need to be merged and new ...fluid-project/infusion</p></div>
  • Salicylic acid analogues as chemical exchange saturation transfer MRI contrast agents for the assessment of brain perfusion territory and blood-brain barrier opening after intra-arterial infusion
  • Infusion专注于强大而简单的脚本功能。 您可以使用具有突出显示源代码,自动完成功能和 (读取Eval打印循环)的内置代码编辑器,使用C#编写脚本,这使脚本编写入门变得更加容易。 Infusion支持所有客户端-编写一...
  • apress.iterating infusion clearer views of objects,classes and systems
  • 【题目】 Infusion Altar     ZOJ3838 - 浙大月赛 Time Limit: 2 Seconds  Memory Limit: 65536 KB      Bob is recently playing a game called Minecraft,
  • 水壶 ... Kettle应用程序可以轻松集成任何快速表达标准的中间件,也可以与针对同一node.js 标准快速表达应用程序共存。 由于Kettle应用程序是用声明性表示的,因此以JSON格式编码的组件树,因此可以轻松地适应现有应用...
  • 这一扩展可以让你获得Loveland医疗诊所970-541-0903的Myers维生素IV的优惠券和博客文章。 访问我们所有的Loveland诊所Myers维生素IV输液服务信息。 我们的Myers Vitamin IV扩展程序使您可以了解Loveland诊所,观看...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 491
精华内容 196
关键字:

infusion