Revelando patrones arquitectónicos implícitos en Infraestructura como código a través de la transferencia de conocimiento de repositorio de código
...
Díaz Chica, Luis Felipe | 2023
La infraestrucutura como código o por sus siglas en inglés IaC (Infrastructure as
Code) es una modelo de gestión de recursos en la nube por medio de especificaciones
de código. En nuestra investigación buscamos extraer conocimiento implícito de
los proyectos de IaC relacionado a los patrones de arquitectura que están siendo
utilizados en la comunidad de código libre.
Para esto hemos realizado un análisis del estado del arte en temas relacionados con
el análisis estático de código con modelos de lenguaje de gran envergadura también
conocidos como Large Language Models en inglés(LLM), para posteriormente aplicar
técnicas de transferencia de conocimiento a un conjunto de modelos pre-entrenados
y categorizar los patrones de arquitectura encontrados en los proyectos de IaC. La
transferencia de conocimiento es aplicada usando refinamiento (fine-tuning) y su-
pervisado débil. Definimos un sistema de reglas que según los componentes de la
infraestructura presente en el proyecto categorizamos un posible patrón de arqui-
tectura. Este sistema de reglas es usado para construir un dataset inicial de 13200
archivos en 4 lenguajes de programación con sus respectivas etiquetas en 11 cate-
gorías de patrones de arquitectura.
Hemos logrado encontrar una mejora significativa en la categorización de los patrones
de arquitectura después de aplicar transferencia de conocimiento a los modelos pre-
entrenados en código. UnixCode y CodeBERT lograron alcanzar un F1-score 0.96%
de precisión durante entrenamiento. Después de aplicar los modelos a un dataset
desconocido encontramos que los patrones más usado son event-driven, serverless,
microservicios y object storage dentro de la comunidad open source(Github). Tam-
bién el lenguaje de programación predominante en Cloud Development Kit (CDK)
es Typescript seguido por python. Logramos evidenciar un buen rendimiento en la
clasificación de los patrones usando seq2seq como la técnica de representación del
código y modelos pre-entrenados basados en RoBERTa.
LEER