Control de calidad de código COBOL-CICS-DB2

Control de calidad de código COBOL-CICS-DB2: Su importancia y QuaCOBOL una herramienta que verifica el cumplimiento de reglas de buena construcción

Nueva entrega de Curiosidades Cobol de Leonardo Zrycki.




Es conocida en la industria del software la inexistencia de programas carecientes de evolución. 

Hay un ciclo de vida que se cumple y que se inicia con un requerimiento, continúa con un diseño funcional y técnico el cual deriva finalmente en un nuevo programa.

Este es solo el comienzo; con frecuente habitualidad los programas se actualizan tanto sea por corrección de incidencias y bugs como por modificaciones en el negocio.

Igual que con los seres vivos, una buena y saludable concepción, nacimiento, infancia, adolescencia y adultez permitirá en cada etapa evolutiva facilitar los permanentes cambios y adaptaciones en los programas.

Cuanto más saludable luzca un programa, las actualizaciones del software podrán efectuarse en la forma más simple, rápida y menos costosa.

Esto solo es factible de lograr si nuestros programas cumplen con reglas que garanticen la facilidad de su mantenimiento.

Para lograr este objetivo es necesario regular la construcción de programas con la definición de reglas sencillas; entre estas podemos mencionar las reglas de definición de datos, niveles de datos, identacion, uso de índices en tablas, prefijos de nombres de datos, rutinas únicas para apertura, cierre, lectura y escritura de datos, límites a anidamientos de IFs, no uso de hardcodes, no uso de verbos como GO TO y ALTER, prefijo numérico de párrafos, ordenamiento de párrafos según prefijos, EVALUATE sin clausula WHEN OTHER, un solo punto por párrafo, identacion de sentencias en la PROCEDURE, verificación de existencia de archivos o cursores definidos pero no usados, prohibición del SELECT * y otras sentencias SQL, prohibición de algunos comandos CICS, un único STOP RUN / GOBACK / EXEC CICS RETURN.

Pero no basta con tenerlas escritas y usarlas, hay que garantizar que han sido usadas para mantener el compromiso de servicio con nuestros clientes, generar una marca distintiva personal, de equipo, gerencia o software factory para asegurar que nuestros entregables cumplen con los requerimientos y están codificados de forma tal que resultan sencillos de actualizar.

En la experiencia de Software Factory, surgen inconvenientes en las estimaciones, como, por ejemplo, cual es el costo de una actualización simple en un programa de complejidad media o alta.

La buena génesis de un programa, permitirá que esta estimación de costos se mantenga lo más baja posible para beneficio del cliente, la software factory, el equipo desarrollador y el programador.

Veamos algunos ejemplos de mala construcción de programas:

No alt text provided for this image

Aun en un programa HolaMundo pueden generarse algunas dificultades de lectura.

Se puede observar que las cláusulas que habitualmente se encuentran iniciadas en la columna 8 ‘flotan’ entre la 8 y la 11 y que en la propia PROCEDURE se introducen verbos COBOL

Identacion y fácil visibilidad es una de las claves.

Este programa tal como está escrito compila con RC = 0.

No alt text provided for this image

Este programa simplemente calcula la energía generada por una pequeña masa a través de un COMPUTE y despliega su resultado; pero como se ve posee algunos rasgos que lo hacen de muy difícil lectura.

Las variables C2,PI,MASA y ENERGIA no tienen prefijo, por lo que su lectura dentro de la Procedure no nos dirá a que estructura de datos pertenece; sus cláusulas PIC y VALUE se encuentran diseminadas y no en posiciones fijas; por otra parte estas variables no son utilizadas.

Se puede observar que hay 4 verbos COBOL en la misma línea de definición del párrafo PROGR, 3 en el párrafo INICIO, 2 en el párrafo PROCESO, 4 en el párrafo FIN y 1 en al párrafo FIN1.

Otra observación es que algunos nombres de párrafo no se encuentran iniciados en la columna 8 y algo poco conocido y que puede generar un engorroso aglutinamiento es que en los literales el apostrofe no necesita una separación de un espacio en blanco por lo que es posible codificar

DISPLAY’E=MC2’DISPLAY’M:’WS-MASA  sin inconvenientes. 

En COMPUTE WS-ENERGIA=WS-MASA*CT-CT2**se obviaron espacios entre las variables y los signos de operación.

Por último existe un párrafo FIN1 que jamás se ejecutará conteniendo un segundo GOBACK.

Este programa tal como está escrito compila con RC = 4.

Estos 2 programas muestran como la compactación innecesaria afecta gravemente la visualización correcta de las sentencias.

Veamos ahora como la dilatación innecesaria de sentencias afecta de igual forma.

No alt text provided for this image

𝗕𝗢𝗟𝗢𝗡𝗞𝗜2 es una versión de 𝗕𝗢𝗟𝗢𝗡𝗞𝗜1 y compila con RC=4.

La sentencia en el párrafo 0100-INICIO no es otra que MOVE 0  TO WS-ENERGIA. 

y tal como está escrita es absolutamente compilable y de igual significado a lo que podemos llamar su forma normal.

Visualización y mantenimiento de programas quedan dificultados por compactación o dilatación innecesarias de sentencias.

Estos son solo 3 ejemplos de una serie grande de formas inadecuadas de codificación.

Al observar la falta de herramientas de control de calidad de código COBOL-CICS-DB2 me sumergí en el desarrollo de un proyecto que presenté en el concurso público 𝗙𝗼𝗻𝗦𝗼𝗳𝘁 de la Agencia de Promoción Científica y Tecnológica del Ministerio de Ciencia y Tecnología de Argentina, el cual fue aprobado y adjudicado , y con el que se generó QuaCOBOL.

QuaCOBOL es una herramienta de control de calidad de código COBOL-CICS-DB2 que asegura la calidad de los programas de acuerdo con el cumplimiento de reglas generadas desde las mejores prácticas de construcción de programas

QuaCOBOL realiza las siguientes acciones sobre un programa fuente:

1.    Parsea el código según la gramática COBOL extrayendo todos sus componentes

2.    Verifica existencia de errores sintácticos

3.    Verifica el cumplimiento de 60 reglas de buena construcción de programas

4.    Reporta incumplimientos de reglas

5.    Reporta estadísticas del código como:

5.1 Verbos COBOL, comandos CICS y sentencias SQL usados y sus respectivos números de ocurrencia

5.2 Verbos, comandos CICS y sentencias SQL de uso no permitido y sus respectivos números de ocurrencia

5.3 Lista de Copys e Includes

5.4 Estadísticas de párrafos

5.5 Estadísticas de declaración y uso de archivos

5.6 Estadísticas de declaración y uso de tablas SQL

5.7 Estadísticas de declaración y uso de cursores SQL

5.8 Variables no usadas

Párrafos definidos pero no utilizados ( código muerto )

No alt text provided for this image

QuaCOBOL Pantalla de solicitud de análisis de calidad de programas con patrón de búsqueda ??K4*, desde BA hasta DD con última fecha de actualización entre el 01/07/2020 y 31/08/2020

No alt text provided for this image

QuaCOBOL Reporte de incumplimiento de reglas de calidad de código

La detección e identificación de estas fallas permite la rápida reparación del programa para adecuarlo a las reglas, simplificar el código y facilitar enormemente su visualización y mantenimiento.

La generación de estadísticas permite conocer la estructura del programa y por lo tanto conocer su grado de dificultad, dato necesario para estimar costos de mantenimiento.

En mi valoración personal contar con una herramienta de control de calidad de código COBOL-CICS-DB2 es imprescindible.

No hay comentarios:

Publicar un comentario