jsf组件不显示_JSF组件库–质量不只是零缺陷

jsf组件不显示

自从我上次查看三个主要JSF组件库的质量以来已经有一段时间了。 在2009年12月,我开始比较RichFaces,Primefaces和ICEfaces的整体软件质量 。 从那时起,事情发生了变化,从现在开始,我想重新评估和更新它。 我在2009年使用的工具仍然有效,但是工具套件的设置有些棘手,我只是在浪费时间做这些事情。 由于最近对FAMIX 2.1出口商的需求,我再次查看了inFusion 。 它为GlassFish City帖子( 第一 , 第二 )发挥了作用。 但是除此之外,还有更多。 它是帮助评估系统质量的工具。 它专注于体系结构和设计质量,并允许数百万个LOC系统的质量保证。

在我向您介绍inFusion可以为您做些什么之前(隐式地通过分析候选者,我不做广告:-D)我必须感谢Radu Marinescu博士和Adrian Trifu博士提供了完整的功能测试,以及他们的产品评估许可证给我。 没有这个,我将无法像今天一样向您展示伟大的软件城市或有关开源项目质量的博客! 请查看这篇文章下面的资源,以获取有关inFusion及其背后原理的更多链接。 如果您希望我完成产品发布,请在评论中告诉我!

本文重点
 
PrimeFaces , RichFaces和ICEfaces是三个最常用的JSF组件库。 看着使用它的社区,我总是感觉到有一场比赛是唯一的。 这绝对是由PrimeFaces领导推动的。 您可以考虑他在做什么,是否喜欢。 在这篇文章中,我不是要怪罪任何人的政治正确行为,而是要通过查看交付的质量,将其重新归因于不同项目的一些客观观点。

介绍
 
在获得结果之前,我需要向您介绍一些基础知识。 如果您觉得自己已经看过足够多的内容,并且下面的所有内容都很简单,请随时处理单个结果。 InFusion以围绕但不以指标为中心的方式评估软件质量。 因此,它引入了一种特殊的质量模型(QM),该模型通过一些可测量的特征来表达软件系统的质量。 质量本身可能意味着很多不同的东西(外部,过程,内部质量)。 inFusion将质量的概念定义为“内部质量”,即系统的体系结构和设计的质量。 inFusion QM定义了两个分解层:“质量属性”层和“设计属性”层。 较高级别的概述包含一组五个“设计属性”,它们是基于几个众所周知的“设计原理”(例如DRY原理和Demeter定律)构建的。 牢记这些原则,inFusion衡量与大多数这些原则和设计规则的偏差。 通过考虑“难闻的气味”,可以对这些偏差进行量化。 所有这一切与正确的映射(可以在inFusion本身或下面提到的出版物中查找)一起计算出“质量赤字指数”(QDI)。 QDI是一个向上的,向上的无限制值,它是对分析的系统的设计质量相对于系统总体大小的“不良”度量。

除了这些高级措施之外,inFusion还提供可视化效果,例如在不同级别(包,继承,类和模块)上的耦合,封装和设计缺陷。
我也喜欢指标金字塔。 它以某种方式回答了“我的项目与其他项目相比如何?”的问题。它会生成一个金字塔,显示您项目的关键指标,并与这些数字的行业标准范围进行比较。它分为三个不同的类别(继承性,大小)和沟通)。

金字塔概述

数字表示比率。 颜色表示比率符合行业标准范围的位置(来自众多开源项目)。 每个比例
是绿色(接近平均范围),蓝色(接近低范围)或红色(接近高范围)。 生成的数字有两个目的。 首先,它们使您可以在多个维度上将代码库与其他代码库进行比较。 其次,这些数字表示您可能要花费很多精力来改善代码卫生和设计的地方。 但是,您必须根据上下文理解这些数字。

PrimeFaces(QDI:30,8)

PrimeFaces上的设计缺陷

成立于2009年,拥有不断增长的用户群。 发展负责人是Ça?atayÇivici 。 以下分析是在最新的开发主干上进行的。

系统中的代码行总数为44.123(包括注释和空格)。 素面的质量缺陷指数是30,8。
InFusion检测到12个不同的设计缺陷。 影响最大的是24个数据类和23个拒绝父母遗赠类。 其次是三个神级。 有很多重复缺陷,但没有圈依赖。

类层次结构往往又 (即,继承树倾向于具有许多深度级别和基类以及许多直接派生的子类)

倾向于包含平均数量的方法。 以相当细粒度的程序包进行组织(即每个程序包几个类)

方法往往相当长,并且具有平均的逻辑复杂性 ; 从其他几个类别中调用许多方法 (高耦合强度)(低耦合色散);

PrimeFaces的度量标准金字塔

鉴于事实是这是一个组件库,因此可以接受NDD(直接后代的数量)和HIT(继承树的高度)。 复杂的继承使理解和预测行为更加复杂。 更深的树构成更大的设计复杂性,因为涉及更多的方法和类,但是会增强继承方法的潜在重用。 NOM是指方法的数量。 这是一个简单的度量标准,它显示了一个类的复杂性,即职责,而不是方法的大小。

RichFaces(QDI:9.1)

RichFaces上的设计缺陷

  
RichFaces于2005年底起源于Ajax4jsf。它是JBoss上广泛使用的组件库。
分析使用的是最新的开发路线,仅包括核心和组成部分。

系统中的代码行总数为134.037(包括注释和空格)。

RichFaces的质量赤字指数为9.1。

类层次结构往往较高且具有平均宽度 (即,继承树倾向于具有许多深度级别和基类以及几个直接派生的子类)

倾向于包含平均数量的方法。 并且以相当细粒度的程序包组织 (即每个程序包很少的类);

方法趋于:在长度上是平均的 ,并且具有逻辑上的平均复杂度 ; 从其他几个类别中调用许多方法 (高耦合强度)(低耦合色散);

RichFaces的度量标准金字塔

通常,RichFaces在层次结构方面做得更好。 仅继承树的高度接近高范围。 通讯类的NOM也接近很高。 其余的在定义的范围内,这实际上导致了良好的QDI。

ICEfaces(QDI:16.6)

ICEfaces上的设计缺陷

ICEfaces从……开始存在。分析是针对3.1.0标签进行的,其中包括核心,推入和组件。
系统中的代码行总数为153.843(包括注释和空格)。

ICEfaces的质量赤字指数为16.6。
InFusion检测到16个不同的设计缺陷,包括35个数据类,13个上帝类,20个SAP Breakers,其次是21个拒绝父母遗赠类和35个循环依赖项。

类层次结构往往很高且具有平均宽度,即继承树倾向于具有许多深度级别和基类,以及几个直接派生的子类)

倾向于包含平均数量的方法。 以相当细粒度的程序包进行组织(即每个程序包几个类)。

方法往往相当长,并且具有平均的逻辑复杂性 ; 从其他几个类别 (低耦合色散)中调用许多方法 (高耦合强度)。

ICEfaces的度量标准金字塔

不出所料,我们还发现了接近高的继承树高度。 除此之外,只需要担心方法的数量。

解释
 
这种分析与我几年前所做的分析不同。 我跳过了所有显而易见的内容(例如,checkstyle,findbugs),因为每个人都在这里使用不同的方法,对我来说,这通常不是系统质量的可比基础。

在这里得出结论之前,让我首先表示,结果并不表示您应该使用或不使用任何候选人的天气。

系统设计质量不会影响使用它们生成的代码的质量。 同样,它也不应该成为候选人是否稳定或没有漏洞的任何指标。 它仅关注开发产品的开发人员可能面临的问题。 从长远来看,这也可能会对您作为用户产生影响。 由于设计问题昂贵,频繁且不可避免。 因此,在代码库中存在许多质量缺陷可能会影响团队随时间推移能够提供的新功能的数量,或者修复错误的时间会大大增加。 最后,与一个小团队一起,这可能会导致产品结束。

就继承而言,所有三个候选人都有相同的问题。 这样做的原因是,它们都是为客户提供良好功能的框架。 结合候选人的人数,PrimeFaces在进行分析时似乎存在最大的设计缺陷。 在质量方面,RichFaces领先于其他两个。 这是我希望从RedHat社区驱动的项目中看到的。 另一个指标是,工作中的软件社区至关重要,技能娴熟且踢腿! ICEfaces是唯一具有循环依赖性和重复代码数量异常的项目。 因此,他们可能最终不得不修复相同的错误几次。

我在这里没有任何要付出的代价,但是想向RichFaces团队致以祝贺,感谢他们提供高质量的产品! 保持良好的工作!

这是您的RichFaces-City(核心和组件)。 绿色区域是旧的org.ajax4jsf。*平房:)

富人城

资源:
灌输产品页面
实践中的面向对象度量 (Springer,2006年) iPlasma:面向对象设计质量评估的集成平台 (PDF) 实用设计质量评估 (幻灯片分享演示)

参考: JSF组件库–质量不只是零缺陷。 来自我们的JCG合作伙伴 Markus Eisele在Java的企业软件开发博客中。


翻译自: https://www.javacodegeeks.com/2012/08/jsf-component-libraries-quality-is-more.html

jsf组件不显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux安装mysql(shell一键安装)

1. 相关文件(install_mysql.sh、my.cnf、mysqld相关内容在文中最后面) 2. 将上面的文件上传到linux服务器某一目录下 3.给install_mysql.sh赋执行权限 # chmod x instll_mysql.sj 4. 执行install_mysql.sh # ./install_mysql.sh 5. 验证 6. install_mysq…

c语言编译时检查逻辑错误吗,C语言陷阱与技巧20节,自定义“编译时”assert方法,在代码编译阶段检查“逻辑”错误...

在C语言程序开发中,程序员写代码时应该考虑的“面面俱到”,这样才能写出功能稳定的程序。例如,在实现 open() 函数时,先完成它的功能固然是重要的,但是程序员还需要考虑各种“意外”,比如下面这种情况。假设…

springboot 多个sevice类实现同一接口的调用

参考页面:http://blog.csdn.net/xiao190128/article/details/54890759/;感谢分享 service 是有用的相当于 xml配置中得bean id service 也可以不指定 不指定相当于 bean id com. service.service 就是这个类的全限定名,表示给当前类命名一个别名&a…

影场与属性访问器界面

卡尔迪亚(Carl Dea)最近跟踪了我的一篇名为“ 保存内存”的博客文章! 为属性使用阴影字段 。 在他的博客中,他建议使用一个称为“属性访问器”的接口来消除使用阴影字段所需的大量样板代码。 卡尔还提到他尚未用大量数据测试他的方…

[ZJOI2012]数列

超级水的题还wa了一次 首先很容易发现其实就只有两个值并存 然后 要注意把数组初始化啊。。。可能后面有多余的元素&#xff08;对拍的时候由于从小到大就没跑出错&#xff09; #include <bits/stdc.h> using namespace std; int a[170],b[170],a1[170],a2[170],x1[170],…

在c语言中,可以使用动态内存分配技术定义元素个数可变的数组,C语言复制在线考题1精选.doc...

C语言复制在线考题1精选窗体顶端《C语言程序设计208304》综合测试返回测验列表大项 1 / 2 - 单项选择题60.0/ 70.0 分本大题共35道&#xff0c;每题2分&#xff0c;共计70分&#xff0c;答错、不答均不得分。题目 1 / 552.0/ 2.0 分有字符数组 a[80]和 b[80]&#xff0c;则正确…

信管家源代码c语言,用队列实现按层次创建二叉树的源代码,最好是C语言

满意答案Dcool2016.08.27采纳率&#xff1a;58% 等级&#xff1a;9已帮助&#xff1a;416人队列&#xff1f;&#xff1f;你每输入一个节点将其存入队列中&#xff0c;再输入它的左孩子&#xff0c;它的左孩子也会入队&#xff0c;我们取的时候应先取该节点的左孩子&#xf…

jboss4 java_JBoss核心Java Web服务

jboss4 java这篇博客文章涉及Web服务。 好吧&#xff0c;更确切地说&#xff0c;它处理JBoss上的“普通” java Web服务。 这意味着我们将创建一个没有任何其他框架&#xff08;例如CXF&#xff0c;Axis等&#xff09;的Web服务。 JBoss它自己提供对Web服务的支持。 因此&#…

Java中的注解是如何工作的?

自Java5.0版本引入注解之后&#xff0c;它就成为了Java平台中非常重要的一部分。开发过程中&#xff0c;我们也时常在应用代码中会看到诸如Override&#xff0c;Deprecated这样的注解。这篇文章中&#xff0c;我将向大家讲述到底什么是注解&#xff0c;为什么要引入注解&#x…

android 广告弹出层,安卓广告活动弹窗控件 android-adDialog

软件介绍android-adDialog&#xff0c;一个简单、强大的广告活动弹窗控件。显示一个默认广告弹窗&#xff0c;支持单广告活动、多广告活动&#xff0c;当弹窗显示多广告是默认显示底部小圆圈&#xff0c;当显示单活动时默认不显示底部小圆圈&#xff1b;默认支持弹窗从上&#…

面试技巧

本人是一名95后的老奶奶了&#xff0c;是一名彻头彻尾的程序媛&#xff0c;这是本人的第一篇博客&#xff0c;只是随笔&#xff0c;写写自己的心得而已&#xff0c;写的不好勿喷&#xff01;&#xff01;&#xff01; 学习计算机大概已经四年了&#xff0c;在这期间接触过各种计…

(企业 / 公司项目)如何使用分布式任务调度框架Quartz集成 和 SpringBoot自带的定时任务集成?

SpringBoot自带的定时任务 首先在你的微服务项目中创建一个新的模块&#xff0c;定时调度模块 pom.xml里面关联公共模块common的依赖其他不需要改变 然后启动类别删&#xff0c;启动项目是否报错&#xff0c;写一个简单的测试类访问路径是否成功 package com.jiawa.train.bat…

在Spring中配置多个View解析器

1.简介 在Spring中&#xff0c;提供了View Resolver来使用模型中可用的数据来解析视图&#xff0c;而无需与JSP&#xff0c;Velocity或Thymeleaf等View技术紧密绑定。 Spring可以根据需要轻松灵活地配置一个或多个View Resolver 。 2. Spring MVC应用程序流程 在继续理解多个V…

android 知识体系

转载于:https://www.cnblogs.com/mamamia/p/8567570.html

android webview webp,iOS WebView中使用webp格式图片的方法

webp格式图片webp格式图片是google推出的&#xff0c;相比jpg png有着巨大的优势&#xff0c;同样质量的图片webp格式的图片占用空间更小&#xff0c;在像电商这样图片比较多的App中&#xff0c;使用webp格式图片会很有优势。引言很早之前&#xff0c;我们的项目中就已经采用了…

呵呵!Function构造函数

今天准备吐槽一下Function构造函数。 我们知道&#xff0c;不管是函数声明还是函数表达式都是基于词法作用域的&#xff0c;明白这点在闭包中十分重要&#xff0c;譬如&#xff1a; var aglobal; function foo(){var alocal;return function(){console.log(a);} } foo()(); …

android关机位置定位,Android5.0关机充电动画位置

充电动画位置bootable\bootloader\lk\dev\logo充电动画对应的分辨率&#xff1a;\bootable\bootloader\lk\project\XX.mkBOOT_LOGO : wxga#LOCAL_DIR : $(GET_LOCAL_DIR)TARGET : teft6752_lwt_lMODULES app/mt_boot \dev/lcmMTK_EMMC_SUPPORT yesDEFINES MTK_NEW_COMBO_EMM…

nosql的数据服务_使用NoSQL实现实体服务–第3部分:CouchDB

nosql的数据服务在本系列的第2部分中 &#xff0c;我使用SOA的“合同优先”技术创建和部署了产品实体服务&#xff0c;现在&#xff0c;我将致力于服务实现的NoSQL数据库方面。 正如我在第1部分中已经提到的那样&#xff0c;我已经选择CouchDB作为我的NoSQL数据库&#xff0c;选…

缓存穿透、缓存击穿与失效时的雪崩效应

问题&#xff0c;原理&#xff0c;解决方案转载于:https://www.cnblogs.com/tuhooo/p/8573614.html

android电视root权限获取,电视盒子/ 智能电视如何通过ADB获取ROOT权限?

如何通过adb获取root权限(安卓电视盒和智能电视通用)?Android 系统rom里面最主要的就3个文件&#xff1a;boot.img、system.img、userdata.img其中boot.img 存放着内核以及Android系统的配置信息&#xff0c;比如android系统各文件夹的读写权限&#xff0c;adb 的权限。所以如…