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