LA MEDICIÓN DEL SOFTWARE MÉTRICAS PRODUCTIVIDAD DEL

Anuncio
PROYECTOS INFORMÁTICOS
LA MEDICIÓN DEL
SOFTWARE MÉTRICAS
1
PROYECTOS INFORMÁTICOS
PRODUCTIVIDAD DEL SW y TÉCNICAS
ASOCIADAS
•
métrica del sw
•
•
•
•
control de calidad y fiabilidad
herramientas automáticas
metodologías de diseño
otras técnicas
– planificación y elaboración de requerimientos
– mantenimiento
– control de proyectos
– factorías del software
2
1
PROYECTOS INFORMÁTICOS
MÉTRICAS DEL SW
•
•
•
responden a dos objetivos
– valorar
– estimar
magnitudes objeto de valoración
– calidad
– fiabilidad
– productividad
magnitudes objeto de estimación
– esfuerzo
– tiempo
3
PROYECTOS INFORMÁTICOS
DEL PRODUCTO
(entrada: código fuente)
tamaño
estructuras de datos
lógica de procedimiento
...
MÉTRICAS
DEL PROCESO
(entorno de desarrollo)
tiempo de desarrollo
reutilización
productividad
...
4
2
PROYECTOS INFORMÁTICOS
MÉTRICAS DEL SW
•
•
primera aproximación
– métricas del producto
– métricas del proceso
métricas
– tamaño
– estructuras de datos
– estructuras de control
– compuestas
– de esfuerzo
– de calidad y fiabilidad
– diseño
– otras métricas
5
PROYECTOS INFORMÁTICOS
MÉTRICAS DE TAMAÑO
•
•
•
•
referencia: código fuente
empleo del tamaño:
– fácil de obtener
– factor importante
– productividad se mide en líneas de código
líneas de código: LOC (KLOC)
– loc/pm (loc por persona y mes)
definición de líneas computables
6
3
PROYECTOS INFORMÁTICOS
SUBRUTINA: Ejemplo SORT
Línea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Nivel
C
C
220
210
200
SUBROUTINE SORT (X,N)
INTEGER X(100), N, I, J, SAVE IM1
THIS ROUTINE SORTS ARRAY X INTO ASCENDING
ORDER.
IF (N.LT.2) GO TO 200
DO 210 I=2,N
IM1=I-1
DO 220 J=1, IM1
IF (X(I).GE.X(J)) GO TO 220
SAVE=X(I)
X(I)=X(J)
X(J)=SAVE
CONTINUE
CONTINUE
RETURN
END
1
2
3
3
4
5
5
5
3
2
1
7
PROYECTOS INFORMÁTICOS
MÉTRICAS DE TAMAÑO (I)
•
medida del tamaño como ‘tokens’ (Halstead)
–
–
–
–
n1 número de operadores diferentes del lenguaje
n2 número de operandos diferentes del lenguaje
N1 número total de operadores
N2 número total de operandos
8
4
PROYECTOS INFORMÁTICOS
MÉTRICAS DE TAMAÑO (II)
•
Tamaño
N = N1 + N2
•
Las reglas de contar ‘tokens’ dependen del lenguaje en que
esté escrito un programa
•
Vocabulario
•
Volumen del programa
n = n 1 + n2
V = N*log2n
– siendo la unidad de medida de volumen el ‘bit’
9
PROYECTOS INFORMÁTICOS
TAMAÑO EN ‘TOKENS’
Operadores
SUBROUTINE
()
'
INTEGER
IF
.LT.
GO TO
DO
=
.GE.
CONTINUE
RETURN
end-of-line
n1=14
Ocurrencias
1
10
8
1
2
1
2
2
6
1
1
2
1
13
N1=51
Operandos
SORT
X
N
100
I
J
SAVE
IM1
2
200
210
1
220
n2=13
Ocurrencias
1
8
4
1
6
5
3
3
2
2
2
2
3
N2=42
10
5
PROYECTOS INFORMÁTICOS
MÉTRICAS DE TAMAÑO
•
Uso de unidades mayores que la LOC para medir el tamaño
•
Definición de módulo: la división del código en módulo obedece
a criterios ‘funcionales’
•
No hay equivalencia entre LOC y módulo
•
Propuesta: medir el tamaño de un módulo por el número de
funciones que contiene
•
Dificultad de evaluar las funciones de un sistema software
11
PROYECTOS INFORMÁTICOS
MÉTRICAS DE TAMAÑO
•
Otro factor que afecta: la reutilización del código:
no se puede evaluar igual el código reusado que el nuevo
•
Tamaño: dos componentes
– Sn: código nuevo
– Su: código reusado
– Se: código equivalente: función de Sn, Su
•
•
BOEHM:
Se = Sn + (a/100)*Su
siendo ‘a’ un factor de
ajuste que depende del % de modificación del diseño (DM)
del código (CM) y del esfuerzo para la integración (IM)
a = 0,4(DM) + 0,3(CM) + 0,3(IM) siendo el valor máximo de a
= 100 (reescritura nueva)
12
6
PROYECTOS INFORMÁTICOS
MÉTRICAS DE TAMAÑO
•
•
•
BAILEY y BASILI: Se = Sn + k*Su k = 0,2 valor obtenido a
partir de una base de proyectos
THEBAUT: Se = Sn + Suk siendo k ≤ 1 y en concreto 6/7
(aprox.).
En este caso: Su 6/7 > 0,25*Su
en cualquier caso: no hay CONSENSO en lo que mide
exactamente el tamaño equivalente
13
PROYECTOS INFORMÁTICOS
EJEMPLO: 5000 LOC,
BAILEY BASILI: Se=Sn+k*Su (k=0,2)
LOC
NUEVAS
REUTILIZADAS
LOC EQUIV.
(Se)
1
5.000
---
5.000
2
4.000
1.000
4.200
3
3.000
2.000
3.400
4
1.000
4.000
1.800
CASO
14
7
PROYECTOS INFORMÁTICOS
Sn
Su
BOEHM
ByB
THEBAUT
Se=Sn+(a/100)Su
Se=Sn+0.2*Su
Se=Sn+Su6/7
a=0,004*Su
5.000
0
5.000
5.000
5.000
4.750
250
4.753
4.800
4.864
4.500
500
4.510
4.600
4.706
3.750
1.250
3.813
4.000
4.201
2.500
2.500
2.750
3.000
3.317
0
5.000
1.000
1.000
1.479
15
PROYECTOS INFORMÁTICOS
MÉTRICAS DE E. DE D.
•
•
•
•
Atienden a:
– cantidad de datos, y uso que se les da
– aparición de los mismos en distintas partes del sistema
Método para contar la cantidad de datos: contar las
entradas en la tabla de referencias cruzadas asociada al
código
VARS representa el número de variables del programa
Métrica n2 de HALSTEAD es válida:
– n2 = VARS + constantes únicas + etiquetas
– n2 cuenta ‘operandos distintos’ por lo que Halstead
propone usar N2 que representa el número total de
‘ocurrencias de operandos
16
8
PROYECTOS INFORMÁTICOS
MÉTRICAS DE E. DE D.
•
•
•
•
Orientadas al uso de módulos
variables vivas (LV)
envergadura (SP, span)
paso de métricas de módulo a métricas globales
LV prog = sum LV i/m
SP prog = sum SP i/n
m = núm. módulos
para i = 1,m
para i = 1,n
n = núm. posibles envergaduras
17
PROYECTOS INFORMÁTICOS
MÉTRICAS DE E. DE D.
•
•
BASILI y TURNER: dos métricas
– par de uso local-global (P,R)
– forma en que los módulos comparten información: (P,R,Q)
Complejidad de datos compartidos: fan-in: el fan-in de un módulo
Q es el número de módulos P que cumplen alguna de las
siguientes condiciones:
– hay una variable R que cumple (P,R,Q)
– hay un módulo T y unas variables R y S tales que: (P,R,T) y
(T,S,Q)
– nota: el fan-in de un módulo es el número de módulos que
directa o indirectamente le pasan alguna información
18
9
PROYECTOS INFORMÁTICOS
MÉTRICAS DE E. DE CONTROL
• cuenta de decisión (DE)
• complejidad ciclomática v(G)
v(G) = e - n + p
e = número líneas diagrama de flujo
n = número de nodos
p = número total de elementos interconectados
si τ representa el número de predicados, se puede
demostrar que:
e -n= τ -1
v(G) = e - n + 2 = τ + 1
dado que τ y DE son prácticamente la misma cosa:
v(G) = DE + 1
19
PROYECTOS INFORMÁTICOS
MÉTRICAS DE E. DE CONTROL
•
Números ciclomáticos de dos diagramas de flujo
e = 14
n = 12
e = 10
n=8
v(G) = 14 - 12 + 2 = 4
v(G) = 10 - 8 + 2 = 4
20
10
PROYECTOS INFORMÁTICOS
MÉTRICAS DE E. DE CONTROL
•
La complejidad ciclomática de un programa formado por
varios módulos es igual a la suma de las distintas
complejidades
m
v(G prog ) = ∑ v (Gi ) =
i =1
m
m
i =1
i =1
∑ ei − ∑ ni + 2m
y de aquí
v(G prog ) =
m
∑ DE
i
+m
i =1
•
la entropía
Zn =
n− 1
∑ log
2
( pi * X + qi );
X=2
i =1
21
PROYECTOS INFORMÁTICOS
MÉTRICAS DE E. DE CONTROL
•
Otras métricas
– número mínimo de caminos Np (Np ≥ v(G))
– accesibilidad del código R
– nivel de anidamiento (NL)
– cuenta de transferencias incondicionales de control
22
11
PROYECTOS INFORMÁTICOS
MÉTRICAS COMPUESTAS
•
Una medida alternativa a la complejidad ciclomática es la
formada por el par (CYC-mid, CYC-max)
•
medidas de HALSTEAD (Ciencia del Software)
– longitud estimada del programa
^N = n1*log2n1 + n2*log2n2
– volumen de programa
V = N*log2n
23
PROYECTOS INFORMÁTICOS
MÉTRICAS COMPUESTAS
•
volumen potencial
V* = (2 + n2*)log2(2 + n2*)
– nivel de programa L
L = V*/V
L = (2/n1)*(n2/N2)
– dificultad D
D = 1/L
– esfuerzo (según Halstead): discriminaciones mentales
elementales
E = V/L = D*V = n1N2N*log2n/2n2
24
12
PROYECTOS INFORMÁTICOS
CASO SORT (tpcia. num. 7):
n1=14
n2=13
N1=51
N2=42
operadores
operandos
Longitud estimada de programa
^N = n1*log2n1 + n2*log2n2= 14*log214 + 13*log213 = 101,45
nº de tokens previstos antes de construir el programa SORT
Volumen de programa
V = N*log2n
V = 93*log227= 442
N = N1 + N2=51+42=93
n = n1 + n2= 14+13= 27
long. programa
vocabulario
25
PROYECTOS INFORMÁTICOS
Volumen potencial
V* = (2+ n2*)log2(2+ n2*)
V* = 5log25 =11,6
n2* nº parámetros In y Output conceptualmente únicos
n2* X, N, X
è n2* = 3
Nivel de programa
MÉTRICAS POCO SÓLIDAS
L = V*/V = 11.6/442 = 0,026
L = (2/n1)*(n2/N2) =2/14 * 13/42=0,044 è V*=V*L=19,4
Esfuerzo
E = V/L = 442/0,044 = 10.042 discriminaciones
mentales elementales
26
13
PROYECTOS INFORMÁTICOS
MÉTRICAS DE ESFUERZO
•
Persona-m e s
•
A tener en cuenta:
–
–
–
–
tiempo de comprensión y aprendizaje
intensidad de trabajo
interrupciones
comunicación entre el equipo
– diferencia entre tamaños de equipos
27
PROYECTOS INFORMÁTICOS
MÉTRICAS DE CALIDAD Y FIABILIDAD
•
•
•
Detección de errores:
– baterías de test
– revisiones técnicas
MYER79:
– la ‘prueba’ es un proceso de ejecución de un programa
para descubrir un error
– un buen caso de prueba es el que tiene una alta
probabilidad de mostrar un error no descubierto
– una prueba tiene éxito si descubre un error no
detectado hasta entonces
Una prueba no puede asegurar la ‘ausencia de defectos’
solo puede demostrar que ‘existen defectos’
28
14
PROYECTOS INFORMÁTICOS
MÉTRICAS DE CALIDAD Y FIABILIDAD
•
La mayor parte de las métricas se basan en la cuenta de
errores o fallos
•
Otras dos métricas importantes:
– Número de cambios realizados en el diseño
– Número de cambios realizados en un programa
•
Métrica más común: Densidad de fallos o errores
Densidad de errores = número de errores/S
S: tamaño del código en número de líneas
29
PROYECTOS INFORMÁTICOS
MÉTRICAS DE CALIDAD Y FIABILIDAD
•
Fiabilidad: medida integral de todo el proceso de desarrollo
•
Definición: probabilidad de que no aparezca un error en un
tiempo determinado:
R(τ) = 1 - F(τ)
R(n) = 1 - dn /n
•
Tasa de riesgo: probabilidad de que el software falle en un
intervalo de tiempo si no ha fallado antes
h(τ) = f(τ) /(1 - F(τ))
•
MTTF: mean time to failure
30
15
PROYECTOS INFORMÁTICOS
MÉTRICAS DE DISEÑO
•
•
aspectos a considerar:
– comprensibilidad
– manejabilidad
– eficiencia
– reducción de errores
– reducción esfuerzo / coste de mantenimiento
principios que dirigen estas métricas:
– acoplamiento
– cohesión
– complejidad
– modularidad
– tamaño
31
PROYECTOS INFORMÁTICOS
OTRAS MÉTRICAS
•
•
•
•
•
de
de
de
de
de
reutilización
portabilidad
mantenibilidad
‘testabilidad’
flexibilidad
32
16
Descargar