DevOps, Desarrollo, Seguridad

Auditoría de código en IBM i: Detección temprana de errores con Shift Left

Contenido

La auditoría de código en IBM i (AS400 – iSeries) es un pilar fundamental para identificar errores de manera temprana en el ciclo de vida de las aplicaciones. Adoptar esta práctica no solo fortalece la seguridad de las aplicaciones, sino que también ofrece tres beneficios clave para cualquier equipo de desarrollo:

  1. Aplicaciones más seguras en producción, al detectar y corregir vulnerabilidades antes de que lleguen a manos de los usuarios.
  2. Código más mantenible a largo plazo, lo que ayuda a evitar la acumulación de deuda técnica que dificulte futuras modificaciones.
  3. Mejor rendimiento de los sistemas IBM POWER, optimizando los recursos y prolongando la vida útil del entorno.

Antes de explorar en profundidad estos beneficios y cómo integrar la auditoría de código en nuestros procesos, es crucial comprender el concepto de “shift left”, una estrategia que nos permitirá abordar estos desafíos desde las primeras etapas del desarrollo.

¿Qué es “shift left”?

El concepto de “shift left” es sencillo pero muy interesante. En esencia, significa “mover hacia la izquierda” dentro del ciclo de vida del desarrollo de software aquellas actividades clave que tradicionalmente se realizaban más tarde. En este contexto, se trata de realizar tareas como las pruebas y auditorías de código en las primeras fases del desarrollo, en lugar de dejarlas para las etapas finales, como solía ser costumbre.

Este enfoque tiene como objetivo detectar y corregir errores lo antes posible, idealmente antes de que el software llegue a producción. Al integrar auditorías de código desde el inicio del ciclo de desarrollo, podemos identificar problemas de seguridad, rendimiento o calidad de manera temprana, lo que reduce significativamente el costo y el tiempo de resolución.

En lugar de esperar hasta la fase de pruebas o incluso hasta la implementación en producción, “shift left” nos permite abordar estos errores cuando son más fáciles y baratos de corregir. Esto no solo mejora la calidad del código final, sino que también ayuda a crear aplicaciones más seguras y robustas desde el principio.

En el caso de las auditorías de código, aplicar el enfoque “shift left” significa que la revisión del código ya no es una tarea que se deja para el final del proyecto o antes del despliegue, sino que se convierte en una práctica continua durante todo el desarrollo.

Auditorías vs pruebas: Diferentes objetivos, mismo propósito

Es importante aclarar que las auditorías de código no reemplazan a las pruebas tradicionales, ya que ambos procesos tienen objetivos distintos, pero complementarios. Mientras que las pruebas, como las pruebas unitarias y de regresión, se centran en verificar que la funcionalidad del software sea correcta, las auditorías de código se enfocan en la calidad interna del código y su adherencia a las mejores prácticas de desarrollo.

Un desarrollo puede pasar todas las pruebas unitarias, funcionales y de regresión, llegar a producción y funcionar perfectamente en cuanto a su rendimiento y funcionalidad esperada. Sin embargo, si el código no ha sido auditado, aún existe el riesgo de que presente problemas críticos en el futuro. Estos problemas no siempre son evidentes en las pruebas tradicionales, pero pueden surgir cuando la aplicación está en uso o necesita mantenimiento.

Por ejemplo, una aplicación que ha pasado todas las pruebas puede ser vulnerable a inyecciones SQL u otras amenazas de seguridad, debido a fallos en la estructura del código o en los controles de entrada de datos, que las pruebas funcionales no detectan. Además, si el código contiene malas prácticas de desarrollo (como hard-codeos o código mal estructurado), es probable que el mantenimiento futuro de la aplicación sea más complejo, costoso y propenso a errores.

Las auditorías de código, por otro lado, están diseñadas específicamente para detectar estos problemas desde una perspectiva de calidad, seguridad y sostenibilidad del código. Aseguran que el código:

  • Siga las mejores prácticas de seguridad, identificando posibles vulnerabilidades como la inyección SQL.
  • Sea mantenible en el tiempo, evitando la acumulación de deuda técnica y asegurando que los desarrolladores futuros puedan modificarlo con facilidad.
  • Cumpla con los estándares de calidad, lo que contribuye a un código más limpio, optimizado y estructurado.

Entonces, mientras que las pruebas aseguran que el software funcione según lo planeado, las auditorías aseguran que el código esté bien hecho y sea seguro a largo plazo. Ambos procesos son fundamentales para liberar software de alta calidad y con el menor riesgo posible.

Desafíos en la auditoría de código en IBM i

La auditoría de código en entornos IBM i presenta varios desafíos únicos, principalmente debido a la naturaleza de los sistemas heredados (legacy) y los lenguajes de programación tradicionales como RPG, COBOL y otros lenguajes específicos de esta plataforma. A continuación, se destacan algunos de los retos más comunes al auditar código en este entorno:

1. Complejidad del código heredado (legacy)

El código en sistemas IBM i ha sido desarrollado y mantenido a lo largo de décadas, lo que significa que muchos proyectos actuales incluyen grandes volúmenes de código heredado. Este código, escrito hace años (o incluso décadas), puede ser difícil de entender, ya que:

  • Falta de documentación: Muchos sistemas heredados no cuentan con la documentación adecuada, lo que dificulta la comprensión de los flujos de trabajo y la lógica de negocio implementada.
  • Estilo de codificación inconsistente: A lo largo de los años, diferentes desarrolladores han trabajado en el mismo código, utilizando estilos de codificación variados y, a menudo, obsoletos, lo que complica su revisión.
  • Obsolescencia técnica: Parte del código podría estar escrito en versiones antiguas de RPG o COBOL, lenguajes que han evolucionado, lo que añade complejidad a la hora de auditar y modernizar.

2. Lenguajes especializados y poca familiaridad

Los lenguajes como RPG, COBOL y CL son menos comunes en el mundo del desarrollo moderno, lo que significa que muchos equipos de auditoría de código y seguridad pueden no estar familiarizados con sus peculiaridades. A pesar de ser lenguajes extremadamente robustos, presentan algunos desafíos específicos:

  • Sintaxis y paradigmas únicos: Lenguajes como RPG tienen una sintaxis diferente y estructuras de control que no son familiares para quienes no han trabajado en entornos IBM i. Esto dificulta la identificación de errores o vulnerabilidades que podrían pasar desapercibidos para auditores con experiencia en lenguajes modernos como Java o C#.
  • Escasez de herramientas automatizadas: Si bien existen herramientas para auditoría de código en lenguajes modernos, hay menos opciones especializadas para revisar código escrito en RPG o COBOL. Aunque herramientas como ARCAD CodeChecker están emergiendo, los equipos que no utilizan este tipo de soluciones suelen recurrir a auditorías manuales, que son más lentas y propensas a errores humanos.

3. Integración de código moderno con código heredado

A medida que las organizaciones buscan modernizar sus aplicaciones, muchas veces deben integrar código nuevo escrito en lenguajes modernos (como Java o PHP) con el código heredado en RPG o COBOL. Este híbrido de tecnologías crea nuevos desafíos de auditoría:

  • Inconsistencia en las prácticas de desarrollo: El código moderno puede seguir mejores prácticas y estar bien estructurado, pero al mezclarse con código antiguo sin revisiones adecuadas, pueden surgir incompatibilidades y riesgos.
  • Seguridad de aplicaciones híbridas: La integración entre componentes modernos y heredados puede generar puntos débiles, especialmente si el código heredado no sigue los estándares de seguridad actuales. Por ejemplo, los componentes modernos pueden estar bien protegidos contra amenazas como la inyección SQL, mientras que las partes del sistema en RPG o COBOL podrían no tener esa misma protección.

4. Costos y recursos limitados

Realizar auditorías de código en IBM i puede ser costoso y requerir recursos altamente especializados. Dado que los lenguajes y plataformas no son tan comunes en la actualidad, las organizaciones pueden enfrentar dificultades para encontrar desarrolladores y auditores con experiencia en estos entornos.

  • Escasez de talento: Los desarrolladores especializados en RPG y COBOL son cada vez más escasos, lo que puede ralentizar el proceso de auditoría y hacer más costoso su mantenimiento.
  • Resistencia al cambio: Dado que muchos de estos sistemas han estado en funcionamiento durante años, existe una resistencia inherente a cambiar las prácticas establecidas o adoptar nuevas tecnologías, como las auditorías automáticas y el enfoque “shift left”.

5. Mantenimiento de la deuda técnica

Sin auditorías regulares, el código heredado tiende a acumular deuda técnica, lo que significa que, aunque el software siga funcionando, se vuelve más difícil de mantener y actualizar con el tiempo. Esto es especialmente crítico en sistemas IBM i, donde las empresas dependen de aplicaciones esenciales para sus operaciones diarias.

  • Riesgo de obsolescencia: La falta de auditorías de código estructuradas puede llevar a un código que es cada vez más difícil de modificar o integrar con nuevas tecnologías.
  • Impacto en la seguridad y el rendimiento: El código mal mantenido puede ser menos seguro y más propenso a errores en el rendimiento, lo que pone en riesgo la estabilidad del sistema en su conjunto.

Auditoría de código automatizada con ARCAD CodeChecker

En la auditoría de código para entornos IBM i, la complejidad y los riesgos asociados con el manejo manual de código heredado son significativos. Dependiendo de la naturaleza de los proyectos y el volumen de código, realizar auditorías de manera manual no solo aumenta el tiempo de revisión, sino que también incrementa la probabilidad de que se escapen errores críticos debido a las limitaciones humanas.

Una herramienta como ARCAD CodeChecker es esencial para superar estos desafíos, proporcionando un enfoque sostenible y escalable para la auditoría de código. A continuación, explicamos por qué es necesario recurrir a herramientas especializadas para implementar este proceso de manera eficiente.

1. Reducción de errores humanos y complejidad

Auditar manualmente grandes bases de código en lenguajes como RPG y COBOL requiere un conocimiento profundo de las particularidades de estos lenguajes. Sin una herramienta que automatice este proceso, es muy probable que surjan errores humanos, sobre todo en áreas como la seguridad (inyección SQL, hardcodeo de datos sensibles) y la estructura del código, que podrían resultar en código ineficiente y difícil de mantener.

ARCAD CodeChecker automatiza las auditorías, eliminando esta dependencia del conocimiento especializado y reduciendo los errores que podrían pasar desapercibidos en una revisión manual.

2. Escalabilidad y eficiencia en equipos de desarrollo

Implementar una solución como ARCAD CodeChecker permite auditar código de manera continua y automática. Esto es crucial cuando los equipos de desarrollo buscan iterar rápido y a menudo en un ciclo DevOps. La integración de ARCAD CodeChecker con herramientas de CI/CD, como Jenkins, permite revisar y evaluar la calidad del código en cada commit, garantizando que los errores se detecten antes de la fase de pruebas.

Sin una herramienta de este tipo, la auditoría de código se volvería un cuello de botella en proyectos grandes, ralentizando el desarrollo y la entrega de nuevas funcionalidades.

3. Sostenibilidad en el largo plazo

La deuda técnica es uno de los mayores riesgos cuando no se realizan auditorías de manera efectiva. Código mal estructurado o con malas prácticas, como el uso excesivo de comentarios o complejidad ciclomática alta, puede pasar las pruebas funcionales pero generar problemas a largo plazo.

Con ARCAD CodeChecker, los desarrolladores pueden monitorear métricas clave de calidad de código en cada versión, asegurando un mantenimiento más fácil en el futuro y previniendo el crecimiento de la deuda técnica.

4. Especialistas en implementación y soporte de ARCAD CodeChecker

Nosotros somos especialistas en la implementación y uso de ARCAD CodeChecker. Si estás interesado en evaluar esta herramienta o integrarla en tu ciclo de desarrollo, podemos apoyarte en todo el proceso, desde la instalación hasta la personalización de reglas y métricas específicas para tus necesidades. Nuestra experiencia te permitirá agilizar el proceso de auditoría y mejorar la calidad de tus aplicaciones en IBM i.

La auditoría automatizada no solo simplifica el proceso, sino que también asegura que los estándares de calidad y seguridad se mantengan en cada paso del desarrollo. Contáctanos para probar ARCAD CodeChecker y descubrir cómo puede mejorar el resultado final de tu proceso de desarrollo.

¿Quién debe llevar a cabo la auditoría de código?

Implementar auditorías de código en un entorno empresarial requiere planificación y una clara asignación de responsabilidades. Las empresas deben tener en cuenta que la auditoría no es simplemente un paso adicional en el ciclo de desarrollo, sino una práctica esencial para garantizar la calidad y seguridad del código antes de que llegue a producción.

No obstante, esta tarea puede generar cierta resistencia dentro del equipo de desarrollo o seguridad debido a la carga de trabajo ya existente. Por lo tanto, es crucial identificar a las personas responsables y diseñar un flujo de trabajo eficiente para no sobrecargar áreas operativas.

1. Equipos de calidad de software o QA

El equipo de calidad de software es uno de los más indicados para asumir la tarea de auditoría de código, sobre todo porque su función principal es garantizar que el software cumpla con los estándares establecidos.

Sin embargo, es importante destacar que la auditoría de código se centra en aspectos estructurales y de seguridad del código más que en pruebas funcionales. Equipos de QA con conocimientos en código pueden usar herramientas como ARCAD CodeChecker para automatizar parte de estas tareas y evitar revisiones manuales exhaustivas.

2. Desarrolladores Senior o Líderes técnicos

En muchas empresas, los desarrolladores senior o líderes técnicos son los responsables de la revisión del código. Debido a su experiencia, están capacitados para identificar patrones de código ineficiente, deuda técnica o malas prácticas que puedan afectar la mantenibilidad del sistema. Sin embargo, es importante que cuenten con herramientas adecuadas para llevar a cabo este proceso de manera eficiente y evitar una carga de trabajo innecesaria.

Integrar ARCAD CodeChecker en los procesos de desarrollo continuo puede reducir la cantidad de tiempo que los líderes técnicos dedican a revisiones de código manuales. Esto permite que su tiempo se enfoque en las decisiones estratégicas más críticas mientras las herramientas automatizan la identificación de problemas estándar.

3. Equipos de seguridad

Aunque la auditoría de código puede tener un enfoque en la seguridad, no debe recaer exclusivamente en el equipo de seguridad. Estos equipos ya suelen estar sobrecargados con otras responsabilidades, como la gestión de vulnerabilidades, monitoreo de amenazas y cumplimiento normativo.

Las herramientas de auditoría, como ARCAD CodeChecker, permiten que las revisiones de seguridad estén automatizadas en etapas tempranas del desarrollo, lo que reduce la carga para estos equipos y asegura que no se dejen escapar vulnerabilidades importantes, como inyecciones SQL o codificaciones inseguras, antes de que lleguen a producción.

4. Equipos DevOps o de integración continua (CI/CD)

Los equipos de DevOps están en una posición clave para implementar auditorías de código automatizadas dentro de un flujo de integración y entrega continua (CI/CD). Usando herramientas como ARCAD CodeChecker, estos equipos pueden ejecutar auditorías de manera automática en cada etapa del ciclo de desarrollo, asegurando que cualquier error estructural o de seguridad se detecte antes de que el código avance a producción.

Esto hace que el proceso sea escalable y fluido sin requerir intervención manual en cada paso, manteniendo la agilidad en los despliegues.

5. Especialistas en auditoría o terceros

Si la empresa no tiene la capacidad o el conocimiento para implementar auditorías de código de manera interna, puede ser útil contar con especialistas externos en auditoría de código. Estos pueden ayudar a configurar la herramienta y asegurarse de que se aplique correctamente a los proyectos. Además, los terceros pueden brindar una perspectiva independiente, ayudando a identificar problemas que los equipos internos podrían pasar por alto.

Implementación sin comprometer otras áreas

Para garantizar que la auditoría de código no sobrecargue los recursos de desarrollo, seguridad o QA, es importante que se integre de manera fluida en el ciclo de desarrollo. Esto incluye:

  • Automatización del proceso: Las herramientas como ARCAD CodeChecker deben estar integradas en las fases iniciales de CI/CD para que el código se audite automáticamente en cada commit.
  • Definición clara de roles: Las auditorías de código deben ser una tarea compartida entre equipos, pero con roles bien definidos para evitar duplicidades o malentendidos sobre quién es responsable de cada área.
  • Capacitación adecuada: Todos los equipos involucrados deben recibir capacitación sobre las herramientas y las reglas de auditoría para asegurarse de que entienden el proceso y cómo colaborar de manera eficiente.

Con una correcta implementación, las auditorías de código pueden realizarse sin comprometer la agilidad o la carga de trabajo de los equipos, garantizando al mismo tiempo que el código que llega a producción sea de alta calidad y esté libre de vulnerabilidades críticas.

Auditoría para aplicaciones nuevas y existentes en IBM i

La auditoría de código es una herramienta esencial no solo para garantizar la calidad en nuevos desarrollos, sino también para revisar y mejorar aplicaciones existentes que han acumulado deuda técnica a lo largo de los años. En entornos como IBM i, donde las aplicaciones heredadas han evolucionado durante décadas, es fundamental abordar ambos aspectos de manera estratégica.

ARCAD CodeChecker permite auditar aplicaciones ya en producción, lo que representa una excelente solución para abordar problemas de deuda técnica acumulada. Sin embargo, no es recomendable aplicar este proceso de inmediato en aplicaciones existentes. El enfoque más eficaz debe ser progresivo y planificado.

1. Priorizar nuevas Aplicaciones y adaptar los Equipos

La prioridad debe ser implementar la auditoría en el proceso de desarrollo de nuevas aplicaciones. Dado que la auditoría representa un nuevo paso en el ciclo de desarrollo, es crucial asegurarse de que los equipos correspondientes se alineen con estas responsabilidades y se adapten a las herramientas y procesos.

Este proceso de adaptación puede tomar tiempo, por lo que es importante permitir que los equipos superen cualquier resistencia al cambio y se familiaricen con la auditoría sin generar presión adicional. La curva de aprendizaje inicial se enfocará en integrar la auditoría como parte natural de su flujo de trabajo, reduciendo progresivamente la posibilidad de introducir errores o malas prácticas.

2. Mantener la estrategia hasta lograr madurez

Una vez que los equipos hayan alcanzado un cierto nivel de comodidad y madurez con el proceso de auditoría, es recomendable mantener la estrategia sin grandes modificaciones durante un período. Esto les permitirá consolidar la práctica y garantizar que los nuevos desarrollos mantengan altos estándares de calidad y seguridad en el código.

3. Auditorías a aplicaciones existentes: Abordando la deuda técnica

Cuando los equipos ya estén cómodos con la auditoría en los nuevos desarrollos, será el momento adecuado para evaluar las aplicaciones heredadas. Realizar auditorías a estas aplicaciones más antiguas requiere una planificación cuidadosa y proyectos dedicados, ya que estas aplicaciones suelen ser más difíciles de corregir debido a su complejidad y antigüedad.

Con herramientas como ARCAD CodeChecker, es posible llevar a cabo auditorías progresivas, priorizando las áreas más críticas o vulnerables. Este enfoque gradual permite eliminar la deuda técnica poco a poco sin interrumpir las operaciones y evitar grandes riesgos de negocio. La corrección de aplicaciones heredadas debe considerarse un proyecto robusto y continuo, diseñado para mejorar la calidad del código y reducir los problemas futuros.


La auditoría de código en IBM i es una pieza clave para garantizar la calidad, seguridad y mantenibilidad tanto de las nuevas aplicaciones como de las existentes. Implementar el enfoque “shift left” permite detectar errores y vulnerabilidades desde las primeras etapas del desarrollo, lo que disminuye costos y tiempos de corrección. Además, aunque las auditorías no reemplazan las pruebas tradicionales, las complementan para ofrecer una visión completa sobre el estado del código. El uso de herramientas como ARCAD CodeChecker no solo facilita la integración de estas auditorías en el ciclo de desarrollo continuo, sino que también proporciona una solución eficaz para gestionar la deuda técnica en aplicaciones heredadas.

Superar los desafíos únicos de IBM i, como la complejidad del código legado y la integración de tecnologías modernas con lenguajes antiguos, es posible cuando se adopta un enfoque progresivo. Primero, implementando auditorías en el desarrollo de nuevas aplicaciones, y luego, a medida que los equipos maduran en el uso de estas herramientas, auditando aplicaciones existentes para corregir y mejorar su sostenibilidad a largo plazo.

En TIMWare, somos especialistas en auditoría de código con ARCAD CodeChecker, y estamos preparados para ayudarte a integrar esta práctica en tus proyectos. No dudes en contactarnos si necesitas asistencia o quieres mejorar la calidad de tus aplicaciones en entornos IBM i.

Suscríbete al newsletter
¿Necesitas ayuda?
Únete a nuestro nuevo foro especializado en IBM i - AS400. Busca o haz consultas específicas en las que nuestro equipo de ingeniería y la comunidad podemos apoyarte.
Más de 35 años de experiencia en Sistemas IBM i (Anteriormente AS/400 - iSeries)
Síguenos en
Tecnologías de Innovación y Mejora S.A. de C.V.
Ciudad de México
México

Suscríbete a nuestro newsletter

Información relevante para los profesionales en IBM i
TIMWare © 2024. Todos los derechos reservados

Regístrate a nuestro siguiente webinar

Modernización: Preparando el IBM i - AS400 para los retos del mañana 🚀

Únete a nosotros para explorar el estado actual de la modernización en IBM i, los desafíos de los sistemas legacy y las estrategias clave para transformar tu infraestructura tecnológica. Hablaremos de cómo asegurar la competitividad de tu empresa, evitar riesgos operativos y optimizar tu entorno IBM i con soluciones prácticas y efectivas.

📅 Fecha: Jueves 28 de noviembre 2024

🕥 Hora: 11:00 am (GMT-6)