Download - Metricas en POO
Universidad Politécnica Salesiana
Métricas en POO
Vinicio Changoluisa
Octubre 2012
Vinicio Changoluisa
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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