26
Universidad Politécnica Salesiana Métricas en POO Vinicio Changoluisa Octubre 2012 Vinicio Changoluisa

Metricas en POO

Embed Size (px)

Citation preview

Page 1: Metricas en POO

Universidad Politécnica Salesiana

Métricas en POO

Vinicio Changoluisa

Octubre 2012

Vinicio Changoluisa

Page 2: Metricas en POO

Métricas para sistemas orientados a

objetos La mayoría de las métricas orientadas a objetos se basan en las características distintivas del software orientado a objetos respecto al software convencional:

Localización: forma en que se concentra la información dentro de un programa.

Encapsulamiento: empaquetamiento de una colección de elementos.

Ocultamiento de la información: supresión de los detalles operativos de un componente.

Herencia: mecanismo que permite la propagación de responsabilidades de un objeto a otro.

Abstracción: mecanismo que permite concentrarse en los detalles esenciales de un componente sin considerar los de nivel inferior.

Vinicio Changoluisa

Page 3: Metricas en POO

Métricas para sistemas orientados a

objetos

Clasificación de las métricas:

Métricas a nivel del sistema

Métricas orientadas a clases

Métricas para pruebas orientadas a objetos

Métricas para proyectos orientados a objetos

Métricas orientadas a operaciones

Vinicio Changoluisa

Page 4: Metricas en POO

Métricas a nivel del sistema

Métricas MOOD (Metrics for Object Oriented Design)

[Brito e Abreu y Melo 1996]

Proporción de métodos ocultos (Method Hiding Factor

MHF). Es la proporción entre la suma de los grados de

invisibilidad de los métodos en todas las clases (métodos

protegidos y privados) y el número total de métodos

definidos en el sistema.

Vinicio Changoluisa

Page 5: Metricas en POO

Métricas a nivel del sistema

MHF se propone como una medida de encapsulación, cantidad relativa de información oculta.

Cuando MHF incrementa el esfuerzo para corregirlos disminuye

Vinicio Changoluisa

Page 6: Metricas en POO

Métricas a nivel del sistema

Proporción de atributos ocultos ((Attribute Hiding Factor

–AHF-). Es la proporción entre la suma de los grados de

invisibilidad de los atributos en todas las clases (atributos

protegidos y privados) y el número total de atributos

definidos en el sistema

Las pautas de diseño sugieren que no se debe emplear

atributos públicos, ya que se considera que violan los

principios de encapsulación al exponer la implementación de

las clases. Vinicio Changoluisa

Page 7: Metricas en POO

Métricas a nivel del sistema

Proporción de métodos heredados (Method Inheritance

Factor –MIF). Proporción entre el número de métodos

heredados y el número total de métodos.

MIF: Medida de la herencia (reuso)

Vinicio Changoluisa

Page 8: Metricas en POO

Métricas a nivel del sistema Proporción o factor de polimorfismo (POF): es la proporción

entre el número real de posibles situaciones polimorfas para una clase Ci y el máximo número posible de situaciones polimorfas en Ci. Es decir, es el número de métodos heredados redefinidos dividido entre el máximo número de situaciones polimorfas distintas posibles

Abreu indica que sobrecargando los métodos se reduce la complejidad, si incrementa la mantenibilidad y comprensión.

Vinicio Changoluisa

Page 9: Metricas en POO

Métricas orientadas a clases

Conjunto de métricas CK [Chidamber y Kemerer 1994]:

1. Métodos ponderados por clase (Weighted Methods per

Class -WMC-): recoge la noción de complejidad por

método.

Para una clase C con M1, M2, ...,Mn métodos con un peso de

complejidad c1, c2, ..., cn respectivamente:

WMC =∑ ci

Si todos los métodos tienen igual complejidad ci = 1 y WMC = n

Mientras más alto mas complejo y difícil de utilizar.

Vinicio Changoluisa

Page 10: Metricas en POO

Métricas orientadas a clases

Clases con un gran número de métodos requieren más

tiempo y esfuerzo para desarrollarlas y mantenerlas.

Estas clases tienden a ser específicas de la aplicación,

limitando su posibilidad de reuso.

Lorenz y Kidd sugieren un umbral de 40 o 20, dependiendo

si las clases son o no de interface de usuario respectivamente

Vinicio Changoluisa

Page 11: Metricas en POO

Métricas orientadas a clases 2. Profundidad del árbol de herencia ((Depth of Inheritance

Tree –DIT-)):

Longitud del camino máximo entre un nodo y la raíz del árbol.

En el nivel cero de la jerarquía se encuentra la clase raíz.

“El uso de la herencia es visto como un compromiso” :

Más alto Más reutiliza el código Más complejo (difícil de explicar comportamiento)

Bajos niveles de herencia código escrito en un estilo funcional NO aprovecha el concepto de herencia

Vinicio Changoluisa

Page 12: Metricas en POO

Métricas orientadas a clases

3. Número de hijos ((Number of Children –NOC-): es el

número de descendientes inmediatos de una clase (nodo).

Es un indicador del nivel de reuso

NH grande mas reutilización por herencia problemas de

abstracción de código

Dificultad para modificar una clase, afecta a todos los hijos.

Vinicio Changoluisa

Page 13: Metricas en POO

Métricas orientadas a clases

4. Acoplamiento entre clases (Coupling Factor –CF-):

número de clases que se acoplan con una clase dada. Hay

dependencia entre dos clases cuando una de ellas usa

métodos o variables de la otra clase

“Comunicación entre clases”

Mayor CF peor modularidad peor

encapsulamiento

Vinicio Changoluisa

Page 14: Metricas en POO

Métricas orientadas a clases

5. Respuesta para una clase (Response For a Class –RFC):

es el número de métodos que responden a una petición .

Mayor RPC mas complicada las pruebas y el

mantenimiento

6. Métrica de falta de cohesión (MFC): número de grupos

de métodos locales que no acceden a atributos comunes.

MFC es el número de conjuntos disjuntos de métodos

locales. MFC Alto la clase debe dividirse

Vinicio Changoluisa

Page 15: Metricas en POO

Ciencia del software de Halstead

Ciencia del software de Halstead

Métricas basadas en el cálculo de palabras clave (reservadas) y

variables.

1. Operadores (palabras reservadas):

Sentencias de control, operadores: If, for while, swtich, do

while, +, - ,*

2. Operandos:

Variables y constantes

Vinicio Changoluisa

Page 16: Metricas en POO

Ciencia del software de Halstead

Halstead distingue entre:

a. El número de operadores y operandos únicos y

b. El número total de operadores y operando.

n1 - número de operadores únicos que aparecen en un

programa

N1 - número total de ocurrencias de operadores

n2 - número de operandos únicos que aparecen en un programa

N2 - número total de ocurrencias de operandos

Vinicio Changoluisa

Page 17: Metricas en POO

Ciencia del software de Halstead Halstead propone calcular: longitud, volumen y esfuerzo.

Longitud:

N= N1+N2

Donde N es una simple medida del tamaño de un programa.

Cuanto más grande sea el tamaño de N, mayor será la dificultad para comprender el programa y mayor el esfuerzo para mantenerlo. N es una medida alternativa al simple conteo de líneas de código. Aunque es casi igual de fácil de calcular, N es más sensible a la complejidad que el contar el número de líneas porque N no asume que todas las instrucciones son igual de fácil o de difícil de entender.

Vinicio Changoluisa

Page 18: Metricas en POO

Ciencia del software de Halstead

Volumen:

V = N x log2(n)

donde n = n1 + n2

El volumen da un peso extra al número de operadores y

operandos únicos.

Por ejemplo, si dos programas tienen la misma longitud N

pero uno tiene mayor número de operadores y operandos

únicos, que naturalmente lo hacen más difícil de entender y

mantener, este tendrá un mayor volumen.

Vinicio Changoluisa

Page 19: Metricas en POO

Ciencia del software de Halstead

Esfuerzo

E = V / L

Donde L = (2/n1 )*(n2 /N2 )

El esfuerzo es una medida del trabajo requerido para

desarrollar un programa.

Desde el punto de vista del mantenimiento, el esfuerzo se

puede interpretar como una medida del trabajo requerido

para comprender un software ya desarrollado.

Vinicio Changoluisa

Page 20: Metricas en POO

Métricas orientadas a clases

Métricas de Lorenz y Kidd [Lorenz y Kidd 1994]:

Dividen las métricas en cuatro categorías:

1. Tamaño (recuento de atributos y operaciones),

2. Herencia (reutilización del código a lo ancho y alto de la

jerarquía de clases),

3. Valores internos (cohesión y análisis de código) y

4. Valores externos (acoplamiento y reuso).

Vinicio Changoluisa

Page 21: Metricas en POO

Métricas orientadas a clases

Métricas de Lorenz y Kidd [Lorenz y Kidd 1994]:

Tamaño de clase (TC). El tamaño general de una clase se

determina utilizando las siguientes medidas:

Número total de operaciones

Número de atributos

Número de operaciones invalidadas por una subclase

(NOI). La invalidación consiste en la sustitución en la

subclase de una operación heredada por una versión

especializada para su propio uso(reescritura de métodos).

Vinicio Changoluisa

Page 22: Metricas en POO

Métricas orientadas a clases

Número de operaciones añadidas por una subclase

(NOA): operaciones propias de la subclase que no aparecen

en las superclases.

Índice de especialización (IE):

IE = (NOI × nivel)/ Mtotal

nivel: nivel de la clase en la jerarquía de clases

Mtotal: Número total de métodos de la clase

Vinicio Changoluisa

Page 23: Metricas en POO

Métricas orientadas a operaciones Métricas de Lorenz y Kidd [Lorenz y Kidd 1994]:

1. Tamaño medio de operación (TOmed): }

a) LOC

b) Número de mensajes enviados por la operación

2. Complejidad de operación (CO): se puede aplicar cualquier métrica de complejidad del software convencional

3. Número medio de parámetros por operación (NPmed)

Tan largo como sea el número de parámetros de operación, más compleja será la colaboración entre objetos.

Vinicio Changoluisa

Page 24: Metricas en POO

Métricas para pruebas orientadas a

objetos

Métricas para pruebas orientadas a objetos [Binder

1994]:

1. Encapsulamiento

a) Carencia de cohesión en métodos (CCM): se aplica la

métrica LOC de CK.

b) Porcentaje público y protegido (PPP): porcentaje de

atributos públicos de la clase

c) Acceso público a datos miembro(APD): número de clases

que pueden acceder a atributos de otras clases, violando el

encapsulamiento

Vinicio Changoluisa

Page 25: Metricas en POO

Métricas para pruebas orientadas a

objetos

2. Herencia

a) Número de clases raíz (NCR): número de jerarquías de

clases distintas.

b) Admisión (ADM): indicación de la herencia múltiple. Si

ADM > 1 la clase hereda de más de una clase raíz.

c) Número de descendientes (NOD) y profundidad del árbol

de la herencia

d) (APM): se aplican las correspondientes métricas CK

Vinicio Changoluisa

Page 26: Metricas en POO

Métricas para proyectos orientados a

objetos

Métricas de Lorenz y Kidd [Lorenz y Kidd 1994]

Número de guiones de escenario (NGE): un guión de

escenario es una secuencia detallada de pasos que describen la

interacción entre el usuario y la aplicación.

Número de clases clave (NCC): clases que se centran en el

dominio de negocio del problema en cuestión.

Número de subsistemas (NSUB): proporcionan una idea de

la asignación de recursos, de la planificación y del esfuerzo

global de integración.

Vinicio Changoluisa