• No results found

Delaware’s (Re-)Balancing Act

Hasta este momento se ha descrito la manera en que fue realizada la parte lógica de la extensión de la herramienta para incluir la funcionalidad asociada a Link Prediction

​ , detallando los pasos para crear una nueva categoría dentro del módulo

de estadísticas como así también la manera en que se incorporaron las nuevas métricas dentro de la solución.

No obstante, otro factor no menos importante dentro de la extensión a desarrollar es la parte gráfica de la misma, la cual debe mantener la flexibilidad de la solución y sobre todo la usabilidad del programa. Para cumplir con dicho objetivo, inicialmente se identificó el módulo correspondiente al entorno gráfico de la sección de estadísticas, el cual se denomina “StatisticsPluginUI”. Cabe aclarar que la incorporación de la nueva categoría de predicción de enlace dentro de la pestaña de estadísticas ya se vió solucionada en el apartado anterior al momento de registrarla, utilizando la funcionalidad propia del módulo.

Una vez localizados tanto el módulo como los paquetes a modificar, fue necesario crear dos clases diferentes para cada una de las métricas a implementar. Para mayor facilidad, se decidió mantener los nombres con los que ya contaba la herramienta, por lo tanto las clases inician con el nombre del predictor, seguido de los sufijos “UI” y “Panel” respectivamente. En este punto surge el mismo inconveniente que en la parte lógica de la extensión, es decir, que cada una de las métricas repite una gran funcionalidad entre sí, por lo que fue necesario abstraer ese comportamiento en común con el fin de mejorar la calidad de la solución.

Con respecto a las clases UI que ya estaban presentes dentro del módulo de la aplicación antes de la extensión, cada una de ellas es invocada al momento de seleccionar la opción de ejecutar dentro de alguna categoría determinada. Luego, la aplicación muestra por pantalla una ventana intermedia para que el usuario sea capaz de definir los parámetros necesarios para finalmente ejecutar el algoritmo correspondiente.

A su vez, cada clase implementa la interfaz “StatisticsUI”, en la cual es necesario redefinir los métodos de “setup” y “unsetup” que, tal como sus nombres lo indican, son las funciones que se deben ejecutar a la hora de cargar u ocultar la pantalla intermedia de la métrica en cuestión. El primero de ellos se utiliza para cargar los campos iniciales con valores ya predefinidos (para los cuales, en la etapa de experimentación, se intentará determinar el valor más apropiado de forma empírica). El unsetup, por otro lado, se encarga de almacenar los valores de la interfaz al momento de su cierre, con el fin de que los algoritmos a ejecutar en la sección lógica utilicen los parámetros cargados por el usuario en lugar de los que ya vienen predefinidos.

Teniendo en cuenta tanto los parámetros de la predicción de enlaces que se deben considerar, como así también la estructura antes mencionada, se creó una clase abstracta llamada “PredictorAbsUI”. El objetivo de la misma es abstraer el comportamiento en común de cada predictor, lo cual lleva a cabo implementando la interfaz “StatisticsUI” y definiendo los métodos para cargar/guardar los parámetros de predicción de enlace. La clase se define como abstracta ya que cuenta con métodos de este tipo, como por ejemplo la forma de obtener el panel gráfico de cada métrica o la acción de ocultar el mismo, los cuales serán implementados posteriormente por cada métrica particular.

Una vez implementado el mecanismo de herencia y abstracción, cada una de las clases concretas correspondiente a las métricas deben implementar el resto de los métodos abstractos de la interfaz “StatisticsUI” según sus propias necesidades, ya que cada uno de ellos maneja diferentes tipos de información haciendo que no sea posible abstraer su comportamiento. Entre ellos, se destaca la posibilidad de obtener el nombre a mostrar dentro de la interfaz, la categoría a la cual corresponde y su ubicación dentro de ella, una descripción breve de su utilidad, y por último como se mencionó anteriormente, el panel gráfico correspondiente. Además, la clase utiliza la funcionalidad de la anotación “@ServiceProvider” para registrarse dentro del módulo y asociarse con su respectiva clase lógica a través del método “getStatisticsClass”.

A continuación se puede observar lo mencionado anteriormente a partir de un diagrama. El número de clases se limitó para permitir una mejor lectura del mismo, sin omitir casos excepcionales.

Figura 13 - Diagrama de clases de la abstracción de la UI

Otro componente importante que se debe detallar dentro de la interfaz de la extensión de Link Prediction

, es la ventana intermedia que se muestra previamente

a ejecutar el algoritmo de predicción de enlaces. Dicha ventana cuenta con diferentes campos propios de la técnica de predicción de enlace, que si bien se presenta cargada con valores predefinidos los mismos pueden ser modificados por parte del usuario con el fin de aumentar la flexibilidad de la aplicación y lograr diferentes resultados dentro de las pruebas realizadas.

Como se mencionó previamente, cada una de las clases UI cuenta con un panel gráfico asociado que presenta la información propia de cada métrica. Si bien de todas formas es necesario crear un panel para cada uno de los predictores, aquí nuevamente se decidió por abstraer el comportamiento en común de cada métrica, generando como resultado la clase “PredictionPanelAbs”. Dicha clase solo implementa de forma concreta su constructor, permitiendo que cada uno de sus hijos lo herede. El resto de las funcionalidades necesarias se definen como abstractas para que las métricas que la extiendan puedan implementarlas de acuerdo a sus requerimientos.

A partir de allí, fue necesario crear cada uno de los paneles con la información propia de cada métrica. El primer paso fue extender la funcionalidad de “PredictionPanelAbs” e implementar los métodos abstractos de acuerdo a la información cargada. Luego, se diseñó la interfaz de la extensión considerando todo tipo de errores posibles, como por ejemplo formatos de números incorrectos. Se incluye a continuación un diagrama de clases con la estructura de los paneles propios de cada métrica, incluyendo sólo una de cada una de las posibles estructuras para una mejor comprensión.

Figura 14 - Diagrama de clases asociado a la abstracción del “Panel”

Related documents