Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a...

23
Sesión7 Sesión7 Inspección de errores

Transcript of Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a...

Page 1: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Sesión7 Sesión7 Inspección de errores

Page 2: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Inspecciones de software

0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.Algunos grupos de desarrollo creen que la calidad del software es algo en lo que deben preocuparse una vez que se ha generado el código. ¡ Error ¡ La garantía de la calidad del software es una actividad de protección que se aplica a lo largo de todo el proceso de ingeniería de software. La SQA (Software Quality Assurance) engloba:0 Un enfoque de gestión de calidad0 Tecnología de Ingeniería de Software efectiva (métodos y herramientas)0 Revisiones técnicas formales que se aplican durante el proceso del

software0 Una estrategia de prueba multiescalada0 Un control de la documentación del software y de los cambios realizados0 Un procedimiento que asegure un ajuste a los estándares de desarrollo

de software0 Mecanismos de medición y de generación de informes

Page 3: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Inspecciones de software

0El trabajo técnico necesita ser revisado por la misma razón que los lápices necesitan gomas: errar es humano. La segunda razón por la que necesitamos revisiones técnicas es que, aunque la gente es buena descubriendo algunos de sus propios errores, algunas clases de errores se le pasan mas fácilmente al que los origina que a otras personas. El proceso de revisión es, por lo tanto la respuesta a la plegaria de Robert Burns: ¡Que gran regalo sería poder vernos como nos ven los demás!

0Una revisión es una forma de aprovechar la diversidad de un grupo de personas para: 0 Señalar la necesidad de mejoras en el producto de una sola

personao de un equipo 0 Confirmar las partes del producto en las que no es necesaria o no

es deseable una mejora.0 Conseguir un trabajo de mayor calidad maximizando los criterios

de Correctitud y Completitud principalmente .

Page 4: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Inspecciones de software

0 El control de la calidad es una serie de revisiones, y pruebas utilizados a los largo del ciclo de desarrollo para asegurar que cada producto cumple con los requisitos que le han sido asignados.

0 La garantía de calidad o aseguramiento de la calidad consiste en la auditoria y las funciones de información de la gestión. El objetivode la garantía de la calidad es proporcionar la gestión para informar de los datos necesarios sobre la calidad del producto, por lo que se va adquiriendo una visión más profunda y segura de que la calidad del producto está cumpliendo sus objetivos. Es de esperar, que si los datos proporcionados mediante la garantía de la calidad identifican problemas, la gestión afronte los problemas y aplique los recursos necesarios para resolverlos.

0 La garantía de calidad del software comprende una gran variedad de tareas, asociadas con dos constitutivos diferentes: los ingenieros de software, que realizan trabajo técnico, y un grupo SQA, que tiene la responsabilidad de la planificación de garantía de calidad.

Page 5: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Impacto de los defectos del software en el costo0 Dentro del contexto de desarrollo de software, los términos "defecto" y "fallo"

son sinónimos. Ambos implican un problema de calidad descubierto después de entregar el software a los usuarios finales.

0 El objetivo primario de las revisiones técnicas formales (inspección) es encontrar errores durante el proceso para evitar que se conviertan en defectos después de la entrega del software. El beneficio obvio de estas inspecciones es el descubrimiento de errores al principio para que no se propaguen al paso siguiente del proceso de desarrollo del software (catarata de errores de Mizuno).

0 Una serie de estudios (TRW, Nippon Electric y Mitre Corp., entre otros) indican que las actividades del diseño introducen entre el 50% y 65% de todos los errores(y en último lugar, todos los defectos) durante el proceso de software. Si embargo se ha demostrado que las inspecciones de software son efectivas en un 75% a la hora de detectar errores

0 Con la detección y la eliminación de un gran porcentaje de errores, el proceso de inspección reduce substancialmente el costo de los pasos siguientes en las fases de desarrollo y mantenimiento.

0 Para ilustrar el impacto sobre el costo de la detección anticipada de errores, consideremos una serie de costos relativos que se basan en datos de costos realmente recogidos en grandes proyectosde software [IBM81]. Supongamos que un error descubierto durante el diseño cuesta corregirlo 1,0 unidad monetaria. De acuerdo a este costo , el mismo error descubierto justo antes de que comience la prueba costará 6,5 unidades; durante la prueba 15 unidades; y después de la entrega, entre 60 y 100 unidades.

Page 6: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Amplificación y eliminación de defectos

0Se puede usar un modelo de ampliación de defectos [IBM81] para ilustrar la generación y detección de errores durante los pasos de diseño preliminar, diseño detallado y codificacióndel proceso de ingeniería del software. En la figura A se ilustra esquemáticamente el modelo. Cada cuadro representa un paso en el desarrollo del software. Durante cada paso se pueden generar errores que pasan inadvertidos. La inspección puede fallar en descubrir nuevos errores y errores de pasos anteriores, produciendo un mayor número de errores que pasan inadvertidos. En algunos casos, los errores que pasan inadvertidos desde pasos anteriores se amplifican (factor de ampliación x) con el trabajo actual. Las subdivisiones de los cuadros representan cada una de éstas características y el porcentaje de eficiencia para la detección de errores, una función de la profundidad de la inspección.

Page 7: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Amplificación y eliminación de defectos

Page 8: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Amplificación y eliminación de defectos

0La Figura B ilustra un ejemplo hipotético de la amplificación de defectos en un proceso de desarrollo de software en el que no se lleva a cabo inspecciones. En la Figura se asume que cada paso descubre y corrige el 50% de los errores que le llegan, sin introducir ningún error nuevo (una suposición muy optimista). Antes de que comience la prueba se han amplificado 10 errores del diseño preliminar a 94 errores. Al terminar quedan 12 errores latentes.

Page 9: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Amplificación y eliminación de defectos

Page 10: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Amplificación y eliminación de defectos

0La Figura C considera las mismas condiciones pero llevando a cabo inspecciones del diseño y de la codificación dentro de cada paso del desarrollo. En este caso los 10 errores del diseño preliminar se amplifican a 24 antes del comienzo de la prueba. Sólo quedan 3 errores latentes. Recordando los costos asociados con el descubrimiento y la corrección de errores, se puede establecer el costo total (con y sin inspecciones para nuestro ejemplo hipotético).

Page 11: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Amplificación y eliminación de defectos

Page 12: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Amplificación y eliminación de defectos

0De acuerdo a la Tabla 1, se puede ver que el costo total para el desarrollo y el mantenimiento cuando se realizan inspecciones es de 783 unidades. Cuando no hay inspecciones, el costo total es de 2.177 unidades; casi 3 veces mas caro.

Page 13: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Amplificación y eliminación de defectos

0A partir de lo expuesto , podríamos resumir los beneficios comprobados al aplicar Inspecciones en :

0Reducción de los defectos en el uso del software0Reducción de los recursos de desarrollo, sobre todo

en las etapas de codificación y prueba0Reducción en los costos de mantenimiento

correctivo

Page 14: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

El proceso de inspección.

0Consiste de 6 pasos:1.Planificación: Cuando el desarrollador completa su un

““producto de trabajo””, se forma un grupo de inspección y se designa un moderador. El moderador asegura que el ““producto de trabajo”” satisfaga el criterio de inspección. Se le asignan diferentes roles a las personas que integran el grupo de inspección, así como la planificación de tiempos y recursos necesarios .

2.Overview: Si los inspectores no están familiarizados con el desarrollo de l proyecto, un vista general es necesaria en éste momento. Este es un paso opcional, pero no menos importante ya que en esta etapa se dará al grupo de inspección un “background” y el contexto a cubrir por las inspecciones.

Page 15: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

El proceso de inspección.

3. Preparación: Los inspectores se preparan individualmente para la evaluación en la reunión, estudiando los productos de trabajo y el material relacionado. Aquí es aconsejable la utilización de listas de chequeos para ayudar a encontrar defectos comunes, y . El tiempo que pueda llevar esta etapa va a depender de cuan familiarizado esté el inspector con el trabajo que debe analizar.

4. Examen: En esta etapa, los inspectores se reunen para analizar su trabajo individual en forma conjunta. El moderador deberá asegurarse que todos los inspectores están suficientemente preparados. La persona designada como lector presenta el “producto de trabajo”, interpretando o parafraseando el texto, mientras que cada participante observa en busca de defectos. Es recomendable que este examen no dure mas de 2 horas ya que la atención en busca de defectos va disminuyendo con el tiempo. Al terminar con la reunión, el grupo determina si el producto es aceptado o debe ser retrabajado para una posterior inspección.

Page 16: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

El proceso de inspección.

5. Retrabajo: El autor corrige todos los defectos encontrados por los inspectores.

6. Seguimiento: El moderador chequea las correcciones del autor. Si el moderador está satisfecho, la inspección está formalmente completa, y el “producto de trabajo” es puesto bajo el control de configuración.

0 A partir de estos seis pasos surge la necesidad de la conformación de: objetivos, participantes de la inspección y con que roles, productos de trabajo a inspeccionar y cual deberá ser el resultado de las reuniones de inspección.

Page 17: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

El proceso de inspección.

0 Objetivos: El principal objetivo es encontrar defectos en el “producto de trabajo”, de esta manera debemos definir cuales serán las metas a alcanzar para el cumplimiento de éste objetivo.

0 Grupos de inspección: Se recomienda formar grupos entre 3 y 6 personas

0 Roles: determinar quien dirige la inspección y deberá contar con mayor experiencia que el resto, el lector quien presenta los productos de trabajo en las reuniones y el escriba quien documenta la descripción y ubicación de los defectos encontrados.

0 Productos de trabajo: El proceso de inspección puede ser aplicado a diferentes tipos de productos de trabajo que pueden encontrarse en un desarrollo de software incluyendo requerimientos, diseño, código, test, guías de usuario y otro tipo de documentación.

0 Resultado de las reuniones de inspección: Los dos resultados principales debe ser: Una lista de defectos a corregir , y un reporte de inspección que describa que es lo que se inspeccionó, quien inspeccionó qué y el número de defectos encontrados.

Page 18: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.
Page 19: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Métricas en inspecciones

0El proceso de inspección puede ser medido para analizar distintos aspectos del proceso (planificación, monitoreo, control, mejora, etc.) y poder maximizar su eficacia así como corregir posibles desvíos que puedan producirse durante la inspección.

0Las mediciones deben llevarse a cabo para poder formar una base de datos con los distintos proyectos con el fin de utilizarla a la hora de planificar nuevas inspecciones. Tomando como base las métricas propuestas por Jack Barnard (AT&T Bell Laboratories) podemos utilizar los siguientes indicadores:

Page 20: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Métricas en inspecciones

0Total de líneas no comentadas del código fuente inspeccionado Cuando hablamos de líneas de código a medir, siempre se tomarán en cuenta las líneas no comentadas. Sin embargo éste indicador nos dará una primera idea de la comprensibilidad del código (contrastándola con la cantidad total), el cual se deberá tener en cuenta para la planificación de posibles retrabajos y/o fase de mantenimiento.

0Promedio de líneas de código inspeccionado Este es un claro indicador del porcentaje de trabajo que hemos inspeccionado, y deberá analizarse teniendo en cuenta si éste porcentaje supera o no el porcentaje de código relacionado directamente con los requerimientos del software

0Taza de preparación promedio Con este indicador observaremos cuanto nos cuesta, en planificación y cantidad de inspecciones, la inspección de todo el código

Page 21: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Métricas en inspecciones

0Taza de inspección promedio Este será un indicador claro de cuan complejo resulta la inspección del código, y por supuesto que si contáramos con valores de ésta métrica en proyectos similares, éste sería sin duda un valor a tener en cuenta a la hora de planificar y estimar los recursos necesarios

0Promedio de esfuerzo por falla detectada Este promedio nos indicará el esfuerzo invertido por cada falla que se detecte. Este indicador resulta interesante cuando debamos decidir si aplicar o no inspecciones en proyectos similares al inspeccionado.

0Porcentaje de reinspecciones Se complementa con el Promedio de fallas detectadas por KLOC, para ver cuan graves fueron las fallas detectadas

0Eficiencia en la remoción de defectos Este indicador nos da el porcentaje de defectos producidos en la codificación, y nos servirá para determinar el estado del proceso de inspección

Page 22: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Recomendaciones con respecto al equipo de inspección

0No debemos descuidar la comunicación que debe existir entre los inspectores y el team de desarrollo. Debemos tener en cuenta aspectos como la forma en que se comunican los defectos que existan en el software, ya que por una reacción normal el autor del “producto de trabajo” éste intentará justificarlo y muchas veces esa justificación se desvía de su objetivo principal si el autor se siente “atacado” por el inspector.

0Deberemos seleccionar cuidadosamente al grupo de inspección, éste deberá ser “respetado” por el team de desarrollo en cuanto a sus conocimientos profesionales y del proyecto ya que de no ser así esto será sin dudas una fuente de conflicto permanente.

Page 23: Sesión7 Inspección de errores. Inspecciones de software 0 Las inspecciones de software surgen a partir de la necesidad de producir software de alta calidad.

Conclusiones

0 Definimos el marco en el que se aplican las inspecciones de software partiendo de la base de un desarrollo profesional del mismo en el cual lo principal será la calidad de éste, estableciendo como criterios de calidad : Correctitud y Completitud como los principales e imprescindibles.

0 De éste modo podemos afirmar que un software en el que se controle la calidad no puede dejar de lado un proceso de revisión formal del mismo, como podemos observarlo en las normas ISO o CMM del SEI, quizás con otro nombre pero contemplando los mismos objetivos.

0 El proceso de inspección debe ser llevado a cabo por personas que conozcan tanto del dominio específico, así como la tecnología aplicada a las soluciones que serán objeto de la inspección. A partir de éste background en el equipo de inspección, deberán respetarse las etapas planteadas precedentemente, creando las condiciones necesarias para maximizar la sinergia que se produzca sobre todo en la etapa de “examen”.

0 Por ultimo si se decide incorporar inspecciones como parte del ciclo de vida del software a construir, no debe dejar de medirse el proceso para controlarlo e incorporarlo como feedback de los sucesivos proyectos.