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() 函数时,先完成它的功能固然是重要的,但是程序员还需要考虑各种“意外”,比如下面这种情况。假设…

影场与属性访问器界面

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

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

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

jboss4 java_JBoss核心Java Web服务

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

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

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

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

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

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

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

在Spring中配置多个View解析器

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

android 知识体系

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

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

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

确定活动的热点垃圾收集器

StackOverflow问题查找正在运行哪种类型的垃圾收集 器,jvm的默认垃圾收集器 , 如何通过查看gc日志来查看正在运行的垃圾收集器? ,以及如何知道HotSpot jvm的当前GC策略? 和博客文章如何以编程方式获取GC信息表明了人们…

app store 关键词

如何选取关键字,让你的应用关键词越来越多? 很多朋友在做应用商店优化的时候,都会遇到一个让人很头疼的问题:如何选取关键词?关键词的质量直接关系到App的自然下载量,所以,我们应该用科学的办法…

android 调用微信语音识别,Android 仿微信语音识别

参考于:Android模仿微信语音聊天功能,这代码跑起来有问题,自己改动了一下,基本上没什么大问题先贴下效果图1、三个布局文件activity_main.xmldialog_manger.xmlitem_layout2.自定义的类(1)DialogMangerpackage com.nickming.view;…

老罗android oat,入门ART虚拟机(5)——OAT文件

Android安全交流群:478084054先贴老罗的一张图:再摘一段老罗的描述:“作为Android私有的一种ELF文件,OAT文件包含有两个特殊的段oatdata和oatexec,前者包含有用来生成本地机器指令的dex文件内容,后者包含生…

Dajngo-Xadmin 修改菜单摆放排序

问题: Xadmin 默认是读取了所有被注册到 xadmin 的模型生成对应的菜单!这个是没问题的 ,但是xadmin又对菜单做了 "通过菜单名称" 排序.英文状态下我们的排列至少是 a-z排列的,但是一到中文就乱了,完全不符合我们的要求. 解决办法: 要到达按照我们 在 django 的 setti…

华为鸿蒙2.0什么核心,鸿蒙系统2.0:安卓最核心部分基本已去除,将带来全新的体验...

早些时候,华为在东莞举办的华为2020华为开发者大会如期召开,在大会上华为正式发布了鸿蒙系统2.0,并称将于明年应用到智能手机上,其中升级了EMUI 11的用户可以优先获得体验鸿蒙系统2.0的资格,瞬间将会议推向高潮。值得一…

Java 8:在2分钟内将智能流与数据库一起使用

快速流媒体 当Java 8最终问世时,我和一些大学开始了一个开源项目,以利用Java 8的流库使整个Java / DB问题进一步向前发展,以便将数据库表视为纯Java 8流。 速度诞生了! 哇,现在我们可以做类型安全的数据库应用程序了&a…

MapReduce 详解

MapReduce的整个运行分为两个阶段: Map和Reduce Map阶段由一定数量的Map Task组成 输入格式的数据格式化:InputFormat 数日数据的处理:Mapper 数据分组:Partitioner 下面流程图: 1. Map task 首先从HDFS上Read文件,通过…

早期访问中具有NetBeans的Oracle公共云Java服务

谁期望发生这种情况:Oracle正在开发公共云产品,并且即将开始正式启动的迹象已经出现。 在正式宣布之后将近一年,我被邀请加入所谓的“抢先体验”计划,以试驾新服务并提供反馈。 多亏负责产品的经理Reza Shafii ,我才可…