Consistencia lingüística: métrica para evaluar la calidad semántica entre los requisitos funcionales y el código fuente
Advisor
Type
Documento de trabajo
Document language
EspañolPublication Date
2020-08-28Metadata
Show full item recordSummary
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.Summary
Software development should be seen as a process rather than simple coding. In this process, syntax of functional requirements is transformed into controlled language leaving intact the semantics of the software system. Nonetheless, in software systems—due to some developer practices— differences are found in the terms when comparing the source code with the functional requirements, affecting comprehension times, increasing costs, and rendering useless the resources used for understanding the software system in the maintenance stage. Two factors are highlighted in some studies: Importance of code understanding and cohesion based on naming the source code in a way that makes sense when reading it. For this reason, some authors present software quality metrics and tools for complementing development environments, offering naming suggestions, and ensure their usage. However, documentation and models are left behind for understanding the source code. Although the importance of documentation is recognized, no metrics are available for evaluating how much of the model is in the source code and how it is there. Even with existing metrics, source code understanding remains as a process taking longer than expected in the maintenance stage. For the aforementioned reasons, in this MEng. Thesis, we propose a linguistic consistency metric by using a mixture of LSA (Latent Semantic Analysis) and an adaptation to the Levenshtein distance in order to quantify the distance between the source code and the model based on the change of terminology. The proposed metric is tested in a didactic way by using a game and a lab case, which shows how the understanding of software is affected when the terms change and how it is measured by using the proposed linguistic consistency metric. We confirm in a quantitative way with the proposed metric that changes in wording affect software system understanding, we identify which changes diminish source code understanding, and we show that terminology used in the requirements elicitation and reflected in the models should be taken as a fundamental resource.Keywords
Collections
