TRABAJO FIN DE ESTUDIOS PROYECTO FIN DE CARRERA Gestión de catalogación/embalado de colectores solares térmicos y control de ubicación en almacén de producto terminado Raquel Calle Cordón Tutor: Francisco José García Izquierdo Curso 2011-2012 Gestión de catalogación/embalado de colectores solares térmicos y control de ubicación en almacén de producto terminado, trabajo fin de estudios de Raquel Calle Cordón, dirigido por Francisco José García Izquierdo (publicado por la Universidad de La Rioja), se difunde bajo una Licencia Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported. Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los titulares del copyright. © © El autor Universidad de La Rioja, Servicio de Publicaciones, 2012 publicaciones.unirioja.es E-mail: [email protected] UNIVERSIDAD DE LA RIOJA Facultad de Ciencias, Estudios Agroalimentarios e Informática PROYECTO FIN DE CARRERA Ingeniería Técnica en Informática de Gestión Gestión de catalogación/embalado de colectores solares térmicos y control de ubicación en almacén de producto terminado Alumno: Raquel Calle Cordón Director: Francisco José García Izquierdo Logroño, Junio 2012 MEMORIA ÍNDICE 1 Documento de objetivos de proyecto ..................................................... 5 1.1 Objetivo ............................................................................................................5 1.2 Entregables .......................................................................................................5 1.3 Alcance .............................................................................................................5 1.4 Metodología ......................................................................................................6 1.5 Estructura de descomposición de tareas .............................................................6 1.6 Plan de trabajo ................................................................................................12 1.7 Horario y calendario de trabajo .......................................................................13 1.8 Tecnologías .....................................................................................................14 1.9 Riesgos ...........................................................................................................15 2 Ciclo 1: Clasificado y embalaje ............................................................17 2.1 Documento de análisis de requisitos ................................................................17 2.1.1 Obtención de requisitos ...........................................................................17 2.1.1.1 Descripción general .............................................................................17 2.1.1.2 Requisitos obtenidos ............................................................................17 2.1.2 Análisis ...................................................................................................19 2.1.2.1 Identificación de casos de uso ..............................................................19 2.1.2.2 Listado de casos de uso........................................................................20 2.1.2.3 Descripción de casos de uso ................................................................21 2.2 Documento de diseño de la BD .......................................................................29 2.2.1 Diseño conceptual ...................................................................................29 2.2.1.1 Esquema conceptual ............................................................................29 2.2.1.2 Descripción de entidades y atributos ....................................................30 2.2.1.3 Descripción de relaciones ....................................................................31 2.2.2 Diseño lógico ..........................................................................................31 -1- MEMORIA 2.2.3 Diseño físico ...........................................................................................33 2.2.3.1 Frecuencia de las transacciones más importantes (regla del 80/20) ....... 33 2.2.3.2 Estudiar organización primaria y decidir índices secundarios ...............34 2.3 Documento de diseño ......................................................................................35 2.3.1 Interfaces de usuario ................................................................................35 2.3.1.1 Identificación de acceso .......................................................................35 2.3.1.2 Interfaz de inspección final y embalaje ................................................36 2.3.1.3 Interfaz de información colectores .......................................................37 2.3.1.4 Interfaz de información de pallets ........................................................38 2.3.1.5 Interfaces de confirmación...................................................................39 2.4 Documento de implementación .......................................................................40 2.4.1 Lectores de códigos .................................................................................40 2.4.1.1 Configuración......................................................................................40 2.4.1.2 Diseño .................................................................................................40 2.4.1.3 Librería ...............................................................................................41 2.4.2 Impresión de etiquetas .............................................................................41 2.4.2.1 Impresoras ...........................................................................................41 2.4.2.2 Código de generación de etiquetas .......................................................41 2.4.2.3 Formato y plantilla ..............................................................................43 2.4.3 JWS: Java Web Star ................................................................................44 2.4.3.1 JNLP ...................................................................................................44 2.4.3.2 Fichero .jnlp ........................................................................................45 2.4.3.3 Ventajas ..............................................................................................46 2.5 Pruebas ...........................................................................................................49 2.5.1 Gestión de acceso a usuarios....................................................................50 2.5.2 Asignación de colectores .........................................................................51 2.5.3 Información de colectores........................................................................52 2.5.4 Desasignación de colectores ....................................................................53 -2- MEMORIA 2.5.5 Cambio de pallet .....................................................................................53 2.5.6 Información de pallet ...............................................................................55 2.5.7 Cerrado de pallet .....................................................................................56 2.5.8 Impresión de etiquetas .............................................................................56 3 Ciclo 2: Control de almacenaje ............................................................57 3.1 Documento de análisis de requisitos ................................................................57 3.1.1 Obtención de requisitos ...........................................................................57 3.1.1.1 Requisitos obtenidos ............................................................................57 3.1.2 Análisis de requisitos ...............................................................................59 3.1.2.1 Identificación de casos de uso ..............................................................59 3.1.2.2 Listado de casos de uso........................................................................60 3.1.2.3 Descripción de casos de uso ................................................................60 3.2 Documento de diseño de la BD .......................................................................64 3.2.1 Diseño conceptual ...................................................................................64 3.2.1.1 Esquema conceptual ............................................................................64 3.2.1.2 Descripción de entidades y atributos ....................................................65 3.2.1.3 Descripción de relaciones ....................................................................66 3.2.2 Diseño lógico ..........................................................................................66 3.2.3 Diseño físico ...........................................................................................67 3.2.3.1 Frecuencia de las transacciones más importantes (regla del 80/20) ....... 67 3.2.3.2 Estudiar organización primaria y decidir índices secundarios ...............68 3.3 Documento de diseño ......................................................................................68 3.3.1 Interfaces de usuario ................................................................................69 3.3.1.1 Identificación de usuario ......................................................................69 3.3.1.2 Interfaz de ubicación de pallets ............................................................69 3.3.1.3 Interfaz de consultas ............................................................................70 3.3.1.4 Interfaz del gráfico ..............................................................................71 3.3.1.5 Interfaces de confirmación...................................................................72 -3- MEMORIA 3.4 Documento de implementación .......................................................................73 3.4.1 3.5 Gráficos...................................................................................................73 Pruebas ...........................................................................................................74 3.5.1 Gestión de acceso a usuarios....................................................................75 3.5.2 Ubicación de pallets ................................................................................75 3.5.3 Reubicación de pallets .............................................................................76 3.5.4 Información de pallets .............................................................................77 3.5.5 Información de movimientos ...................................................................77 3.5.6 Gráfico de almacén ..................................................................................78 4 Gestión de proyecto ..............................................................................81 4.1 Horas de trabajo ..............................................................................................81 5 Conclusiones ........................................................................................83 5.1 Evaluación de objetivos...................................................................................83 5.2 Posibles ampliaciones .....................................................................................83 5.3 Visión personal ...............................................................................................83 6 ANEXO A .............................................................................................85 6.1 Clase lector .....................................................................................................85 6.2 Interfaz InterfaceLector ...................................................................................88 7 ANEXO B .............................................................................................89 7.1 Etiqueta identificador pallet.............................................................................89 7.2 Etiqueta listado de colectores ..........................................................................89 8 ANEXO C .............................................................................................91 8.1 termica.jnlp .....................................................................................................91 8.2 ubicarpallets.jnlp .............................................................................................92 9 ANEXO D ............................................................................................95 9.1 Manual aplicación clasificación y embalaje .....................................................95 9.2 Manual aplicación de almacén....................................................................... 103 -4- MEMORIA 1 DOCUMENTO DE OBJETIVOS DE PROYECTO 1.1 Objetivo La finalidad del proyecto es el diseño e implementación de una aplicación que recoja todas las necesidades y requisitos relacionados con la gestión de la clasificación, etiquetado y almacenaje de colectores solares térmicos para la empresa Solaria Energía y Medio Ambiente, dedicada a la fabricación de los mismos. Se pretende mejorar el proceso actual implementando un software para los equipos de final de línea de producción (inspección de calidad) y añadir a la aplicación el control de almacenaje. Los objetivos de la aplicación son: • Gestión de clasificación de colectores térmicos • Gestión de embalado de producto terminado • Gestión de almacenaje También se considera objetivo del proyecto la creación de un manual de usuario. 1.2 Entregables • Memoria del proyecto • Aplicación desarrollada • Manual de usuario 1.3 Alcance En este proyecto se realizará el análisis, diseño e implementación completa de las aplicaciones que demanda la empresa. -5- MEMORIA 1.4 Metodología El proyecto se concentra en dos grandes líneas por lo que el desarrollo de la aplicación se realizará siguiendo una metodología incremental que contará de dos ciclos: Ciclo 1: gestión de clasificado y embalado del producto terminado al final de la línea de producción. Ciclo 2: gestión de situación y localización de pallets de producto terminado para su almacenaje. 1.5 Estructura de descomposición de tareas Se desglosa el proyecto en tareas con el fin de calcular aproximadamente la cantidad necesaria de horas totales para la finalización de este. Se le asigna a cada tarea una cantidad de horas. Esto facilitará la construcción de un calendario con el que, añadiendo un margen de tiempo para paliar cualquiera de los riesgos que se pueden presentar, se determinará la fecha de entrega del proyecto. -6- MEMORIA Ilustración 1. Esquema de tareas Las tareas a realizar son las siguientes: • Documento de objetivos del proyecto - Descomposición de tareas: Se descompone el proyecto en tareas. - Establecer horario de proyecto: Se calcula aproximadamente el tiempo que durará cada actividad teniendo en cuenta los factores externos al proyectante como puede ser estudio de asignatura pendiente o la vida laboral fuera de la universidad. - Asignación de tiempo: Se asigna a cada tarea un tiempo de duración aproximado siempre al alza para evitar retrasos en la planificación. - Diagrama de Gantt: Se utiliza el diagrama de Gantt para esquematizar las tareas del proyecto junto con su duración teórica. -7- MEMORIA - Revisión de la planificación: Se revisa la planificación realizada pudiendo realizarse cambios de última hora. Esta tarea llevará un total de 26 horas distribuidas de la siguiente manera: • - Descomposición de tareas → 15 horas - Establecer horario de proyecto → 2 hora - Asignación de tiempo → 2 hora - Diagrama de Gantt → 4 horas - Revisión de la planificación → 3 horas Análisis de antecedentes - Estudio de la antigua herramienta de trabajo: Se realiza un pequeño estudio de la herramienta utilizada por la empresa. Esta tarea llevará un total de 24 horas distribuidas de la siguiente manera: - Estudio de la antigua herramienta de trabajo → 12 horas para el estudio en cada iteración. • Análisis de requisitos - Estudio exhaustivo de funciones: Segundo contacto con la empresa para profundizar en los aspectos más importantes para los futuros usuarios de la aplicación. - Recopilación de requisitos: Juntando toda la información obtenida anteriormente se obtienen los requisitos para el desarrollo de la aplicación. - Identificación casos de uso: Se estudian los casos de uso más importantes de la aplicación. - Diagrama de actividad: Se creará para los caso de uso con mayor complejidad un diagrama de actividad. Esta tarea llevará un total de 30 horas distribuidas en las 2 iteraciones de la siguiente manera: - Estudio exhaustivo de funciones → 3 horas -8- MEMORIA • - Recopilación de requisitos → 4 horas - Identificación casos de uso → 5 horas - Diagramas de actividad → 2 horas Diseño de la base de datos - Diseño conceptual: Se diseña sobre papel la base de datos a construir. - Descripciones: Se hace una descripción de las entidades y atributos. - Diseño lógico: Se crea un esquema relacional. - Diseño físico: Se dan a conocer los índices añadidos. Esta tarea llevará un total de 18 horas distribuidas en las 2 iteraciones de la siguiente manera: • - Diagrama conceptual → 2 horas - Descripción de las tablas → 1 horas - Diseño lógico → 3 horas - Diseño físico → 2 horas Diseño - Diagrama de clases: Se estudian las clases necesarias para el desarrollo de la aplicación y se plasman en el diagrama de clases. - Creación prototipo: Se crea un prototipo para la empresa. Esta tarea llevará un total de 16 horas distribuidas en las 2 iteraciones de la siguiente manera: • - Diagrama de clases → 3 horas - Creación de prototipo → 5 horas Implementación - Implementación de módulos: Se implementará la interfaz de los módulos a desarrollar. Esta tarea llevará un total de 250 horas divididas en las 2 iteraciones. -9- MEMORIA • Pruebas - Pruebas de módulos: Se probarán los módulos independientemente y en conjunto. - Pruebas del prototipo: Se probará el prototipo para la empresa. Esta tarea llevará un total de 28 horas distribuidas en las 2 iteraciones de la siguiente manera: • - Pruebas de módulos → 10 horas - Pruebas del prototipo → 4 horas Manual de usuario - Redactar manual: Se redacta el manual para el usuario sobre papel. Esta tarea llevará un total de 10 horas. • Instalación - Creación del ejecutable: Se crea el ejecutable para la instalación de la aplicación. - Instalación de la aplicación: Se instala la aplicación en la empresa. - Pruebas finales: Se prueba la aplicación para comprobar que está lista para su uso en la empresa. Esta tarea llevará un total de 7 horas distribuidas de la siguiente manera: - Creación del ejecutable → 3 horas - Instalación de la aplicación → 2 horas - Pruebas finales → 2 horas • Gestión del proyecto - Reuniones con la empresa: Reuniones mantenidas con el cliente durante la duración del proyecto. - 10 - MEMORIA - Reuniones con el tutor: Reuniones mantenidas con el tutor de proyecto durante la duración de este. - Levantar acta: Después de cada reunión se debe levantar un acta con los puntos tratados y las conclusiones sacadas. - Seguimiento de horas invertidas: Se calculan las horas invertidas en cada tarea y se comparan con las estimadas en el DOP. Si fuese necesario se replanificará el calendario. Esta tarea llevará un total de 27 horas distribuidas de la siguiente manera: - Reuniones con la empresa → 10 horas - Reuniones con el tutor → 10 horas - Levantar acta → 4 horas - Digitalización de actas → 3 horas - Calculo de horas reales invertidas → 3 horas • Memoria - Redactar memoria: Se redacta la memoria del proyecto que incluye un resumen de todo lo realizado hasta ahora. Esta tarea llevará un total de 15 horas distribuidas de la siguiente manera: - Redactar memoria → 15 horas - 11 - MEMORIA 1.6 Plan de trabajo Ilustración 2. Diagrama de Gantt Ilustración 3. Diagrama de Gantt Ilustración 4. Diagrama de Gantt Ilustración 5. Diagrama de Gantt - 12 - MEMORIA 1.7 Horario y calendario de trabajo Horas a la semana invertidas en el desarrollo del proyecto: Lunes Martes Miércoles Jueves Viernes 8:00 - 9:00 9:00 - 10:00 10:00 -11:00 11:00 - 12:00 12:00 - 13:00 13:00 - 14:00 16:00 - 17:00 17:00 - 18:00 18:00 - 19:00 19:00 - 20:00 20:00 - 21:00 Ilustración 6. Horario semanal Días de trabajo disponibles: 2011 L M 5 6 12 13 19 20 26 27 Septiembre X J V 1 2 7 8 9 14 15 16 21 22 23 28 29 30 S 3 10 17 24 D 4 11 18 25 L 3 10 17 24 31 Octubre M X J V S 1 4 5 6 7 8 11 12 13 14 15 18 19 20 21 22 25 26 27 28 29 D 2 9 16 23 30 L 7 14 21 28 M 1 8 15 22 29 Noviembre X J V 2 3 4 9 10 11 16 17 18 23 24 25 30 S 5 12 19 26 D 6 13 20 27 Febrero X J V 1 2 3 8 9 10 15 16 17 22 23 24 29 S 4 11 18 25 D 5 12 19 26 Ilustración 7. Calendario 2011 2012 L M 5 6 12 13 19 20 26 27 Diciembre X J V 1 2 7 8 9 14 15 16 21 22 23 28 29 30 S 3 10 17 24 31 D 4 11 18 25 L Enero M X J V S 2 9 16 23 30 3 4 5 6 7 10 11 12 13 14 17 18 19 20 21 24 25 26 27 28 31 D 1 8 15 22 29 L M 6 7 13 14 20 21 27 28 Ilustración 8. Calendario 2012 Festivo - 13 - Vacaciones MEMORIA 1.8 Tecnologías Para el desarrollo de la aplicación usaremos el paradigma de la Programación Orientada a Objetos con el lenguaje Java (J2EE) en su versión 1.6, así como se plantea el uso de las siguientes tecnologías principalmente: • Para implementar la capa de presentación usaremos JFC/Swing haciendo uso del plugin de Eclipse Jigloo para el diseño de la misma. • La capa de persistencia se desarrollará usando una de las APIS de persistencia más comunes, ODBC, ya que es la utilizada por la empresa para el resto de sus aplicaciones. • Para el diseño y generación de las etiquetas usaremos RTFTemplate: se trata de una librería de código abierto, que permite la generación de informes, etiquetas u otro tipo de documentos con plantillas editables en RTF (MS Word). Así mismo, necesitaremos editar, según las necesidades de la empresa, una macro en VBA (Visual Basic para Aplicaciones) distribuida en una plantilla de MS Word (.dot) con el paquete RTFTemplate. Esto permitirá diseñar las plantillas de las etiquetas RTF a los usuarios habilitados para ello. • Los modelos de los datos disponibles para mezclar con las etiquetas se definirán ficheros XML incluyendo el nombre del campo y tipo de datos disponible para cada tipo de etiqueta. • Para el registro de eventos en el log de la aplicación usaremos Log4J, Apache Logger o similar. • El Sistema Gestor de Base de Datos será MySQL Enterprise 5.1. • Para la distribución, instalación y actualización usaremos la tecnología Java Web Start que nos permitirá distribuir la aplicación a través de un sitio web, instalación sencilla (un solo clic) creación de entrada en el menú de inicio e icono en el escritorio y actualizaciones automáticas en cada inicio de sesión, si hay actualización disponible. - 14 - MEMORIA 1.9 Riesgos Se consideran las posibles causas por las cuales la finalización del proyecto puede sufrir algún retraso o aumento de su coste final: • Enfermedad o accidente por parte del proyectante: el proyectante podrá sufrir accidentes o enfermedades durante la realización del proyecto y esto puede provocar retrasos en las entregas. Se deberá realizar el pertinente reajuste en el calendario previsto. • Planificación temporal errónea: La planificación temporal puede ser inalcanzable debido a distintos problemas como malentendidos en los requisitos, cambios, etc. En este caso, la inexperiencia es el factor más importante a tener en cuenta. Se deberá replantear el proyecto con respecto a la realidad o invertir horas extra que no hayan sido incluidas en la planificación inicial como puede ser el fin de semana. • Mala identificación de requisitos: Delimitar el sistema de forma inadecuada, obtener objetivos confusos del sistema, problemas de comunicación y/o comprensión con el cliente (por no estar seguros de sus necesidades, por tener una pobre comprensión de las capacidades y límites de su entorno de computación, por un pobre entendimiento del dominio del problema, por existir requisitos ambiguos, poco estables o incompatibles con otros,…). Para evitar esto se debe asegurar que todos los requisitos del sistema han sido establecidos sin ambigüedad, sin inconsistencias y sin omisiones. • Cambios en la especificación de la aplicación: Los cambios en las necesidades del cliente puede provocar falta de tiempo o incluso imposibilidad para realizar la nueva tarea utilizando el sistema creado hasta el momento del cambio. Por esto, debe existir una gestión de la configuración formal para identificar, controlar, seguir e informar de cambios proyectados tan pronto como sean identificados. • Daños en el Software o el Hardware: Pueden ocasionar grandes daños en el caso de no tomarse las medidas preventivas necesarias. Se deberá de disponer de copias de seguridad de todos los programas y herramientas necesarias para llevar a cabo el trabajo. - 15 - MEMORIA - 16 - MEMORIA 2 CICLO 1: CLASIFICADO Y EMBALAJE 2.1 Documento de análisis de requisitos 2.1.1 Obtención de requisitos Tras varias reuniones con los responsables de los departamentos implicados y tras varias revisiones y aceptación del borrador del documento de análisis de requisitos de la aplicación de clasificado y embalado a desarrollar, se redacta el siguiente documento. 2.1.1.1 Descripción general La empresa centra su actividad profesional en la fabricación de módulos solares fotovoltaicos y colectores solares térmicos. Dichos colectores tras ser fabricados y chequeados deben ser catalogados por el departamento de calidad por su modelo, características de fabricación y su validez para ser expedidos a cliente. En el caso de no superar los requisitos de validez, se guardará la información sobre sus defectos para ser procesado nuevamente. Una vez catalogados, dichos colectores deberán ser agrupados en unidades de manipulación (Pallet) que tendrán las mismas características y modelo que los colectores que lo compondrán. Estos pallets permanecerán abiertos hasta su llenado que será de 10 colectores por pallet. Al llegar a su máxima ocupación, el pallet se cerrará y será identificado con un código único para ser traspasado al almacén de producto terminado. Existen casos especiales en los que un pallet podrá ser cerrado sin haberse llenado por completo y un colector que ya se haya asociado a un pallet cerrado podrá ser desasignado posteriormente. 2.1.1.2 Requisitos obtenidos Diferenciamos de manera general los requisitos obtenidos en dos bloques: - 17 - MEMORIA • Requisitos de la base de datos: Los principales objetivos de la base de datos a desarrollar son capacitarla para interactuar con la aplicación de gestión realizada en Java usando el paradigma de la programación orientada a objetos. La base de datos permitirá almacenar, consultar y actualizar registros y asegurará la integridad de los datos que en todo momento cumplirán las restricciones de integridad referencial que se indican en el diagrama relacional. La base de datos almacenará datos referentes a: - Colectores: Producto terminado de fabricación del que se guardará información como el modelo, fecha de producción, pallet al que pertenece y color dependiendo de su validez para expedición a cliente. - Modelo: Las descripciones para los diferentes modelos de colector fabricados. - Defecto: Características que se pueden encontrar en un colector en el final de línea de producción de la que se guardará su descripción y el color de colector al que pertenece. - Pallets: Se almacenará información básica sobre los pallets tales como su identificador, modelo o estado. - Colector traspasado: Se guardará un historial de información sobre los colectores traspasados. - Usuario: información sobre los usuarios que utilizarán la aplicación y sus respectivos roles. • Requisitos funcionales: Los requisitos funcionales de la base de datos hacen referencia a su interacción con la aplicación que gestiona el almacén y los pallets que se alojan en él. - 18 - MEMORIA - Clasificar colector: El sistema permitirá asignarle ciertas características al colector leído y automáticamente se asignará a un pallet abierto del mismo modelo y color. - Desasignar colector: El operario podrá desasignar un colector ya asociado a un pallet cerrado. - Cambiar colector de pallet: Se permitirá cambiar un colector asignado a un pallet a otro pallet concreto. - Cerrar pallet: Se permitirá cerrar un pallet manualmente antes de que legue a su máxima ocupación. - Consultas: el sistema devolverá toda la información sobre pallets y colectores. 2.1.2 Análisis Se dará a continuación una visión más técnica de los requisitos que plantean las necesidades de la empresa. 2.1.2.1 Identificación de casos de uso Se plasma la idea de interacción del usuario con el sistema en un diagrama de casos de uso, este es una ayuda para la visualización gráfica de esta interacción. Para su realización se identifican: • Actores: Se identifican dos actores a interactuar con el sistema que llamaremos operario y gerente. El gerente poseerá las mismas posibilidades de interacción con el sistema que el empleado además de ciertas acciones que solo podrá realizar el. • Casos de uso: se presenta a continuación el diagrama de casos de uso dando una vista general de los casos de uso a estudiar: - 19 - MEMORIA Ilustración 9. Diagrama de casos de uso 2.1.2.2 • Listado de casos de uso Gestión de calidad: - • • A-1. Clasificar colector Gestión de embalaje: - B-1. Desasignar colector - B-2. Cambiar colector de pallet - B-3. Cerrar pallet Consultas: - C-1. Pallet/colector - C-2. Imprimir etiqueta - 20 - MEMORIA 2.1.2.3 Descripción de casos de uso Se describen los casos de uso añadiendo un diagrama de actividad a aquellos que se consideran más complicados de entender. Nombre del Caso de Uso Codigo del Caso de Uso Actor(es) Actores que toman parte en el caso de uso. Descripción Descripción breve del caso de uso. Precondición Situación que se tiene que dar para que se dé el caso de uso. Acción actor Acción sistema Operativa numerada y ordenada del actor en el caso de uso. Operativa numerada y ordenada del sistema en el caso de uso. Flujo Principal Flujo Alternativo 1 Desviación en la operativa principal del Desviación en la operativa principal del actor. sistema. Postcondición Frecuencia Nivel de prioridad Situación final despues del caso de uso. Número aproximado de veces que se processa el caso de uso al día. Relevancia del caso de uso en el desarrollo de la aplicación a estudiar. Tabla 1. Explicación tabla descriptiva - 21 - MEMORIA • Gestión de Calidad: Nombre del Caso de Uso Codigo del Caso de Uso Actor(es) Clasificar collector A-1 Operario calidad Descripción El operario quiere guardar las caracteristicas de un colector Precondición El colector no se encuentra ya en la base de datos Acción actor Acción sistema 1) El operario solicita la asignación del colector. 2) El sistema pide la introducción de un codigo de colector. 3) El operario introduce el codigo del colector mediante la lector laser. 4)El sistema comprueba que no exista el código en la base de datos. 5)El sistema solicita la información a guardar. Flujo Principal 6)El usuario introduce la información pertinente. 7) El sistema comprueba la integridad de los datos a guardar y busca el pallet abierto de las mismas caracteristicas. 8) El sistema guarda los datos e informa al operario que han sido correctamente guardados y el número de pallet al que ha sido asociado el colector. Flujo Alternativo 1 Flujo Alternativo 3 Postcondición Frecuencia Nivel de prioridad 5) El colector ya existe en la base de datos. Se muestra un mensaje informativo y se termina el caso de uso. El usuario cancela la operación, se termina el caso de uso. Los datos del colector permanecen en la base de datos asociados a un pallet. 900/día 1 Tabla 2. Caso de uso A-1 En la Ilustración 10 se muestra el diagrama de actividad correspondiente al caso de uso A-1 ya que además de ser nivel de prioridad 1, es de mayor complejidad. - 22 - MEMORIA Ilustración 10. Diagrama de actividad del caso de uso A-1 - 23 - MEMORIA • Gestión de embalaje: Nombre del Caso de Uso Desasignar colector Codigo del Caso de Uso B-1 Actor(es) Operario embalaje Descripción El operario quiere desasociar un colector ya asociado a un pallet. Precondición El colector existe en la base de datos asociado a un pallet. Acción actor Acción sistema 1) El actor solicita al sistema la desasignación de colectores. 2) El sistema pide la introducción del codigo del colector. 3) El actor introduce el codigo del colector. 4) El sistema comprueba que existe en el sistema. Flujo Principal 5) El sistema asigna el colector al pallet abierto de esas caracteristicas. 6) Se muestran los nuevos datos. 4) El sistema no encuentra ningun colector con el código dado por el operario. Flujo Alternativo 1 Flujo Alternativo 2 El usuario cancela la operación, se termina el caso de uso. Postcondición El colector es asignado al pallet abierto en ese momento y el pallet cerrado al que estaba asociado queda con un colector menos. 20/día 3 Frecuencia Nivel de prioridad Tabla 3. Caso de uso B-1 - 24 - MEMORIA Nombre del Caso de Uso Cambiar colector de pallet Codigo del Caso de Uso B-2 Actor(es) Operario embalaje Descripción El operario quiere desasociar un colector ya sociado a un pallet y asociarlo a otro concreto. Precondición El colector existe en la base de datos asociado a un pallet. Acción actor Acción sistema 1) El operario solicita al sistema el cambio de asignación de colectores. 2) El sistema pide el codigo del colector. 3) El operario introduce el codigo del colector. 4) El sistema comprueba que existe en el sistema. Flujo Principal 5) El sistema pide el código del pallet a asignar. 6) El operario introduce el código de pallet. 7) Se comprueba que el pallet existe y no está lleno. 8) El sistema asigna el colector al pallet. Flujo Alternativo 1 4) El sistema no encuentra ningun colector con el código dado por el operario. Se termina el caso de uso. Flujo Alternativo 2 7) El sistema no encuentra ningun pallet con ese código o existe pero ya está lleno. Se termina el caso de uso. Flujo Alternativo 3 El usuario cancela la operación, se termina el caso de uso. Postcondición El colector es asignado al pallet dado por el operario y el pallet al que estaba asociado queda con un colector menos. 20/día 3 Frecuencia Nivel de prioridad Tabla 4. Caso de uso B-2 - 25 - MEMORIA Ilustración 11. Diagrama de actividad del caso de uso B-2 - 26 - MEMORIA Nombre del Caso de Uso Cerrar pallet Codigo del Caso de Uso B-3 Actor(es) Operario embalaje Descripción El operario quiere cerra un pallet que todavía no se ha llenado completamente. Precondición Existe el pallet en estado abierto Flujo Principal Acción actor Acción sistema 1) El operario solicita al sistema el cierre manual de pallets. 2) El sistema pide la introducción del codigo del pallet. 3) El usuario introdice manualmente el códgo del pallet. 4)El sistema comprueba que existe el pallet. 5)El sistema cambia el estado del pallet a "cerrado" y lo notifica al operario. 4)El pallet no existe en el sistema. Se termina el caso de uso. Flujo Alternativo 1 Flujo Alternativo 2 El usuario cancela la operación, se termina el caso de uso. Postcondición El estado del pallet pasa a ser cerrado. 40/día 2 Frecuencia Nivel de prioridad Tabla 5. Caso de uso B-3 • Gestión de consultas: Nombre del Caso de Uso Consulta pallet/colector Codigo del Caso de Uso C-1 Actor(es) Operario calidad, operario embalaje Descripción El operario queire conocer las caracteristicas del pallet o colector. Precondición El pallet o colector existe en el sistema. Acción actor Acción sistema 1) El actor solicita al sistema la consulta del 2) El sistema pide la introducción del pallet o colector. codigo del palle o colectort. Flujo Principal 3) El actor introduce el codigo del pallet o colector. 4) El sistema comprueba que existe el pallet o colector en el sistema. 5) El sistema muestra los datos almacenados del pallet o colector. 4)El sistema no encuentra ningun pallet o colector con el código dado por el operario. Se termina el caso de uso. Flujo Alternativo 1 Flujo Alternativo 2 El usuario cancela la operación, se termina el caso de uso. Postcondición El sistema muestra los datos referentes al pallet o colector. 100/día 1 Frecuencia Nivel de prioridad Tabla 6. Caso de uso C-1 - 27 - MEMORIA Nombre del Caso de Uso Imprimir etiquetas Codigo del Caso de Uso C-2 Actor(es) Operario calidad, operario embalaje Descripción El operario quiere imprimir las etiquetas correspondientes a un pallet. Precondición Ha sucedido el caso de uso C-1. Flujo Principal Acción actor Acción sistema 1) El actor solicita al sistema la impresión de la etiqueta 2) El sistema comprueba los datos necesarios para la impresión. 3) Se procede a la llamada de impresión Flujo Alternativo 1 El usuario cancela la operación, se termina el caso de uso. Postcondición El sistema muestra los datos referentes al pallet o colector. 40/día 2 Frecuencia Nivel de prioridad Tabla 7. Caso de uso C-2 - 28 - MEMORIA 2.2 Documento de diseño de la BD El objetivo de esta actividad es identificar las necesidades de información de cada uno de los procesos que conforman el sistema, con el fin de obtener un modelo de datos que contemple todas las entidades, relaciones, atributos y reglas de negocio necesarias para dar respuesta a dichas necesidades. 2.2.1 Diseño conceptual Se identifica y estudiado el entorno de operación y los grupos de usuarios cuyo trabajo se verá afectado por la base de dato. El objetivo es conseguir un esquema conceptual que sea independiente del sistema de gestión de la base de datos específico. Se emplea para ello un modelo de datos de alto nivel, el modelo entidadrelación. 2.2.1.1 Esquema conceptual La Ilustración 12 muestra el esquema conceptual con el modelo entidad- relación (ER) diseñado mediante una estrategia ascendente: Ilustración 12. Esquema conceptual (Diagrama ER). - 29 - MEMORIA 2.2.1.2 • • Descripción de entidades y atributos Colector: unidad de producción. - N_colector: código de identificación único. Clave primaria. - Fecha: fecha de fabricación. - Localización: sede en la que ha sido fabricado. - Color: identificador de calidad del producto. Defecto: características de producción que pueden encontrarse en el colector. • • • • - Id: identificador. Clave primaria. - Descripción: breve descripción del defecto. - Color: rango de calidad al que pertenece. Modelo: cada uno de los tipos de colectores que se producen. - Id: identificador. Clave primaria. - Descripción: breve descripción del modelo. Usuario: operarios de producción que interactúan con el sistema. - Nombre: identificador único. Clave primaria. - Contraseña: clave de entrada. Perfil: tipos de usuario en el sistema para los diferentes privilegios. - Id: identificador. Clave primaria. - Rol: descripción de privilegios. Pallet: unidad de embalaje de producto terminado. - N_pallet: código de identificación único. Clave primaria. - Color: rango de calidad al que pertenece. - Estado: identifica si el pallet permite más asociaciones de colectores. - 30 - MEMORIA • 2.2.1.3 • Traspasos: cada uno de los cambios de asociación de colectores a pallets. - Id: identificador. Clave primaria. - Fecha: fecha de traspaso. Descripción de relaciones Colector: Un colector se caracteriza por ser de un modelo concreto y de haber sido validado por un inspector de calidad (usuario). Un colector puede haber sido fabricado sin defecto o presentar uno de los registrados. Además se relaciona cada colector con el único pallet al que pertenece y puede haber sido traspasado de pallet cualquier número de veces. • Pallets: Al igual que los colectores, los pallets se caracterizan por ser de un modelo concreto. Cada pallet consta de un identificador único (matrícula de pallet) y puede tener asociado como máximo 10 colectores. En un pallet puede haber infinitos traspasos de módulos. • Traspasos: Un traspaso consta de un solo colector que se mueve de un pallet a otro pallet, además del operario (usuario) que hizo el cambio de ubicación. • Usuario: Cada usuario tiene un perfil que le asigna un rol. El usuario puede realizar las inspecciones y los traspasos de colectores que sean necesarios. 2.2.2 Diseño lógico La siguiente fase del diseño es la transformación del esquema conceptual procedente del modelo de datos de alto nivel de la fase anterior a un esquema relacional independiente del sistema gestor de la base de datos. La ilustración 13 muestra el resultado de mapear el esquema conceptual ER a un esquema de base de datos relacional. - 31 - MEMORIA COLECTOR N_colector Fecha Modelo Defecto Inspector Pallet CF: MODELO CF:DEFECTO CF:USUARIO CF:PALLET Color PALLET N_pallet Color Modelo CF:MODELO MODELO Id Descripción DEFECTO Id Descripción Color TRASPASO Id Pallet origen Pallet destino Colector CF:PALLET CF:PALLET Fecha CF:COLECTOR Operario CF:USUARIO USUARIO Nombre Contraseña Perfil CF:PERFIL PERFIL Id Rol Ilustración 13. Esquema modelo relacional El resultado de esta fase serán las sentencias en el lenguaje de definición de datos (LDD) del sistema gestor de base de datos que se ha elegido, que especifican los esquemas a nivel conceptual y externo del sistema. - 32 - MEMORIA 2.2.3 Diseño físico El diseño físico es el proceso de elección de estructuras de almacenamiento específicas y rutas de acceso para los ficheros de la base de datos con el fin de conseguir un buen rendimiento de las distintas aplicaciones. Para ello hay que conocer las consultas, las transacciones y aplicaciones que se esperan ejecutar sobre la base de datos. 2.2.3.1 Frecuencia de las transacciones más importantes (regla del 80/20) Además de identificar las características de las consultas y transacciones esperadas, se debe considerar la frecuencia de invocación que se espera. La regla del 80/20 dice que el 80% del procesamiento se debe al 20% de las consultas por lo que s suficiente hacer el estudio sobre ese 20%. Concluimos que el 20% de las transacciones más frecuentes en la base de datos son: 1. SELECT * FROM colector WHERE n_colector=… 2. SELECT * FROM pallet WHERE estado=’abierto’ and modelo=’…’ and color=’…’ 3. SELECT n_collector FROM colector WHERE n_pallet =… 4. UPDATE pallet SET estado WHERE n_pallet=… 5. UPDATE colector SET n_pallet =… WHERE n_collector = … 6. SELECT * FROM traspasos WHERE n_colector=… 7. SELECT p.rol FROM usuario u, perfil p WHERE p.id=u.perfil and u.nombre=… *En realidad no se hace siempre un SELECT * sino que se optimiza el tamaño del resultset seleccionando sólo los campos necesarios. - 33 - MEMORIA 2.2.3.2 Estudiar organización primaria y decidir índices secundarios A partir de las transacciones más frecuentes se elige una organización primaria para cada tabla y se eligen aquellos índices secundarios que pueden mejorar el rendimiento del sistema. La conclusión se muestra en la tabla 7. Tabla Transacción Frecuencia/día Atributos 1 1000 Where: n_colector 3 1000 Where: n_pallet 5 200 Where: n_colector 2 2000 4 200 Where: n_pallet color, modelo) Traspasos 6 200 Where: n_colector Is (n_colector) Usuario 7 1000 Join: perfil Ip (nombre) Where: nombre Is(perfíl) Perfil 7 1000 Join: id Ip (id) Colector Índices Ip (n_colector) Is (n_pallet) Where: estado, Ip (n_pallet) modelo, color Is (estado, Pallet Tabla 7. Organización primaria y elección de índices secundarios - 34 - MEMORIA 2.3 Documento de diseño Dentro de este apartado, se muestra el diseño de las interfaces gráficas con las que interactuará el usuario final. Las características deseables para nuestra interfaz de usuario han de ser las siguientes: • Fácil de usar y fácil de aprender • Segura y fiable • Intuitiva y directa • Consistente • Permitir al usuario cancelar la realización de la acción. 2.3.1 Interfaces de usuario A continuación, se hace una descripción gráfica del diseño del software (las imágenes se obtienen de la aplicación ya implementada), de modo que se vaya viendo pantalla a pantalla el diseño de los requisitos funcionales especificados. 2.3.1.1 Identificación de acceso La interfaz de acceso de usuarios permite al usuario autentificarse ante el sistema por medio del nombre de usuario y clave establecidos, como muestra la ilustración 14. Esta interfaz es común para todas las aplicaciones de la empresa. - 35 - MEMORIA Ilustración 14. Interfaz de acceso Una vez que el usuario se autentifica, se le ofrecen las pestañas y opciones de la aplicación disponibles sólo para el rol que esté estipulado. 2.3.1.2 Interfaz de inspección final y embalaje Esta interfaz es la herramienta exclusiva de los operarios de calidad que trata el caso de uso A-1, Clasificar colector. Almacena los datos del nuevo colector, cuyo número identificativo deberá llegar mediante el lector de código de barras externo y se muestra al usuario una vez leído. Se almacena en la base de datos la información elegida por el usuario mediante las listas desplegables, casillas de verificación y cuadros de texto de la parte izquierda de la interfaz. En la parte derecha se muestra información del pallet destino para el nuevo colector asignado y una pantalla informativa para el usuario sobre el estado de la aplicación. - 36 - MEMORIA Ilustración 15. Interfaz de inspección final y embalaje En la parte superior de la vista se muestra el acceso a las pestañas que cada rol tenga permitidas. En el caso de la ilustración 15 se muestra la aplicación sin restricciones. 2.3.1.3 Interfaz de información colectores Esta interfaz se caracteriza por mostrar la información sobre el colector que el usuario identifique. En la parte derecha de la interfaz se muestra todo lo que la base de datos guarda sobre el dicho colector una vez accionado el botón recuperar en la parte izquierda. - 37 - MEMORIA Ilustración 16. Interfaz de información de colectores Además, del caso de uso C-1. Consultas colector, se incluyen en la interfaz el B-1. Desasignar colector y el B-2. Cambiar colector de pallet con los botones situados en la parte izquierda. El botón de la acción desasignar solo estará activo en el caso de que el usuario sea operario de calidad, así como el botón de cambio de pallet solo será activo para el operario de embalaje. 2.3.1.4 Interfaz de información de pallets Al igual que la interfaz de información de colectores, la interfaz de información de pallets muestra, en la parte derecha, los datos guardados en la base de datos sobre un pallet específico solicitado por el usuario. Esta acción corresponde con el caso de uso C-1. Consultas colector. El botón cerrar se corresponde con el caso de uso B-3. Cerrar pallet y solo será activo para los operarios de embalaje. La impresión de etiquetas viene especificada en los dos últimos botones, corresponde con el caso de uso C-2. Imprimir etiqueta. - 38 - MEMORIA Ilustración 17. Interfaz de información de pallets 2.3.1.5 Interfaces de confirmación Para cualquier acción que implique la modificación de la base de datos por parte del usuario (excepto la asignación de módulos que se omite debido a la necesidad de rapidez en el proceso), aparecen las interfaces de confirmación de la acción por parte del usuario. Estas interfaces permiten la cancelación de la acción. Ilustración 18. Ejemplo de interfaz de confirmación - 39 - MEMORIA 2.4 Documento de implementación Este documento trata de explicar los detalles de la implementación destacables en el desarrollo de la aplicación. Son tres los puntos a destacar que son comunes para todo el proyecto: • Lectores de códigos de barra: Implementación y configuración del hardware que permite la entrada de datos identificativos de la unidad de proceso al sistema. • Impresión de etiquetas: generación del código para la impresión de las etiquetas identificadoras de pallet en lenguaje común para impresoras térmicas. • Java Web Star: implementación de referencia de la especificación Java Networking Launching Protocol. 2.4.1 Lectores de códigos 2.4.1.1 Configuración Los escáneres lectores de códigos de barras están configurados para trabajar con interfaz RS-232 (puerto serie) o bien con USB emulando puerto serie. Para programarla se utiliza el manual del fabricante y la programación se realiza simplemente leyendo códigos de barras que establecen una configuración u otra. Una vez configurados sólo se tiene que indicar al Software mediante fichero de configuración (properties) el número de puerto COM a usar. Si no se especifica ninguno se tomará el puerto por defecto COM1. 2.4.1.2 Diseño La clase Lector que implementa las interfaces Runnable y SerialPortEventListener, se lanza como un hilo de ejecución (Thread) y permanece escuchando el puerto serie indicado mediante el fichero de configuración (COM1 por defecto). Cuando se produce el evento SerialPortEvent.DATA_AVAILABLE, el hilo identifica que hay datos por - 40 - MEMORIA procesar en el puerto serie, los recoge metiéndolos en un buffer y llama al método correspondiente para su procesamiento. El formato del canal de datos con el puerto serie es 9600/8N1 (Transimisión asíncrona con bitrate de 9600 bps, 8 bits de datos, 1 bit de parada y sin bit de paridad). 2.4.1.3 Librería Para comunicar el puerto serie con java se utiliza el paquete de librerías RXTX JAVA Communication API. En el anexo A se muestra el código de la clase lector y la interfaz intefaceLector que serán las que implemente la comunicación utilizando esta librería. 2.4.2 Impresión de etiquetas 2.4.2.1 Impresoras Se utilizan impresoras térmicas Zebra© GK420t o TLP 2844Z (compatible con modelos que interpreten correctamente el lenguaje ZPL© (Zebra Processing Language). El lenguaje ZPL© es un lenguaje de alto nivel para le definición de etiquetas y control de la impresora. 2.4.2.2 Código de generación de etiquetas Para la generación de etiquetas se crea un fichero .txt de comandos ZPL©. En esta codificación de ZPL se manejarán parámetros para determinar las características de la etiqueta, como el tipo y tamaño de letra, el ancho y largo de la etiqueta, el tipo de código de barras, el acomodo de los objetos, la asociación de imágenes, el anexar cuadros o marcos para dar mejor vista a la etiqueta y todo esto sin la necesidad de usar un entorno grafico. Este lenguaje cuenta con instrucciones estándar (declaraciones y procedimientos) aunque está más orientado a las expresiones de comandos - 41 - MEMORIA matriciales. En la ilustración 19 se muestra un sencillo ejemplo con algunos de los comandos más comunes. ^XA ^FO250, 70^ADN, 11, 7^TEXTO de MUESTRA^FS ^FO320, 105^ADN, 11, 7^FD Prueba 1 ^FS ^FO30, 150^ADN, 11, 7^FD Texto de muestra 1 ^FS ^FO350, 200^ADN, 11, 7 ^BCN, 80, Y, Y, N^FD corptectr>147896325 ^FS ^XZ ^XA Ilustración 19. Código ejemplo lenguaje ZPL Ilustración 20. Vista previa del ejemplo En la tabla 8 se muestra una breve explicación de cómo se utilizan los comandos, algunas características definidas, y los parámetros que contiene. Comando Parámetros ^ XA Descripción Cada formato comienza con este comando ^ FO 250, 70 Origen de campo en coordenadas XY ^ADN 11, 7 Tamaño del texto en coordenadas XY ^ FD Prueba 1 Campo de datos donde “MUESTRA de PRUEBA” es el texto a imprimir ^ FS ^BCN ^ XZ Denota el fin de la definición del campo 80, Y, Y, N Define un código de barras 128, con una altura de 80 puntos, con línea de interpretación (Y), barras por encima del texto (Y), de orientación normal (N) Cada comando termina con esta instrucción Tabla 8. Definición de comandos - 42 - MEMORIA Los códigos de generación de las etiquetas identificativas de pallet y de listado de colectores se pueden ver en el anexo 2. Dentro de este código se introducen determinados marcadores que no se correspondan con ninguna palabra reservada del lenguaje ZPL, para ser sustituidos por valores de datos reales como puede ser en número de pallet, modelo o colectores que lo forman. 2.4.2.3 Formato y plantilla El formato de las etiquetas identificativas, tanto las de pallet como las de listado de colectores, es de 10x15 cm con la estructura que se muestra en la ilustración 21 e ilustración 22 respectivamente. Ilustración 21. Etiqueta identificador de pallets - 43 - MEMORIA Ilustración 22. Etiqueta colectores de pallet 2.4.3 JWS: Java Web Star 2.4.3.1 JNLP Java Web Star es la implementación de referencia de la especificación Java Networking Launching Protocol (JNLP) y está desarrollada por Sun Microsystems. Esta especificación, permite tener centralizado en un servidor web una aplicación de escritorio, facilitando su distribución e instalación a través de la red, asegurando que los clientes estén actualizados todos al tiempo en el momento de iniciar la aplicación. Cuando la aplicación local arranca primero comprueba si - 44 - MEMORIA tiene una versión más reciente en el servidor, si es así la descarga y si no lanza la que tiene instalada en local. 2.4.3.2 Fichero .jnlp Para definir esta arquitectura se requieren dos ficheros: • Un Jar donde se encuentran las clases (el fichero podría estar firmado). • Un fichero XML que describe cómo interpretar ese Jar. JNLP que básicamente es un fichero XML con la siguiente estructura: • Una cabecera XML típica. <?xml version="1.0" encoding="conjunto de caracteres"?> Donde "conjunto de caracteres" puede ser cualquier conjunto válido: utf8, ISO-8859-1... • Una ruta predeterminada para que los archivos puedan ser llamados desde una ruta relativa. <jnlp spec="1.0+" codebase="http://URL/directorio/del/programa" href="NombreDelArchivoJNLP.jnlp"> • Una o más etiquetas information en el que se colocan varias informaciones (de la empresa, de la propia aplicación, etc…). • Una etiqueta security con información relativa a los permisos en el equipo cliente. - 45 - MEMORIA • Una etiqueta resources con información de los recursos necesarios para la aplicación: imágenes, ficheros properties, etc. • Una etiqueta application-desc con la clase predeterminada a ejecutar. En el anexo C se contempla el archivo .jnlp para la aplicación a desarrollada. 2.4.3.3 • Ventajas El software de Java Web Start permite descargar y ejecutar aplicaciones Java desde la Web eliminando complejos procedimientos de instalación o actualización. La instalación se realizará pinchando en un simple enlace de una web. La ilustración 23 muestra la página web con los enlaces a cada uno de los archivos .jnlp de las aplicaciones de la empresa además de varios complementos de preinstalación necesarios para su funcionamiento (como puede ser la estructura de carpetas y los ficheros properties). - 46 - MEMORIA Ilustración 23. URL de distribución del software • La aplicación puede solicitar acceso sin restricciones al sistema. En tal caso, Java Web Start mostrará un cuadro de diálogo Advertencia de seguridad cuando se ejecute la aplicación por primera vez. La advertencia mostrará información acerca del proveedor que ha desarrollado la aplicación. Si elige confiar en dicho proveedor, la aplicación se ejecutará. La información acerca del origen de la aplicación se basa en la firma de código digital y guardará este certificado en el almacén de certificados de usuario del panel de control de JAVA. - 47 - MEMORIA Ilustración 24. Advertencia firma digital • Garantiza que se está ejecutando la última versión de la aplicación en el momento de lanzar la aplicación de escritorio, ya que lo primero que hace es comprobar contra el servidor si hay una nueva versión. En caso de haberla la descarga. Ilustración 25. Verificación de la aplicación en el servidor • MS Windows permite crear grupos de programas en el menú de inicio y accesos directos en el escritorio, simplemente indicándolo en el fichero .jnlp: - 48 - MEMORIA <icon href="icono.gif"/> <shortcut online="true"> <desktop/> <menu submenu="Nombre del menú"/> </shortcut> 2.5 Pruebas Una vez acabada la implementación se especifica un plan de pruebas en el que se engloban todos los casos relevantes para asegurar la solidez e integridad de la aplicación. Con esto se intenta asegurar que el sistema se comporta conforme a lo establecido en los requisitos y con unos niveles de calidad aceptables. Al generar los casos de prueba se incluyen tanto datos de entrada válidos y esperados como no válidos e inesperados y se crean siguiendo las siguientes reglas: • Debe tener una alta probabilidad de encontrar un error. • No debe ser redundante. • Debe ser la mejor de todas las posibles. • No debe ser ni demasiado sencilla ni demasiado compleja. La documentación del plan de pruebas se realizará de acuerdo al modelo de la tabla 9. Prueba unitaria Descripción Descripción breve del caso de prueba. Entradas Datos de entrada al sistema. Resultado esperado Resultado correcto Estado en el que debe quedar el sistema si este devuelve las acciones correctamente. Muestra si el resultado obtenido es el mismo que el esperado. Tabla 9. Modelo diseño de pruebas - 49 - MEMORIA 2.5.1 Gestión de acceso a usuarios Prueba unitaria válida Se introduce los datos de un usuario real de la base de Descripción datos. Usuario: Raquel Pass:1809 Entradas La aplicación arranca correctamente y el usuario ve la Resultado esperado pantalla de inicio. Sí. Resultado correcto Tabla 10. Prueba 1 accesos usuario Prueba unitaria no válida Se introduce los datos de un usuario que existe la base Descripción de datos pero se introduce mal la contraseña. Usuario: Raquel Pass: 1808 Entradas La aplicación lanza un mensaje informativo y vuelve a Resultado esperado mostrar la pantalla de acceso. Sí. Resultado correcto Tabla 11. Prueba 2 accesos usuario Prueba unitaria no válida Descripción Entradas Resultado esperado Resultado correcto Se introduce los datos de un usuario que no existe la base de datos. Usuario: Juan Pass:*** La aplicación lanza un mensaje informativo y vuelve a mostrar la pantalla de acceso. Sí. Tabla 12. Prueba 3 accesos usuario - 50 - MEMORIA 2.5.2 Asignación de colectores Prueba unitaria válida Se introduce el código del colector que no exista en la Descripción base de datos, modelo, defecto y color. Colector: Entradas F12345 Modelo:ST2000 Defecto: Suciedad en marco Color: verde Resultado esperado El colector es almacenado en la base de datos asociado a un número de pallet del mismo modelo y color. Sí. Resultado correcto Tabla 13. Prueba 1 asignación de colectores Prueba unitaria no válida Se introduce el código del colector que ya exista en la Descripción base de datos, modelo, defecto y color. Colector: Entradas F11111 Modelo:ST2000 Defecto: Suciedad en marco Color: verde Resultado esperado Resultado correcto El sistema muestra un aviso de duplicidad de colectores y vuelve a mostrar la pantalla de asignación. Sí. Tabla 14. Prueba 2 asignación de colectores Prueba unitaria no válida Se introduce el código del colector que no exista en la base de datos, defecto y color pero no se introducen Descripción datos del modelo. Colector: F11111 Entradas Modelo: Defecto: Suciedad en marco Color: verde Resultado esperado Resultado correcto El sistema muestra un aviso falta de datos y vuelve a mostrar la pantalla de asignación. Sí. Tabla 15. Prueba 3 asignación de colectores - 51 - MEMORIA Prueba unitaria no válida Se introduce el código del colector que no exista en la base de datos, defecto y modelo pero no se introducen Descripción datos del color. Colector: F11111 Entradas Modelo:ST2000 Defecto: Suciedad en marco Color: Resultado esperado Resultado correcto El sistema muestra un aviso de falta de datos y vuelve a mostrar la pantalla de asignación. Sí. Tabla 16. Prueba 4 asignación de colectores 2.5.3 Información de colectores Prueba unitaria válida Se introduce el código del colector que exista en la base Descripción de datos. Colector: F190990 Entradas El sistema muestra los datos referentes a dicho colector Resultado esperado y se habilita el botón de desasignación del colector y la opción de cambio de pallet. Resultado correcto Sí. Tabla 17. Prueba 1 información de colectores Prueba unitaria no válida Se introduce el código del colector que no exista en la Descripción base de datos. Colector: F12345 Entradas Resultado esperado Resultado correcto El sistema muestra una pantalla informativa y vuelve a mostrar la pantalla de información. Sí. Tabla 18. Prueba 2 información de colectores - 52 - MEMORIA 2.5.4 Desasignación de colectores Prueba unitaria válida Se introduce el código del colector que exista en la base Descripción de datos. Colector: F190990 Entradas El sistema muestra una pantalla de aviso de la acción que se llevará a cabo y dará la opción de detenerla. Si el Resultado esperado usuario acepta, el colector será borrado de la base de datos. Sí. Resultado correcto Tabla 19. Prueba 1 deasignación de colectores 2.5.5 Cambio de pallet Prueba unitaria válida Se introduce el código del colector y un número de pallet existentes en la base de datos. Tiene el mismo modelo y Descripción color y el pallet no está lleno. Colector: F190990 Pallet: 1 Entradas El sistema muestra una pantalla de aviso de la acción que se llevará a cabo y dará la opción de detenerla. Si el Resultado esperado usuario acepta, al colector se le asigna el nuevo pallet y el antiguo pasa a estado abierto. Sí. Resultado correcto Tabla 20. Prueba 1 cambio de pallet Prueba unitaria no válida Se introduce el código del colector y un número de pallet Descripción existentes en la base de datos. Colector y pallet tiene el mismo modelo y color y el pallet está lleno. Entradas Resultado esperado Resultado correcto Colector: F190990 Pallet: 7 El sistema muestra una pantalla informativa de pallet no válido y vuelve a mostrar la pantalla de información. Sí. Tabla 21. Prueba 2 cambio de pallet - 53 - MEMORIA Prueba unitaria no válida Se introduce el código del colector y un número de pallet existentes en la base de datos. El pallet no está lleno. Descripción Colector y pallet tienen el mismo color pero no el mismo modelo. Colector: F190990 Pallet: 2 Entradas El sistema muestra una pantalla informativa de pallet no Resultado esperado válido y vuelve a mostrar la pantalla de información. Sí. Resultado correcto Tabla 22. Prueba 3 cambio de pallet Prueba unitaria no válida Se introduce el código del colector y un número de pallet existentes en la base de datos. El pallet no está lleno. Descripción Colector y pallet tienen el mismo modelo pero no el mismo color. Colector: F190990 Pallet: 3 Entradas El sistema muestra una pantalla informativa de pallet no Resultado esperado válido y vuelve a mostrar la pantalla de información. Sí. Resultado correcto Tabla 23. Prueba 4 cambio de pallet Prueba unitaria no válida Descripción Entradas Se introduce el código del colector que existe en la base de datos y un número de pallet que no existe. Colector: F190990 Pallet: 2000 El sistema muestra una pantalla informativa de que el Resultado esperado pallet no existe y vuelve a mostrar la pantalla de información. Resultado correcto Sí. Tabla 24. Prueba 5 cambio de pallet - 54 - MEMORIA 2.5.6 Información de pallet Prueba unitaria válida Se introduce el código del pallet que exista en la base de Descripción datos y su estado sea cerrado. Pallet: 1 Entradas Resultado esperado El sistema muestra los datos referentes a dicho pallet y se habilitan los botones de impresión de etiquetas. Sí. Resultado correcto Tabla 25. Prueba 1 información de pallet Prueba unitaria válida Se introduce el código del pallet que exista en la base de Descripción datos y su estado sea abierto. Pallet: 5 Entradas El sistema muestra una pantalla informativa de la Resultado esperado imposibilidad de imprimir etiquetas en ese estado y se habilita el botón de cerrar pallet. Sí. Resultado correcto Tabla 26. Prueba 2 información de pallet Prueba unitaria no válida Se introduce el código del colector que no existe en la Descripción base de. Pallet: 2000 Entradas El sistema muestra una pantalla informativa de que el Resultado esperado pallet no existe y vuelve a mostrar la pantalla de información. Resultado correcto Sí. Tabla 27. Prueba 3 información de pallet - 55 - MEMORIA 2.5.7 Cerrado de pallet Prueba unitaria válida Se introduce el código del pallet que exista en la base de Descripción datos y su estado sea abierto. Pallet: 5 Entradas El sistema muestra una pantalla de aviso de la acción que se llevará a cabo y dará la opción de detenerla. Si el usuario acepta, se cambiará de estado al pallet a estado Resultado esperado cerrado y se habilitarán los botones de impresión de etiquetas. Sí. Resultado correcto Tabla 28. Prueba 1 cerrado de pallet 2.5.8 Impresión de etiquetas Prueba unitaria válida Se introduce el código del pallet que exista en la base de Descripción datos y su estado sea cerrado. Entradas Pallet: 1 Resultado esperado El sistema envía la orden a la impresora. Resultado correcto Sí. Tabla 29. Prueba 1 impresión de etiquetas - 56 - MEMORIA 3 CICLO 2: CONTROL DE ALMACENAJE 3.1 Documento de análisis de requisitos 3.1.1 Obtención de requisitos Nuevamente se mantiene reuniones con los responsables de los departamentos implicados y tras varias revisiones se acepta el borrador del documento de análisis de requisitos de las aplicaciones a desarrollar y se redacta en el siguiente documento. 3.1.1.1 Requisitos obtenidos Diferenciamos de manera general los requisitos obtenidos en dos bloques: • Requisitos de la base de datos: Como se menciona en el primer ciclo del desarrollo del proyecto, los principales objetivos de la base de datos a desarrollar son capacitarla para interactuar con la aplicación de gestión realizada en Java usando el paradigma de la programación orientada a objetos. En este segundo ciclo se trata de ampliar la base de datos ya creada, por lo que algunos de los requisitos que se obtiene para esta parte de la aplicación probablemente ya estén localizados anteriormente. La base de datos almacenará nuevos datos referentes a: - Zonas de almacén: Cada una de las zonas donde irán ubicados los pallets tiene una entrada en una tabla en las que se les asocia un identificador único usado como etiqueta que será leído mediante escáneres de códigos de barras. - Movimientos: cada uno de los cambios de ubicación a los que es sometido un pallet desde su creación. - 57 - MEMORIA Además, la aplicación interactuará con los datos ya especificados anteriormente: - Usuario: información sobre los usuarios que utilizarán la aplicación y sus respectivos roles. - Colectores: Producto terminado de fabricación del que se guardará información como el estado en que se encuentra, modelo, fecha de producción y pallet al que pertenece. - Pallets: Se almacenará información básica sobre los pallets tales como su identificador, modelo, ubicación, zona de embalado, etc. • Requisitos funcionales: Los requisitos funcionales de la base de datos hacen referencia a su interacción con la aplicación que gestiona el almacén y los pallets que se alojan en él. - Ubicar pallets: El sistema permitirá asignarle una ubicación a un pallet que pueda ser traspasado al almacén de logística, este pallet será leído con un lector de código de barras que se aplicará sobre la etiqueta pegada sobre el pallet que lo identifica unívocamente. - Consulta de ubicaciones: El sistema permitirá consultas sobre las ubicaciones actuales de los pallets existentes en la base de datos. - Consulta de gráfico de ocupación del almacén: Se generará un gráfico informativo del estado actual del almacén, pudiendo también crear gráficos específicos a partir de características concretas de los pallets de producto terminado. - 58 - MEMORIA - Consulta de movimientos: El sistema permitirá consultas sobre todos los cambios de ubicación referentes a un pallet en concreto. 3.1.2 Análisis de requisitos Se dará a continuación una visión más técnica de los requisitos que plantean las necesidades de la empresa. 3.1.2.1 Identificación de casos de uso Al igual que en el primer ciclo, se detectan dos actores que serán el operario de almacén y el gerente. Los casos de uso se presentan a continuación en el diagrama de casos de uso de la ilustración 25 dando una vista general de los que se van a estudiar. Ilustración 25. Diagrama de casos de uso - 59 - MEMORIA 3.1.2.2 • • Listado de casos de uso Gestión de almacén: - A-1. Ubicar pallet - A-2. Cambio de ubicación Consultas: 3.1.2.3 - C-1. Ubicación pallet - C-2. Gráfico almacén general - C-3. Gráfico almacén por modelo/color - C-4. Histórico movimientos Descripción de casos de uso Se describen los casos de uso añadiendo un diagrama de actividad a aquellos que se consideran más complicados de entender. • Gestión de almacén: Nombre del Caso de Uso Ubicar pallet Codigo del Caso de Uso Actor(es) A-1 Operario almacén, gerente Descripción El usuario quiere asignar un pallet a una ubicación determinada del almacén. Precondición El pallet no se encuentra asignado ya a ninguna ubicación en la BD. Acción actor Acción sistema 1) El usuario solicita la asignación de ubicación a pallet. 2) El sistema pide la introducción de un codigo de pallet. 3) El usuario introduce el codigo del pallet. 4) El sistema comprueba que el pallet no tenga ya una ubicación en el almacén. Flujo Principal 5) El sistema solicita el código de la ubicación. 6) El usuario introduce el código de la ubicación. 7) El sistema comprueba la integridad del código de ubicación. 8) El sistema guarda los datos e informa al actor que los datos han sido correctamente guardados Flujo Alternativo 1 5) El pallet ya tiene ubicación asignada. Se muestra un mensaje informativo y se pasa al caso de uso A-2. Flujo Alternativo 2 7) La ubicación introducida no existe en la BD. Se vuelve al paso 5) Flujo Alternativo 3 El usuario cancela la operación, se termina el caso de uso. Postcondición El pallet permanece en la base de datos con la ubicación proporcionada asignada. 30/día 1 Frecuencia Nivel de prioridad Tabla 30. Caso de uso A-1 - 60 - MEMORIA Ilustración 26. Diagrama de actividad del caso de uso A-1 - 61 - MEMORIA Nombre del Caso de Uso Cambio de ubicación Codigo del Caso de Uso A-2 Actor(es) Operario almacén, Gerente Descripción El usuario quiere cambiar un pallet de la ubicación ya asignada a otra existente en el almacén. Precondición El pallet existe y tiene asignada una ubicación en el almacén. Acción actor Acción sistema 1) El usuario solicita al sistema la ubicación 2) El sistema pide la introducción del de un pallet. codigo del pallet. 4) El sistema comprueba que existe el pallet en el sistema y que tiene ubicación. 3) El usuario introduce el codigo. Flujo Principal 5) Se muestra mensaje informativo y pide la nueva ubicación. 6) El usuario introduce la nueva ubicación. 7) El sistema comprueba la nueva ubicación. 8) Guarda los datos e informa al actor que los datos han sido correctamente guardados Flujo Alternativo 1 4) El sistema no encuentra ningun pallet con el código dado por el actor. Vuelve al paso 2). Flujo Alternativo 2 7) La ubicación introducida no existe en la BD. Se vuelve al paso 5) Flujo Alternativo 3 El usuario cancela la operación, se termina el caso de uso. Postcondición El pallet tiene una nueva ubicación en la BD. 10/día 2 Frecuencia Nivel de prioridad Tabla 31. Caso de uso A-2 • Gestión de consultas: Nombre del Caso de Uso Consulta de ubicación Codigo del Caso de Uso Actor(es) C-1 Operario, Gerente Descripción El usuario quiere consultar la ubicación de un pallet existente en el almacén. Precondición El artículo existe en la base de datos. Acción actor Acción sistema 1) El actor solicita al sistema la consulta de 2) El sistema pide la introducción del la ubicación. codigo del pallet. Flujo Principal 3) El actor introduce el codigodel pallet. 4) El sistema comprueba que existe el pallet en el sistema. 5) El sistema muestra la información referente al pallet. 4) El sistema no encuentra ningun pallet con el código dado por el usuario. Vuelve al paso 2). Flujo Alternativo 1 Flujo Alternativo 2 El usuario cancela la operación, se termina el caso de uso. Postcondición El sistema muestra los datos referentes al pallet. 60/día 1 Frecuencia Nivel de prioridad Tabla 32. Caso de uso C-1 - 62 - MEMORIA Nombre del Caso de Uso Consulta de gráfico general del almacén Codigo del Caso de Uso Actor(es) C-2 Operario, gerente Descripción El usuario quiere consultar el gráfico del almacén. Precondición Acción actor Flujo Principal Acción sistema 1) El actor solicita al sistema la consulta del 2) El sistema muestra la situación actual del gráfico almacén mediante el gráfico. Flujo Alternativo 1 El usuario cancela la operación, se termina el caso de uso. Postcondición El sistema muestra la información del almacén mediante el gráfico. 30/día 2 Frecuencia Nivel de prioridad Tabla 33. Caso de uso C-2 Nombre del Caso de Uso Consulta de gráfico por modelo/color Codigo del Caso de Uso C-3 Operario, gerente Actor(es) Descripción El usuario quiere consultar el gráfico de ocupación del almacén dependiendo del modelo y color de los pallet existentes en este. Precondición Acción actor Flujo Principal 1) El actor solicita al sistema el gráfico por 2) El sistema pide la introducción del modelo/color. modelo y/o color. 3) El actor introduce el modelo y/o color para la consulta. Flujo Alternativo 1 Postcondición Frecuencia Nivel de prioridad Acción sistema 4) Se muestra el gráfico de ocupación. El usuario cancela la operación, se termina el caso de uso. El sistema muestra la información mediante el gráfico. 30/día 2 Tabla 34. Caso de uso C-3 - 63 - MEMORIA Nombre del Caso de Uso Consulta de histórico de movimientos Codigo del Caso de Uso C-4 Gerente Actor(es) Descripción El usuario quiere consultar los movimientos de almacén que ha tenido un determinado pallet. Precondición El pallet existe en el sistema. Acción actor Acción sistema 1) El actor solicita al sistema la consulta del 2) El sistema pide la introducción del pallet. codigo del pallet. Flujo Principal 3) El actor introduce el codigodel pallet. 4) El sistema comprueba que existe el pallet en el sistema. 5) El sistema muestra los datos de los movimientos de dicho pallet. 4) El sistema no encuentra ningun pallet con el código dado por el usuario. Vuelve al paso 2). Flujo Alternativo 1 Flujo Alternativo 2 El usuario cancela la operación, se termina el caso de uso. Postcondición El sistema muestra los datos referentes a los movimientos del pallet. 10/semana 3 Frecuencia Nivel de prioridad Tabla 35. Caso de uso C-4 3.2 Documento de diseño de la BD Nuevamente se identifican las necesidades de información de cada uno de los procesos que conforman esta parte de la aplicación, con el fin de obtener un modelo de datos completo que contemple todas las entidades, relaciones, atributos y reglas de negocio necesarias. 3.2.1 Diseño conceptual Se amplía el diseño realizado en el primer ciclo, dando como resultado el esquema conceptual que define el proyecto completo. 3.2.1.1 Esquema conceptual La ilustración 26 muestra el esquema conceptual con el modelo entidad- relación (ER) remarcando las entidades y atributos añadidos en este ciclo del proyecto. - 64 - MEMORIA Ilustración 26. Esquema conceptual (Diagrama ER) 3.2.1.2 Descripción de entidades y atributos Se describen las entidades añadidas al esquema conceptual. • Zona de almacén: posiciones de almacenaje existentes en cada uno de los almacenes. • - Id: identificador. Clave primaria. - Etiqueta: Nombre de la ubicación. - Sede: Localización del almacén al que pertenece la ubicación. Movimiento: todos los cambios de posición dentro del almacén de cada uno de los pallets. - Id: identificador. Clave primaria. - Fecha: Fecha del evento. - 65 - MEMORIA 3.2.1.3 • Descripción de relaciones Zona de almacén: Las zonas se identifican por su etiqueta en las diferentes sedes y será únicas para cada uno de sus almacenes. Cada zona puede contener tantos pallets como ubicaciones se hayan designado a la zona o no contener ninguno. • Pallets: Cada pallets tiene asociada una zona de un almacén de la sede en la que se localiza. Además, cada pallet puede ser movido de zona tantas veces como se necesite y quedará grabado en el histórico de movimientos. • Movimientos: Cada cambio de ubicación que se realiza sobre un pallet concreto. Se le asocia una ubicación de salida y otra de entrada además del usuario que lo realiza. 3.2.2 Diseño lógico La siguiente fase del diseño es la transformación del esquema conceptual procedente del modelo de datos de alto nivel de la fase anterior a un esquema relacional independiente del sistema gestor de la base de datos. La tabla 36 muestra el mapeo de la parte modificada del esquema conceptual ER definido anteriormente a un esquema de base de datos relacional. - 66 - MEMORIA PALLET N_pallet Color Modelo Zona almacén CF:MODELO CF:ZONA ALMACEN ZONA ALMACEN Id Etiqueta Sede MOVIMIENTO Fecha Id Usuario Zona nueva Zona antigua Pallet CF:ZONA ALMACEN CF:ZONA ALMACEN CF:PALLET Tabla 36. Esquema modelo relacional El resultado de esta fase serán las sentencias en el lenguaje de definición de datos (LDD) del sistema gestor de base de datos que se ha elegido, que especifican los esquemas a nivel conceptual y externo del sistema. 3.2.3 Diseño físico Nuevamente se elegirán las estructuras de almacenamiento específicas y rutas de acceso para los ficheros de la base de datos con el fin de conseguir un buen rendimiento de las distintas aplicaciones. 3.2.3.1 Frecuencia de las transacciones más importantes (regla del 80/20) Se aplica la regla 80/20 nombrada anteriormente y se comcluye que el 20% de las transacciones más frecuentes en la base de datos son: 1. UPDATE pallet SET zona_almacen WHERE n_pallet=… 2. SELECT ubicacion FROM pallet WHERE n_pallet =… 3. SELECT ubicacion FROM pallet WHERE color=… 4. SELECT ubicacion FROM pallet WHERE modelo=… 5. SELECT * FROM zona_almacen WHERE sede=… 6. SELECT * FROM movimiento WHERE n_pallet=… - 67 - MEMORIA 3.2.3.2 Estudiar organización primaria y decidir índices secundarios A partir de las transacciones más frecuentes se elige una organización primaria para cada tabla y se eligen aquellos índices secundarios que pueden mejorar el rendimiento del sistema. Tabla Transacción Frecuencia/día Atributos 1 500 Where: n_pallet Ip (n_pallet) 2 2000 Where: n_pallet Is (color) 3 2000 Where: color 4 2000 Where: modelo Zona_almacen 5 1500 Where: sede Is (sede) Movimientos 1000 Where: n_pallet Is (n_pallet) Pallet 6 Índices Is (modelo) Tabla 37. Organización primaria y elección de índices secundarios 3.3 Documento de diseño Dentro de este apartado, se muestra el diseño de las interfaces gráficas con las que interactuará el usuario final. Las características deseables para nuestra interfaz de usuario han de ser las siguientes: • Fácil de usar y fácil de aprender • Segura y fiable • Intuitiva y directa • Consistente • Permitir al usuario cancelar la realización de la acción. - 68 - MEMORIA 3.3.1 Interfaces de usuario A continuación, se hace una descripción gráfica del diseño del software (las imágenes se obtienen de la aplicación ya implementada), de modo que se vaya viendo pantalla a pantalla el diseño de los requisitos funcionales especificados. 3.3.1.1 Identificación de usuario La interfaz de acceso de usuarios permite al usuario autentificarse ante el sistema por medio del nombre de usuario y clave establecidos, como muestra la figura. Esta interfaz es común para todas las aplicaciones de la empresa y por lo tanto será la misma que se contemplo en el ciclo anterior. Una vez que el usuario se autentifica, se le ofrecen las pestañas y opciones de la aplicación disponibles sólo para el rol que esté estipulado. 3.3.1.2 Interfaz de ubicación de pallets Esta interfaz es la herramienta exclusiva de los operarios de almacén que trata los casos de uso de la gestión del almacén, A-1 Ubicar pallets y A-2 Modificar ubicación. La interfaz pide las lecturas de código de pallet y de ubicación al usuario y asocia la información. En la parte izquierda de la interfaz se muestra la información del pallet leído mientras que a la derecha aparecerá la ubicación (caso de uso A-2) en el caso de que ya tenga una asociada o se pedirá al usuario la lectura de una nueva ubicación (caso de uso A-1). - 69 - MEMORIA Ilustración 27. Interfaz ubicación de pallets En la parte superior de la vista se muestra el acceso a las pestañas que cada rol tenga permitidas. En el caso de la ilustración 27 se muestra la aplicación sin restricciones. 3.3.1.3 Interfaz de consultas La interfaz de consultas engloba los casos de uso referentes a la consulta de información del almacén. - 70 - MEMORIA Ilustración 28. Interfaz de consultas En la parte izquierda se encuentran el caso de uso C-1 Ubicación pallet con el botón de consultar. De este caso de uso se puede acceder al caso de uso C-4 histórico de movimientos con el botón movimientos que formará parte también de la consulta de información de un pallet concreto. Por último, a los casos de uso de consulta de gráfico C-2 Gráfico almacén general y C-3 Gráfico almacén por color/modelo se accederá mediante las opciones y el botón de generar gráfico situados a la derecha de la interfaz. 3.3.1.4 Interfaz del gráfico Los casos de uso de consulta de gráfico darán lugar a la interfaz del gráfico con las características solicitadas por el usuario. Mostrará la información solicitada del almacén. - 71 - MEMORIA Ilustración 29. Interfaz de gráfico La leyenda del gráfico muestra el significado de cada color dependiendo de la ocupación de la ubicación. El color verde muestra una ubicación vacía y libre para ubicar pallets. El color amarillo significa la posición de un pallet en la ubicación con capacidad para dos pallets, por lo que tiene una posición libre. Por último, el color rojo muestra una ubicación ocupada por dos pallets, una ubicación sin posibilidad de posicionar más pallets en ella. 3.3.1.5 Interfaces de confirmación Al igual que para la aplicación desarrollada en el primer ciclo, para cualquier acción que implique la modificación de la base de datos por parte del usuario, aparecen las interfaces de confirmación de la acción por parte del usuario. Estas interfaces permiten la cancelación de la acción. - 72 - MEMORIA 3.4 Documento de implementación Para la implementación de este segundo ciclo se utilizan los mismos detalles reseñables que en el primer ciclo (apartado 2.4). Además de esto es destacable comentar la generación de gráficos. 3.4.1 Gráficos Para la generación de gráficos se utilizará el “redibujado” de cada una de las celdas de la tabla que forma el gráfico. Esta redefinición de las características de una celda vendrá especificada por una clase que herede de DefaultTableCellRenderer, mediante el método getTableCellRendererComponent(). La clase DefaultTableCellRenderer hereda de JLabel y será este JLabel el que se presente en la celda del JTable. Por ello, cambiando las características de este JLabel y devolviéndolo en el método getTableCellRendererComponent(), tendremos cambiada la celda del JTable. En primer lugar se llama a super.getTableCellRendererComponent() para que la clase padre se encargue de configurar el JLabel con los colores por defecto, ponerle borde, etc. En segundo lugar, se decide con los criterios de ocupación de pallets de cada ubicación el color de background y de foreground que se quiere en cada celda. En nuestro caso la tabla se rellenará con los datos obtenidos de la base de datos que corresponden al número de pallets que se encuentran en cada ubicación y dependiendo de dicho número la celda tendrá un color u otro. Por último, hacemos que la etiqueta sea opaca ya que por defecto son transparentes y finalmente devolvemos la etiqueta. - 73 - MEMORIA package principal; public class MiRender extends DefaultTableCellRenderer { private static final long serialVersionUID = 1L; public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){ super.getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column); //Ningún pallet en la ubicación if (this.getText().equalsIgnoreCase("0")){ this.setBackground(Color.GREEN); this.setForeground(Color.GREEN); }//Un pallet en la ubicación else if(this.getText().equalsIgnoreCase("1")){ this.setBackground(Color.ORANGE); this.setForeground(Color.ORANGE); }//Dos pallets en la ubicacion else if(this.getText().equalsIgnoreCase("2")){ this.setBackground(Color.RED); this.setForeground(Color.RED); }//Celda sin ubicación en el gráfico else if(this.getText().equalsIgnoreCase("-1")){ this.setBackground(new Color(212,208,200)); this.setForeground(new Color(212,208,200)); }//utilidad de gráfico de ubicación celda seleccionada else if(this.getText().equalsIgnoreCase("4")){ this.setBackground(Color.WHITE); this.setForeground(Color.WHITE); }else {//utilidad de gráfico de ubicación delda no selecionada this.setBackground(Color.GRAY); this.setForeground(Color.GRAY); } this.setOpaque(true); return this; } } Ilustración 30.Clase MiRender para el dibujado de gráficos 3.5 Pruebas Una vez acabada la implementación se especifica un plan de pruebas en el que se engloban todos los casos relevantes para asegurar la solidez e integridad de la aplicación. Para este plan de pruebas se sigue el mismo modelo de documentación que en el plan de pruebas del primer ciclo. - 74 - MEMORIA 3.5.1 Gestión de acceso a usuarios Las pruebas para el acceso a los usuarios serán las que ya se diseñaron en el primer ciclo ya que este módulo es común para todas las aplicaciones. 3.5.2 Ubicación de pallets Prueba unitaria válida Se introduce el código del pallet que exista en la base de datos y tenga asignada la ubicación de producción y se Descripción introduce el código de la ubicación también existente en la BD. Pallet: 1 Ubicación: A0001F Entradas Se le asigna la ubicación al pallet y se guarda el Resultado esperado movimiento en la tabla de histórico de movimientos. Sí. Resultado correcto Tabla 38. Prueba 1 ubicación de pallets Prueba unitaria no válida Se introduce el código del pallet que exista en la base de datos y tenga asignada la ubicación de producción y se Descripción introduce el código de una ubicación que no exista en la BD. Pallet: 1 Ubicación: A0050F Entradas El sistema espera la introducción de una ubicación Resultado esperado válida en la pantalla de ubicaciones. Sí. Resultado correcto Tabla 39. Prueba 2 ubicación de pallets Prueba unitaria no válida Descripción Entradas Resultado esperado Resultado correcto Se introduce el código del pallet no existe en la base de datos. Pallet: 2000 El sistema espera la introducción de un pallet válido en la pantalla de ubicaciones. Sí. - 75 - MEMORIA Tabla 39. Prueba 3 ubicación de pallets 3.5.3 Reubicación de pallets Prueba unitaria válida Se introduce el código del pallet que exista en la base de datos y tenga asignada una ubicación de almacén y se Descripción introduce el código de la ubicación también existente en la BD. Pallet: 2 Ubicación: A0001F Entradas El sistema muestra una pantalla informativa sobre la Resultado esperado situación del pallet en el almacén y se le asigna la ubicación nueva al pallet y se guarda el cambio de ubicación en la tabla de histórico de movimientos. Resultado correcto Sí. Tabla 40. Prueba 1 reubicación de pallets Prueba unitaria no válida Se introduce el código del pallet que exista en la base de datos y tenga asignada una ubicación de almacén y se Descripción introduce el código de una ubicación que no exista en la BD. Pallet: 2 Ubicación: A0050F Entradas El sistema muestra una pantalla informativa sobre la Resultado esperado situación del pallet en el almacén y espera la introducción de una ubicación válida en la pantalla de ubicaciones. Resultado correcto Sí. Tabla 41. Prueba 2 reubicación de pallets - 76 - MEMORIA 3.5.4 Información de pallets Prueba unitaria válida Se introduce el código del pallet que exista en la base de Descripción datos. Colector: F190990 Entradas Resultado esperado Resultado correcto El sistema muestra los datos referentes a dicho pallet y se habilita el botón de movimientos de almacén del pallet. Sí. Tabla 42. Prueba 1 información de pallets Prueba unitaria no válida Se introduce el código del pallet que no exista en la base Descripción de datos. Colector: 2000 Entradas Resultado esperado Resultado correcto El sistema muestra una pantalla informativa y vuelve a mostrar la pantalla de información. Sí. Tabla 43. Prueba 2 información de pallets 3.5.5 Información de movimientos Prueba unitaria válida Se introduce el código del pallet que exista en la base de Descripción datos. Colector: F190990 Entradas Resultado esperado Resultado correcto El sistema muestra los datos referentes a los movimientos de dicho pallet. Sí. Tabla 44. Prueba 1 información de movimientos - 77 - MEMORIA 3.5.6 Gráfico de almacén Prueba unitaria válida Se solicita la generación del gráfico general. Descripción Entradas Resultado esperado El sistema muestra el gráfico general del almacén. Resultado correcto Sí. Tabla 45. Prueba 1 gráfico de almacén Prueba unitaria válida Se solicita la generación del gráfico por ubicación. La Descripción ubicación existe en la BD. Ubicación: A0001F Entradas El sistema muestra el gráfico del almacén señalando la Resultado esperado posición de la ubicación solicitada. Sí. Resultado correcto Tabla 46. Prueba 1 gráfico de almacén Prueba unitaria válida Se solicita la generación del gráfico por modelo y color Descripción existentes en la BD. Modelo: ST2000 Color: verde Entradas El sistema muestra el gráfico del almacén señalando la posición de los pallets correspondientes al modelo y Resultado esperado color señalados. Sí. Resultado correcto Tabla 47. Prueba 2 gráfico de almacén Prueba unitaria no válida Descripción Entradas Resultado esperado Resultado correcto Se solicita la generación del gráfico por ubicación. La ubicación no existe en la BD. Ubicación: El sistema muestra una pantalla informativa y vuelve a mostrar la pantalla de información de pallet. Sí. Tabla 48. Prueba 3 gráfico de almacén - 78 - MEMORIA Prueba unitaria no válida Descripción Se solicita la generación del gráfico por modelo y color. Entradas Modelo: Color: verde El sistema muestra una pantalla informativa de la falta Resultado esperado de datos y vuelve a mostrar la pantalla de información de pallet. Resultado correcto Sí. Tabla 49. Prueba 4 gráfico de almacén - 79 - MEMORIA - 80 - MEMORIA 4 GESTIÓN DE PROYECTO 4.1 Horas de trabajo Este capítulo muestra la duración real de cada una de las tareas especificadas en los objetivos del proyecto y trata de hacer una comparativa con la duración estimada al inicio de este. La tabla 50 muestra las horas reales de cada tarea una vez acabado el proyecto. DOP Análisis Diseño de la BD Diseño Implementación Pruebas Finalización Gestión de proyecto Total Horas reales 32 68 30 28 320 30 40 30 578 Tabla 50. Horas reales de proyecto Los plazos que se determinaron para cada tarea se han visto alargados ligeramente debido causas ya especificadas en el apartado 1.9 del proyecto y a otras que no se habían contemplado. Las causas más destacables son las siguientes: • Planificación temporal errónea: La causa de mayor importancia y más significativa. El mal planteamiento de la duración de las tareas se ve reflejado en todo el proyecto aunque se ve una mayor acusación en la implementación. La inexperiencia es la mayor causa de esta mala planificación. • Motivos laborales: Al formar parte del departamento de sistemas dentro de la empresa no se ha podido cumplir el horario planificado al 100%. La aparición de incidencias de mayor prioridad detenía el desarrollo del proyecto en muchas ocasiones. - 81 - MEMORIA En el gráfico del la ilustración 31 se observa la comparativa entre las horas reales de proyecto frente a las horas estimadas en la planificación. Ilustración 31.Comparativa horas de proyecto - 82 - MEMORIA 5 CONCLUSIONES 5.1 Evaluación de objetivos Al comienzo del proyecto, en el documento de objetivos del proyecto, se determina que el alcance del proyecto será el análisis, diseño e implementación completa de la aplicación demandada por la empresa. Además, se requiere la entrega de la memoria y el manual de usuario como la instalación de la aplicación. Una vez terminado el proyecto, todos estos requisitos se han cumplido satisfactoriamente. 5.2 Posibles ampliaciones Por otro lado, la empresa presenta posibles ampliaciones que no han sido indicadas en el proyecto por falta de tiempo aunque el sistema esté preparado para llevarlas a cabo en cualquier momento. 5.3 Visión personal Lo más destacable una vez finalizado el proyecto es el aumento de horas previstas para cada tarea, la replanificación de las fases del proyecto y el consiguiente retraso en los plazos de entrega. Además cabe comentar la importancia de la continua interacción con el cliente. La toma de decisiones inicial afecta de una manera considerable a la conclusión final del proyecto. Y por ello se debe invertir todo el tiempo necesario a la hora de elegir la mejor alternativa a un problema, hacer buen análisis y diseño y esto conllevará mayores facilidades a la hora de la implementación. - 83 - MEMORIA - 84 - MEMORIA 6 ANEXO A 6.1 Clase lector package lector; import java.io.*; import java.util.*; import excepciones.LectorException; import gnu.io.*; public class Lector implements Runnable, SerialPortEventListener { static String messageString = "P"; static SerialPort serialPort = null; static OutputStream outputStream; static CommPortIdentifier portId; static Enumeration portList; static InputStream inputStream; static Thread readThread; InterfaceLector simulador; private static Lector reader = null; private String dato; public static Lector getAgenteLector() throws LectorException { if (reader == null) { boolean portFound = false; portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (portId.getName().equals("COM1")) { System.out.println("Puerto Funcionando: COM1"); portFound = true; try { if (serialPort == null) { serialPort = null; reader = null; System.out.println("..." + serialPort); serialPort = (SerialPort) portId.open( "LectorApp", 2000); } } catch (PortInUseException e) { System.out.println("Get agente"); throw new LectorException( "El puerto actualmente ya está en uso."); } try { if (serialPort != null) { outputStream = serialPort.getOutputStream(); } } catch (IOException e) { throw new LectorException("IOException"); } - 85 - MEMORIA try { if (serialPort != null) { serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } } catch (UnsupportedCommOperationException e) { throw new LectorException( "UnsupportedCommOperationException"); } try { if (serialPort != null) { outputStream.write(messageString.getBytes()); } } catch (IOException e) { throw new LectorException("IOException"); } } } } } } reader = new Lector(); if (!portFound) { throw new LectorException("Puerto COM1 no encontrado"); } return reader; public Lector() throws LectorException { try { if (serialPort == null) { this.cierraConexion(); serialPort = (SerialPort) portId.open("LectorApp", 2000); } } catch (PortInUseException e) { try { System.err.println("Puerto en uso... capturando excepción:"); } catch (Throwable e1) { e1.printStackTrace(); } throw new LectorException("El puerto actualmente ya esta en uso."); } try { if (serialPort != null) { inputStream = serialPort.getInputStream(); } } catch (IOException e) { throw new LectorException("IOException"); } try { if (serialPort != null) { serialPort.addEventListener(this); } } catch (TooManyListenersException e) { throw new LectorException("IOException"); } if (serialPort != null) { serialPort.notifyOnDataAvailable(true); } try { if (serialPort != null) { serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } } catch (UnsupportedCommOperationException e) { throw new LectorException("IOException"); } - 86 - MEMORIA } readThread = new Thread(this); readThread.start(); public void run() { try { Thread.sleep(20000); } } catch (InterruptedException e) { } public void serialEvent(SerialPortEvent event) { switch (event.getEventType()) { case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent.CD: case SerialPortEvent.CTS: case SerialPortEvent.DSR: case SerialPortEvent.RI: case SerialPortEvent.OUTPUT_BUFFER_EMPTY: break; case SerialPortEvent.DATA_AVAILABLE: byte[] readBuffer = new byte[255]; try { while (inputStream.available() > 0) { int numBytes = inputStream.read(readBuffer); } // capturamos el dato leído e imprime dato = new String(readBuffer); simulador.datoLeido(dato.trim()); } catch (IOException e) { } break; } } public void cierraConexion() { try { this.outputStream.close(); this.inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } serialPort.close(); serialPort = null; reader = null; public void asignar(InterfaceLector simulador) { this.simulador = simulador; } } - 87 - MEMORIA 6.2 Interfaz InterfaceLector package lector; public interface InterfaceLector { public void datoLeido(String dato); //Se implementará en cada aplicación con las acciones pertinentes a dar al dato obtenido por el lector } - 88 - MEMORIA 7 ANEXO B 7.1 Etiqueta identificador pallet ^XA ^FO30,20^GB770,1150,4,B,0^FS ^FO30,20^GB770,300,4^FS ^FO255,315^GB160,270,4^FS ^FO410,320^GB0,850,4^FS ^FO230,80^A0,100,100 ^FDSOLARIA^FS ^FO40,200^A0,40,40 ^FDPoligono Industrial "La Nava II",C. Alemania 6^FS ^FO120,240^A0,40,40 ^FDApartado de correos 138, C.P. 13.500^FS ^FO215,280^A0,40,40 ^FDPuertollano (Ciudad Real)^FS ^FO50,330^A0B,<ttt,ttt> ^FDmmmmm^FS ^FO<sss,sss>^A0B,130,130 ^FDrrrrr^FS ^FO450,830^A0B,130,130 ^FDPallet:^FS ^FO450,400^BY3 ^BCBI,100,N,N,N ^FDcbcb^FS ^FO600,330^A0B,230,170 ^FDppppp^FS ^FO275,335^A0B,170,230 ^FDccccc^FS ^XZ 7.2 Etiqueta listado de colectores ^XA ^FO30,20^GB770,1150,4,B,0^FS ^FO30,20^GB770,300,4^FS ^FO30,20^GB770,450,4^FS ^FO230,50^A0,100,100 ^FDSOLARIA^FS ^FO40,170^A0,40,40 ^FDPoligono Industrial "La Nava II",C. Alemania 6^FS ^FO120,210^A0,40,40 ^FDApartado de correos 138, C.P. 13.500^FS ^FO215,250^A0,40,40 ^FDPuertollano (Ciudad Real)^FS ^FO180,340^A0,70,70 ^FDModelo:mmmmm^FS ^FO180,410^A0,70,70 ^FDPallet:ppppp^FS ^FO310,480^A0,70,70 ^FDnnnn1^FS ^FO310,550^A0,70,70 ^FDnnnn2^FS - 89 - MEMORIA ^FO310,620^A0,70,70 ^FDnnnn3^FS ^FO310,690^A0,70,70 ^FDnnnn4^FS ^FO310,760^A0,70,70 ^FDnnnn5^FS ^FO310,830^A0,70,70 ^FDnnnn6^FS ^FO310,900^A0,70,70 ^FDnnnn7^FS ^FO310,970^A0,70,70 ^FDnnnn8^FS ^FO310,1040^A0,70,70 ^FDnnnn9^FS ^FO310,1110^A0,70,70 ^FDnnnn10^FS ^XZ - 90 - MEMORIA 8 ANEXO C 8.1 termica.jnlp <?xml version="1.0" encoding="iso-8859-1"?> <jnlp spec="1.0+" codebase="http://192.168.1.34:8088/solariaDesarrollo/termica" href="http://192.168.1.34:8088/solariaDesarrollo/termica/solariatermica.jnlp"> <information> <title>TERMICA</title> <vendor> Solaria Energía y Medio Ambiente, S.A.</vendor> <description>Software de térmica</description> <homepage href="http://www.solariaenergia.com"/> <icon href="http://192.168.1.34:8088/solariaDesarrollo/termica/img/solariaico .gif"/> <icon kind="splash" href="http://192.168.1.34:8088/solariaDesarrollo/termica/img/solariaLog o.gif"/> <shortcut online="true"> <desktop/> <menu submenu="Solaria Energía y Medio Ambiente"/> </shortcut> <offline-allowed/> </information> <update-check="timeout" policy="always"/> <security> <all-permissions/> </security> <resources> <j2se version="1.4+"/> <jar href="http://192.168.1.34:8088/solariaDesarrollo/termica/signed/RXTXcom m.jar"/> - 91 - MEMORIA <jar href="http://192.168.1.34:8088/solariaDesarrollo/termica/signed/solaria -termica.jar" main="true"/> href="http://192.168.1.34:8088/solariaDesarrollo/termica/signed/swinglayout-1.0.jar"/> <jar href="http://192.168.1.34:8088/solariaDesarrollo/termica/signed/looks2.1.4.jar"/> <property name="java.util.logging.config.file" value="D:/Solaria/resources"/> <property name="solaria.resources" value="D:/Solaria/resources"/> </resources> <application-desc main-class="principal.AplicacionTermica"/> </jnlp> 8.2 ubicarpallets.jnlp <?xml version="1.0" encoding="iso-8859-1"?> <jnlp spec="1.0+" codebase="http://192.168.1.34:8088/solariaDesarrollo/almacen" href="http://192.168.1.34:8088/solariaDesarrollo/almacen/solariaubicarpallets.jnlp"> <information> <title>ALMACEN</title> <vendor>Solaria Energía y Medio Ambiente, S.A.</vendor> <description>Software de almacén</description> <homepage href="http://www.solariaenergia.com"/> <icon href="http://192.168.1.34:8088/solariaDesarrollo/almacen/img/solariaico .gif"/> <icon kind="splash" href="http://192.168.1.34:8088/solariaDesarrollo/almacen/img/solariaLog o.gif"/> <shortcut online="true"> <desktop/> <menu submenu="Solaria Energía y Medio Ambiente"/> </shortcut> - 92 - MEMORIA <offline-allowed/> </information> <update-check="timeout" policy="always"/> <security> <all-permissions/> </security> <resources> <j2se version="1.4+"/> <jar href="http://192.168.1.34:8088/solariaDesarrollo/almacen/signed/RXTXcom m.jar"/> <jar href="http://192.168.1.34:8088/solariaDesarrollo/almacen/signed/solaria -ubicarpallets.jar" main="true"/> href="http://192.168.1.34:8088/solariaDesarrollo/almacen/signed/swinglayout-1.0.jar"/> <jar href="http://192.168.1.34:8088/solariaDesarrollo/almacen/signed/looks2.1.4.jar"/> <property name="java.util.logging.config.file" value="D:/Solaria/resources"/> <property name="solaria.resources" value="D:/Solaria/resources"/> </resources> <application-desc main-class="principal.AplicacionAplicacionUbicarPallets"/> </jnlp> - 93 - MEMORIA - 94 - MEMORIA 9 ANEXO C 9.1 Manual aplicación clasificación y embalaje APLICACIÓN CLASIFICACIÓN Y EMBALAJE TÉRMICA MANUAL DE USUARIO 1. Objetivo Aplicación para la clasificación en la línea de colectores solares térmicos, embalaje y consulta de información de producto terminado. 2. Uso de la aplicación • Identificación Para acceder a la aplicación se debe introducir el nombre de usuario proporcionado por la empresa y su contraseña personal. - 95 - MEMORIA • Clasificación y embalaje Una vez dentro de la aplicación, la pantalla principal mostrará las opciones de clasificado y embalado del producto terminado. Se procede a la lectura del código de barras del colector con el lector. Una vez aparece el código leído en la pantalla se seleccionan las características a guardar y se guarda con el botón asignar. - 96 - MEMORIA Al guardar los datos aparece en el recuadro señalado arriba el número de pallet que se le ha asociado y en el que debe introducirse el colector. Si el pallet llega a su capacidad máxima, se cerrará y se mostrará el aviso de pallet completado. - 97 - MEMORIA En el caso de introducir un código de colector que ya exista en la base de datos aparecerá el siguiente mensaje de error. • Información de colector Para consultar las características guardadas de un colector específico se selecciona la pestaña de información de colector y mediante el teclado se introduce el código del colector en la casilla editable señalada. Con el botón recuperar aparecerá toda la información del colector y se activará el botón desasignar y la casilla para el cambio de pallet. - 98 - MEMORIA Si el código del colector no existe en la base de datos aparecerá el siguiente mensaje de error. • Desasignación de colector El borrado de un colector de la base de datos se realiza con el botón desasignar. Una vez desasignado el colector, todos los datos referentes a este serán borrados. • Cambio de pallet El botón de cambio de pallet se activará en el momento que se introduzca un número de pallet en la casilla de pallet de destino. - 99 - MEMORIA Si el código del pallet no es válido para el cambio del colector aparecerá el siguiente mensaje de error. • Información de pallet Para consultar las características guardadas de un pallet específico se selecciona la pestaña de información de pallet y mediante el teclado se introduce el código del colector en la casilla editable señalada. - 100 - MEMORIA Con el botón recuperar aparecerá toda la información del pallet y se activará los botones de impresión de etiquetas. Si el pallet no está cerrado aparecerá el siguiente mensaje y se activará el botón que permitirá cerrar el pallet. Mientras el pallet permanezca abierto no se permitirá imprimir etiquetas del pallet. - 101 - MEMORIA - 102 - MEMORIA 9.2 Manual aplicación de almacén APLICACIÓN DE ALMACËN MANUAL DE USUARIO 1. Objetivo Aplicación para la organización del producto terminado en el almacén y consulta de dicha organización. 2. Uso de la aplicación • Identificación Para acceder a la aplicación se debe introducir el nombre de usuario proporcionado por la empresa y su contraseña personal. - 103 - MEMORIA • Ubicación de pallets Una vez dentro de la aplicación, la pantalla principal mostrará la pantalla de ubicación d epallet en el almacén y esperará a la lectura mediante lector de códigos del número de pallet a ubicar. Se procede a la lectura del código de barras del colector con el lector. Una vez aparece el código leído en la pantalla se seleccionan las características a guardar y se guarda con el botón asignar. Una vez leído un código de pallet correcto y existente en la base de datos, la aplicación mostrará sus características y permanecerá a la espera de la lectura de un código de ubicación válido. - 104 - MEMORIA Leído el código de ubicación se activará el botón ubicar que permitirá guardar los datos del almacén. - 105 - MEMORIA En el caso de que el pallet ya tenga asignada una ubicación del pallet la aplicación mostrará el siguiente mensaje y dará la opción a cambiar de ubicación de la misma manera que la ubicación de un pallet sin ubicación. - 106 - MEMORIA • Consulta Para consultar información de un pallet de producto terminado dentro del almacén se selecciona la pestaña de consultas y mediante teclado se introduce el número de pallet en la casilla señalada. El botón consultar desplegará la información del pallet y activará el botón de consulta de movimientos. - 107 - MEMORIA • Gráficos En la parte derecha de la pestaña de consultas se presentan los tres tipos de gráficos del almacén posibles: - General: aparece seleccionada por defecto. Mostrará un gráfico del almacén mostrando su ocupación total. - Ubicación: se debe introducir un código de una ubicación existente. El gráfico mostrará la localización exacta en el gráfico de esa ubicación. - Modelo/color: el gráfico del almacén mostrará la localización de los pallets que tengan las características seleccionadas mediante estas dos opciones. Se puede seleccionar el tanto una como las dos opciones a la vez para mayor filtrado de datos. - 108 - MEMORIA Leyenda del gráfico: - Verde: ningún pallet en la ubicación. Libre para poder ubicar otros pallets. - Amarillo: un pallet en un espacio de dos pallets. Tan solo un hueco libre para ubicar. - Rojo: ubicación ocupada en su totalidad. - 109 -