\hyphenation{ra-zo-na-mien-tos Vi-sua-li-za-ción di-se-ña-do-res
  mo-de-los in-dus-trial di-se-ña-dor}
\chapter{Conclusiones}
\label{cap:con}\label{sec:conclusiones}

La necesidad de una herramienta Web colaborativa que ofrezca soporte gráfico a los diseñadores, con razonamiento subyacente para mejorar la calidad de los modelos ontológicos fue la motivación más fuerte en este trabajo, resultando en la creación de una arquitectura y de una implementación de la misma. En este desarrollo, nos hemos centrado en formalizaciones de modelos conceptuales de un subconjunto de primitivas de un lenguaje muy utilizado en la industria del desarrollo de software como el UML, dejando abierta las posibilidades para la incorporación de otros lenguajes de modelado conceptual que sean considerados de preferencia en la industria del software.

Es importante para la arquitectura la integración entre las representaciones visuales y las capacidades de razonamientos lógicos. Los modelos conceptuales utilizados a escala industrial pueden resultar largos y complejos de diseñar, analizar y mantener. La expresividad de los lenguajes gráficos pueden llevar a consecuencias implícitas que no son detectadas por el diseñador en estos diagramas, causando así varias formas de inconsistencias o redundancias. Esto resulta en una degradación en la calidad del diseño y/o en el incremento del tiempo y del costo.
La herramienta resultante de la implenetación de la arquitectura propuesta, nos brinda la posibilidad de realizar razonamientos sobre modelos conceptuales cuyos resultados pueden afectarlos. Por ejemplo, puede detectar dichas consecuencias implícitas del modelo que pueden degradar la calidad del mismo, las cuales pueden ser mostradas y contrarrestadas si el usuario lo desea.

%% Este proceso, requiere una herramienta como intermediario para llevar a cabo la iteración cíclica que propone, partiendo por convertir hechos propios del dominio en formas visuales, describir los hechos en un lenguaje de modelado bien definido, luego estas formas visuales se mapean a una ontología para poder, posteriormente, razonar sobre ellas y mostrar los resultados asociándolos al mismo lenguaje gráfico.



En consecuencia, se presentó una arquitectura Web que se basa en el Proceso de Visualización explicado, en Lógicas Descriptiva como forma de representación ontológica y en la formalización de un lenguaje visual de modelado conceptual a esta lógica. También, se planteó el diseño y la interacción de cada módulo para que el usuario pueda crear su modelo y finalmente verificar la consistencia del mismo.

Posteriormente, basado en dicha arquitectura se implementó una herramienta Web colaborativa denominada \crowd{}. En esta, se eligió al lenguaje UML para el modelado conceptual gráfico, en el que se consideró un subconjunto de primitivas de los diagramas de clase. Asimismo, se optó por los lenguajes OWL 2 y OWLlink para representar en Lógica Descriptiva los modelos y las consultas necesarias para verificar su consistencia y de la potencia del razonador RACER para ejecutarlas. Para brindar soporte visual, se seleccionó basándonos en ciertos criterios, la biblioteca gráfica JointJS de entre varias que hemos encontrado disponible, y del lenguaje CoffeeScript para realizar una implementación lo más parecida a los diseños propuestos. Además, se presentó un ejemplo que describe el funcionamiento de \crowd{} y cómo se muestran las inconsistencias en el mismo lenguaje gráfico.

Para finalizar, se realizó una comparación de las distintas herramientas disponibles que hemos relevado con respecto a \crowd{}, describiendo sus diferencias y semejanzas enfocado especialmente al lenguaje para modelar y si posee un servicio de razonamiento de fondo. Concluyendo de esta manera, que a diferencia de \crowd{}, las herramientas relevadas que trabajan con servicios de razonamiento vinculados en ellas y que utilicen lenguaje gráfico son escasas, además que no se fundamentan fuertemente en el Proceso de Visualización para Modelado Conceptual Ontológico.

En resumen, \crowd{}, el producto resultante de la arquitectura propuesta, se establece como una herramienta Web que favorece a la colaboración de diseños ontológicos, minimizando los tiempos cognitivos al permitir la utilización de lenguajes visuales de preferencia para el diseñador y que son de amplio uso en la industria del desarrollo de software haciéndolo aún más accesible. Además, la integración con el servicio de razonamiento, basándose en el Proceso de Visualización para Modelado Conceptual Ontológico y que comparte sus objetivos, permite asistir al usuario verificando el modelo en desarrollo evitando las inconsistencias y, por consecuencia, la degradación de la calidad del mismo. 


% La necesidad de un software con razonamiento subyacente para mejorar los modelos ontológicos fue la motivación más fuerte en este trabajo. Resultando en la creación de una arquitectura y de una implementación de la misma. Asimismo, nos hemos apoyado en formalizaciones de modelos conceptuales de un subconjunto de primitivas de un lenguaje muy utilizado como el UML.  

% Como consecuencia, en el presente trabajo se ha investigado las formalizaciones, tecnologías y herramientas capaces de utilizar y llevar a cabo la misma posibilitando la implementación de \crowd{}, una herramienta con la finalidad de que sea colaborativa, que aumente la calidad de los modelos por medio de servicios de razonamiento subyacentes y con posibilidades de expandir su funcionalidad a futuro.

% En el capítulo \ref{sec:DL} se introdujo las lógicas descriptivas, puesto que es ampliamente utilizadas para la representación de ontologías, y luego se detalló el lenguaje para ontologías Web denominado OWL 2 que es el que se utilizó en la implementación de la arquitectura. Luego, se explicó el uso de UML como lenguaje gráfico para ontologías y cómo su semántica puede ser formalizada en DL.

% %% Uno de los objetivos principales de este trabajo es el de proponer la creación de una arquitectura Web, que incentive el desarrollo colaborativo de ontologías, contemplando el uso de lenguajes visuales y de un razonador subyacente para su posterior chequeo de consistencia.
% En el capítulo \ref{sec:arquitectura} se presenta este diseño y cómo los módulos se interrelacionan entre ellos para que el usuario pueda diseñar su ontología y chequear por consistencias en ella. Además, se explica cómo la herramienta producto de la implementación de esta arquitectura formará parte del Proceso de Visualización para Modelado Conceptual Ontológico.

% En el capítulo \ref{sec:imp} se describe a \crowd{}, una implementación de la arquitectura.
% En esta, se optó por el uso de UML como lenguaje gráfico del lado del cliente, de las bibliotecas gráficas JointJS y del uso del lenguaje CoffeeScript para llevar una implementación lo más parecida a los diseños propuestos.
% Del lado del servidor, se utiliza el razonador Racer con el protocolo descripto en el lenguaje OWLlink, todo siendo gestionado por scripts en PHP. Además, se implementó la formalización del modelo UML a DL propuesta en \cite{DBLP:journals/ai/BerardiCG05} como se explica anteriormente.
% Para concluir el capítulo, se presenta un ejemplo que muestra el funcionamiento de \crowd{} y cómo se muestran las inconsistencias en los modelos UML.

% Finalmente, en el capítulo \ref{sec:comp_otras_herr} se muestra una comparación de las distintas herramientas disponibles que hemos relevado con \crowd{}, describiendo sus diferencias y semejanzas enfocado especialmente a el lenguaje para modelar y si posee un servicio de razonamiento de fondo. Concluyendo así que, a diferencia de \crowd{}, las herramientas relevadas que trabajan con servicios de razonamiento vinculados en ellas y que utilicen lenguaje gráfico son escasas, además que no apoyan fuertemente el Proceso de Visualización para Modelado Conceptual Ontológico.


\section{Trabajos Futuros}
% \subsection{Consideraciones para Modificaciones Futuras}
%% \germanin{18-1-2017}{Dejar para trabajos futuros en conclusiones.}
Al momento de diseñar e implementar esta arquitectura se tuvo en cuenta los cambios más importantes que pueden surgir a futuro. Por ejemplo, el uso de diferentes razonadores requerirá de una interfaz que permita adaptar la ejecución y la puesta en marcha de estos. El diseño de \crowd{} brinda soporte para realizar estos cambios.

En el lado del cliente, se consideró la posibilidad de utilizar varias primitivas gráficas de otros lenguajes como ORM y EER e incluso interoperar entre estas primitivas para aumentar la expresividad visual. 
% Además, se tuvo en cuenta que estas primitivas deben ser representadas en un lenguaje de intercambio para ser enviadas al servidor.
Aunque sólo se brinde la posibilidad de programar o de realizar estas acciones, la semántica y la traducción junto con los factores que se tuvieron en cuenta para la interacción de varios lenguajes visuales no corresponden con el objetivo de este trabajo.

En cuanto a la interoperabilidad y la posibilidad de generar diferentes representaciones del modelo del usuario en los lenguajes mencionados, se logra con la implementación del metamodelo expuesto en la sección \ref{sec:modelado asistido}. Este trabajo está en desarrollo y algunos avances preliminares se han presentado en \cite{gbraun:gbraun2017:JAIIO-2}. 

En cuanto al servidor, la traducción puede ser expandida para soportar diversas primitivas gráficas de los lenguajes proveídos por el cliente, varias estrategias o metodologías de codificación de un lenguaje gráfico a \DL{} y/o el uso de varios lenguajes textuales como de varios formatos de salida. Por ejemplo, el programador puede crear una traducción que genere la formalización en Lógica Descriptiva en formato HTML y en OWL 2 para que sea legible para el usuario.
% \chris{01-01-2017}{¿se dijo que iba a ser web antes de esta línea?, sino sacar.}
Además, las consultas a realizar al razonador pueden ser expandidas para ofrecer otros servicios y, por consecuencia, la interpretación de las respuestas por parte del módulo \texttt{Analizador de Respuestas} contempla el análisis de estas nuevas consultas y la intención del programador. Finalmente, el módulo \texttt{Razonador} puede cambiar y/o incorporar más razonadores con el fin de comparar los resultados de cada uno de ellos o de brindar soporte a cualidades específicas que poseen estos.

Estos cambios pueden ser realizables en la implementación propuesta de \crowd{}, dado que el diseño es extensible con estas características, con impacto sobre la menor cantidad de módulos posibles. Sin embargo, todas estas propuestas quedaron fuera del alcance de esta tesis y sólo han sido contempladas para próximos trabajos.

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "../tesis"
%%% TeX-PDF-mode: t
%%% coding: utf-8-unix 
%%% End: 
