Revisión de código
Revisión de código (a veces denominada revisión por pares) es una actividad de control de calidad del software en la que una o más personas verifican un programa, principalmente viendo y leyendo partes de su código fuente, ya sea después de su implementación. o como una interrupción de la implementación. Al menos una de las personas no debe haber sido autora del código. Las personas que realizan la verificación, excluyendo al autor, se denominan "revisores".
Aunque el descubrimiento directo de problemas de calidad suele ser el objetivo principal, las revisiones de código generalmente se realizan para alcanzar una combinación de objetivos:
- Mejor calidad de código– Mejorar la calidad y mantenibilidad de código interno (como legibilidad, uniformidad y comprensión)
- Encontrar defectos– Mejorar la calidad respecto a aspectos externos, especialmente la corrección, pero también encontrar problemas de rendimiento, vulnerabilidades de seguridad y malware inyectado
- Aprendizaje/Transferencia de conocimientos– Ayuda a transferir conocimientos, enfoques de solución y expectativas de calidad, tanto a los revisores como al autor
- Aumentar el sentido de la responsabilidad mutua– Aumentar un sentido de propiedad y solidaridad del código colectivo
- Encontrar mejores soluciones– Generar ideas para nuevas y mejores soluciones e ideas que trasciendan el código específico a mano
- Cumplir las directrices de QA, normas ISO/IEC– Los exámenes de código son obligatorios en algunos contextos, como el software de tráfico aéreo y el software crítico de seguridad
Esta definición de revisión de código la distingue de las técnicas de control de calidad del software relacionadas, como el análisis de código estático, las autoverificaciones, las pruebas y la programación en pares. En el análisis de código estático la verificación principal la realiza un programa automatizado, en las autoverificaciones solo el autor verifica el código, en las pruebas la ejecución del código es una parte integral y la programación en pares se realiza continuamente durante la implementación y no como un paso separado..
Tipos de reseñas
Existen muchas variaciones de procesos de revisión de código, algunas de las cuales se detallan a continuación. Los tipos de revisión adicionales son parte de IEEE 1028.
IEEE 1028-2008 enumera los siguientes tipos de revisión:
- Examen de la gestión
- Opiniones técnicas
- Inspección
- Paseos a pie
- Auditorías
Inspección (formal)
Históricamente, el primer proceso de revisión de código que se estudió y describió en detalle se denominó "Inspección" por su inventor, Michael Fagan. Esta inspección de Fagan es un proceso formal que implica una ejecución cuidadosa y detallada con múltiples participantes y múltiples fases. Las revisiones formales de código son el método tradicional de revisión, en el que los desarrolladores de software asisten a una serie de reuniones y revisan el código línea por línea, generalmente utilizando copias impresas del material. Las inspecciones formales son extremadamente exhaustivas y han demostrado ser efectivas para encontrar defectos en el código bajo revisión.
Revisión periódica del código basada en cambios (tutoriales)
En los últimos años, muchos equipos de la industria han introducido un tipo más ligero de revisión de código en el que el alcance de cada revisión se basa en los cambios en el código base realizados en un ticket, historia de usuario, confirmación o alguna otra unidad de trabajo.. Además, existen reglas o convenciones que incorporan la tarea de revisión en el proceso de desarrollo (por ejemplo, "cada ticket debe ser revisado"), comúnmente como parte de una solicitud de extracción, en lugar de planificar explícitamente cada revisión. Este proceso de revisión se denomina "revisión periódica de código basada en cambios". Hay muchas variaciones de este proceso básico. Una encuesta entre 240 equipos de desarrollo de 2017 encontró que el 90% de los equipos utilizan un proceso de revisión que se basa en cambios (si es que utilizan revisiones) y el 60% utiliza una revisión de código regular basada en cambios. Además, la mayoría de las grandes corporaciones de software, como Microsoft, Google y Facebook, siguen un proceso de revisión de código basado en cambios.
Eficiencia y eficacia de las revisiones
Alcaparras Jones' El análisis en curso de más de 12.000 proyectos de desarrollo de software mostró que la tasa de descubrimiento de defectos latentes en la inspección formal está en el rango del 60-65%. En el caso de la inspección informal, la cifra es inferior al 50%. La tasa de descubrimiento de defectos latentes para la mayoría de las formas de prueba es aproximadamente del 30%. Un estudio de caso de revisión de código publicado en el libro Best Kept Secrets of Peer Code Review contradijo el estudio de Capers Jones y descubrió que las revisiones ligeras pueden descubrir tantos errores como las revisiones formales, pero eran más rápidas y rentables..
También se han estudiado los tipos de defectos detectados en las revisiones de código. Los estudios empíricos proporcionan evidencia de que hasta el 75% de los defectos de la revisión de código afectan la capacidad de evolución/mantenimiento del software en lugar de la funcionalidad, lo que sugiere que las revisiones de código son una excelente herramienta para las empresas de software con largos ciclos de vida de productos o sistemas. Esto también significa que menos del 15% de los problemas discutidos en las revisiones de código están relacionados con errores.
Directrices
Se descubrió que la eficacia de la revisión del código depende de la velocidad de revisión. Las tasas de revisión de código deben estar entre 200 y 400 líneas de código por hora. Inspeccionar y revisar más de unos pocos cientos de líneas de código por hora en busca de software crítico (como el software integrado crítico para la seguridad) puede ser demasiado rápido para encontrar errores.
Herramientas de soporte
El software de análisis de código estático reduce la tarea de revisar grandes fragmentos de código por parte del desarrollador al verificar sistemáticamente el código fuente en busca de vulnerabilidades y tipos de defectos conocidos. Un estudio de 2012 realizado por VDC Research informa que el 17,6% de los ingenieros de software integrado encuestados utilizan actualmente herramientas automatizadas para respaldar la revisión de códigos por pares y el 23,7% espera utilizarlas dentro de dos años.
Contenido relacionado
Historia de la cámara
Tubo de vacío
Señales de humo