La Certificación de Calidad Estática de Código consiste en la comprobación de la calidad del código fuente del Sistema: los indicadores de calidad de código surgen a partir de buenas prácticas reconocidas para cada lenguaje de programación y de los propios estándares de nomenclatura establecidos para estos. Al existir esta dependencia del lenguaje, no hay homogeneidad en las pautas ni en las herramientas para verificarlo, pero sí en la filosofía con la que la Oficina de Calidad la lleva a cabo:
- Uso de herramientas, que permitan automatizar la mayor parte de las comprobaciones puestas a disposición del equipo de desarrollo, para que sean autónomos en la validación del código.
- Generación de informes detallados por parte de la Oficina de Calidad en caso de necesario.
- Soporte a los equipos de desarrollo para la mejora de la calidad del código.
Actualmente se trabaja fundamentalmente con tecnologías Java, Developer y SAP.
Condiciones de prestación del servicio
Para poder ejecutar el Servicio de Certificación Estática de Código es necesario disponer del código fuente del Sistema.
Entradas y Salidas
Se detallan a continuación los elementos de entrada y salida del servicio de Certificación de Calidad Estática de Código:
Entradas | Salidas |
---|---|
Código fuente completo y sus elementos de configuración asociados |
Informe de Verificación de Código (o acceso a los informes generados en herramientas automáticas) |
Defectos de alta en las herramientas correspondientes, si procede |
Resultado de la Certificación
- Superada: se considera superada en el caso en el que los niveles de calidad de código estático acordados con el proyecto se cumplan.
- Para el caso de tecnologías Developer, se considera Superada cuando ni la herramienta diseñada adhoc ni la posterior revisión manual de algunas pautas concretas encuentra defectos en el código.
- Para el caso de tecnologías Developer, se considera Superada cuando la herramienta diseñada adhoc no encuentra defectos en el incremento de código entre dos versiones de código consecutivas.
- Para el caso de tecnología SAP, se considera como Superada si los objetos entregados no aumentan su nivel de disconformidades entre dos versiones consecutivas de código analizadas con la herramienta proporcionada por SAP al efecto del análisis.
- Para el caso en que se haya desarrollado en tecnologías Java:
- en los sistemas en los que no se trabaje en integración continua, se considerará como Superada si los valores marcados en las pautas de verificación específicas, se cumplen.
Téngase en cuenta que este proceso será lento, ya que los equipos de desarrollo no serán autónomos y la revisión no será automática. - en los sistemas en los que sí se trabaje en integración continua, se considerará como Superada si se mantiene o disminuye la línea base establecida.
Recordar que dicho nivel estará automatizado, quedando reflejado en CadenaÚnica.
En este caso, al tener los resultados accesibles, queda bajo la responsabilidad del equipo de desarrollo, revisar los informes de calidad de código de su sistema y acometer los cambios que requieran para mantenerse dentro del nivel acordado. En este sentido, de momento, la Oficina de Calidad solo revisará en los puntos de control del pipeline de implantación la calidad del código.
- en los sistemas en los que no se trabaje en integración continua, se considerará como Superada si los valores marcados en las pautas de verificación específicas, se cumplen.
- Superada con reservas
- Este nivel no aplica ni para tecnologías Developer ni para SAP.
- En el caso de tecnologías Java, se considerará superada con reservas en el caso en que esté No superada en una entrega concreta, pero haya un compromiso de volver/mejorar la línea base en las próximas 2 entregas máximo. Este criterio se aplicará en sistemas no integrados o en los integrados ya maduros.
- No Superada: caso en el que los niveles de calidad de código estático acordados con el proyecto se incumplan.
- Para el caso de tecnologías Developer, la no superación implica el rechazo de la entrega para que se corrija; en el caso de SAP, sin embargo, no implica re-entrega.
Pautas de Verificación del Servicio
Tal y como se ha comentado, este servicio depende de la tecnología y de las buenas prácticas asociadas a estas, por lo que tiene sentido que las pautas de verificación sean también dependientes de las mismas. A continuación se especifican las distintas tecnologías a las que actualmente la Oficina de Calidad aplica este Servicio, así como las verificaciones específicas en cada caso.
En caso de se usen lenguajes/tecnologías diferentes, contactar con la Oficina de Calidad.
Tecnología Java
Las pautas a cumplir en este servicio se implementan sobre las herramientas de integración continua de las que se dispone. A la espera de definir su funcionamiento y proceso de administración, se han definido Umbrales de aceptación permitidos por SonarQube Quality Gates de calidad del código en base a indicadores.
Se aconseja que, salvo excepciones, este servicio sea solicitado únicamente cuando el sistema haya superado el servicio de Certificación de Integración Continua, ya que este garantiza que se gestionará el código de forma adecuada, realizándose la compilación del mismo de forma idónea y, automáticamente se validará el código con las herramientas corporativas, teniendo el equipo de desarrollo acceso a las herramientas y garantizando que sea autónomo para analizar los resultados ya que los informes se generan de forma automática. Además se habrá establecido para el sistema la línea base (o valores de referencia) exigidos para dicho sistema en cuanto a calidad de código se refiere, si necesita que no se apliquen los valores de referencia inicialmente establecidos para todos los sistemas.
Contactar con el soporte de la Oficina de Calidad cuando:
- se requiera de un soporte para mejorar los parámetros de calidad del sistema.
- sea necesario crear una regla específica para ese sistema que tenga particular interés en el mismo.
Herramientas para la Ejecución del Servicio
Tecnología Java
Para aquellos Sistemas de Información que trabajan en integración continua con la infraestructura de este Organismo, son dos las fuentes para analizar el código por parte del equipo de desarrollo de forma autónoma: los resultados expuestos en la herramienta SonarQube y el informe relacionado con el análisis de dependencias que se realiza con plugins de OWASP.
Tecnología Developer
Se ha realizado un desarolllo ad-hoc en este Organismo para la Verificación Estática de Código denominada HawkEye.
Esta herramienta está a disposición de los equipos de desarrollo, de forma que autónomamente pueden revisar la calidad del código del código desarrollado.
En caso de requerirla, solicitar a la Oficina de Calidad.
Tecnología SAP
Para la ejecución del servicio de Verificación Estática de Código (VEC) sobre el tecnología SAP, la Oficina de Calidad hace uso de la herramienta para desarrolladores que incluye esta tecnología: SAP Code Inspector. Esta herramienta, incluida en el pack de desarrollo de SAP, es un inspector de código que permite analizar cualquier objeto del Repositorio de Objetos en términos de sintaxis, seguridad y rendimiento. En dicha herramienta, se pueden definir inspecciones que, con la ayuda de variantes de verificación, examinen ciertos conjuntos de objetos. Como resultado de una inspección, se reciben mensajes de información, de advertencia o de error en diferentes propiedades de los objetos examinados.