Skip to content
Franco Moloche edited this page Nov 19, 2019 · 30 revisions

Wiki de proyecto de mantenimiento y Extensión de Software TinyUML

Integrantes:

  • Geral Esteen Castillo Arredondo (Hokaid)
  • Fiorella Barrientos Villalta (lafifii)
  • Franco Moloche Garcia (francoMG)

Descripción de TinyUML

Tiny UML es un software que permite hacer diagramas basándose en el lenguaje unificado de modelado (UML). Asimismo, a dicho diagramador le faltan una gran cantidad de funcionalidades que la mayoría de diagramadores UML actuales tienen. En este proyecto, se tiene como objetivo añadir una de esas funcionalidades al software.

Cambio: Adicción de color a las clases de un diagrama

1. Solicitud de Cambio

Se pide implementar una nueva funcionalidad al software TinyUML, enfocada en agregar la opción de poder añadir color a las clases de los diagramas. Para ello se deberá:

  • Permitir recibir entradas tipo q, las cuales permitan efectuar el cambio de color de las clases.
  • Configurar el cambio de color de la clase a partir de la selección de un color usando comandos.

2. Ubicación del Concepto

La localización de los archivos relacionados al concepto se realizó a través de varias metodologías. Primero, se hizo uso del comando Hierarchy y las operaciones de debug para buscar clases relacionadas al control del modo de edición de las clases. También se indagó entre los vínculos de las diferentes clases del programa con estas clases ya localizadas hasta dar con los elementos relevantes de modificar, en este sentido se utilizó la exploración manual entre clases.

3. Análisis de impacto

Dado que la solicitud es puntualmente la adición de una característica específica, se pronosticó una modificación puntual, es decir un cambio localizado con lo que se espera muy bajo impacto.

4. Prefactoring

Para la implementación del requerimiento solicitado se debe, en primer lugar, localizar los archivos que controlen conceptos claves relacionados. En este caso, se indaga en el programa por el código encargado de:

  • Controlar la “edición” de el color de las clases.
  • Controladores de las entradas tipo q, las cuales permitan asignar un color a la clase.

Las características antes mencionadas están parcialmente identificadas tras el proceso de búsqueda del concepto. Para poder implementar la solución, se requerirá necesariamente el confeccionamiento de un nuevo modulo, el cual permita asignar colores a las clases. Se debe poder elegir entre una serie de colores básicos, los cuales al ser seleccionados, deben de poder ser asignados a una clase. Asimismo, la clase debe mostrarse con el color cambiado. Esta modificación es una agregación puntual de funcionalidad sobre el sistema. En primera instancia, esto debe reflejarse en un cambio localizado en el código fuente, con lo que no deberían propagarse problemas de ningún tipo al efectuar la implementación de la solución correctamente, así como tampoco deberían verse afectadas otras funcionalidades nativas de la versión de TinyUML que se está modificando, esto pues la modificación no interviene ningún procedimiento propio del programa. Se estima que no será preciso producir nuevas clases para desarrollar las funcionalidades completas.

5. El proceso de aprendizaje

En el siguiente diagrama se ilustran las clases revisadas y relacionadas a la solicitud en estudio. Se ha seguido la siguiente nomenclatura: Negro para clases no revisadas pero importantes, Azul para clases identificadas y estudiadas, Rojo para clases modificadas y Verde para las clases que se proyectan a agregar.

El diagrama anterior representa el modelo predicho para las modificaciones e incluye relaciones reales entre clases del sistema.

6. Actualización

La adición de la solicitud propuesta tiene, por lo menos, tres partes: : la formulación de una interfaz capaz de controlar el color de una clase y la implementación de la misma:

  • Hecho por Franco Moloche
  • La primera modificación realizada fue hecha sobre la clase AbstractNode. Dicha modificación consiste en la agregación de una variable que represente el color del elemento, en este caso de las clases.

  • Hecho por Franco Moloche
  • Por defecto la clase Comparment, en su método draw, dibujaba con un color por defecto. Al tener una variable color en AbstractNode, y al ser Comparment una extensión de esta, fue posible remplazar el color asignado por lo retornado por dicha variable previamente creada.

  • Hecho por Geral Castillo
  • La tercera modificación se basa en modificar el constructor y el método clone de la clase ClassElement. Se agregaron los campos relacionados al color, tanto al momento de crearlo como al momento de copiarlo.

  • Hecho por Fiorella Barrientos
  • La cuarta modificación implica la agregación de un nuevo metodo en la clase DiagramEditor. Dicho método permite que el color asignado al elemento seleccionado sea cambiado.

  • Hecho por Fiorella Barrientos
  • El quinto y ultimo paso consiste en agregar las llamadas a los eventos relacionados al presionar la tecla "Q". Dicha modificación se realiza en la clase DiagramEditor, en el metodo "installHandlers".

7. Postfactoring

Para agregar la funcionalidad que permita la modificación del color de una clase se presento un problema. Al momento de cambiar el color con la tecla "Q", los elementos seleccionados no cambiaban su color. No obstante, al momento de mover un elemento, recién se podía apreciar la actualización del color. Para solucionar dicho problema, se llamo al método "redraw()" en el metodo "recolorSelection()" de la clase DiagramarEditor. Esto ultimo para que se realice la actualización de los colores en el momento en que se presiona la tecla "Q".

Además del especificado, no se ha presentado otro problema durante la implementación de la funcionalidad propuesta. En ese sentido, la arquitectura modular del codigo del sistema no ha sido alterada significativamente. Asimismo, tampoco fue necesario la adición de nuevas clases para cumplir con el requerimiento.

8. Conclusión

La intervención realizada en el sistema se concentró en dos tareas específicas: Construir un nuevo modulo, el cual permita modificar el color de las clases diseñadas en el ambiente general y desarrollar la implementación del comportamiento asociado a la misma. Para ello, se intervino clases de diseño de las clases de un diagrama agregando nuevas características y se elaboró nuevos metodos que cumplan la función de editor de colores para la asignación de colores a una clase, esto último a partir de mecanismos ya disponibles en el sistema.

Se logro con éxito la agregación de la funcionalidad, permitiendo cambiar el color de una clase seleccionada. Este cambio se realiza, tras el efecto de presionar una tecla como comando. Esta tecla corresponde a la letra "Q".

9. Anexos