# Inspección de software

Inspección en la Ingeniería de software, se relaciona con la Revisión por pares de cualquier producto de trabajo por personas capacitadas que buscan defectos mediante un proceso bien definido. La inspección de software es conocida también como Fagan inspection en homenaje a Michael Fagan, el creador de este popular método de inspección de software.

## Introducción

Una inspección es una de las prácticas más comunes de revisión que se encuentran en los proyectos de software. El objetivo de la inspección es, para todos los inspectores, llegar a un consenso sobre un producto de trabajo y aprobarlo para su uso en el proyecto. Comúnmente los productos inspeccionados de trabajo incluyen el análisis de requisitos de software especificaciones y plan de pruebas. En una inspección, un producto de trabajo se selecciona para su revisión y un equipo se reúne para organizar una inspección del producto de trabajo. Un moderador es elegido para moderar la reunión. Cada inspector se prepara para la reunión inspeccionando el producto del trabajo y tomando nota de cada defecto. 'El objetivo de la inspección es identificar defectos'. En una inspección, un defecto de cualquier parte del producto de trabajo se mantendrá hasta que el inspector de la aprobación de la misma. Por ejemplo, si el equipo está inspeccionando una especificación de requisitos de software, cada defecto será el texto del documento en el que un inspector no está de acuerdo con él.

## El proceso

El proceso de inspección fue desarrollado por Michael Fagan en mediados de 1970 y posteriormente ha sido ampliado y modificado.
El proceso debe tener criterios de ingreso que determinan si el proceso de inspección está listo para comenzar. Esto evita que los productos no terminados de trabajo entren en el proceso de inspección. Los criterios de entrada podría ser una lista de comprobación incluyendo elementos tales como "Al documento se le ha revisado la ortografía".
Las etapas en el proceso de las inspecciones son: Reunión de Planificación, Información general, preparación, reunión de inspección, repetición del trabajo y seguimiento. Etapas de la preparación, la inspección de reuniones y el trabajo repetitivo puede ser reiterado.
* Planificación: La inspección se planea por el moderador.
* Reunión general: El autor describe los antecedentes del producto.
* Preparación: Cada inspector examina el producto para identificar posibles defectos.
* Reunión de Inspección: Durante esta reunión, el lector lee parte por parte del producto y los inspectores marcan de los defectos de cada parte.
* Repetición del trabajo: El autor realiza cambios en el producto de acuerdo a los planes de acción de la reunión de la inspección.
* Seguimiento: Los cambios del autor son revisados para asegurarse de que todo está correcto.
El proceso es finalizado por el moderador cuando satisface algunos criterios de salida predefinidos.

## Roles del proceso

Durante una inspección de los siguientes roles son utilizados.
* 'Autor:' La persona que creó el producto que se inspecciona.
* Moderador: Este es el líder de la inspección. El moderador tiene previsto la inspección y coordina la misma.
* Lector: La persona que lee a través de los documentos, un elemento a la vez. Los inspectores luego señalar los defectos.
* Documentador: La persona que documenta los defectos que se encuentren durante la inspección.
* Inspector: La persona que examina el producto para identificar posibles defectos.

## Tipos relacionados de inspección
### Revisión de código

Un code review se puede hacer como un tipo especial de inspección en la que el equipo examina una muestra de código y corrige cualquier defecto en él. En una revisión de código, un defecto es un bloque de código que no aplica adecuadamente sus requisitos, que no funciona como debería, o que no es incorrecta pero se podría mejorar (por ejemplo, podría hacerse más legible o se podría mejorar su rendimiento). Además de ayudar a los equipos de encontrar y corregir errores, revisiones de código son útiles para el entrenamiento cruzado y para ayudar a los desarrolladores junior aprender nuevas técnicas de programación.

### Revisión de pares

revisiones de pares se considera en la industria una de las mejores prácticas para la detección de defectos de software temprana y el aprendizaje de los artefactos de software. Peer Reviews se componen de tutorial de software, y las inspecciones de software y son parte integral de las actividades de ingeniería de software del producto. Una colección de conocimiento coordinado, las habilidades y conductas facilita la práctica de la mejor manera posible las revisiones por pares. Los elementos de las revisiones por pares incluyen el proceso de revisión estructurada, el nivel de listas de control de productos de excelencia, las funciones definidas de los participantes, y los formularios e informes.
Las inspecciones de software son la forma más rigurosa de las revisiones por pares y se debe aprovechar al máximo estos elementos para detectar defectos. Resultados de las mediciones revelan que las revisiones por pares producen un atractivo retorno de la inversión obtenida a través del aprendizaje acelerado y la detección de defectos tempranos.