-
Notifications
You must be signed in to change notification settings - Fork 1
PG04_Entidades con defecto
En este apartado se presentan un conjunto de entidades de código con defectos identificadas. Para la identificación de defectos se utilizan herramientas específicas (InCode y PMD), herramientas de medición y valores umbrales (SourceMeter y RefactorIT) e inspecciones de código manual.
Por cada instancia del defecto identificada se debe crear una fila con la siguiente información:
C1: Nombre del defecto.
C2: Tipo de la entidad [subsistema|clase|método].
C3: Nombre único (cualificado) de la entidad anómala. Un mismo defecto puede involucrar varias entidades, una fila por cada una.
C4: Rango de líneas de código donde aparece e hiperenlace al código fuente de la entidad del repositorio público
C5: Conjunto de métricas e intervalos utilizados para su identificación si existen.
C6: Otras consultas aplicadas para la detección.
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
Defectos dentro de clases- Medibles
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
| Data Class | Clase | org.jfree.chart.renderer.xy.GradientXYBarPainter | URL GitHub | NOA alto, baja lógica propia | Detectado con InCode; clase centrada principalmente en datos y comportamiento simple |
| Data Class | Clase | org.jfree.chart.renderer.category.GradientBarPainter | URL GitHub | NOA alto, baja complejidad funcional | Detectado con InCode; predominan atributos y comportamiento poco complejo |
Defectos dentro de clases- Complejidad innecesaria
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
| God Class | Clase | org.jfree.chart.renderer.category.LayeredBarRenderer | líneas 60-400 URL GitHub | NLOC alto, complejidad alta, baja cohesión | Detectado con InCode |
| God Class | Clase | org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer | líneas 78-350 URL GitHub | NLOC alto, VG alto | Detectado con InCode |
| God Class | Clase | org.jfree.chart.renderer.category.StackedBarRenderer | líneas 70-300 URL GitHub | NLOC alto, NOM alto | Detectado con InCode |
| God Class | Clase | org.jfree.chart.renderer.xy.StackedXYAreaRenderer | líneas 90-350 URL GitHub | NLOC alto, LCOM alto | Detectado con InCode |
| Lazy Class | Clase | ubu.gii.dass.c01.Reusable | líneas 3-8 URL GitHub | NLOC bajo, NOA = 0, NOM = 1, WMC muy bajo | Detectado mediante revisión manual y validado con métricas; clase con responsabilidad mínima, sin atributos y con un único método simple |
Defectos dentro de clases - Duplicación
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
| Internal Duplication | Clase | org.jfree.chart.renderer.xy.XYLineAndShapeRenderer | URL GitHub | Bloques de código similares | Detectado con InCode como duplicación interna |
| External Duplication | Clase | org.jfree.chart.renderer.category.StatisticalBarRenderer | URL GitHub | Similitud con otras clases del paquete renderer | Detectado con InCode como duplicación externa |
| External Duplication | Clase | org.jfree.chart.renderer.category.LineAndShapeRenderer | URL GitHub | Similitud con otras clases del paquete renderer | Detectado con InCode como duplicación externa |
| External Duplication | Clase | org.jfree.chart.renderer.category.GradientBarPainter | URL GitHub | Similitud con otras clases del paquete renderer | Detectado con InCode como duplicación externa |
Defectos dentro de clases - Lógica condicional
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
Defectos entre clases - Datos
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
| Data Clump | Método | org.jfree.chart.renderer.category.GanttRenderer.drawTask | Líneas 377 - 506 GitHub | NP = 9 (Número de parámetros).VG ≈ 17 NLOC ≈ 110 | Se confirma el diagnóstico de inCode: los parámetros plot, domainAxis, rangeAxis, dataset, row y column se pasan juntos sistemáticamente, lo que indica una falta de abstracción de "Contexto de Dibujo" |
| Data Clump | Método | org.jfree.chart.renderer.xy.SamplingXYLineRenderer.startSeriesPass | Líneas 159 - 166 GitHub | NP = 6 (Número de parámetros) | Se confirma el diagnóstico de inCode: con los parámetros dataset, series, firstItem, lastItem, pass, passCount |
Defectos entre clases – Herencia
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
Defectos entre clases – Responsabilidad
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
| Feature Envy | Método | org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer.drawItem | líneas 120-250 URL GitHub | CBO alto, uso intensivo de datos externos | Detectado con InCode |
| Feature Envy | Método | org.jfree.chart.renderer.xy.ClusteredXYBarRenderer.drawItem | líneas 150-280 URL GitHub | CBO alto, acceso frecuente a datos de otras clases | Detectado con InCode |
| Schizophrenic Class | Clase | org.jfree.chart.axis.NumberAxis | Líneas 1 - 855 GitHub | TCC (Tight Class Cohesion) < 0.2: Cohesión extremadamente baja. WMC (Weighted Method Count) > 100: Elevada complejidad acumulada. ATFD (Access to Foreign Data) = Alto: Manipula datos de Plot, Range, AxisState, etc. | inCode confirma que la interfaz pública es excesiva y fragmentada. La clase sufre una crisis de identidad al gestionar simultáneamente: 1) Cálculo de rangos, 2) Formateo de etiquetas, 3) Lógica de renderizado de marcas (ticks) y 4) Notificación de eventos. Viola el Principio de Responsabilidad Única (SRP). |
Defectos entre clases- Adecuación al cambio
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
Defectos entre clases- Biblioteca de clases
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
| C1 | C2 | C3 | C4 | C5 | C6 |
|---|---|---|---|---|---|
| Long Method | Método | ubu.gii.dass.c01.Client.main(String[] arg) | líneas 9-32 URL GitHub | NLOC relativamente alto respecto al resto del proyecto, VG revisada manualmente Detectado mediante inspección manual; el método concentra la secuencia principal del programa en una única unidad de código | |
- Objetivos y requisitos
- Enunciado
- Resultados obtenidos por los estudiantes
- Objetivos y requisitos
- Enunciado
- Resultados obtenidos por los estudiantes
- Objetivos y requisitos
- Enunciado
- Resultados obtenidos por los estudiantes