Mitos, verdades y leyenda de la inspección de código


Inspección de Código

Varios años después de la “crisis” del cambio de siglo, y del periodo en que los artesanos de la inspección de código nacieron, o se hicieron conocidos, por su extraño trabajo al revisar los códigos a mano, vale decir uno por uno, esa noble actividad hoy en día se ve como extraña, lejana y casi como un sin sentido.

Aparecieron entonces las tecnologías, estas cambiaron la forma de trabajar, los lenguajes de programación populares en la industria, las empresas y el mercad. Ya nada era lo mismo y nosotros tampoco lo éramos. 

La Calidad

En el contexto de un proceso de desarrollo de software y como parte de los objetivos definidos en un plan de calidad, se presentan las actividades de control de esta, en dónde cada una de ellas reflejan y ayudan a conseguir los objetivos de la misma. Las inspecciones serán un grupo de actividades asociadas a las tareas de verificación, mientras que las pruebas apuntarán a las de validación.

Sólo con esto, se entiende que las tareas de inspección son las que pueden dar mayor valor agregado al ciclo de vida del desarrollo, por supuesto no estando solas. Pero ¿a qué elemento u orientación de calidad apuntaban las inspecciones? Y como respuesta diremos; a cosas más raras hoy en día… Mantenibilidad y legibilidad.

Antes del año 2000, las empresas de servicios de desarrollo se veían como parte de las áreas de TI de los contratantes, por tanto de algún modo todos estaban involucrados con la calidad del desarrollo en todas sus partes. Hoy el desarrollo es más bien un servicio, y claramente los objetivos del prestador y de la empresa contratante son diferentes, por tanto, para quién contrata es más válido dentro de sus planes de calidad, las actividades relacionadas con la validación, más que con la verificación.

Si bien existen industrias y empresas, que aún mantienen en su interior la fábrica de software (generalmente las que en sus definiciones estratégicas tienen  a las TI, como parte de su núcleo de desarrollo), el mercado ya ha marcado su posición para este tipo de actividad.

La forma en qué se realiza el desarrollo de aplicaciones en este periodo, no solo popularizo la programación orientada a objetos, sino que las metodologías ágiles que  han acelerado el proceso de desarrollo de soluciones. Así mismo las herramientas y framework de apoyo a la construcción de las aplicaciones, son parte de del código que se genera, la distribución del trabajo de las arquitecturas y los procesos que todo esto conlleva.


 

En la actualidad

Y así como si nada en esta vorágine de evolución tecnológica ¡Aparece un nuevo problema! Este es; la seguridad de los sistemas y el desarrollo seguro. Esto no quiere decir que este problema no existiera antes, sino más bien, que ahora este es un problema que muchas más organizaciones tienen, dada la popularización de servicios a través de la Web.

¿Cuál es la forma de corregir esto?

  •  Inspección!!!!!

¿Pero cómo los hacemos, en qué lugar de nuestros procesos ágiles?

  • Herramientas de inspección automáticas!!!!

¿Qué es Mito?

La inspección de código está muerta. Esto es un mito, aún hoy y más válidas que nunca están disponibles las reglas de inspección, basta con solo revisar las páginas de CERT, CWE o OWASP. De hecho estas instituciones internacionales no han detenido su trabajo para que los desarrolladores puedan hacer una buena codificación.

La inspección es muy cara. Esto es un mito en dos aspectos; 1) Si se contrasta con el efecto de imagen ahora que todos ven tu cara en la Web, no lo es. 2) La inspección no se debe hacer como se hacía para el año 2000. Se debe apoyar en herramientas.

Las herramientas de inspección automáticas son la solución. Quizás esta afirmación, es el peor de los mitos, pues no hace creer que lo hacemos bien, pero por ejemplo, en un reporte de OWASP del año 2016 (OWASP AlphaRelease CodeReviewGuide2.0), se reporta que la sola inspección por herramientas, es nula o no sirve para los  puntos del Top 10, así mismo para las 25 vulnerabilidades del CWE.

¿Qué es Verdad?

La inspección de código sigue siendo una técnica útil, pero ya no está sola ni debe estar fuera del marco de los métodos actuales y sus herramientas. Se debe aplicar pero en conjunto y coordinación con otras actividades como; Herramientas de testeo de vulnerabilidades, Análisis de amenazas en base a la arquitectura de solución, Revisión de paquetes de apoyo a la construcción de código, etc. Todo dentro de un plan real de calidad.

La inspección de código sigue ayudando a facilitar el ciclo de vida del código: Este tipo de actividades no sólo aporta a la calidad funcional, sino que ayuda en los procesos de integración al cumplimiento normativo internacional, que para la industria que dispone de sus productos y servicios en la web, puede ser obligatorio (PSSI-DSS). También aporta a los procesos de mejora continua, como parte de las actividades colaborativas destinadas a generar un marco cultural de la calidad, y también como proceso educativo del desarrollo. Y aún así, se requiere del ojo humano.

La leyenda

Cuando se creía que este tipo de actividad estaba extinto, reaparece en estos tiempos pero bajo otra perspectiva, y no esta sola, sino que viene  con un conjunto de herramientas que apoyan su trabajo y que la complementan. Viene inserta en las metodologías ágiles, en los procesos de integración continua y claramente ya no es la de antes.

 

“…we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns – the ones we don’t know we don’ t know.”- Donald Rumsfeld

 

En mi forma personal de leer y comprender esto, diría:

 

“… Sabemos que sabemos lo que conocemos. También sabemos que hay cosas desconocidas; Es decir, sabemos que hay algunas cosas que sabemos que no conocemos. Pero también hay incógnitas; es decir; que hay cosas que no sabemos que no conocemos.”

 

Escrito por: Claudio Soto (PMP®) Testgroup

Conoce Test Quality Control, la manera mas fácil de gestionar tus pruebas de software.

Contacte a un experto TQC