DESARROLLO DE UN PROTOTIPO DE SOFTWARE PARA LA...

138
DESARROLLO DE UN PROTOTIPO DE SOFTWARE PARA LA MIGRACIÓN DE DATOS E IMPRESIÓN DE ETIQUETAS SOBRE ESPECÍMENES DE LA FLORA EN EL INSTITUTO DE CIENCIAS NATURALES DE LA UNIVERSIDAD NACIONAL JOHANNA MARCELA GUTIÉRREZ MEZA JUAN CAMILO MOJICA PISCIOTTI UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR INGENIERÍA DE SISTEMAS BOGOTÁ D.C. 2016

Transcript of DESARROLLO DE UN PROTOTIPO DE SOFTWARE PARA LA...

DESARROLLO DE UN PROTOTIPO DE SOFTWARE PARA LA MIGRACIÓN DE DATOS E IMPRESIÓN DE ETIQUETAS SOBRE ESPECÍMENES DE LA FLORA

EN EL INSTITUTO DE CIENCIAS NATURALES DE LA UNIVERSIDAD NACIONAL

JOHANNA MARCELA GUTIÉRREZ MEZAJUAN CAMILO MOJICA PISCIOTTI

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDASFACULTAD DE INGENIERÍA

PROYECTO CURRICULAR INGENIERÍA DE SISTEMASBOGOTÁ D.C.

2016

DESARROLLO DE UN PROTOTIPO DE SOFTWARE PARA LA MIGRACIÓN DE DATOS E IMPRESIÓN DE ETIQUETAS SOBRE ESPECÍMENES DE LA FLORA

EN EL INSTITUTO DE CIENCIAS NATURALES DE LA UNIVERSIDAD NACIONAL

JOHANNA MARCELA GUTIÉRREZ MEZAJUAN CAMILO MOJICA PISCIOTTI

Trabajo de grado como requisito para optar al título de Ingeniero de Sistemas

DirectorPH.D. HENRY ALBERTO DIOSA

CodirectoraPH.D. LAUREN RAZ

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDASFACULTAD DE INGENIERÍA

PROYECTO CURRICULAR INGENIERÍA DE SISTEMASBOGOTÁ D.C.

2016

TABLA DE CONTENIDO

LISTA DE FIGURAS...................................................................................................6LISTA DE TABLAS.....................................................................................................8AGRADECIMIENTOS................................................................................................9INTRODUCCIÓN.....................................................................................................101. FORMULACIÓN DEL PROBLEMA......................................................................112. OBJETIVOS.........................................................................................................14

2.1 OBJETIVO GENERAL...................................................................................142.2 OBJETIVOS ESPECíFICOS.........................................................................14

3. JUSTIFICACIÓN..................................................................................................153.1 JUSTIFICACIÓN ACADÉMICA.....................................................................153.2 JUSTIFICACIÓN TÉCNICA...........................................................................153.3 JUSTIFICACIÓN PRÁCTICA........................................................................15

4. MARCO CONTEXTUAL DEL PROBLEMA.........................................................174.1 ACERCA DEL PROCESO DE RECOLECCIÓN DE UN ESPÉCIMEN E INCLUSIÓN EN LA BASE DE DATOS DEL ICN. ..............................................17

4.1.1 Recolección............................................................................................174.1.2 Secado...................................................................................................174.1.3 Elaboración de etiquetas........................................................................174.1.4 Montaje...................................................................................................174.1.5 Sellado....................................................................................................184.1.6 Cuarentena.............................................................................................184.1.7 Toma de fotografía y código de barras...................................................184.1.8 Incluir espécimen en el herbario............................................................184.1.9 Digitalización..........................................................................................18

5. MARCO REFERENCIAL TECNOLÓGICO..........................................................225.1 PATRÓN ARQUITECTÓNICO.......................................................................22

5.1.1 Patrón de arquitectura modelo vista controlador (MVC)........................225.1.2 Patrón de arquitectura modelo-vista-vista modelo (MVVM)..................22

5.2 ZK .................................................................................................................235.2.1 Arquitectura de ZK..................................................................................235.2.2 ZK con MVC...........................................................................................245.2.3 ZK con MVVM........................................................................................25

5.3 JAVA..............................................................................................................255.4 JPA ................................................................................................................255.5 MySQL ..........................................................................................................265.6 SOBRE LA MIGRACIÓN DE DATOS............................................................26

5.6.1 CSV........................................................................................................265.6.2 XML........................................................................................................275.6.3 XLS.........................................................................................................275.6.4 HTML......................................................................................................27

5.7 SPECIFY.......................................................................................................275.8 GENERACIÓN DE ETIQUETAS...................................................................28

3

5.8.1 Apache POI............................................................................................285.8.2 Itext.........................................................................................................28

5.9 PRUEBAS UNITARIAS..................................................................................285.9.1 Junit........................................................................................................28

6. MARCO METODOLÓGICO.................................................................................296.1 MODELO DE PROCESO UNIFICADO (UP).................................................29

6.1.1 El ciclo de vida del Proceso Unificado...................................................296.1.1.1 Fase de Inicio..................................................................................306.1.1.2 Fase de Elaboración.......................................................................306.1.1.3 Fase de Construcción.....................................................................306.1.1.4 Fase de Transición..........................................................................30

6.1.2 Flujos de trabajo de proceso..................................................................306.2 LENGUAJE DE MODELADO UNIFICADO (UML)........................................31

6.2.1 Unidades lingüisticas de UML................................................................316.2.1.1 Unidades lingüisticas para el modelo funcional..............................316.2.1.2 Unidades lingüisticas para el modelo estructural...........................326.2.1.3 Unidades lingüisticas para el modelo dinámico..............................32

7. BREVE EXPLICACIÓN DE LA METODOLOGÍA DE DESARROLLO APLICADA Y ENTREGABLES...................................................................................................34

7.1 FASE DE INICIO............................................................................................347.2 FASE DE ELABORACIÓN............................................................................347.3 FASE DE CONSTRUCCIÓN.........................................................................357.4 FASE DE TRANSICIÓN................................................................................36

8. MODELO FUNCIONAL........................................................................................378.1 DEFINICIÓN DE POSIBLES ACTORES Y RESPONSABILIDADES ..........37

8.1.1 Rol recolector.........................................................................................378.1.2 Rol validador..........................................................................................388.1.3 Rol administrador...................................................................................38

8.2 DEFINICIÓN DE REQUERIMIENTOS..........................................................398.2.1 Requerimientos funcionales...................................................................39

8.3 REQUERIMIENTOS ESPECÍFICOS DE INTERFACES...............................418.3.1 Interfaces de usuario..............................................................................418.3.2 Interfaces de software............................................................................41

8.4 PROTOCOLOS DE COMUNICACIÓN.........................................................418.5 REQUERIMIENTOS DE PERSISTENCIA....................................................418.6 MODELO FUNCIONAL BASADO EN CASOS DE USO..............................42

8.6.1 Módulo de control de acceso.................................................................448.6.2 Módulo de selección y cargue de archivos............................................508.6.3 Módulo de gestión de especímenes......................................................578.6.4 Módulo de selección y envío de especímenes......................................678.6.5 Módulo de consulta y aprobación de solicitudes de inclusión para aprobación.......................................................................................................718.6.6 Módulo de gestión de usuarios..............................................................79

9. MODELO ESTRUCTURAL..................................................................................859.1 DIAGRAMA DE CLASES..............................................................................85

4

9.2 MODELO DE PERSISTENCIA......................................................................879.2.1 Estructuras de árbol...............................................................................899.2.2 Patrón de fuente de datos......................................................................909.2.3 Estrategia de mapeo..............................................................................90

9.2.3.1 Mapeador de datos.........................................................................909.2.3.2 Clase a tabla en jerarquías de herencia.........................................919.2.3.3 Clase concreta a tabla en jerarquías de herencia..........................939.2.3.4. Mapa de identidad.........................................................................95

9.2.4 Aspectos tecnológicos de mapeo...........................................................959.3 PLANTAE Y LA EXPORTACIÓN DE LOS DATOS.......................................969.4 ESTRATEGIA DE MIGRACIÓN DE DATOS A SPECIFY..............................97

9.4.1 Datos sensibles detectados en el proceso de migración.......................999.4.1.1 Árbol de la Taxonomía..................................................................1009.4.1.2 Árbol de Geografía........................................................................1019.4.1.3 Agente...........................................................................................1039.4.1.4 Otros datos....................................................................................104

10. MODELO DE INTERFAZ GRÁFICA DE USUARIO........................................10510.1 MAPA DE NAVEGACIÓN..........................................................................10510.2 GENERALIDADES DE LA INTERFÁZ GRÁFICA.....................................107

10.2.1 Página de control de acceso..............................................................10710.2.2 Página principal..................................................................................10710.2.3 Menú de opciones de usuario............................................................10910.2.4 Cambiar contraseña...........................................................................10910.2.5 Cerrar sesión......................................................................................11010.2.6 Mensajes............................................................................................11010.3 OPCIONES DE MENÚ..........................................................................11110.4 ASPECTOS DE IMPLEMENTACIÓN....................................................114

11. MODELO DINÁMICO.......................................................................................11511.1 DIAGRAMAS DE SECUENCIA.................................................................11511.2 MÁQUINAS DE ESTADO..........................................................................119

11.2.1 Máquina de estados del espécimen...................................................11911.2.2 Máquina de estados de la solicitud de inclusión ..............................119

12. TECNOLOGÍAS USADAS EN LA CONSTRUCCIÓN.....................................12113. PRUEBAS........................................................................................................123

13.1 Pruebas unitarias y de integración............................................................12314. CONCLUSIONES............................................................................................12515. TRABAJO FUTURO........................................................................................12616. GLOSARIO......................................................................................................12717. GUÍA DE CONTENIDO DE ANEXOS..............................................................128

17.1 DOCUMENTOS.........................................................................................12817.2 PROTOTIPO..............................................................................................12817.3 MODELAMIENTO......................................................................................12917.4 DICCIONARIOS........................................................................................13017.5 MANUALES...............................................................................................130

BIBLIOGRAFÍA......................................................................................................131

5

LISTA DE FIGURAS

Figura 1. Espécimen del herbario del ICN...............................................................18Figura 2. Diagrama de flujo del proceso de inclusión de un espécimen recolectado en la base de datos del ICN. ..................................................................................19Figura 3. Proceso actual de recolección y manejo de información de especímenes de flora del ICN en notación BPMN.........................................................................20Figura 4. Proceso propuesto de recolección y manejo de información de especímenes de flora del ICN en notación BPMN..................................................21Figura 5. Arquitectura de ZK....................................................................................23Figura 6. Arquitectura de ZK con MVC....................................................................24Figura 7. Arquitectura ZK con MVVM......................................................................25Figura 8. Modelo RUP..............................................................................................29Figura 9. Flujos de trabajo en UP............................................................................31Figura 10. Organización del modelamiento del prototipo. ......................................35Figura 11. Diagrama general de casos de uso........................................................43Figura 12. Diagrama de casos de uso del módulo de control de acceso. .............44Figura 13. Diagrama de casos de uso del módulo de selección y cargue de archivos. ..................................................................................................................50Figura 14. Diagrama de casos de uso del módulo de gestión de especímenes.. . .57Figura 15. Diagrama de casos de uso del módulo de selección y envío de especímenes............................................................................................................67Figura 16. Diagrama de casos de uso del módulo de consulta y aprobación de solicitudes de inclusión............................................................................................71Figura 17. Diagrama de casos de uso del módulo de gestión de usuarios............79Figura 18. Diagrama de clases................................................................................86Figura 19. Diagrama relacional................................................................................88Figura 20. Estructuras de árbol...............................................................................89Figura 21. Mapeador genérico.................................................................................90Figura 22. Clase a tabla en jerarquía de herencia – Diagrama de clases..............92Figura 23. Clase a tabla en jerarquía de herencia – Modelo relacional..................93Figura 24. Clase concreta a tabla en jerarquías de herencia – Diagrama de clases..................................................................................................................................94Figura 25. Clase concreta a tabla en jerarquías de herencia – Modelo relacional. 95Figura 26. Exportación de datos desde Plantae......................................................96Figura 27. Opción Datos a Specify..........................................................................99Figura 28. Sección árbol taxonomía de Specify....................................................100Figura 29. Sección árbol taxonomía a nivel de base de datos.............................101Figura 30. Sección árbol geografía de Specify......................................................102Figura 31. Sección árbol geografía a nivel de base de datos...............................102Figura 32. Mapa de navegación del prototipo.......................................................106Figura 33. Página de control de acceso................................................................107Figura 34. Página principal con todas las opciones de menú...............................108

6

Figura 35. Opciones del usuario............................................................................109Figura 36. Opción de cambio de contraseña.........................................................109Figura 37. Mensajes de confirmación....................................................................110Figura 38. Mensajes de resultado..........................................................................110Figura 39. Opción de menú Importar datos de especímenes................................111Figura 40. Opción de menú Gestión de especímenes...........................................111Figura 41. Opción de menú Envío de solicitudes de inclusión..............................112Figura 42. Opción de menú Solicitudes de inclusión.............................................112Figura 43. Opción de menú Administración de usuarios.......................................113Figura 44. DS007 Gestionar archivos de especímenes........................................116Figura 45. DS008 Listar histórico de archivos cargados.......................................117Figura 46. DS024 Consultar solicitudes de inclusión............................................118Figura 47. Máquina de estados del espécimen.....................................................119Figura 48. Máquina de estados de la solicitud de inclusión..................................120Figura 49. Arquitectura tecnológica del prototipo PlantaeToSpecify.....................121Figura 50. Diagrama de despliegue.......................................................................122Figura 51. Diagrama de clases de la implementación de JUnit............................123Figura 52. Resultados de las pruebas unitarias....................................................124Figura 53. Cargue de un archivo...........................................................................125Figura 54. Cargue de archivo exitoso....................................................................125Figura 55. Cargue de archivo incorrecto campo invalido......................................126Figura 56. Cargue de archivo vacío. Fuente.........................................................126Figura 57. Solicitud de inclusión de especímenes................................................127Figura 58. Solicitud de inclusión de especímenes enviada...................................127Figura 59. Agregar información.............................................................................128Figura 60. Confirmación de inclusión de especímen en Specify...........................128Figura 61. Espécimen desde Specify....................................................................129Figura 62. Contenido inicial del CD.......................................................................133Figura 63. Estructura del proyecto abierto desde Eclipse.....................................134

7

LISTA DE TABLAS

Tabla 1. Requerimientos funcionales.......................................................................39Tabla 2. Iniciar aplicación.........................................................................................45Tabla 3. Iniciar sesión..............................................................................................46Tabla 4. Validar existencia de usuario.....................................................................47Tabla 5. Habilitar menú según rol............................................................................48Tabla 6. Cerrar sesión..............................................................................................49Tabla 7. Gestionar archivos de especímenes..........................................................51Tabla 8. Listar histórico de archivos guardados......................................................52Tabla 9. Cargar archivo............................................................................................53Tabla 10. Guardar archivo........................................................................................54Tabla 11. Refrescar listado de histórico de archivos cargados...............................55Tabla 12. Cancelar cargue de archivos...................................................................56Tabla 13. Gestionar espécimen...............................................................................58Tabla 14. Listar especímenes..................................................................................59Tabla 15. Ver detalles espécimen............................................................................60Tabla 16. Editar espécimen......................................................................................61Tabla 17. Cancelar edición espécimen....................................................................62Tabla 18. Guardar edición espécimen.....................................................................63Tabla 19. Filtrar espécimen......................................................................................64Tabla 20. Eliminar espécimen..................................................................................65Tabla 21. Exportar etiqueta......................................................................................66Tabla 22. Seleccionar espécimen............................................................................68Tabla 23. Listar especímenes para envío................................................................69Tabla 24. Enviar especímenes para inclusión.........................................................70Tabla 25. Consultar solicitudes de inclusión............................................................72Tabla 26. Listar solicitudes de inclusión..................................................................73Tabla 27. Filtrar solicitudes de inclusión..................................................................74Tabla 28. Mostrar detalles de solicitud de inclusión................................................75Tabla 29. Mostrar información a migrar...................................................................76Tabla 30. Aprobar solicitud.......................................................................................77Tabla 31. Rechazar solicitud....................................................................................78Tabla 32. Listar usuarios..........................................................................................80Tabla 33. Crear usuario............................................................................................81Tabla 34. Consultar usuario.....................................................................................82Tabla 35. Modificar usuario......................................................................................83Tabla 36. Filtrar usuarios..........................................................................................84Tabla 37. Campos que son migrados......................................................................98Tabla 38. Datos sensibles en la migración..............................................................99

8

AGRADECIMIENTOS

A Dios y a nuestras familias, porque sin su apoyo todo este camino hubiera sido más difícil.

A nuestro director Henry Alberto Diosa y nuestra codirectora Lauren Raz, además del Grupo de Investigación Arquisoft de la Universidad Distrital y de los miembros del Programa de Informática de la Biodiversidad del Instituto de Ciencias Naturales de la Universidad Nacional, por su tiempo y colaboración.

9

INTRODUCCIÓN

Uno de los objetivos del Instituto de Ciencias Naturales de la Universidad Nacional (de ahora en adelante ICN) a la hora de recolectar un espécimen de flora es que su información pueda ser puesta a disposición de estudiantes, académicos e investigadores, con un tiempo de diferencia mínimo entre la recolección, almacenamiento en Specify1 y posterior publicación en la biblioteca virtual del ICN.

A través de la alianza del programa de Informática de la Biodiversidad del Instituto de Ciencias Naturales de la Universidad Nacional a cargo de la profesora Lauren Raz, http://www.biovirtual.unal.edu.co/ICN/ y el grupo de investigación Arquisoft de la Universidad Distrital, http://arquisoft.udistrital.edu.co se acordó desarrollar un aplicativo móvil que permitiera la recolección de datos de especímenes biológicos vegetales en campo a través de un dispositivo móvil, este aplicativo móvil es Plantae [1], automatizando el proceso de recolección de datos. Sin embargo, el alcance del aplicativo móvil no incluyó la migración de los datos almacenados en el dispositivo móvil a la base de datos del ICN.

Dado lo anterior y como complemento a Plantae, en este documento se recopila el análisis, diseño e implementación del prototipo de software que permite la edición, selección, solicitud de inclusión, generación de etiquetas, autorización y migración de los especímenes de flora recolectados en campo a través de Plantae a la base de datos del ICN. Mediante entrevistas a miembros del grupo ARQUISOFT que desarrollaron Plantae, el programa de Informática de la Biodiversidad y algunos miembros del ICN, se recopiló la información necesaria para elaborar un modelo funcional que pudiera satisfacer los requerimientos, además de definir una estrategia para migración de los datos. Una vez obtenido el modelo funcional se realizó la validación con los usuarios que estarán involucrados con el aplicativo, lo cual contribuyó al mejoramiento de éste.

Posteriormente se realizó el desarrollo del prototipo utilizando un lenguaje orientado a objetos, de la mano de los modelos funcional y estructural. Este prototipo está acompañado del modelo dinámico que incluye los diagramas de secuencia de cada caso de uso, demostrando el cumplimiento de lo diseñado con lo desarrollado.

1 Specify es una plataforma de base de datos para museos y herbarios. http://specifyx.specifysoftware.org/

10

1. FORMULACIÓN DEL PROBLEMA

El Instituto de Ciencias Naturales de la Universidad Nacional de Colombia alberga la mayor colección de especímenes biológicos colombianos que existe en el mundo, con un número cercano a 940.000. En la actualidad, el Instituto tiene sistematizados más de 560.000 especímenes, disponibles en las colecciones científicas en línea.

El proceso de sistematización de las colecciones biológicas del Instituto de Ciencias Naturales se inició en los años 1970 con el Herbario Nacional Colombiano. Desde entonces se ha venido construyendo una base de datos institucional, la cual se desarrolló en varias etapas, culminando con la decisión en 2005 de adoptar el software Specify para la administración y almacenamiento de los datos.

Por primera vez, en 2004, el Instituto puso a disposición sus colecciones biológicas a través de Internet. Actualmente este recurso en línea brinda acceso a la base de datos, y a más de 193.000 fotografías de los especímenes del Herbario Nacional Colombiano (el Herbario Virtual) [2].

Teniendo en cuenta que uno de los objetivos del ICN es el de poner a disposición de la comunidad en general la colección de especímenes biológicos, se evidenció la necesidad de desarrollar una serie de soluciones basadas en software que permitan ayudar a cumplirlo.

La primera de estas soluciones basadas en software fue Plantae el “Aplicativo de software para la recolección de muestras biológicas en campo para el Instituto de Ciencias Naturales de la Universidad Nacional”[1] que permite la recolección de datos de especímenes biológicos vegetales en campo a través de un dispositivo móvil, pero una vez los datos han sido recolectados estos deben continuar con el proceso que se describe a continuación:

Una vez los datos han sido capturados, el biólogo recolector deberá elaborar las etiquetas por cada espécimen recolectado de acuerdo a los datos mínimos requeridos por el ICN, luego imprime las etiquetas y las adjunta al espécimen para que pase por el proceso de montaje, durante este proceso se pone un sello con un código (código de colección) al espécimen para su identificación, después es revisado para su inclusión en la base de datos del instituto, donde surgen tres escenarios:

1. Sí dicho espécimen es aprobado y la familia de éste se encuentra digitalizada, se le asigna un código de barras y pasa por el proceso de fotografía, luego el espécimen es almacenado y a través de su fotografía se digitaliza la información de la etiqueta que acompaña al espécimen y se

11

almacena en la base de datos del ICN.2. Sí dicho espécimen es aprobado pero su familia no ha sido digitalizada,

entonces es almacenado en el herbario sin pasar por el proceso de fotografía y no se registra en la base de datos del ICN, a la espera de que la familia completa sea digitalizada.

3. Si dicho espécimen no es aprobado, es descartado para su inclusión tanto física como digital en la base de datos del ICN.

En el proceso anterior se presentan los siguientes inconvenientes:

• A pesar que la información será recolectada a través del dispositivo móvil, no está definido un proceso de migración de los datos entre el dispositivo móvil y la base de datos del ICN.

• La información de cada espécimen que sea aprobado para ingresar a la base de datos del ICN debe ser transcrita aunque previamente haya sido digitalizada. Cabe señalar que, en una salida de campo de diez días a un lugar con alta diversidad de especies, generalmente participan de cuatro a seis biólogos, a su vez cada biólogo recolecta de 150 a 200 plantas, que se dividen de tres a cinco especímenes y solamente uno de ellos será almacenado física y digitalmente en el ICN, los demás se envían a otros herbarios. Es decir, entre los 450 a 1000 especímenes recolectados por biólogo solo ingresan al herbario del ICN de 150 a 200 (E. Rudas, comunicación personal, Junio 3, 2014).

• La inclusión de un espécimen en la base de datos del ICN depende de si la familia de éste se encuentra digitalizada, retrasando la publicación de la información del espécimen. En la actualidad al ICN ingresan cerca de 11.000 especímenes al año y de estos solo 7.000 se fotografían y registran en su base de datos.

• La elaboración de las etiquetas, aunque el ICN posee un formato estándar para su elaboración, se realiza de manera autónoma por cada biólogo.

Por todo lo anterior, surge la pregunta: ¿Se puede, mediante una solución basada en software gestionar la información recolectada en campo a través de un dispositivo móvil para:

• Migrar a una base de datos intermedia la información que será recolectada a través del aplicativo del dispositivo móvil cuando sea requerido por el recolector?

• Permitir la depuración de los datos almacenados en la base de datos intermedia para su posterior migración a la base de datos del ICN?

• Posibilitar la verificación y validación de la información migrada a la base de datos intermedia?

• Permitir la generación de las etiquetas que son agregadas a cada

12

espécimen, asegurando que los datos sean consistentes con los registrados en el momento de su captura?

• Permitir la actualización de la información que requieren los especímenes para ser incluidos en la base de datos del ICN?

• Permitir la migración a la base de datos del ICN de los registros de los especímenes que cuenten con la información completa requerida por el mismo?

Es aquí donde se evidencia la posibilidad de desarrollar una segunda solución basada en software que ayude a cumplir con el objetivo del ICN, anteriormente expuesto.

13

2. OBJETIVOS

2.1 OBJETIVO GENERAL

Analizar, diseñar y construir una solución basada en software que permita la migración de los datos recolectados en campo a través del aplicativo móvil Plantae a la base de datos del ICN, además de la elaboración e impresión de etiquetas.

2.2 OBJETIVOS ESPECíFICOS

• Definir, diseñar e implementar el proceso de migración de los datos recolectados a través del aplicativo móvil Plantae a la base de datos intermedia.

• Definir, diseñar e implementar el proceso de migración entre la base de datos intermedia y la plataforma Specify que gestiona la información de los especímenes de flora del ICN.

• Desarrollar una funcionalidad que permita la depuración de los datos sobre la base de datos intermedia previo a su migración a la plataforma Specify del ICN.

• Generar e imprimir las etiquetas empleando el modelo establecido por el ICN para los especímenes de flora migrados a la base de datos intermedia, evitando así, el uso de otras herramientas para la generación de las mismas.

• Realizar pruebas unitarias y de integración para verificar el correcto funcionamiento del prototipo.

14

3. JUSTIFICACIÓN

3.1 JUSTIFICACIÓN ACADÉMICA

A través de este proyecto se aplican los conocimientos adquiridos a lo largo de la carrera de ingeniería de sistemas, ofreciendo la posibilidad de afianzar y expandir los conocimientos propios y de miembros del grupo de investigación.

Este proyecto continúa mejorando el proceso de apoyo interinstitucional con grupos de otras disciplinas que en este caso se da por la alianza entre el programa de Informática de la Biodiversidad del Instituto de Ciencias Naturales de la Universidad Nacional2 y el Grupo de Investigación Arquisoft de la Universidad Distrital3.

3.2 JUSTIFICACIÓN TÉCNICA

Esta aplicación se desarrollará usando el modelo de Proceso Unificado (UP por sus siglas en inglés), que hace uso intensivo del Lenguaje Unificado de Modelado (UML por sus siglas en inglés).

El núcleo de UML son sus unidades lingüísticas que permiten elaborar modelos para soluciones basadas en software (y por lo tanto una de las características principales de UP) “lo que en el contexto del proceso de desarrollo de software es una simplificación de la realidad que ayuda al equipo del proyecto a entender ciertos aspectos de la complejidad inherente del software, organizar el esfuerzo de desarrollo y facilitar la posibilidad de re-utilización y evolución del sistema” [3].

Adicionalmente a través de los planos de ingeniería que serían el resultado de usar este modelo de desarrollo de software, se podrá entender a nivel técnico el funcionamiento, características y comportamiento de este prototipo de software, además que contribuirá de manera significativa a la modularidad, escalabilidad y facilidad de comprensión del aplicativo para extender su alcance en caso que se desee.

3.3 JUSTIFICACIÓN PRÁCTICA

A partir de un recorrido guiado a través de las instalaciones del ICN para conocer el procedimiento que se lleva a cabo luego de la recolección de especímenes en campo, reuniones con la doctora Lauren, el curador general y el líder del programa

2 http://www.biovirtual.unal.edu.co/ICN/3 http://arquisoft.udistrital.edu.co/portal

15

de Informática de la Biodiversidad del Instituto de Ciencias Naturales de la Universidad Nacional, se evidenció que la aplicación Plantae permitirá registrar y almacenar los datos recolectados mejorando el proceso de captura de datos de especímenes en campo, pero no contempla una solución que permita la validación de la información capturada, generación de las etiquetas de cada espécimen y finalmente su inclusión en la base de datos del ICN.

Para dar solución a este nuevo problema surge la idea de desarrollar una solución basada en software que permitirá migrar los datos que fueron recolectados a través del aplicativo móvil Plantae, además de brindar al biólogo recolector la posibilidad de seleccionar, modificar y validar la información recolectada de cada espécimen, y enviar los registros que él desee que sean incluidos en la base de datos del ICN, evitando la manipulación reiterada de los mismos y disminuyendo los fallos al momento de digitalización de un espécimen.

Adicionalmente, se permitirá la elaboración de etiquetas por cada espécimen, en cuyo caso el recolector solo tendrá que seleccionar el espécimen y generar la etiqueta. Lo anterior contribuirá a que se maneje un estándar de etiquetado dentro del ICN.

16

4. MARCO CONTEXTUAL DEL PROBLEMA

4.1 ACERCA DEL PROCESO DE RECOLECCIÓN DE UN ESPÉCIMEN E INCLUSIÓN EN LA BASE DE DATOS DEL ICN.

A través de un recorrido guiado por las instalaciones del ICN se identificaron y se describen a continuación las etapas del proceso de recolección de un espécimen e inclusión en la base de datos del ICN:

4.1.1 Recolección

En la salida de campo que realizan los biólogos es recolectado el espécimen y puesto entre hojas de periódico para protegerlo en su viaje al ICN.

4.1.2 Secado

El espécimen es llevado al área de secado en donde es colocado en medio de unas láminas corrugadas de aluminio y es introducido dentro de un horno para ser secado a una temperatura establecida, durante un tiempo que varía según el espécimen.

4.1.3 Elaboración de etiquetas

El espécimen secado es entregado nuevamente al biólogo recolector, el cual se encargará de elaborar la etiqueta según los datos que previamente ha tomado del espécimen en la salida de campo. La imprime y la anexa al espécimen.

4.1.4 Montaje

El biólogo recolector lleva al espécimen junto con su etiqueta al área de montaje, donde el personal encargado realizará un montaje de acuerdo al espécimen para garantizar la preservación del mismo y facilitar su almacenamiento en las gavetas del ICN para su posterior consulta, es decir, sí el tamaño del espécimen recolectado es pequeño es colocado en una lámina de papel sin ácido de tamaño 30cm x 40cm, es sujetado a la lámina mediante unas cintas especiales y sus tallos son cosidos mediante hilos, si el espécimen cuenta con elementos adicionales (frutos, semillas, flores, entre otros) estos son puestos dentro de un sobre el cual será incluido en el montaje.

17

4.1.5 Sellado

Posteriormente le ponen un sello que posee un código único que identificará al espécimen dentro del herbario del ICN.

4.1.6 Cuarentena

El espécimen es llevado a un congelador a 20ºC bajo cero en donde permanecerá el tiempo establecido por el ICN, con el fin de eliminar las posibles plagas u organismos vivos que aún estén adheridos a este.

4.1.7 Toma de fotografía y código de barras

Si la familia a la que pertenece el espécimen ya ha sido digitalizada, entonces se le adherirá un código de barras y se le tomará una fotografía (Figura 1).

4.1.8 Incluir espécimen en el herbario

El espécimen es almacenado finalmente en las gavetas del herbario.

4.1.9 Digitalización

A través de la fotografía se obtienen los datos de los especímenes para ser registrados en la base de datos del ICN.

Figura 1. Espécimen del herbario del ICN. Fuente. [4].

18

El proceso descrito anteriormente se representa en el siguiente diagrama de flujo (Figura 2).

Figura 2. Diagrama de flujo del proceso de inclusión de un espécimen recolectado en la base de datos del ICN. Fuente. Este trabajo4

4 Este diagrama de flujo fue realizado a partir de la información recolectada en la visita al ICN por parte de los autores del proyecto.

Para mostrar con mayor claridad el flujo del proceso que se muestra en la Figura 2, la Figura 3 representa la interacción entre las aplicaciones que intervienen sin el prototipo propuesto y en la Figura 4 cómo sería la interacción con el mismo a través de la notación de BPMN.

Figura 3. Proceso actual de recolección y manejo de información de especímenes de flora del ICN en notación BPMN. Fuente. Este trabajo5

5 Este diagrama en la notación BPMN fue realizado por parte de los autores del proyecto.

Figura 4. Proceso propuesto de recolección y manejo de información de especímenes de flora del ICN en notación BPMN. Fuente. Este trabajo6

6 Este diagrama en la notación BPMN fue realizado por parte de los autores del proyecto.

5. MARCO REFERENCIAL TECNOLÓGICO

5.1 PATRÓN ARQUITECTÓNICO

Los patrones arquitectónicos se refieren a soluciones recurrentes de problemas a nivel de diseño arquitectónico y proveen un vocabulario común con el propósito de facilitar la comunicación. Se puede considerar a un patrón ser arquitectónico, si éste delinea los tipos de elementos y sus formas de interactuar y provee estrategias para solucionar un problema de abstracción de nivel arquitectónico, esto es, si el patrón cubre toda la estructura del sistema y no solo unos pocos subsistemas [5].

5.1.1 Patrón de arquitectura modelo vista controlador (MVC)

Model-View-Controller es un patrón de arquitectura de software que separa el modelo, la vista y el controlador de una aplicación basada en software, permitiendo facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento [6].

5.1.2 Patrón de arquitectura modelo-vista-vista modelo (MVVM)

MVVM es una abreviación de un patrón de arquitectura llamado Vista-Modelo-VistaModelo (Model-View-ViewModel) originario de Microsoft [7]. Es una especialización del modelo de presentación presentado por Martin Fowler [8], una variante del patrón MVC. Este patrón tiene 3 roles: Vista, Modelo y vistaModelo. La vista y el modelo juegan el mismo papel que en MVC.

La VistaModelo (ViewModel) actúa como un controlador especial para la vista el cual es responsable de exponer datos del modelo en la vista y proveer acciones y lógica requeridas por peticiones del usuario desde la vista. Esto se puede dar al pensar en que la interfaz gráfica quiere ejecutar operaciones complejas que deben estar implementadas en código que en la definición de la vista no tienen sentido, pero que son muy específicas para ser incluidas en el modelo [9].

El término vistaModelo significa "Modelo de la vista" y puede ser pensado como una abstracción de la vista, pero también provee una especialización del modelo que la vista puede usar para enlazar datos. En este último rol, la vistaModelo contiene transformadores de datos que convierten los tipos de modelo en tipos de vista y contiene comandos (Commands) que la vista puede usar para interactuar con el modelo [7].

22

5.2 ZK

Es un framework de interfaz gráfica basado en componentes que permite crear aplicaciones de internet enriquecidas (RIA por sus siglas en inglés) sin necesidad de usar explícitamente JavaScript o AJAX. Se pueden construir aplicaciones AJAX WEB altamente interactivas y sensibles solo con JAVA. ZK provee cientos de componentes diseñados para varios propósitos, algunos para la visualización de datos y algunos para la entrada del usuario, además permite crear componentes en un lenguaje con formato XML o ZUL7.

Todas las acciones de un usuario en una página pueden ser manejadas en un controlador. Desde el controlador se pueden manipular los componentes para responder a las acciones del usuario y los cambios que el usuario realice se reflejarán automáticamente en el navegador, además evita tener que preocuparse por los detalles de comunicación entre el navegador y el servidor.

En adición a la manipulación directa de componentes con el patrón MVC (Modelo-vista-controlador), ZK también soporta otro patrón de diseño, MVVM (Modelo-Vista-VistaModelo) que le da al controlador y a la vista más separación. Estos dos enfoques son mutuamente intercambiables, y se puede elegir una de ellas según la consideración arquitectónica [10].

5.2.1 Arquitectura de ZK

Figura 5. Arquitectura de ZK. Fuente. [11].

7 También conocido como XUL (XML User Interface Language) es un lenguaje basado en XML para construir interfaces de usuario.

23

La Figura 5 corresponde a la arquitectura simplificada de ZK. Cuando un navegador visita una página de una aplicación en ZK, ZK crea los componentes escritos en ZUL y los renderiza en el navegador. Se pueden manipular los componentes a través del controlador de la aplicación para implementar lógica de presentación de interfaz gráfica. Todos los cambios que se realizan en los componentes se verán reflejados automáticamente en el navegador del usuario y ZK maneja la comunicación subyacente.

La aplicación desarrollada en ZK puede acceder fácilmente a la tecnología Java EE e integrar muchos frameworks basados en JAVA de terceras partes. Además, ZK también soporta desarrollo centrado en el cliente que permite personalizar efectos visuales, o manejar acciones del usuario desde el lado cliente [11].

5.2.2 ZK con MVC

Para crear una aplicación de arquitectura MVC con ZK las tres capas (modelo-vista-controlador) se debe tener en cuenta lo siguientes términos:

• Vista: Es una capa creada con los widgets de ZK, ya sea a través de notación XML en un archivo .ZUL o a través de Java directamente.

• Controlador: Es una capa de clases en la que se listan los componentes de la vista para su manipulación, adicionalmente, en estas clases se crean los objetos del modelo que se comunicarán con la vista.

• Modelo: Son las clases que contienen la lógica de negocio del aplicativo.

Figura 6. Arquitectura de ZK con MVC. Fuente. [12].

24

5.2.3 ZK con MVVM

Como la vistaModelo no contiene referencias a los componentes de interfaz gráfica, necesita un mecanismo para sincronizar los datos entre la vista y la vistaModelo. Adicionalmente, este mecanismo tiene que aceptar las solicitudes de los usuarios de la capa visual y enlazar la solicitud con la acción y lógica aportadas por la capa de la vistaModelo. ZK provee un mecanismo llamado ZK Bind en el cual se soporta el patrón MVVM y el enlazador de datos (Binder) juega el papel principal para operar todo el mecanismo. El binder es el responsable de la comunicación entre la vista y la vistaModelo [13].

Figura 7. Arquitectura ZK con MVVM. Fuente. [13].

5.3 JPA

Java Persistence API es un especificación de persistencia basada en POJO (Plain Old Java Object). Ofrece una solución de mapeo objeto relacional para aplicaciones de Java Enterprise [14].

5.4 MySQL

MySQL es un sistema manejador de base de datos relacional (RDBMS por sus siglas en inglés) de código abierto. Es uno de los RDBMS más usados para desarrollar aplicaciones WEB de software.

MySQL ofrece un muy rápido, multi-hilo, multi usuario, y robusto servidor de base de datos SQL. Está diseñado para sistemas de producción con alta carga de misión crítica, así como para integrarse en software de despliegue masivo [15].

25

5.5 SOBRE LA MIGRACIÓN DE DATOS

“Una migración de base de datos es un proceso que se realiza para mover o trasladar los datos almacenados de un origen de datos a otro, para lo cual es indispensable que antes de empezar cualquier proceso de esta naturaleza, se tenga clara y documentada la razón por la cual se está migrando, además de elaborarse la planeación detallada de las actividades contempladas.” [16].

En la migración, se busca exportar datos a un nuevo sistema con mayor capacidad o más funciones adicionales. Estos cambios llevan consigo una adaptación de todos los datos de una base de datos a otra [17].

Aunque una migración puede tener todo un proceso con complejidad alta, si dicho proceso es bien definido, la migración permite hacer una manipulación clara de los datos, brindando a las partes involucradas la certeza de obtener información consistente después del proceso.

Una de las formas para migrar datos de una base de datos es mediante archivos con un formato específico, algunos de estos son:

5.5.1 CSV

CSV traducido como “valores separados por coma” por sus siglas en inglés (Comma-Separated Value) es un formato de archivo usado para intercambiar datos entre diferentes aplicaciones. A pesar de ser un formato muy común de intercambio de datos, no ha sido formalmente documentado, sin embargo se puede considerar un pseudo-estándar [18].

5.5.2 XML

Lenguaje de etiquetado extensible, por sus siglas en inglés (Extensible Markup Language) es un formato de texto flexible derivado del Estándar de Lenguaje de Marcado Generalizado (SGML), es utilizado para almacenar datos de forma legible mediante etiquetas que pueden ser personalizadas [19].

5.5.3 XLS

En este formato se cuenta con una colección de registros y estructuras que especifican el contenido de un libro de trabajo que puede incluir tablas de números no estructurados o semi-estructurados, texto o ambos: números y texto, fórmulas, conexiones a datos externos, gráficos e imágenes.

26

El contenido del libro de trabajo está típicamente organizado en un diseño basado en malla y frecuentemente incluye datos numéricos, datos estructurados y fórmulas [20].

5.5.4 HTML

HTML, que significa Lenguaje de Marcado para Hipertextos (HyperText Markup Language) es el elemento de construcción más básico de una página web y se usa para crear y representar visualmente una página web. Determina el contenido de la página web, pero no su funcionalidad [21].

5.6 SPECIFY

Specify es una plataforma de base de datos para museos y herbarios. Gestiona la información sobre especies y la curaduría de colecciones, seguimiento de las transacciones de especímenes, unión de imágenes con registros de especímenes y la publicación de datos de especímenes en internet. Está construido en JAVA y usa MySQL como motor de base de datos. Specify soporta datos de los especímenes, clasificaciones taxonómicas y estratigráficos, cuadernos de campo, secuencias de ADN, referencias de literatura y de otras fuentes primarias. También maneja datos asociados con acuerdos de repositorio, adhesiones, tratamientos de conservación, contenedores de objetos de colección, imágenes y documentos adjuntos [22].

5.7 GENERACIÓN DE ETIQUETAS

Para la generación de etiquetas se tuvieron en cuenta las siguientes librerías:

5.7.1 Apache POI

La misión del proyecto Apache POI es crear y mantener API's de Java para manipular varios formatos de archivo basados en el estándar de Open Office XML OOXML (por sus siglas en inglés Office Open XML standards) y el formato de Microsoft de documentos compuestos OLE2. En resumen, Apache POI permite leer y escribir archivos de MS Excel, MS Word y MS Power Point usando java [23].

5.7.2 Itext

Es una biblioteca de código abierto para crear y manipular archivos PDF en JAVA,

27

le da a los desarrolladores máxima flexibilidad para programar PDFs avanzados y construir cualquier escenario de generación de documentos personalizado [24].

5.8 PRUEBAS UNITARIAS

Las pruebas unitarias constituyen el primer paso para detectar errores en el código, pues se centran en la menor unidad de diseño del software: el módulo -por ejemplo, un método de una clase o una clase-. El objetivo principal de estas pruebas es detectar errores en cada uno de los módulos del software al ser ejecutados independientemente del resto de componentes [25].

5.8.1 Junit

Junit es un marco de trabajo simple para escribir pruebas repetibles. Soporta pruebas parametrizadas por anotaciones [26].

Junit fue iniciado por Kent Beck y Erich Gamma a finales de 1995 y es hoy en día un estándar para pruebas unitarias en aplicaciones Java [27].

28

6. MARCO METODOLÓGICO

6.1 MODELO DE PROCESO UNIFICADO (UP)

Un proceso de desarrollo de software es el conjunto de actividades necesarias para transformar requisitos de un usuario en un sistema basado en software. Sin embargo, el Proceso Unificado es más que un simple proceso; es un marco de trabajo genérico que puede especializarse para una gran variedad de sistemas software, para diferentes áreas de aplicación, tipos de organizaciones, niveles de aptitud y tamaños de proyecto.

El Proceso Unificado utiliza el Lenguaje Unificado de Modelado (Unified Modeling Language, UML) para elaborar los modelos de un sistema intensivo en software [28].

Figura 8. Modelo RUP. Fuente. [28].

6.1.1 El ciclo de vida del Proceso Unificado

El proceso unificado se repite a lo largo de una serie de ciclos que constituyen el ciclo de vida de un sistema en construcción. Cada ciclo concluye con una versión del producto y consta de cuatro fases:

29

6.1.1.1 Fase de InicioEn esta fase se desarrolla una descripción del producto final acompañado del modelado de casos de uso, además se realiza una definición preliminar de la arquitectura y una estimación de plazos y costos.

6.1.1.2 Fase de ElaboraciónEn esta fase se especifican en detalle la mayoría de los casos de uso del producto y se diseña la arquitectura del sistema, además se identifican sus riesgos. Es en esta fase en donde se elaboran los modelos de ingeniería como: modelo dinámico, estructural y modelo de persistencia a largo plazo.

6.1.1.3 Fase de ConstrucciónEn esta fase se crea el producto y la línea base de la arquitectura crece hasta convertirse en el sistema completo. La descripción evoluciona hasta convertirse en un producto preparado para ser entregado a la comunidad de usuarios, al final de esta fase el producto contiene todos los casos de uso que se plantearon en la fase de inicio.

6.1.1.4 Fase de TransiciónEn esta fase el producto es completamente entregado al cliente para ser probado y desplegado. Esta fase conlleva actividades como la fabricación, formación del cliente, el proporcionar una línea de ayuda y asistencia, y la corrección de los defectos que se encuentren tras la entrega.

6.1.2 Flujos de trabajo de proceso

El proceso unificado consiste en una serie de flujos de trabajo que van desde los requisitos hasta las pruebas. Los flujos de trabajo desarrollan modelos, desde el modelo de casos de uso hasta el modelo de prueba. Los flujos interactúan de la siguiente forma:

Los desarrolladores comienzan capturando los requisitos del cliente en la forma de casos de uso en el modelo de casos de uso. Después analizan y diseñan el sistema para cumplir los casos de uso, creando en primer lugar un modelo de análisis, después uno de diseño y después otro de implementación, el cual incluye todo el código fuente. Por último, los desarrolladores preparan un modelo de prueba que les permite verificar que el sistema proporciona la funcionalidad descrita en los casos de uso.

30

Figura 9. Flujos de trabajo en UP. Fuente. [28].

6.2 LENGUAJE DE MODELADO UNIFICADO (UML)

Es un lenguaje de modelado visual que se usa para especificar, visualizar, construir y documentar artefactos de un sistema de software. Captura decisiones y conocimiento sobre los sistemas que se deben construir. Se usa para entender, diseñar, hojear, configurar, mantener, y controlar la información sobre tales sistemas. Está pensado para usarse con todos los métodos de desarrollo, etapas del ciclo de vida, dominios de aplicación y medios.

UML capta la información sobre la estructura estática y el comportamiento dinámico de un sistema [29]. Permitiendo modelar sistemas de información, y su objetivo es lograr modelos que, además de describir con cierto grado de formalismo tales sistemas, puedan ser entendidos por los clientes o usuario de aquello que se modela.

6.2.1 Unidades lingüísticas de UML

6.2.1.1 Unidades lingüísticas para el modelo funcionalEste modelo especifica la funcionalidad del sistema de software, a través de los siguientes elementos:

31

• Diagrama de casos de uso: Un caso de uso es un fragmento de funcionalidad del sistema que proporciona al usuario un resultado importante. Los casos de uso representan los requisitos funcionales. Todos los casos de uso juntos constituyen el modelo de casos de uso, el cual describe la funcionalidad total del sistema. Además los casos de uso guían el proceso de desarrollo [28].

Adicionalmente en el modelo funcional se pueden elaborar los bocetos de las interfaces con las cuales el usuario final interactuará con el sistema de software.

6.2.1.2 Unidades lingüísticas para el modelo estructuralA través de este modelo se plantea la arquitectura que tendrá un aplicación de software. Teniendo en cuenta el modelo funcional.

Este modelo cuenta con tres tipos de diagramas:

• Diagramas de clases: Muestran los bloques de construcción de cualquier sistema orientado a objetos. Los diagramas de clases describen la vista estática del modelo o parte del modelo, describiendo que atributos y comportamientos tienen en lugar de detallar los métodos para realizar operaciones. Los diagramas de Clase son más útiles para ilustrar relaciones entre clases e interfaces [30].

• Diagramas de componentes: Ilustran las piezas del software, controladores embebidos, etc. que conformarán un sistema. Un diagrama de Componentes tiene un nivel más alto de abstracción que un diagrama de clase – usualmente un componente se implementa por una o más clases (u objetos) en tiempo de ejecución [31]. En este trabajo no se desarrollarán componentes de software sino que se trabajará en el marco de una aplicación orientada a objetos.

• Diagramas de instalación: Estos diagramas especifican una serie de entidades que se pueden utilizar para definir la arquitectura de ejecución de sistemas representados por artefactos de software asignados a nodos que están conectados por enlaces de comunicación, lo cual permite modelar sistemas de complejidad arbitraria. Los nodos pueden tener anidamientos y representan tanto hardware como plataformas de ejecución de software. Los artefactos representan elementos concretos en el mundo físico que son resultado de un proceso de desarrollo [32].

6.2.1.3 Unidades lingüísticas para el modelo dinámicoA través de este modelo se muestra el comportamiento que tendrá el sistema cuando un actor del sistema interactúa. La elaboración de los diagramas en los que se compone este modelo se hace en paralelo con el ejercicio de la

32

programación de funcionalidades.

• Diagramas de secuencia: Un diagrama de secuencia es una forma de diagrama de interacción, son usados para mostrar qué objetos se comunican con qué otros objetos y qué mensajes disparan esas comunicaciones. Los diagramas de secuencia no están pensados para mostrar lógicas de procedimientos complejos [33].

• Diagramas de actividades: Son usados para mostrar la secuencia de actividades. Los diagramas de actividades muestran el flujo de trabajo desde el punto de inicio hasta el punto final detallando muchas de las rutas de decisiones que existen en el progreso de eventos contenidos en la actividad [34].

• Diagramas de comunicación: Un diagrama de comunicación destaca la organización de los objetos que participan en una interacción, gráficamente es una colección de nodos (objetos) y arcos (enlaces) que reflejan las interacciones por medio de operaciones asociadas a un flujo de las mismas por medio de una flecha.

33

7. BREVE EXPLICACIÓN DE LA METODOLOGÍA DE DESARROLLO APLICADA Y ENTREGABLES

Mediante entrevistas al equipo de trabajo del aplicativo móvil Plantae “Aplicativo de software para la recolección de muestras biológicas en campo para el Instituto de Ciencias Naturales de la Universidad Nacional” y los miembros del ICN encargados de aprobar la inclusión de un espécimen recolectado a la base de datos final del instituto, se reunió información que permitió realizar el levantamiento de requerimientos y un análisis de los mismos para determinar cómo sería el procedimiento para el manejo de los datos de los especímenes una vez han sido recolectados en campo y se desee que estos formen parte de la colección del ICN.

A partir de la información recolectada, se aplicaron las fases que plantea el modelo de proceso unificado obteniendo como resultado los modelos de ingeniería pertinentes.

7.1 FASE DE INICIO

Como resultado de esta fase se obtuvo el modelo funcional del prototipo de software, donde se encuentra:

• La definición detallada del prototipo que se desarrolló.• Los requerimientos funcionales y de persistencia.• Los diagramas de casos de uso y la especificación de cada uno en formato

extendido.• El modelo de interfaz de usuario.

Este conjunto de ítems especifican una parte de la arquitectura del prototipo.

7.2 FASE DE ELABORACIÓN

Como resultado de esta fase se obtuvo el modelo estructural y dinámico del prototipo de software, donde se encuentran:

• El diagrama de clases.• El diagrama relacional.• Los diagramas de máquinas de estado.• Los diagramas de secuencia.

34

• El mapa de navegación.• Diagrama de despliegue.

Para mayor claridad del diagrama de clases y diagrama relacional, se elaboraron los diccionarios de clases y de datos en donde se explican en detalle las diferentes características de los componentes de dichos diagramas.

Los modelos de este prototipo ya mencionados fueron elaborados a través de la herramienta de modelado y diseño visual basada en UML “Enterprise Architect” [35]. Se encuentran en un único archivo dividido en carpetas como se muestra en la Figura 10:

Figura 10. Organización del modelamiento del prototipo. Fuente. Este trabajo.

El archivo se encuentra dentro del CD que se adjunta en la ruta 2.Modelamiento/ModeladoPlantaeToSpecify2016.eap, además de estar disponible en la página Web del grupo de investigación ARQUISOFT.

7.3 FASE DE CONSTRUCCIÓN

Como resultado de esta fase se obtuvo el prototipo de software construido en lenguaje de programación Java bajo el paradigma de programación orientada a objetos, este prototipo tiene conformidad frente a los modelos obtenidos en las fases anteriores.

El prototipo fue exportado a un archivo .WAR, dentro del cual se encuentra el código fuente del prototipo que está dividido en paquetes de la siguiente manera:

• src/modelo.logica: se encuentran los elementos de lógica de negocio, son archivos con extensión java.

• src/viewModel: son los elementos que actúan como controlador de la interfaz gráfica que también son archivos con extensión java.

• WebContent/paginas: son los elementos de la interfaz gráfica de usuario

35

que son archivos con la extensión zul.De igual manera se adjunta el script de creación de la base de datos y el script para insertar los datos iniciales necesarios para el funcionamiento del prototipo.

7.4 FASE DE TRANSICIÓN

En esta fase se realizaron las pruebas unitarias, de integración y las pruebas funcionales al prototipo, posteriormente se presentó y entregó el prototipo obtenido a partir de las fases anteriores, junto con la siguiente documentación: manual de usuario, guía de instalación, entre otros.

El prototipo se puede desplegar en un servidor de aplicaciones como Tomcat y se puede obtener en el CD adjunto en la ruta 3. Prototipo/PlantaeToSpecify.war o en la página del grupo Arquisoft.

36

8. MODELO FUNCIONAL

8.1 DEFINICIÓN DE POSIBLES ACTORES Y RESPONSABILIDADES

A partir de la formulación del problema se identifican y definen los siguientes roles:

• Recolector: Usuario que realizará el cargue del archivo CSV al prototipo. Podrá editar, generar la etiqueta o eliminar los especímenes que desee, además de enviarlos como solicitudes de inclusión y para que sean almacenados en la base de datos del ICN.

• Validador: Usuario que verificará la información de la solicitud de inclusión de los especímenes enviados por los recolectores y posteriormente autorizará o rechazará, según sea el caso.

• Administrador: Usuario que podrá crear, editar, asociarles roles y desactivar usuarios que podrán interactuar con el sistema.

De acuerdo a cada uno de los roles descritos anteriormente, el prototipo permitirá hacer uso de las siguientes funcionalidades:

8.1.1 Rol recolector

Una vez el biólogo haya capturado la información de los especímenes recolectados en campo a través del aplicativo móvil Plantae, conecta su dispositivo móvil a un computador e ingresa la URL en un navegador WEB podrá:

• Realizar el cargue del archivo generado por Plantae que contiene los datos de los especímenes recolectados en campo para iniciar la migración de los datos a la base de datos intermedia.

Si la migración de los datos es exitosa podrá:• Visualizar la información asociada a cada espécimen.• Editar la información de los especímenes.• Seleccionar los registros a ser incluidos en la base de datos del ICN y

enviarlos al validador para la verificación y validación de la información.• Generar e imprimir las etiquetas de cada espécimen.• Visualizar el estado en el que se encuentran los especímenes en la base de

datos del aplicativo.• Realizar búsquedas en el aplicativo de acuerdo a un criterio.

37

Si la migración de los datos no es exitosa:• Se notificará inmediatamente al usuario por medio de un mensaje en el

aplicativo el fallo en el cargue del archivo y el motivo de dicho fallo.

8.1.2 Rol validador

Un usuario con rol de validador podrá:

• Consultar los especímenes que le han sido enviados por los recolectores para su validación.

• Agregar la información como el código de colección y código de barras, si determina que sí debe ser incluido en la base de datos del ICN.

• Rechazar una solicitud de inclusión si determina que el espécimen no debe ser incluido en la base de datos del ICN.

• Migrar los datos de los especímenes que son aprobados a la base de datos del ICN.

• Ver un histórico de los especímenes que han sido migrados a través del aplicativo a la base de datos del ICN.

8.1.3 Rol administrador

Un usuario con rol de administrador podrá:

• Consultar los usuarios que pueden acceder al prototipo.• Crear nuevos usuarios.• Editar usuarios ya creados.• Visualizar los datos de un usuario.• Asignar roles a los usuarios.

38

8.2 DEFINICIÓN DE REQUERIMIENTOS

8.2.1 Requerimientos funcionales

A continuación se relacionan los requerimientos funcionales del prototipo:

Tabla 1. Requerimientos funcionalesCÓDIGO REQUERIMIENTO DESCRIPCIÓN

RFU001 Administrar usuarios. Permite el registro de usuarios que interaccionarán con el sistema, su activación y desactivación, además de la asignación de roles que determinan las acciones que puede realizar de acuerdo a este. Solo el administrador del prototipo puede acceder a esta funcionalidad.

RFU002 Controlar el acceso. Se controla el acceso; es decir, solo los usuarios registrados y autorizados pueden acceder a las funcionalidades del prototipo según su(s) rol(es).

RFU003 Seleccionar y cargar el archivo csv.

Permite al biólogo seleccionar el archivo con extensión .csv que generó el aplicativo del dispositivo móvil Plantae y que se encuentra almacenado en este para iniciar el cargue del archivo.

RFU004 Generar mensajes de notificación.

Genera mensajes de notificación cuando se haya o no podido realizar el cargue del archivo, adicionalmente cuando no haya sido exitosa la migración de la base de datos intermedia a la base de datos del ICN.

RFU005 Buscar y consultar los registros que fueron migrados.

El biólogo puede realizar la búsqueda y consulta de los registros migrados.

RFU006 Editar o eliminar los registros. Permite al biólogo editar o eliminar los registros que fueron migrados del archivo, sólo sí no ha sido

39

CÓDIGO REQUERIMIENTO DESCRIPCIÓN

enviada la solicitud de migración a la base de datos del ICN.

RFU007 Seleccionar y enviar los especímenes que el recolector requiere que sean almacenados en la base de datos del ICN.

Los registros seleccionados se almacenan con un estado definido, a la espera de la validación y confrontación de la información con el ejemplar físico.

RFU008 Generar las etiquetas con una plantilla establecida por el ICN.

Permite generar e imprimir etiquetas de los especímenes cuya información haya sido obtenida mediante la aplicación móvil Plantae y esté cargada en el aplicativo.

RFU009 Editar los especímenes enviados por el recolector al usuario validador.

Permite al rol validador validar o agregar el código de barras y código de colección a los registros antes de ser migrados a la base de datos del ICN.

RFU010 Migrar los especímenes de la base de datos intermedia a la base de datos del ICN.

Permite al validador migrar a la base de datos del ICN, los especímenes que cumplen con los requisitos establecidos por el ICN y se encuentren almacenados en la base de datos intermedia.

RFU011 Consultar el estado de los especímenes.

Permite consultar el estado del espécimen durante todo el proceso de migración a la base de datos del ICN.

RFU012 Visualizar el histórico de los registros que fueron migrados a la base de datos del ICN.

Permite visualizar los registros que fueron migrados desde la base de datos intermedia a la base de datos del ICN.

RFU013 Visualizar el histórico de los archivos que han sido cargados en el prototipo.

Permite ver el histórico de los archivos que han sido cargados en el prototipo. Indicando la cantidad de registros y la fecha del cargue del archivo.

40

8.3 REQUERIMIENTOS ESPECÍFICOS DE INTERFACES

8.3.1 Interfaces de usuario

El prototipo de software podrá desplegar su interfaz gráfica a través de un navegador de internet: Google Chrome (versión 32 o superior) o Mozilla Firefox (versión 37 o superior). Además la interfaz del usuario debe ser fácil de usar para todos los roles.

8.3.2 Interfaces de software

El prototipo de software que se pretende desarrollar permitirá la migración de los especímenes seleccionados, verificados y validados de la base de datos intermedia a la base de datos oficial del ICN.

8.4 PROTOCOLOS DE COMUNICACIÓN

El prototipo, al ser de entorno WEB, usará el protocolo de transferencia de hipertexto (HTTP) como protocolo de comunicación ya que su esquema petición-respuesta entre un cliente y un servidor permite obtener la funcionalidad requerida por el prototipo.

8.5 REQUERIMIENTOS DE PERSISTENCIA

El prototipo debe permitir el almacenamiento de:

✔ Las credenciales de acceso de los usuarios que podrán acceder a las funcionalidades del mismo.

✔ Los datos que fueron exportados del dispositivo móvil y migrados al aplicativo.

✔ Los cambios que se realicen a los registros en los distintos pasos del proceso de migración e inclusión de especímenes a la base de datos del ICN.

41

8.6 MODELO FUNCIONAL BASADO EN CASOS DE USO

Luego del análisis de los requerimientos del prototipo y su alcance se realiza un modelo funcional basado en casos de uso (Figura 11) el cual describe la funcionalidad total del prototipo de software, está compuesto por 35 casos de uso agrupados en 6 módulos.

42

Figura 11. Diagrama general de casos de uso. Fuente. Este trabajo.

uc Casos de uso

Módulo de gestión de especímenes

Módulo de gestión de usuarios

CU001 Iniciar Aplicación

CU003 Validar existencia de usuario

CU015 Editar espécimen

CU019 Eliminar espécimen

CU014 Ver detalles

espécimen

CU008 Cargar archivo

CU021 Seleccionar espécimen

CU023 Enviar especímenes para

inclusión

CU020 Exportar etiqueta

CU018 Filtrar especímenes

CU005 Cerrar sesión

Módulo de consulta y aprobación de solicitudes de inclusión para aprobación

Módulo de selección y envío de especímenes

CU013 Listar especímenes

Módulo de selección y cargue de archivos

CU024 Consultar solicitudes de

inclusión

CU029 Aprobar solicitud

CU030 Rechazar solicitud

CU007 Listar histórico de archivos cargados

CU009 Guardar archivo

CU002 Iniciar sesión

CU022 Listar especímenes para

envío

CU027 Mostrar detalles de solicitud

de inclusión

Estos extend son excluyentes: si el registro se aprueba NO podrá ser rechazado, y si ya fue rechazado no podrán ser aprobado

CU025 Listar solicitudes de

inclusión

Módulo de control de acceso

CU010 Refrescar listado de histórico de archivos

cargados

Usuario

Validador Recolector

Administrador

CU031 Listar usuarios

CU033 Consultar usuario

CU032 Crear usuario

CU034 Modificar usuario

CU012 Gestionar especímenes

CU006 Gestionar archivos de especímenes

CU004 Habilitar menú según rol

CU011 Cancelar cargue de

archivo

CU016 Cancelar edición espécimen

CU017 Guardar edición

espécimen

Estos extend son excluyentes: si se selecciona la opción guardar no se podrá cancelar la edición, y si se selecciona la opción cancelar no se podrá guardar la edición

CU026 Filtrar solicitudes de

inclusión

CU035 Filtrar usuarios

CU028 Mostrar información a

migrar

«extend»

«extend»

«extend»

«extend»

«include»

«extend»

«extend»

«extend»

«include»

« include»

«extend»

«extend»

«extend»

«include»

«extend»

«extend»

«extend»

«extend»

«extend»

«extend»

«extend»

«include»

«extend»

«extend»

«include»

«extend»

«extend»

«include»

«extend»

A continuación se presenta en formato extendido cada uno de los 35 casos de uso, para facilitar la lectura se presentan de acuerdo al módulo al que pertenecen.

8.6.1 Módulo de control de acceso

Como su nombre lo indica este módulo es el encargado de controlar el acceso de los usuarios al prototipo: verificar las credenciales del usuario y su estado, habilitar las opciones del prototipo a las cuales el usuario tiene acceso y cerrar la sesión una vez el usuario desee finalizarla.

Figura 12. Diagrama de casos de uso del módulo de control de acceso. Fuente. Este trabajo.

44

uc Casos de uso

CU001 Iniciar Aplicación

CU003 Validar existencia de usuario

CU005 Cerrar sesión

CU002 Iniciar sesión

M ódu lo de contro l de acceso

Usuario

CU004 Habilitar menú según rol

«extend»

«include»

«include»

«extend»

Tabla 2. Iniciar aplicación

CASO DE USO

Código CU001 Nombre Iniciar aplicación

Actores Usuario

Tipo Primario X Secundario Opcional

Descripción El usuario ingresa la URL en el navegador WEB posteriormente el sistema le mostrará la ventana donde el usuario se autenticará.

Pre-condición Tener instalado en el computador un navegador WEB y tener conexión a Internet.

Post-condición Mostrar ventana de control de acceso si hay respuesta del servidor.

ESCENARIO

45

act CU001 Iniciar Aplicación

Usuario Sistema

In icio

Ingresar la URL de la aplicación en el

navegador Web y dar Enter

Establecer conexión con el serv idor

¿Conexiónexi tosa?

Mostrar ventana de inicio de sesión con sus

respectivas opciones

Fin

Mostrar mensaje de error de conexión

NO

SI

Tabla 3. Iniciar sesión

CASO DE USO

Código CU002 Nombre Iniciar sesión

Actores Usuario

Tipo Primario X Secundario Opcional

Descripción El usuario ingresa usuario y contraseña en la ventana de control de acceso y selecciona la opción aceptar.

Pre-condición Cargar el aplicativo a través del navegador WEB.

Post-condición Cargar la página principal donde se despliegan las opciones de menú de acuerdo al rol o los roles o mostrar un mensaje de “Usuario y/o contraseña no validos” si el usuario ingresó el usuario o la contraseña incorrecta.

ESCENARIO

46

act CU002 Iniciar sesión

Usuario Sistema

In icio

nom breUsuario contraseña

Ingresar credenciales de acceso

nom breUsuario contraseña

nom breUsuario

contraseña

nom breUsuario contraseña

Elige la opciónnom breUsuario

contraseña

nom breUsuario contraseña

Final

nom breUsuario

usuarioConAcceso

Validar existencia de usuario

nom breUsuario

usuarioConAcceso

Mostrar v entana de inicio de sesión

Mostrar mensaje "Usuario y/o

contraseña no válidos"

Limpiar campos

usuarioConAccesocontraseña

contraseñaCi fradacontraseñaBD

Cifrar contraseña de entrada

usuarioConAccesocontraseña

contraseñaCi fradacontraseñaBD

contraseñaBD contraseñaCifrada

Comparar contraseña de entrada cifrada con

contraseña de BD

contraseñaBD contraseñaCifrada

¿Contraseña esvál ida?

Verificar estado del usuario

¿estado== activo?

Mostrar mensaje "Usuario inactiv o"

usuarioConAcceso!= nul l

usuario

Habilitar menú según rol

usuario

[Aceptar]

[SI]

[NO]

[Cancelar]

[SI]

[NO]

[NO]

Tabla 4. Validar existencia de usuario

CASO DE USO

Código CU003 Nombre Validar existencia de usuario

Actores Sistema

Tipo Primario X Secundario Opcional

Descripción El sistema valida contra la base de datos si el usuario y contraseña ingresados se encuentran en la base de datos y retorna el usuario con acceso que corresponde al usuario ingresado y que se encuentra almacenado en la base de datos.

Pre-condición El usuario ingresa su usuario, contraseña y selecciona la opción aceptar.

Post-condición Desplegar opciones de menú según el rol o los roles.Mostrar mensaje si el usuario y contraseña son incorrectos.Mostrar mensaje si el usuario no se encuentra activo.

ESCENARIO

47

act CU003 Validar existencia de usuario

nom breUsuario:String

usuarioConAcceso

Validar existencia de usuario

nom breUsuario:String

usuarioConAcceso

Buscar nombreUsuario en

base de datos intermedia

nom breUsuario

usuarioConAcceso

«datasto re»Base de datos

intermedia

¿Existenom bre deusuario?

usuarioConAcceso

retornar usuarioConAcceso

null

usuarioConAcceso

El ob jeto usuario contiene e l nom breUsuario , contraseña , ro l , estado,en tre o tros.

usuarioConAcceso

retornar usuarioConAcceso

usuarioConAcceso

[NO][SI]

Usuario

Tabla 5. Habilitar menú según rol

CASO DE USO

Código CU004 Nombre Habilitar menú según rol

Actores Sistema

Tipo Primario X Secundario Opcional

Descripción El sistema verifica los roles del usuario y habilita las opciones de menú dependiendo de dichos roles.

Pre-condición El usuario ingreso unas credenciales válidas y dio clic en iniciar sesión

Post-condición Desplegar opciones de menú según el rol o los roles del usuario.

ESCENARIO

48

act CU004 Habilitar menú según rol

usuario :UsuarioConAcceso

Habilitar menú según rol

usuario :UsuarioConAcceso usuario

l istaRo les

Obtener lista de roles del usuariousuario

l istaRo les

¿hay m ásro les?

¿rol =adm inistrador?

Habilitar opción de menú administración de

usuarios

¿ro l =recolector?

Habilitar opciones de menú importar datos de

especímenes, gestión de especímenes y Envío de solicitudes de inclusión

¿ro l =val idador?

Habilitar opción de menú solicitudes de inclusión

Fin

[SI]

[NO]

[SI]

[SI]

[NO]

[SI]

[NO]

Tabla 6. Cerrar sesión

CASO DE USO

Código CU005 Nombre Cerrar sesión

Actores Usuario

Tipo Primario X Secundario Opcional

Descripción El usuario elige la opción de menú cerrar sesión. El sistema borra los datos de la sesión, retornando al usuario a la ventana de control de acceso.

Pre-condición El usuario debe haber iniciado sesión.

Post-condición Mostrar ventana de control de acceso.

ESCENARIO

49

act CU005 Cerrar Sesión

Usuario Sistema

In icio

Elige la opción cerrar sesión

Borrar datos de sesión

Mostrar ventana de inicio de sesión

Fin

8.6.2 Módulo de selección y cargue de archivos

Este módulo contiene los casos de uso correspondientes al cargue de especímenes en el aplicativo a través de un archivo separado por comas (CSV). A este módulo solo tienen acceso los usuarios con el rol “Recolector”.

Figura 13. Diagrama de casos de uso del módulo de selección y cargue de archivos. Fuente: Este trabajo.

50

uc Casos de uso

CU008 Cargar archivo

M ódulo de se lección y cargue de archivos

CU007 Listar histórico de archivos cargados

CU009 Guardar archivo

CU010 Refrescar listado de histórico de archivos

cargados

Recolector

CU006 Gestionar archivos de especímenes

CU011 Cancelar cargue de archivo

«extend»«include»

«include»

«extend»

«extend»

Tabla 7. Gestionar archivos de especímenes

CASO DE USO

Código CU006 Nombre Gestionar archivos de especímenes

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector elige la opción importar datos de especímenes, el sistema carga el formulario de importar datos de especímenes y lista el histórico de archivos cargados.

Pre-condición Tener una sesión activa y el rol del usuario sea recolector.

Post-condición Habilitar la opción de cargar archivo y listar el histórico de archivos cargados.

ESCENARIO

51

act CU006 Gestionar archivos de especímenes

SistemaRecolector

Inicio

Clic en la opción de menú importar especímenes

usuarioConAcceso

Desplegar formulario de importar especímenes

usuarioConAcceso

usuarioConAcceso

Listado de reg istros

Listar histórico de archivos cargados

usuarioConAcceso

Listado de reg istros

Listado de registros

Mostrar listado de archivos

Listado de registros

Fin

Tabla 8. Listar histórico de archivos guardados

CASO DE USO

Código CU007 Nombre Listar histórico de archivos guardados

Actores Sistema

Tipo Primario X Secundario Opcional

Descripción El sistema consulta en la base de datos todos los archivos que hayan sido subidos al prototipo por el usuario conectado.

Pre-condición Haber dado clic en la opción de menú importar datos de especímenes.

Post-condición Mostrar el histórico de archivos cargados por el usuario.

ESCENARIO

52

act CU007 Listar histórico de archivos cargados

usuarioConAcceso :UsuarioConAcceso

Listado deregistros

Listar histórico de archivos cargados

usuarioConAcceso :UsuarioConAcceso

Listado deregistros

usuarioConAcceso

Consultar registros de archivos cargados

usuarioConAcceso

Listado deregistros

Listar registros

Listado deregistros

«BD Interm edia»Archivo

Tabla 9. Cargar archivo

CASO DE USO

Código CU008 Nombre Cargar archivo

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector elige la opción cargar archivo y el sistema desplegará la ventana que permitirá la búsqueda y selección del archivo, una vez el usuario seleccione el archivo el sistema valida el tipo de archivo, si es válido el sistema habilita la opción guardar.

Pre-condición Tener la opción de menú importar datos de especímenes abierta.

Post-condición Habilitar la opción de guardar archivo o cancelar cargue archivo o generar mensaje de error y listar el histórico de archivos cargados.

ESCENARIO

53

act CU008 Cargar archivo

Recolector Sistema

In icio

Clic en cargar archivo Desplegar ventana de búsqueda y cargue de

archivos

archivo

Buscar y seleccionar archivo almacenado en el

dispositivo móvil

archivo

archivo

arch ivo

Seleccionar opción

archivo

arch ivo

Fin

¿validaciónco rrecta?

Selecciona aceptarMostrar mensaje

"Archivo incorrecto"

archivo

Validar tipo de archivo

archivo

Habilitar botón guardar y botón cancelar

Limpiar ruta del archivo seleccionado

[NO]

[SI]

[Cancelar]

[Aceptar]

Tabla 10. Guardar archivo

CASO DE USO

Código CU009 Nombre Guardar archivo

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector elige la opción guardar y el sistema almacena las características del archivo y procesa los registros (especímenes) que contiene, limpia y carga nuevamente el listado del histórico de archivos cargados.

Pre-condición Realizar la búsqueda, selección y cargue del archivo.

Post-condición Actualizar el listado del histórico de archivos cargados, procesar los registros (especímenes) que almacenaba el archivo cargado.

ESCENARIO

54

act CU009 Guardar archivo

Recolector Sistema

In icio

¿Hay m ásregistros?

Mostrar mensaje de "archivo procesado

exitosamente"

usuarioConAcceso

Elige la opción aceptar

usuarioConAcceso

Fina l

arch ivo

Guardar registro

archivo«BD Interm ed ia»

Especímenes

Mostrar mensaje de error de creación y deshacer

toda la transacción

archivo

Elige la opción de guardar archivo

archivo

l istado de reg istros

Actualizar listado de registros en ventana

l istado de reg istros

¿Creacióncorrecta?

usuarioConAcceso

l istado de reg istros

Refrescar listado de histórico de archivos

cargados

usuarioConAcceso

l istado de reg istros

NO

[S I]

[SI]

[NO]

Tabla 11. Refrescar listado de histórico de archivos cargados

CASO DE USO

Código CU010 Nombre Refrescar listado de histórico de archivos cargados

Actores Sistema

Tipo Primario X Secundario Opcional

Descripción El sistema refrescará el listado del histórico de los archivos cargados.

Pre-condición Almacenar un nuevo archivo.

Post-condición El sistema se mantiene con los datos consistentes después de la consulta a la base de datos intermedia.

ESCENARIO

55

act CU010 Refrescar listado de histórico de archivos cargados

usuarioConAcceso :UsuarioConAcceso

l istado deregistros

Refrescar listado de histórico de archivos cargados

usuarioConAcceso :UsuarioConAcceso

l istado deregistros

usuarioConAcceso

Consultar registros de archivos cargados

usuarioConAcceso

«BD Interm edia»Archivo

l i stado deregistros

Actualizar listado de registros

l i stado deregistros

Tabla 12. Cancelar cargue de archivos

CASO DE USO

Código CU011 Nombre Cancelar cargue de archivos

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El sistema cancela la carga de un archivo.

Pre-condición Tener seleccionado un archivo para ser cargado.

Post-condición El sistema deja el prototipo en el menú importar datos de especímenes abierta

ESCENARIO

56

act CU011 Cancelar cargue de archivo

SistemaRecolector

Inicio

Elige la opción de cancelar cargue de

archivo

Limpiar ruta de archivo

Deshabilitar botones de Guardar archivo y Cancelar archivo

Fin

8.6.3 Módulo de gestión de especímenes

Este módulo permite la visualización, edición, eliminación de especímenes y la generación de etiquetas de los mismos. A este módulo solo tienen acceso los usuarios con rol “Recolector”.

Figura 14. Diagrama de casos de uso del módulo de gestión de especímenes. Fuente: Este trabajo.

57

uc Casos de uso

M ódulo de gestión de especím enes

CU017 Editar espécimen

CU021 Eliminar espécimen

CU014 Ver detalles espécimen

CU022 Exportar etiqueta

CU020 Filtrar espécimen

CU013 Listar especímenes

Recolector

CU012 Gestionar especímenes

CU015 Crear opciones desplegadas

CU016 Eliminar opciones desplegadas

CU018 Cancelar edición espécimen

CU019 Guardar edición espécimen

Estos extend son excluyentes: si se se lecciona la opción guardar no se podrá cancela r la edición, y si se selecciona la opción cancela r no se podrá guardar la ed ición

«extend»

«extend»

«include»

«extend»

«extend»

«extend»«include»

«extend»

«extend»

«include»

Tabla 13. Gestionar espécimen

CASO DE USO

Código CU012 Nombre Gestionar espécimen

Actores Usuario

Tipo Primario X Secundario Opcional

Descripción El usuario elige la opción de menú gestión de especímenes, el sistema desplegará la ventana y listará los especímenes.

Pre-condición El usuario selecciona la opción de menú gestión de especímenes.

Post-condición Mostrar el listado de los especímenes.

ESCENARIO

58

act CU012 Gestionar especímenes

SistemaRecolector

In icio

Selecciona opción de gestión de especímenes

usuarioConAcceso

Cargar ventana de gestión de especímenes

usuarioConAcceso

usuarioConAcceso

lista de especim enes

Listar Especímenes

usuarioConAcceso

lista de especim enes

lista de especim enes

Mostrar listado de especímenes

l i sta de especim enes

Fin

Tabla 14. Listar especímenes

CASO DE USO

Código CU013 Nombre Listar especímenes

Actores Sistema

Tipo Primario X Secundario Opcional

Descripción El sistema listará los especímenes que pertenecen al usuario.

Pre-condición Seleccionar la opción de menú especímenes.

Post-condición Se listarán los especímenes que pertenecen al usuario.

ESCENARIO

59

act CU013 Listar especímenes

l i sta deespecím enes

usuarioConAcceso

Listar especímenes

l i sta deespecím enes

usuarioConAcceso

l ista deespecím enes

l ista deregistros

Cargar lista con registros

l i sta deespecím enes

l ista deregistros

«BD Interm edia»Especímenes

l ista de registros

Realizar búsqueda de especímenes

l ista de registros

Solo l istará los especím enes que pertenecen a l usuario.

Tabla 15. Ver detalles espécimen

CASO DE USO

Código CU014 Nombre Ver detalles espécimen

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector selecciona la opción ver detalles de uno de los especímenes listados por el sistema, el sistema despliega la información asociada al espécimen seleccionado.

Pre-condición Dar clic en la opción ver detalles de un espécimen.

Post-condición Mostrar detalles del espécimen, si el estado del espécimen es diferente de enviado y aprobado se habilitará la opción de editar espécimen.

ESCENARIO

60

act CU014 Ver detalles espécimen

Recolector Sistema

In icio

espécim en

Selecciona la opción ver detalles sobre uno de los

especímenes listado espécim en

Habilitar opción de editar

Fin

espécim en

espécim en

Verificar estado del espécimen

espécim en

espécim en

¿Estado != Enviado &&E stado != Aprobado?

espécim en

espécim en

Desplegar información del espécimen

espécim en

espécim en

especim en

especim en

CU015A Crear opciones desplegadas

especim en

especim en

[NO]

[S I]

Tabla 16. Editar espécimen

CASO DE USO

Código CU015 Nombre Editar espécimen

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector selecciona la opción editar, el sistema habilita los campos que se podrán editar y las opciones guardar y cancelar y deshabilita la opción editar.

Pre-condición Haber seleccionado la opción ver detalles de un espécimen

Post-condición Los campos editables quedan habilitados para edición.

ESCENARIO

61

act CU015 Editar espécimen

Recolector Sistema

Inicio

Elige la opción editarHabilitar campos editables

del registro

Fin

Habilita las opciones guardar y cancelar

Deshabilita opción editar

La información editable es la relacionada con:Evento de colecciónUbicaciónT axonom íaDeterm inaciónAtributos del espécimenPlantaHojaFlorFrutoInflorescenciaT al loRaíz

Tabla 17. Cancelar edición espécimen

CASO DE USO

Código CU016 Nombre Cancelar edición espécimen

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector selecciona la opción cancelar, el sistema deshace los cambios realizados por el usuario, deshabilita los campos editables, así mismo deshabilita las opciones de cancelar y guardar y habilita nuevamente la opción de editar.

Pre-condición Haber seleccionado la opción editar

Post-condición Deshacer los cambios y deshabilitar los campos editables.

ESCENARIO

62

act CU016 Cancelar edición espécimen

SistemaRecolector

In icio

Elige opción cancelar Deshacer cambios

Deshabilitar campos editables

Deshabilitar opciones guardar y cancelar

Habilitar opción editar

Fin

Tabla 18. Guardar edición espécimen

CASO DE USO

Código CU017 Nombre Guardar edición espécimen

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector selecciona la opción guardar, el sistema verifica si hay cambios en los formularios y procede a ejecutar la actualización del registro (espécimen), finalmente notifica al usuario si la actualización fue o no correcta.

Pre-condición Haber seleccionado la opción editar

Post-condición Actualizar el registro con los nuevos cambios.

ESCENARIO

63

act CU017 Guardar edición espécimen

SistemaRecolector

Inicio

Elige opción guardar Verificar cambios realizados

¿Hay cam bios enla in formación?

Actualizar registro

«Base de datos i ...Base de datos

intermedia

¿Actual izacióncorrecta?

Mostrar mensaje de actualización correcta

Mostrar mensaje de error en actualización

Elige opción ok

Deshabilitar campos editables

Recuperar valores originales

Habilitar opción editar

Deshabilitar opción cancelar y guardar

Fin

[NO]

[SI]

[NO]

[SI]

Tabla 19. Filtrar espécimen

CASO DE USO

Código CU018 Nombre Filtrar espécimen

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector ingresa un valor en los campos de filtro. El sistema mostrará los resultados de la búsqueda de acuerdo a los filtros ingresados.

Pre-condición El recolector selecciona la opción de menú Especímenes.

Post-condición Listar los especímenes que cumplan con los filtros ingresados por el recolector

ESCENARIO

64

act CU018 Filtrar especímenes

Recolector Sistema

In icio

valorFil tros

Ingresa un valor en los campos de filtro

valorFil tros valorFi l tros

Filtrar especímenes según valorFiltros

valorFi l tros

Fin

Actualizar listado en la ventana.

Se puede fi l trar por código de recolección, fecha de recolección y estado del espécimen

Tabla 20. Eliminar espécimen

CASO DE USO

Código CU019 Nombre Eliminar espécimen

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector selecciona los especímenes que desea eliminar y elige la opción eliminar, el sistema desplegará una ventana donde el recolector confirmará la acción de eliminación. Sí el recolector confirma la acción el sistema elimina el o los registros seleccionados si y solo si el estado del espécimen es diferente a enviado, aprobado o pendiente, en cuyo caso no podrán ser eliminados.

Pre-condición Seleccionar los especímenes a eliminar.

Post-condición Actualizar los listados de los especímenes en donde se refleja el cambio realizado.

ESCENARIO

65

act CU019 Eliminar espécimen

Recolector Sistema

In icio

Mostrar ventana de confirmación de

eliminación

«B D Inte rm edia »espécimen

Actualizar listado de especímenes

incorrectos++

Fin

Seleccionar opción

Elige la opción aceptar

¿B orrado exi to so?

l i staEspecim enes

li staE specim en es

tamaño = Número de especímenes seleccionados

l i staEspecim enes

li staE specim en es

li staE specim en es

li staE specim en es

i=0, correctos=0, incorrectos=0

l i staE specim en es

li staE specim en es

¿i <tam año?

li staE specim en es

Tomar registro i de la lista

l i staE specim en es

¿estado Espe cim en !=enviado &&estadoE specim en !=ap robado& &estadoE specim en!= pend ien te ?

i++

correctos++

Mostrar mensaje de resultado del borrado con

cantidad de borrados y cantidad de no borrados

Borrar registro de la base de datos

l i staEspecim enes

Selecciona los especímenes que quiere

eliminar

l i staEspecim enes

Elige la opción Eliminar

[S I]

[Acep tar]

[Cancela r]

[SI]NO

[S I]

[NO]

[NO]

Tabla 21. Exportar etiqueta

CASO DE USO

Código CU020 Nombre Exportar etiqueta

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector selecciona uno o varios especímenes y posteriormente elige la opción generar etiqueta, el sistema genera un archivo pdf con el total de etiquetas correspondiente y es enviado al navegador Web para que el archivo sea descargado

Pre-condición Seleccionar especímenes.

Post-condición Descargar etiqueta a través del navegador web.

ESCENARIO

66

act CU020 Exportar etiqueta

Recolector Sistema

In icio

l istado deespecím ene s

Elige la opción generar etiqueta l istado de

especím ene s

Fin

l i stado deespecím enes

l istado deespecím enes

Crear lista de etiquetas

l i stado deespecím enes

l istado deespecím enes

archivo pdfEnv iar archiv o pdf al

navegador web

archivo pdf

Selecciona los especímenes

espécim en

etiqueta

generar etiquetaespécim en

etiqueta

l i stado deespecím enes

l istado deespecím enes

tamanio = tamaño del listado de especímenes

l i stado deespecím enes

l istado deespecím enesl istado de

especím enes

l istado deespecím enes

i=0

l istado deespecím enes

l istado deespecím enes

i<tam anio?

l i stado de especím enes

esp écim e n

tomar espécimen i de la lista

l i stado de especím enes

esp écim e n

etiqueta

agregar etiqueta a la lista de etiquetas

etiqueta

i++

l i sta deetiquetasarchivo pdf

concatenar todas las etiquetas en un único

archiv o pdf l i sta deetiquetasarchivo pdf

Depe nd iendo del navega dor web del usuario el a rchivo se descargará d i rectam ente o se m ostrará al usuario un m ensaje preguntando le que acción desea real i zar sobre e l m ism o

La in form ación que se agrega en la etiqueta es toda la in form ación de l espé cim e n disponib le rela ciona da con :

Evento de colecciónUbicaciónT axon om íaDeterm inaciónAtribu tos d el espécim enPlantaHojaFlorFru toInflo rescenciaT a l loRaíz

[NO]

[SI]

8.6.4 Módulo de selección y envío de especímenes

En este módulo se le permite al recolector seleccionar los especímenes que desea sean incluidos en la base de datos del ICN. A este módulo solo tienen acceso los usuarios con el rol de “Recolector”.

Figura 15. Diagrama de casos de uso del módulo de selección y envío de especímenes. Fuente. Este trabajo.

67

uc Casos de uso

CU021 Seleccionar espécimen

CU023 Enviar especímenes para

inclusión

M ódulo de se lección y envío de especím enes

CU022 Listar especímenes para

envío

Recolector

«include»

«extend»

Tabla 22. Seleccionar espécimen

CASO DE USO

Código CU021 Nombre Seleccionar espécimen

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector selecciona la opción de menú solicitar inclusión de especímenes y selecciona los especímenes que serán incluidos en la base de datos del ICN, el sistema habilita la opción enviar solicitud.

Pre-condición Seleccionar especímenes para solicitar su inclusión

Post-condición Habilitar la opción de enviar solicitud.

ESCENARIO

68

act CU021 Seleccionar espécimen

Recolector Sistema

In icio

usuarioConAcceso

Elige la opción de menú solicitar inclusión de

especímenes usuarioConAcceso

usuarioConAcceso

l i stado deespecím enes

Listar especímenes para envío

usuarioConAcceso

l i stado deespecím enes

Cargar listado de especímenes

Fin

Marcar casilla de selección de especímenes para ser

enviados

Habilitar opción de envíar especímenes

Solo trae los registros que pertenecen a l reco lector y cuyos estados son "Cargado" o "Edi tado"

Tabla 23. Listar especímenes para envío

CASO DE USO

Código CU022 Nombre Listar especímenes para envío

Actores Sistema

Tipo Primario X Secundario Opcional

Descripción El sistema listará todos los especímenes que pueden ser enviados para su inclusión en la base de datos del ICN que le pertenezcan al usuario.

Pre-condición El recolector seleccione la opción de menú solicitar inclusión de especímenes.

Post-condición Cargar el listado de especímenes que pueden ser enviados para su inclusión en la base de datos del ICN.

ESCENARIO

69

act CU022 Listar especímenes para envío

usuarioConAcceso :UsuarioConAcceso

l istado deespecím enes

Listar especímenes para envío

usuarioConAcceso :UsuarioConAcceso

l istado deespecím enes

l i stado deespecím enes

Consultar especímenes

l i stado deespecím enes

«BD Interm edia»Especimen

l istado deespecím enes

l istado deespecím enes

Retornar listado de especímenes

l istado deespecím enes

l istado deespecím enes

Solo trae los registros que pertenecen a l reco lector y cuyos estados son "Cargado" o "Edi tado"

Tabla 24. Enviar especímenes para inclusión

CASO DE USO

Código CU023 Nombre Enviar especímenes para inclusión

Actores Recolector

Tipo Primario X Secundario Opcional

Descripción El recolector envía los especímenes que requiere sean incluidos a la base de datos del ICN.

Pre-condición El recolector selecciona uno o más de los especímenes listados y selecciona la opción enviar especímenes.

Post-condición El espécimen queda en estado enviado y a la espera de aprobación.

ESCENARIO

70

act CU023 Env iar especímenes para inclusión

Recolector Sistema

Inicio

Elige la opción de solicitar inclusión de especímenes

Mostrar ventana de confirmación de solicitud

de inclusión de especímenes

Seleccionar opción

Cerrar ventana de confirmación de solicitud

de inclusión de especímenes

espécimen

Actualizar estado del espécimen

espécimen

listado de especím enes

li stado de especím enes

tamaño = Calcular tamaño del listado de especímenes

li stado de especím enes

li stado de especím enes

espécimen

l istado de especímenes

Tomar registro i de la lista

espécimen

l istado de especímenes

l istado de especímenes

l istado de especímenes

i=0, correctos=0, incorrectos=0

l istado de especímenes

l istado de especímenes

i++

¿i<tamaño?

correctos++

Agregar espécimen a la lista de incorrectos

incorrectos++

Generar mensaje "Actualización finalizada,

se habilitaron <<correctos>>

especímenes para validación, no fue posible habilitar <<incorrectos>>

especímenes"

Fin

Elige la opción aceptar

Mostrar listado de incorrectos

«BD Intermedia»Espécimen,

solicitudes de inclusión

espécimen

espécimen

Generar solicitud de inclusión

espécimen

espécimen

¿Actual i zacióncorrecta?

[cancelar]

[Aceptar]

[SI]

[NO]

[NO]

[SI]

8.6.5 Módulo de consulta y aprobación de solicitudes de inclusión para aprobación

Módulo que le permite gestionar las solicitudes de inclusión, esto es: Consultarlas, aprobarlas o rechazarlas. A este módulo solo tienen acceso los usuarios con el rol de “Validador”.

Figura 16. Diagrama de casos de uso del módulo de consulta y aprobación de solicitudes de inclusión. Fuente: Este trabajo.

71

uc Casos de uso

M ódulo de consul ta y aprobación de sol ici tudes de inclusión para aprobación

CU024 Consultar solicitudes de inclusión

CU029 Aprobar solicitud

CU030 Rechazar solicitud

CU027 Mostrar detalles de solicitud de inclusión

Estos extend son excluyentes: si el reg istro se aprueba NO podrá ser rechazado, y si ya fue rechazado no podrán ser aprobado

CU025 Listar solicitudes de inclusión

Validador

CU026 Filtrar solicitudes de inclusión

CU028 Mostrar información a migrar

«extend»

«extend»

«include»

«extend»

«extend»

«extend»

Tabla 25. Consultar solicitudes de inclusión

CASO DE USO

Código CU024 Nombre Consultar solicitudes de inclusión

Actores Validador

Tipo Primario X Secundario Opcional

Descripción El validador selecciona la opción de menú solicitudes de inclusión y el sistema lista todas las solicitudes de inclusión de especímenes.

Pre-condición Elegir la opción de menú “Solicitudes de inclusión”.

Post-condición El sistema lista las solicitudes de inclusión que hayan con estado “Enviado”

ESCENARIO

72

act CU024 Consultar solicitudes de inclusión

Validador Sistema

In icio

estado

Elige la opción Solicitudes de inclusión

estado

l istado de sol ici tudes

Desplegar listado de especímenes para ser

aprobados

l istado de sol ici tudes

Fin

Habilitar opción "ver más", "Aprobar solicitud"

y "Rechazar solicitud" sobre cada espécimen

estado

l istado de sol ici tudes

Listar solicitudes de inclusión

estado

l istado de sol ici tudes

Selecciona una solicitud del listado

Tabla 26. Listar solicitudes de inclusión

CASO DE USO

Código CU025 Nombre Listar solicitudes de inclusión

Actores Sistema

Tipo Primario X Secundario Opcional

Descripción El sistema consulta en la base de datos intermedia las solicitudes de inclusión que hayan con estado Enviado

Pre-condición Seleccionar la opción Solicitudes de inclusión

Post-condición Listar las solicitudes de inclusión

ESCENARIO

73

act CU025 Listar solicitudes de inclusión

l i stado deso l ici tudes

estado:String

Listar solicitudes de inclusión

l i stado deso l ici tudes

estado:String

estado

Consultar registros listos para inclusión

estado

«BD Interm e...Solicitudes de

inclusión

l i stado desol ici tudes

Listar solicitudes de inclusión

l i stado desol ici tudes

Tabla 27. Filtrar solicitudes de inclusión

CASO DE USO

Código CU026 Nombre Filtrar solicitudes de inclusión

Actores Validador

Tipo Primario X Secundario Opcional

Descripción El validador ingresa un valor en los campos de filtro. El sistema mostrará los resultados de la búsqueda de acuerdo a los filtros ingresados.

Pre-condición El validador selecciona la opción de menú solicitudes de inclusión.

Post-condición Listar las solicitudes de inclusión que cumplan con los filtros ingresados por el validador

ESCENARIO

74

act CU026 Filtrar solicitudes de inclusión

Validador Sistema

Inicio

valorFi l tros

Ingresar un valor en los campos de filtro

valorFi l tros valorFi l tros

Filtrar solicitudes de inclusión según

valorFiltrosvalorFi l tros

Actualizar listado en la ventana

Fin

Se puede fi l trar por código derecolección, fecha de envío de la sol ici tud y fecha de recolección

Tabla 28. Mostrar detalles de solicitud de inclusión

CASO DE USO

Código CU027 Nombre Mostrar detalles de solicitud de inclusión

Actores Validador

Tipo Primario X Secundario Opcional

Descripción El validador elige la opción “Ver más” sobre cualquier solicitud de inclusión listada por el sistema. El sistema despliega una ventana con la información completa del espécimen asociado a la solicitud de inclusión.

Pre-condición Seleccionar la opción Ver más de un espécimen.

Post-condición Mostrar formulario del espécimen.

ESCENARIO

75

act CU027 Mostrar detalles de solicitud de inclusión

Validador Sistema

In icio

usuarioConAccesoElige la opción "Ver más" sobre cualquier

espécimen

usuarioConAcceso

usuarioConAcceso

especim en

Cargar detalles del espécimenusuarioConAcceso

especim en

«BD Interm edia»Espécimen

especim en

Desplegar información adicional del espécimen

especim en

Fin

Tabla 29. Mostrar información a migrar

CASO DE USO

Código CU028 Nombre Mostrar información a migrar

Actores Validador

Tipo Primario X Secundario Opcional

Descripción El validador elige la opción “Ver más” sobre cualquier solicitud de inclusión listada por el sistema.

Pre-condición Seleccionar la opción Ver más de un espécimen.

Post-condición Mostrar formulario del espécimen.

ESCENARIO

76

act CU028 Mostrar información a migrar

SistemaValidador

In icio

Elige la opción datos a specify

Cargar información del espécimen que será

migrada a specify

Desplegar información adicional del espécimen

Fin

Tabla 30. Aprobar solicitud

CASO DE USO

Código CU029 Nombre Aprobar solicitud

Actores Validador

Tipo Primario X Secundario Opcional

Descripción El validador selecciona la solicitud que va a aprobar y el sistema le despliega la ventana para agregar los códigos para inclusión, después de ingresarlos el validador da clic en aceptar y el espécimen es migrado a Specify, además el registro es actualizado.

Pre-condición Seleccionar la solicitud de inclusión del espécimen.

Post-condición El espécimen es ingresado en la base de datos oficial del ICN.

ESCENARIO

77

act CU029 Aprobar solicitud

Validador Sistema

In ici o

Elige la opción aprobar espécimen

Desplegar ventana para insertar código de barras

y código del herbario

codigoBarras,codigoColeccion

Ingresa los códigos solicitados

codigoBarras,codigoColeccion

Selecciona opciónDesplegar cuadro de

confirmación de aprobación

Insertar registros

«BD ICN»Base de datos oficial del ICN

Fin

Mostrar mensaje "Espécimen ingresado en

la base de datos correctamente"

Elige la opción aceptar

¿Actua li zacióncorrecta?

Mostrar mensaje de actualización incorrecta

Selecciona opción

Selecciona una de las solicitudes de inclusión

Habilita las opciones Aprobar solicitud y Rechazar solicitud

Cambiar estado de la solicitud a aprobada

Cambiar estado del espécimen a Aprobado

«BD Interm ed i ...Solicitud inclusión

«B D In te rm e ...Especimen

[Cance la r]

[NO ]

[A ceptar]

[Cance la r]

[A ceptar]

[S I]

Tabla 31. Rechazar solicitud

CASO DE USO

Código CU030 Nombre Rechazar solicitud

Actores Validador

Tipo Primario X Secundario Opcional

Descripción Una vez el validador selecciona una solicitud de inclusión y elige la opción “Rechazar solicitud”, el sistema desplegará una ventana donde le solicita al validador el motivo de rechazo de la solicitud. Después de rechazar la solicitud el sistema actualizará el estado de la solicitud de inclusión y del espécimen.

Pre-condición Seleccionar una solicitud de inclusión de espécimen.

Post-condición La solicitud de inclusión cambia a Rechazada y del espécimen también se cambiará su estado.

ESCENARIO

78

act CU030 Rechazar solicitud

Validador Sistema

In icio

Elige la opción rechazar solicitud

Desplegar v enta de motiv o de rechazo

Ingresar observaciones acerca del rechazo

Seleccionar opción

Actualizar registro en la base de datos

« BD In term edi ...Espécimen,

SolicitudInclusion

Mostrar mensaje de actualización correcta

Fin

Mostrar cuadro de confirmación de rechazo

Seleccionar opción

Elige la opción aceptar

¿Actu a l i za ció nco rrecta?

Mostrar mensaje de actualización incorrecta

Selecciona una solicitud de inclusión

Habilita las opciones aprobar solicitar y rechazar solicitud

Aceptar

[Can ce lar]

[Ace p ta r]

[Ca nce lar]

[S I]

[NO ]

8.6.6 Módulo de gestión de usuarios

Módulo que permite la administración de los usuarios del prototipo. A este módulo solo tienen acceso los usuarios con el rol de “Administrador”.

Figura 17. Diagrama de casos de uso del módulo de gestión de usuarios. Fuente: Este trabajo.

79

uc Casos de uso

M ódulo de gestión de usuarios

Administrador

CU031 Listar usuarios

CU033 Consultar usuario

CU032 Crear usuario

CU034 Modificar usuario

CU035 Filtrar usuarios

«extend»

«extend»

«extend»

«extend»

Tabla 32. Listar usuarios

CASO DE USO

Código CU031 Nombre Listar usuarios

Actores Administrador

Tipo Primario X Secundario Opcional

Descripción El administrador ingresa a la opción de menú administración de usuarios, el sistema consulta y le muestra los usuarios con acceso almacenados en el mismo.

Pre-condición Seleccionar opción administración de usuarios.

Post-condición Mostrar lista de usuarios con acceso almacenados.

ESCENARIO

80

act CU031 Listar usuarios

SistemaAdministrador

In icio

Elige la opción administración de

usuarios

l istaUsuarios

Consultar usuarios del sistema

l istaUsuarios

«BD Interm edia»usuarioConAcceso

l istaUsuarios

Mostrar listado de usuarios

l istaUsuarios

Fin

Tabla 33. Crear usuario

CASO DE USO

Código CU032 Nombre Crear usuario

Actores Administrador

Tipo Primario X Secundario Opcional

Descripción El administrador selecciona la opción agregar usuario, el sistema despliega la ventana con el formulario de creación de usuario, el administrador ingresa los datos del usuario.

Pre-condición Seleccionar la opción de agregar usuario.

Post-condición El nuevo usuario es creado.

ESCENARIO

81

act CU032 Crear usuario

SistemaAdministrador

In icio

Selecciona opción agregar usuario

Desplegar ventana con formulario de creación de

usuario

da tos de reg istro

Ingresar datos de usuario

da tos de reg istro

da tos de reg istro

da tos de reg istro

Verificar campos obligatorios

da tos de reg istro

da tos de reg istro

Los cam pos del form u la ri o son :- Iden ti ficación*- Nom bre*- Prim er ape l l ido *- Segundo apel l i do- Co rreo e lectrón i co- Insti tución- Usua ri o *- Se lecciona r estado* (A ctivo , i nacti vo )- Contraseña*- Se lecciona r ro les (reco lecto r, va l idado r y adm in i strador)_________________* Cam pos ob l i gato rios

Seleccionar opción

¿cam posob l iga to riocom ple tos?

Resaltar campos obligatorios

da tos de reg istro

Registrar usuario

da tos de reg istro«B D In te rm ed ia»

usuarioConAcceso

¿creacióncorrecta?

Mostrar mensaje de creación incorrecta

Cerrar ventana con formulario de creación de

usuario

Fin

Mostrar mensaje de creación correcta

Seleccionar aceptar

Seleccionar aceptar

[Acep ta r]

[Cance la r]

[SI]

[S I][NO]

[NO ]

Tabla 34. Consultar usuario

CASO DE USO

Código CU033 Nombre Consultar usuario

Actores Administrador

Tipo Primario X Secundario Opcional

Descripción El administrador selecciona un usuario del sistema y selecciona la opción “visualizar”. El sistema despliega una ventana con la información del usuario.

Pre-condición Seleccionar un usuario del prototipo.

Post-condición Ventana desplegada con la información del usuario seleccionado.

ESCENARIO

82

act CU033 Consultar usuario

SistemaAdministrador

In icio

Selecciona el usuario Habilitar opción de consultar sobre el usuario

seleccionado

Selecciona opción consultar

Mostrar ventana con la información del usuario

Fin

Tabla 35. Modificar usuario

CASO DE USO

Código CU034 Nombre Modificar usuario

Actores Administrador

Tipo Primario X Secundario Opcional

Descripción El administrador selecciona un usuario del sistema y selecciona la opción “Editar”. El sistema despliega una ventana con la información del usuario permitiendo que la misma sea editada.

Pre-condición Seleccionar un usuario del prototipo.

Post-condición Ventana desplegada con la información del usuario seleccionado.

ESCENARIO

83

act CU034 Modificar usuario

SistemaAdministrador

In icio

Selecciona el usuarioHabilitar opción de editar

sobre el usuario seleccionado

Seleccionar opción editar

Mostrar ventana con la información del usuario y

con los campos habilitados para edición

da tos d el reg istro

Editar información del usuario

da tos d el reg istro

Cerrar ventana con la información del usuario

Seleccionar opción

dato s d el reg istro

Actualizar registro

dato s d el reg istro«BD In te rm ed ia»

usuarioConAcceso

¿Actu al i zació ncorrecta?

Mostrar mensaje de actualización correcta

Seleccionar aceptar

Fin

Mostrar mensaje de actualización incorrecta

Seleccionar aceptar [Cancela r]

[Acep tar]

[S I]

[NO ]

Tabla 36. Filtrar usuarios

CASO DE USO

Código CU035 Nombre Filtrar usuarios

Actores Administrador

Tipo Primario X Secundario Opcional

Descripción El administrador ingresa un valor en los campos de filtro. El sistema mostrará los resultados de la búsqueda de acuerdo a los filtros ingresados.

Pre-condición El administrador selecciona la opción de menú gestión de usuarios.

Post-condición Listar los usuarios que cumplan con los filtros ingresados por el administrador.

ESCENARIO

84

act CU035 Filtrar usuarios

Administrador Sistema

In icio

valorFi l tros

Ingresar un valor en los campos de filtro

valorFi l tros valorFi l tros

Filtrar usuarios según valorFiltros

valorFi l tros

Actualizar listado en la ventana

Fin

9. MODELO ESTRUCTURAL

Se define el modelo estático del aplicativo haciendo uso del diagrama de clases, permitiendo evidenciar la realización de los casos de uso planteados anteriormente.

Adicionalmente se incluye el modelo de persistencia donde se evidencia la estructura que persistirá la información que se especificó en los requerimientos.

9.1 DIAGRAMA DE CLASES

Este diagrama fue elaborado a partir del modelo funcional basado en casos de uso. Además del diagrama de clases se anexa el diccionario de clases para detalle del modelo en el CD anexo en la ruta: 4. Diccionarios/4. Diccionario de clases.pdf.

85

Figura 18. Diagrama de clases. Fuente. Este trabajo

9.2 MODELO DE PERSISTENCIA

Este modelo está representado a través del modelo relacional, el cual organiza y representa los datos en forma de tablas y relaciones.

Adicionalmente se anexa el diccionario de datos para detalle del modelo en el CD anexo en la ruta: 4. Diccionarios/5. Diccionario de datos.pdf.

87

Figura 19. Diagrama relacional. Fuente. Este trabajo.

9.2.1 Estructuras recursivas

En los modelos relacionales usados por las aplicaciones Plantae y Specify, el manejo que se le da a la información de los sitios geográficos y la taxonomía de los especímenes es a través de estructuras tipo árbol las cuales permiten que un registro de la tabla pueda tener como padre a otro registro de la misma tabla.

Dado los beneficios que otorgan estas estructuras, en el modelo relacional de este prototipo se hace uso de ellas para el manejo de esa misma información, el funcionamiento es el siguiente:

Figura 20. Estructuras de árbol. Fuente: Este trabajo.

En la tabla INT_Sitio_Geografico se almacena la información relacionada a los países, departamentos y municipios, el nivel indica la jerarquía del registro dentro de la tabla, en donde 1 equivale a país, 2 a departamento y 3 a municipio. Un municipio en el campo sec_padre tiene un número que corresponde a la llave primaria de otro registro de la misma tabla, lo cual busca mostrar que dicho registro es el departamento al cual pertenece el municipio, igualmente un departamento tendrá en el campo sec_padre la relación con otro registro (país) al cual el departamento pertenece. Si este campo posee un valor nulo, significa que ese registro o bien es un país (lo cual se confirma al revisar que sea de nivel 1) o es un departamento o municipio que no tiene asociado su superior en la base de datos.

89

class MR01 - Modelo Relacional

INT_Sitio_Geografico

«co lum n»*PK SEC_Si tio_Geogra fico: INT EGER* S i tio_Geografico: VARCHAR(30)* Nom bre: VARCHAR(130)* Nive l : INT EGER FK SEC_Padre : INT EGER

«PK »+ INT _Si tio_Geogra fico_PK(INT EGER)

«unique»+ INT _Si tio_Geogra fico_U1(VARCHAR)+ INT _Si tio_Geogra fico_U2(VARCHAR)

«FK»+ INT _Si tio_Geogra fico_F1(INT EGER)

+INT _Si tio_G eogra fico_F1

0..*

(SE C_Padre =SE C_Si tio_Geografi co )

«FK»

+INT _S i tio_Geografico_PK

0..1

Por su parte, la tabla INT_Taxonomia tiene la misma estructura recursiva, en la tabla se almacena la información relacionada a la familia, el género y la especie. El nivel indica la jerarquía del registro de la tabla donde 1 equivale a familia, 2 a género y 3 a especie.

9.2.2 Patrón de fuente de datos

Como patrón de fuente de datos se utilizó Row Data Gateway, ya que para cada registro de cada tabla de la fuente de datos se creará una ejemplificación del objeto equivalente que puede ser accedido desde el prototipo ocultando los detalles de acceso a la fuente de datos [8].

9.2.3 Estrategia de mapeo

Teniendo en cuenta los requerimientos de persistencia en este prototipo se usan diferentes estrategias de mapeo, entre estas:

9.2.3.1 Mapeador de datosEs la capa de software encargada de la carga y almacenamiento entre el modelo de dominio (los objetos en memoria) y el modelo de persistencia (la base de datos), lo que permite que ambas capas sean independientes.

Para utilizar esta estrategia se creó la clase (mapeador genérico) GeneralSessionBean que contiene todas las operaciones que se pueden realizar entre el modelo de persistencia y el modelo de dominio, la estructura de dicha clase se puede apreciar en la Figura 21.

Figura 21. Mapeador genérico. Fuente: Este trabajo.

90

class DC02 Diagrama de clases con framework

GeneralSessionBean

- emfactory: Enti tyM anagerFactory- em: Enti tyM anager- etx: Enti tyT ransaction

- configureQuery(Class<T >, M ap, boolean, String) : <T > Query+ createEnti ties(List<T >) : T List<T >+ createEnti ty(T )(T ) : <T > T- createQuery(Class<T >, boolean, String) : <T > Query- createQuery(Class<T >, boolean, String) : <T > Query+ findAl lEnti t ies(Class<T >) : <T > List<T >+ findAl lEnti t ies(M ap, boolean, String, Class<T >) : <T > List<T >+ findEnti ty(boolean, String, Class<T >) : <T > T+ findEnti ty(Object, Class <T >) : <T > T+ findEnti ty(Map, boolean, String , Class<T >) : <T > T+ GeneralSessionBean()+ getReferenceEnti ty(int, Class <T >) : <T >+ getSysdate() : Date+ refreshEnti ty(T )(T ) : <T > T+ rem oveEnti ty(Object) : boolean- setParam etersFrom M ap(Query, M ap) : void+ updateEnti ties(List<T >)(List<T>) : <T > List<T >+ updateEnti ty(T ) : <T > T

9.2.3.2 Clase a tabla en jerarquías de herenciaRepresenta una herencia jerárquica de clases con una tabla por cada clase. Se usa esta estrategia de mapeo en las tablas INT_Especimen y INT_Planta lo cual permite que la información relacionada al espécimen este separada de la información relacionada a la planta.

Como se aprecia en la Figura 22 la clase Planta es una especialización de la clase Especimen, en donde Especimen contiene información que puede ser usada en cualquier tipo de espécimen (códigos de colección, de barras, determinación, evento de colección, entre otros) mientras que Planta además de contener la información de su padre (Especimen) también contiene la información propia de un espécimen de tipo vegetal (como información del fruto, flor, raíz, entre otros), el equivalente en el modelo de persistencia se puede apreciar en la Figura 23 donde la tabla INT_PLANTA contiene una clave externa (clave foránea) hacia la tabla INT_ESPECIMEN, permitiendo asociar a través de dicha clave la información general de un espécimen con la información concreta del mismo, dando la posibilidad de extender el modelo funcional y estructural del prototipo a otras ramas de las ciencias naturales.

91

Figura 22. Clase a tabla en jerarquía de herencia – Diagrama de clases. Fuente: Este trabajo.

92

class Modelo de clases

Planta

- secPlanta: int- altura: String- dap: String- abundancia: String- descripcionPlanta: String- descMuestrasAsociadas: String- meTraMueAsociadas: String- color: Color- flor: Flor- fruto: Fruto- tallo: Tallo- hoja: Hoja- inflorescencia: Inflorescencia- raiz: Raiz

«property get»+ getAbundancia() : String+ getAltura() : String+ getAtributoEspecimen() : AtributoEspecimen+ getCodigoBarras() : int+ getCodigoColeccion() : int+ getCodigoRecoleccion() : String+ getColectoresSecundarios() : List<UsuarioSinAcceso>+ getColor() : Color+ getDap() : String+ getDescMuestrasAsociadas() : String+ getDescripcion() : String+ getDescripcionPlanta() : String+ getDeterminacion() : Determinacion+ getEstadoEspecimen() : EstadoEspecimen+ getEventoColeccion() : EventoColeccion+ getFlor() : Flor+ getFruto() : Fruto+ getHoja() : Hoja+ getInflorescencia() : Inflorescencia+ getLocalidad() : Localidad+ getMeTraMueAsociadas() : String+ getRaiz() : Raiz+ getSecEspecimen() : int+ getSecPlanta() : int+ getTallo() : Tallo+ getTaxonomia() : Taxonomia+ getUsuarioConAcceso() : UsuarioConAcceso

«property set»+ setAbundancia(String) : void+ setAltura(String) : void+ setAtributoEspecimen(AtributoEspecimen) : void+ setCodigoBarras(int) : void+ setCodigoColeccion(int) : void+ setCodigoRecoleccion(String) : void+ setColectoresSecundarios(List<UsuarioSinAcceso>) : void+ setColor(Color) : void+ setDap(String) : void+ setDescMuestrasAsociadas(String) : void+ setDescripcion(String) : void+ setDescripcionPlanta(String) : void+ setDeterminacion(Determinacion) : void+ setEstadoEspecimen(EstadoEspecimen) : void+ setEventoColeccion(EventoColeccion) : void+ setFlor(Flor) : void+ setFruto(Fruto) : void+ setHoja(Hoja) : void+ setInflorescencia(Inflorescencia) : void+ setLocalidad(Localidad) : void+ setMeTraMueAsociadas(String) : void+ setRaiz(Raiz) : void+ setSecEspecimen(int) : void+ setSecPlanta(int) : void+ setTallo(Tallo) : void+ setTaxonomia(Taxonomia) : void+ setUsuarioConAcceso(UsuarioConAcceso) : void

Especimen

- atributoEspecimen: AtributoEspecimen- codigoBarras: int- codigoColeccion: int- codigoRecoleccion: String- colectorPrincipal: UsuarioConAcceso- descripcion: String- determinacion: Determinacion- estadoEspecimen: EstadoEspecimen- eventoColeccion: EventoColeccion- localidad: Localidad- secEspecimen: int- taxonomia: Taxonomia- archivo: Archivo- colectoresSecundarios: List<UsuarioSinAcceso>

«property get»+ getAtributoEspecimen() : AtributoEspecimen+ getCodigoBarras() : int+ getCodigoColeccion() : int+ getCodigoRecoleccion() : String+ getDescripcion() : String+ getDeterminacion() : Determinacion+ getEstadoEspecimen() : EstadoEspecimen+ getEventoColeccion() : EventoColeccion+ getLocalidad() : Localidad+ getSecEspecimen() : int+ getTaxonomia() : Taxonomia+ getcolectorPrincipal() : UsuarioConAcceso+ getArchivo() : Archivo+ getColectoresSecundarios() : List<UsuarioSinAcceso>

«property set»+ setAtributoEspecimen(AtributoEspecimen) : void+ setCodigoBarras(int) : void+ setCodigoColeccion(int) : void+ setCodigoRecoleccion(String) : void+ setDescripcion(String) : void+ setDeterminacion(Determinacion) : void+ setEstadoEspecimen(EstadoEspecimen) : void+ setEventoColeccion(EventoColeccion) : void+ setLocalidad(Localidad) : void+ setcolectorPrincipal(UsuarioConAcceso) : void+ setSecEspecimen(int) : void+ setTaxonomia(Taxonomia) : void+ setArchivo(Archivo) : void+ setColectoresSecundarios(List<UsuarioSinAcceso>) : void

Figura 23. Clase a tabla en jerarquía de herencia – Modelo relacional. Fuente: Este trabajo.

9.2.3.3 Clase concreta a tabla en jerarquías de herenciaRepresenta una herencia jerárquica de clases con una tabla por cada clase concreta en la jerarquía. A través de esta estrategia, las tablas INT_Usuario_Con_Acceso y INT_Usuario_Sin_Acceso (Figura 24) son mapeadas a las clases Usuario, UsuarioConAcceso y UsuarioSinAcceso (Figura 25). Esto permite que Usuario contenga los campos comunes para las clases concretas, y UsuarioConAcceso y UsuarioSinAcceso tengan sus campos específicos respectivamente, esto es útil en el mundo orientado a objetos ya que permite generar una clase a partir de la abstracción de los campos comunes de las tablas, lo cual no es posible en el mundo relacional al no poder manejar relaciones de herencia entre las tablas de la base de datos, esto implica que a pesar de que las tablas tienen unos campos comunes, dichos campos deben estar en cada tabla respectivamente.

93

class Modelo de datos

INT_Planta

«column»*PK SEC_Planta: INTEGER FK SEC_Color_Planta: INTEGER FK SEC_Flor: INTEGER FK SEC_Fruto: INTEGER FK SEC_Hoja: INTEGER FK SEC_Tallo: INTEGER FK SEC_Raiz: INTEGER FK SEC_Inflorescencia: INTEGER FK SEC_Especimen: INTEGER Altura: VARCHAR(130) DAP: VARCHAR(130) Abundancia: VARCHAR(130) Descripcion_Planta: TEXT Desc_Muestras_Asociadas: TEXT Me_Tra_Mue_Asociadas: TEXT

INT_Especimen

«column»*PK SEC_Especimen: INTEGER*FK SEC_Archivo: INTEGER* Cod_Recoleccion: VARCHAR(50) Codigo_Coleccion: VARCHAR(32) Codigo_Barras: VARCHAR(32) = NULL*FK SEC_Usuario_Recolector: INTEGER Descripcion: TEXT*FK SEC_Estado_Especimen: INTEGER FK SEC_Taxonomia: INTEGER FK SEC_Determinacion: INTEGER FK SEC_Localidad: INTEGER FK SEC_Atributo_Especimen: INTEGER FK SEC_Evento_Coleccion: INTEGER Tipo: VARCHAR(45) = Planta

+INT _Planta_F8

1

(SEC_Especim en = SEC_Especim en)

«FK»

+INT _Especim en_PK

1

Figura 24. Clase concreta a tabla en jerarquías de herencia – Diagrama de clases. Fuente: Este trabajo.

94

class DC01 Diagrama de clases

Usuario

- correoElectron ico: S tring- identi ficacion: in t- insti tucion: String- nom bre: String- p rim erApel l ido : String- secUsuario: in t- segundoApel l ido : S tring

«p roperty get»+ getCorreoElectron ico() : S tring+ getIdenti ficacion() : int+ getInsti tucion() : S tring+ getNom bre() : String+ getPrim erApel l ido() : S tring+ getSecUsuario() : int+ getSegundoApel l ido() : S tring

«p roperty set»+ setCorreoElectron ico(String) : void+ setIdenti ficacion(i nt) : vo id+ setInsti tucion(String) : vo id+ setNom bre(String) : void+ setPrim erApel l ido(String) : void+ setSecUsuario(int) : void+ setSegundoApel l ido (String) : void

UsuarioSinAcceso

- descripcion: String- tipoUsuario : String

«property get»+ getCorreoElectronico() : String+ getDescripcion() : S tri ng+ getIden ti fi cacion() : in t+ getInsti tucion() : String+ getNom bre () : S tring+ getPrim erApel l ido() : String+ getSecUsuario() : int+ getSegundoApel l ido() : String+ getT ipoUsuario() : String

«property set»+ se tCorreoElectronico(String) : vo id+ se tDescripcion(String) : void+ se tIdenti ficacion(in t) : vo id+ se tInsti tucion(String) : vo id+ se tNom bre(String) : void+ se tPrim erApel l ido(String) : vo id+ se tSecUsuario(in t) : vo id+ se tSegundoApel l ido(String) : vo id+ se tT i poUsuario(String) : vo id

UsuarioConAcceso

- contrasena: S tring- estado: String- roles: L ist<Ro l>- usuario: String

«property get»+ getCorreoElectronico() : String+ getIdenti ficacion () : in t+ getInsti tucion() : String+ getNom bre() : String+ getPrim erApel l ido() : String+ getSecUsuario() : in t+ getSegundoApel l ido() : String+ getRoles() : L ist<Rol>+ getEstado() : S tring

«property set»+ setCorreoElectron ico(String) : void+ setIdenti ficacion(int) : void+ setInsti tucion(String ) : void+ setNom bre(String) : vo id+ setPrim erApel l ido(String) : void+ setSecUsuario(int) : void+ setSegundoApel l ido(String ) : voi d+ setRoles(List<Rol>) : vo id+ setEstado(String) : void

Figura 25. Clase concreta a tabla en jerarquías de herencia – Modelo relacional. Fuente: Este trabajo.

9.2.3.4. Mapa de identidadLa librería EclipseLink usada en este proyecto maneja por defecto una memoria caché que es un repositorio en memoria que almacena objetos recientemente leídos o escritos basados en clases y llaves primarias. Esta memoria caché maneja el patrón de mapa de identidad el cual mantiene un registro de todos los objetos que han sido leídos de la base de datos en una sola transacción de negocio, esto significa que se asegura que cada objeto sea cargado una sola vez al mantener cada objeto cargado en un mapa, lo cual mejora el desempeño minimizando los accesos a la base de datos.

9.2.4 Aspectos tecnológicos de mapeo

Para el lenguaje de programación JAVA existe una solución que maneja datos relacionales en aplicaciones bajo este lenguaje, dicha solución es conocida como Java Persistence API (de ahora en adelante JPA), la cual permite administrar en conjunto la base de datos y los objetos en tiempo de ejecución.

Para el mapeo de la información entre la base de datos y el prototipo se usa JPA. Ya que utiliza un enfoque de mapeo objeto-relacional para cerrar la brecha entre un modelo orientado a objetos y una base de datos relacional [36].

Adicionalmente, la herramienta que se utilizó es eclipseLink debido a que provee una implementación de EJB3 y JPA y es de código abierto [37].

95

class Modelo de datos

INT_Usuario_Sin_Acceso

«column»*PK SEC_Usuario: INTEGER Tipo_Usuario: CHAR(1) Identificacion: VARCHAR(20) Nombre: VARCHAR(150) Primer_Apellido: VARCHAR(150) Segundo_Apellido: VARCHAR(150) Correo_Electronico: VARCHAR(250) Institucion: VARCHAR(250) Descripcion: TEXT

«PK»+ INT_Usuario_Sin_Acceso(INTEGER)

INT_Usuario_Con_Acceso

«column»*PK SEC_Usuario: INTEGER* Usuario: VARCHAR(30)* Contrasena: VARCHAR(130)* Estado: CHAR(1) Identificacion: VARCHAR(20) Nombre: VARCHAR(150) Primer_Apellido: VARCHAR(150) Segundo_Apellido: VARCHAR(150) Correo_Electronico: VARCHAR(250) Institucion: VARCHAR(250)

«PK»+ INT_Usuario_Con_Acceso_PK(INTEGER)

«unique»+ INT_Usuario_Con_Acceso_U1(VARCHAR)

9.3 PLANTAE Y LA EXPORTACIÓN DE LOS DATOS

Después de capturar la información de especímenes, Plantae permite exportar en un archivo de valores separados por comas (CSV) la información de todos los especímenes asociados a un viaje como se ve en la Figura 26. Este archivo es almacenado dentro de la memoria del dispositivo móvil donde se tiene instalado Plantae.

Figura 26. Exportación de datos desde Plantae. Fuente: Captura de pantalla de la exportación de datos en la aplicación Plantae.

El archivo CSV resultante es el insumo que usa este prototipo para cargar en la base de datos la información de los especímenes, en donde cada columna del archivo se almacena en un campo específico de la base de datos y no es concatenada con otros datos, esto significa que la segmentación de la información que se logra en Plantae es preservada en el prototipo.

96

9.4 ESTRATEGIA DE MIGRACIÓN DE DATOS A SPECIFY

Uno de los objetivos de este proyecto, es migrar la información que fue recolectada a través de Plantae y manipulada dentro del prototipo, a la base de datos del ICN. Para lograr esto, se diseñó e implementó una estrategia para su migración teniendo en cuenta lo siguiente:

1. La base de datos de este prototipo es más completa en la lista de atributos por entidad estructural que la base de datos de Specify, es decir, la información se encuentra más segmentada, hay campos (atributos) en la base de datos del prototipo que no tienen un campo relacionado en Specify.

2. Algunas tablas de Specify cuentan con campos que pueden ser definidos por el usuario, estos campos se identifican de la siguiente manera: text1, text2, number1, number2, YesNo1, YesNo2, por lo que carecen de significado semántico y además tienen su propio tipo de dato.

Se analizó la posibilidad de hacer uso de estos campos pero el personal del ICN no tiene conocimiento de las posibles repercusiones que traería en el funcionamiento normal de Specify la manipulación de estos campos, ya sea cambiando su nombre o tipo de dato, también se consideró la posibilidad de concatenar la información de la base de datos del prototipo y que fuese almacenada dentro de estos campos, pero se descartó dado que era demasiada información para un solo campo y el tipo de dato del mismo podría no permitirlo; además, en caso de realizarse, se perdería el trabajo realizado en Plantae con la segmentación de esta información.

3. Existen unos campos que cuentan con correspondencia en Specify pero que son considerados como datos sensibles para el proceso de migración, el tratamiento de estos es explicado en la sección 9.4.1

Con base en los tres apartados anteriormente descritos, se define la siguiente estrategia de migración:

Solo se migrarán los campos de los cuales existe una correspondencia entre la base de datos del prototipo y Specify, de esta manera se evita realizar modificaciones estructurales sobre la base de datos de Specify que podrían tener repercusiones en el uso cotidiano de esta herramienta.

En total son 20 campos del prototipo que son migrados a Specifiy. Cabe aclarar que tanto la información que sea migrada como la que no sea migrada permanecerá en la base de datos del prototipo.

El listado completo de los campos de la base de datos del prototipo con la relación

97

de las tablas de Specify se podrá ver como anexo dentro del CD en la ruta 1. Documentos/2 Relacion campos prototipo y Specify.pdf.

Tabla 37. Campos que son migradosBase de datos del prototipo Base de datos Specify

TABLA CAMPO CAMPO TABLA

INT_Especimen

codigo_recoleccion StationFieldNumber collectingevent

codigo_coleccion CatalogNumber collectionObject

codigo_barras AltCatalogNumber collectionObject

INT_Evento_Coleccion

fecha_ini_recoleccion startDate collectingevent

fecha_fin_recoleccion EndDate collectingevent

metodo Method collectingevent

estacion_ano Remarks collectingevent

INT_Localidad

nombre localityName locality

elevacion_minima MinElevation locality

elevacion_maxima MaxElevation locality

latitud Latitude1 locality

longitud Longitude1 locality

descripcion remarks locality

INT_Atributo_Especimen

usos text1 collectionobjectattribute

vegetacion text5 collectionobjectattribute

suelo_sustrato text5 collectionobjectattribute

especies_asociadas text5 collectionobjectattribute

habito text3 collectionobjectattribute

fenologia text4 collectionobjectattribute

INT_Planta descripcion Remarks collectionobjectattribute

Estos campos son datos sensibles en la migración que se podrán ver en detalle en la sección 9.4.1

98

Tabla 38. Datos sensibles en la migración

Base de datos del prototipo Base de datos Specify

TABLA CAMPO CAMPO TABLA

INT_Sitio_Geografico nombre (pais) name geography

INT_Sitio_Geografico nombre (departamento)

name geography

INT_Sitio_Geografico nombre (municipio) name geography

INT_Taxonomia nombre (familia) name taxon

INT_Taxonomia nombre (género) name taxon

INT_Taxonomia nombre (especie) name taxon

INT_Usuario_Con_Acceso nombre firstname agent

INT_Usuario_Con_Acceso primer_apellido lastname agent

El usuario encargado de aprobar la migración (usuario con rol validador) podrá ver la información que será migrada en la opción de menú Solicitudes de inclusión en el botón Datos a Specify que aparece en cada solicitud de inclusión, como se muestra en la Figura 27.

Figura 27. Opción Datos a Specify. Fuente: Este trabajo.

Adicionalmente, con el fin de identificar en Specify los registros que fueron migrados desde este prototipo, se hace uso del campo text15 de la tabla collectionobjectattribute en donde se almacena un mensaje informando que el espécimen fue insertado por el prototipo.

9.4.1 Datos sensibles detectados en el proceso de migración

En Specify existen tres estructuras (tablas) las cuales solo serán consultadas,

99

estas tablas son taxon, geography y agent que son las encargadas de almacenar la información taxonómica de un espécimen, el sitio geográfico en donde fue recolectado y el recolector respectivamente. Las razones para que estas estructuras solo sean consultadas son:

1. El ICN ha estado llevando a cabo un proceso de depuración de las estructuras debido a que estas tienen información errónea o repetida.

2. La información en taxon y geography solo es creada por expertos de esas ramas, para asegurar la fiabilidad de la misma.

A pesar de que los especímenes que se desean migrar deben tener una taxonomía, sitio geográfico y recolector asociados, esta información puede no ser correcta debido a que dicha información es ingresada por el usuario recolector, dando cabida a errores de sintaxis o de conocimiento en esas áreas, lo cual puede llevar a una inconsistencia de los datos asociados.

Por lo tanto el procedimiento que se aplicará para cada una de estas estructuras es el siguiente:

9.4.1.1 Árbol de la TaxonomíaEn la Figura 28, se puede apreciar una sección del árbol de taxonomía de Specify, en la Figura 29 se pueden ver a nivel de base de datos los tres campos principales de la sección que se muestra en la Figura 28, en donde se puede apreciar que un registro está asociado a otro registro de la misma tabla a través de la columna parentid.

Figura 28. Sección árbol taxonomía de Specify. Fuente: Captura de pantalla de una sección del árbol de taxonomía desde Specify.

100

Figura 29. Sección árbol taxonomía a nivel de base de datos. Fuente: Captura de pantalla de una sección de la consulta al árbol de taxonomía de Specify.

Teniendo en cuenta que ésta es una estructura jerárquica igual a las mencionadas en la sección 9.2.1, se busca la asociación de la siguiente manera:

1. Se realizará una búsqueda que permita obtener un registro (especie) cuyo padre (género) tenga a su vez otro padre (familia) y que los tres correspondan con lo registrado en el prototipo.

2. Si se encuentra un registro que cumpla con las características mencionadas en el ítem anterior, a este será asociado el registro que se está migrando.

3. Si no se encuentra un registro que cumpla con las características mencionadas en el ítem 1, se mostrará un mensaje al usuario encargado de la migración informándole que no existe un registro que cumpla con lo ingresado, por lo que la migración quedará en un estado pendiente mientras un trámite administrativo dentro del ICN permite tomar alguna acción con respecto a dicha información. Esto es, en el ICN se verifica la nueva taxonomía y de acuerdo a lo que informen los expertos del ICN:1. Se crea esa nueva rama taxonómica en Specify y se informa al

validador para que intente realizar nuevamente la migración del registro. 2. No se crea la nueva rama, lo cual se puede deber a errores de sintaxis o

en la taxonomía que el usuario validador no vio y por lo tanto debe cancelar la aprobación del registro, es decir, se debe rechazar la solicitud y especificar esto en el motivo de rechazo.

9.4.1.2 Árbol de GeografíaEn Specify, la geografía posee la misma estructura de la taxonomía, como se puede observar en la Figura 30 y la Figura 31.

101

Figura 30. Sección árbol geografía de Specify. Fuente: Captura de pantalla de una sección del árbol de geografía desde Specify.

Figura 31. Sección árbol geografía a nivel de base de datos. Fuente: Captura de pantalla de una sección de la consulta al árbol de geografía de Specify.

La asociación para este caso se realiza de la siguiente manera:

1. Se realizará una búsqueda que permita obtener un registro (municipio) cuyo padre (departamento) tenga a su vez otro padre (país) y que los tres correspondan con lo registrado en el prototipo.

2. Si se encuentra un registro que cumpla con las características mencionadas en el ítem anterior, a este será asociado el registro que se está migrando.

3. Si no se encuentra un registro que cumpla con las características mencionadas en el ítem 1, se mostrará un mensaje al usuario encargado de la migración informándole que no existe un registro que cumpla con lo ingresado, por lo que la migración quedará en un estado pendiente mientras un trámite administrativo dentro del ICN permite tomar alguna acción con respecto a dicha información. Esto es, en el ICN se verifica la

102

nueva geografía y de acuerdo a lo que informen los expertos del ICN:1. Se crea esa nueva rama geográfica en Specify y se informa al validador

para que intente realizar nuevamente la migración del registro. 2. No se crea la nueva rama, lo cual se puede deber a errores de sintaxis o

en la geografía que el usuario validador no vio y por lo tanto debe cancelar la aprobación del registro, es decir, se debe rechazar la solicitud y especificar esto en el motivo de rechazo.

9.4.1.3 AgenteDado que para la digitalización de los especímenes se toma la información consignada en la etiqueta que acompaña al espécimen físico, y cada recolector elabora su etiqueta, la manera de escribir sus nombres y apellidos tienen variaciones tales como ponerlos de forma completa, solo iniciales, una mezcla entre iniciales y apellidos completos, los nombres acompañados de puntos, entre otras.

Anteriormente, la información debía ser digitalizada como se encontraba en la etiqueta, por lo que se estaba creando un Agent (recolector) por cada variación en la manera de llamarse dentro de Specify. Es decir, pueden haber N recolectores que son una misma persona y estos a su vez tener asociados especímenes.

Aunque se dejó de hacer esta práctica al momento de digitalización, mientras el ICN plantea un proceso de depuración de estos datos, por ahora su estrategia es buscar el Agent que cuenta con sus nombres y apellidos completos, ignorando símbolos y asociarle a éste el espécimen que está siendo digitalizado.

Teniendo en cuenta lo anterior, la asociación del recolector al espécimen que se migra desde este prototipo se realiza de la siguiente manera:

1. Se busca en Specify un Agent (recolector) que corresponda con el nombre y apellido del usuario asociado al espécimen en el prototipo.

2. Si se encuentra más de un resultado, se relaciona con el Agent (recolector) que tenga la mayor cantidad de especímenes asociados. De esta manera, el ICN al momento de depurar los recolectores y asociar todos los especímenes a un mismo recolector, este último no solo será el definitivo, sino que será el que más registros posea, por consiguiente en el momento de la migración la información será asociada a este.

3. Si no se encuentra ningún resultado similar, se mostrará un mensaje al usuario encargado de la migración informándole que no existe ningún Agent en Specify relacionado al usuario del prototipo, por lo que la migración quedará en un estado Pendiente mientras un trámite administrativo dentro del ICN permite tomar alguna acción con respecto a dicha información. Esto es, en el ICN se verifica la información y de acuerdo a lo que informen los expertos del ICN:

103

1. Se crea el Agent en Specify y se informa al validador para que intente realizar nuevamente la migración del registro.

2. Se detecta que el Agent ya existe en Specify, así que se modifican los nombres y apellidos del Agent o del usuario del prototipo, dependiendo de cuál de los dos tiene información más completa y se informa al validador para que intente realizar nuevamente la migración del registro.

9.4.1.4 Otros datosAl ingresar un espécimen a Specify, se le asignan dos códigos de identificación: código de barras y código de colección, los cuales son únicos en Specify para una colección, por lo que antes de migrar un registro se verifica si alguno de los códigos ya está asignado a algún otro espécimen de la colección, de ser así se le informará al validador que alguno de los códigos ya está registrado en Specify, en caso contrario se procederá con la migración.

104

10. MODELO DE INTERFAZ GRÁFICA DE USUARIO

Se presenta el resultado final de la interfaz gráfica los cuales están basados en el modelo de interfaz gráfica que se diseñó a través de la herramienta Enterprise Architect y que puede ser visto en el CD en la ruta 2. Modelamiento/3. ModeladoPlantaeToSpecify2016.eap

10.1 MAPA DE NAVEGACIÓN

En la Figura 32, se representa la navegación que puede tener un usuario dentro del prototipo de acuerdo al rol que tenga asignado.

105

Figura 32. Mapa de navegación del prototipo. Fuente: Este trabajo.

10.2 GENERALIDADES DE LA INTERFAZ GRÁFICA

El prototipo está compuesto por cinco (5) opciones de menú, de las cuales tres: Importar datos especímenes, Gestión de especímenes y Envío de solicitudes de inclusión podrán ser vistas por un usuario con rol de Recolector, un usuario con rol de Validador podrá ver la opción de menú Solicitud de inclusión, por su parte un usuario con rol de Administrador podrá acceder a la opción de menú Administración de usuarios.

Adicionalmente dentro del prototipo existen elementos comunes de navegación para todos los usuarios.

10.2.1 Página de control de acceso

Al lado derecho de esta página se encuentra la sección de control de acceso que todo usuario debe diligenciar para acceder a las funcionalidades del prototipo.

Figura 33. Página de control de acceso. Fuente: Este trabajo.

10.2.2 Página principal

Esta página está distribuida de la siguiente manera: en la parte superior se encuentra el título y logo del prototipo, debajo de estos se encuentra un toolbar

107

que es visible en todo momento y cuenta con las opciones de menú del usuario (sección 10.2.3), en la parte izquierda de la pantalla los usuarios encontrarán las opciones de menú que tendrán disponibles de acuerdo a su rol, a la derecha de las opciones de menú se encuentra el área principal en la cual se desplegarán las páginas correspondientes a cada opción de menú. Finalmente, en la parte inferior se muestran los créditos del prototipo.

Figura 34. Página principal con todas las opciones de menú. Fuente: Este trabajo.

108

10.2.3 Menú de opciones de usuario

En la parte superior derecha de la pantalla, el usuario encontrará un menú con su nombre de usuario, al hacer clic sobre éste menú podrá ver las opciones de Cambiar contraseña y de Cerrar sesión como se muestra en la Figura 35.

Figura 35. Opciones del usuario. Fuente: Este trabajo.

10.2.4 Cambiar contraseña

Al hacer clic sobre esta opción el prototipo desplegará una ventana en la que el usuario podrá cambiar su contraseña de acceso a este (Figura 36).

Figura 36. Opción de cambio de contraseña. Fuente: Este trabajo.

109

10.2.5 Cerrar sesión

Al hacer clic sobre esta opción, el sistema borrará los datos de sesión del usuario y devolverá al usuario a la página de control de acceso (Figura 33) para iniciar sesión nuevamente.

10.2.6 Mensajes

El prototipo genera mensajes de acuerdo a algunas acciones realizadas por los usuarios.

• De confirmación: Para la eliminación de especímenes o el envío de solicitudes de inclusión aparecerá una ventana emergente solicitando la confirmación de la acción (Figura 37).

Figura 37. Mensajes de confirmación. Fuente: Este trabajo.

• De resultado: Al completar una acción, el sistema mostrará una ventana con el resultado de la acción ya sea exitosa o no exitosa (Figura 38).

Figura 38. Mensajes de resultado. Fuente: Este trabajo.

110

10.3 OPCIONES DE MENÚ

De acuerdo al rol o roles con los que cuenta un usuario el prototipo le mostrará las opciones de menú a las cuales podrá acceder.

10.3.1 Rol recolector

Cuenta con tres opciones de menú: Importar datos de especímenes, Gestión de especímenes y Envío de solicitudes de inclusión.

Figura 39. Opción de menú Importar datos de especímenes. Fuente. Este trabajo.

Figura 40. Opción de menú Gestión de especímenes. Fuente. Este trabajo.

111

Figura 41. Opción de menú Envío de solicitudes de inclusión. Fuente. Este trabajo.

10.3.2 Rol validador

Puede acceder a una opción de menú llamada Solicitudes de inclusión.

Figura 42. Opción de menú Solicitudes de inclusión. Fuente. Este trabajo.

112

10.3.3 Rol administrador

Puede acceder a una opción de menú llamada Administración de usuarios.

Figura 43. Opción de menú Administración de usuarios. Fuente. Este trabajo.

Cabe señalar que cada opción de menú se encuentra debidamente explicada en el manual de usuario que se encuentra adjunto en el CD en la ruta 5.Manuales/5.Manual de usuario PlantaeToSpecify.pdf.

113

10.4 ASPECTOS DE IMPLEMENTACIÓN

La interfaz gráfica de usuario (GUI) se desarrolló haciendo uso de los elementos de interfaz propios del framework ZK además de hacer uso de la arquitectura MVVM (ver sección 5.2.3) y los widgets más utilizados dentro del prototipo fueron:

ButtonTextboxLabelMenuItem

ToolbarToolbarbuttonListBoxBorderlayaot

GroupboxTabboxTabsTabpanels

Con el fin de que este prototipo quedara bien documentado y de esta manera poder seguir ampliando sus funcionalidades, se realizó un segundo diagrama de clases, en donde se muestran las clases del modelo estructural y las clases que ayudan a soportar la lógica del framework con los elementos de interfaz gráfica.

Por facilidad de lectura este diagrama de clases podrá ser visto en el CD en la ruta 2. Modelamiento/3. ModeladoPlantaeToSpecify2016.eap.

114

11. MODELO DINÁMICO

Este modelo muestra las interacciones entre los objetos del prototipo en tiempo de ejecución. Las interacciones que se documentaron incluyen la secuencia de peticiones de servicio realizadas por los objetos (diagramas de secuencia) así como los cambios de estado que activan las interacciones de dichos objetos (máquinas de estado) [38].

11.1 DIAGRAMAS DE SECUENCIA

Cada caso de uso además de contar con su representación en un diagrama de actividades el cual muestra cual sería la interacción entre el usuario, el sistema y la base de datos, cuenta con la representación en diagramas de secuencia que muestran como es el comportamiento real en un lenguaje de programación orientado a objetos.

A continuación se muestran algunos de estos diagramas, los diagramas en su totalidad podrán ser vistos en el CD en la ruta:2. Modelamiento/3. ModeladoPlantaeToSpecify2016.eap

115

Figura 44. DS007 Gestionar archivos de especímenes. Fuente. Este trabajo.

sd DS007 Gestionar archivos de especímenes

Argum ento de a l to o rden de operación actual iza rL istaArch ivosCargados

Reco lecto r

(from Acto res)

Im portarEspecim enViewM odel «Logger»

l og

«Li stbox»

l i staArch ivos

«L inkedL ist<Arch ivo>»

l istaArch ivosCargados

usuario:UsuarioConAcceso

«Se lecto rs»m enuIm porta rDa tosE specim enes

textboxRutaArch ivo

bu ttonSub i rArch ...

bu ttonGuardarArchi vo

buttonCance la rArch ivo

Boce tos de in terfaz g rá fica : Cargar a rch i vo

ref

Listar historico de archivos cargados«Usuari oConAcceso»usuario«Usuari oConAcceso»usuario

«Li st<Archi vo>»arch ivo«Li st<Archi vo>»arch ivo

«onCli c»

in i t()

i ni t(usuario )

in fo (" in i t")

usuario=se tUsuario(UsuarioConAcceso)

a fte rCom pose(Com ponent vi ew)

in fo ("a fte rCom pose")

wi reCom ponen ts(view,th is, fa lse )

ge tUsuario()

setL istaArchivosCargados(l ist<a rchivo>)

Figura 45. DS008 Listar histórico de archivos cargados. Fuente. Este trabajo.

sd DS008 Listar histórico de archivos cargados

Argum entos de al to orden de la operacion findAl lEnti ties

Argum entos de a l to de orden de la operación findAl lEnti ties

try

try

Fi leM anager

«HashM ap»

param s

«List<Archivo>»

arch ivos

«Genera lException»

Im portarEspecim enViewM odel Logger

gb:GeneralSessionBean

«UsuarioConAcceso» usuario«UsuarioConAcceso» usuario

«List<Archivo>» archivos«List<Archivo>» archivos

«Genera lException»«Genera lException»

alt catch

[Exception e ]

alt catch

[Exception e]

Región in terrum pible

Región interrum pib le

in fo("actua l izarL istaArch ivosCargados")

cargarArch ivosCargados(usuario) :L ist<Arch ivo>

in fo("cargarArchivosCargados")

put("usuario" , usuario)

findA l lEnti ties(Arch ivo.class, "Archivo.findAl lByUser", true , param s) :<T > L ist<T >

arch ivos= findAl lEnti ti es(Archivo.class, "Archivo.findAl lByUser", true , param s)

GeneralException("Error al consu l ta rlos arch ivos cargados" , e ,Fi leM anager.class,"cargarArch ivosCargados", usuario)

error("Error", e )

Figura 46. DS024 Consultar solicitudes de inclusión. Fuente. Este trabajo.

11.2 MÁQUINAS DE ESTADO

Durante el desarrollo del prototipo se identificaron objetos que en respuesta a mensajes y eventos cambian de estado.

11.2.1 Máquina de estados del espécimen

La máquina de estados de la figura 47 representa los posibles estados por los cuales pasa un espécimen, en ella se pueden observar las acciones que se dan en cada estado, asi mismo, se pueden observar las precondiciones para que una acción se de, y las postcondiciones después de la ejecución de la acción.

Figura 47. Máquina de estados del espécimen. Fuente. Este trabajo.

11.2.2 Máquina de estados de la solicitud de inclusión

La máquina de estados de la figura 48 representa los posibles estados por los cuales pasa una solicitud de inclusión, en ella al igual que en la máquina de estados del espécimen (Sección 11.2.1) se pueden observar las acciones que se dan en cada estado, asi mismo, se pueden observar las precondiciones para que una acción se de, y las postcondiciones después de la ejecución de la acción.

119

Figura 48. Máquina de estados de la solicitud de inclusión. Fuente. Este trabajo.

120

12. TECNOLOGÍAS USADAS EN LA CONSTRUCCIÓN

Finalmente las tecnologías usadas en la construcción del prototipo fueron:

• Framework ZK: Interfaz gráfica.• Java: Lógica del negocio.• JPA: Mapeo de lógica de negocio y base de datos relacional.• EclipseLink: proveedor de JPA.• MySQL: Base de datos relacional.• Librería Apache POI: Generación de etiquetas en formato docx.• Librería Itext: Generación de etiquetas en formato PDF.

En la Figura 44. Se puede apreciar un esquema con las tecnologías usadas en la construcción de este prototipo. El entorno de desarrollo utilizado fue Eclipse, para el modelamiento de este la herramienta utilizada fue Enterprise Architect.

Figura 49. Arquitectura tecnológica del prototipo PlantaeToSpecify. Fuente. Este trabajo.

Por otro lado, a partir de la estrategia de migración especificada en la sección 9.4, se desarrolló un procedimiento almacenado que permite la migración de los datos del prototipo a la base de datos de Specify, este se ejecutará cada vez que el usuario validador apruebe una solicitud de inclusión. Este procedimiento a su vez realiza el llamado a cuatro (4) procedimientos adicionales que también deben ser instalados, tres de estos procedimientos son usados para consultar las tablas: Taxon, Geography y Agent de Specify y el último es usado para verificar que los códigos de barras y de colección sean únicos en Specify.

Estos cinco (5) procedimientos se encuentran dentro del CD en la ruta 3.

121

Prototipo/Base de datos/2. DDL Procedures.sql y deberán ser instalados en la base de datos del prototipo.

En la Figura 50 se puede observar el diagrama de despliegue que incluye los tres nodos asociados en el prototipo, esto es la interacción entre Plantae, PlantaeToSpecify y Specify.

Figura 50. Diagrama de despliegue. Fuente: Este trabajo.

122

deployment PlantaeToSpecify

«DISPOSIT IVO M ÓVIL» «Servidor de ap l icaciones T om cat Versión 7 .0»

Servidor ICN

Plantae.apk PlantaeToSpecify.war

Specify

«datastore»Base de datos

«datastore»plantaetospecify

«use»

«use»

«use»

13. PRUEBAS

Se recopilan las pruebas unitarias y funcionales realizadas al prototipo, las pruebas unitarias fueron realizadas a través de Junit. Durante estas pruebas se usaron datos reales de la base de datos a través de la conexión desde el prototipo, lo que permitió realizar junto con las pruebas unitarias, pruebas de integración entre los diferentes componentes del mismo. Para las pruebas funcionales, se verifió que el comportamiento del prototipo estuviera acorde con los requerimientos funcionales, casos de uso y diagramas de actividades.

13.1 Pruebas unitarias y de integración

Las pruebas unitarias se realizaron sobre las clases que concentran la lógica de negocio más relevante del prototipo, estas clases son las relacionadas con la carga de archivos CSV al prototipo, la edición de especímenes y la migración de especímenes a Specify. Para la realización de las mismas se crearon tres (3) clases de prueba (una para cada clase que iba a ser probada) y una clase suite que hizo los llamados a las clases de prueba. Dichas clases se pueden ver en el diagrama de la Figura 51.

Figura 51. Diagrama de clases de la implementación de JUnit. Fuente. Este trabajo.

Los resultados obtenidos en las pruebas fueron los esperados, como se puede observar en la Figura 52.

123

Figura 52. Resultados de las pruebas unitarias. Fuente. Este trabajo.

13.2 Pruebas funcionales

Las pruebas funcionales fueron realizadas sobre todas las funcionalidades del prototipo, sin embargo a continuación solo se presentan los resultados de estas pruebas en las funcionalidades de cargue de archivos, solicitudes de inclusión y aprobación de migración.

13.2.1 Cargue de un archivoEl prototipo carga todos los registros con los que cuenta un archivo y muestra un mensaje de cargue exitoso como se puede ver en la Figura 54, sin embargo, si en el archivo uno de los registros tiene algún campo incorrecto o cuando el archivo está vacío, el prototipo genera un mensaje como se puede ver en la Figura 55 y Figura 56 respectivamente, cabe aclarar que en estas pruebas se usaron archivos generados por Plantae, sin embargo, en las dos primeras pruebas los archivos fueron alterados para verificar el comportamiento del prototipo con archivos sin información o con información incorrecta, el último archivo si fue cargado al prototipo tal y como fue generado por Plantae.

124

Figura 53. Cargue de un archivo. Fuente. Este trabajo.

Figura 54. Cargue de archivo exitoso. Fuente. Este trabajo.

125

Figura 55. Cargue de archivo incorrecto campo invalido. Fuente. Este trabajo.

Figura 56. Cargue de archivo vacío. Fuente. Este trabajo.

13.2.2 Solicitud de inclusiónAl enviar una solicitud de inclusión el prototipo genera un mensaje de confirmación de la acción (Figura 57) sí el usuario confirma la acción, el prototipo envía la solicitud de inclusión al usuario validador y muestra un mensaje con el resultado del envío de la solicitud (Figura 58).

126

Figura 57. Solicitud de inclusión de especímenes. Fuente. Este trabajo.

Figura 58. Solicitud de inclusión de especímenes enviada. Fuente. Este trabajo.

13.2.3 Aprobación e inclusión de espécimenEn la Figura 59, se evidencia que una vez el usuario validador hace clic en aprobar solicitud, debe agregar la información faltante del espécimen para que este sea incluido en Specify, una vez esta información es agregada y se hace clic en aprobar solicitud, el prototipo realiza la validación correspondiente y muestra mediante un mensaje el resultado del proceso de aprobación (Figura 60).

127

Figura 59. Agregar información. Fuente. Este trabajo.

Figura 60. Confirmación de inclusión de especímen en Specify. Fuente. Este trabajo.

Posteriormente, el espécimen migrado fue consultado en Specify, y se evidenció que efectivamente el espécimen fue migrado (Figura 61).

128

Figura 61. Espécimen desde Specify. Fuente. Este trabajo.

129

14. CONCLUSIONES

• Al definir clara y detalladamente cada uno de los requerimientos expuestos por los usuarios, al ser estos diagramados en un modelo de casos de uso y los diagramas de actividades, se evidenció con mayor claridad la interacción entre los actores del sistema, el sistema y la base de datos.

• Se estableció una estrategia de migración de los datos recolectados a través de Plantae y la base de datos del ICN, permitiendo completar el proceso que se está tratando de automatizar.

• Se obtuvo una aplicación que podría facilitar la depuración de los datos recolectados a través de Plantae para una migración confiable a la base de datos del ICN.

• Se pudo evidenciar que el framework ZK en su propuesta arquitectónica es funcional para los propósitos de contar con una interfaz gráfica amigable y es integrable a tecnologías como JPA.

• Gracias a la alianza entre el ICN y el grupo de investigación Arquisoft, y al apoyo e interés de los potenciales usuarios finales, se obtuvo información relevante y valiosa para el desarrollo del prototipo.

• Se elaboró un módulo de generación de etiquetas, el cual fue bien aceptado por los usuario finales al poseer una interfaz sencilla e intuitiva que no solo permite establecer un estándar de etiquetado, sino que reemplaza a la herramienta con la que cuentan actualmente, la cual no es usada debido principalmente a su complejidad de uso y restricciones de acceso.

• Al obtener los modelos después de cada fase del Proceso Unificado, estos permitieron verificar que lo desarrollado está acorde a lo modelado y que puede ser menos dispendiosa la extensibilidad de este prototipo de software al hacer uso de estos.

• Finalmente, el grupo de investigación Arquisoft al querer impulsar la corriente de “Open models”, pone a disposición de la comunidad los modelos de este prototipo, los cuales pueden ser consultados en la página web del grupo.

130

15. TRABAJO FUTURO

A medida que se diseñó y desarrolló este prototipo se detectaron mejoras e incluso nuevas funcionalidades que podrían ser integradas en nuevas versiones del prototipo, tales como:

• Permitir en el módulo de generación de etiquetas que el usuario pueda configurar las dimensiones de estas, los campos que quiere sean incluidos, su distribución, además de acomodar las etiquetas de tal manera que se optimice el uso del papel e incluso permita la creación de plantillas de etiqueta.

• El manejo de colores en RGB y el MUNSELL para esta versión del prototipo solo se aprecia a nivel de codificación y no a nivel visual, entonces se podría mejorar esta funcionalidad permitiendo al usuario ver estos colores en estas dos escalas.

• Crear un nuevo módulo y su respectivo rol en el sistema que reciba las notificaciones del prototipo y a su vez tenga los permisos de realizar ajustes en Specify para corregir los problemas presentados en el proceso de migración que hace que la solicitud de inclusión quede en estado pendiente.

• Permitir la parametrización de los niveles de los árboles de sitio geográfico y taxonomía, adicionalmente que los sitios geográficos estén referenciados con otra base de datos como la del Instituto Geográfico Agustín Codazzi, con el fin de disminuir los inconvenientes con los que cuenta el instituto al momento del registro de un sitio geográfico.

• Notificar mediante correos electrónicos a los diferentes usuarios involucrados los cambios de estado que sufre un espécimen o solicitud de inclusión durante el proceso de solicitud e inclusión en Specify.

• Una funcionalidad que permita la autenticación única para las tres aplicaciones: Plantae, PlantaeToSpecify y Specify, actualmente cada aplicación maneja y controla sus usuarios de manera independiente.

131

16. GLOSARIO

ADMINISTRADOR: Usuario del prototipo que realizará la creación de los usuarios recolectores y validadores.

ARCHIVO CSV: Archivo generado por la aplicación móvil Plantae con formato CSV.

CSV: Traducido como “Valores separados por coma” por sus siglas en inglés (Comma-Separated Value) es un formato de archivo para intercambiar datos entre diferentes aplicaciones.

ESPÉCIMEN: Muestra recolectada en campo de una especie de flora.

PLANTAE: Aplicativo móvil desarrollado por miembros del grupo de investigación Arquisoft de la Universidad Distrital.

RECOLECTOR: Usuario que realizará el cargue del archivo generado en Plantae, además de la depuración de la información recolectada y posterior solicitud de inclusión.

SOLICITUD DE INCLUSIÓN: es la petición que realiza un usuario recolector a un usuario validador para que sea incluido un espécimen en la base de datos del ICN.

SPECIFY: plataforma de base de datos para museos y herbarios. Gestiona la información sobre especies y la curaduría de colecciones, seguimiento de las transacciones de especímenes, unión de imágenes con registros de especímenes y la publicación de datos de especímenes en internet.

VALIDADOR: Usuario del prototipo que realizará la validación de la solicitudes de inclusión enviadas por los usuarios recolectores para aprobarlas o rechazarlas según sea el caso.

132

17. GUÍA DE CONTENIDO DE ANEXOS

Junto con este libro se entrega un CD, a continuación se especifica el contenido de éste.

Figura 62. Contenido inicial del CD. Fuente. Este trabajo.

17.1 DOCUMENTOS

En esta carpeta se encuentran en formato PDF los siguientes documentos:

• Libro Final PlantaeToSpecify: este libro. • Relación campos Prototipo y Specify: se encuentra la tabla que muestra la

relación entre los campos del prototipo y los campos de Specify.

17.2 PROTOTIPO

En esta carpeta se encuentra un archivo con extensión .WAR la estructura de los archivos contenidos en este archivo es como se muestra en la Figura 63.

133

Figura 63. Estructura del proyecto abierto desde Eclipse. Fuente. Este trabajo.

17.3 MODELAMIENTO

Dentro de esta carpeta encontramos el archivo generado por la herramienta Enterprise Architect, donde se realizaron todos los modelos y diagramas que se describieron a lo largo del documento.

A su vez dentro de este archivo encontramos los modelos divididos en carpetas de la siguiente manera:

• Modelo de casos de usoActores Casos de uso1. Módulo de control de acceso2. Módulo de selección y cargue de archivo3. Módulo de gestión de especímenes

134

4. Módulo de selección y envío de especímenes5. Módulo de consulta y aprobación de solicitudes6. Módulo de gestión de usuarios

• Modelo estructuralDC01 Diagrama de clasesDC02 Diagrama de clases con framework

• Modelo de datosMR01 Modelo Relacional

• Modelo de interfaz de usuarioModelo de interfaz gráfica

• Modelo dinámicoDiagrama de despliegueDiagramas de secuencia

1. Módulo de control de acceso2. Módulo de selección y cargue de archivo3. Módulo de gestión de especímenes4. Módulo de selección y envío de especímenes5. Módulo de consulta y aprobación de solicitudes6. Módulo de gestión de usuarios

Máquinas de estadosME01 Máquina de estados espécimenME02 Máquina de estados solicitudes de inclusión

17.4 DICCIONARIOS

• Diccionario de clases: En este documento se detallan cada una de las clases de lógica del negocio del prototipo, sus atributos y métodos.

• Diccionario de datos: En este documento se detallan cada una de las tablas y campos del prototipo.

17.5 MANUALES

• Manual de instalación PlantaeToSpecifyV1: es un documento donde se especifican los pasos para la instalación o despliegue de la aplicación en un servidor de aplicaciones.

• Manual de usuario PlantaeToSpecifyV1: es un documento donde se especifica el uso del prototipo para cada uno de los roles.

135

BIBLIOGRAFÍA

1: Sosa, Giovanni, Mateus, Angela, diseño de un aplicativo de software para la recolección de muestras biológicas en campo para el instituto de ciencias naturales de la universidad nacional [trabajo de grado], Bogotá, Universidad Distrital Francisco José de Caldas, Carrera de Ingeniería de Sistemas, 2015.2: . Instituto de Ciencias Naturales. (2015) "Historia de las colecciones científicas en línea del ICN" [En línea], recuperado el 18 de Marzo del 2015 de http://www.biovirtual.unal.edu.co/ICN/.3: Scott K,. The Unified Process Explained. : Addison-Wesley, 2001. 1 p.4: Instituto de Ciencias Naturales. (2015) "Colecciones científicas en línea, Instituto de Ciencias Naturales" [En línea], recuperado el 18 de junio de 2014 de http://www.biovirtual.unal.edu.co/ICN/?controlador=ShowObject&accion=show&id=10413.5: Kuchana, Partha. “Software architecture design patterns in Java: CRC Press LLC”, 2004. 2 p.6: Wikipedia. (2016) "Modelo–vista–controlador" [En línea], recuperado el 25 de agosto de 2016 de https://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador.7: Gossman, John. (2005) "Introduction to Model/View/ViewModel pattern for building WPF apps" [En línea], recuperado el 10 de agosto de 2016 de https://blogs.msdn.microsoft.com/johngossman/2005/10/08/introduction-to-modelviewviewmodel-pattern-for-building-wpf-apps/.8: Fowler, Martin. “Patterns of enterprise application architecture” : Addison-Wesley, 2002. 152 p.9: ZK. (2015) "Introduction of MVVM" [En línea], recuperado el 10 de agosto de 2016 de http://books.zkoss.org/zk-mvvm-book/8.0/introduction_of_mvvm.html.10: ZK. (2015) "ZK's Value and Strength" [En línea], http://books.zkoss.org/zkessentials-book/master/.11: ZK. (2013) "Architecture of ZK" [En línea], recuperado el 23 de agosto de 2016 de https://www.zkoss.org/wiki/ZK%20Essentials/Chapter%201:%20Introduction.12: ZK. (2014) "MVC" [En línea], recuperado el 23 de agosto de 2016 de https://www.zkoss.org/wiki/ZK%20Developer's%20Reference/MVC.13: ZK. (2015) "MVVM & ZK Bind" [En línea], recuperado el 10 de agosto de 2016 de http://books.zkoss.org/zk-mvvm-book/8.0/mvvm_&_zk_bind.html.14: ZK. (2013) "JPA" [En línea], recuperado el 10 de agosto de 2016 de https://www.zkoss.org/wiki/ZK%20Developer's%20Reference/Integration/Persistence%20Layer/JPA.15: ZK. (2016) "MySQL 5.7 Reference Manual - General Information" [En línea], recuperado el 10 de agosto de 2016 de http://dev.mysql.com/doc/refman/5.7/en/introduction.html.16: Corona S,. “Factores críticos de éxito en el proceso de migración de bases de datos relacionales”. Universidad Nacional Autónoma de México, 2006. p.

136

17: Blázquez M,. (2012) "La Migración de datos. Exportación e Importación" [En línea], recuperado el 15 de Enero de 2014 http://ccdocautomatizacion.blogspot.com/2008/03/10-la-migracin-de-datos-exportacin-e.html.18: "The Comma Separated Value (CSV) File Format" [En línea], recuperado el 20 de enero de 2014 de http://creativyst.com/Doc/Articles/CSV/CSV01.htm.19: W3. (2013) "Extensible Markup Language (XML)" [En línea], recuperado el 20 de enero de 2014 de https://www.w3.org/XML/.20: Microsoft. (2014) "Excel Binary File Format (.xls) Structure - Introduction" [En línea], recuperado el 20 de enero de 2014 de https://msdn.microsoft.com/en-us/library/dd906173(v=office.12).aspx.21: Mozilla. (2014) "HTML" [En línea], recuperado el 20 de enero de 2014 de https://developer.mozilla.org/es/docs/Web/HTML.22: . Specify (2014) "Specify 6 Desktop Application" [En línea], recuperado el 20 de Enero de 2014 de http://specifyx.specifysoftware.org/welcome-to-specify-6-desktop-application/.23: Apache. (2016) "Apache POI - the Java API for Microsoft Documents" [En línea], recuperado el 10 de agosto de 2016 de https://poi.apache.org/.24: Itext. (2013) "Itext" [En línea], recuperado el 12 de julio de 2014 de http://itextpdf.com/.25: Tuya, Javier, Ramos Román Isabel, Dolado Cosín, Javier. “Técnicas cuantitativas para la gestión en la ingeniería del software”. : Netbiblo, S.L., 2007. 54 p.26: JUnit. (2016) "JUnit" [En línea], recuperado el 25 de agosto de 2016 de http://junit.org/junit4/.27: Tahchiev, Petar, Leme, Felipe, Massol, Vincent, Gregory, Gary. “JUnit in Action.” : Manning Publications, 2011. 1 p.28: Jacobson I, Booch G, Rumbaugh J. “El proceso Unificado de Desarrollo de software.” Madrid: Addison Wesley, 2000. 4-5 p.29: Rumbaugh J, Jacobson I, Booch G,. “Lenguaje unificado de modelado manual de referencia.” Madrid: Addison Wesley, 2000. 1 p.30: Sparx. (2007) "Diagrama de clase UML2" [En línea], recuperado el 15 de enero de 2014 de http://www.sparxsystems.com.ar/resources/tutorial/uml2_classdiagram.html.31: Sparx. (2007) "Diagrama de componentes UML2" [En línea], recuperado el 15 de enero de 2014 de http://www.sparxsystems.com.ar/resources/tutorial/uml2_componentdiagram.html.32: Diosa H, “Ingeniería de software I” [Apuntes]. Bogotá, Colombia, Universidad Distrital Francisco José de Caldas, Ingeniería de sistemas, 201233: Sparx. (2007) "Diagrama de secuencia UML2" [En línea], recuperado el 15 de enero de 2014 de http://www.sparxsystems.com.ar/resources/tutorial/uml2_sequencediagram.html.34: Sparx. (2007) "Diagrama de Actividades UML2" [En línea], recuperado el 15 de enero de 2014 de http://www.sparxsystems.com.ar/resources/tutorial/uml2_activitydiagram.html.

137

35: Sparx. (2016) "Enterprise Architect" [En línea], recuperado el 20 de agosto de 2016 de http://www.sparxsystems.com/products/ea/.36: Oracle. (2010) "Java Persistence API" [En línea], recuperado el 18 de Marzo del 2015 de http://docs.oracle.com/javaee/5/tutorial/doc/bnacj.html#bnadb.37: Eclipse. (2009) “Introduction to EclipseLink JPA”, 2009, recuperado el 18 de Marzo del 2015 de http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Print_Version#Introduction_to_EclipseLink_JPA38: Sommerville, Ian. “Ingeniería del software.” : Pearson education, 2011. 185-187 p.

138