Densidad de defectos - Carreras de Sistemas - UARG
Transcripción
Densidad de defectos - Carreras de Sistemas - UARG
PARTE III PSP 2 continuación Estructura de PSP 2 1 PSP 2.0 3 Estimando cantidad de Defectos Analizar los defectos nos permitirá determinar cual es el mejor método de depurar nuestro código El desarrollo de software no es un proceso estable. La inventiva y creatividad del ser humano lo torna inestable El estandar de defectos inyectados es de 50 a 250 x KLOC. 4 2 La dificultad de estimar defectos La estimación no es tarea exacta 1-Los conocimientos y la experiencia varían 2-El desarrollo de por si no es estable 3-El proceso de depuración inserta más errores PSP intenta estabilizar la inyección de defectos y así estimar con exactitud. 5 Densidad de defectos La densidad de errores inyectados por cada 1000 lineas de código es la medida que utilizaremos Dd= 1000*D/N Dd densidad de defectos D cantidad de defectos encontrados N cantidad nuevas y modific. Líneas de código Pj: Un programa de 96 LOC con 14 defectos Dd= 1000*14/96 = 145,85 defectos/KLOC 6 3 Estimando los defectos a inyectar 1- Estimar la cantidad de LOC, supongamos 56 líneas 2- Calcular el promedio de Dd de programas anteriores Ddplan =1000(D1+....+D2)/(N1+.....+Ni) Ddplan= 1000(6+11+7+9+5)/(37+62+49+53+28) Ddplan=1000*38/229= 165,94 defectos/KLOC Programa Defectos (D) LOC (N) 1 6 37 2 11 62 3 7 49 4 9 53 5 5 28 Total 38 229 7 Proceso de estimación Asumiendo que el nuevo programa tendrá la misma densidad de defectos obtenemos los defectos. Dplan = Nplan * Ddplan / 1000 Dplan = 56 * 165,94 / 1000 = 9,29 8 4 9 Resumen Estimamos la Densidad de defectos de programas anteriores En base a la Densidad estimamos los defectos a inyectar en un nuevo programa Proyectando errores con mayor proximidad nos permitirá mejorar la calidad de nuestro proceso 10 5 Costos de remover defectos Equilibrio entre calidad, tiempo y costos. A medida que avanzamos en etapa de depuración aumenta el tiempo de solución (10x) Los desarrollos crecen en complejidad pero no así el proceso de desarrollo. Lo típico es codificar y depurar en las etapas de compilación y pruebas. Windows NT fue desarrollado con 30.000 defectos, llevo 1 año a 250 desarrolladores depurar el código, 16 hs. / defecto. 11 Relación defectos inyectados y removidos 12 6 PSP y los costos de remover defectos 13 PSP y el cálculo de los defectos/hs PSP enfoca a optimizar el proceso de desarrollo La optimización apunta a desarrollar código libre de errores Para desarrollar código libre de errores debemos aprender de nuestros errores y así poder prevenirlos. Aquellos que indefectiblemente insertamos debemos depurarlos antes de compilar. Para analizar y optimizar nuestro proceso de depuración vamos a conocer nuestro patron de defectos removidos e inyectados 14 7 Defectos encontrados y removidos Calculamos nuestros valores históricos de defectos encontrados y removidos en el lapso de 60 minutos. 1-Defectos insertados en la etapa de diseño 2-Defectos insertados en la etapa de codificación 3-Defectos removidos en la revisión de código 4-Defectos removidos en la etapa de compilación 5-Defectos removidos en la etapa de pruebas 15 PSP – Resumen del Plan de Proyecto Lo nuevo... To Date% Def./Hour 16 8 Histórico de Defectos encontrados y removidos 1-Histórico de Defectos inyectados en el diseño 60 * / (def. inyectados en diseño / minutos acumulados en el diseño) = 60*5/195 = 1,54 2-Histórico de defectos inyectados en la codificación. 60 * / (def. inyectados en codif. / minutos acumulados en la codificación) = 60*25/792 = 1,89 17 Defectos encontrados y removidos 3-Histórico de Defectos removidos en la revisión del código 60 * / (def. removidos en Rev. Código / minutos acumulados en la Revisión de Código) = 60*12/145 = 4,97 4-Histórico de Defectos removidos en la compilación 60 * / (def. removidos en Rev. Código / minutos acumulados en la compilación) = 60*13/100 = 7,80 5-Histórico de Defectos removidos en las pruebas 60 * / (def. removidos en las pruebas / minutos acumulados en las pruebas) = 60*6/279 = 1,29 18 9 Medida para evaluar el proceso de remoción de defectos PSP enfoca a remover errores antes de compilar La medida para evaluar nuestro avance en este objetivo es conocer los % de errores encontrados y removidos antes de compilar por primera vez. Esta medida es conocida como Process YIELD. Process YIELD es el % de errores detectados antes de la primera compilación Como siempre calculamos, lo Planeado, lo 19 sucedido y lo acumulado en el tiempo Cálculo de Process YIELD Lo planificado: Yield planificado=100*(plan de defectos a remover antes de compilar/plan de defectos inyectados antes de compilar) = 100*2/(1+5) = 33,3 % Lo sucedido: Yield actual =100*(Defectos a removidos antes de compilar/Defectos inyectados antes de compilar) = 100*4/(1+4) = 80,0 % Lo sucedido en el tiempo (acumulado): Yield ToDatel =100*(Defectos acumulados removidos antes de compilar/Defectos acumulados inyectados antes de compilar) = 100*12/(5+25) = 40,0 % 20 10 Mejorando la remoción de defectos El objetivo es remover el 100% de defectos. Inicialmente nuestro objetivo será menor (70%) Utilizar el checklist para hacer la revisión del código Optimizar el checklist agregando y eliminando controles que no ayuden a encontrar defectos. Una definición de locura es hacer siempre lo mismo y esperar que ocurra algo distinto [Brown]. Significa, si no cambiamos el checklist se nos filtrarán los mismos defectos 21 Resumen de Remoción de Defectos Los defectos son inevitables Impactan en nuestros costos, tiempo y calidad de nuestro trabajo El método eficiente es la revisión del código. En las pruebas se detectan 2-4 defectos / hora En la revisión del código, 6-12 defectos / hora El compilador es eficiente en defectos de sintaxis Para mejorar el proceso de remoción de errores introducimos dos nuevas medidas: Defectos / horas por fase inyectados y removidos Process YIELD , relación en % entre removidos / inyectos Analizando cada fase sabremos que debemos 22 mejorar 11 Calidad del Producto Vamos a analizar la relación de defectos encontrados y los que quedan remanentes para el cliente PSP enfoca a iniciar con calidad los primeros pasos del proceso de desarrollo La realidad es que ser descuidado en el desarrollo no hay herramienta que lo corrija. Esto se demuestra que cuando mayor cantidad de errores detectamos en la compilación, mayor cantidad pasan a la etapa de pruebas y mayor cantidad quedan remanentes. 23 Efectividad de métodos Cada etapa de depuración es un filtro de defectos Cuantos más errores entran a cada etapa de filtrado, revisión de código, compilación y testeo mas errores se filtran. Si el proceso de depuración tendría una tasa Process YIELD (porcentaje de removidos sobre los insertados) de 100% no existiría ningun problema, pero no es la realidad. Método Tasa Yield Revisión de código 70-80 Inspección 50-70 Compilación 50 Pruebas 40-50 Prueba Integración 45 Prueba Requerim. 45 24 12 Calculando la efectividad de cada método de remoción FASE DEFECTOS Código 12 defectos Def. encontrados/removidos Rev. Código 7 defectos Remanentes 5 encontrados -Rev. Yield=5/5 100% Compilación 4 defectos Remanentes 3 encontrados -Comp. Yield= 3/3 = 100% -Rev. Yield=5/8 62,5 % Pruebas 2 defectos Remanentes 2 encontrados -Pruebas Yield=2/2 100% -Comp. Yield= 3/5 = 60% -Rev. Yield=5/10 50 % 0 defectos remanentes 2 encontrados -Pruebas Yield=2/4 50 % -Comp. Yield= 3/7 = 42,9% -Rev. Yield=5/12 41,7 % Despues de las pruebas O en uso YIELD=100 * def. encontrados def.removidos 25 Calculando la tasa YIELD final La única forma de obtener certeza de cuantos errores son entregados al cliente, es tener el registro de todos los errores del producto hasta que el producto no se utilice más. La regla aceptada para este cálculo es que la cantidad de defectos entregadas es igual a la última etapa de depuración. Esto es aceptar que la tasa YIELD de la última fase es el 50%. Esto es crítico. 26 13 Calculando la tasa YIELD final Ejemplos: A) 17/(17+2+1)=85% agregando errores entregados al cliente: • 17/(17+2+1+1)=80,95% los B) 17/(17+15+8)=42,5% agregando los errores entregados al cliente: • 17/(17+15+8+8+8)=35,40% 27 Resumen La depuración de defectos es un proceso de filtrado. Más defectos colocamos en el filtro más encontramos , pero más pasan el filtro. La tasa Yield de la fase de Testeo es a los sumo 50%. La única forma de obtener un desarrollo de calidad es poner un desarrollo de calidad en el filtro de la etapa de Testeo 28 14