Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
EL SOFTWARE
Debe tenerse en cuenta que el esfuerzo y el costo registrados en la tabla incluyen todas las
actividades de la ingeniería de software como son análisis, diseño, codificación y prueba.
Otra información del proyecto 999-01 indica que se desarrollaron 365 páginas mientras
que se encontraron 29 errores tras entregárselo al cliente, dentro del primer año de
utilización también sabemos que trabajaron 3 personas en el desarrollo del proyecto.
En los rendimientos del sistema y los rudimentarios datos contenidos en la
tabla se puede desarrollar, para cada proyecto un conjunto de métricas
sencillas de productividad y calidad orientadas al tamaño.
1.16
E=5.5 + 0.73 ∗ KLOC
El reto de las métricas del producto
Aunque se han propuesto docenas de medidas de complejidad, cada una
tiene un concepto diferente de la complejidad y de los atributos de un
sistema que llevan a la complejidad.
Identificar relaciones
empíricas para los
atributos
Verificar que la
semántica de las
Identificar relaciones relaciones empíricas se
numéricas correspondientes
preserva en las
relaciones numéricas
a cada relación empírica
Simples y calculable
Consistentes y objetivas
Consistentes en el uso de
unidades y dimensiones
Independientes del
lenguaje de programación
Mecanismos efectivos para
la retroalimentación de
alta calidad
Panorama de las métricas del producto
Aunque se ha propuesto una amplia variedad de taxonomías métricas, el
siguiente esquema atiende las áreas más importantes de las métricas.
• Funcionalidad entregada
• Tamaño del sistema
• Calidad de la especificación
Métricas para el modelo de diseño: Estas métricas cuantifican los atributos del
diseño de manera tal que le permiten al ingeniero de software evaluar la
calidad del diseño, la métrica incluye:
• Métricas arquitectónicas: Proporcionan un indicio de la calidad del diseño arquitectónico.
• Métricas al nivel de componente: Mide la complejidad de los componentes del software y otras
características que impactan la calidad.
• Métricas de diseño de la interfaz: Se concentra principalmente en la facilidad de uso.
• Métricas especializadas en diseño orientado a objetos: Miden características de clases,
además de las correspondientes a comunicación y colaboración.
Métricas para el código fuente: Estas métricas miden el código fuente y se
usan para evaluar su complejidad, además de la facilidad con que se
mantiene y prueba, entre otras características.
• Métricas de Halstead
• Métricas de complejidad
• Métricas de longitud
Predecir el numero
de errores que se
encontrarían
durante la prueba
Pronosticar el
numero de
Estimar el costo o el
componentes, de
esfuerzo requerido
líneas de códigos
para diseñar, codificar
proyectadas, o
y probar el software
ambas en el sistema
implementado
El PF se
utiliza
para
La métrica del punto de función (PF) se puede utilizar como medio para
predecir el tamaño de un sistema obtenido a partir de un modelo de análisis.
Para visualizar esta métrica se utiliza un diagrama de flujo de datos, el cual
se evaluar para determinar las siguientes medidas clave que son necesarias
para el cálculo de la métrica de punto de función:
Una vez que se han recolectado los datos se completa una tabla y se asocia un
valor de complejidad con cada conteo. Las organizaciones que usan métodos de
punto de función desarrollan criterios para determinar si una entrada es
simple, promedio o compleja. No obstante, la determinación de la complejidad
es un poco subjetiva.
Para calcular el punto de función se utiliza la siguiente relación:
Donde:
Conteo total: es la suma de todas las entradas de PF
Fi de rango de (i= 1 a 14): son factores de ajuste de valor
basados en las respuestas a las siguientes preguntas.
1. ¿El sistema requiere respaldo y recuperación confiable?
2. ¿Se requieren comunicaciones de datos especializadas para transferir
información a la aplicación, u obtenerlas de ella?
3. ¿Hay funciones distribuidas de procesamiento?
4. ¿El desempeño es critico?
5. ¿El sistema requiere entrada de datos en línea?
6. ¿Los archivos lógicos internos (ALI) se utilizan en línea?
7. ¿Es complejo el procesamiento interno?
8. ¿El código diseñado será reutilizable?
9. ¿Esta diseñado el sistema para instalaciones múltiples en diferentes
organizaciones?
Por ejemplo:
Supóngase que hay nf requisitos en una especificacion de modo que;
• nf = nf + nnf
Donde:
nf: es el numero de requisitos funcionales
nnf: es el numero de requisitos no funcionales (como el desempeño).
• Q1 = nui/nf
Donde:
nui : es el numero de requisitos que todos los revisores interpretaron de la
misma manera. (Cuando mas cercano este el valor de Q a 1, menor será la
ambigüedad de la especificacion)
El grado de avance de los requisitos funcionales se determina al calcular
la relación
• Q2 = nu/[ni * ns]
Donde:
nu: es el numero de requisitos de función única.
ni: es el numero de entradas (estímulos) definidos o implícitos en la
especificacion
ns: es el numero de estados especificados.
La relación Q2 mide el porcentaje de funciones necesarias que se han
especificado para un sistema.
Si embargo, no se atienden requisitos que no son funcionales para
incorporarlos a una métrica general del grado de avance, se debe
considerar el grado de validación de los requisitos:
• Q3 = nc/[nc + nnv]
Donde:
nc: es el numero de requisito que se han validado como correctos.
nnv: numero de requisito que aun no se validan
METRICAS PARA EL MODELO DE DISEÑO
1. Métricas de Halstead
2. Métricas de Complejidad
1. Métricas de Halstead
IF (N<2) THEN
BEGIN
A=B*N;
WRITE (A)
END
N = N1 + N2
volumen V = N x log2(n)
donde n = n1 + n2.
1. Métricas de Halstead (Continuación)
El esfuerzo es otra medida estudiada por Halstead que ofrece 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.
La fórmula es la siguiente:
esfuerzo E = V / L
donde el volumen V es dividido por el nivel del lenguaje L. Éste indica si se está
utilizando un lenguaje de alto o bajo nivel. Por ejemplo, una simple llamada a un
procedimiento podría tener un valor L de 1; el COBOL podría tener 0,1 y el
ensamblador podría tener un L de 0,01. Así pues el esfuerzo aumenta
proporcionalmente con el volumen, pero decrece con la utilización de lenguajes
de alto nivel.
Atendiendo a varios estudios empíricos, el esfuerzo, E, es incluso una medida
mejor de la entendibilidad (comprensión) que N.
{ {..} 2 i 7
for for(;;) 2 n 1
= 5 j 6
(i=2;i<=n;i++)
if 1 x 6
for ; 3 aux 2
(j=1;j<=i;j++) (..) 1
if (x[i] < x[j]) < 1 n2=5
<= 2 N2=22
} ++ 2
aux = x[i]; [] 4
x[i] = x[j];
n1=10
x[j] = aux;
N1=23
}
}
N = N1 + N2 N=23+22=45
V = N x log2 (n) V=45 x log2(15)=175.8
2. Complejidad Ciclomática
v(G) = e - n + 2
Ejemplo:
2. Complejidad Ciclomática (Continuación)