Consistencia lingüística: métrica para evaluar la calidad semántica entre los requisitos funcionales y el código fuente (2020)
El desarrollo de software se debe ver como proceso más que como una simple codificación. En este proceso, a los requisitos funcionales se les transforma su sintaxis en lenguaje controlado sin afectar la semántica del sistema de software. Sin embargo, debido a algunas prácticas de los desarrolladores, al comparar el código fuente con los requisitos funcionales se encuentran diferencias en los términos, lo que afecta el tiempo del entendimiento, aumenta los costos y vuelve inútiles los recursos que sirven para comprender el sistema de software en la fase de mantenimiento. Existen estudios en los que se resalta la importancia de la comprensión y cohesión con base en el nombramiento del código fuente para que este tenga sentido cuando se lee. Por esto, algunos autores exponen métricas de calidad de software y herramientas que complementan los entornos de desarrollo, para dar sugerencias de nombramiento y velar por su uso. Sin embargo, para el entendimiento del código fuente no se toma en cuenta la documentación ni los modelos. A pesar de que se reconoce la importancia de la documentación, no hay métricas que permitan evaluar cuánto de los modelos está en el código fuente ni de qué manera y, aún con las métricas existentes, la comprensión del código fuente sigue siendo un proceso que tarda más tiempo del esperado en la fase de mantenimiento. Por lo anterior, en esta Tesis de Maestría se propone una métrica de consistencia lingüística, la cual, usando una mezcla de LSA (Análisis semántico latente por sus siglas en inglés) y una adaptación a la distancia de Levenshtein, permite cuantificar la distancia entre el código fuente y los modelos con base en el cambio de terminología. La métrica propuesta se prueba de manera didáctica mediante un juego y un caso de laboratorio, en el que se expone cómo se afecta el entendimiento de un sistema de software cuando los términos cambian y cómo se mide usando la métrica de consistencia lingüística propuesta. Con la métrica propuesta se confirma de manera cuantitativa que el cambio de las palabras afecta el entendimiento del sistema de software, se identifican los cambios que crean mayor deterioro en el entendimiento del código fuente y se muestra que la terminología utilizada en la educción de requisitos y plasmada en los modelos se debe tomar como recurso fundamental.