Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mejorando el ambiente de programación Cuis Smal...

Mejorando el ambiente de programación Cuis Smalltalk con refactorings esenciales

Presentación de la tesis de grado de la carrera de Licenciatura en Informática con Orientación al Desarrollo de Software, de la Universidad Nacional de Quilmes.

Trabajo dirigido por Máximo Prieto y Hernán Wilkinson. Defendido el 21/12/2020. Calificación: 10.

Nahuel Garbezza

December 27, 2020
Tweet

More Decks by Nahuel Garbezza

Other Decks in Programming

Transcript

  1. Mejorando el ambiente de programación Cuis Smalltalk con refactorings esenciales

    Departamento de Ciencia y Tecnología Licenciatura en Informática Seminario Final por Nahuel Garbezza dirigido por Máximo Prieto co-dirigido por Hernán Wilkinson
  2. Contexto Refactoring Browser Implementación original de 1995 portada a diferentes

    distribuciones de Smalltalk Dos problemas conocidos: pérdida de formato y modelo “paralelo” del AST Refactorings en Cuis Smalltalk Modelo nuevo que intenta resolver los problemas del Refactoring Browser Desarrollado con Test-Driven Development Varios refactorings pendientes de implementación
  3. Objetivos Generales Implementar un desarrollo de código abierto que pueda

    ser utilizado por toda una comunidad de desarrolladoras/es. Contribuir positivamente a la calidad del código de Cuis Smalltalk / Cuis University Específicos Implementar dos de los refactorings más necesarios: Extract Method y Extract Variable. Mejorar el parser agregando nuevos nodos de AST y source ranges.
  4. Ejemplo 1: resumen • Extract Method de un objeto literal

    • Extract Variable de un objeto literal • Casos de error ◦ Nombre de mensaje o variable incorrectos ◦ Selección de código incompleta ◦ Selección de código inválida • Interfaz de usuario: menú y atajos de teclado
  5. Ejemplo 2: resumen • Source ranges para determinar correctamente los

    límites de cada elemento en el código ◦ raw (existentes) ◦ complete (implementados en este trabajo) • Extract Method aplicado a envíos de mensaje • Extract Variable aplicado a envíos de mensaje
  6. Ejemplo 3: resumen • Nuevos nodos de AST para declaración

    de variables temporales, con sus respectivos source ranges • Extract Method puede extraer código que incluya declaración de variables temporales • Extract Method no agrega retorno en nuevo método si no es necesario • Validación de uso de variables temporales fuera del intervalo seleccionado • Parametrización y sugerencia del nombre de mensaje en la interfaz gráfica
  7. Ejemplo 4: resumen • Extract Variable define la nueva variable

    en el scope más cercano posible • La declaración se agrega en el caso de ser la primer variable, luego las variables nuevas se ubican dentro de la declaración existente
  8. Dimensión del trabajo (I) Modelo Tests Interfaz Gráfica Core de

    Cuis Total Cantidad de Clases 8 nuevas 2 extensiones 6 nuevas 1 extensión 2 nuevas 3 extensiones 3 nuevas 24 extensiones 19 nuevas 30 extensiones Cantidad de métodos 172 111 35 140 458 Líneas de código 625 837 173 652 2287
  9. Extract Method Extract Variable Core de Cuis Total Cantidad de

    tests 41 25 22 89 Tiempo de ejecución de los tests 6780ms 3816ms 21ms 10616ms Dimensión del trabajo (II)
  10. Conclusiones Sobre el resultado del trabajo Desarrollo de código abierto

    valorable por la comunidad y en producción Terreno propicio para introducir nuevos refactorings Beneficio para alumnxs y docentes que utilizan CuisUniversity Sobre el proceso Desarrollo iterativo e incremental Uso de Test-Driven Development Reuniones de seguimiento con directores y grupo de tesistas
  11. Trabajo Futuro Cuis Smalltalk Mejorar interfaz y experiencia de usuario

    Implementar más nodos de AST y sus respectivos source ranges Refactorings Sugerir fragmentos de código duplicados Deshacer refactorings Implementar refactorings opuestos: Inline Method e Inline Variable