Gestión de catalogación/embalado de colectores solares térmicos y

Anuncio
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 -
Descargar