Aplicación de técnicas de machine learning a modelado de software
La complejidad de los sistemas que demanda la sociedad actual (por ejemplo, sistemas distribuidos en la nube, sistemas ciber-físicos, Internet de las cosas, sistemas colaborativos y dependientes del contexto, etc.) plantea cada vez dificultades mayores para ser abordada con los paradigmas de programación mayoritarios. Aumentar el nivel de abstracción con el que se desarrolla el software es un elemento esencial para abordar esta complejidad.
La Ingeniería Dirigida por Modelos (MDE; Model-Driven Engineering) propone el uso activo de modelos durante todas las fases del desarrollo de un sistema software. Así pues, en MDE, el foco del desarrollo está puesto en la creación de los modelos que representan las diferentes partes del sistema a un mayor nivel de abstracción, en lugar de simplemente en la codificación utilizando uno o más lenguajes de programación.
x000D
Por otra parte, el aprendizaje automático (Machine Learning; ML) es un paradigma que intenta abordar problemas que es muy complicado programar a mano (por ejemplo, filtro de correo no deseado, reconocimiento de caras, traducción de textos, reconocimiento de voz, etc). En general, dado un problema y datos referentes a dicho problema el ML busca (o aprende) una función matemática que asocia el conjunto de entradas con el conjunto de salidas empleado algún algoritmo de aprendizaje.
x000D
x000D
En el contexto de MDE se están empezando a aplicar ML a diversos problemas (por ejemplo, clasificación de meta-modelos y recomendadores), pero solo de manera incipiente. Sin embargo existe un gran potencial para usar las técnicas de ML para mejorar los entornos de modelado. Los dos principales problemas actuales son la carencia de buenos datasets y el encontrar buenas representaciones para entrenar modelos de ML.
La hipótesis de esta tesis es que supliendo estas dos carencias se podría aplicar ML a MDE de manera efectiva, y así poder crear mejores entornos y técnicas de modelado asistidas por modelos de ML. En particular, se construirá uno o varios datasets (conjuntos de datos) de modelos software extraídos de diversas fuentes, se estudiará la forma de transformar un modelo SW a un representación adecuada para aplicar ML, se generarán modelos ML entrenados con dichos datasets que hagan uso de las representaciones estudiadas y se emplearán para construir aplicaciones que faciliten al desarrollador/modelador software su labor (por ejemplo, se plantean como objetivos iniciales clasificar meta-modelos según su dominio, crear un buscador de modelos y crear un recomendador que asista en la creación de artefactos software).