Академический Документы
Профессиональный Документы
Культура Документы
discussions, stats, and author profiles for this publication at: http://www.researchgate.net/publication/39698368
CITATION
READS
137
3 AUTHORS, INCLUDING:
Mara N. Moreno Garca
Universidad de Salamanca
Universidad de Salamanca
SEE PROFILE
SEE PROFILE
Revisado por:
Dr. Juan Manuel Corchado Rodrguez
Departamento de Informtica y Automtica
Universidad de Salamanca
corchado@usal.es
Da. M Esperanza Manso Martnez
Departamento de Informtica
Universidad de Valladolid
manso@infor.uva.es
Aprobado en el Consejo de Departamento de 29 de octubre de 2001
Informacin de los autores:
Pedro Jess Vzquez Escudero
Estudiante de doctorado del Departamento de Informtica y Automtica
Universidad de Salamanca
pedro.vazquez.e@terra.es
Dra. Mara N. Moreno Garca
rea de Lenguajes y Sistemas Informticos
Departamento de Informtica y Automtica
Facultad de Ciencias - Universidad de Salamanca
Plaza de la Merced S/N 37008 Salamanca
mmg@usal.es
Dr. Francisco Jos Garca Pealvo
rea de Ciencia de la Computacin e Inteligencia Artificial
Departamento de Informtica y Automtica
Facultad de Ciencias - Universidad de Salamanca
Plaza de la Merced S/N 37008 Salamanca
fgarcia@usal.es
Este trabajo ha sido parcialmente financiado por el proyecto DOLMEN de la CICYT,
TIC2000-1673-C06-05, Ministerio de Ciencia y Tecnologa.
Este documento puede ser libremente distribuido.
2001 Departamento de Informtica y Automtica - Universidad de Salamanca.
Resumen
El objetivo del presente trabajo es ofrecer una panormica del estado actual de la medicin de
productos software y en particular en orientacin a objetos, enfoque que ha alcanzado en la
actualidad altas cotas de popularidad debido a los beneficios que promete: rpido desarrollo,
reutilizacin, gestin de la complejidad, etc., caractersticas que inciden directamente en la
mejora de la calidad de los productos software. Se propone un marco de trabajo basado en el
lenguaje de marcas XML para facilitar la recoleccin y anlisis de mtricas.
Abstract
This work examines the state of art in software products measuring, more specifically in the
Object Oriented approach, which has become high popular because of the benefits it promises:
rapid development, reuse, complexity management, etc., all of this, characteristics that increase
directly the quality of the software products. Also is proposed a metrics framework based on
markup language XML which facilitates the activities of collecting and analysing software
metrics.
DPTOIA-IT-2001-002
Tabla de Contenidos
1. Introduccin ____________________________________________________ 1
2. Propiedades de las mtricas ________________________________________ 2
2.1. Factores que determinan la calidad del software _________________________2
2.2. Medicin y propiedades de las mtricas ________________________________3
2.3. Validacin de mtricas ______________________________________________4
2.4. Escalas____________________________________________________________5
DPTOIA-IT-2001-002
iii
1. Introduccin
Uno de los objetivos fundamentales del uso de mtricas en sistemas software es evaluar los
mismos con el fin de controlar y mejorar su calidad
Por otra parte, cuestiones como el tiempo estimado para el desarrollo de un proyecto, los
costes de mantenimiento una vez que el producto est acabado y funcionando, etc., no pueden
ser fcilmente resueltas sin la ayuda de la medicin.
Parte del concepto de la Ingeniera del Software es la idea de que el producto debera ser
controlable. Segn De Marco, no se puede controlar lo que no se puede medir [De Marco,
1982]. Fenton y Pfleeger aaden: No se puede predecir lo que no se puede medir [Fenton y
Pfleeger, 1997].
Proyectos futuros podrn beneficiarse de la medicin efectuada en proyectos pasados de
similares caractersticas, o comparando componentes similares dentro del mismo proyecto,
permitiendo realizar predicciones ms ajustadas.
La mayora de las estrategias de medida tienen por objetivo evaluar las diferentes
caractersticas de calidad del software, tales como la fiabilidad, la facilidad de uso, la facilidad
de mantenimiento, la robustez, etc.
Haciendo un repaso histrico los inicios de la medicin pueden datarse en los aos 60, en
que slo se recogan medidas muy primitivas tales como las lneas de cdigo (LOC) de los
mdulos y el tiempo dedicado en cada etapa del ciclo de vida.
Modelos posteriores (COCOMO) en los aos 70 intentaron establecer una relacin entre el
tamao de los programas y el esfuerzo necesario para realizarlos y mantenerlos [Boehm, 1981].
McCall y Boehm, entre otros, han definido modelos de medidas orientados hacia la
evaluacin de la calidad de los productos software [MacCall et al., 1977], [Boehm et al., 1978].
En los aos 80 se profundiz en mtricas de complejidad y de diseo modular y
estructurado, modelos de estimacin del coste y del tiempo de desarrollo de los proyectos
software. Aparecieron las normas ISO 9000 y los modelos CMM [Paulk et al., 1993] y SPICE
[SPICE, 1999] centrados en los procesos software.
En los aos 90 se busca sentar unas bases bien establecidas frente a la confusin reinante
en los ochenta. Los intentos se centran en clasificar, estudiar y validar las mtricas del software
[Fenton, 1991]. Aparece una revisin del modelo COCOMO (COCOMO II) [USC-CSE, 1997]
para reflejar los grandes cambios en las tcnicas de desarrollo producidos en ms de una dcada
y media: declive de los procesos batch ejecutados por la noche en mainframes frente al
auge de los procesos en tiempo real, nfasis en la reutilizacin del software y construccin de
nuevos sistemas usando componentes ya existentes y la dedicacin de un mayor esfuerzo al
diseo y a la gestin de los procesos de desarrollo software.
Este trabajo examina el estado del arte de la medicin en orientacin a objetos. Despus de
esta breve introduccin histrica, se repasan las propiedades que, idealmente, debe poseer una
mtrica para que sea de utilidad.
A continuacin se hace una breve presentacin del enfoque orientado a objetos, que por sus
caractersticas singulares, requerirn de un conjunto adicional de mtricas que completen o
sustituyan a las tradicionales.
Conocidas las caractersticas principales del software orientado a objetos, se presenta una
taxonoma de mtricas OO en tres dimensiones: una la propiedad que se quiere medir (cohesin,
acoplamiento, herencia, etc.), otra el nivel a que se quiere medir (variable, mtodo, clase,
-1-
sistema...) y otra la etapa del ciclo de vida en que se mide (anlisis, diseo, implementacin,
prueba...).
Se hace un estudio en mayor profundidad de las mtricas relacionadas con la prueba y la
calidad del software.
Por ltimo se propone un marco de trabajo para mtricas utilizando el lenguaje de marcas
XML para facilitar la recoleccin y anlisis de las mtricas.
Caractersticas operacionales
FIABILIDAD
CORRECCIN: un programa es correcto cuando efecta sin errores las tareas que
le son encomendadas.
DPTOIA-IT-2001-002
Vzquez et al.
Estas caractersticas miden la forma en que el producto se relaciona con su entorno. Por
ejemplo, la fiabilidad se define como la operacin de un producto libre de fallos; depende del
entorno de mquina y del usuario. Para ser medidas, estas caractersticas se apoyan en atributos
internos del producto:
Atributos internos: aquellos que se pueden medir en trminos del propio producto
independientemente de su comportamiento.
Atributos externos: son aquellos que slo se pueden medir con respecto a cmo el
producto se relaciona con su entorno.
DPTOIA-IT-2001-002
Mtricas directas: aquellas que para medir un atributo de una entidad slo precisan de
dicho atributo.
Mtricas indirectas: aquellas que no miden un atributo directamente, sino que para
medir un atributo de una entidad precisan medir ms de un atributo de dicha entidad, es
decir, combinan varias mtricas directas.
Dado que las dimensiones de mayor inters (por ejemplo, calidad y fiabilidad) son a
menudo externas a la entidad que est siendo medida, se suele necesitar de medidas indirectas
para alcanzar los resultados deseados. Por ejemplo, el nmero de defectos conocidos se cuenta
para valorar la calidad de un programa.
Un modelo que mida de forma precisa los atributos es necesario pero no suficiente para
construir un sistema de prediccin preciso. La medicin se utiliza no slo en la valoracin de un
atributo actual sino en la prediccin de un atributo futuro.
[Kitchenham et al., 1995] da las siguientes propiedades que las mtricas deben poseer para
ser vlidas:
Mtricas directas:
Para poder medir un atributo debe permitir que distintas entidades sean
distinguibles entre s (problema de la unicidad). Las afirmaciones hechas que
impliquen escalas numricas tienen sentido slo si son nicas, esto es, si se
mantiene la afirmacin cuando la escala es reemplazada por otra escala igualmente
admisible.
DPTOIA-IT-2001-002
Vzquez et al.
Por ejemplo, podemos decir que una piedra pesa el doble que otra, pero no que una
piedra est el doble de caliente que otra. El peso es una escala de ratio1 y por tanto
se mantiene la afirmacin independientemente de que lo expresemos en gramos o
en kilos. Las escalas de temperatura en grados Fahrenheit y Celsius son escalas de
intervalo y tienen distinto punto de origen. Por ello, el ratio de temperatura medida
en una escala es diferente que el medido en la otra.
Cada unidad que contribuye en una mtrica vlida debe ser equivalente. Por
ejemplo, en el caso de las escalas de temperatura (escalas de intervalo), un grado
contribuye de igual forma para pasar de 20 a 21 que de 30 a 31.
Mtricas indirectas:
2.4. Escalas
El problema de la unicidad lleva a tener que elegir qu representacin es la mejor para el
atributo que se va a medir. La teora de escalas ayuda en esta tarea. La escala a la que pertenece
una mtrica limita las operaciones y asertos significativos que pueden hacerse sobre ella, as
como el tratamiento estadstico que se puede aplicar. Existen 5 tipos principales de escalas:
Nominal: slo existen clases diferentes. No hay nocin de orden entre las clases. Una
medida aceptable es un nmero o smbolo. No hay nocin de magnitud (clasificacin).
Un ejemplo de escala nominal es la clasificacin de los programas de software segn el
lenguaje de programacin en que estn escritos: C, Pascal, Java...
Ordinal: clases ordenadas respecto al atributo. Cualquier mapeo que preserve el orden
es aceptable. Los nmeros slo indican el lugar que ocupan, no se permiten operaciones
aritmticas.
Un ejemplo de escala ordinal es la expresin de forma cuantitativa de la complejidad de
un conjunto de programas, utilizando las siguientes categoras en orden de menor a
mayor complejidad: trivial, sencilla, moderada, compleja y muy compleja. Aqu no se
puede afirmar que un programa es el doble de complejo que otro.
DPTOIA-IT-2001-002
Madrid. Sin embargo, no se puede decir que haya un 50% ms de calor en Madrid que
en Londres.
Ratio: preserva el orden, tamao de los intervalos entre entidades y ratios entre
entidades. Existe elemento cero (ausencia el atributo). Admite cualquier operacin
aritmtica.
Por ejemplo, la longitud de un programa de software. Se puede hablar de un programa
el doble de largo que otro, y un programa vaco representara el elemento cero.
Desarrollo ms rpido.
Arquitectura modular.
DPTOIA-IT-2001-002
Vzquez et al.
DPTOIA-IT-2001-002
Etapa del ciclo de vida en la que se mide (anlisis, diseo, implementacin, pruebas...).
Las mtricas no pueden ser aplicadas indiscriminadamente a cualquiera de los atributos del
software que se quieren medir. El caso ms tpico de una asignacin errnea de mtricas a
atributos es el de lneas de cdigo (LOC), que siendo vlida como una medida del tamao, se
usaba equivocadamente para medir la complejidad de los programas.
Por otro lado, no todas las mtricas han de ser recogidas durante la fase de implementacin
del cdigo fuente de los programas, aunque un gran nmero de ellas se obtenga de ah. Sera
deseable obtenerlas ms tempranamente en la fase de diseo. [Chidamber y Kemerer, 1994]
proponen un conjunto de 6 mtricas para diseo orientado a objetos. Desafortunadamente, las
distintas notaciones utilizadas en los documentos de diseo hace difcil la utilizacin de
herramientas estndar de recoleccin de mtricas. La creciente utilizacin del Lenguaje
DPTOIA-IT-2001-002
Vzquez et al.
Unificado de Modelado (UML) [Booch et al., 1999] puede mitigar este problema. [Genero et
al., 2000] proponen un conjunto de mtricas para valorar la complejidad de los diagramas de
clases modelados con UML, centrndose especficamente en la complejidad de los diagramas de
clases surgidos de las diferentes relaciones en UML, tales como asociaciones, agregaciones,
etc., por ejemplo, definen AvsC (Atributos vs. Clases).
Por ltimo, algunas mtricas son escalables a distintos niveles de granularidad respecto de
los que fueron definidos. Por ejemplo, la mtrica LOC es utilizable a nivel de mtodo, clase,
programa y sistema.
A continuacin se presenta una clasificacin de mtricas teniendo en cuenta estas tres
dimensiones, y agrupadas segn la caracterstica principal del enfoque orientado a objetos que
pretenden medir, indicando para cada una de ellas el nivel de granularidad y la etapa del ciclo de
vida en que se puede medir.
Para dar una visin ms general se ha pretendido abarcar la mayor cantidad de atributos
posible, eligiendo en cada caso un conjunto de mtricas que se considera representativo para
dicho atributo, sin ser excesivamente exhaustivos en el nmero de mtricas presentadas para
evitar llegar a la confusin dada la cantidad de mtricas aparecidas en los ltimos aos. Se
indica para cada mtrica el autor o autores de la misma, remitiendo al lector a la bibliografa
para un estudio en mayor profundidad.
El punto de partida es [Chidamber y Kemerer, 1994] que establecen 6 mtricas para medir
cinco atributos bsicos en el diseo orientado a objetos: acoplamiento, complejidad de una
clase, reutilizacin, cohesin, y herencia.
[Briand et al., 1999] realizan un estudio exhaustivo de las mtricas sobre acoplamiento
existentes y proponen un marco de trabajo unificado con los siguientes criterios:
4.1. Acoplamiento
El acoplamiento se ve como una medida del incremento de la complejidad, reduciendo el
encapsulamiento y su posible reutilizacin; limita, por tanto, la facilidad de comprensin y de
mantenimiento del sistema.
DPTOIA-IT-2001-002
Definicin: CBO de una clase es el nmero de clases a las cuales una clase est ligada,
sin tener con ella relaciones de herencia. Hay dependencia entre dos clases cuando una
de ellas usa mtodos o variables de la otra clase. Es consistente con las tradicionales
definiciones de acoplamiento: medida del grado de interdependencia entre mdulos.
Valoracin: los autores sugieren que sea un indicador del esfuerzo necesario para el
mantenimiento y en las pruebas. Cuanto ms independiente es un objeto, ms fcil es
reutilizarlo en otra aplicacin. Al reducir el acoplamiento se reduce la complejidad, se
mejora la modularidad y se promueve el encapsulamiento. Una medida del
acoplamiento es til para determinar la complejidad de las pruebas necesarias de
distintas partes de un diseo. Cuanto mayor sea el acoplamiento entre objetos ms
rigurosas han de ser las pruebas.
Frmula:
COF =
[
TC
TC
i =1
i =1
es _ cliente(Ci , Cj ))
TC 2 TC
Donde:
TC2 TC es el mximo nmero de acoplamientos en un sistema con TC clases
1 si y solo si Cc Cs Cc Cs
0 en caso contrario
es_cliente(Cc,Cs)=
La relacin cliente-servidor (Cc Cs) significa que Cc (la clase cliente) contiene al
menos una referencia no basada en la herencia a una caracterstica (mtodo o atributo)
de la clase Cs (clase proveedora). El numerador representa el nmero real de
acoplamientos no imputables a la herencia. El denominador representa el mximo
nmero posible de acoplamientos en un sistema con TC clases. Las relaciones clienteservidor pueden tener distintas formas:
- paso de mensajes regular.
- paso de mensajes forzado.
- iniciacin y destruccin de objetos.
- asociaciones semnticas entre clases con una cierta relacin (p.e. 1:1, 1:n o
n:m).
Valoracin: COF puede ser una medida indirecta de los atributos con los cuales est
relacionado: complejidad, falta de encapsulamiento, carencia de reutilizacin, facilidad
de comprensin y poca facilidad de mantenimiento. Al incrementar el acoplamiento
DPTOIA-IT-2001-002
10
Vzquez et al.
4.2. Cohesin
4.2.1. Falta de cohesin en los mtodos (Lack of Cohesion in Methods-LCOM-)
[Chidamber y Kemerer, 1994]
Dos clases pueden tener LCOM=0, mientras una tiene ms variables comunes que
la otra.
4.3. Complejidad
4.3.1. Respuesta para una clase (Response For a Class-RFC-) [Chidamber y
Kemerer, 1994]
11
Definicin: RFC es el cardinal del conjunto de todos los mtodos que se pueden invocar
como respuesta a un mensaje a un objeto de la clase o como respuesta a algn mtodo
en la clase. Esto incluye a todos los mtodos accesibles dentro de la jerarqua de la
clase. Es decir, RFC es el nmero de mtodos locales a una clase ms el nmero de
mtodos llamados por los mtodos locales.
Valoracin: para los autores RFC es una medida de la complejidad de una clase a travs
del nmero de mtodos y de su comunicacin con otras, pues incluye los mtodos
llamados desde fuera de la clase. Cuanto mayor es RFC, ms complejidad tiene el
sistema, ya que es posible invocar ms mtodos como respuesta a un mensaje,
exigiendo mayor nivel de comprensin, lo que implica mayor tiempo y esfuerzo de
prueba y depuracin. Se ha sealado que la definicin de esta mtrica es ambigua y
fuerza al usuario a interpretarla.
DPTOIA-IT-2001-002
Definicin: Dada una clase C1 con los mtodos M1, ..., Mn y c1, ..., cn la complejidad de
los mtodos, WMC se define como el sumatorio de las complejidades de cada mtodo
de una clase. Si todos los mtodos son considerados de igual complejidad, entonces
c1=1 y WMC=n (nmero de mtodos).
Valoracin: se ofrece como una medida de la complejidad estructural. Una medida que
se concentra en los mtodos ms complejos es la complejidad ciclomtica mxima
(Maximum v(G)). Es un indicador til de la dificultad de prueba y mantenimiento de un
programa. Se sugiere un valor mximo de 10.
4.4. Encapsulamiento
4.4.1. Proporcin de mtodos ocultos (Method Hiding Factor-MHF-) [Abreu y
Melo, 1996]
Frmula:
TC
MHF =
Md (Ci )
i =1
m =1
TC
i =1
DPTOIA-IT-2001-002
(1 V ( Mmi))
Md (Ci )
12
Vzquez et al.
Donde:
TC
V(Mmi) =
j =1
es _ visible( Mmi, Cj )
TC
1 si y solo si Cj pued e llamar a Mmi
0 en caso contrario
es_visible(Mmi,Cj)=
Frmula:
TC
AHF =
Ad (Ci )
i =1
m=1
TC
i =1
(1 V ( Ami))
Ad (Ci )
Donde:
TC
V(Ami) =
j =1
es _ visible( Ami, Cj )
TC
1 si y solo si Cj pued e llamar a Ami
0 en caso contrario
es_visible(Ami,Cj)=
13
Valoracin: Idealmente el valor de esta mtrica debera ser siempre el 100%, intentando
ocultar todos los atributos. Las pautas de diseo sugieren que no hay que emplear
atributos pblicos, ya que se considera que esto viola los principios de encapsulamiento
al exponer la implementacin de las clases. Para mejorar el rendimiento, a veces se
DPTOIA-IT-2001-002
evita el uso de mtodos que acceden o modifican atributos (mtodos get/set) accediendo
a ellos directamente. En esta prctica debe extremarse la prudencia y evaluar si
realmente los pros son mayores que los contras.
4.5. Herencia
El uso de la herencia debe entenderse como un compromiso entre la facilidad de reutilizacin
que proporciona y la facilidad de comprensin y de mantenimiento del sistema, que en general,
estn en relacin inversa.
Altos niveles de herencia indican objetos complejos, los cuales pueden ser difciles de
probar y reutilizar.
Bajos niveles en la herencia pueden sealar que el cdigo est escrito en un estilo
funcional, sin aprovechar el mecanismo de herencia proporcionado por la orientacin a
objetos.
Definicin: es la proporcin entre la suma de todos los mtodos heredados en todas las
clases y el nmero total de mtodos (localmente definidos ms los heredados) en todas
las clases.
Frmula:
MIF =
TC
i =1
TC
i =1
Mi (Ci )
Ma (Ci )
Donde:
Ma(Ci) = Md(Ci) + Mi(Ci)
Ma(Ci) es el nmero de mtodos disponibles.
Md(Ci) es el nmero de mtodos definidos.
Mi(Ci) es el nmero de mtodos heredados.
TC es el nmero total de clases.
DPTOIA-IT-2001-002
14
Vzquez et al.
Frmula:
AIF =
TC
i =1
TC
i =1
Ai (Ci )
Aa (Ci )
Donde:
Aa(Ci) = Ad(Ci) + Ai(Ci)
Aa(Ci) es el nmero de atributos disponibles.
Ad(Ci) es el nmero de atributos definidos.
Ai(Ci) es el nmero de atributos heredados.
TC es el nmero total de clases.
SIX =
15
N DeMtodosredefinidos AnidamientoEnLaJerarqua
N TotalDeMtodos
DPTOIA-IT-2001-002
4.6. Polimorfismo
4.6.1. Proporcin de polimorfismo (Polymorphism Factor -POF-) [Abreu y Melo,
1996]
Frmula:
TC
POF =
i =1
Mo(Ci )
[M (C ) DC (C )]
TC
i =1
Donde:
Md(Ci) = Mn(Ci) + Mo(Ci)
DC(Ci) es el nmero de descendientes de Ci.
Mn(Ci) es el nmero de mtodos nuevos.
Mo(Ci) es el nmero de mtodos redefinidos.
TC es el nmero total de clases.
DPTOIA-IT-2001-002
16
Vzquez et al.
4.7. Reutilizacin
4.7.1. Nmero de hijos (Number of Children-NOC-) [Chidamber y Kemerer,
1994]
4.8. Tamao
4.8.1. Lneas de cdigo (Lines of Code per method-LOC-) [Lorenz y Kidd, 1994]
17
DPTOIA-IT-2001-002
5. Otras mtricas
5.1. Mtricas de cobertura de pruebas
Orientadas a las pruebas de caja blanca las mtricas de cobertura de pruebas pretenden medir la
minuciosidad de los conjuntos de prueba seleccionados, es decir, la complecin de la actividad
de pruebas. Es el porcentaje de requisitos implementados (en forma de casos de pruebas
definidos o capacidades funcionales) multiplicado por el porcentaje de la estructura del software
probado (en unidades, segmentos, sentencias, bifurcaciones, o caminos de prueba) [Schulmeyer
y MacKenzie, 2000]. Las hay de varios tipos:
DPTOIA-IT-2001-002
18
Vzquez et al.
7 {
8
suma+=i;
9
prod*=i;
10
i++;
11 }
12 if(k==0)
13
printf(n=%d, suma=%d\n, n, suma);
14 if(k==1)
15
printf(n=%d, producto=%d\n, n, prod);
En este caso, el ratio de cobertura de bloques de sentencias es del 100%, pues los 4
bloques de sentencias son ejecutados al menos una vez.
Por tanto, dado que de un total de 4 caminos posibles slo se ejecutan 2, la cobertura de
caminos alcanza slo el 50%.
Las pruebas han de disearse con el objetivo de encontrar el mayor nmero de errores con
la mnima cantidad de esfuerzo y tiempo posible.
En orientacin a objetos, la cobertura tradicional no es suficiente, ya que cuando los
mtodos son heredados por una clase derivada se hace necesario alguna prueba adicional. Esto
es cierto tanto para aquellos mtodos que han sido heredados sin modificacin como para
aquellos que han sido sobrecargados.
El uso de las mtricas de cobertura que indican el porcentaje de cdigo fuente ejercitado
respecto del total ayuda en la definicin/redefinicin de casos de prueba para alcanzar todos los
bloques de sentencias y bifurcaciones, mostrando aquellas partes del programa no cubiertas por
19
DPTOIA-IT-2001-002
los conjuntos de pruebas. Tambin permiten optimizar la seleccin de los casos de prueba para
que con la mnima cantidad de casos se cubra el mayor porcentaje de sentencias del programa.
En cuanto a la jerarqua de las pruebas de cobertura, se sugiere completar la cobertura de
bloques de sentencias antes de iniciar la cobertura de bifurcaciones.
El polimorfismo y el encapsulamiento del comportamiento son caractersticas principales
del diseo orientado a objetos y las mtricas de cobertura han de tener estas caractersticas en
cuenta de cara a la prueba de software. IPL [IPL 1999] introduce una extensin a la tradicional
cobertura estructural: cobertura de contexto orientada a objetos, dividida en tres clases:
Valoracin: ayuda a medir si las llamadas polimrficas en el sistema han sido probadas
correctamente. Harrold [Harrold, 1999] propone la ejecucin de pruebas de integracin
jerrquicas (HIT) que como primer paso ejercite todos los mtodos en el contexto de
una clase particular (la clase base o una clase derivada particular). Esta recomendacin
se aplica a todas las clases, de tal manera que las redefiniciones de un mtodo en una
clase derivada (mtodos sobrecargados) son probados con el mismo nivel de detalle que
la definicin de la clase base original.
Definicin: tiene en cuenta la ejecucin de los mtodos en el contexto de clases que son
descritas como mquinas de estado, cuyo comportamiento depende del estado
particular en que se encuentren en un momento dado.
Valoracin: ayuda a medir si se han efectuado pruebas de cobertura para cada uno de
los estados posibles de la clase. Una dificultad en la implementacin suele ser la no
disponibilidad del estado actual de la clase, y normalmente se debe cambiar el cdigo
para que devuelva los posibles estados.
Valoracin: permite aplicar el enfoque de cobertura de contexto a otros casos donde las
mtricas de cobertura tradicionales son inadecuadas, como aplicaciones con varios hilos
de ejecucin (multi-threaded).
DPTOIA-IT-2001-002
20
Vzquez et al.
C++
Java
UML
XML
Pruebas
Mtricas
21
DPTOIA-IT-2001-002
/*
* @(#)Clock2.java 1.5 98/07/09
*
* Copyright (c) 1997, 1998 Sun Microsystems, Inc. All Rights Reserved.
*/
import
import
import
import
java.util.*;
java.awt.*;
java.applet.*;
java.text.*;
/**
* Time!
*
* @author Rachel Gollub
*/
public class Clock2 extends Applet implements Runnable {
Thread timer;
// The thread that displays clock
int lastxs, lastys, lastxm,
lastym, lastxh, lastyh; // Dimensions used to draw hands
SimpleDateFormat formatter; // Formats the date displayed
String lastdate;
// String to hold date displayed
Font clockFaceFont;
// Font for number display on clock
Date currentDate;
// Used to get date to display
Color handColor;
// Color of main hands and dial
Color numberColor;
// Color of second hand and numbers
public void init() {
int x,y;
lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;
formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy",
Locale.getDefault());
currentDate = new Date();
lastdate = formatter.format(currentDate);
clockFaceFont = new Font("Serif", Font.PLAIN, 14);
handColor = Color.blue;
numberColor = Color.darkGray;
try {
setBackground(new
Color(Integer.parseInt(getParameter("bgcolor"),16)));
} catch (Exception E) { }
try {
handColor = new
Color(Integer.parseInt(getParameter("fgcolor1"),16));
} catch (Exception E) { }
try {
numberColor = new
Color(Integer.parseInt(getParameter("fgcolor2"),16));
} catch (Exception E) { }
resize(300,300);
// Set clock window size
}
...
// Circle is just Bresenham's algorithm for a scan converted circle
public void circle(int x0, int y0, int r, Graphics g) {
int x,y;
float d;
x=0;
y=r;
d=5/4-r;
plotpoints(x0,y0,x,y,g);
DPTOIA-IT-2001-002
22
Vzquez et al.
while (y>x){
if (d<0) {
d=d+2*x+3;
x++;
}
else {
d=d+2*(x-y)+5;
x++;
y--;
}
plotpoints(x0,y0,x,y,g);
}
}
...
23
DPTOIA-IT-2001-002
<arguments/>
</send>
</arguments></new>
</assignment-expr>
<assignment-expr op="="><lvalue><var-set
name="currentDate"/></lvalue><new><type name="Date"/><arguments/></new>
</assignment-expr>
<assignment-expr op="="><lvalue><var-set name="lastdate"/></lvalue><send
message="format">
<target><var-ref name="formatter"/></target>
<arguments><var-ref name="currentDate"/></arguments>
</send>
</assignment-expr>
<assignment-expr op="="><lvalue><var-set
name="clockFaceFont"/></lvalue><new><type name="Font"/><arguments><literalstring value="Serif"/><field-access field="PLAIN"><var-ref
name="Font"/></field-access><literal-number kind="integer"
value="14"/></arguments></new>
</assignment-expr>
<assignment-expr op="="><lvalue><var-set
name="handColor"/></lvalue><field-access field="blue"><var-ref
name="Color"/></field-access></assignment-expr>
<assignment-expr op="="><lvalue><var-set
name="numberColor"/></lvalue><field-access field="darkGray"><var-ref
name="Color"/></field-access></assignment-expr>
<try>
<block line="63" col="12" end-line="65" end-col="8">
<send message="setBackground">
<arguments><new><type name="Color"/><arguments><send
message="parseInt">
<target><var-ref name="Integer"/></target>
<arguments><send message="getParameter">
<arguments><literal-string
value="bgcolor"/></arguments>
</send>
<literal-number kind="integer" value="16"/></arguments>
</send>
</arguments></new>
</arguments>
</send>
</block>
<catch><formal-argument name="E" id="Clock2:var-244"><type
name="Exception"/></formal-argument>
</catch>
</try>
<try>
<block line="66" col="12" end-line="68" end-col="8">
<assignment-expr op="="><lvalue><var-set
name="handColor"/></lvalue><new><type name="Color"/><arguments><send
message="parseInt">
<target><var-ref name="Integer"/></target>
<arguments><send message="getParameter">
<arguments><literal-string
value="fgcolor1"/></arguments>
</send>
<literal-number kind="integer" value="16"/></arguments>
</send>
</arguments></new>
</assignment-expr>
</block>
<catch><formal-argument name="E" id="Clock2:var-265"><type
name="Exception"/></formal-argument>
</catch>
</try>
<try>
DPTOIA-IT-2001-002
24
Vzquez et al.
25
DPTOIA-IT-2001-002
DPTOIA-IT-2001-002
26
Vzquez et al.
literal-number
new
method
lvalue
unary-expr
if
superclass
var-set
assignment-expr
block
loop
formal-argument
local-variable
literal-null
target
cast-expr
arguments
try
import
send
return
field-access
this
java-class-file
test
catch
formal-arguments
array-initializer
class
implement
java-source-program
true-case
type
false-case
var-ref
paren
literal-string
binary-expr
field
*Total*
81
9
10
45
3
4
1
45
45
27
2
18
20
2
57
6
77
7
4
68
2
3
1
1
6
7
10
4
1
1
1
4
76
1
246
9
24
111
13
1052
Figura 5. Salida de la herramienta LT XML para obtener estadsticas bsicas del programa
ejemplo: Clock2.java
A la vista de estos datos se puede extraer mucha informacin de utilidad para la obtencin
de mtricas. Por ejemplo, el nmero de sentencias if (4), loop (2), servirn para calcular las
mtricas de complejidad ciclomtica v(G) de McCabee, y con el nmero de bloques (27) darn
una idea del nmero de casos de prueba necesarios para alcanzar el 100% de cobertura del
programa. El nmero de clases (1) y el nmero de mtodos (10), servir para calcular la mtrica
de complejidad mtodos ponderados por clase WMC, etc.
27
DPTOIA-IT-2001-002
7. Conclusiones
Son bien conocidos diferentes conjuntos de mtricas propuestas por distintos autores:
Chidamber y Kemerer, Brito e Abreu, Lorenz y Kidd, etc. En este trabajo se han repasado las
mtricas consideradas ms representativas de estos y otros autores, desde una perspectiva
basada en las caractersticas especficas del enfoque orientado a objetos, ms que en el anlisis
particular del conjunto de mtricas propuesto por un solo autor. Esta aproximacin quiz lleva a
una mayor dificultad en la comprensin de las mismas, pues algunas miden las mismas
propiedades pero desde diferentes perspectivas.
Se pone inters especial en las mtricas de cobertura. Caractersticas especficas en OO
como el polimorfismo y encapsulamiento sugieren nuevos enfoques en el diseo de casos de
prueba para alcanzar el 100% de cobertura de mtodos.
Por ltimo se sugiere un marco de trabajo para la recoleccin automtica de las mtricas
basado en un repositorio de programas fuente en XML que independiza del lenguaje de
programacin utilizado la construccin y uso de herramientas de obtencin de mtricas. La
progresiva generalizacin del lenguaje de modelado unificado (UML) facilita la creacin de
herramientas de recoleccin y anlisis de mtricas en fases ms tempranas del ciclo de vida,
como la fase de diseo.
Bibliografa
[Abreu y Melo, 1996] Brito e Abreu F. y Melo, W., Evaluating the impact of object oriented
design on software quality, Proceedings of 3rd international software metrics symp., 1996.
[Badros, 2000] Badros, Greg J., JavaML: A Markup Language for Java Source Code. Dept. Of
Computer Sciece and Engineering, University of Washington, Seattle, WA, 2000.
(http://www.cs.washington.edu/research/constraints/web/badros-javaml-www9.pdf).
[Boehm et al., 1978] Boehm, B.W., Kaspar, S.R., et al. Characteristics of Software Quality,
TRW Series of Software Technology, 1978.
[Boehm, 1981] Boehm, B. W., Software engineering economics, Prentice-Hall, 1981.
[Booch et al., 1999] Booch, G., Rumbaugh, J. y Jacobson, I., El Lenguaje Unificado de
Modelado: Gua de usuario. Addison Wesley, 1999.
[Briand et al., 1999] Briand, L.C., Daly, J.W. y Wst, J.K., A Unified framework for Coupling
Measurement in Object-Oriented Systems, IEEE transactions on software engineering, vol. 25,
n1, enero/febrero, 1999, pp. 91-121.
[Cartwright y Shepperd, 1996] Cartwright, M. Y Shepperd, M., An empirical investigation of
object software in industry, Department of Computing, Talbot Campus, Bournemouth
University, Technical Report TR96/01, 1996.
[Chidamber y Kemerer, 1994] Chidamber, S.R. y Kemerer, C.F., A metric suite for object
oriented design, IEEE transactions on software engineering, vol. 20, n6, junio, 1994, pp. 467493.
[USC-CSE, 1997] University of Southern California- Center for Software Engineering,
Constructive Cost Model II (COCOMO II). 1997
(http://sunset.usc.edu/research/COCOMOII/index.html.)
[De Marco, 1982] De Marco, T., Controlling software projects, Yourdon Press Prentice-Hall,
1982.
DPTOIA-IT-2001-002
28
Vzquez et al.
[Fenton, 1991] Fenton, N. E., Software measurement. A rigorous approach, Chapman & Hall,
1991.
[Fenton y Pfleeger, 1997] Fenton, N. E. y Pfleeger, S.L., Software metrics. A rigorous and
practical approach, PWS Pub., 1997.
[Genero et al., 2000] Genero, M., Manso, M.E., Piattini, M. y Garca, F.J., Early metrics for
object oriented information systems. In Proceedings of the 6th International Conference on
Object Oriented Information System (OOIS-2000). D. Patel, I. Chonthury, S. Patel y S.De
Cesare (Eds), pp 414-425, 18-20 December 2000, London (UK).
[Harrold, 1999] Harrold, M.J. and McGregor, Incremental Testing of Object-Oriented Class
Structures, 1999. (http://www.cs.clemson.edu/~johnmc/papers/TESTING/HIT/hit.ps).
[Henderson-Sellers, 1992] Henderson-Sellers, B., A Book of Object-Oriented Knowledge,
Prentice Hall, NY, 1992.
[Henderson-Sellers, 1996] Henderson-Sellers, B., Object-oriented metrics measures of
complexity, Prentice-Hall, 1996.
[IPL, 1999] IPL Information Processing Ltd. Advanced Coverage Metrics for Object-Oriented
Software. 1999.
[Kitchenham et al., 1995] Kitchenham, B. Pfleeger, S. Y Fenton, N. Towards a Framework for
Software Measurement Validation, IEEE Transactions on Software Engineering, 21(12),
December 1995.
[Lorenz y Kidd, 1994] Lorenz, M. y Kidd, J., Object oriented metrics, Prentice-Hall, 1994
[McCall et al., 1977] McCall, J.A., Richards, P.K. y Walters, G.F. Factors in software quality.
US Rome Air Development Center Reports NTIS AD/A-049 014, 015, 055 USA Air Force,
1977.
[McCabe, 1976] McCabe, T.J., A Complexity Measure, IEEE Transactions on Software
Engineering, Vol. 5, 1976.
[McCabe et al., 1994] McCabe & Associates, McCabe Object-Oriented Tool User's
Instructions, 1994.
[Paulk et al., 1993] Paulk, M.C., Garca, G.M. Chrissis, M.B. y Bush, M. Capability Maturity
model for software, version 1.1, CMU/SEI-93-TR-24, Software Engineering Institute y
Universidad Carnegie Mellon, febrero, 1993.
[Rumbaugh et al., 1991] Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F. y Lorensen, W.,
Object-Oriented Modeling and Design, Prentice Hall, Englewood Cliffs, NJ, 1991.
[Schach, 1996] Schach, S.R., Classical and Object-Oriented Software Engineering, (3rd ed.)
(Chicago: Irwin, 1996).
[Schulmeyer y MacKenzie, 2000] Schulmeyer, G.G. y MacKenzie, G.R. Verification and
Validation of Modern Software-Intensive Systems, Prentice Hall, 2000
[SPICE, 1999] SPICE, SPICE Document Suite, Software Process Improvement and Capability
determination, http://www.sqi.gu.edu.au/spice/, 1999.
[UELTG, 2000] University of Edinburgh Language Technology Group. LT XML version 1.2,
Septiembre 2000. (http://www.ltg.ed.ac.uk/software/xml/xmldoc/xmldoc.html).
[Vzquez et al., 2001] Vzquez, P.J., Moreno, M.N. y Garca, F.J. Verificacin con XML.
Departamento de Informtica y Automtica Universidad de Salamanca. 2001.
29
DPTOIA-IT-2001-002