ESCOLA TÈCNICA SUPERIOR D’ENGINYERIA ELECTRÒNICA I INFORMÀTICA LA SALLE

PROJECTE FI DE CARRERA

ENGINYERIA EN INFORMÀTICA

Diseño e Implementación de una Aplicación web nombrada CooBarDistribution

ALUMNE PROFESSOR PONENT Gabriel Ginés Puig Marc Campmany Llorens

ACTA DE L'EXAMEN DEL PROJECTE FI DE CARRERA

Reunit el Tribunal qualificador en el dia de la data, l'alumne Gabriel Ginés Puig va exposar el seu Projecte de Fi de Carrera, el qual va tractar sobre el tema següent: Diseño e Implementación de una Aplicación web nombrada CooBarDistribution

Acabada l'exposició i contestades per part de l'alumne les objeccions formulades pels Srs. membres del tribunal, aquest valorà l'esmentat Projecte amb la qualificació de

Barcelona,

VOCAL DEL TRIBUNAL VOCAL DEL TRIBUNAL

PRESIDENT DEL TRIBUNAL

Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

4 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

AGRADECIMIENTOS

Quiero agradecer este proyecto final de carrera a mi familia, gracias al apoyo y ayuda de la cual he podido llegar hasta aquí.

Quiero agradecer este PFC a mis amigos de la universidad, que me han acompañado durante todos estos años en este largo viaje.

Quiero agradecer este PFC al amigo incondicional que siempre está allí.

Quiero agradecer este PFC al campeón que me ha dado su apoyo durante la madrugada del día de su cumpleaños.

Quiero agradecer este PFC a mis amigos que estando cerca o no, siempre han creído en mí.

Quiero agradecer este PFC a todas las personas que a lo largo de estos años han ido pasando por mi lado.

5 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

6 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

ABSTRACTO

En el marco de la restauración, actualmente existen unas grandes desventajas entre las grandes empresas de restauración y los establecimientos cotidianos o minoristas. Es por ello que se propone el desarrollo de una aplicación que ayude a solucionar dichas desventajas y poder garantizar la viabilidad y sostenibilidad de este pequeño gremio de empresas de restauración. Este sistema, gestionará el proceso de suministración entre los proveedores y las empresas de dicho gremio.

7 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

8 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

RESUMEN

CooBarDistribution quiere dar una solución a los actuales problemas que se encuentran hoy en día en el ámbito de la restauración, más concretamente a los establecimientos minoristas o cotidianos. El objetivo empresarial es la equiparación de los costes de abastecimiento entre las grandes empresas de restauración y los minoristas.

Para conseguir este objetivo, los proveedores han de reducir los importes de sus productos de cara a los establecimientos que se van a gestionar. Para ello, CooBarDistribution quiere garantizar un gran volumen de demanda, equiparable al volumen de demanda de las grandes cadenas, para conseguir de esta manera igualdad de precios o si es posible, precios mejores. Otra ventaja para los proveedores, en referencia a los costes de transporte, es ofrecer la posibilidad de centralizar todo el trasporte de productos a centrales de almacén, donde se gestionará el abastecimiento a los establecimientos.

Por ello la aplicación les permite, desde cualquier lugar con conexión a internet, acceder a su cuenta de usuario; y les permite realizar al instante todas las acciones pertinentes al rol que ejercen. Más allá también podrán ver sus datos personales, suministros realizados, suministros pendientes,….

Uno de los puntos más importantes de la aplicación es la gestión del flujo de suministros entre los usuarios de la aplicación: la creación de productos nuevos, la generación de pedidos, los listados de pedidos a suministrar, la publicación del coste, y la aprobación de todas las partes implicadas en dicha publicación.

Para la gestión del proyecto se usan diferentes metodologías de desarrollo informático. Para la toma de especificaciones se emplea el documento “ERS” bajo el estándar “IEEE Std 830-1998 Recommended Practice for Requirements Specifications” *IEEE830+, para el diseño de la aplicación se emplea el lenguaje modelado Unified Modeling Language (UML), para la implantación del sistema se emplea la metodología de trabajo eXtrem Programing, entre otros estándares. El sistema deberá también cumplir la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal, (LOPD).

La implementación de esta aplicación se ha separado en tres capas lógicas: interfaz, negocio y datos. Gracias a esta separación, se ha conseguido una modularización independiente, que no necesita de un rediseño de toda la aplicación para cualquier cambio que se haya de realizar.

Este proyecto ha pasado por varias fases:

1. Fase de análisis de requerimientos 2. Fase de análisis orientado a objetos 3. Fase de diseño orientado a objetos 4. Fase de implementación y de test 5. Fase de despliegue

9 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

10 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Índice

AGRADECIMIENTOS...... 5 ABSTRACTO ...... 7 RESUMEN ...... 9 CAPÍTULO 1. ÁNALISIS DE REQUERIMIENTOS ...... 21 1.1. Introducción ...... 21 1.1.1. Objetivo ...... 21 1.1.2. Alcance ...... 22 1.1.3. Definiciones, acrónimos y abreviaturas ...... 22 1.1.4. Estructura del documento ...... 23 1.2. Descripción general ...... 24 1.2.1. Perspectiva del Producto ...... 24 1.2.1.1. Interfaces de sistema ...... 24 1.2.1.2. Interfaces del usuario ...... 24 1.2.1.3. Interfaces del hardware ...... 24 1.2.1.4. Interfaces del software...... 25 1.2.1.5. Interfaces de comunicaciones ...... 25 1.2.2. Funciones del producto ...... 25 1.2.3. Restricciones/Limitaciones ...... 26 1.2.3.1. Las políticas reguladoras ...... 26 1.2.3.2. Las funciones de la auditoria ...... 26 1.2.3.3. Las funciones de control...... 26 1.2.3.4. Los requisitos del lenguaje ...... 27 1.2.3.5. Los protocolos señalados ...... 27 1.2.3.6. La seguridad y consideraciones de seguridad ...... 27 1.2.4. Suposiciones y dependencias ...... 27 1.3. Requisitos Específicos ...... 28 1.3.1. Requerimientos funcionales...... 28 1.3.2. Usabilidad ...... 32 1.3.3. Fiabilidad ...... 32 1.3.4. Rendimientos ...... 32 1.3.5. Soporte ...... 32 1.3.6. Funcionalidades Globales ...... 33 1.3.6.1. UK-01 Proveedor ...... 33

11 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.2. UK-02 Distribuidor ...... 42 1.3.6.3. UK-03 Administrador ...... 49 1.3.6.4. Funcionalidades comunes ...... 58 1.3.6.5. Flujos Globales ...... 62 CAPÍTULO 2. ANÁLISIS ORIENTADO A OBJETOS ...... 65 2.1. Acceso a la Aplicación ...... 65 2.1.1. REQ20. Logarse en línea ...... 65 2.1.2. REQ21. Desconectarse en línea ...... 66 2.1.3. REQ22. Cambiar contraseña ...... 66 2.2. Dar de alta clientes ...... 67 2.2.1. REQ13. Dar de alta a un distribuidor ...... 68 2.2.2. REQ14. Dar de alta a un proveedor ...... 69 2.2.3. REQ18. Gestión de todos los usuarios asociados al sistema ...... 69 2.2.4. REQ15. Gestionar el acuerdo con la empresa ...... 70 2.2.5. REQ06. Aceptación y consulta del acuerdo con la empresa ...... 70 2.3. Productos ...... 71 2.3.1. REQ01. Introducir los productos para suministrar ...... 71 2.3.2. REQ02. Actualizar precios ...... 72 2.3.3. REQ16. Controlar la actualización de los productos de los proveedores ...... 72 2.3.4. REQ12. Consulta de productos ...... 73 2.4. Suministros ...... 74 2.4.1. REQ08. Hacer pedidos de suministros ...... 75 2.4.2. REQ03. Recibir peticiones de suministro ...... 75 2.5. Suministros Realizados ...... 76 2.5.1. REQ04. Publicación y control de los suministros realizados ...... 76 2.5.2. REQ09. Aceptación y control de los suministros realizados ...... 77 2.5.3. REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor ...... 77 2.6. Noticias ...... 78 2.6.1. REQ19. Creación de noticias para distribuidores y/o proveedores ...... 78 2.6.2. REQ05. Consulta de noticias...... 79 2.6.3. REQ10. Consulta de noticias...... 79 2.7. Consultas ...... 80 2.7.1. REQ07. Consulta de los distribuidores que ha suministrado ...... 80

12 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.7.2. REQ11. Consulta de los proveedores que le han suministrado ...... 81 CAPÍTULO 3. DISEÑO ORIENTADO A OBJETOS ...... 83 3.1. Diseño de la arquitectura ...... 83 3.1.1. Diagrama de Despliegue...... 87 3.2. Diseño por capas ...... 88 3.2.1. Capa de Interfaz ...... 89 3.2.1.1. Pantalla principal UK-01 Proveedor ...... 91 3.2.1.2. REQ01. Introducir los productos para suministrar ...... 92 3.2.1.3. REQ02. Actualizar precios ...... 93 3.2.1.4. REQ03. Recibir peticiones de suministro ...... 94 3.2.1.5. REQ04. Publicación y control de los suministros realizados ...... 95 3.2.1.6. REQ05. Consulta de noticias ...... 96 3.2.1.7. REQ06. Aceptación y consulta del acuerdo con la empresa ...... 97 3.2.1.8. REQ07. Consulta de los distribuidores que ha suministrado ...... 98 3.2.1.9. Diagrama de clases de la interfaz del proveedor ...... 99 3.2.1.10. Pantalla principal UK-02 Distribuidor ...... 100 3.2.1.11. REQ08. Hacer pedidos de suministros ...... 101 3.2.1.12. REQ09. Aceptación y control de los suministros realizados ...... 102 3.2.1.13. REQ10. Consulta de noticias ...... 103 3.2.1.14. REQ11. Consulta de los proveedores que le han suministrado ...... 104 3.2.1.15. REQ12. Consulta de productos ...... 106 3.2.1.16. Diagrama de clases de la interfaz del distribuidor ...... 108 3.2.1.17. Pantalla principal UK-03 Administrador ...... 109 3.2.1.18. REQ13. Dar de alta a un distribuidor ...... 110 3.2.1.19. REQ14. Dar de alta a un proveedor ...... 112 3.2.1.20. REQ15. Gestionar el acuerdo con la empresa ...... 113 3.2.1.21. REQ16. Controlar la actualización de los productos de los proveedores . 113 3.2.1.22. REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor ...... 114 3.2.1.23. REQ18. Gestión de todos los usuarios asociados al sistema ...... 115 3.2.1.24. REQ19. Creación de noticias para distribuidores y/o proveedores ...... 117 3.2.1.25. Diagrama de clases de la interfaz del administrador ...... 118 3.2.1.26. REQ20. Logarse en línea ...... 119 3.2.1.27. REQ21. Desconectarse en línea ...... 119

13 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.28. REQ22. Cambiar contraseña ...... 120 3.2.1.29. Mantenimiento ...... 121 3.2.2. Capa de Negocio ...... 123 3.2.2.1. Diagrama de clases de la capa de Negocio ...... 125 3.2.3. Capa de Datos...... 126 3.2.3.1. Esquema Global de las relaciones entre las tablas de la base de datos ... 127 3.2.3.2. Esquema de relaciones de usuarios ...... 129 3.2.3.3. Esquema de relaciones de las tablas de mantenimiento ...... 130 3.2.3.4. Esquema de relaciones de las tablas de noticias ...... 130 3.2.3.5. Esquema de relaciones de las tablas de Productos ...... 131 3.2.3.6. Esquema de relaciones de las tablas de Suministros ...... 132 3.2.3.7. Esquema de relaciones de las tablas de Publicación ...... 133 3.2.3.8. Diagrama de las clases de la capa de datos ...... 133 3.3. Selección de Tecnologías ...... 134 CAPÍTULO 4. IMPLEMENTACIÓN ...... 135 4.1. Programación por capas ...... 135 4.1.1. Consideraciones generales ...... 135 4.1.2. Capas o niveles ...... 135 4.2. Organización de la solución ...... 136 4.3. Metodología de Trabajo ...... 138 4.3.1. Que es XP? ...... 138 4.3.2. Porque hemos de usar XP?...... 138 4.3.3. Que aporta XP?...... 138 4.3.4. Flujo de desarrollo de la metodología XP...... 139 4.3.5. Que partes del XP se han usado para el desarrollo del sistema ...... 140 4.4. Desarrollo del algoritmo de búsqueda de la Lista de la Compra ...... 142 CAPÍTULO 5. PRUEBAS...... 145 5.1. Pruebas ...... 145 5.1.1. Test de Calidad ...... 145 5.1.2. Caja Blanca ...... 146 5.1.3. Caja Negra ...... 149 CAPÍTULO 6. PLANIFICACIÓN Y COSTES DEL PROYECTO ...... 153 6.1. Planificación del proyecto ...... 153 6.1.1. Diagrama de Gantt ...... 153

14 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

6.1.2. Tiempo de realización del proyecto ...... 154 CAPÍTULO 7. CONCLUSIONES Y LÍNEAS DE FUTURO ...... 157 7.1. Conclusiones...... 157 7.1.1. Diseño ...... 157 7.1.2. Enfoque técnico ...... 157 7.1.3. Metodología de trabajo ...... 158 7.1.4. Cumplimiento de los objetivos ...... 158 7.2. Líneas de futuro ...... 159 7.2.1. Multilenguaje ...... 159 7.2.2. Multiplataforma ...... 159 7.2.3. Exportación de Informes ...... 159 7.2.4. Cargas masivas ...... 159 7.2.5. Estudios ...... 159 BIBLIOGRAFÍA ...... 161

15 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figuras

Figura 1. Boceto ...... 24 Figura 2. Cliente-Servidor ...... 83 Figura 3. P2P ...... 85 Figura 4. Comparativa Cliente-Servidor y P2P ...... 86 Figura 5. Diseño por Capas...... 88 Figura 6. Plantilla de página principal UK-01 Proveedor ...... 91 Figura 7. Lista de Productos ...... 92 Figura 8. Insertar nuevo Producto ...... 92 Figura 9. Actualizar precios ...... 93 Figura 10. Recibir peticiones de suministro ...... 94 Figura 11. Detalle del suministro ...... 94 Figura 12. Detalle del Producto ...... 94 Figura 13. Declaraciones Pendientes a ser Publicados ...... 95 Figura 14. Publicación y control de los suministros realizados ...... 95 Figura 15. Publicación y control de los suministros realizados ...... 96 Figura 16. Listado de Noticias ...... 96 Figura 17. Noticia ...... 96 Figura 18. Aceptación y consulta del acuerdo con la empresa ...... 97 Figura 19. Listado de los establecimientos que ha suministrado ...... 98 Figura 20. Establecimiento que ha suministrado ...... 98 Figura 21. Plantilla de página principal UK-02 Distribuidor ...... 100 Figura 22. Listado de suministros ...... 101 Figura 23. Detalle del Suministro ...... 101 Figura 24. Seleccionar un nuevo producto ...... 101 Figura 25. Declaraciones pendientes ...... 102 Figura 26. Declaraciones Aceptadas ...... 102 Figura 27. Detalle de la Declaración ...... 102 Figura 28. Listado de Noticias ...... 103 Figura 29. Noticia ...... 103 Figura 30. Lista de proveedores ...... 104 Figura 31. Información del Proveedor ...... 104 Figura 32. Lista de Productos ...... 105 Figura 33. Información del Producto ...... 105 Figura 34. Lista de Productos ...... 106 Figura 35. Información del Producto ...... 106 Figura 36. Lista de la compra ...... 107 Figura 37. Resultado de la lista de la compra ...... 107 Figura 38. Pantalla principal UK-03 Administrador ...... 109 Figura 39. Listado de Distribuidores ...... 110 Figura 40. Información del Distribuidores ...... 110 Figura 41. Listado Establecimientos del Distribuidor ...... 111 Figura 42. Información del Establecimiento ...... 111 Figura 43. Listado de proveedores ...... 112

16 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figura 44. Información del Proveedor ...... 112 Figura 45. Creación Acuerdo ...... 113 Figura 46. Aceptación de nuevos Productos ...... 113 Figura 47. Declaraciones Saldadas ...... 114 Figura 48. Detalle de la Declaración ...... 114 Figura 49. Listado de administradores ...... 115 Figura 50. Información del administrador ...... 115 Figura 51. Listado de los usuarios ...... 116 Figura 52. Información del usuario ...... 116 Figura 53. Listado de Noticias ...... 117 Figura 54. Creación de una Noticia ...... 117 Figura 55. Logarse ...... 119 Figura 56. Desconectarse ...... 119 Figura 57. Cambiar Contraseña ...... 120 Figura 58. Mantenimiento Países ...... 121 Figura 59. Mantenimiento Provincias ...... 121 Figura 60. Mantenimiento Tipos ...... 122 Figura 61. Mantenimiento Especialidades ...... 122 Figura 62. Programación por Capas...... 135 Figura 63. Distribución del Proyecto ...... 136 Figura 64. Distribución de las Clases del Proyecto ...... 137 Figura 65. Flujo de desarrollo de la metodología XP...... 139 Figura 66. Iteraciones del REQ13 y 14 de la Fase1 ...... 140 Figura 67. Fases del proyecto ...... 141 Figura 68. Coste Temporal Fases del proyecto ...... 141 Figura 69. Best-First Search Primer Despliegue ...... 142 Figura 70. Best-First Search Segundo Despliegue ...... 143 Figura 71. Best-First Search Tercer Despliegue ...... 143 Figura 72. Best-First Search Resultado ...... 143 Figura 73. Diagrama de Gantt. Fases del proyecto ...... 153

Tablas

Tabla 1. CU-REQ01. Introducir los productos a suministrar ...... 34 Tabla 2. CU-REQ02. Actualizar precios ...... 35 Tabla 3. CU-REQ03. Recibir peticiones de suministro ...... 37 Tabla 4. CU-REQ04. Publicación y control de los suministros realizados ...... 38 Tabla 5. CU-REQ05. Consulta de noticias ...... 39 Tabla 6. CU-REQ06. Aceptación y consulta del acuerdo con la empresa ...... 40 Tabla 7. CU-REQ07. Consulta de los distribuidores que ha suministrado ...... 41 Tabla 8. CU-REQ08. Hacer pedidos de suministros ...... 43 Tabla 9. CU-REQ09. Aceptación y control de los suministros realizados ...... 45 Tabla 10. CU-REQ10. Consulta de noticias ...... 46 Tabla 11. CU-REQ11. Consulta de los proveedores que le han suministrado ...... 47 Tabla 12. CU-REQ12. Consulta de productos ...... 48

17 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Tabla 13. CU-REQ13. Dar de alta a un distribuidor ...... 50 Tabla 14. CU-REQ14. Dar de alta a un proveedor ...... 51 Tabla 15. CU-REQ15. Gestionar el acuerdo con la empresa ...... 52 Tabla 16. CU-REQ16. Controlar la actualización de los productos de los proveedores ...... 54 Tabla 17. CU-REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor ...... 55 Tabla 18. CU-REQ18. Gestión de todos los usuarios asociados al sistema ...... 56 Tabla 19. CU-REQ19. Creación de noticias para distribuidores y/o proveedores ...... 57 Tabla 20. CU-REQ20. Logarse en línea ...... 59 Tabla 21. CU-REQ21. Desconectarse en línea ...... 60 Tabla 22. CU-REQ22. Cambiar contraseña ...... 61 Tabla 23. Test de Calidad ...... 145 Tabla 24. Pruebas Caja Blanca ...... 148 Tabla 25. Pruebas de Caja Negra ...... 151 Tabla 26. Tiempo real de realización del proyecto en horas ...... 154

Casos de Uso

Caso de Uso 1. UK-01 Proveedor ...... 33 Caso de Uso 2. UK-02 Distribuidor ...... 42 Caso de Uso 3. UK-03 Administrador ...... 49 Caso de Uso 4. Funcionalidades comunes ...... 58

Diagramas de Actividad

Diagrama de Actividad 1. REQ01. Introducir los productos a suministrar ...... 34 Diagrama de Actividad 2. REQ02. Actualizar precios ...... 36 Diagrama de Actividad 3. REQ03. Recibir peticiones de suministro ...... 37 Diagrama de Actividad 4. REQ04. Publicación y control de los suministros realizados ...... 38 Diagrama de Actividad 5. REQ05. Consulta de noticias ...... 39 Diagrama de Actividad 6. REQ06. Aceptación y consulta del acuerdo con la empresa ...... 40 Diagrama de Actividad 7. REQ07. Consulta de los distribuidores que ha suministrado ...... 41 Diagrama de Actividad 8. REQ08. Hacer pedidos de suministros ...... 44 Diagrama de Actividad 9. REQ09. Aceptación y control de los suministros realizados ...... 45 Diagrama de Actividad 10. REQ10. Consulta de noticias ...... 46 Diagrama de Actividad 11. REQ11. Consulta de los proveedores que le han suministrado ...... 47 Diagrama de Actividad 12. REQ12. Consulta de productos ...... 48 Diagrama de Actividad 13. REQ13. Dar de alta a un distribuidor ...... 50 Diagrama de Actividad 14. REQ14. Dar de alta a un proveedor ...... 51 Diagrama de Actividad 15. REQ15. Gestionar el acuerdo con la empresa ...... 53 Diagrama de Actividad 16. REQ16. Controlar la actualización de los productos de los proveedores ...... 54 Diagrama de Actividad 17. REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor ...... 55 Diagrama de Actividad 18. REQ18. Gestión de todos los usuarios asociados al sistema ...... 56

18 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Diagrama de Actividad 19. REQ19. Creación de noticias para distribuidores y/o proveedores . 57 Diagrama de Actividad 20. REQ20. Logarse en línea ...... 59 Diagrama de Actividad 21. REQ21. Desconectarse en línea ...... 60 Diagrama de Actividad 22. REQ22. Cambiar contraseña ...... 61 Diagrama de Actividad 23. Noticias ...... 62 Diagrama de Actividad 24. Pedidos...... 63 Diagrama de Actividad 25. Suministros Realizados ...... 63 Diagrama de Actividad 26. Acuerdo ...... 64 Diagrama de Actividad 27. Flujo de estado de un producto ...... 64

Diagramas de Secuencia

Diagrama de Secuencia 1. Logarse en línea ...... 65 Diagrama de Secuencia 2. Desconectarse en línea ...... 66 Diagrama de Secuencia 3. Cambiar contraseña ...... 66 Diagrama de Secuencia 4. Dar de alta a un distribuidor ...... 68 Diagrama de Secuencia 5. Dar de alta a un proveedor ...... 69 Diagrama de Secuencia 6. Gestión de todos los usuarios ...... 69 Diagrama de Secuencia 7. Gestionar el acuerdo con la empresa ...... 70 Diagrama de Secuencia 8. Aceptación y consulta del acuerdo con la empresa ...... 70 Diagrama de Secuencia 9. Introducir los productos para suministrar ...... 71 Diagrama de Secuencia 10. Actualizar precios ...... 72 Diagrama de Secuencia 11. Controlar la actualización de los productos de los proveedores .... 72 Diagrama de Secuencia 12. Consulta de productos ...... 73 Diagrama de Secuencia 13. Hacer pedidos de suministros ...... 75 Diagrama de Secuencia 14. Recibir peticiones de suministro...... 75 Diagrama de Secuencia 15. Publicación y control de los suministros realizados ...... 76 Diagrama de Secuencia 16. Aceptación y control de los suministros realizados ...... 77 Diagrama de Secuencia 17. Aceptación y control de los suministros realizados entre proveedor y distribuidor ...... 77 Diagrama de Secuencia 18. Creación de noticias para distribuidores y/o proveedores ...... 78 Diagrama de Secuencia 19. Consulta de noticias ...... 79 Diagrama de Secuencia 20. Consulta de noticias ...... 79 Diagrama de Secuencia 21. Consulta de los distribuidores que ha suministrado ...... 80 Diagrama de Secuencia 22. Consulta de los proveedores que le han suministrado ...... 81

Diagrama de Despliegue

Diagrama de Despliegue 1. Diagrama de Despliegue Principal ...... 87

19 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Diagramas de Clases

Diagrama de Clases 1. Acceso a la aplicación ...... 65 Diagrama de Clases 2. Dar de alta clientes ...... 67 Diagrama de Clases 3. Productos ...... 71 Diagrama de Clases 4. Suministros ...... 74 Diagrama de Clases 5. Suministros Realizados ...... 76 Diagrama de Clases 6. Noticias ...... 78 Diagrama de Clases 7. Consultas ...... 80 Diagrama de Clases 8. Diagrama de clases de la interfaz del proveedor ...... 99 Diagrama de Clases 9. Diagrama de clases de la interfaz del distribuidor ...... 108 Diagrama de Clases 10. Diagrama de clases de la interfaz del administrador ...... 118 Diagrama de Clases 11. Global ...... 125 Diagrama de Clases 12. Acceso a la Base de Datos ...... 133

Tablas Base de Datos

Tablas BD 1. Esquema global de la Base de Datos ...... 128 Tablas BD 2. Tablas de Usuarios ...... 129 Tablas BD 3. Tablas de Mantenimiento ...... 130 Tablas BD 4. Tablas de Noticias ...... 130 Tablas BD 5. Tablas de Productos ...... 131 Tablas BD 6. Tablas de Suministros ...... 132 Tablas BD 7. Tablas de Publicación ...... 133

Gráficos

Gráfico 1. Coste Temporal de realización del proyecto en porcentaje ...... 155 Gráfico 2. Coste Temporal de la Implementación y Pruebas ...... 155 Gráfico 3. Coste Temporal de realización del proyecto en porcentaje desglosado...... 156

20 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

CAPÍTULO 1. ÁNALISIS DE REQUERIMIENTOS

1.1. Introducción

Este capítulo tiene como propósito especificar los requerimientos funcionales y no funcionales del sistema a desarrollar, así como su alcance. Se ha escrito basándose en las directrices del estándar “IEEE Std 830-1998 Recommended Practice for Software Requirements Specifications” *IEEE830+.

El objeto de este capítulo es detallar las especificaciones, de manera clara y precisa, de todas las funcionalidades y restricciones del sistema que se desea construir. Este capítulo será el canal de comunicación entre ambas partes, participando en su confección miembros de cada parte. Una vez aprobado, servirá al desarrollador como base para la construcción del nuevo sistema.

1.1.1. Objetivo

Los diferentes objetivos de este proyecto, se pueden dividir en dos partes:

1. Objetivo económico, vinculado a la supervivencia de los establecimientos pequeños o cotidianos del sector de la restauración. 2. Objetivos técnicos para garantizar la viabilidad del proyecto como su evolución e integración.

Objetivo económico:

 Gestionar los diferentes usuarios del sistema.  Generar, gestionar y controlar los pedidos de suministro a los proveedores.  Asegurar un volumen elevado de pedidos.  Lograr un descenso en los gastos de suministración.

Objetivos técnicos:

 Crear un software altamente escalable y robusto.  Que sea usable por los usuarios.  Uso de tecnologías vanguardistas.  Garantizar la máxima alineación a los requerimientos.

21 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.1.2. Alcance

El sistema a construir deberá ser capaz de gestionar y controlar el suministro de productos entre los proveedores y los distribuidores en el sector de la restauración. Entre las acciones más remarcables se destacarían: dar de alta productos, generación de pedidos, muestreo de listados de pedidos, publicación de datos de facturación y la aprobación de dichas publicaciones.

Además deberá contar con un sistema independiente para los administradores. Este advierte al administrador de todos los sucesos y muestra la información global de los suministros, de los proveedores y de los distribuidores asociados a la aplicación. De esta manera, los administradores llevan un control total sobre el sistema.

Asimismo, tanto los distribuidores como los proveedores podrán gestionar toda la información de sus datos y los suministros que han realizado.

Las fases en las cuales se desarrolla este nuevo sistema son: (a) la toma de requisitos de especificaciones, (b) el diseño del sistema, (c) la implementación del sistema, (d) las pruebas y su aceptación, y (e) su despliegue.

El sistema también empleará una metodología de proyectos que permitirá el uso de estándares con el objetivo de elaborar un proyecto con normativas vigentes, formalismos y plataformas actuales. Entre estas metodologías se destacan: el documento “ERS” bajo el estándar “IEEE Std 830-1998 Recommended Practice for Software Requirements Specifications” *IEEE830+, el lenguaje modelado Unified Modeling Language (UML), el estándar SQL:2003 “ISO/IEC 9075:2003” y la metodología de trabajo eXtrem Programing.

1.1.3. Definiciones, acrónimos y abreviaturas

 CooBarDistribution: Nombre de la empresa y de la aplicación para el cual se va a realizar el sistema gestor.  Distribuidor: Empresa dedicada a la distribución de productos comerciales. En nuestro ámbito serán bares, hoteles, restaurantes,…  Proveedor: Empresa que provee o abastece de todo lo necesario a los distribuidores. En nuestro caso serán proveedores del ámbito de la restauración: proveedores de bebidas, productos cárnicos, verduras,…  Suministro: Es la acción de abastecer a los distribuidores con los productos que ofrecen los proveedores asociados a CooBarDistribution.  Declaración: Publicación de la factura por parte del proveedor una vez suministrado el pedido.  Administrador: Responsable de la gestión y control de los suministros entre los asociados al sistema.  Central: Almacén donde pasarán todos los suministros de forma centralizada.  UK: Rol de usuario en el sistema.  REQ: Requisito de sistema.  Garbage Collector (GC): Es una utilidad del CLR del Framework de .NET que libera la memoria dinámica solicitada por el sistema.

22 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.1.4. Estructura del documento

El Proyecto Final de Carrera se estructura en 7 capítulos.

 El capítulo 1, análisis de los requerimientos, tiene como objetivo especificar los requerimientos funcionales y no funcionales del sistema a desarrollar así como su alcance.  El capítulo 2, análisis orientado a objetos, tiene como meta realizar el análisis de todos los requisitos requeridos por el cliente.  El capítulo 3, diseño orientado a objetos, tiene como finalidad detallar todo el diseño del sistema, cumpliendo las especificaciones acordadas; tanto la parte de interfaz, como la capa de negocio y la base de datos.  El capítulo 4, implementación, tiene como propósito realizar la aplicación.  El capítulo 5, pruebas, tiene como objetivo verificar: la validez, la fiabilidad y la calidad del sistema desarrollado.  El capítulo 6, planificación y costes del proyecto, tiene como finalidad realizar un estudio del coste que ha provocado el desarrollo del sistema.  El capítulo 7, conclusiones y líneas de futuro, tiene como propósito exponer el conocimiento, el aprendizaje, y las experiencias adquiridas a lo largo del proyecto; como la continuidad del mismo.

23 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.2. Descripción general

El sistema de gestión y control de suministros interactúa con los usuarios, proveedores y distribuidores, bajo la supervisión de la administración, entendiéndose por usuario a todo actor que interactúe con el software.

1.2.1. Perspectiva del Producto

1.2.1.1. Interfaces de sistema

La interfaz visual será en formato web, donde estará completamente adaptada al navegador web FireFox para esta fase inicial.

1.2.1.2. Interfaces del usuario

La estructura principal de la interfaz del usuario, constará de un menú de acciones en el lado izquierdo de la pantalla, que variará según el rol de usuario. En la cabecera están ubicados el logo de la empresa y una serie de acciones comunes para todos los usuarios. Y por último, en el contenedor, se podrá observar la información generada por las acciones seleccionadas. Dicho apartado ofrecerá la posibilidad de poder plasmar aquellas funcionalidades que requieran de una acción o decisión por parte del usuario.

Figura 1. Boceto

En el sistema se diferencian tres tipos de usuarios: los proveedores, los distribuidores y los administradores. Cada uno de ellos tendrá una accesibilidad a la información diferenciada. En el apartado 1.2.2 Funciones del Producto se detallará las acciones de cada uno.

1.2.1.3. Interfaces del hardware

La aplicación se montará sobre un servidor web. Los accesos remotos al servidor se realizan mediante dispositivos de comunicación con salida a internet.

24 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.2.1.4. Interfaces del software

La aplicación utilizará un sistema gestor de base de datos y un servidor web que albergará toda la aplicación y donde se conectarán los usuarios.

1.2.1.5. Interfaces de comunicaciones

El proyecto deberá tener acceso vía internet, usando el protocolo de conexión TCP/IP para la comunicación entre los terminales (clientes) y el servidor. Para el acceso a las páginas webs se utilizará http.

1.2.2. Funciones del producto

A continuación se expondrán todos los roles del sistema que de ahora en adelante describiremos mediante la abreviación UK y las acciones especificadas para cada uno de ellos o requisitos, que a partir de este momento indicaremos con la abreviatura REQ.

UK-01 Proveedor

REQ01. Introducir los productos a suministrar

REQ02. Actualizar precios

REQ03. Recibir peticiones de suministro

REQ04. Publicación y control de los suministros realizados

REQ05. Consulta de noticias

REQ06. Aceptación y consulta del acuerdo con la empresa

REQ07. Consulta de los distribuidores que ha suministrado

UK-02 Distribuidor

REQ08. Hacer pedidos de suministros

REQ09. Aceptación y control de los suministros realizados

REQ10. Consulta de noticias

REQ11. Consulta de los proveedores que le han suministrado

REQ12. Consulta de productos

UK-03 Administrador

REQ13. Dar de alta a un distribuidor

25 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

REQ14. Dar de alta a un proveedor

REQ15. Gestionar el acuerdo con la empresa

REQ16. Controlar la actualización de los productos de los proveedores

REQ17. Aceptación y control de los suministros realizados entre Proveedor y Distribuidor

REQ18. Gestión de todos los Usuarios asociados al sistema

REQ19. Creación de noticias para distribuidores y/o proveedores

Funcionalidades comunes

REQ20. Logarse en línea

REQ21. Desconectarse en línea

REQ22. Cambiar contraseña

1.2.3. Restricciones/Limitaciones

1.2.3.1. Las políticas reguladoras

Como define La Ley Orgánica 15/1999 de 13 de diciembre de Protección de Datos de Carácter Personal, (LOPD), “La Ley Orgánica española que tiene por objeto garantizar y proteger, en lo que concierne al tratamiento de los datos personales, las libertades públicas y los derechos fundamentales de las personas físicas, y especialmente de su honor, intimidad y privacidad personal y familiar.”

“Su objetivo principal es regular el tratamiento de los datos y ficheros, de carácter personal, independientemente del soporte en el cual sean tratados, los derechos de los ciudadanos sobre ellos y las obligaciones de aquellos que los crean o tratan.”

1.2.3.2. Las funciones de la auditoria

El sistema deberá proporcionar funciones de auditoría para registrar qué usuario realiza cada alta, baja o modificación de los datos contenidos en el sistema.

1.2.3.3. Las funciones de control

La aplicación deberá controlar funciones de cifrado de datos personales/económicos, cumpliendo con la ley de Protección de Datos de Carácter Personal (LOPD).

26 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.2.3.4. Los requisitos del lenguaje

Todo lo que se desarrolle para el usuario y la aplicación debe estar en idioma español.

1.2.3.5. Los protocolos señalados

Los diferentes protocolos que se van a utilizar son: HyperText Transfer Protocol (http) “es el protocolo usado en cada transacción de la Web World Wide Web (WWW)” y File Transfer Protocol (FTP): “es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP, basado en la arquitectura cliente-servidor”.

1.2.3.6. La seguridad y consideraciones de seguridad

Cada uno de los usuarios deberá autentificarse. Su acceso será verificado por el servidor, de acuerdo con su rol asignado. Todas las claves de seguridad deberán ser seguras y en su defecto encriptadas en la base de datos para dar una buena seguridad al sistema y su información.

1.2.4. Suposiciones y dependencias

La red interna deberá estar configurada para el manejo de protocolos TCP/IP, HTTP y DNS, principalmente con todo tema relacionado con desempeño y seguridad.

Debe realizarse una capacitación adecuada y acorde a lo que cada usuario va a realizar. Su capacitación se hará en el momento que sea necesaria y a las personas indicadas.

27 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3. Requisitos Específicos

1.3.1. Requerimientos funcionales

UK-01 Proveedor

REQ01. Introducir los productos para suministrar

Los proveedores podrán añadir nuevos productos a la lista de productos, rellenando los campos necesarios.

REQ02. Actualizar precios

En cada producto se dará la posibilidad de modificar el precio, pero el cambio no será automático, sino que se deberá esperar los días que se hayan pactado en el acuerdo entre CooBarDistribution y el proveedor. La aplicación no debe dejar que se incumplan los días pactados.

REQ03. Recibir peticiones de suministro

El proveedor tendrá un listado con todos los suministros que le han pedido los distribuidores. Este documento será en formato pdf.

REQ04. Publicación y control de los suministros realizados

El proveedor declarará los pedidos que ya han sido suministrados, a la espera de la aprobación del distribuidor. Cuando el distribuidor haya aceptado y realizado el pago, y el proveedor haya confirmado el mismo, se procederá al cobro del porcentaje que corresponde a CooBarDistribution. En esta pantalla se podrá visualizar el estado de los suministros que haya realizado.

REQ05. Consulta de noticias

El proveedor podrá consultar todas las noticias que haya creado el administrador. Estas pueden ir dirigidas a él mismo, a todos los proveedores o a todos los clientes de la aplicación.

REQ06. Aceptación y consulta del acuerdo con la empresa

Cuando un proveedor se da de alta, se aceptará un acuerdo entre el proveedor y CooBarDistribution. En este formulario se especifica el plazo para la actualización de los precios, la comisión o el descuento que aplica a todas las facturas, entre otros.

28 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

REQ07. Consulta de los distribuidores que ha suministrado

Otra funcionalidad que tiene es que podrá ver el listado de distribuidores a los cuales abastece habitualmente, donde se podrán visualizar los suministros pendientes de abastecer y los realizados.

UK-02 Distribuidor

REQ08. Hacer pedidos de suministros

Los distribuidores podrán hacer pedidos de suministros a los proveedores, elaborando una lista de productos con su correspondiente cantidad. De cada pedido se podrá realizar una plantilla que aparecerá el día de la semana que se especifique. Las plantillas pueden aparecer semanalmente, quincenalmente, mensualmente o trimestralmente. Los pedidos serán enviados vía e-mail.

REQ09. Aceptación y control de los suministros realizados

Cada suministro que haya publicado el proveedor, deberá ser aceptado previamente por el distribuidor al que ha sido abastecido, posteriormente por el proveedor y finalmente por el administrador. El distribuidor podrá ver el estado de sus suministros. En esta pantalla se podrá visualizar el estado de los suministros que han realizado, así como validar aquellos que los proveedores le han abastecido.

REQ10. Consulta de noticias

El distribuidor podrá consultar todas las noticias que haya creado el administrador. Estas pueden ir dirigidas a él mismo o a todos los distribuidores o a todos los clientes de la aplicación.

REQ11. Consulta de los proveedores que le han suministrado

Otra funcionalidad que tiene es que podrá ver en un listado de los proveedores que le han abastecido habitualmente.

29 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

REQ12. Consulta de productos

Todos los distribuidores podrán visualizar todos los productos que ofrece la aplicación. Además, se les dejará escoger de entre todos los productos genéricos, aquellos que no están asociados a ningún proveedor. Una vez escogidos los productos genéricos deseados, la aplicación le dará la opción de generar una mejor lista de la compra.

Para confeccionar una mejor lista de la compra se tendrán en cuenta diferentes parámetros: el primero y más importante, es el precio – siempre se escogerán los precios más bajos--. También, se tendrán en cuenta los descuentos que aplican los proveedores.

UK-03 Administrador

REQ13. Dar de alta a un distribuidor

El administrador será el encargado de dar de alta a los distribuidores introduciendo toda la información necesaria, aportada por el distribuidor de forma independiente a la aplicación. Esta información también hará referencia a los establecimientos de los distribuidores.

REQ14. Dar de alta a un proveedor

El administrador será el encargado de dar de alta a los proveedores introduciendo toda la información necesaria, aportada por el proveedor, de forma independiente a la aplicación.

REQ15. Gestionar el acuerdo con la empresa

Al dar de alta a un proveedor, se deberá crear el acuerdo entre el proveedor y CooBarDistribution. En este acuerdo se establecerán, entre otros, el tiempo de plazo para la actualización de los precios, el porcentaje que se queda la empresa (de cada suministro que se realice) o el descuento que se aplica a todas las facturas, entre otros.

REQ16. Controlar la actualización de los productos de los proveedores

El administrador deberá controlar todas las actualizaciones y altas de nuevos productos que realice el proveedor. También podrá dar de alta productos nuevos o modificarlos, sin tener que cumplir los acuerdos pactados.

30 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor

Todos los suministros que se realizan entre el proveedor y distribuidor deberán ser aceptados por el administrador, incluyendo el porcentaje del acuerdo.

REQ18. Gestión de todos los usuarios asociados al sistema

Otra funcionalidad que tendrá el administrador es el control de estado del usuario conectado en la aplicación CooBarDistribution, pudiéndolo activar ( ) o desactivar( ).

REQ19. Creación de noticias para distribuidores y/o proveedores

El administrador tendrá la capacidad de crear noticias de ámbito general para los proveedores y/o distribuidores o sólo para un usuario en concreto.

Funcionalidades Comunes

REQ20. Logarse en línea

Todo usuario del sistema deberá autentificarse para entrar en su cuenta privada.

REQ21. Desconectarse en línea

Todo usuario de la aplicación, al finalizar, deberá cerrar la sesión de su cuenta privada.

REQ22. Cambiar contraseña

Todo usuario tendrá la posibilidad de cambiar la contraseña, introduciendo la contraseña antigua e introduciendo dos veces la nueva contraseña para verificar su validación.

31 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.2. Usabilidad

La usabilidad es un tema importante en esta aplicación, dado que la experiencia por parte de los usuarios en el uso de las nuevas tecnologías de la información no tiene porqué ser muy elevada. Por ello, la aplicación tiene que ser intuitiva, interactiva y cómoda para los usuarios de cualquier tipo de experiencia.

Para ello se harán:

 Menús intuitivos, de fácil acceso.

 Navegación local, tener varias maneras para llegar a un mismo sito (ej., logo linkable)

1.3.3. Fiabilidad

El sistema permitirá almacenar datos de manera correcta y completa en la base de datos. Además, ofrece seguridad y confidencialidad según la ley de protección de datos (LOPD).

La robustez y la escalabilidad de la base de datos son dos puntos importantes que se han de tener en cuenta, ya que el proyecto debe ser escalable y debe mantener su integridad en las siguientes ampliaciones.

1.3.4. Rendimientos

La tecnología se basará en un servidor que tendrá los servicios de servidor WEB y cuyos datos estarán almacenados en un Sistema Gestor de Bases de Datos.

La complejidad de las aplicaciones del usuario debe ser baja, y consumir pocos recursos. Por ejemplo, el número de terminales, el número esperado de usuarios simultáneamente conectados, número de transacciones por segundo que deberá soportar el sistema, etc.

1.3.5. Soporte

En esta fase del sistema sólo deberá dar soporte al navegador FireFox. El sistema operativo del servidor web, donde se colgará la aplicación será un Windows Server 2003.

32 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6. Funcionalidades Globales

1.3.6.1. UK-01 Proveedor

Diagrama de Casos de Uso

REQ01. Introducir los productos para suministrar *

REQ02. Actualizar precios *

REQ03. Recibir peticiones de suministro *

* ** REQ04. Publicación y control de los suministros * realizados UK-01 Proveedor * **

REQ05. Consulta de noticias *

REQ06. Aceptación y consulta del acuerdo con la * empresa

REQ07. Consulta de los * distribuidores que ha suministrado

Caso de Uso 1. UK-01 Proveedor

33 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.1.1. REQ01 Introducir los productos a suministrar

Descripción del Caso de Uso

Nombre del Caso de REQ01. Introducir los productos a suministrar Uso Descripción Creación de nuevos productos que suministra el proveedor. Actores Proveedor Precondiciones Actores registrados. Paso Acción 1 El Proveedor accede a la opción del menú de productos 2 El Sistema muestra el listado de productos del proveedor. Flujo Principal 3 El Proveedor selecciona introducir un nuevo producto. 4 El Sistema solicita los datos del nuevo producto. 5 El Proveedor introduce los datos y acepta. 6 El Sistema guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 7 El Sistema informa si los datos son incorrectos.

Post-condiciones El Proveedor accede al listado de productos.

Tabla 1. CU-REQ01. Introducir los productos a suministrar

Diagrama de Actividad

Proveedor selecciona Productos del menú

El Sistema muesta el listado de productos

Proveedor Selecciona Nuevo Producto

El Proveedor introduce los datos del Producto

Datos correctos? No Si

El sistema almacena la información

Diagrama de Actividad 1. REQ01. Introducir los productos a suministrar

34 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.1.2. REQ02 Actualizar precios

Descripción del Caso de Uso

Nombre del Caso de REQ02. Actualizar precios Uso Actualización de precios de los productos que suministra el Descripción proveedor. Actores Proveedor Precondiciones Actores registrados. Paso Acción 1 El Proveedor accede a la opción del menú de productos 2 El Sistema muestra el listado de productos del proveedor. 3 El Proveedor selecciona un producto. Flujo Principal 4 El Sistema muestra la información del producto y da la opción de modificación. 5 El Proveedor Actualiza el precio. 6 El Sistema si se añade un nuevo precio, comprueba que la fecha de aplicación concuerda con la del acuerdo y finalmente guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 7 El Sistema informa si los datos son incorrectos.

Post-condiciones El Proveedor accede al listado de productos.

Tabla 2. CU-REQ02. Actualizar precios

35 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Diagrama de Actividad

Proveedor selecciona Productos del menú

El Sistema muesta el listado de productos

Proveedor Selecciona Producto

El Proveedor Actualiza el Precio

Datos correctos? No Si

El sistema almacena la información

Diagrama de Actividad 2. REQ02. Actualizar precios

36 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.1.3. REQ03 Recibir peticiones de suministro

Descripción del Caso de Uso

Nombre del Caso de REQ03. Recibir peticiones de suministro Uso El Proveedor recibe peticiones de suministros emitidas por los Descripción distribuidores Actores Proveedor Precondiciones Actores registrados. Paso Acción 1 El Proveedor accede a la opción del menú de Suministros Flujo Principal 2 El Sistema muestra el listado de los suministros, diferenciando las leídas y las no leídas. 3 El Proveedor selecciona un suministro. 4 El Sistema muestra la información del suministro.

Extensiones

Post-condiciones El Proveedor accede al listado de suministros.

Tabla 3. CU-REQ03. Recibir peticiones de suministro

Diagrama de Actividad

Proveedor accede a la opción del menú de Suministros

El Sistema lista los suministros

Proveedor selecciona un suministro

El Sistema muestra la información del suministro

Diagrama de Actividad 3. REQ03. Recibir peticiones de suministro

37 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.1.4. REQ04 Publicación y control de los suministros realizados

Descripción del Caso de Uso

Nombre del Caso de Uso REQ04. Publicación y control de los suministros realizados El Proveedor publica todos los suministros que ha abastecido a los Descripción distribuidores Actores Proveedor Precondiciones Actores registrados.

Paso Acción 1 El Proveedor accede a la opción de declaraciones. 2 El Sistema muestra el listado de las declaraciones ya publicadas. Flujo Principal 3 El Proveedor selecciona introducir una nueva declaración. 4 El Sistema solicita los datos de la nueva declaración. 5 El Proveedor introduce los datos y acepta. 6 El Sistema guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 7 El Sistema informa si los datos son incorrectos.

Post-condiciones El Proveedor accede al listado de suministros.

Tabla 4. CU-REQ04. Publicación y control de los suministros realizados

Diagrama de Actividad

Proveedor selecciona del menú Declaraciones

Sistema muestra el listado de las declaraciones ya publicadas

Proveedor selecciona introducir una nueva declaración

Proveedor introduce los datos

Datos correctos? No Si

El sistema almacena la información

Diagrama de Actividad 4. REQ04. Publicación y control de los suministros realizados

38 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.1.5. REQ05 Consulta de noticias

Descripción del Caso de Uso

Nombre del Caso de REQ05. Consulta de noticias Uso Descripción El Proveedor consulta noticias publicadas. Actores Proveedor Precondiciones Actores registrados. Paso Acción 1 El Sistema muestra el listado de noticias en la página Flujo Principal principal, después de logarse. 2 El Proveedor selecciona noticia. 3 El Sistema mostrará la información de la noticia.

Extensiones

Post-condiciones El Proveedor puede acceder a datos o recursos de la aplicación.

Tabla 5. CU-REQ05. Consulta de noticias

Diagrama de Actividad

El Sistema muestra el listado de noticias en la página principal

Proveedor selecciona un noticia

El Sistema muestra la información de la noticia

Diagrama de Actividad 5. REQ05. Consulta de noticias

39 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.1.6. REQ06 Aceptación y consulta del acuerdo con la empresa

Descripción del Caso de Uso

Nombre del Caso de REQ06. Aceptación y consulta del acuerdo con la empresa Uso Descripción El Proveedor acepta el acuerdo con la empresa. Actores Proveedor Precondiciones Actores registrados. Paso Acción 1 Consulta en la Base de Datos la verificación del Acuerdo 2 El Sistema muestra el acuerdo, si aun no ha sido Flujo Principal aceptado, sino se accederá desde la opción acuerdo. 3 El Proveedor aceptara el acuerdo. 4 El Sistema guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 5 El Sistema informa si los datos son incorrectos. No dejará continuar si no acepta el acuerdo.

Post-condiciones El Proveedor puede acceder a datos o recursos de la aplicación.

Tabla 6. CU-REQ06. Aceptación y consulta del acuerdo con la empresa

Diagrama de Actividad

Consulta en la Base de Datos la verificación del Acuerdo Acuerdo Aceptado? No Si Sistema muestra Acuerdo para aprovación Proveedor selecciona del menú Acuerdo

Acuerdo Aceptado? No

Si

El sistema almacena la información

Sistema muestra Acuerdo

Diagrama de Actividad 6. REQ06. Aceptación y consulta del acuerdo con la empresa

40 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.1.7. REQ07 Consulta de los distribuidores que ha suministrado

Descripción del Caso de Uso

Nombre del Caso de REQ07. Consulta de los distribuidores que ha suministrado Uso Descripción El Proveedor consulta los distribuidores que ha suministrado. Actores Proveedor Precondiciones Actores registrados. Paso Acción 1 El Proveedor accede a la opción del menú de Distribuidores. Flujo Principal 2 El Sistema muestra el listado de los Distribuidores Suministrados. 3 El Proveedor selecciona un Distribuidor. 4 El Sistema muestra la información del Distribuidor.

Extensiones

Post-condiciones El Proveedor accede al listado de Distribuidores.

Tabla 7. CU-REQ07. Consulta de los distribuidores que ha suministrado

Diagrama de Actividad

Proveedor accede a la opción del menú de Distribuidores

Sistema muestra el listado de los Distribuidores Suministrados

Proveedor selecciona un Distribuidor.

Sistema muestra la información del Distribuidor

Diagrama de Actividad 7. REQ07. Consulta de los distribuidores que ha suministrado

41 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.2. UK-02 Distribuidor

Diagrama de Casos de Uso

REQ08. Hacer pedidos de suministros *

REQ09. Aceptación y control de los suministros realizados *

REQ10. Consulta de ** * noticias *

UK-02 Distribuidor ** REQ11. Consulta de los proveedores que le han * suministrado

REQ12. Consulta de * productos

Caso de Uso 2. UK-02 Distribuidor

42 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.2.1. REQ08. Hacer pedidos de suministros

Descripción del Caso de Uso

Nombre del Caso de REQ08. Hacer pedidos de suministros Uso Descripción Hacer un pedido de abastecimiento de suministros a un Proveedor Actores Distribuidor Precondiciones Actores registrados. Paso Acción 1 El Distribuidor accede a la opción suministro. 2 El Sistema muestra el listado de plantillas. 3 El Distribuidor accede a crear nuevo suministro. 4 El Sistema solicita la información del pedido Flujo Principal 5 El Distribuidor introduce la información necesaria y envía.

6 El Sistema envía un mail al proveedor con un pdf adjunto con el pedido. Y añade al listado de pedidos en recepción.

Paso Acción alternativa Extensiones 7 El Sistema informa si los datos son incorrectos.

Post-condiciones El Distribuidor accede al listado de plantillas.

Tabla 8. CU-REQ08. Hacer pedidos de suministros

43 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Diagrama de Actividad

Distribuidor accede a la opción Suministro

Sistema muestra el listado de plantillas

Distribuidor accede a crear nuevo suministro

Distribuidor accede a crear nuevo suministro

Datos correctos? No

Si

Sistema almacena la información

Sistema envía un mail al proveedor con el pedido

Diagrama de Actividad 8. REQ08. Hacer pedidos de suministros

44 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.2.2. REQ09. Aceptación y control de los suministros realizados

Descripción del Caso de Uso

Nombre del Caso de REQ09. Aceptación y control de los suministros realizados Uso El Distribuidor acepta todos los suministros que ha n sido Descripción publicados por el proveedor. Actores Distribuidor Precondiciones Actores registrados. Paso Acción 1 El Distribuidor accede a la opción de declaraciones. 2 El Sistema muestra el listado de las declaraciones ya Flujo Principal publicadas. 3 El Distribuidor debe aceptar o declinar las declaraciones pendientes. 4 El Sistema guarda los datos en la base de datos.

Extensiones

Post-condiciones El Distribuidor accede al listado de suministros declarados.

Tabla 9. CU-REQ09. Aceptación y control de los suministros realizados

Diagrama de Actividad

Distribuidor accede a la opción de Declaraciones

Sistema muestra el listado de las declaraciones ya publicadas

Distribuidor accede a una Declaración Acepta la Declaración? No

Si

Sistema almacena la información

Diagrama de Actividad 9. REQ09. Aceptación y control de los suministros realizados

45 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.2.3. REQ10. Consulta de noticias

Descripción del Caso de Uso

Nombre del Caso de REQ10. Consulta de noticias Uso Descripción El Distribuidor consulta noticias publicadas. Actores Distribuidor Precondiciones Actores registrados. Paso Acción 1 El Sistema muestra el listado de noticias en la página Flujo Principal principal, después de logarse. 2 El Distribuidor selecciona noticia. 3 El Sistema mostrará la información de la noticia.

Extensiones

Post-condiciones El Distribuidor puede acceder a datos o recursos de la aplicación.

Tabla 10. CU-REQ10. Consulta de noticias

Diagrama de Actividad

El Sistema muestra el listado de noticias en la página principal

Dsitribuidor selecciona una noticia

El Sistema muestra la información de la noticia

Diagrama de Actividad 10. REQ10. Consulta de noticias

46 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.2.4. REQ11. Consulta de los proveedores que le han suministrado

Descripción del Caso de Uso

Nombre del Caso de REQ11. Consulta de los proveedores que le han suministrado Uso Descripción El Distribuidor consulta los Proveedores que le ha suministrado. Actores Distribuidor Precondiciones Actores registrados. Paso Acción El Distribuidor accede a la opción del menú de 1 Proveedores. Flujo Principal 2 El Sistema muestra el listado de los Proveedores. 3 El Distribuidor selecciona un Proveedor. 4 El Sistema muestra la información del Proveedor.

Extensiones

Post-condiciones El Distribuidor accede al listado de Proveedores. Tabla 11. CU-REQ11. Consulta de los proveedores que le han suministrado

Diagrama de Actividad

Distribuidor accede a la opción del menú de Proveedores

El Sistema muestra el listado de los Proveedores que le Suministran

Distribuidor selecciona un Proveedor

Sistema muestra la información del Proveedor

Diagrama de Actividad 11. REQ11. Consulta de los proveedores que le han suministrado

47 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.2.5. REQ12. Consulta de productos

Descripción del Caso de Uso

Nombre del Caso de REQ12. Consulta de productos Uso El Distribuidor consulta todos los productos que hay en la Descripción aplicación. Actores Distribuidor Precondiciones Actores registrados. Paso Acción 1 El Distribuidor accede a la opción del Productos. Flujo Principal 2 El Sistema muestra el listado de los Productos. 3 El Distribuidor selecciona un Producto. 4 El Sistema muestra la información del Producto.

Extensiones

Post-condiciones El Distribuidor accede al listado de Proveedores.

Tabla 12. CU-REQ12. Consulta de productos

Diagrama de Actividad

Distribuidor accede a la opción del Productos

Sistema muestra el listado de los Productos

Distribuidor selecciona un Producto

Sistema muestra la información del Producto

Diagrama de Actividad 12. REQ12. Consulta de productos

48 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.3. UK-03 Administrador

Diagrama de Casos de Uso

REQ13. Dar de alta a un distribuidor *

REQ14. Dar de alta a un proveedor *

REQ15. Gestionar el acuerdo con la empresa * * * *

UK-03 Administrador REQ16. Controlar la * actualización de los productos de * * * los proveedores

REQ17. Aceptación y control de los suministros realizados entre * proveedor y distribuidor

REQ18. Gestión de todos los usuarios asociados al * sistema

* REQ19. Creación de noticias para distribuidores y/o proveedores

Caso de Uso 3. UK-03 Administrador

49 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.3.1. REQ13. Dar de alta a un distribuidor

Descripción del Caso de Uso

Nombre del Caso de REQ13. Dar de alta a un distribuidor Uso Descripción Crear un nuevo distribuidor Actores Administrador Precondiciones Actores registrados. Paso Acción 1 El Administrador accede a la opción de Distribuidores 2 El Sistema muestra el listado de Distribuidores. El Administrador accede a la opción de nuevo 3 Flujo Principal Distribuidor El Sistema solicita la información necesaria para dar de 4 alta 5 El Administrador introduce los datos y acepta. 6 El Sistema guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 7 El Sistema informa si los datos son incorrectos.

Post-condiciones El Administrador accede al listado de Distribuidores

Tabla 13. CU-REQ13. Dar de alta a un distribuidor

Diagrama de Actividad

Administrador accede a la opción de Distribuidores del menú

Sistema muestra el listado de Distribuidores

Administrador accede a la opción de nuevo Distribuidor

Administrador introduce los datos

Datos correctos? No Si

Sistema almacena la información

Diagrama de Actividad 13. REQ13. Dar de alta a un distribuidor

50 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.3.2. REQ14. Dar de alta a un proveedor

Descripción del Caso de Uso

Nombre del Caso de Uso REQ14. Dar de alta a un proveedor Descripción Crear un nuevo proveedor Actores Administrador Precondiciones Actores registrados. Paso Acción 1 El Administrador accede a la opción de proveedores. 2 El Sistema muestra el listado de proveedores. Flujo Principal 3 El Administrador accede a la opción de nuevo proveedor 4 El Sistema solicita la información necesaria para dar de alta 5 El Administrador introduce los datos y acepta. 6 El Sistema guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 7 El Sistema informa si los datos son incorrectos.

Post-condiciones El Administrador accede al listado de proveedores

Tabla 14. CU-REQ14. Dar de alta a un proveedor

Diagrama de Actividad

Administrador accede a la opción de Proveedores

Sistema muestra el listado de Proveedores

Administrador accede a la opción de nuevo Proveedor

Administrador introduce los datos

Datos correctos? No Si

Sistema almacena la información

Diagrama de Actividad 14. REQ14. Dar de alta a un proveedor

51 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.3.3. REQ15. Gestiona el acuerdo con la empresa

Descripción del Caso de Uso

Nombre del Caso de REQ15. Gestionar el acuerdo con la empresa Uso Descripción Crear el acuerdo entre proveedor y empresa Actores Administrador Precondiciones Actores registrados. Paso Acción 1 El Administrador accede a la opción de proveedores 2 El Sistema muestra el listado de proveedores. 3 El Administrador accede a un proveedor Flujo Principal 4 El Sistema muestra la información del proveedor 5 El Administrador accede a la opción de acuerdo 6 El Sistema muestra la información del acuerdo 7 El Administrador introduce los datos y acepta. 8 El Sistema guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 9 El Sistema informa si los datos son incorrectos.

Post-condiciones El Administrador accede al listado de proveedores

Tabla 15. CU-REQ15. Gestionar el acuerdo con la empresa

52 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Diagrama de Actividad

Administrador accede a la opción de Proveedores

Sistema muestra el listado de Proveedores

Administrador accede a un proveedor

Sistema muestra la información del proveedor

Administrador accede al opción de acuerdo

Administrador introduce los datos

Datos correctos? No Si

Sistema almacena la información

Diagrama de Actividad 15. REQ15. Gestionar el acuerdo con la empresa

53 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.3.4. REQ16. Controlar la actualización de los productos de los proveedores

Descripción del Caso de Uso

Nombre del Caso de REQ16. Controlar la actualización de los productos de los Uso proveedores Descripción Controlar la actualizaciones de los productos Actores Administrador Precondiciones Actores registrados. Paso Acción 1 El Administrador accede a la opción de Productos. Flujo Principal 2 El Sistema muestra el listado de Productos Pendientes. 3 El Administrador acepta o rechaza el producto. 4 El Sistema guarda los datos en la base de datos.

Extensiones

Post-condiciones El Administrador accede al listado de proveedores

Tabla 16. CU-REQ16. Controlar la actualización de los productos de los proveedores

Diagrama de Actividad

Administrador accede a la opción de Productos

Sistema muestra el listado de Productos

Administrador acepta o rechaza el producto

Acepta Rechaza

El producto se valida El producto se invalida

Sistema almacena la información

Diagrama de Actividad 16. REQ16. Controlar la actualización de los productos de los proveedores

54 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.3.5. REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor

Descripción del Caso de Uso

REQ17. Aceptación y control de los suministros realizados entre Nombre del Caso de Uso proveedor y distribuidor El Administrador acepta todos los suministros que han sido publicados Descripción por el proveedor. Actores Administrador Precondiciones Actores registrados.

Paso Acción 1 El Administrador accede a la opción de declaraciones. El Sistema muestra el listado de las declaraciones ya 2 Flujo Principal publicadas. El Administrador debe aceptar o declinar las declaraciones 3 pendientes. 4 El Sistema guarda los datos en la base de datos.

Extensiones

Post-condiciones El Administrador accede al listado de suministros declarados.

Tabla 17. CU-REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor

Diagrama de Actividad

Administrador accede a la opción de declaraciones

Sistema muestra el listado de las declaraciones ya publicadas

Administrador acepta o rechaza la declaraciones ya publicadas

Acepta Rechaza

La declaraciones se valida La declaraciones se invalida

Sistema almacena la información

Diagrama de Actividad 17. REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor

55 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.3.6. REQ18. Gestión de todos los usuarios asociados al sistema

Descripción del Caso de Uso

Nombre del Caso de Uso REQ18. Gestión de todos los usuarios asociados al sistema Descripción Gestionar los usuarios. Actores Administrador Precondiciones Actores registrados. Paso Acción 1 El Administrador accede a la opción de Usuarios. 2 El Sistema muestra el listado de Usuarios. El Administrador acede la opción de nuevo Usuario Flujo Principal 3 (Administrador) 4 El Sistema solicita la información necesaria para dar de alta 5 El Administrador introduce los datos y acepta. 6 El Sistema guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 7 El Sistema informa si los datos son incorrectos.

Post-condiciones El Administrador accede al listado de proveedores

Tabla 18. CU-REQ18. Gestión de todos los usuarios asociados al sistema

Diagrama de Actividad

Administrador accede a la opción de Usuarios

Sistema muestra el listado de Usuarios

Administrador acede la opción de nuevo Usuario Administrador

Administrador introduce los datos

Datos correctos? No Si

Sistema almacena la información

Diagrama de Actividad 18. REQ18. Gestión de todos los usuarios asociados al sistema

56 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.3.7. REQ19. Creación de noticias para distribuidores y/o proveedores

Descripción del Caso de Uso

Nombre del Caso de REQ19. Creación de noticias para distribuidores y/o proveedores Uso Descripción El Administrador publica noticias para los usuarios. Actores Administrador Precondiciones Actores registrados. Paso Acción 1 El Administrador accede a la opción de noticias. 2 El Sistema muestra el listado de noticias. Flujo Principal 3 El Administrador accede al opción de nueva noticia 4 El Sistema solicita la información 6 El Administrador introduce los datos y acepta. 7 El Sistema guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 8 El Sistema informa si los datos son incorrectos.

Post-condiciones El Distribuidor puede acceder a datos o recursos de la aplicación.

Tabla 19. CU-REQ19. Creación de noticias para distribuidores y/o proveedores

Diagrama de Actividad

Administrador accede a la opción de Noticias

Sistema muestra el listado de noticias

Administrador accede al opción de nueva noticia

Administrador introduce los datos

Datos correctos? No Si

Sistema almacena la información

Diagrama de Actividad 19. REQ19. Creación de noticias para distribuidores y/o proveedores

57 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.4. Funcionalidades comunes

Diagrama de Casos de Uso

REQ20. Logarse en línea *

REQ21. Desconectarse en línea * ** *

REQ22. Cambiar Ditribuidor, Proveedor, Administrador contraseña *

Caso de Uso 4. Funcionalidades comunes

58 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.4.1. REQ20. Logarse en línea

Descripción del Caso de Uso

Nombre del Caso de REQ20. Logarse en línea Uso Descripción Conectarse al sistema. Actores Usuarios Precondiciones Actores sin ser registrados. Paso Acción Los Usuarios introducen su usuario y contraseña, para 1 acceder a su cuenta de usuario. Flujo Principal El Sistema verifica que los datos introducidos sean 2 correctos. 3 Los Usuarios acceden a su cuenta.

Paso Acción alternativa Extensiones 4 El Sistema informa si los datos son incorrectos.

Post-condiciones Los Usuarios pueden acceder a datos o recursos de la aplicación.

Tabla 20. CU-REQ20. Logarse en línea

Diagrama de Actividad

Usuarios introducen su usuario y contraseña

Sistema verifica que los datos introducidos sean correctos

Datos correctos? No Si

Usuarios acceden a su cuenta

Diagrama de Actividad 20. REQ20. Logarse en línea

59 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.4.2. REQ21. Desconectarse en línea

Descripción del Caso de Uso

Nombre del Caso de REQ21. Desconectarse en línea Uso Descripción Desconectarse del sistema. Actores Usuarios Precondiciones Actores registrados. Paso Acción Flujo Principal 1 Los Usuarios acceden a la opción de Cerrar. 2 El Sistema desconecta al usuario.

Extensiones

Los Usuarios ya no podrán acceder a datos o recursos de la Post-condiciones aplicación. Sin posterior logue.

Tabla 21. CU-REQ21. Desconectarse en línea

Diagrama de Actividad

Usuarios acceden a la opción de Cerrar

Sistema desconecta al usuario

Diagrama de Actividad 21. REQ21. Desconectarse en línea

60 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.4.3. REQ22. Cambiar contraseña

Descripción del Caso de Uso

Nombre del Caso de REQ22. Cambiar contraseña Uso Descripción Cambiar la contraseña del Proveedor. Actores Usuarios Precondiciones Actores registrados. Paso Acción Los Usuarios acceden a la opción de cambiar 1 contraseña. Flujo Principal El Sistema solicita el nombre del Proveedor, la 2 contraseña anterior y la nueva. 3 Los Usuarios introducen los datos y acepta. 4 El Sistema guarda los datos en la base de datos.

Paso Acción alternativa Extensiones 5 El Sistema informa si los datos son incorrectos.

Post-condiciones Los Usuarios pueden acceder a datos o recursos de la aplicación.

Tabla 22. CU-REQ22. Cambiar contraseña

Diagrama de Actividad

Usuarios acceden a la opción de cambiar contraseña

Usuarios introducen los datos

Datos correctos? No

Si

Usuarios acceden a su cuenta

Diagrama de Actividad 22. REQ22. Cambiar contraseña

61 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.5. Flujos Globales

1.3.6.5.1. Flujo de Noticias

Diagrama de Actividad

REQ19. Creación de noticias para Distribuidores o Proveedores o Ambos

REQ10. Consulta de noticias REQ05. Consulta de noticias

Diagrama de Actividad 23. Noticias

62 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.5.2. Flujo de Pedidos

Diagrama de Actividad

REQ12. Consulta de productos REQ08. Hacer pedidos de suministros

Pedido Finalizado? No

Si

REQ03. Recibir peticiones de suministro

Diagrama de Actividad 24. Pedidos

1.3.6.5.3. Flujo de Suministros Realizados

Diagrama de Actividad

REQ04. Publicación y control de los suministros realizados

REQ09. Aceptación y control de los suministro realizados

Aceptacion del Suministro? Si No

REQ17. Aceptación y control de los suministro realizados entre Proveedor y distribuidor

Diagrama de Actividad 25. Suministros Realizados

63 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1.3.6.5.4. Flujo del Acuerdo

Diagrama de Actividad

REQ15. Gestión del acuerdo con la empresa

REQ06. Aceptación y consulta del acuerdo con la empresa

Diagrama de Actividad 26. Acuerdo

1.3.6.5.5. Flujo de estado de un producto

Diagrama de Actividad

REQ01. Introducir los productos para suministrar

REQ16. Controlar la actualización de los productos de los proveedores

Se necesita actualización de precio?

REQ02. Actualizar precios Si No

Diagrama de Actividad 27. Flujo de estado de un producto

64 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

CAPÍTULO 2. ANÁLISIS ORIENTADO A OBJETOS

2.1. Acceso a la Aplicación

Diagrama de Clases

Usuario -Id -Login -Password +Logarse(in Login, in Password) +Desconectarse() +CambiarContraseña(in Password_New, in Password_Oldd)

Administrador Proveidor Distribuidor

Diagrama de Clases 1. Acceso a la aplicación

2.1.1. REQ20. Logarse en línea

Diagrama de secuencia

Diagrama de Secuencia 1. Logarse en línea

65 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.1.2. REQ21. Desconectarse en línea

Diagrama de secuencia

Actor4 All :Usuario

Desconectarse() 3 r o t c A :Boolean

Diagrama de Secuencia 2. Desconectarse en línea

2.1.3. REQ22. Cambiar contraseña

Diagrama de secuencia

Actor2 All :Usuario Base Datos

CambiarContraseña(Password_New, Password_Oldd)

ModificarPassword(Password)

:Boolean

:Boolean

Diagrama de Secuencia 3. Cambiar contraseña

66 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.2. Dar de alta clientes

Diagrama de Clases

Distribuidor Proveedor -Identificador Tipo -Nombre -Identificador -Identificador -Cif -Tipo -Nombre -Descripcion +CrearTipo() -Sector -Especialidad -Tipo +ModificarTipo() 1 -Web +EliminarTipo() -CIF -Direccion +ConsultarTipo() 1 -Descripcion -CP -Web -Poblacion -Direcion -CP -Provincia Especialidad -Pais -Poblacion -Nombre_Contacto -Identificador -Provincia -Apellidos_Contacto 1 -Especialidad -Pais -Telefono 1 +CrearEspecialidad() -Nombre_Responsable -Movil +ModificarEspecialidad() -Telefono -Fax +EliminarEspecialidad() -Movil -Email +CosnultarEspecialidad() -Fax -Establecimientos -Email -Estado 1 1 -Estado +CrearDistribuidor() +CreaProveedor() Pais +ModificarDistribuidor() +ModificarProveedor() +EliminarDistribuidor() -Identificador +EliminarProveedor() +ConsultarDistribuidor() 1 -Pais 1 +ConsultaProveedor() +CrearPais() +ModificarPais() * 1 1 +EliminarPais() 1 +ConsultarPais() Establiment -Identificador Provincia -IdDistribuidor -Identificador -Nombre 1 -Provincia -Descripcion +CrearProvincia() -Web 1 1 +ModificarProvincia() 1 -Direccion 1 +EliminarProvincia() -CP +ConsultarProvincia() Acuerdo -Poblacion -Provincia -Identificador -Pais -Proveedor -Nombre_Contacto -Forma de Pago -Apellidos_Contato 1 -Observaciones -Telefono Administrador -Comision -Movil -Identificador -Descuento -Fax -Nombre 1 -Termino Actualizacion Precio -Email +CrearAdministradores() -Documento -Estado +ModificarAdministradores() 1 +CrearAcuerdo() -Especialitat +EliminarAdministradores() +ModificarAcuerdo() +CrearEstablecimiento() +ConsultarAdministradores() +EliminarAcuerdo() +ModificarEstablecimiento() +ConsultarAcuerdo() +EliminarEstablecimiento() +ConsultarEstablecimiento()

Diagrama de Clases 2. Dar de alta clientes

67 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.2.1. REQ13. Dar de alta a un distribuidor

Diagrama de secuencia

Diagrama de Secuencia 4. Dar de alta a un distribuidor

68 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.2.2. REQ14. Dar de alta a un proveedor

Diagrama de secuencia

UK-03 Administrador :Proveedor :Tipo :Especialidad :Pais :Provincia Base de Datos

CreaProveedor()

ConsultarTipo()

ID

CosnultarEspecialidad()

ID

ConsultarPais()

ID

ConsultarProvincia()

ID

Insertar

Boolean

Boolean

Diagrama de Secuencia 5. Dar de alta a un proveedor

2.2.3. REQ18. Gestión de todos los usuarios asociados al sistema

Diagrama de secuencia

UK-03 Administrador :Administrador Base de Datos

ConsultarAdministradores()

Insertar

Boolean

Boolean

Diagrama de Secuencia 6. Gestión de todos los usuarios

69 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.2.4. REQ15. Gestionar el acuerdo con la empresa

Diagrama de secuencia

UK-03 Administrador :Proveedor :Acuerdo Base de Datos

ModificarProveedor()

CrearAcuerdo()

Insertar

Boolean

Boolean

Boolean

Diagrama de Secuencia 7. Gestionar el acuerdo con la empresa

2.2.5. REQ06. Aceptación y consulta del acuerdo con la empresa

Diagrama de secuencia

UK-01 Proveedor :Proveedor :Acuerdo Base de Datos

ModificarProveedor

ModificarAcuerdo()

Modificar

Boolean

Boolean

Boolean

ConsultaProveedor()

ConsultarAcuerdo()

Info

Info

Diagrama de Secuencia 8. Aceptación y consulta del acuerdo con la empresa

70 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.3. Productos

Diagrama de Clases

1

Acuerdo Proveedor Productos -Identificador -Identificador -Proveedor -Identificador Tipo -Nombre -Forma de Pago -Tipo -Identificador -Sector -Observaciones -Especialidad -Tipo -Especialidad -Comision -Proveedor -CIF -Descuento +CrearTipo() -Nombre -Descripcion -Termino Actualizacion Precio +ModificarTipo() 1 -Marca * 1 1 1 -Web -Documento +EliminarTipo() -Descripcion -Direcion +ConsultarTipo() -Precio Ud/Kg +CrearAcuerdo() -CP -Medida (Ud/Kg) +ModificarAcuerdo() -Poblacion -Embase +EliminarAcuerdo() -Provincia -Ud Embase +ConsultarAcuerdo() -Pais -Ud Caja -Nombre_Responsable -Peso Ud -Telefono -Nuevo Precio Especialidad -Movil -Fecha Nuevo Precio -Identificador -Fax -Imagen -Especialidad 1 1 -Email +CrearProducto() +CrearEspecialidad() -Estado +ModificarProducto() +ModificarEspecialidad() +CreaProveedor() +EliminarProducto() +EliminarEspecialidad() +ModificarProveedor() +ConsultarProducto() +CosnultarEspecialidad() +EliminarProveedor() +ConsultaProveedor()

Diagrama de Clases 3. Productos

2.3.1. REQ01. Introducir los productos para suministrar

Diagrama de secuencia

UK-01 Proveedor :Productos :Proveedor :Especialidad Base de Datos

CrearProducto()

ConsultaProveedor()

ID

CosnultarEspecialidad()

ID

Insertar

Boolean

Boolean

Diagrama de Secuencia 9. Introducir los productos para suministrar

71 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.3.2. REQ02. Actualizar precios

Diagrama de secuencia

UK-01 Proveedor :Productos :Proveedor :Acuerdo Base de Datos

ModificarProducto()

ConsultaProveedor()

ConsultarAcuerdo()

Termino Actualizacion Precio

Fecha Nuevo Precio

Modificar

Boolean

Boolean

Diagrama de Secuencia 10. Actualizar precios

2.3.3. REQ16. Controlar la actualización de los productos de los proveedores

Diagrama de secuencia

UK-03 Administrador :Productos :Proveedor :Tipo :Especialidad :Acuerdo Base de Datos

CrearProducto

ConsultaProveedor

ID

ConsultarTipo

ID

CosnultarEspecialidad

ID

Insertar

Boolean

Boolean

ModificarProducto()

ConsultaProveedor

ConsultarAcuerdo()

Termino Actualizacion Precio

Fecha Nuevo Precio

Modificar

Boolean

Boolean

Diagrama de Secuencia 11. Controlar la actualización de los productos de los proveedores

72 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.3.4. REQ12. Consulta de productos

Diagrama de secuencia

UK-02 Distribuidor :Productos

ConsultarProducto()

Inf

Diagrama de Secuencia 12. Consulta de productos

73 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.4. Suministros

Diagrama de Clases

Suministros -Identificador -Dia Creación Detalle Suministro -Dia de Recepción -Identificador -Periocidad -Producto -Contacto -Cantidad -Telefono -Embalage -Observacion -Precio Neto Productos -Proveedor -Descuento -Identificador 1 -Plantilla 1 * -Plantilla 1 Proveedor -Tipo -Establecimiento +CrearDetalleSuministro() -Especialidad -Identificador -Distribuidor +ModificarDetalleSuministro() -Proveedor -Nombre +CrearSuministros() +EliminarDetalleSuministro() -Nombre -Sector +ModificarSuministros() +ConsultarDetalleSuministro() -Marca -Especialidad +EliminarSuministros() -Descripcion -CIF +ConsultarSuministros() -Precio Ud/Kg 1 -Descripcion 1 -Medida (Ud/Kg) -Web -Embase -Direcion 1 1 -Ud Embase -CP -Ud Caja -Poblacion -Peso Ud -Provincia -Nuevo Precio -Pais -Fecha Nuevo Precio -Nombre_Responsable -Imagen -Telefono 1 +CrearProducto() -Movil +ModificarProducto() -Fax 0..1 +EliminarProducto() -Email +ConsultarProducto() -Estado 0..1 1 Plantilla Suministros +CreaProveedor() -Identificador +ModificarProveedor() Plantilla Detalle Suministro +EliminarProveedor() -Dia Creación +ConsultaProveedor() -Dia de Recepción -Identificador -Periocidad -Producto 1 -Contacto -Cantidad -Telefono -Embalage -Observacion -Precio Neto -Proveedor -Descuento -Plantilla 1 * -Plantilla 1 -Establecimiento +CrearPlantillaDetalleSuministro() -Distribuidor +ModificarPlantillaDetalleSuministro() +CrearPlantillaSuministros() +EliminarPlantillaDetalleSuministro() +ModificarPlantillaSuministros() +ConsultarPlantillaDetalleSuministro() +EliminarPlantillaSuministros() +ConsultarPlantillaSuministros()

Diagrama de Clases 4. Suministros

74 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.4.1. REQ08. Hacer pedidos de suministros

Diagrama de secuencia

Diagrama de Secuencia 13. Hacer pedidos de suministros

2.4.2. REQ03. Recibir peticiones de suministro

Diagrama de secuencia

UK-01 Proveedor :Suministros :Detalle Suministros

ConsultarSuministros()

ConsultarDetalleSuministro()

Inf

Inf

Diagrama de Secuencia 14. Recibir peticiones de suministro

75 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.5. Suministros Realizados

Diagrama de Clases

Proveedor Establiment -Identificador -Identificador -Nombre -IdDistribuidor -Sector Suministros -Nombre -Especialidad -Descripcion -Identificador -CIF -Web -Dia Creación -Descripcion -Direccion -Dia de Recepción -Web -CP -Periocidad -Direcion -Poblacion -Contacto -CP -Provincia -Telefono -Poblacion -Pais -Observacion -Provincia -Nombre_Contacto -Proveedor -Pais -Apellidos_Contato 1 1 -Plantilla 1 1 -Nombre_Responsable -Telefono -Establecimiento -Telefono -Movil -Distribuidor -Movil -Fax -Fax +CrearSuministros() -Email -Email +ModificarSuministros() -Estado -Estado +EliminarSuministros() -Especialitat +ConsultarSuministros() +CreaProveedor() +CrearEstablecimiento() +ModificarProveedor() +ModificarEstablecimiento() +EliminarProveedor() 1 +EliminarEstablecimiento() +ConsultaProveedor() +ConsultarEstablecimiento()

1

Publicacion Suministros -Identificador -Siministro -Estado +CrearPublicacionSuministros() +ModificarPublicacionSuministros() +EliminarPublicacionSuministros() +ConsultarPublicacionSuministros()

Diagrama de Clases 5. Suministros Realizados

2.5.1. REQ04. Publicación y control de los suministros realizados

Diagrama de secuencia

UK-01 Proveedor :Pubicacion Suministros :Suministros Base de Datos

CrearPublicacionSuministros

ConsultarSuministros()

Inf

Insertar

Boolean

Boolean

Diagrama de Secuencia 15. Publicación y control de los suministros realizados

76 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.5.2. REQ09. Aceptación y control de los suministros realizados

Diagrama de secuencia

Diagrama de Secuencia 16. Aceptación y control de los suministros realizados

2.5.3. REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor

Diagrama de secuencia

UK-03 Administrador :Pubicacion Suministros :Suministros Base de Datos

ModificarPublicacionSuministros

ConsultarSuministros

Inf

Modificar

Boolean

Boolean

Diagrama de Secuencia 17. Aceptación y control de los suministros realizados entre proveedor y distribuidor

77 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.6. Noticias

Diagrama de Clases

Distribuidor Proveedor -Identificador -Identificador -Nombre -Nombre -Cif -Sector -Descripcion -Especialidad -Tipo -CIF -Web -Descripcion -Direccion -Web Noticias -CP -Direcion -Identificador -Poblacion -CP -Noticia -Provincia -Poblacion -Proveedor -Pais -Provincia -Distribuidor -Nombre_Contacto -Pais 1 1 +CrearNoticias() 1 1 -Apellidos_Contacto -Nombre_Responsable +ModificarNoticias() -Telefono -Telefono +EliminarNoticias() -Movil -Movil +ConsultarNoticias() -Fax -Fax -Email -Email -Establecimientos -Estado -Estado +CreaProveedor() +CrearDistribuidor() +ModificarProveedor() +ModificarDistribuidor() +EliminarProveedor() +EliminarDistribuidor() +ConsultaProveedor() +ConsultarDistribuidor()

Diagrama de Clases 6. Noticias

2.6.1. REQ19. Creación de noticias para distribuidores y/o proveedores

Diagrama de secuencia

UK-03 Administrador :Noticias Base de Datos

CrearNoticias()

Insertar

Boolean

Boolean

Diagrama de Secuencia 18. Creación de noticias para distribuidores y/o proveedores

78 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.6.2. REQ05. Consulta de noticias

Diagrama de secuencia

UK-01 Proveedor :Noticias

ConsultarNoticias()

Inf

Diagrama de Secuencia 19. Consulta de noticias

2.6.3. REQ10. Consulta de noticias

Diagrama de secuencia

UK-02 Distribuidor :Noticias

ConsultarNoticias

Inf

Diagrama de Secuencia 20. Consulta de noticias

79 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.7. Consultas

Diagrama de Clases

Distribuidor Proveedor -Identificador -Identificador -Nombre -Nombre -Cif -Sector -Descripcion -Especialidad -Tipo -CIF -Web -Descripcion -Direccion -Web -CP -Direcion -Poblacion -CP -Provincia -Poblacion -Pais -Provincia -Nombre_Contacto -Pais -Apellidos_Contacto -Nombre_Responsable -Telefono -Telefono -Movil -Movil -Fax -Fax -Email -Email -Establecimientos -Estado -Estado +CreaProveedor() +CrearDistribuidor() +ModificarProveedor() +ModificarDistribuidor() +EliminarProveedor() +EliminarDistribuidor() +ConsultaProveedor() +ConsultarDistribuidor()

Diagrama de Clases 7. Consultas

2.7.1. REQ07. Consulta de los distribuidores que ha suministrado

Diagrama de secuencia

UK-01 Proveedor :Distribuidor

ConsultarDistribuidor()

Inf

Diagrama de Secuencia 21. Consulta de los distribuidores que ha suministrado

80 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2.7.2. REQ11. Consulta de los proveedores que le han suministrado

Diagrama de secuencia

UK-02 Distribuidor :Proveedor

ConsultaProveedor()

Inf

Diagrama de Secuencia 22. Consulta de los proveedores que le han suministrado

81 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

82 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

CAPÍTULO 3. DISEÑO ORIENTADO A OBJETOS

3.1. Diseño de la arquitectura

Para la implementación del proyecto tendremos en cuenta diferentes arquitecturas posibles: La arquitectura Cliente-Servidor y Peer-to-Peer (P2P).

La arquitectura Cliente-Servidor consiste en las peticiones realizadas por los diferentes clientes al servidor y este les proporciona una respuesta. Este sistema es ventajoso por ser operativo multiusuario distribuido por la red. Esta arquitectura tiene su volumen de proceso repartido entre los clientes y el servidor central, y esto es importante porque ofrece una ventaja organizativa, al tener la información centralizada, y porque la separación de roles facilita y clarifica el diseño. La separación entre cliente y servidor es una separación de tipo lógico. Para el desarrollo del proyecto se propone un servidor web. En concreto usaremos el servidor web de , el Internet Information Service (IIS).

Desde el punto de vista funcional, se puede definir la computación Cliente-Servidor como una arquitectura distribuida, que permite a los usuarios finales obtener acceso a la información de forma transparente aún en entornos multiplataforma. En el modelo Cliente-Servidor, el cliente envía un mensaje solicitando un determinado servicio al servidor (hace una petición), y este envía uno o varios mensajes con la respuesta (provee el servicio). La mayoría del trabajo pesado se hace en el proceso llamado servidor y los procesos cliente sólo se ocupan de la interacción con el usuario. Esta arquitectura permite distribuir físicamente los procesos y los datos de una forma más eficiente; en cuanto a la computación distribuida afecta directamente al tráfico de la red, reduciéndolo en gran parte.

Figura 2. Cliente-Servidor

83 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

 Ventajas

1. Control centralizado: Permite al servidor web mantener un control centralizado de todo el despliegue. Esta centralización también facilita la tarea de poner al día datos u otros recursos.

2. Seguridad: Toda la información pasa por un nodo central, esto le da la posibilidad al servidor web de mantener un control constante de toda la información que viaja por la red y de aplicar protocolos de seguridad.

3. Red escalable: Permite aumentar la red de clientes como la de servidores de forma independiente.

4. Fácil mantenimiento: Debido a que las aplicaciones de los clientes están controladas totalmente por el servidor central, el mantenimiento residirá en su mayoría en este servidor, disminuyendo en gran medida su coste.

 Desventajas

1. Problemas de congestión: Las situaciones de abundante tráfico de datos pueden llegar a colapsar el servidor central, y así impedir a este satisfacer todas las peticiones de los clientes.

2. Sistema vulnerable: En caso de fallo del servidor central, todo el sistema queda inutilizado.

3. Escalabilidad acotada: Un aumento excesivo del número de clientes, puede provocar que el servidor no tenga la capacidad de responder a todas sus peticiones.

4. Compartición de recursos: Todos los clientes de la red no comparten recursos.

Como alternativa a la arquitectura Cliente-Servidor, surge la arquitectura Peer-to-Peer (P2P). Esta última es una red de computadoras que funciona sin clientes ni servidores fijos; sino que funciona como un conjunto de nodos. Los nodos son iguales entre sí y tienen doble funcionalidad: realizan tanto las funciones de servidor como de cliente.

Estas redes de nodos admiten el intercambio de información (sea cual sea su formato), de forma directa entre dos ordenadores conectados. Consecuentemente, las redes sirven para intercambiar información en forma directa entre uno o varios usuarios y los nodos pueden ejercer de servidores o clientes.

84 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figura 3. P2P

 Ventajas:

1. Descentralización de la red: Al eliminar el nodo central, la red queda totalmente descentralizada, eliminando los problemas de congestión.

2. Compartición de recursos: Todos los nodos de la red comparten sus recursos para aumentar la eficiencia.

3. Escalabilidad: El número de componentes de la red puede crecer sin límite. De hecho cuanto más grande sea una red P2P, mayor será su eficiencia. Los nodos de las redes P2P comparten recursos, de este modo cuantos más nodos se hallen conectados a la red, mayores serán los recursos globales del sistema.

4. Sistema robusto: Si un nodo falla, el resto sigue funcionando con normalidad. No existen nodos centrales que puedan comprometer al funcionamiento global de la red.

85 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

 Desventajas:

1. Seguridad: Los datos no pasan por un punto central, sino que viajan libremente por la red

2. Pérdida de control: Debido a la eliminación del nodo central, es necesario trasladar toda la lógica de negocio hacia el cliente, aumentando considerablemente la complejidad de las aplicaciones y perdiendo la posibilidad de mantener un control centralizado de estas.

3. Mantenimiento inexistente: Esta red está formada únicamente por clientes, provocando que el mantenimiento sea inexistente.

4. Robustez de la información: En caso de actualización de la información, es muy costoso informar a todos los nodos, para que se actualicen.

En la siguiente tabla se muestra una comparativa resumida de ambas arquitecturas:

Figura 4. Comparativa Cliente-Servidor y P2P

86 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Una vez analizadas las dos alternativas, para esta aplicación es más recomendable usar la arquitectura Cliente-Servidor. Ambas tienen sus ventajas e inconvenientes, pero para la aplicación son muy importantes los temas de seguridad, escalabilidad, mantenimiento, robustez de los datos y ausencia de problemas de congestión. Estas características las cumple, en mayor cantidad, la arquitectura Cliente-Servidor. Sí que es cierto que el tema de la congestión no es posible resolverlo, pero tampoco será un problema diario sino en momentos ocasionales.

Una posible solución a la vulnerabilidad del sistema seria la replicación (dos o más) del servidor web. En caso de producirse una caída o colapso del sistema, se activaría un segundo servidor que daría servicio a las peticiones de los clientes.

3.1.1. Diagrama de Despliegue

Terminal

Navegador Web

*

<> Presentación

HTTP conexión

Servidor Web

IIS

* * * <> Lógica Interfaz *

* <> Lógica Negocio *

<> Acceso a Datos * *

SQL Server

Diagrama de Despliegue 1. Diagrama de Despliegue Principal

87 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2. Diseño por capas

En el diseño de clases del proyecto, se usará la arquitectura de programación por capas. En esta arquitectura los objetos se distribuyen por su funcionalidad. La podemos dividir en tres: la capa de Interfaz, compuesta por los objetos que interactúan con los usuarios de la aplicación, como podrían ser los formularios, diálogos, etc; la capa de Negocio, que es el enlace entre la capa de interfaz y la capa de datos (donde estará toda la funcionalidad/lógica de la aplicación) y la capa de Datos, que está formada por los objetos que envían y reciben información al comunicarse con el Sistema Gestor de Base de Datos.

La principal ventaja del diseño por capas es que cada una de ellas es independiente de las demás; asi pues si se necesita el rediseño e implementación de una parte del código sólo es necesario modificar la capa implicada.

Figura 5. Diseño por Capas.

88 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1. Capa de Interfaz

Esta capa interactúa con el usuario y donde se definen objetos más relevantes que interactúan con el usuario. Estos objetos deben cumplir los requisitos de usabilidad: ha de tener, entre otras características, un aspecto amigable, de fácil uso e intuitivo.

Para el diseño de dichos objetos hemos tenido en cuenta diferentes posibilidades: html, asp, php, asp.net, entro otros. En este proyecto sólo se tendrán en cuenta dos de los lenguajes de programación web más usados hoy en día, PHP y Asp.Net.

“PHP 1es un lenguaje de programación interpretado y diseñado originalmente para la creación de páginas web dinámicas. Es usado principalmente en la interpretación por parte del servidor (server-side scripting), pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas, incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.

PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994; sin embargo la implementación principal de PHP es producida ahora por The PHP Group y sirve como el estándar de facto para PHP al no haber una especificación formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre.”

“ASP.NET 2es un framework para aplicaciones web desarrollado y comercializado por Microsoft. Es usado por programadores para construir sitios web dinámicos, aplicaciones web y servicios web XML. Apareció en enero de 2002 con la versión 1.0 del .NET Framework, y es la tecnología sucesora de la tecnología Active Server Pages (ASP). ASP.NET está construido sobre el , permitiendo a los programadores escribir código ASP.NET usando cualquier lenguaje admitido por el .NET Framework.

Cualquier persona que está familiarizada con el desarrollo de aplicaciones web sabrá que el desarrollo web no es una tarea simple. Ya que mientras que un modelo de programación para aplicaciones de uso común está muy bien establecido y soportado por un gran número de lenguajes, herramientas de desarrollo, la programación web es una mezcla de varios lenguajes de etiquetas, un gran uso de lenguajes de script y plataformas de servidor. Por desgracia para el programador de nivel intermedio, el conocimiento y habilidades que se necesitan para desarrollar aplicaciones web tienen muy poco en común con las que son necesarias en el desarrollo tradicional de aplicaciones.”

Los dos lenguajes son útiles para el desarrollo el proyecto, pero se usará la tecnología ASP.Net 3.5 y en consecuencia, el entorno de programación Visual Studio 2008. Por las siguientes razones:

1 Definición en http://es.wikipedia.org/wiki/Php 2 Definición en http://es.wikipedia.org/wiki/ASP.NET

89 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

1. Velocidad: Todas las aplicaciones. NET, las aplicaciones ASP.NET se compilan. Este hecho provoca que su funcionamiento sea mucho más rápido que PHP y que su código es interpretado. Para lograr el mismo efecto con PHP, Zend, un acelerador de PHP debe estar instalado en el servidor, y esto raramente se produce en la mayoría de empresas de alojamiento web. También, OO (Orientado a Objetos) es mucho más rápido en ASP.NET que en PHP.

2. Separación de la capa de interfaz de la lógica de negocio: El ASP.NET, facilita el trabajo con la separación por capas. Es un tema importante por el mantenimiento del desarrollo y la planificación.

3. Larga experiencia: El equipo de desarrollo tiene experiencia en la programación de aplicaciones web con ASP, con el lenguaje C, C++ y C#; la herramienta de desarrollo Visual Studio y la reutilización de código almacenado en la biblioteca de aplicaciones.

4. Soporte: Visual Studio tiene toda una librería de soporte tecnológico que facilita a la hora de programar. También tiene todo el soporte del IntelliSense3. Esta herramienta de desarrollo ofrece distintos módulos que en un futuro pueden llegar a interesar: el CrystalReports, para la generación de Informes o el Silverlight, para nuevas funciones multimedia, como la reproducción de vídeos, gráficos vectoriales y animaciones.

Otra razón seria las ventajas que nos proporciona la plataforma .NET, con el entorno Visual Studio. Microsoft .NET Framework, es un framework de aplicaciones corriendo bajo los sistemas operativos Microsoft Windows. Contiene un conjunto de librerías que dan solución a muchos problemas comunes de la programación y una máquina virtual, encargada de manejar la ejecución de programas escritos para el framework.

Microsoft .NET Framework fue diseñado para cumplir los objetivos siguientes:

 Proporcionar un entorno coherente de programación orientado a objetos.  Proporcionar un entorno de ejecución de código que reduzca lo máximo posible la implementación de software y los conflictos de versiones.  Ofrecer un entorno de ejecución de código que fomente la ejecución segura del mismo, incluso del creado por terceras personas desconocidas o que no son de plena confianza.  Proporcionar un entorno de ejecución de código que elimine los problemas de rendimiento de los entornos en los que se utilizan secuencias de comandos o intérpretes de comandos.  Ofrecer al programador una experiencia coherente entre tipos de aplicaciones muy diferentes, como las basadas en Windows Forms o en entornos Web.  Basar toda la comunicación en estándares del sector para asegurar que el código de .NET Framework se puede integrar con otros tipos de código.

3IntelliSense: es la aplicación de autocompletar, integrada en Visual Studio.

90 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.1. Pantalla principal UK-01 Proveedor

En la pantalla principal para los proveedores, destacan tres zonas: la cabecera marcada con el recuadro rojo, que remarca información del proveedor y la opción Cerrar Sesión; en el menú con recuadro azul, están las acciones que puede realizar el proveedor; y por último el contenedor, donde se visualizan los datos de las acciones que realiza el proveedor. Por ejemplo podemos observar que seleccionado el campo del menú Datos Propios, se visualiza en el contenedor, toda la información del proveedor. A lo largo de toda la ejecución del proveedor, se mantendrá constantes tanto el menú como la cabecera.

Figura 6. Plantilla de página principal UK-01 Proveedor

91 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.2. REQ01. Introducir los productos para suministrar

Una de las acciones que puede realizar el proveedor, es visualizar en la parte del contenedor, el listado de productos del que dispone para poder suministrar a los Distribuidores. En la Figura 7, se muestra el listado de todos los productos propios, con la información relevante de cada uno de ellos y el estado en que se encuentran. Para poder introducir nuevos productos a este listado, hay la acción Nuevo Producto, que lleva la Figura 8. En esta pantalla se observa un formulario, donde el proveedor introducirá los datos necesarios para generar este nuevo producto.

Figura 7. Lista de Productos

Figura 8. Insertar nuevo Producto

92 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.3. REQ02. Actualizar precios

En la pantalla de modificar la información sobre el producto, Figura 9, los proveedores, sólo tendrán la opción de introducir el nuevo precio del producto seleccionado y la fecha de aplicación de este precio. Se tendrá en cuenta, a la hora de la selección la nueva fecha de aplicación del nuevo precio, el Acuerdo entre proveedor y CooBarDistribution. Si no se cumple, el sistema informará, tal como se observa en la Figura 9, mostrando el texto en rojo: “Fecha de aplicación de nuevo precio incorrecta, revise el Acuerdo”.

Figura 9. Actualizar precios

93 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.4. REQ03. Recibir peticiones de suministro

Cuando los proveedores seleccionan la acción del menú Suministros, visualizan el listado de pedidos a suministrar a los establecimientos. Se diferenciará los pedidos cuales han sido ya leídos por el proveedor y cuales están pendientes de leer, Figura 10. Seleccionado un pedido, se muestra los detalles del suministro, Figura 11.

Figura 10. Recibir peticiones de suministro

Figura 11. Detalle del suministro

Figura 12. Detalle del Producto

94 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.5. REQ04. Publicación y control de los suministros realizados

Para la publicación de los suministros realizados, se ha de pasar por diferentes estados. Inicialmente, el proveedor deberá publicar la factura o declaración del suministro entregado. Como se puede observar en la Figura 13, las declaraciones Pendientes están representadas con el estado ( ). En este estado, las declaraciones aun no se han publicado. Las que aún están pendientes, las diferenciaremos en dos tipos: los suministros que ya han sido entregados al distribuidor se representan ( ). Éstos ya pueden ser publicados para la aceptación de los distribuidores en cuestión. En cambio, representamos con ( ) los pedidos que aún no han sido entregados y/o los pedidos para los cuales el distribuidor aún no ha indicado que los haya recibido. En este último caso, no se puede hacer ninguna acción.

Una vez publicada la declaración, pasará a ser una declaración Declarada, representada con el estado ( ). En este estado el proveedor no puede hacer nada, sólo esperar que el distribuidor acepte la declaración. Una vez confirmada y pagada por el distribuidor, la declaración pasara a ser Aceptada, que tendrá el estado ( ), Figura14. En este estado el proveedor deberá confirmar el pago de la comisión, tal y como establece el acuerdo con la empresa. Un vez hecho y confirmado el pago, la declaración pasara a ser Saldada, representada con el estado ( ).

En todo momento se podrá seleccionar una declaración y ver el detalle de todos los productos que la componen, el importe, y el importe de la comisión de cada uno de ellos, Figura 15.

Figura 13. Declaraciones Pendientes a ser Publicados

Figura 14. Publicación y control de los suministros realizados

95 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figura 15. Publicación y control de los suministros realizados

3.2.1.6. REQ05. Consulta de noticias

En este apartado se puede ver la gestión de consulta de noticias para un proveedor. En la Figura 16, está el listado de noticias, filtrado por el estado leído, o no leído. Este filtro podrá ser seleccionado por el desplegable, denominado tipo de mensaje. Pulsando Seleccionar, se procede a visualizar el contenido del mensaje, tal como se muestra en la Figura 17.

Figura 16. Listado de Noticias

Figura 17. Noticia

96 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.7. REQ06. Aceptación y consulta del acuerdo con la empresa

Después de que el proveedor se haya logado, el sistema comprueba si éste ha aceptado el acuerdo con la empresa. En caso negativo se le muestra la pantalla de la Figura 18, para que acepte el acuerdo. En esta pantalla se remarca que no le está permitido acceder a su cuenta hasta que acepte las condiciones del acuerdo. También puede consultar el acuerdo en la opción del menú Acuerdo.

Figura 18. Aceptación y consulta del acuerdo con la empresa

97 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.8. REQ07. Consulta de los distribuidores que ha suministrado

En las siguientes figuras, se encuentra el listado de establecimientos que ha suministrado el proveedor. También se encuentran los datos relevantes como el distribuidor del establecimiento, Figura 19. Seleccionando alguno de ellos pasaremos a ver la información de dicho local, Figura20.

Figura 19. Listado de los establecimientos que ha suministrado

Figura 20. Establecimiento que ha suministrado

98 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.9. Diagrama de clases de la interfaz del proveedor

Diagrama de Clases 8. Diagrama de clases de la interfaz del proveedor

99 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.10. Pantalla principal UK-02 Distribuidor

En la pantalla principal para los usuarios con rol de distribuidor, destacan tres zonas: la cabecera marcada con el recuadro rojo remarca la información del proveedor, la opción Cerrar Sesión y la selección del establecimiento que se quiere gestionar; en el menú con recuadro azul están ubicadas las acciones que puede realizar el distribuidor y por último el contenedor, en el cual se visualizan los datos de las acciones que realiza el distribuidor. Por ejemplo, podemos observar que seleccionado el campo del menú Datos Propios, se visualiza en el contenedor, toda la información del Distribuidor. A lo largo de toda la ejecución del distribuidor, se mantendrá constantes tanto el menú como la cabecera.

Figura 21. Plantilla de página principal UK-02 Distribuidor

100 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.11. REQ08. Hacer pedidos de suministros

Para poder hacer pedidos de suministros, los distribuidores accederán al menú seleccionado Suministros. El sistema mostrará los pedidos almacenados, Figura 22. Tendrá la opción de volver a pedir un suministro almacenado o crear uno nuevo. Al crear o volver a enviar uno almacenado, se visualizan los detalles del pedido, Figura 23. En esta pantalla, hay la opción de agregar nuevos productos o eliminar los ya existentes ( ).

Figura 22. Listado de suministros

Figura 23. Detalle del Suministro

Figura 24. Seleccionar un nuevo producto

101 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.12. REQ09. Aceptación y control de los suministros realizados

Para la aceptación de los suministros recibidos, el distribuidor podrá observar las declaraciones Declaradas por el proveedor, que son representadas con el estado ( ). En este estado el distribuidor debe aceptar la declaración una vez emitido el pago, Figura 25. Una vez pagado el suministro y aceptado el pago, la declaración pasará a ser Aceptada, y tendrá el estado ( ), Figura26.

En todo momento se podrá seleccionar una declaración y ver en detalle todos los productos que la componen, Figura 27.

Figura 25. Declaraciones pendientes

Figura 26. Declaraciones Aceptadas

Figura 27. Detalle de la Declaración

102 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.13. REQ10. Consulta de noticias

En este apartado se puede ver la gestión de consulta de noticias para un distribuidor. En la Figura 28, se listan las noticias, filtradas por el estado leído o no leído. Este filtro podrá ser seleccionado en el desplegable tipo de mensaje. Pulsando Seleccionar, se procede a visualizar el contenido del mensaje, tal y como se muestra en la Figura 29.

Figura 28. Listado de Noticias

Figura 29. Noticia

103 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.14. REQ11. Consulta de los proveedores que le han suministrado

En las siguientes figuras, se encuentran los listados con los proveedores que han suministrado un establecimiento determinado. En estas listas se pueden observar los datos relevantes de los proveedores, Figura 30. Seleccionando algún proveedor, pasaremos a ver sus datos. Los datos que se pueden ver, son la información del proveedor, Figura31, y los productos que puede suministrar ese proveedor, Figura 32. También se podrá seleccionar cada producto y visualizar su información, Figura 33.

Figura 30. Lista de proveedores

Figura 31. Información del Proveedor

104 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figura 32. Lista de Productos

Figura 33. Información del Producto

105 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.15. REQ12. Consulta de productos

En consulta de productos, podremos realizar dos acciones. Primero, está la consulta de todos los productos del sistema, Figura 34, y el detalle de cada producto, Figura 35. Segundo, está la lista de la compra, donde el distribuidor selecciona los productos genéricos con los que quiere ser abastecido, Figura 36. Seguidamente, el sistema buscará el mejor precio de cada producto, generando automáticamente una mejor lista de la compra, Figura 37.

Figura 34. Lista de Productos

Figura 35. Información del Producto

106 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figura 36. Lista de la compra

Figura 37. Resultado de la lista de la compra

107 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.16. Diagrama de clases de la interfaz del distribuidor

Diagrama de Clases 9. Diagrama de clases de la interfaz del distribuidor

108 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.17. Pantalla principal UK-03 Administrador

En la pantalla principal de los administradores, destacan tres zonas: la cabecera marcada con el recuadro rojo, que remarca la información del administrador y la opción Cerrar Sesión; el menú con recuadro azul, contiene las acciones que puede realizar el administrador; y por último el contenido muestra los datos de las acciones que realiza el administrador. A lo largo de toda la ejecución del distribuidor, se mantendrá constantes tanto el menú como la cabecera.

Figura 38. Pantalla principal UK-03 Administrador

109 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.18. REQ13. Dar de alta a un distribuidor

En este apartado veremos la interface gráfica usada para dar de alta a un distribuidor en el sistema. En la Figura 39, se muestran todos los distribuidores del sistema con su información relevante y el estado en que se encuentran. Seleccionando un distribuidor, el sistema muestra la información de éste, Figura 40. También se podrá ver el listado de establecimientos del distribuidor, Figura 41, y el detalle de estos establecimientos, Figura 42.

Figura 39. Listado de Distribuidores

Figura 40. Información del Distribuidores

110 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figura 41. Listado Establecimientos del Distribuidor

Figura 42. Información del Establecimiento

111 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.19. REQ14. Dar de alta a un proveedor

En este apartado veremos la interface gráfica usada para dar de alta a un proveedor en el sistema. En la Figura 43, se muestran todos los proveedores del sistema. Se puede consultar su información relevante y el estado en que se encuentran. Seleccionando un proveedor, el sistema muestra la información de éste, Figura 44.

Figura 43. Listado de proveedores

Figura 44. Información del Proveedor

112 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.20. REQ15. Gestionar el acuerdo con la empresa

Una vez creado un proveedor, automáticamente se ha de generar el acuerdo, para que el proveedor pueda ser dado de alta. En la Figura 45, se puede observar un acuerdo entre un proveedor y la empresa.

Figura 45. Creación Acuerdo

3.2.1.21. REQ16. Controlar la actualización de los productos de los proveedores

Una de las funciones del administrador, es el control de los productos que van dando de alta los proveedores, ya sean creaciones o modificaciones. En la Figura 46, se puede observar un listado de productos que están pendientes de validación. Seleccionando el ( ), se acepta el producto y éste dejará de estar en el listado de pendientes.

Figura 46. Aceptación de nuevos Productos

113 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.22. REQ17. Aceptación y control de los suministros realizados entre proveedor y distribuidor

Para la aceptación de las declaraciones saldadas, previamente el proveedor y el distribuidor deberán ir confirmando los diferentes estados. Una vez confirmados, la declaración pasará a ser Saldada, lo que significa que el proveedor habrá abonado la parte correspondiente a la comisión pactada en el acuerdo. Este estado estará representado por ( ), Figura 47.

En todo momento se podrá seleccionar una declaración y ver el detalle de todos los productos que la conforman, Figura 48.

Figura 47. Declaraciones Saldadas

Figura 48. Detalle de la Declaración

114 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.23. REQ18. Gestión de todos los usuarios asociados al sistema

A parte de los proveedores y distribuidores, se pueden dar de alta nuevos Administradores. En la Figura 49, se observa el listado de administradores que hay en el sistema y el estado en que se encuentran. Modificando un administrador, se podrá ver la información del mismo, Figura 50.

Por otra parte, también se podrá acceder a visualizar a todos los usuarios que están en la aplicación, así como su estado, Figura 51. Seleccionándolos se podrá ver su información, Figura 52.

Figura 49. Listado de administradores

Figura 50. Información del administrador

115 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figura 51. Listado de los usuarios

Figura 52. Información del usuario

116 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.24. REQ19. Creación de noticias para distribuidores y/o proveedores

El administrador tendrá la posibilidad de generar noticias para los diferentes usuarios de la aplicación. Inicialmente, se muestra el listado de noticias ya creadas en el sistema y el estado en que se encuentran, Figura 53. En la Figura 54, se puede observar el detalle de una noticia y su destinatario.

Figura 53. Listado de Noticias

Figura 54. Creación de una Noticia

117 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.25. Diagrama de clases de la interfaz del administrador

Diagrama de Clases 10. Diagrama de clases de la interfaz del administrador

118 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.26. REQ20. Logarse en línea

A continuación podemos observar la pantalla de entrada al sistema, que servirá para que los usuarios puedan logarse y entrar en sus cuentas correspondientes.

Figura 55. Logarse

3.2.1.27. REQ21. Desconectarse en línea

En todo momento el usuario podrá cerrar la sesión y salir de la aplicación. Esto se producirá seleccionando la opción Cerrar Sesión.

Figura 56. Desconectarse

119 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.28. REQ22. Cambiar contraseña

Todos los usuarios tendrán la opción de cambiar su contraseña, seleccionando la opción Cambiar Contraseña del menú propio de cada usuario.

Figura 57. Cambiar Contraseña

120 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.1.29. Mantenimiento

Para el buen funcionamiento de la aplicación es necesario crear las opciones de mantenimiento, que gestionará el administrador. Estos manteamientos se basan en: Países, Figura 58, Provincias, Figura 59, Tipos de proveedores, Figura 60 y Especialidades, Figura 61.

Figura 58. Mantenimiento Países

Figura 59. Mantenimiento Provincias

121 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figura 60. Mantenimiento Tipos

Figura 61. Mantenimiento Especialidades

122 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.2. Capa de Negocio

En la capa de negocio es donde se encuentra toda la lógica del programa y las estructuras de los objetos y de los datos. La lógica y la estructura son los encargados de la gestión de la información almacenada en la capa de datos y del procesamiento de la información introducida o solicitada por el usuario de la capa de interfaz. Se podría decir que es el corazón de la aplicación, porque comunica con las otras dos capas; la de interfaz y la de datos.

Como hemos comentado anteriormente, hemos seleccionado el lenguaje ASP.Net, para la capa de interfaz. También se ha indicado en apartados anteriores, que esta elección implica su desarrollo en el entorno de programación . A su vez, provoca que los lenguajes de programación se reduzcan a los lenguajes que soporta dicha plataforma (C#, VB.NET, C++).

Entre estos lenguajes, el primero que se descarta es C++, ya que C# incorpora todas la funcionales de C++ y una mejor y completa maniobrabilidad en la programación orientada a objetos y la programación Web. Entre los lenguajes VB.NET y C#, hay pocas diferencias a destacar, por ello el factor que ha decantado la elección de C#, ha sido la mayor experiencia del equipo de desarrollo bajo este lenguaje.

C# es un lenguaje de alto nivel. Se aproxima más al lenguaje natural que al lenguaje máquina o binario, conocido como lenguaje de bajo nivel. Los lenguajes de alto nivel expresan los algoritmos de una manera adecuada a la capacidad cognitiva humana, facilitando así su comprensión y aprendizaje. Además, proporcionan al programador la posibilidad de independizarse del soporte físico, con la única condición, de que exista un traductor o compilador que traduzca las instrucciones de este lenguaje a un lenguaje comprensible por la máquina.

C#4 (pronunciado si sharp en inglés) es un lenguaje de programación orientado a objetos desarrollados y estandarizados por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA 5e ISO6.

C# se denomina como un lenguaje nativo de la plataforma .NET. Aunque .NET admita varios lenguajes, C# es el único que fue diseñado especialmente para esta plataforma. Esta peculiaridad lo convierte en un lenguaje enormemente potente dentro de la plataforma .NET, ya que aprovecha todas las posibilidades que ofrece dicha plataforma. Fue construido bajo los principios de Java y C++, mezclando las mejores características de ambos. A continuación se enumeran las características más importantes de este lenguaje:

1. Lenguaje Auto-contenido: Cada archivo de C# es único y no necesita fichero adicionales.

4 http://es.wikipedia.org/wiki/C_Sharp

5 Ecma International es una organización internacional basada en membrecías de estándares para la comunicación y la información. 6 Organización Internacional para la Estandarización

123 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

2. Lenguaje Homogéneo: Los tamaños de los tipos básicos son fijos e independientes del tipo de compilador. Esto supone una mayor portabilidad. 3. Lenguaje Moderno: C# ofrece herramientas con las que abordar los principales problemas a los que un programador se puede enfrentar hoy día. 4. Lenguaje Orientado a Objetos: C# admite las principales capacidades típicas de este paradigma de programación. 5. Gestión Automática de la Memoria: El programador se abstrae totalmente del tratamiento de memoria, dejando este cometido al Garbage Collector del 7CLR (Common Language Runtime). 6. Sistema de Tipos Unificado: Todos los tipos de C# derivan de un único tipo, System.Object. 7. Fuerte Seguridad de Tipos: C# presenta fuerte seguridad en el tratamiento de los tipos y sus conversiones.

7 Componente de máquina virtual de la plataforma .Net de Microsoft

124 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.2.1. Diagrama de clases de la capa de Negocio

Estas clases no poseen ninguna relación entre sí, tratan la información que reciben de la capa de datos, para mostrarla en la capa de interfaz.

Diagrama de Clases 11. Global

125 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.3. Capa de Datos

Por último tenemos la capa de Datos, que es la encargada de realizar transacciones con el Sistema Gestor de Bases de Datos, para integrar o adquirir información del sistema. Esta capa debe realizar las transacciones de tal forma que haya consistencia en los datos. Así mismo, los datos se han de integrar o adquirir en la Base de Datos, de manera consistente y precisa. Esta capa envía la información a la capa de negocio para que sea ejecutada e ingresada en objetos según se necesite. Esto se denomina encapsulamiento.

Esta capa va ser un poco especial, ya que se va usar una tecnología nueva llamada Language Integrated Query (LINQ), que se encarga de las transacciones con el SGBD.Es una de las aplicaciones de Microsoft que nos ofrece Visual Studio.

“Language Integrated Query (LINQ) 8 es un proyecto de Microsoft que agrega consultas nativas semejantes a las de SQL a los lenguajes de la plataforma .NET, inicialmente a los lenguajes Visual Basic .NET y C#. Muchos conceptos que LINQ ha introducido fueron originalmente probados en Cω, un proyecto de investigación de Microsoft.

LINQ define operadores de consulta estándar que permiten a lenguajes habilitados con LINQ filtrar, enumerar y crear proyecciones de varios tipos de colecciones usando la misma sintaxis. Tales colecciones pueden incluir arreglos (vectores), clases enumerables, XML, conjuntos de datos desde bases de datos relacionables y orígenes de datos de terceros. El proyecto LINQ usa características de la versión 2.0 del .NET Framework, nuevos ensamblados relacionados con LINQ, y extensiones para los lenguajes C# y Visual Basic .NET. Microsoft ha distribuido una versión previa del LINQ, consistente de estas bibliotecas y compiladores para C# 3.0 y Visual Basic 9. Otros lenguajes, como F# y Nemerle, han anunciado brindar soporte preliminar.”

A continuación mostraremos las ventajas de la programación con LINQ:

1. Provee un modelo de programación de consultas y una sintaxis que puede ser usada para todos los tipos de datos: documentos XML, base de datos, clave del registro.

2. Promueve una optimización en los tiempos de codificación y resolución de errores. Debemos tener en cuenta que se verifica el código en tiempo de compilación.

3. Hace innecesario tener que escribir las sentencias SQL como cadenas de texto dentro de la aplicación.

4. Ofrece seguridad frente a los ataques de Injection SQL9, al no tener código SQL, sino que está integrado en un modelo de datos; es muy complicado recibir estos ataques.

8 http://es.wikipedia.org/wiki/Language_Integrated_Query 9 es una vulnerabilidad informática en el nivel de las entradas a la base de datos de una aplicación web.

126 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Debido a la elección de LINQ, como conector con el Sistema Gestor de Base de Datos (SGBD), repercute en la elección de este. Inicialmente se ha tenido en cuenta los tres SGDB más habituales del mercado: Oracle, SqlServer y MySQL.

Oracle ha sido el primer SGBD que se ha descartado. Se considera uno de los SGBD más completos que ofrece: soporte de transacciones, estabilidad, escalabilidad y soporte multiplataforma. Pero para una aplicación Web no es el más recomendado, debido a que no se necesita tanta potencia sino más agilidad y rapidez entre las transacciones. Dicho de otra manera: más sencillez. También cabe remarcar, que Oracle es un SGBD con un coste más elevado que los demás.

Los otros dos SGDB, son óptimos para un aplicación Web, y se podía haber elegido cualquiera de los dos. Pero al usar Visual Studio y LINQ, que son herramientas de Microsoft, es más recomendable por el soporte y la integración que proporcionan, usar SGDB SQLServer, que también es un producto de Microsoft. Además, teniendo en cuenta el aspecto económico, SQLServer ofrece una versión denominada express, cuya licencia es gratuita para la docencia.

A continuación se verá una vista general de las tablas de la Base de Datos y de sus relaciones. En los siguientes puntos se observarán éstas, subdivididas por tareas.

3.2.3.1. Esquema Global de las relaciones entre las tablas de la base de datos

A continuación, se detallarán las diferentes tablas necesarias para los requisitos específicos de la aplicación en la base de datos, empezando por el esquema global de las tablas, Tablas BD 1.

127 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Tablas BD 1. Esquema global de la Base de Datos

128 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.3.2. Esquema de relaciones de usuarios

A continuación, se pueden observar en detalle las diferentes tablas que representan a los diferentes usuarios de la aplicación. Primero, se crea una tabla genérica de usuarios, que engloba los tres tipos existentes: distribuidores, proveedores y administradores. También, se puede observar la tabla acuerdo donde albergará los acuerdos entre los proveedores y los administradores. Y por último, los establecimientos de cada distribuidor.

Tablas BD 2. Tablas de Usuarios

129 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.3.3. Esquema de relaciones de las tablas de mantenimiento

Seguidamente, se pueden observar en detalle las diferentes tablas de mantenimiento de la aplicación. Información estándar como países y provincias, tipos de proveedores y especialidades de estos tipos.

Tablas BD 3. Tablas de Mantenimiento

3.2.3.4. Esquema de relaciones de las tablas de noticias

Posteriormente, se remarcará las diferentes tablas que hacen referencia al envío de noticias. Estas noticias son creadas por el administrador para los diferentes usuarios de tipo proveedor o distribuidor.

Tablas BD 4. Tablas de Noticias

130 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.3.5. Esquema de relaciones de las tablas de Productos

Seguidamente, se mostrarán las diferentes tablas que hacen referencia a la creación de productos de los proveedores. Como tabla importante figura la de productos, que representa toda la mercancía que podrá suministrar un proveedor. También se puede observar que cada producto es de una especialidad y que un establecimiento puede tener múltiples especialidades; así existirá una relación de productos que se pueden suministrar en cada establecimiento. Además está la generalización de productos, en su tabla de maestros, para el algoritmo de búsqueda. Y finalmente la tabla que relaciona establecimientos con proveedores ofrece una manera de marcar a quien suministran los proveedores.

Tablas BD 5. Tablas de Productos

131 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.3.6. Esquema de relaciones de las tablas de Suministros

A continuación, se podrán ver las diferentes tablas que hacen referencia al suministro de proveedores a distribuidores. Se puede observar que hay las tablas de suministros, detalles de suministros y sus correspondientes plantillas. En las tablas de suministros encontramos la información general de pedido, y en las tablas de detalles del suministro encontramos los diferentes productos requeridos por el pedido. Estos pedidos se pueden realizar periódicamente, por eso existe la opción de guardarlo como plantillas.

Tablas BD 6. Tablas de Suministros

132 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.2.3.7. Esquema de relaciones de las tablas de Publicación

A continuación, se podrá ver la tabla que hace referencia a la publicación de los pedidos. En esta tabla se controlará el estado del pedido, para la aceptación de los diferentes usuarios.

Tablas BD 7. Tablas de Publicación

3.2.3.8. Diagrama de las clases de la capa de datos

Para cada tabla de la base de datos, existe su correspondiente clase de acceso. Estas clases son las que genera LINQ de forma automática para realizar la integración entre el entorno de desarrollo y el SGDB.

Diagrama de Clases 12. Acceso a la Base de Datos

133 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

3.3. Selección de Tecnologías

Entrono de programación: Visual Studio 2008 (Framework 3.5).

Lenguaje de programación: C#.

Protocolo de comunicación: TCP orientado a conexión.

Servidor web: IIS 6.0

Alternativa a la capa presentación: ASP.Net 3.5.

Sistema Gestor de Base de Datos (SGBD): SQLServer 2005 Express

Conexión con la el SGBD: LINQ

134 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

CAPÍTULO 4. IMPLEMENTACIÓN

4.1. Programación por capas

4.1.1. Consideraciones generales

El proyecto ha sido desarrollado según la programación por capas, tal como se ha especificado en el apartado anterior. Es un estilo de programación en el que el objetivo primordial es la separación de la lógica de negocios de la lógica de diseño. Un ejemplo básico de esto es separar la capa de datos de la capa de presentación al usuario.

La principal ventaja es que en caso de rediseño de algunas de las capas el resto de ellas no se verán afectadas, asegurando así su independencia.

4.1.2. Capas o niveles

El análisis de la mayoría de las soluciones empresariales basadas en modelos de componentes por capas, muestra que existen varios tipos de componentes habituales. En la siguiente figura se muestra una ilustración completa en la que se indican los componentes que la conforman.

Figura 62. Programación por Capas.

135 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

4.2. Organización de la solución

El proyecto está formado por una sola solución. Esta solución se divide en 4 partes: los tres tipos de usuarios que permite el sistema y las diferentes clases que dan solución al sistema, Figura 63.

En cada tipo de usuario, constan las acciones que podrá realizar. Por ejemplo: Acciones a realizar, Gestión, Datos propios, o Mantenimiento. También cabe remarcar que por cada usuario se ha generado una Master Page, que es una página maestra que establece el esqueleto común de la web para cada usuario. Todas estas partes engloban la capa de interfaz, que corresponde a la parte visual del sistema.

Otros elementos a remarcar son, por una parte, el de estilos “´style.css”, que englobara el estilo general del sistema y por otra, el web.config donde se encuentra la configuración genérica de la aplicación.

Figura 63. Distribución del Proyecto

136 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

En la organización de las clases, podremos distinguir tres tipos de ficheros: ( ) las clases de la capa de negocio en C#, ( ) los distintos diagramas de clases (los de la capa de negocio y los de la capa de datos) y ( ) el conjunto de clases de acceso al SGBD de la capa de datos.

Figura 64. Distribución de las Clases del Proyecto

137 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

4.3. Metodología de Trabajo

Para la implementación de la aplicación se ha utilizado en la mayor medida posible, la metodología de trabajo nominada “eXtrem Programing” (XP) o programación extrema.

4.3.1. Que es XP?

“XP (eXtreme Programing) nace como nueva disciplina de desarrollo de software hace aproximadamente unos seis años, y ha causado un gran revuelo entre el colectivo de programadores del mundo. Kent Beck, su autor, es un programador que ha trabajado en múltiples empresas y que actualmente lo hace como programador en la conocida empresa automovilística DaimlerChrysler. Con sus teorías ha conseguido el respaldo de gran parte de la industria del software y el rechazo de otra parte.”

“La programación extrema se basa en la simplicidad, la comunicación y el reciclado continuo de código, para algunos no es más que aplicar una pura lógica.”

4.3.2. Porque hemos de usar XP?

La programación extrema quiere dar solución a los principales problemas que existen hoy en día en el desarrollo de aplicaciones informáticas:

 Desviaciones en el coste temporal  Desviaciones en el coste económico  Toma errónea de especificaciones  Mala comunicación con el cliente  Poca escalabilidad

4.3.3. Que aporta XP?

eXtream Programing concite en: Simplicidad, Comunicación, Retroalimentación (feedback) y Coraje

 Simplicidad: Es uno de los pilares de XP, porque agiliza y simplifica el desarrollo. Para ello, se ha de programar de una manera simple, entendedora y ágil. Por ejemplo, una manera simple seria no pensar en que será útil en el futuro sino solo centrarse en las especificaciones aportadas. Una manera fácil de entender seria usar variables, métodos, funciones con nombres mnemotécnicos. Finalmente, una manera ágil seria usar las herramientas y los estándares, y no crearse soluciones propias.  Comunicación: La comunicación es una parte fundamental para el desarrollo de la aplicación. Esta comunicación no ha de ser sólo entre el cliente y la empresa, sino también entre el cliente y los componentes del equipo de desarrollo o el jefe de proyecto y el equipo. Para ello, XP aporta varias formas de comunicación: comentar el código, programación en pareja, ofrecer accesibilidad desde el equipo de desarrollo al jefe de proyecto y al cliente.

138 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

 Retroalimentación (feedback): otro punto fundamental es la opinión en tiempo real del cliente. A la hora de desarrollar el sistema, se van realizando mini entregas que son validadas por el cliente. De esta manera es muy complicado que se provoque un desvío temporal y que haya una mala interpretación de las especificaciones.  Coraje: Es necesario tener coraje para aplicar todos estos aspectos nombrados anteriormente. No siempre es fácil realizar un código sencillo o mantener un flujo abierto de comunicación con el cliente.

4.3.4. Flujo de desarrollo de la metodología XP

A continuación, se hará una breve explicación sobre el flujo de desarrollo de la metodología eXtream Programing. Tal como se puede observar en la Figura 65.

Figura 65. Flujo de desarrollo de la metodología XP

Inicialmente, se generan User Stories, historias de usurarios, que representan los requisitos expuestos por el cliente. Estas historias se separan más o menos por el volumen de coste temporal y por su dificultad de implementación. Cada una de estas historias genera una pequeña solución (Small Realese), que dará sentido a su negocio. Le dará al cliente un valor al permitirle interactuar con la pequeña solución ofreciéndole un resultado.

Para llegar al Small Release, se elegirá una historia de usuario y se realizará un plan de desarrollo (Realease Planning), es decir, un estudio detallado para la implementación de la historia. En este plan se generarán iteraciones (Iteration) para desarrollar. En el desarrollo de la iteración, para cualquier duda que se tenga habrá una comunicación directa entre los desarrolladores y el cliente o jefe de proyecto y/o tecnológico. En caso de estancamiento, duda o rediseño, se podrán hacer consultas y si hace falta se puede rehacer el plan de desarrollo de la iteración.

Una vez terminada la iteración, se pasará a la fase de pruebas y aceptación de la misma (Acceptance Tests). Si existen fallos (Bugs) se solucionarán, hasta pasar las pruebas unitarias especificadas. Una vez pasadas todas la pruebas y obtenida la aceptación del cliente, se pasará a desarrollar la siguiente iteración, y así sucesivamente hasta acabar la historia de usuario y generar una pequeña solución. Esto se realizará para todas las historias de usuario hasta finalizar la aplicación.

139 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

4.3.5. Que partes del XP se han usado para el desarrollo del sistema

En primer lugar, se ha elegido este método de programación por delante de los demás por los siguientes motivos:  Es una metodología ágil, que no se ve afectada por los cambios  Disminuye la desviación del coste temporal  Disminuye la desviación del coste económico  Contiene sistema de “Quality assurance10” (QA)  Es una de las metodologías emergentes del mercado

Para realizar el proyecto se ha intentado usar lo máximo posible todas estas experiencias y consejos prácticos que aporta la metodología de programación XP. Pero los recursos adquiridos no han podido ser empleados en plenitud. Por ejemplo: la programación en pareja ha sido imposible, dado que sólo hay un desarrollador.

Inicialmente todos los requisitos especificados en el primer capítulo, representan a nuestras historias de usuario, y el plan de desarrollo equivaldría al diseño explicado en los capítulos 2 y 3. Pero las iteraciones de cada requisito sí que han sido detalladas en la implementación, como ha sido el caso de tener que rediseñar alguna de ellas, Figura 66.

Figura 66. Iteraciones del REQ13 y 14 de la Fase1

10 Garantía de calidad, que asegura la calidad del software

140 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Para desarrollar el sistema se han seguido las máximas pautas de simplicidad, comunicación, retroalimentación y coraje posibles. Por ejemplo: se ha buscado la simplicidad de la programación añadiéndole comentarios al código o se ha potenciado la comunicación con el cliente de la aplicación.

Una vez finalizada una iteración, esta tiene que pasar una batería de pruebas unitarias preparadas con anterioridad para garantizar la calidad (QA). Posteriormente, se espera la verificación del cliente y la aceptación de la iteración. Una vez aprobada, se pasará a la siguiente, hasta realizar todas las iteraciones necesarias para generar una pequeña solución, que representa una historia de usuario.

La aplicación fue dividida en 4 fases, donde cada fase estaba formada por un determinado número de historias de usuario, que juntas una Release, aportando valor al cliente, Figura 67. Cada una de estas fases tiene una estimación de coste temporal parecida, Figura 68. La implementación del proyecto está estimada en un coste temporal de 152 días laborables, empezando el 11/01/2010 hasta el 10/08/2010, 8 meses en valores absolutos.

Figura 67. Fases del proyecto

Figura 68. Coste Temporal Fases del proyecto

141 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

4.4. Desarrollo del algoritmo de búsqueda de la Lista de la Compra

Una de las funcionalidades del sistema es generar la lista de la compra para los distribuidores, la cual obtiene un resultado con los productos más económicos para poder abastecerse. Para ello vamos usar el algoritmo de búsqueda Best-First Search.

Best-First Search, es un algoritmo de búsqueda que expande nodos y escoge el mejor camino posible en cada uno de ellos. Para generar una lista de la compra es el mejor método que se ha podido aplicar, ya que encuentra una buena solución a coste bajo, que en nuestro caso es la mejor solución.

Inicialmente un distribuidor ha de seleccionar una serie de productos que se ofrecen en el sistema. Para ello, el sistema unifica todos los productos iguales que presenten diferente proveedor en un producto genérico. Para tal efecto, el atributo que se normalizará será el nombre del producto. De esta manera se creará una lista de productos maestros. Dado un producto, se busca si ya existe su genérico; si es así, se vinculará. En caso contrario, se crea un genérico nuevo. La lista de productos maestros, tendrá que ser validada por el administrador. La dificultad de generar la lista de productos maestros con un nombre unificado es que cada usuario puede introducirlo como desee. Por ejemplo: CocaCola y Coca Cola. En este caso tenemos un problema que se ha de solucionar. Para ello, es necesario transformar todas las letras en minúsculas, eliminar los espacios y los símbolos. Así, Coca Cola y CocaCola, pasarán a ser ambas el nombre genérico cocacola y se vinculan al mismo maestro, pues son el mismo producto.

Una vez solucionado y generado el listado de maestros, el distribuidor seleccionará los productos del maestro que quiere añadir a su lista de la compra. A continuación, se mostrará un ejemplo. La lista de genéricos seleccionados son Coca Cola, Fanta y Agua. Inicialmente se despliegan todos los proveedores que abastecen el producto Coca Cola, que son los proveedores A, B y C con el precio asociado, Figura 69. Seguidamente, se elige el nodo de menor coste y se despliega el siguiente producto, Fanta. De nuevo, se muestran los proveedores que lo abastecen con su precio asociado, Figura 70. Ésta lógica se irá repitiendo producto a producto, Figura 71, hasta finalizar la lista de genéricos. Una vez encontrada la mejor lista de la compra, Figura 72, el resultado obtenido seria: Coca Cola Proveedor B a 2€, Fanta Proveedor A a 1€ y Agua Proveedor C a 1€.

Figura 69. Best-First Search Primer Despliegue

142 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Figura 70. Best-First Search Segundo Despliegue

Figura 71. Best-First Search Tercer Despliegue

Figura 72. Best-First Search Resultado

143 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

144 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

CAPÍTULO 5. PRUEBAS

5.1. Pruebas

En este capítulo se detallan las pruebas realizadas y el guión establecido para garantizar la calidad, la validez y la integridad del sistema desarrollado. Tal como especifica la metodología XP, se han de realizar una batería de pruebas para garantizar la QA del software, tanto por parte del programador como por parte del cliente. Esta parte es fundamental en esta metodología, porque se irá avanzando a medida que se vayan superando las pruebas correspondientes a cada iteración.

5.1.1. Test de Calidad

Para garantizar la calidad, se ha determinado una lista de once puntos importantes que se deben de verificar. Estos puntos serán importantes para la sencillez, el entendimiento del código y la escalabilidad del mismo.

Num. de Regla Descripción de la regla Superado Comentarios 1 Funciones cortas SI

Uso de nombres 2 SI descriptivos El comentado se basa en los estándares 3 Comentar el código SI marcados por C#. Visual Studio proporciona 4 Identación SI automáticamente un sangrado por defecto. Resharper11, comprueba y sugiere 5 Optimización del Código SI optimización del código. A parte de capturar y mostrar errores en la aplicación, capturamos un log de 6 Capturar errores SI errores, mostrado en el Visor de sucesos del Sistema Operativo. Visual Studio comprueba que todas las variables declaradas este debidamente 7 Inicializaciones SI inicializadas, de lo contrario muestra un error.

8 Fichero de configuración SI

C# tiene un Garbage Collector 9 Cerrar y/o liberar SI integrado, encargado de la liberación de memoria. Las variables/funciones comienzan con 10 Convención de nombres SI el carácter en mayúsculas. El idioma escogido para la codificación 11 Convención de idioma SI ha sido el castellano, a excepción de palabras puramente técnicas. Tabla 23. Test de Calidad

11 Plug-in que se integra en Visual Studio, que optimiza la creación del código.

145 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

5.1.2. Caja Blanca

Para el test de caja blanca se ha hecho una tabla, enumerando los diferentes requerimientos, especificados en la aplicación. Una vez realizada la tabla se comprobó que la funcionalidad de cada requerimiento siguiera cumpliendo las especificaciones detalladas.

N Lanzada Actores Requisito Descricpción Resultado esperado Realizada Valida Observaciones Gabriel UK-01 REQ01. Introducir los productos a 1.1 Dar de alta un nuevo Inserción de 1 Si Si Ginés Proveedor suministrar producto Producto Gabriel UK-01 REQ01. Introducir los productos a 2 1.2 Modificar un Producto No permitir Si Si Ginés Proveedor suministrar Gabriel UK-01 REQ01. Introducir los productos a Producto 3 1.3 Deshabilitar un Producto Si Si Ginés Proveedor suministrar Deshabilitado 2.1 Añadir nuevo precio, Gabriel UK-01 4 REQ02. Actualizar precios introduciendo fecha nuevo Precio actualizado Si Si Ginés Proveedor precio correcta 2.2 Añadir nuevo precio, Error no Gabriel UK-01 5 REQ02. Actualizar precios introduciendo fecha nuevo No dejar actualizar Si Si verifica fecha Ginés Proveedor precio incorrecta Correcta Gabriel UK-01 REQ03. Recibir peticiones de 6 3.1 Seleccionar un suministro Visualizar detalle No Ginés Proveedor suministro Gabriel UK-01 REQ03. Recibir peticiones de 3.2 Seleccionar un suministro no Verificar cambio de 7 No Ginés Proveedor suministro leído estado a leído Gabriel UK-01 REQ04. Publicación y control de los 8 4.1 Publicar un suministro Suministro Publicado No Ginés Proveedor suministros realizados 4.2 Aceptar publicación con Gabriel UK-01 REQ04. Publicación y control de los Estado suministro 9 estado aceptado por el No Ginés Proveedor suministros realizados modificado distribuidor

Gabriel UK-01 REQ04. Publicación y control de los 4.3 Aceptar publicación con Estado suministro no 10 No Ginés Proveedor suministros realizados estado pendiente de verificación modificado

Gabriel UK-01 REQ04. Publicación y control de los 4.4 Aceptar publicación con Estado suministro no 11 No Ginés Proveedor suministros realizados estado rechazado el suministro modificado

Gabriel UK-01 12 REQ05. Consulta de noticias 5.1 Seleccionar una noticia Consultar la noticia No Ginés Proveedor Gabriel UK-01 Cambio de estado a 13 REQ05. Consulta de noticias 5.2 Seleccionar un noticia nueva No Ginés Proveedor leída Gabriel UK-01 REQ06. Aceptación y consulta del Dejar entrar en el 14 6.1 Aceptar Acuerdo Si Si Ginés Proveedor acuerdo con la empresa sistema Gabriel UK-01 REQ06. Aceptación y consulta del No dejar entrar en el 15 6.2 No Aceptar Acuerdo Si Si Ginés Proveedor acuerdo con la empresa sistema Gabriel UK-01 REQ06. Aceptación y consulta del No dejar modificar la 16 6.3 Modificar Acuerdo Si Si Ginés Proveedor acuerdo con la empresa información Lista de Gabriel UK-01 REQ07. Consulta de los 7.1 Consultar los distribuidores 17 distribuidores No Ginés Proveedor distribuidores que ha suministrado que se ha suministrado suministrados Pedido realizado y Error en Gabriel UK-02 REQ08. Hacer pedidos de 18 8.1 Realizar un pedido Verificar que se ha Si No Modulo enviar Ginés Distribuidor suministros enviado por mail mail Gabriel UK-02 REQ08. Hacer pedidos de 19 8.2 Guardar una plantilla Plantilla guardada Si Si Ginés Distribuidor suministros Gabriel UK-02 REQ08. Hacer pedidos de Plantilla ha sido 20 8.3 Modificar un plantilla Si Si Ginés Distribuidor suministros modificada

146 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Modificación de la Falta Generar 8.4 Verificar que en el paso del fecha suministro: Gabriel UK-02 REQ08. Hacer pedidos de el Script y 21 tiempo, se van modificando las semanal + 7, No Ginés Distribuidor suministros Stored fechas de suministro quincenal + 14, Procedure mensual +30,… Gabriel UK-02 REQ09. Aceptación y control de los 9.1 Aceptar un suministro Cambio de estado a 22 No Ginés Distribuidor suministros realizados publicado por el Proveedor aceptado Gabriel UK-02 REQ09. Aceptación y control de los Cambio de estado a 23 9.2 Rechazo de un suministros No Ginés Distribuidor suministros realizados Rechazado Gabriel UK-02 REQ09. Aceptación y control de los 9.3 Modificar estado una vez No se puede 24 No Ginés Distribuidor suministros realizados Verificado por el Proveedor modificar Gabriel UK-02 25 REQ10. Consulta de noticias 10.1 Seleccionar una noticia Consultar la noticia No Ginés Distribuidor Gabriel UK-02 10.2 Seleccionar un noticia Cambio de estado a 26 REQ10. Consulta de noticias No Ginés Distribuidor nueva leída Lista de proveedores Gabriel UK-02 REQ11. Consulta de los proveedores 11.1 Consultar los proveedores 27 que le ha No Ginés Distribuidor que le han suministrado que le ha suministrado suministrados Gabriel UK-02 12.1 Ver el listado de todos os 28 REQ12. Consulta de productos Lista de productos Si Si Ginés Distribuidor productos Lista de productos Gabriel UK-02 12.2 Seleccionar los productos 29 REQ12. Consulta de productos seleccionado con el Si Si Ginés Distribuidor que desea comprar precio más bajo Gabriel UK-03 13.1 Dar de alta un nuevo Inserción del 30 REQ13. Dar de alta a un distribuidor Si Si Ginés Administrador Distribuidor Distribuidor Gabriel UK-03 Distribuidor 31 REQ13. Dar de alta a un distribuidor 13.2 Modificar un Distribuidor Si Si Ginés Administrador modificado Gabriel UK-03 Distribuidor 32 REQ13. Dar de alta a un distribuidor 13.3 Deshabilitar un Distribuidor Si Si Ginés Administrador Deshabilitado Gabriel UK-03 14.1 Dar de alta un nuevo Inserción del 33 REQ14. Dar de alta a un proveedor Si Si Ginés Administrador Proveedor Proveedor Gabriel UK-03 Proveedor 34 REQ14. Dar de alta a un proveedor 14.2 Modificar un Proveedor Si Si Ginés Administrador modificado Gabriel UK-03 Proveedor 35 REQ14. Dar de alta aun proveedor 14.3 Deshabilitar un Proveedor Si Si Ginés Administrador Deshabilitado Gabriel UK-03 REQ15. Gestionar el acuerdo con la 36 15.1 Creación del acuerdo Acuerdo Creado Si Si Ginés Administrador empresa Acuerdo Modificado Gabriel UK-03 REQ15. Gestionar el acuerdo con la y verificar que debe 37 15.2 Modificar acuerdo Si Si Ginés Administrador empresa ser aprobado de nuevo Gabriel UK-03 REQ16. Controlar la actualización de 16.1 Aceptar productos nuevos Cambio de estado a 38 Si Si Ginés Administrador los productos de los proveedores o modificados Aceptado

REQ17. Aceptación y control de los 17.1 Aceptar Suministro Gabriel UK-03 Cambio estado por 39 suministros realizados entre Publicado, previamente No Ginés Administrador aceptado proveedor y distribuidor aceptado por ambos usuarios REQ17. Aceptación y control de los 17.2 Aceptar Suministro Gabriel UK-03 No dejar cambiar 40 suministros realizados entre Publicado, no ha sido aun No Ginés Administrador estado proveedor y distribuidor aceptado por ambos usuarios

Gabriel UK-03 REQ18. Gestión de todos usuarios 41 18.1 Modificar estado usuario Estado modificado No Ginés Administrador asociados en el sistema

Gabriel UK-03 REQ19. Creación de noticias para 42 19.1 Crear noticia nuevas Noticia creada No Ginés Administrador distribuidores y/o proveedores

Gabriel UK-03 REQ19. Creación de noticias para 43 19.2 Modificar noticia Noticia modificada No Ginés Administrador distribuidores y/o proveedores

Gabriel UK-03 REQ19. Creación de noticias para 44 19.3 Deshabilitar noticia Noticia deshabilitada No Ginés Administrador distribuidores y/o proveedores

147 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Gabriel 20.1 Introducir clave y Dejar entrar en el 45 All REQ20. Logarse en línea Si Si Ginés contraseña validos sistema Gabriel 20.2 Introducir clave y No dejar entrar en el 46 All REQ20. Logarse en línea Si Si Ginés contraseña falsos sistema Gabriel Salir y volver a la 47 All REQ21. Desconectarse en línea 21.1 Salir de la aplicación Si Si Ginés pantalla de clave 22.1 Introducir clave, contraseña Gabriel 48 All REQ22. Cambiar contraseña antigua y nueva dos veces Cambiar contraseña Si Si Ginés correctamente 22.1 Introducir clave, contraseña Gabriel No cambiar 49 All REQ22. Cambiar contraseña antigua y nueva dos veces Si Si Ginés contraseña incorrectamente

Tabla 24. Pruebas Caja Blanca

148 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

5.1.3. Caja Negra

El test de caja negra se centra únicamente en el comportamiento de la aplicación, con independencia a su implementación. Para este test también se ha hecho una tabla enumerando los diferentes puntos del funcionamiento de la aplicación y se pidió a una persona externa al proyecto, sin conocimiento alguno de la aplicación, que nos proporcionase feedback.

Resultado N Actores Requisito Descripción esperado Realizada Valida

UK-01 REQ01. Introducir los 1.1 Dar de alta un nuevo Inserción de 1 Si Si Proveedor productos a suministrar producto Producto

UK-01 REQ01. Introducir los Producto 2 1.2 Deshabilitar un Producto Si Si Proveedor productos a suministrar Deshabilitado

2.1 Añadir nuevo precio, UK-01 3 REQ02. Actualizar Precios introduciendo fecha nuevo Precio actualizado Si Si Proveedor precio correcta

UK-01 REQ03. Recibir peticiones de 4 3.1 Seleccionar un suministro Visualizar detalle No Proveedor suministro

UK-01 REQ03. Recibir peticiones de 3.2 Seleccionar un suministro Verificar cambio 5 No Proveedor suministro no leído de estado a leído

UK-01 REQ04. Publicación y control de Suministro 6 4.1 Publicar un suministro No Proveedor los suministros realizados Publicado

4.2 Aceptar publicación con UK-01 REQ04. Publicación y control de Estado suministro 7 estado aceptado por el No Proveedor los suministros realizados modificado distribuidor

UK-01 Consultar la 8 REQ05. Consulta de noticias 5.1 Seleccionar una noticia No Proveedor noticia

UK-01 5.2 Seleccionar un noticia Cambio de estado 9 REQ05. Consulta de noticias No Proveedor nueva a leída

UK-01 REQ06. Aceptación y consulta Dejar entrar en el 10 6.1 Aceptar Acuerdo Si Si Proveedor del acuerdo con la empresa sistema

UK-01 REQ06. Aceptación y consulta No dejar entrar en 11 6.2 No Aceptar Acuerdo Si Si Proveedor del acuerdo con la empresa el sistema

UK-01 REQ06. Aceptación y consulta No dejar modificar 12 6.3 Modificar Acuerdo Si Si Proveedor del acuerdo con la empresa la información

REQ07. Consulta de los 7.1 Consultar los Lista de UK-01 13 Distribuidores que ha distribuidores que se ha distribuidores No Proveedor suministrado suministrado suministrados

149 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Pedido realizado y UK-02 REQ08. Hacer pedidos de 14 8.1 Realizar un pedido Verificar que se ha No Distribuidor suministros enviado por mail

UK-02 REQ08. Hacer pedidos de 15 8.2 Guardar una plantilla Plantilla guardada Si Si Distribuidor suministros

UK-02 REQ08. Hacer pedidos de Plantilla ha sido 16 8.3 Modificar un plantilla Si Si Distribuidor suministros modificada

Modificación de la 8.4 Verificar que en el paso fecha suministro: UK-02 REQ08. Hacer pedidos de del tiempo, se van 17 semanal + 7, No Distribuidor suministros modificando las fechas de quincenal + 14, suministro mensual +30,…

UK-02 REQ09. Aceptación y control de 9.1 Aceptar un suministro Cambio de estado 18 No Distribuidor los suministro realizados publicado por el Proveedor a aceptado

UK-02 REQ09. Aceptación y control de 9.2 Rechazo de un Cambio de estado 19 No Distribuidor los suministro realizados suministros a Rechazado

UK-02 Consultar la 20 REQ10. Consulta de noticias 10.1 Seleccionar una noticia No Distribuidor noticia

UK-02 10.2 Seleccionar un noticia Cambio de estado 21 REQ10. Consulta de noticias No Distribuidor nueva a leída

Lista de REQ11. Consulta de los 11.1 Consultar los UK-02 proveedores que 22 proveedores que le han proveedores que le ha No Distribuidor le ha suministrado suministrado suministrados

UK-02 12.1 Ver el listado de todos 23 REQ12. Consulta de productos Lista de productos Si Si Distribuidor os productos

12.2 Seleccionar la os Lista de productos UK-02 24 REQ12. Consulta de productos productos que desea seleccionado con Si Si Distribuidor comprar el precio mas bajo

UK-03 REQ13. Dar de alta un 13.1 Dar de alta a un nuevo Inserción del 25 Si Si Administrador Distribuidor Distribuidor Distribuidor

UK-03 REQ13. Dar de alta un 13.2 Modificar un Distribuidor 26 Si Si Administrador Distribuidor Distribuidor modificado

UK-03 REQ13. Dar de alta un 13.3 Deshabilitar un Distribuidor 27 Si Si Administrador Distribuidor Distribuidor Deshabilitado

UK-03 REQ14. Dar de alta un 14.1 Dar de alta un nuevo Inserción del 28 Si Si Administrador Proveedor Proveedor Proveedor

UK-03 REQ14. Dar de alta un Proveedor 29 14.2 Modificar un Proveedor Si Si Administrador Proveedor modificado

150 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

UK-03 REQ14. Dar de alta un 14.3 Deshabilitar un Proveedor 30 Si Si Administrador Proveedor Proveedor Deshabilitado

UK-03 REQ15. Gestión del acuerdo 31 15.1 Creación del acuerdo Acuerdo Creado Si Si Administrador con la empresa

Acuerdo Modificado y UK-03 REQ15. Gestión del acuerdo verificar que debe 32 15.2 Modificar acuerdo Si Si Administrador con la empresa ser aprobado de nuevo por el proveedor

REQ16. Controlar la UK-03 16.1 Aceptar productos Cambio de estado 33 actualización de los productos Si Si Administrador nuevos o modificados a a Aceptado de los proveedores

REQ17. Aceptación y control de 17.1 Aceptar Suministro UK-03 Cambio estado por 34 los suministro realizados entre Publicado, previamente No Administrador aceptado Proveedor y Distribuidor aceptado por ambos usuarios

REQ18. Gestión de todos UK-03 18.1 Modificar estado usuarios asociados en el Estado modificado No 35 Administrador usuario sistema

REQ19. Creación de noticias UK-03 36 para Distribuidores o 19.1 Crear noticia nuevas Noticia creada No Administrador Proveedores o ambos

REQ19. Creación de noticias UK-03 37 para Distribuidores o 19.2 Modificar noticia Noticia modificada No Administrador Proveedores o ambos

REQ19. Creación de noticias UK-03 Noticia 38 para Distribuidores o 19.3 Deshabilitar noticia No Administrador deshabilitada Proveedores o ambos

20.1 Introducir clave y Dejar entrar en el 39 All REQ20. Logarse en línea Si Si contraseña validos sistema

20.2 Introducir clave y No dejar entrar en 40 All REQ20. Logarse en línea Si Si contraseña falsos el sistema

Salir y volver a la 41 All REQ21. Desconectarse en línea 21.1 Salir de la aplicación Si Si pantalla de clave

22.2 Introducir clave, Cambiar 42 All REQ22. Cambiar contraseña contraseña antigua y nueva Si Si contraseña dos veces correctamente

22.3 Introducir clave, No cambiar 43 All REQ22. Cambiar contraseña contraseña antigua y nueva Si Si contraseña dos veces incorrectamente

Tabla 25. Pruebas de Caja Negra

151 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

152 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

CAPÍTULO 6. PLANIFICACIÓN Y COSTES DEL PROYECTO

6.1. Planificación del proyecto

6.1.1. Diagrama de Gantt

En la Figura 73 se muestra el diagrama de Gantt del Proyecto Final de Carrera diseñado con la herramienta de gestión de proyectos Microsoft Project 2003. En el diagrama se muestra el tiempo real de dedicación a cada una de las fases del proyecto. Las fechas de comienzo y fin del proyecto han sido las siguientes:

Comienzo: 07/09/2009

Fin: 10/08/2010

Figura 73. Diagrama de Gantt. Fases del proyecto

153 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

6.1.2. Tiempo de realización del proyecto

El tiempo real de dedicación desglosado por fases se muestra en valor absoluto y en porcentaje en la Tabla 26 y Gráfico 1, respectivamente.

Fase Nº Horas

Requerimientos 60

Análisis 105

Diseño 138

Implementación 408 y Pruebas

Memoria 30

Total 741

Tabla 26. Tiempo real de realización del proyecto en horas

Se puede observar que la fase más extensa del proyecto ha sido la Fase de Implementación y Pruebas, con un 55% del tiempo total invertido. Pero cabe comentar, que en la Fase de Implementación y Pruebas, también hay una fase de rediseño, que se ha comentado en la metodología de trabajo usada, Gráfico 2. Esta fase de diseño se debería unir a la fase de diseño del proyecto, obteniendo un total del 28%, Gráfico 3, junto con pruebas son las partes más extensas del proyecto.

154 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Coste Temporal

4% 8% 14% Requerimientos Análisis 55% 19% Diseño Implementación y Pruebas Memoria

Gráfico 1. Coste Temporal de realización del proyecto en porcentaje

Implementación y Pruebas

17%

40%

Implementación Pruebas 43% Rediseño

Gráfico 2. Coste Temporal de la Implementación y Pruebas

155 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

Coste Temporal Desglosado

4% 8% 24% 14% Requerimientos Análisis Diseño 19% Rediseño 22% Implementación 9% Pruebas Memoria

Gráfico 3. Coste Temporal de realización del proyecto en porcentaje desglosado

156 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

CAPÍTULO 7. CONCLUSIONES Y LÍNEAS DE FUTURO

7.1. Conclusiones

Se puede observar que hoy en día, en cualquier sector empresarial, es muy importante adoptar diferentes alternativas tecnológicas para poder asegurar la sostenibilidad y la viabilidad de las empresas. En nuestro caso, en el sector de la restauración, la competencia entre establecimientos, va aumentado cada día. Esto provoca que la continuidad y viabilidad de los establecimientos pequeños o cotidianos sea cada vez más difícil. Por ello, este sistema da viabilidad a estos establecimientos, gestionando sus abastecimientos de materias primas a un precio más sostenible. De esta manera, los negocios participantes en CooBarDistribution consiguen tener una ventaja competitiva, que les permite equiparar sus precios a los precios de las grandes empresas de restauración. Como consecuencia, CooBarDistribution ayuda a sus clientes a obtener niveles óptimos de sostenibilidad y viabilidad, que aseguran la continuidad del negocio.

7.1.1. Diseño

A la hora de diseñar el sistema, se ha utilizado el lenguaje de modelado Unified Modeling Language (UML). Este lenguaje permite diseñar sistemas en toda su globalidad, especialmente aquellos sistemas que utilizan un estilo de programación orientado a objetos. Este lenguaje, también sirve para documentar el proyecto, ya que se trata de un lenguaje altamente estandarizado en todo el mundo.

El lenguaje UML nos da las herramientas suficientes para diseñar un software totalmente escalable y modulable. Esto es una parte fundamental en los requisitos del sistema. Esto le dará la viabilidad de posibles ampliaciones sin perder la calidad y sostenibilidad del software.

7.1.2. Enfoque técnico

Se puede afirmar que la toma de decisiones respecto al enfoque técnico, ha sido un gran acierto. Aunque no se podrá asegurar que sean las mejores, han sido buenas y satisfactorias.

 En el aspecto visual usar el lenguaje ASP .NET ha sido un acierto, ya que los objetivos visuales se han cumplido de una manera óptima, eficaz y ha resultado en una interfaz visualmente agradable.  El uso de la plataforma de desarrollo Visual Studio 2008, ha aportado al programador rapidez, seguridad y comodidad a la hora de desarrollar el sistema.  La conexión con el SGBD, con la utilización de la tecnología LinQ, ha sido todo un éxito, ya que ha conseguido la integridad entre los sistemas y la Base de Datos, y la sencillez de desarrollo de las consultas entre ellas.  El uso de SGBD SQL Server 2005, ha sido un decisión correcta, ya que es la que mejor se integraba con la tecnología LinQ, aunque puede ser que no sea el mejor SGBD para aplicaciones web. Pero se han obtenido muy buenos resultados.

157 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

 El desarrollo con el lenguaje de programación C#, puede ser uno de las decisiones que ha tenido menos impacto, ya que se podía haber elegido cualquier otro lenguaje, pero la experiencia albergada en el equipo desarrollador, ha decantado esta decisión.

7.1.3. Metodología de trabajo

Emplear en gran parte la metodología de trabajo de eXtrem Programing, ha sido una grata experiencia, pudiendo observar mejoras en la implementación del sistema. Al trabajar de manera iterativa y con la aprobación del cliente a cada solución parcial aportada, se ha conseguido que el coste temporal no obtuviera una gran desviación. Es decir, que lo realizado a lo demandado tuviera una semejanza notable y el bienestar del cliente, de la empresa y de los trabajadores, que no han tenido que hacer grandes rediseños de la aplicación.

7.1.4. Cumplimiento de los objetivos

Como objetivos que se ha marcado el proyecto, se puede remarcar que se han conseguido de forma notable, tanto los objetivos económicos, como los tecnológicos.

Objetivo económico:

 Gestionar los diferentes usuarios del sistema.  Generar, gestionar y controlar los pedidos de suministro a los proveedores.  Asegurar un volumen elevado de pedidos.  Lograr un descenso en los gastos de suministración.

Objetivos técnicos:

 Crear un software altamente escalable y robusto.  Que sea usable por los usuarios.  Uso de tecnologías vanguardistas.  Garantizar la máxima alineación a los requerimientos.

158 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

7.2. Líneas de futuro

En este apartado, se exponen distintas líneas futuras de ampliación del sistema.

7.2.1. Multilenguaje

La aplicación actualmente es monolingüística, en español. Para poder ampliar el mercado, es necesario que contenga diferentes idiomas y hacerla multilingüística. Una vez sea apta para múltiples idiomas, se podrá añadir cualquier lenguaje.

7.2.2. Multiplataforma

Actualmente, el sistema sólo es soportado por FireFox. Una mejora notable seria que fuese soportado por el máximo de los navegadores web del mercado. Como por ejemplo: Internet Explorer, Safari, Chrome, …

7.2.3. Exportación de Informes

Sería muy interesante poder exportar información del sistema en diferentes formatos, ya sean listados o informaciones específicas. De esta manera se daría facilidad para la integración con otros sistemas o la manipulación de los datos para otras funcionalidades diferentes que aporta el sistema. Por ejemplo la exportación de las declaraciones, para gestionar la contabilidad del local.

7.2.4. Cargas masivas

Otra funcionalidad, seria la carga masiva de datos. Pudiendo generar un número elevado de información en el sistema. Por ejemplo, la carga de productos dentro del sistema, en vez de hacerlos manualmente, hacerlo de forma masiva con la importación de un Excel.

7.2.5. Estudios

Para poder llevar un mejor control de las acciones realizadas, sería muy útil poder realizar diferentes tipos de estudios, ya sean económicos, de ventas de productos o de contabilidad. Por ejemplo: saber el nivel de ventas de un producto, ver la evolución de los pedidos del sistema o generar informes mensuales de las declaraciones realizadas, etc.

159 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

160 Proyecto Final de Carrera CoobarDistribution Gabriel Ginés Puig

BIBLIOGRAFÍA

 Tecnologías ASP.NET 4.0; José Manuel Alarcón Aguín (2009) edición. Krasis Consulting, S.L. ISBN: 978-84-936696-1-4

 SHARP, J.; JAGGER, J. (2002). Aprenda ya Microsoft Visual C# .NET. 1ª edición. Editorial McGraw-Hill/Interamericana de España. ISBN 9788448133382.

 GRAFF, M. (2009). “Connection strings for SQL Server 2005”. Disponible en Internet: http://www.connectionstrings.com/sql-server-2005

 AGENCIA ESPAÑOLA DE PROTECCION DE DATOS. Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal. Disponible en Internet: https://www.agpd.es/portalwebAGPD/index-ides-idphp.php

 MSDN MICROSOFT CORPORATION (2007 NOVIEMBRE) INFORMACIÓN GENERAL [en línea] [United States: Microsoft Corporation] Disponible en Internet: http://msdn.microsoft.com/es-es/library

 WIKIPEDIA Conceptos Generales[en línea] [United States: Wikipedia Foundation, Inc] Disponible en Internet: http://es.wikipedia.org

 WIKIPEDIA Conceptos de ASP.Net[en línea] [United States: Wikipedia Foundation, Inc] Disponible en Internet: http://es.wikipedia.org/wiki/ASP.NET

 WIKIPEDIA Conceptos de PHP[en línea] [United States: Wikipedia Foundation, Inc] Disponible en Internet: http://es.wikipedia.org/wiki/Php

 EXTREM PROGRAMING Conceptos Generales sobre la programación Extrema [en línea] Disponible en Internet: http://www.extremeprogramming.org

 LinQ Información General sobre la nueva tecnología LinQ [en línea] [United States: Microsoft Corporation] Disponible en Internet: http://msdn.microsoft.com/es- es/netframework/aa904594.aspx

 UML Información del modelado de sistemas UML LinQ [en línea] [Object Managment Group] Disponible en Internet: http://www.uml.org/

161