Sonar Cobol – Las preguntas

Hemos visto la semana pasada lo que había que saber sobre Mainframe Cobol, antes de entrar en una reunión con los especialistas de esta tecnología y preparar un proceso de análisis con Sonar.

Vamos ahora a examinar las cuestiones para organizar los análisis con Sonar (que veremos en un artículo próximo).

Estas cuestiones también nos permitirán precisar las reglas de entrega del código fuente.

Ya explicaste a tus interlocutores del mundo Mainframe que vamos a trabajar con los programas Cobol y las Copys. La primera cuestión será: ¿sí, pero cuál Cobol?

¿Cual Cobol?

Hay todo tipo de plataformas de mainframe-COBOL: IBM z/OS, IBM AS/400, Bull GCOS (7 y 8), Tandem, Unisys y incluso Unix (Microfocus). El Cobol z/OS es el más común. Se basa en la norma ANSI 85, el que más frecuentemente encontramos. Los otros Cobol están muy cerca, pero pueden tener algunas variaciones de lenguajes que pueden dificultar o incluso bloquear un analizador.

Así que la primera pregunta es ¿cual Cobol? Y si podemos analizar este Cobol con Sonar. La forma más fácil de averiguar: ir a ver en esta página http://www.sonarsource.com/products/plugins/languages/cobol/.

¿Cuáles aplicaciones?

Hemos visto que la noción de aplicación no tenía realmente interés para los cobol-ers. Sin embargo, como con cualquier tecnología, deseas organizar el dashboard Sonar de acuerdo a los diferentes módulos de aplicaciones, para poder responder a preguntas como:

  • ¿Cual aplicación es la más grande? ¿ La más compleja?
  • ¿Dónde se encuentran más defectos? ¿ Las aplicaciones con mayor riesgo para los usuarios? ¿Las aplicaciones más difíciles y por lo tanto las más costosas de mantener?
  • ¿Cual aplicación presenta una deuda técnica importante? ¿Cuales aplicaciones son candidatos para refactoring?
  • ¿Cuál es la calidad del código entregado por mis proveedores?
  • Etc.

Con el fin de presentar un cuadro de mandos Sonar que responda a estas preguntas, es necesario analizar el código de cada aplicación, y entoncer organizar sa entrega en diferentes directorios que corresponden a cada aplicación. El código Cobol es administrado en el mainframe en ‘bibliotecas’ (equivalentes a directorios de tu ordenador), según una arborescencia en módulos de aplicación. Por lo tanto, generalmente basta con extraer cada biblioteca en un repertorio de entrega distinte para cada aplicación.

Pide que el código de cada módulo se entrega en un único directorio. Comprueba con los futuros usuarios del dashboard Sonar la forma en que se desea organizar las aplicaciones.

¿Cuáles reglas de denominación?

En Java, por lo general tendrás una clase nombrada de acuerdo con la entidad correspondiente. Por ejemplo, la clase ‘Cliente’ para administrar a los clientes, la clase ‘Connexion’ para gestionar una conexión, etc. Nada de esto en Cobol. Los nombres de archivos son más esotéricos. Pero, de hecho, es muy bien organizado.

Un archivo Cobol obedece de forma casi sistemática a reglas de denominación con 8 carácteres. Muy a menudo, las primeros 2 o 3 letras de un programa de Cobol corresponden con el módulo de aplicación al cual pertenece.

Un ejemplo de reglas de nomenclatura: AAAnnnnX con

  • AAA para identificar el módulo.
  • nnnn: cuatro dígitos que componen un identificador único.
  • X: sufijo que precisa el tipo de programa. Por ejemplo, (B) para Batch o (T) para TP (transacción). (P)resentación, lógica de (N)egocio o (D)atos (acceso a base de datos).

Encontrarás muchos otros tipos de denominación, esto es sólo un ejemplo. Sin embargo, los elementos de la nomenclatura suelen ser muy a menudo los mismos, y casi siempre con un identificador de aplicación.

Pide que se especifique las reglas de nomenclatura. Estas normas deben permitir comprobar que la entrega es correcta. Por ejemplo, los archivos que comienzan con ‘AAA’ corresponden al módulo de aplicación AAA entregado en un directorio AAA.
A menudo encontrarás archivos que no sean ‘AAA’ en este directorio, pero no muchos. Lo importante, lo has adivinado, es no tener todos los archivos de ‘AAA’ en un directorio ‘ZZZ’ o es que tienes un problema, especialmente en el control de versiones. Falta solamente un pequeño error en el batch de extracción del código fuente, que puede surgir cuando se modifica para, por ejemplo, agregar una nueva aplicación en el dashboard Sonar.

Código generado

Existen generadores de código Cobol. Por ejemplo, una herramienta que permite dibujar una pantalla y luego generar el código para su gestión, para la presentación de la pantalla o la entrada de datos.
Obviamente, no hay ningún interés en analizar el código generado. En primer lugar, estamos interesados en las malas prácticas de programación de los desarrolladores. E incluso si decides corregir los defectos en el código generado, esta corrección va a desaparecer con la próxima re-generación del programa.

Verifica si existe un generador de código. En este caso, hazte precisar cuales reglas de denominación permiten identificar estos programas con el fin de apartarlos de los análisis. Si es posible, hazte entregar los módulos aplicativos sin estos objetos.

Formato de archivo

Los mainframes poseen su propio formato de fichero, y esto no es ASCII. Sin embargo, debemos recibir los archivos en este formato. La persona en carga de la extracción deberá efectuar esta conversión. Nada complicado, hay un montón de utilidades que hacen esto.

También nos hace falta un fichero por componente, es decir para cada programa y cada Copy-book. Esto parece evidente, pero me logró recibir ya un único fichero (muy grueso) con todos los programas.

Otra cosa: el nombre del archivo debe ser igual al nombre del programa o Copy-book. Una vez más, esto parece obvio, pero ya recibí programas con nombres como ‘MP238.PROG (MP8239XZ). La persona encargada de la extracción penso en hacerla bien con la creación de archivos con el nombre de la biblioteca (MP238) y luego el nombre del programa MP8239XZ entre paréntesis.

Algo, al respecto. Un programa Cobol se compone de diferentes partes obligatorias, llamadas ‘División’, y encargadas de reagrupar diferentes elementos de código. Por ejemplo, la “DATA DIVISON” define las estructuras de datos y las instrucciones lógicas deben ser escritas en la “PROCEDURE DIVISION”.
Cualquier programa Cobol empeza necesariamente en la primera línea por una “IDENTIFICATION DIVISION”, con el nombre del programa en la siguiente línea, y esta sintaxis: PROGRAM-ID. <nombre>.

Así que si tienes un archivo que no se inicia con estas dos primeras líneas, o si tienes multiples “IDENTIFICATION DIVISION” o “PROGRAM-ID” en el archivo, o si el “PROGRAM-ID” no coincide con el nombre de archivo, es que las reglas anteriores no fueron seguidas y tienes potencialmete un problema.

Por fin, pida a que los ficheros Cobol tengan una extensión ‘.cob ‘ y los Copy-books una extensión ‘.cpy ‘. Esto no es obligatorio, puedes definir estos parámetros en Sonar, pero tampoco es complicado extraer el código según esta regla.

En resumen, precisa a la persona encargada de extraer el código fuente las siguientes reglas de entrega:

  • Fichero al formato ASCII.
  • Un fichero por programa o Copy.
  • El nombre del fichero corresponde al nombre del programa (o de la Copy).
  • Extensión .cob para los programas Cobol, y .cpy para Copy-books.

Simplificate la vida. Evita crearte etapas adicionales con operaciones de transformación del código fuente. Haz que éste sea en un formato que permita su análisis. Simplifica el proceso, es primordial para automatizarlo y evitar tareas suplementarias, potencialmente fuentes de errores.

Las últimas preguntas corresponden a parámetros necesarios para el parser, para el análisis del código.

Indicador de posición: el código Cobol está alineado en la misma columna. En otras palabras, todas las instrucciones se iniciarán en la misma posición. Por defecto, un programa está alineado con un indicador de posición igual a 7.

En el siguiente ejemplo, los 6 primeros dígitos corresponden a un número de línea (puedes notar que no son secuenciales, para poder introducir nuevas líneas). Pero una vez más, el código comienza en la posición / la columna 7.

Puedes definir este indicador de posición en Sonar, pero mejor antes de encontrar un error de parser.

Otros parámetros que puedes ajustar con Sonar, y entonces, mejor hacer la pregunta antes:

  • Tabulación: así como con todo lenguaje, un programador Cobol va a utilizar la tecla ‘Tab’ para alinear su código. Una tabulación puede representar una talla en carácteres diferente según el tipo de mainframe o de cotazón. Pregunta cual es el tamaño de una tabulación.
  • Longitud de la línea de código: todo fichero ASCII contiene una línea de 80 carácteres. Menos la posición de alineación a izquierda pero también la posición de fin más allá de la cual no se encontrará más código. Pero eventualmente se puede encontrar un comentario. Por defecto, la ‘zona’ de código es igual a 66.

Existen otros parámetros utilizables con Sonar, pero en la mayoría de los casos, no necesitarás conocerlos. Porque en la mayoría de los casos, vas a analizar código Cobol con los parámetros por defecto.

¿ Esto parece complicado? Para nada. Puse las cuestiones por orden de importancia pues todo lo que tienes que recordar, es que:

  • Vas a analizar programas Cobol y Copy-books.
  • Se debe organizar la entrega en diferentes repertorios que corresponden a los diferentes módulos aplicativos que tus usuarios quieren ver en el dashboard Sonar. Pues un repertorio = una aplicación.
  • Pregunta cuáles son las reglas de denominación de los ficheros Cobol. Verifica la entrega, particularmente para las primeras versiones, cuando implementas el proceso de análisis.
  • Un fichero por programa con una extensión .cob, y por Copy-book con una extensión .cpy. Facilitate la vida.
  • Verifica que no hay un generador de Cobol. Si es el caso, aparta estos programas generados.
  • Verifica los parámetros por defecto, particularmente el indicador de posición.

Estas preguntas no darán lugar a discusión en reunión. De hecho, tus interlocutores estarán contentos de verte abordar estos puntos. Serán satisfechos de verte plantear las buenas cuestiones. Y luego: los cobol-ers son gente extremadamente amable.

Pronto: el parametraje de un análisis Cobol con Sonar. En la espera, no dudes en preguntar.

Esta entrada está también disponible en Lire cet article en français y Read that post in english.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *