Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE
Full text
Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Memoria del Proyecto Final de Carrera Titulación: Ingeniería Superior de Informática Fecha: 1 de Julio de 2011 Autor: Adrián Castillo Sánchez Director: Sergio Sáez Bar ona Codirector: Javier Vicente Jiménez Belenguer
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 2 de 97 1 INTRODUCCIÓN ................................................................................................................................................ 4 2 ESPECIFICACIÓN DE REQUISITOS ...................................................................................................................... 6 2.1. INTRODUCCIÓN ................................................................................................................................................... 6 2.1.1. PROPÓSITO...................................................................................................................................................... 6 2.1.2. ÁMBITO ........................................................................................................................................................... 6 2.1.3. DEFINICIONES, ACRÓNIMOS Y ABREVIATURAS ............................................................................................... 7 2.1.4. REFERENCIAS ................................................................................................................................................... 7 2.1.5. VISIÓN GENERAL ............................................................................................................................................. 8 2.2. DESCRIPCIÓN GENERAL ....................................................................................................................................... 8 2.2.1. PERSPECTIVAS DEL PRODUCTO ....................................................................................................................... 8 2.2.2. FUNCIONES DEL PRODUCTO ........................................................................................................................... 9 2.2.3. CARACTERÍSTICAS DEL USUARIO ................................................................................................................... 10 2.2.4. RESTRICCIONES GENERALES .......................................................................................................................... 10 2.2.5. SUPUESTOS Y DEPENCIAS ............................................................................................................................. 11 2.2.6. REQUISITOS PENDIENTES .............................................................................................................................. 11 2.3. REQUISITOS ESPECÍFICOS .................................................................................................................................. 11 2.3.1. REQUISITOS FUNCIONALES ........................................................................................................................... 12 2.3.1.1. USUARIO ................................................................................................................................................................ 12 2.3.1.2. USUARIO CON PERMISOS DE ALMACÉN ................................................................................................................ 12 2.3.1.3. USUARIO CON PERMISOS DE COMPRAS ................................................................................................................ 13 2.3.1.4. USUARIO CON PERMISOS DE INGENIERÍA ............................................................................................................. 13 2.3.1.5. USUARIO ADMINISTRADOR ................................................................................................................................... 14 2.3.2. REQUISITOS DE INTERFACES EXTERNOS ....................................................................................................... 14 2.3.2.1. INTERFAZ DE USUARIO........................................................................................................................................... 14 2.3.2.2. INTERFACES HARDWARE ....................................................................................................................................... 14 2.3.2.3. INTERFACES SOFTWARE ......................................................................................................................................... 15 2.3.2.4. INTERFACES DE COMUNICACIONES ....................................................................................................................... 15 2.3.3. REQUISITOS DE EFICIENCIA ........................................................................................................................... 15 2.3.4. OBLIGACIONES DE DISEÑO ............................................................................................................................ 15 2.3.4.1. ESTÁNDARES .......................................................................................................................................................... 15 2.3.4.2. LIMITACIONES HARDWARE .................................................................................................................................... 16 2.3.5. ATRIBUTOS .................................................................................................................................................... 16 2.3.5.1. SEGURIDAD ............................................................................................................................................................ 16 2.3.5.2. MANTENIMIENTO .................................................................................................................................................. 16 2.3.6. OTROS REQUISITOS ....................................................................................................................................... 17 2.3.6.1. BASE DE DATOS ...................................................................................................................................................... 17 3 ANÁLISIS ......................................................................................................................................................... 18 3.1 CASOS DE USO ................................................................................................................................................... 18 3.2 DIAGRAMAS DE SECUENCIA .............................................................................................................................. 46 3.3 DIAGRAMA UML ................................................................................................................................................ 49 3.4 DISEÑO ENTIDAD-RELACIÓN ............................................................................................................................. 51 4 DISEÑO ........................................................................................................................................................... 52 4.1 NIVEL DE INTERFAZ ............................................................................................................................................ 53 4.1.1 DIAGRAMAS DE NAVEGABILIDAD ................................................................................................................. 57 4.1.1.1 USUARIO ................................................................................................................................................................ 57 4.1.1.2 USUARIO CON PERMISO DE ADMINISTRACIÓN EN ÓRDENES DE TRABAJO........................................................... 58 4.1.1.3 USUARIO CON PERMISO ALMACÉN ....................................................................................................................... 59 4.1.1.4 USUARIO CON PERMISO DE INGENIERÍA ............................................................................................................... 60
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 3 de 97 4.1.1.5 USUARIO CON PERMISO DE COMPRAS .................................................................................................................. 61 4.1.1.6 USUARIO ADMINISTRADOR ................................................................................................................................... 62 4.2 NIVEL LÓGICO .................................................................................................................................................... 63 4.3 NIVEL DE PERSISTENCIA ..................................................................................................................................... 63 4.3.1 ESQUEMA DE LA BASE DE DATOS ................................................................................................................. 64 5 IMPLEMENTACIÓN E INTEGRACIÓN ................................................................................................................ 66 5.1 TECNOLOGÍAS.................................................................................................................................................... 66 5.2 HERRAMIENTAS ................................................................................................................................................. 67 5.3 DETALLES DE LA IMPLEMENTACIÓN .................................................................................................................. 68 5.3.1 PERFILES DE USUARIO ................................................................................................................................... 68 5.3.2 AUTENTIFICACIÓN DE USUARIOS .................................................................................................................. 69 5.3.3 ASPECTOS GENERALES .................................................................................................................................. 69 5.4 INTEGRACIÓN .................................................................................................................................................... 70 6 EVALUACIÓN Y PRUEBAS ................................................................................................................................ 72 6.1 EVALUACIÓN ..................................................................................................................................................... 72 6.2 PRUEBAS ............................................................................................................................................................ 72 6.2.1 PRUEBA SOLICITUD DE ALTA DE UN NUEVO COMPONENTE ........................................................................ 72 6.2.2 PRUEBA CONSULTA SOBRE INFORMACIÓN DE CUALQUIER COMPONENTE ................................................. 74 6.2.3 PRUEBA CONSULTA SOBRE INFORMACIÓN DE CUALQUIER ÓRDEN DE FABRICACIÓN ................................ 76 6.2.4 PRUEBA EXTRAER O QUITAR STOCK DE UN COMPONENTE EN UNA UBICACIÓN DETERMINADA ............... 79 6.2.5 PRUEBA HACER UN KITTING ......................................................................................................................... 81 6.2.6 PRUEBA SOLICITUD DE COMPRA .................................................................................................................. 83 7 CONCLUSIONES ............................................................................................................................................... 86 BIBLIOGRAFÍA .............................................................................................................................................................. 87 ANEXO A. DESCRIPCIÓN DE TECNOLOGÍAS .................................................................................................................. 88 A.1. HTTP .................................................................................................................................................................. 88 A.2. PHP .................................................................................................................................................................... 89 Ventajas ..................................................................................................................................................................... 90 Inconvenientes ........................................................................................................................................................... 91 A.3. CSS ..................................................................................................................................................................... 91 L OS TRES TIPOS DE ESTILOS .................................................................................................................................................... 91 V ENTAJAS DE USAR LAS HOJAS DE ESTILO .................................................................................................................................. 92 A.4. LINUX ................................................................................................................................................................. 92 A.5. HTML ................................................................................................................................................................. 93 N OCIONES BÁSICAS DE HTML ............................................................................................................................................... 94 A CCESIBILIDAD WEB ............................................................................................................................................................. 95 A.6. SERVIDOR HTTP APACHE ................................................................................................................................... 95 V ENTAJAS .......................................................................................................................................................................... 96 U SO .................................................................................................................................................................................. 96 A.7. MYSQL ............................................................................................................................................................... 97 A PLICACIONES .................................................................................................................................................................... 97
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 4 de 97 1 INTRODUCCIÓN La aplicación en PHP supone la creación de una herramienta, orientada al Web, para la administración de un inventariado de componentes comerciales como de diseño propio, codificación automática de los mismos, consultoría de información sobre fabricantes, proveedores, ofertas, stock y en que estructuras de productos se están utilizando, gestión global de solicitudes de compra y posteriores pedidos, organización del almacén (adición y extracción de stock), realización de “kitting” para obtener las diferentes cantidades de los componentes que forman una estructura de un producto, gestión de las órdenes de trabajo dentro de la empresa. Otros requisitos más básicos son de tipo administrativo que conllevan el alta de un nuevo usuario en el sistema, eliminación y modificación de información de los diferentes componentes dentro del sistema, consultoría de la base de datos mediante el lenguaje SQL. Nuestra aplicación tendrá como finalidad llegar a ser una E.R.P para la empresa que se irá expandiendo con diferentes módulos como la posible recepción de los pedidos, solicitudes de compra automáticas, gestiones financieras según la orden de trabajo o la verificación de los pedidos comprobando los diferentes estados por los que tiene que pasar (IPC, cantidades correctas, precios, etc..) • Las motivaciones: Las motivaciones que me han llevado a emprender la realización de este Proyecto Final de Carrera podríamos definirlas en los siguientes puntos, técnicos y humanos, los cuales me han servido como ensayo general antes de la inminente salida de la Universidad hacia la próspera vida laboral. Mis aspiraciones técnicas fueron el hecho de afrontar un reto importante como la programación de una aplicación de esta índole dentro de un ámbito empresarial y la adaptación a unas herramientas ya impuestas dentro de la empresa, como la programación en PHP, uso de las bases de datos en MYSQL y la creación de plantillas CSS y páginas en HTML. Uno de los factores más importante que hizo que el proyecto fuera motivador para mí fue el hecho de la usabilidad de las Bases de Datos durante toda mi carrera y en cuyo reto ésta parte era muy importante. El hecho de que durante todo este tiempo haya estado cumpliendo por parte de la empresa y por mi parte objetivo tras objetivo me ha ido generando una satisfacción personal muy gratificante y provocando que dentro del proyecto inicial propusiese diversas funcionalidades futuras para mejorar procedimientos y que se estudiarán por parte de la empresa. Mis aspiraciones humanas fueron enfocadas a la preparación a la hora de mantener reuniones con entidades importantes para acordar objetivos sobre el proyecto, mejorar o modificar cosas sobre el mismo, innovar o intentar hacer realidad diversas ideas para mejorar en lo posible el funcionamiento de diversos procedimientos dentro de la empresa. A nivel personal me ha servido para mejorar en diversos aspectos como la organización del código, pensar en la futura administración del mismo, facilidad a la hora de modificar ciertos aspectos del proyecto,
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 5 de 97 tener iniciativa propia aunque se escape del objetivo principal por la posibilidad de incorporarse dentro de la aplicación y a cumplir plazos de entrega. • Planteamiento técnico: El objetivo del planteamiento técnico ha sido dotar a la aplicación de varios puntos: 1. Interfaz de usuario amigable y eficiente 2. Portabilidad y capaz en un futuro de adaptarse a nuevas tecnologías. 3. Desarrollo sobre tecnología Linux, Apache, PHP y MySQL. 4. Interfaz Web que pueda tener acceso desde cualquier navegador web. Se ha desarrollado sobre estos puntos una aplicación que simplificase la interacción entre el usuario y la máquina al mismo tiempo que resultase llamativa, elegante, entendible y eficaz. Para ello he tenido en cuenta un entorno gráfico muy detallado, potente, intuitivo y de rápido aprendizaje por parte del usuario. Diversos estudios hechos anteriormente por Internet demuestran que existen aplicaciones potentes pero el motivo de la complejidad de las mismas hace que sean rechazadas por lo que en nuestro caso hemos evitado al máximo todo ello. De esta manera he llegado a la compatibilidad y portabilidad entre navegadores web, haciendo más exacta la representación web cuanto más exacto sea el navegador. Los mejores resultados se obtienen con los navegadores “Mozilla” sin dejar de representarse correctamente con otros navegadores de versiones “Internet Explorer de Microsoft o Opera”. Quiero destacar de las tecnologías utilizadas lo denominado como “futurabilidad” y la portabilidad, entendiendo por la misma la capacidad para ser multiplataforma y de alternarlas sin perder funcionalidad, y por “futurabilidad” la capacidad del portal para sostenerse en el futuro al basarse en tecnologías estándares y lenguajes de amplia difusión y establecidos. El desarrollo sobre las tecnologías “Linux + Apache + PHP + MySQL” permite instalar la aplicación bajo un mínimo presupuesto: coste mínimo del hardware para el funcionamiento del servidor: todo ordenador podría solucionar las necesidades que, en caso de ser mayores, se podría recurrir a hospedaje compartido o servidor profesional dedicado a ello. Ambas opciones están ampliamente respaldadas por la práctica totalidad de servidores de pago o contrato con soporte PHP y MySQL, siendo las mudanzas sencillas y claras para cualquier usuario. En nuestro caso nos encontramos con un servidor profesional dedicado a ello que incluso en la actualidad se está pensando cambiar con lo que no conllevará grandes cambios por lo mencionado anteriormente. Por otro lado, los gastos del cliente son nulos ya que para utilizar la aplicación sólo se necesitaría un navegador web de los disponibles en mercado, ahorrándonos la instalación de cualquier aplicación que actúe de cliente, siendo incluso necesario para la gestión administrativa de la misma. Debido a su amplia funcionalidad desde el navegador web, se puede acceder desde cualquier ordenador conectado a Internet haciendo que el potencial de usuarios sea casi global.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 6 de 97 2 ESPECIFICACIÓN DE REQUISITOS 2.1. INTRODUCCIÓN En este punto se hará una descripción completa del comportamiento del sistema que se va a desarrollar a lo largo de todo el documento. Aspectos tan importantes como el ámbito donde se va a desenvolver la aplicación, el propósito u objetivo por el cual se ha desarrollado, perspectivas del producto, requisitos funcionales y de usuario así como posibles mejoras. 2.1.1. PROPÓSITO El propósito del siguiente apartado consiste en la especificación de requisitos software que será útil para establecer unos prerrequisitos y el principio de todo el trabajo realizado y servirá como fuente de información para que cualquiera pueda conocer de una forma mejor y más detallada todo el proyecto. 2.1.2. ÁMBITO La aplicación que se accede mediante Web en la intranet propia de la empresa y consistirá en una interfaz dinámica que facilitará la consulta, compras, pedidos, órdenes de fabricación y gestión de stock dentro del almacén. Dependiendo del tipo de usuario se dispondrá de diferentes operaciones según el nivel de privilegios o permisos que se tenga. Las operaciones básicas de usuario será la consulta de tipo informativo sobre cualquier componente insertado en la base de datos (fabricantes, proveedores, ofertas, donde está utilizado, ubicaciones y stock). Ofrecerá también un servicio de altas de componentes para su posterior codificación dentro del sistema e inserción en la base de datos después de una supervisión del administrador de ésta área. Tendrá también un acceso a sus datos personales, módulo de consultas mediante consultas SQL y consultoría sobre todas las órdenes de fabricación con sus respectivos datos como proyecto al que pertenece, fechas de realización, responsable, componentes afectados, facturación y pedidos relacionados. El usuario administrador tendrá a parte de todas las funcionalidades anteriores se encargará de la modificación de diversos datos importantes de cualquier componente como puede ser la inserción de un nuevo fabricante o modificación de alguno existente, modificación o eliminación de algún componente, insertar, eliminar o modificar alguna oferta, insertar, modificar o eliminar alguna ubicación, supervisar el alta de componentes nuevos o de órdenes de fabricación nuevas y dar de alta masivamente componentes respetando el formato acordado para hacerlo. Según el nivel de permisos que se obtenga se puede ser un usuario intermedio a los dos casos extremos anteriores. Si el usuario tiene un perfil financiero se podrá tener acceso al módulo de compras donde se tienen funcionalidades como solicitudes de compra y obtener información de cómo progresa cada uno de ellas sobre los distintos niveles que tienen. El administrador en este tipo de perfil tendrá acceso a la firma y aceptación de las solicitudes convirtiéndose en pedidos y a toda la información adicional que se pueda introducir.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 7 de 97 Otro perfil es el de usuario de almacén donde tendrá accesos a la adición o extracción de stock para su consumo. Se podrá crear nuevas ubicaciones para componentes nuevos ayudados de una aplicación de creación de ubicaciones basada en el mapa de la empresa. Otra funcionalidad que tiene es la posibilidad de hacer un “kitting” que es como un carrito de la compra de varios componentes para su posterior extracción, pudiéndose hacer parcialmente y posteriormente recuperarlo para finalizarlo. La funcionalidad principal de todo lo descrito es la posibilidad de administrar o trabajar de forma remota sobre los recursos sin ser necesario el acceso físico para realizar las operaciones aunque es recomendable no por motivo informático si no organizativo en el módulo de almacén hacer sus operaciones posteriores a las informáticas de manera física. 2.1.3. DEFINICIONES, ACRÓNIMOS Y ABREVIATURAS • HTML: Acrónimo inglés de Hyper Text Markup Language es un lenguaje informático diseñado para estructurar textos y presentarlos en forma de hipertexto, que es el formato estándar de las páginas web. • CSS: Las hojas de estilo en cascada (Cascading Style Sheets, CSS) son un lenguaje formal de ordenador usado para definir la presentación de un documento estructurado escrito en HTML o XML. • HTTP: es el protocolo de la Web (WWW), usado en cada transacción. Las letras significan Hyper Text Transfer Protocol, es decir, protocolo de transferencia de hipertexto. • PHP: Acrónimo de "PHP: Hypertext Preprocessor". Es un lenguaje de programación de scripts y se utiliza principalmente para la programación de CGIs para páginas web, destaca por su capacidad de ser embebido en el código HTML. • Web: Es un sistema de hipertexto que funciona sobre Internet. Para ver la información se utiliza una aplicación llamada navegador web para extraer elementos de información de los servidores web y mostrarlos en la pantalla del usuario. • Web dinámica: existen dos tipos de páginas web, de contenido estático (HTML) y de contenido dinámico que se generan a partir de lo que un usuario introduce en un web o formulario y que utiliza el servidor para construir una web personalizada que envía al cliente. • Apache: Es un servidor HTTP de código abierto para plataformas Unix (BSD,GNU/Linux, etc), Windows y otras, implementa el protocolo HTTP/1.1 (RFC2616) y la noción de sitio virtual. • MYSQL: MySQL es el servidor de bases de datos relacionales más popular, desarrollado y proporcionado por MySQL AB. • API: (del inglés Application Programming Interface - Interface de Programación de Aplicaciones, interfaz de programación de la aplicación) es un conjunto de especificaciones de comunicación entre componentes software. • Usuario: Se llamará usuario a cualquier persona que acceda a la aplicación. Se diferenciarán entre ellos por los permisos que puedan tener. • Kitting: Se referenciará a este término a la acción de extracción de unidades de cualquier componente identificado en un listado dentro de la sección correspondiente en la aplicación. 2.1.4. REFERENCIAS La realización del siguiente documento se ha basado en las siguientes fuentes: [1] Wikipedia en español: http://es.wikipedia.org [2] Manual de PHP: http://www.php.net [3] Especificaciones de HTML 1.0: http://www.w3schools.com/html/default.asp
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 8 de 97 [4] Documentación de Apache: http://httpd.apache.org 2.1.5. VISIÓN GENERAL En el resto del documento se tratará todos los objetivos que se han conseguido así como se detallará y se desarrollará toda la información sobre las operaciones que se pueden hacer según qué tipo de usuario. 2.2. DESCRIPCIÓN GENERAL En esta sección se describen todos aquellos factores que afectan al producto y a sus requisitos. No se describen los requisitos, sino su contexto. Esto permitirá definir con detalle los requisitos en la sección 3, haciendo que sean más fáciles de entender. Esta sección consta de los siguientes puntos: Perspectiva del producto, funciones del producto, características de los usuarios, restricciones, factores que se asumen y futuros requisitos. 2.2.1. PERSPECTIVAS DEL PRODUCTO En el momento de nuestra llegada ya estaba implantado un Servidor Web y la base de datos MySQL dentro de una máquina Linux por lo que opté por desarrollar la aplicación en HTML con programación en PHP para generar el contenido dinámico producido por los usuarios con la introducción de datos. Posteriormente se accedería a la base de datos MySQL para comprobar, obtener o eliminar los datos necesarios para generar las páginas correspondientes. Por todo ello comuniqué la forma de proceder con este diseño de sistema por el soporte que proporcionaba al lenguaje PHP, MySQL y Servidor Web. Se buscó la compatibilidad entre navegadores (Microsoft Internet Explorer versión 5.5 o superiores, Mozilla Firefox, Safari, Opera) para hacer más potente la aplicación. Otro punto importante fue la forma de presentar la aplicación. Conllevó hacer una pequeña consulta a las directrices de la empresa sobre formatos, estándares y pantones para poder desarrollar tipos de letra, colores, formas de botones, tablas. La resolución a la que se optó fue la de 800x600 aunque lo más recomendable era 1024x768 para que todos los elementos representados cupieran sin problema alguno para cualquier máquina. Se trató de que fuese lo más intuitivo y amigable para el usuario ofreciendo una interfaz llamativa a la vista y separando los privilegios que tuviese cada uno. Fue importante saber que para alojar la aplicación, tanto el servidor Apache como MySQL han de trabajar sobre un sistema cualquiera de Linux. Gran parte de las distribuciones Linux funcionan sobre máquinas 386, a excepción, en el caso de utilizar un PC Pentium II o mayor, porque hubiera que, usar un servidor que debe ejecutar PHP junto con base de datos MySQL. Se puede implantar los servidores con arquitectura diferente a Intel x86 (Sparc, Alpha,..). El software utilizado está formado por: distribución Linux, servidor web Apache con módulo PHP, servidor de base de datos MySQL y navegadores tales como Internet Explorer o Mozilla Firefox. Cualquier comunicación entre cliente y aplicación se gestiona a través del navegador web y el servidor de la misma a través de TCP/IP sobre el protocolo HTTP. Hay un límite de páginas para utilizar
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 9 de 97 simultáneamente para controlar el consumo de memoria que está relacionado con el hardware del PC, el ancho banda de la conexión y la velocidad del procesador. 2.2.2. FUNCIONES DEL PRODUCTO Las funciones que realizará la aplicación web serán las siguientes: I. Inicio de sesión como usuario autentificado. Se comprobará así los permisos que tiene cada uno de los usuarios a la hora de interaccionar con la aplicación II. Búsquedas sencillas sobre un dato o más avanzadas sobre varios especificándolos de forma estricta o parcial. Esto dotará a la aplicación de un potente motor de búsqueda. Dichas búsquedas servirán para encontrar componentes, ofertas, fabricantes, proveedores, stocks u órdenes de fabricación. III. Consultas de archivos adjuntos de los componentes dados de alta. IV. Dar de alta diversos componentes con sus datos más relevantes, incluso archivo adjunto, así como sus fabricantes, proveedores, ofertas y ubicaciones y la posibilidad de tener un seguimiento del mismo así como de posibles modificaciones. V. Dar de alta diversas órdenes de fabricación para un mejor desarrollo de trabajo en la empresa. Se agregarán a la base de datos con la información más importante como el responsable, que componentes son afectados, fechas de trabajo, cantidades, facturación, horas y proyecto relacionado. VI. Búsquedas sencillas o avanzadas sobre datos de las órdenes de fabricación. Se podrá consultar cualquier información como por ejemplo los pedidos que existen con esa orden de fabricación, responsable, componentes…Para potenciar la búsqueda se podrá filtrar la misma por diferentes campos o por alguno de ellos. VII. Se podrá operar sobre el almacén. Las operaciones que se podrán hacer es la adición o extracción de stock, listados en formato Excel sobre alguna ubicación o ubicaciones buscadas o hacer kittings de manera parcial o completa. VIII. Acceder a los datos personales para cambiarlos. IX. Posibilidad de sacar informes o búsquedas con el formato Excel de forma personal bajo consultas SQL. X. Operaciones sobre compras. Se podrá hace solicitudes de compra sobre componentes o cualquier otro equipo. La posibilidad de un seguimiento de firmas para su posterior pedido. XI. A nivel administrativo de cualquier módulo o aplicación. Según los permisos que se obtengan se podrá alguna o varias de las siguientes operaciones. Se tendrá acceso a la modificación, eliminación e inserción de cualquier componente, orden de fabricación, divisas, proveedores o de cualquier dato de una tabla (componente, fabricante del componente, oferta y ubicaciones). Se podrá dar de alta o baja a un usuario o dar permisos nuevos o quitarlos. A nivel de compras se podrán firmar las solicitudes de los usuarios. A nivel almacén se podrá dar de alta nuevas ubicaciones para diversos componentes.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 16 de 97 · Control centralizado de la presentación de un sitio web agilizando la actualización del mismo. · En concreto, diversos navegadores permiten que los usuarios especifiquen su propia hoja de estilo aplicándolos a un sitio web de manera que, aumenta la accesibilidad. · En una misma página se puede disponer de varias hojas de estilo según el dispositivo o la elección del usuario. · El documento HTML reduce su tamaño y es de mejor comprensión. 2.3.4.2. LIMITACIONES HARDWARE El sistema no requiere de un hardware especial extra, a excepción de un elemento para la conexión de red junto con la conexión a Internet. Los sistemas de los clientes deben permitir la ejecución de un navegador gráfico para acceder a la aplicación y la conexión a red, por lo demás pueden ser variables. Como he comentado con anterioridad, podemos instalar un sistema basado en Linux con Apache, PHP y MySQL en sistemas 386, 486, Pentium,… Aplicado en un entorno real habría que ir mejorándolo cuánto mayores fuesen las necesidades del sistema. 2.3.5. ATRIBUTOS 2.3.5.1. SEGURIDAD Llegamos a un punto básico para la aplicación. Ofrece diferentes funcionalidades supeditadas el usuario que acceda a la misma. Para identificar al cliente de forma fiable requerimos una cuenta con nombre de usuario y contraseña que asegura la validez del usuario en la aplicación. Dependiendo del usuario facilitaremos unas herramientas u otras. La información acerca de las cuentas se guarda en la base de datos, con las contraseñas cifradas en MD5. En un futuro, la autentificación del usuario irá cifrada mediante el protocolo HTTPS, que conlleva el uso seguro de la aplicación durante su sesión. 2.3.5.2. MANTENIMIENTO El mantenimiento de la aplicación se lleva a cabo por parte de los administradores de la misma, al igual que los cambios introducidos o modificaciones requeridas de la base de datos o funcionalidad, que se gestionarán por parte del administrador del sistema.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 17 de 97 2.3.6. OTROS REQUISITOS 2.3.6.1. BASE DE DATOS La aplicación utiliza una base de datos en MySQL, donde se almacenará toda la información referida a componentes, ofertas, solicitudes de compra, pedidos, stock, kittings, etc.….Para poder consultarla se hará mediante el servidor web con PHP y la API de acceso de MySQL.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 18 de 97 3 ANÁLISIS En la fáse de análisis se especificará qué tiene que hacer el programa que se va a desarrollar, tanto en lo que se refiere al comportamiento interno (gestión de los datos) como al externo (interacción con el usuario y con otras aplicaciones). Por eso está sección se tratará con casos de uso que describen requisitos del sistema y cómo estos interactúan con el usuario, así como, los diagramas de secuencia, que muestra la interacción de un conjunto de objetos en una aplicación a través del tiempo modelando cada caso de uso. Mientras que el caso de uso permite el modelado de una vista negocio del escenario, el diagrama de secuencia contiene detalles de implementación del escenario, incluyendo los objetos y clases que se usan para implementar el escenario, y mensajes intercambiados entre los objetos. Por último se utilizará el diagrama UML para construir, documentar, visualizar y especificar el sistema de software de una forma gráfica. 3.1 CASOS DE USO Explicaré con más detalle cada una de las funciones más importante dentro de la aplicación. Adjunto un gráfico intuitivo (Figura 3.1) para una mejor comprensión y posteriormente los casos de uso con un nivel de detalle más minucioso. Figura 3.1 – Casos de Uso uc Casos de uso principales Límite del sistema Consulta listado maestro Usuario Consulta fabricantes Consulta proveedores Consulta stock Solicitud Alta Administración Alta SQL Información Personal Consulta Órdenes de trabajo Solicitud Alta Órdenes de trabajo Ingeniería ORCAD Ingeniería Insertar AVL Almacén Quitar o Sacar Stock Almacén Kitting Hacer solicitud de compra Gestionar solicitudes de compra Gestionar Pedidos Firmar Solicitudes de compra Usuario con permisos
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 19 de 97 Caso de uso Búsqueda de información de un componente Descripción Búsqueda de información sobre fabricantes, proveedores, datasheet, ubicaciones, stocks, ofertas, costes de planificación y donde se está usando Actor iniciador Usuario Actores secundarios - - Resumen Un usuario accede a la aplicación para buscar información sobre un componente. Introduce la(s) palabra(s) a buscar en un formulario y ordena la búsqueda. El sistema debe buscar coincidencias de componentes con las palabras que el usuario ha introducido y devolverle el listado Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú INVENTARIADO y submenú LISTADO MAESTRO P ostcondiciones -- Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. El usuario in troduce los términos de la búsqueda en la caja de texto del formulario y pulsa el botón de “Buscar”. 2. El navegador envía el contenido del formulario al servidor, para que este realice una búsqueda en la base de datos. 3. El servidor web se conecta con la base de datos y realiza una consulta basándose en los datos proporcionados por el usuario. 4. Con la respuesta de la base de datos, el servidor web construye una página con un listado de los componentes que coincidieron y la envía al navegador. 5. El navegador recibe la página con los resultados de la búsqueda y se la muestra al usuario. Extensiones síncronas Si en 3. La base de datos no devuelve ningún resultado se envía un mensaje informativo comunicando de la inexistencia de coincidencias y el usuario podrá intentarlo de nuevo. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 20 de 97 Caso de uso Búsqueda de fabricantes de un componente Descripción Búsqueda de información sobre componentes a partir de fabricantes. Se obtendrá información sobre proveedores, datasheet, ubicaciones, stocks, ofertas, costes de planificación y donde se está usando Actor iniciador Usuario Actores secundarios -- Resumen Un usuario accede a la aplicación para buscar información sobre un componente a partir de fabricantes. Introduce la(s) palabra(s) a buscar en un formulario y ordena la búsqueda. El sistema debe buscar coincidencias de componentes con las palabras que el usuario ha introducido y devolverle el listado Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú INVENTARIADO y submenú CONSULTA FABRICANTES P ostcondiciones -- Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. El usuario introduce los términos de la búsqueda en la caja de texto del formulario y pulsa el botón de “Buscar”. 2. El navegador envía el contenido del formulario al servidor, para que este realice una búsqueda en la base de datos. 3. El servidor web se conecta con la base de datos y realiza una consulta basándose en los datos proporcionados por el usuario. 4. Con la respuesta de la base de datos, el servidor web construye una página con un listado de los componentes que coincidieron y la envía al navegador. 5. El navegador recibe la página con los resultados de la búsqueda y se la muestra al usuario. Extension es síncronas Si en 3. La base de datos no devuelve ningún resultado se envía un mensaje informativo comunicando de la inexistencia de coincidencias y el usuario podrá intentarlo de nuevo. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 21 de 97 Caso de uso Búsqueda de proveedores de u n componente Descripción Búsqueda de información sobre componentes a partir de proveedores. Se obtendrá información sobre fabricantes, datasheet, ubicaciones, stocks, ofertas, costes de planificación y donde se está usando Actor iniciador Usuario Actor es secundarios -- Resumen Un usuario accede a la aplicación para buscar información sobre un componente a partir de proveedores. Introduce la(s) palabra(s) a buscar en un formulario y ordena la búsqueda. El sistema debe buscar coincidencias de componentes con las palabras que el usuario ha introducido y devolverle el listado Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú INVENTARIADO y submenú CONSULTA PROVEEDORES P ostcondiciones -- Flujos de eventos Interacciones del usua rio Obligaciones del sistema 1. El usuario introduce los términos de la búsqueda en la caja de texto del formulario y pulsa el botón de “Buscar”. 2. El navegador envía el contenido del formulario al servidor, para que este realice una búsqueda en la base de datos. 3. El servidor web se conecta con la base de datos y realiza una consulta basándose en los datos proporcionados por el usuario. 4. Con la respuesta de la base de datos, el servidor web construye una página con un listado de los componentes que coincidieron y la envía al navegador. 5. El navegador recibe la página con los resultados de la búsqueda y se la muestra al usuario. Extensiones síncronas Si en 3. La base de datos no devuelve ningún resultado se envía un mensaje informativo comunicando de la inexistencia de coincidencias y el usuario podrá intentarlo de nuevo. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 22 de 97 Caso de uso Búsqueda de información sobre stock de un componente Descripción Búsqueda de información sobre el stock de los componentes a partir de una lista de componentes y stock que quiere saber. Actor iniciador Usuario Actores secundarios -- Resumen Un usuario accede a la aplicación para buscar información sobre el stock de varios componentes a partir de una lista. Introduce un listado de componentes y stock de los cuales se quiere obtener información y ordena la búsqueda. El sistema debe buscar coincidencias de componentes con el listado que el usuario ha introducido y devolvérselo cumplimentado. Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú INVENTARIADO y submenú CONSULTA STOCK P ostcondiciones -- Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. El usuario introduce los términos de la búsqueda en la lista de texto del formulario y pulsa el botón de “Buscar”. 2. El navegador envía el contenido del formulario al servidor, para que este realice una búsqueda en la base de datos. 3. El servidor web se conecta con la base de datos y realiza una consulta basándose en los datos proporcionados por el usuario. 4. Con la respuesta de la base de datos, el servidor web construye una página con un listado de los componentes y stock que coincidieron y la envía al navegador. 5. El navegador recibe la página con los resultados de la búsqueda y se la muestra al usuario. Extensiones síncronas Si en 3. La base de datos no devuelve ningún resultado se envía un mensaje informativo comunicando de la inexistencia de coincidencias y el usuario podrá intentarlo de nuevo. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 23 de 97 C aso de uso Agregar componentes mediante un fichero Descripción Agregar componentes desde un fichero en formato .csv y con los campos obligatorios. Actor iniciador Usuario administrador Actores secundarios -- Resumen Un usuario administrador accede a la aplicación para insertar desde un fichero todos los componentes que tengan bien cumplimentados los datos obligatorios. El sistema debe buscar coincidencias de componentes con el listado que el usuario administrador ha introducido y no agregará componentes repetidos ni con los datos erróneos Precondiciones El usuario administrador ha accedido a la aplicación, ha entrado en el menú INVENTARIADO y submenú ALTAS MASIVAS y tiene permisos de administrador. P ostcondiciones Los nuevos componentes quedan registra dos en el sistema Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. El usuario introduce el fichero con los componentes en campo del formulario y pulsa el botón de “Insertar”. 2. El navegador envía el contenido del formulario al servidor, para que este realice una búsqueda en la base de datos. 3. El servidor web se conecta con la base de datos y realiza una inserción de cada uno de los componentes basándose en los datos proporcionados por el usuario y que no sean repetidos o erróneos. Cada uno de ellos tendrán un ID propio. 4. El navegador recibe el mensaje de información errónea o no. Extensiones síncronas Si en 4. En la base de datos existe registros repetidos o erróneos se envía un mensaje informativo comunicando de las líneas que han producido el fallo o los errores que tiene el fichero al navegador y el usuario podrá intentarlo de nuevo. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 24 de 97 Caso de uso Hacer informes con consultas SQL Descripción Se hacen todo tipo de informes mediante consulta s SQL y será posible la exportación de los mismos en Excel Actor iniciador Usuario Actores secundarios -- Resumen Un usuario accede a la aplicación para hacer sus propios informes a partir de consultas SQL para posteriormente exportarlos en EXCEL. El sistema debe buscar coincidencias con el tipo de consulta que se introdujo y devolver la información en un listado. Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú SQL Postcondiciones -- Flujos de eventos Interacciones del us uario Obligaciones del sistema 1. El usuario introduce la consulta para buscar la información deseada y pulsa el botón de “SQL”. 2. El navegador envía el contenido del formulario al servidor, para que este realice una búsqueda en la base de datos. 3. El servidor web se conecta con la base de datos y realiza una consulta basándose en la consulta proporcionada por el usuario. 4. Con la respuesta de la base de datos, el servidor web construye una página con un listado y la envía al navegador. 5. El nave gador recibe la página con los resultados de la búsqueda y se la muestra al usuario. 6. Si el usuario quisiera exportarlo en formato EXCEL le daría al botón “EXCEL”. 7. Con la respuesta el servidor web construye un archivo EXCEL y la envía al navegador. 8. El usuario acepta el archivo. 9. Con la respuesta el servidor web permite el acceso al fichero. Extensiones síncronas Si en 8. El usuario cancelase su descarga no ocurriría el punto 9. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 25 de 97 Caso de uso Modificar o mostrar la información personal. Descripción Modificar u obtener información sobre los datos personales dentro de la aplicación. Actor iniciador Usuario Actores secundarios -- Resumen El usuario podrá obtener y modificar información personal útil para la aplicación. Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú INFORMACIÓN PERSONAL. P ostcondiciones Los cambios de información quedan registrados en el sistema Flujos de eventos Interacciones del usuario Obligaciones del sistema 1 . El servidor web se conecta con la base de datos y realiza una consulta basándose en el usuario que ha accedido. 2. Con la respuesta de la base de datos, el servidor web construye una página con los datos y la envía al navegador. 3. El usuario compr ueba los datos y modifica lo que desea. Posteriormente pulsa el botón “Modificar” 4. El sistema comprueba que no existen repeticiones ni datos erróneos y registra los cambios en la base de datos. Posteriormente envía la información al navegador. 5. E l navegador recibe la página con los resultados de la modificación y se la muestra al usuario. Extensiones síncronas En 3 el usuario puede salir sin modificar ningún dato. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 32 de 97 Caso de uso Agregar una nueva orden de fabricación Descripción Agregar una nueva orden de fabricación Actor iniciador Usuario administrador con permis o de Producción Actores secundarios -- Resumen El usuario podrá agregar una nueva orden de fabricación Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú PRODUCCIÓN y submenú SOLICITUD ALTA. Tendrá que tener el permiso de Producción P ostcondiciones La información queda registrada en el sistema Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. Se inicia cuando el usuario presiona el botón “SOLICITUD ALTA”. 2. El sistema recoge los datos mediante un formulario. 3. El usuario introduce los datos y presiona el botón “Introducir”. 4. El sistema comprueba que no existen repeticiones ni datos erróneos y agrega el registro en la base de datos con un ID propio. Posteriormente envía la información al navegador. 5. El navegador recibe la página con la nueva alta y se la muestra al usuario. Extensiones síncronas En 3 no se rellena los campos obligatorios o no tienen el formato correcto, el sistema informa del error y vuelve a solicitarlos. En 3 puede cancelar el alta. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 33 de 97 Caso de uso Agregar un nuevo componente al sistema. Descripción Agregar un nuevo componente al sistema a expensas de que un administrador lo confirme para darlo de alta definitivamente. Actor iniciador Usuario Actores secundarios -- Resumen El usuario podrá agregar un nuevo componente en el sistema de forma parcial hasta que un administrador corrobore los datos y se ingrese en el sistema de manera definitiva Precondiciones El usuario ha accedido a la aplicac ión y ha entrado en el menú INVENTARIADO y submenú SOLICITUD ALTA. P ostcondiciones La información queda registrada en el sistema . Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. Se inicia cuando el usuario presiona el botón “SOLICITUD ALTA”. 2. El sistema recoge los datos mediante un formulario. 3. El usuario introduce los datos y presiona el botón “Introducir”. 4. El sistema comprueba que no existen repeticiones ni datos erróneos y agrega el registro en la base de datos con un ID propio. Posteriormente envía la información al navegador y envía un mensaje de correo para el administrador. 5. El navegador recibe la página con la nueva alta y se la muestra al usuario. Extensiones síncronas En 3 no se rellena los campos oblig atorios o no tienen el formato correcto, el sistema informa del error y vuelve a solicitarlos. En 3 puede cancelar el alta. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 34 de 97 Caso de uso Modificar la información sobre una alta parcial de un componente Descripción Modificar la información sobre una alta parcial de un componente Actor iniciador Usuario Actores secundarios -- Resumen El usuario podrá modificar información sobre un alta parcial de un componente. Precondiciones El usuario ha accedido a la aplicación y ha entr ado en el menú INVENTARIADO y submenú ALTAS PROVISIONALES. P ostcondiciones Los cambios de información quedan registrados en el sistema Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. Se inicia cuando el usuario selecciona un componente que quiere modificar de los que había dado de alta parcialmente. 2. El sistema recoge los datos de la base de datos y genera un formulario con la información. 3. El usuario modifica los datos y presiona el botón “Modificar”. 4. El sistema compr ueba que no existen repeticiones ni datos erróneos y registra los cambios en la base de datos. Posteriormente envía la información al navegador. 5. El navegador recibe la página con los resultados de la modificación y se la muestra al usuario. Extensio nes síncronas En 3 el usuario puede salir sin modificar ningún dato. En 5 el usuario puede reenviar el componente parcial de nuevo para ser evaluado de nuevo por los administradores. En este caso iría acompañado de un mensaje de reenvío. Extensiones así nc ronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 35 de 97 Caso de uso Eliminar la información sobre una alta parcial de un componente Descripción Eliminar la información sobre una alta parcial de un componente Actor iniciador Usuario Actores secundarios -- Resumen El usuario podrá Eliminar info rmación sobre un alta parcial de un componente. Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú INVENTARIADO y submenú ALTAS PROVISIONALES. P ostcondiciones Los cambios de información quedan registrados en el sistema Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. Se inicia cuando el usuario selecciona un componente que quiere eliminar de los que había dado de alta parcialmente. 2. El sistema recoge los datos de la base de datos y genera un formulario con la información. 3. El usuario selecciona el componente y presiona el botón “Eliminar”. 4. El sistema lo elimina y registra los cambios en la base de datos. Posteriormente envía la información al navegador. 5. El navegador recibe la página con los resultados de la eliminación y se la muestra al usuario. Extensiones síncronas En 3 el usuario puede salir sin eliminar ningún dato. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 36 de 97 Caso de uso Agregar un nuevo componente al sistema. Descripción Agregar un nuevo componente al sistema revisando algún componente dado de alta provisional. Actor iniciador Usuario administrador Actores secundarios -- Resumen El usuario podrá agregar un nuevo componente en el sistema cuando compruebe que todos los datos parciales son correctos Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú HERRAMIENTAS DW y submenú ALTAS ADMINISTRADOR. P ostcondiciones La información queda registrada en el sistema. Flujos de eventos Interacciones del usuario Obligaci ones del sistema 1. Se inicia cuando el usuario presiona el botón “ALTAS ADMINISTRADOR”. 2. El sistema recoge los datos mediante un formulario. 3. El usuario comprueba los datos introducidos anteriormente por el usuario que solicitó el alta y presiona el botón “Introducir”. 4. El sistema comprueba que no existen repeticiones ni datos erróneos y agrega el registro en la base de datos con un ID propio. Posteriormente envía la información al navegador y envía un mensaje de correo para el solicitante para que sepa que ha sido correcta y otro correo informativo para los demás usuarios con el ID definitivo. 5. El navegador recibe la página con la nueva alta y se la muestra al usuario. Extensiones síncronas En 3 no se rellena los campos obligatorios o no t ienen el formato correcto, el sistema informa del error y vuelve a solicitarlos. En 3 puede cancelar o rechazar el alta. En este último caso se envía un correo al solicitante para que sepa el motivo y pueda subsanarlo. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 37 de 97 Caso de uso Agregar o quitar stock a un componente del sistema. Descripción Agregar o quitar stock a un componente del sistema. Esta acción se puede hacer introduciendo previamente el ID del componente o por la ubicación donde se encuentre. Actor iniciador Usua rio con permisos de ALMACÉN Actores secundarios -- Resumen El usuario podrá agregar o quitar stock de un componente Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú ALMACÉN y submenú OPERACIONES POR PART NUMBER. P ostcon diciones La información queda registrada en el sistema. Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. Se inicia cuando el usuario presiona el botón “OPERACIONES POR PART NUMBER”. Selecciona un componente al que quiere agregar o quitar stock mediante una búsqueda relativa introduciendo para ello información de búsqueda. 2 El sistema recoge los datos de la base de datos y genera un formulario con la información 3. El usuario agrega o extrae las unidades del componente que quiera y presiona el botón correspondiente. 4. El sistema comprueba que no existen datos erróneos y cambia el registro en la base de datos. Posteriormente envía la información al navegador. Extensiones síncronas En 3 no se rellena los campos obligatorios o no t ienen el formato correcto, el sistema informa del error y vuelve a solicitarlos. En 3 puede cancelar la acción. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 38 de 97 Caso de uso Agregar o quitar stock a un o o varios componente s del sistema mediante un kitting. Descripción Ag regar o quitar stock a un o o varios componente s del sistema. El usuario lo podrá hacer mediante un listado donde podrá elegir desde que ubicaciones se extraen las unidades. Ésta acción se podrá hacer de forma parcial o completa. Ésta acción se podrá también hacer con un listado de componentes o un ID de un componente del cual cuelga una estructura entera de componentes que forman un producto. Actor iniciador Usuario con permisos de ALMACÉN Actores secundarios -- Resumen Agregar o quitar stock a uno o var ios componentes del sistema mediante un kitting. Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú ALMACÉN y submenú KITTING NUEVO. P ostcondiciones La información queda registrada en el sistema. Flujos de eventos Interaccio nes del usuario Obligaciones del sistema 1. Se inicia cuando el usuario rellena el formulario donde deposita la lista de componentes y las unidades que quiere extraer. Seguidamente presiona el botón “KITTING” 2 El sistema recoge los datos de la base de datos y genera un formulario con la información. 3. El usuario extrae las unidades de las ubicaciones que desee de cada uno de los componentes que introdujo en la lista y presiona el botón “EJECUTAR KITTING”. 4. El sistema comprueba que no existen datos erróneos y cambia el registro en la base de datos. Posteriormente envía la información al navegador. Extensiones síncronas En 3 no se rellena los campos obligatorios o no tienen el formato correcto, el sistema informa del error y vuelve a solicitarlos. En 3 puede cancelar la acción. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 39 de 97 Caso de uso Agregar una solicitud de compra . Descripción El usuario podrá solicitar la compra de diferentes componentes eligiendo entre diversas referencias y proveedores. Actor iniciador Usuari o con permisos de COMPRAS Actores secundarios -- Resumen El usuario podrá solicitar la compra de diferentes componentes eligiendo entre diversas referencias y proveedores. Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú COM PRAS y submenú SOLICITUD DE COMPRA. P ostcondiciones La información queda registrada en el sistema. Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. Se inicia cuando el usuario rellena el formulario donde primero rellena los datos de la solicitud y luego deposita la lista de componentes y la elección de las referencias. Seguidamente presiona el botón “SOLICITUD COMPRA”. 2 El sistema recoge los datos de la base de datos y genera un formulario con la información. 3. El usuario ac epta el archivo que se construye con la información introducida por el usuario. 4. El sistema comprueba que no existen datos erróneos y cambia el registro en la base de datos. Posteriormente envía la información al navegador y la muestra en pantalla en formato pdf. Extensiones síncronas En 1 no se rellena los campos obligatorios o no tienen el formato correcto, el sistema informa del error y vuelve a solicitarlos. En 3 puede cancelar la acción. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 40 de 97 Caso de uso Mostrar o modifi car la información sobre las solicitudes de compra. Descripción Modificar u obtener información sobre las solicitudes de compra. Actor iniciador Usuario con permisos de COMPRAS Actores secundarios -- Resumen El usuario podrá obtener y modificar informa ción sobre las solicitudes de compra. Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú COMPRAS y submenú SEGUIMIENTO SOLICITUDES. Tendrá que tener el permiso de Compras P ostcondiciones Los cambios de información quedan regist rados en el sistema Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. Se inicia cuando el usuario selecciona una solicitud de compra que quiere modificar o mostrar mediante una búsqueda relativa introduciendo para ello información de búsqueda. 2. El sistema recoge los datos de la base de datos y genera un formulario con la información. 3. El usuario modifica los datos y presiona el botón “Modificar”. 4. El sistema comprueba que no existen repeticiones ni datos erróneos y registra los cambios en la base de datos. Posteriormente envía la información al navegador y la muestra en pantalla en formato pdf. Extensiones síncronas En 3 el usuario puede salir sin firmar ninguna solicitud . Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 41 de 97 Caso de uso Firm ar las solicitudes de compra. Descripción Firmar las solicitudes de compra. Acción requerida para su posterior pedido. Actor iniciador Usuario administrador con permisos de COMPRAS Actores secundarios -- Resumen El usuario después de revisar la correct a solicitud de compra podrá firmarla para crear el pedido y así gestionarlo. Precondiciones El usuario ha accedido a la aplicación y ha entrado en el menú COMPRAS y submenú FIRMAS SOLICITUDES. Tendrá que tener el permiso de Compras P ostcondiciones Los ca mbios de información quedan registrados en el sistema Flujos de eventos Interacciones del usuario Obligaciones del sistema 1. Se inicia cuando el usuario selecciona una solicitud de compra que quiere firmar mediante una búsqueda relativa introduciendo para ello información de búsqueda. 2. El sistema recoge los datos de la base de datos y genera un formulario con la información. 3. El usuario pone la fecha de firma. 4. El sistema comprueba que no existen repeticiones ni datos erróneos y registra los cambios en la base de datos. Posteriormente envía la información al navegador y la muestra en pantalla en formato pdf. En ese instante el sistema hace que la solicitud de compra se convierta en pedido cambiándole el estado. 5. El navegador recibe la página con la solicitud de compra convertida en pedido y se muestra al usuario. Extensiones síncronas En 3 el usuario puede salir sin modificar ningún dato. Extensiones así ncronas --
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 48 de 97 Insertar un nuevo usuario dentro del sistema por parte de un administrador Figura 3.3 – Insertar un nuevo usuario dentro del sistema
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 49 de 97 3.3 DIAGRAMA UML El diagrama UML de la Figura 3.4 ayuda a entender de una forma más fácil las diferentes funciones que se pueden realizar, que tipo de usuario las puede hacer, como se pueden hacer y qué tipos de elementos están relacionados entre sí y con qué restricciones lo están. Principalmente, hay una clase de elementos fundamentales alrededor de los cuales se realizan las principales funciones de la aplicación. Éstos son itemmaster, ubica, avl, ofertas, usuarios, órdenes de fabricación y proveedores. Serán los encargados de interactuar con todos los demás elementos de la aplicación. Ahora explicaré cada uno de los elementos de la aplicación con sus posibles acciones sobre ellos y relaciones con los demás elementos. Usuarios identifica a cada uno de los miembros que podrán utilizar la aplicación. Según los permisos que tenga pertenecientes a cada uno de los campos establecidos en la tabla podrá hacer operaciones como dar de alta componentes como órdenes de trabajo, administrar tablas, modificar o eliminar elementos u órdenes de trabajo, administrar los proveedores, quitar o extraer stock, hacer kitting o hacer solicitudes de compra. Itemmaster, AVL, Ubica identifica cada uno de las diferentes informaciones que se necesitan sobre un componente dentro del sistema. Todos estos elementos están relacionados entre sí por una clave primaria denominada Part Number. Ofertas, proveedores identifica la oferta con un proveedor mediante una relación la cual está asociada a un fabricante de la tabla AVL. Sólo se podrán dar de alta si el usuario tiene el permiso pertinente. Órdenes de fabricación identifica la información que se necesita para cada una de las tareas de fabricación. Está relacionado con la tabla de solicitudes que según su campo estado pasarían a ser pedidos y los cuales tendrán una referencia a su orden de fabricación. Según los privilegios del usuario se podrán cambiar el estado de la orden, dar de alta o administrar la tabla. Huellas identifica la información necesaria para producción y estará relacionada con la tabla itemmaster ya que tiene que existir el componente para poder tener huella. Según los permisos del usuario podrá dar de alta o administrar la tabla que las contiene. Kitting y líneas de kitting contendrán toda la información necesaria sobre el kitting y los componentes a los cuales se les extraerán unidades del stock. La relación de estás dos tablas estará compuesta por el identificador del kitting y el identificador del componente. Solicitud compra y líneas solicitud compras contendrán toda la información necesaria sobre la solicitud de compra y los componentes. La relación de estás dos tablas estará compuesta por el identificador de la solicitud de compra y el identificador de cada uno de los componentes.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 50 de 97 Figura 3.4 – Diagrama UML class Modelo de clases Itemmaster «column» *PK Part Number Descripcion Norma o valor + marca() «PK» + PK_Itemmaster() AVL «column» *PK Part Number *PK LineaAVL «PK» + PK_AVL(, ) Ubica «column» *PK Part Number *PK LineaUbica «PK» + PK_Ubica(, ) Usuarios «column» *PK Identidad «PK» + PK_Usuarios() kitting «column» *PK kitting «PK» + PK_kitting() Órdenes de fabricación «column» *PK orden de fabricacion solicitud «PK» + PK_Órdenes de fabricación() Solicitud compra «column» *PK solicitud «PK» + PK_datos solicitud compra() Ofertas «column» *PK Part Number *PK Proveedor *PK LineaAVL «PK» + PK_Ofertas(, , ) Lineas solicitud compra «column» *PK solicitud *PK part number «PK» + PK_Lineas solicitud compra(, ) Lineas kitting «column» *PK kitting *PK part number «PK» + PK_Lineas kitting(, ) Huellas «column» *PK Part Number «PK» + PK_Huellas() Proveedores «column» *PK Proveedor «PK» + PK_Proveedores() Tiene tiene Administración Hacer kitting Hacer kitting Adminisrtación tiene Hacer solicitud compras Hacer solicitud compra oferta-AVL tiene tiene tiene pedidos tiene Administración Administración Dar de alta Administración tiene Administración
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 51 de 97 3.4 DISEÑO ENTIDAD-RELACIÓN Figura 3.5 – Diagrama entidad-relación (1,1) (1,n) (1,1) (1,n) (1,1) (1,n) (0,n) (1,1) (1,1) (1,n) (1,1) (1,n) (1,1) (1,n) (1,1) (1,n) (1,n) (0,n) Itemmaster Part Number Descripcion Valor o norma Encapsulado Solicitante Fecha alta Fecha baja Fecha modificar Usuario alta Usuario eliminar Usuario modificar AVL Part number Lineaavl Referencia Fabricante package Contiene item-Avl Ubicaciones part_number lineaubi stock ubicacion Ofertas Part number lineaofertas precio mdq leadtime usuario alta fecha alta Kitting Part_number lineaubi cantidad cantidadpendiente Compras id_compra proyecto responsable fecha entrega proveedor obervaciones Familias id_familia descripcion Grupo id_grupo descripcion Tipo ID_tipo descripcion Contiene tipo_Grupo Contiene Grupo-Familia Contiene familias-itemmaster contiene avl-oferta solicitud compra Proveedores id_proveedor dni nombre alias direccion email forma de pago Lineas pedido id_compra Part-number cantidad precio contienen item-ubi kitting lineaavl
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 52 de 97 4 DISEÑO El diseño de la aplicación web se ha basado en una arquitectura multicapa de tres capas lógicas como son (Figura 4.1): 1) Nivel de interfaz de usuario o presentación. 2) Nivel de aplicación o lógico. 3) Nivel de persistencia de los datos. Figura 4.1 – Diseño de aplicación El nivel de interfaz de usuario o presentación está basado en todos los documentos que se envía al servidor por parte de la aplicación mediante el usuario y que el servidor, de manera recíproca, le proporciona a éste toda la información que solicitó a través de formularios y/o enlaces. El nivel de aplicación o lógico está constituido por todas las librerías que contienen clases para facilitar la operacional de la aplicación. En nuestro caso podemos mencionar la utilización de Jquery, fpdf y calendario. El nivel de persistencia de los datos está formado por la base de datos y el sistema de gestión de la misma. Este nivel es el encargado de almacenar toda la información y controlar el acceso a la aplicación. Figura 4.2 – Arquitectura multicapa
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 53 de 97 4.1 NIVEL DE INTERFAZ Se ha diseñado una interfaz de usuario lo más amigable posible basándome en aspectos fundamentales como la facilidad de navegación por toda la aplicación, un manejo nada complejo y un aprendizaje sobre la misma rápido y conciso. Se hizo un pequeño patrón de diseño sobre la interfaz que cumplía con la imagen corporativa de la empresa. Dicha estructura puede resumirse en: Una cabecera con el logo de la empresa, nombre del menú donde se encuentra y nombre del usuario que está utilizando la aplicación. El cuerpo central según donde se encuentre el usuario puede ser un menú de enlaces hacía otros submenús, formularios basados en la información introducida por el usuario o información proporcionada por la aplicación. En el caso de las búsquedas se presenta la información con un título donde comunica al usuario el tipo de búsqueda que es, logo de la empresa , número de resultados encontrados y la tabla con los mismos donde en el margen derecho están las posibles acciones que se puedan realizar con esa búsqueda. Como existe gran diversidad de páginas dentro de la aplicación a continuación detallaré los cambios existentes entre ellas para diferenciarlas y no exista ningún tipo de duda por parte del usuario. Login En la página de login (Figura 4.3) se puede apreciar en el cuerpo los dos campos que se necesitan para empezar a utilizar la aplicación. Como se observa la cabecera es la misma que la mencionada anteriormente con su logo de empresa, nombre de menú donde se encuentra y el nombre de usuario con la palabra usuario, ya que en este punto no se sabe quien se loguea. Figura 4.3 – Login
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 54 de 97 Página principal La página principal (Figura 4.4) tiene una cabecera con el logo de la empresa, nombre de la aplicación, nombre del usuario y nombre del menú principal. En la parte del cuerpo se encuentran todos los menús por los cuales se puede navegar. Este cuerpo puede ser diferente al que muestro en este documento debido a los diferentes permisos y privilegios que tenga el usuario (es posible que no tengan acceso a los menús de compras, almacén, administración e ingeniería). En la parte inferior se encuentra el cierre de sesión de la aplicación al salir de la misma y volver al menú de login. Figura 4.4 – Página Principal Enlaces Cualquiera de los menús de la página principal llevará al usuario a otros submenús como el que se muestra a continuación (Figura 4.5). En ellos se muestra, en el cuerpo, los diferentes enlaces que tiene acceso el usuario. Puede variar cada submenú según los permisos y privilegios que tenga. En la cabecera se aprecia el logo de la empresa, nombre del menú y nombre del usuario.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 55 de 97 Figura 4.5 – Enlaces Formularios El aspecto de los formularios es como el mostrado en la Figura 4.6. Tiene la misma cabecera que cualquier página de la aplicación, con su logo de la empresa, nombre del menú donde se encuentra y el nombre del usuario. En el cuerpo se encontrará, como cualquier de los formularios que compone la aplicación, los diversos datos y campos que se tendrán que rellenar para obtener o introducir la información en la base de datos.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 56 de 97 Figura 4.6 – Formularios Búsquedas con tablas En los formularios de búsqueda los resultados de la misma serán representados como se muestran en la Figura 4.7. Se compone de una cabecera donde se encuentra la ruta de enlaces a los que se ha accedido, el logo de la empresa y número de resultados encontrados. En la parte lateral derecha estará las posibles acciones que se podrán hacer con la búsqueda y en la parte inferior se situará el menú de botones para proceder a acciones de enlaces. Figura 4.7 – Búsqueda con tablas
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 57 de 97 4.1.1 DIAGRAMAS DE NAVEGABILIDAD En el siguiente punto se muestra todas las rutas de acceso y la navegabilidad por la aplicación indicando desde que páginas se acceden e indicando sus nombres. 4.1.1.1 USUARIO Figura 4.8 – Usuario
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 64 de 97 4.3.1 ESQUEMA DE LA BASE DE DATOS Itemmaster (Part Number:char(8), Descripcion:char(64), Valor o norma:char(64), Encapsulado:char(64), Solicitante:char(64), Fecha alta:date(), Fecha baja:date(), Fecha modificar:date(), Usuario alta:char(64), Usuario eliminar: char(64), Usuario modificar:char(64)) AVL (Part number:char(8), Lineaavl:int(100), Referencia: char(64), Fabricante:char(64), package: char(64)) Contiene item-Avl (Part Number, Part number, Lineaavl) Claves ajenas: - Part Number referencia a Itemmaster. Ubicaciones (Part_number:char(8), lineaubi: int(100), stock:int(1000), ubicacion:int(8)) Ofertas (Part number:char(8), lineaofertas: int(100), precio: int(1000), mdq: int(100), leadtime, usuario alta:char(64), fecha alta:date(), lineaavl: int(100)) Kitting (Part_number:char(8), lineaubi: int(100), cantidad: int(100), cantidadpendiente: int(100)) Compras (id_compra:int(10), proyecto:char(8), responsable:char(8), fecha entrega:date(), proveedor:int(5), obervaciones:char(8)) Familias (id_familia: int(10), descripción:char(8), id_grupo: int(100)) Claves ajenas: - id_grupo referencia a Grupo. Grupo (id_grupo: int(10), descripción:char(8)) Tipo (id_tipo: int(10), descripción:char(8)) Contiene tipo_Grupo (id_tipo, id_grupo) Claves ajenas: - Id_tipo referencia a Tipo. - id_grupo referencia a Grupo. Contiene familias-itemmaster (id_familia, Part Number) Claves ajenas: - id_familia referencia a Familias. - Part Number referencia a Itemmaster. Contiene avl-oferta (Part number, Lineaavl, Part number_Ofertas, lineaofertas, lineaavl) Claves ajenas:
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 65 de 97 - Part number referencia a AVL. - Lineaavl referencia a AVL. - Part number_Ofertas referencia a Ofertas. - lineaofertas referencia a Ofertas. - lineaavl referencia a Ofertas. Solicitud compra (id_compra:int(8), Part number:char(8), lineaofertas:int(100), lineaavl:int(100), id_proveedor:int(5), id_compra_Lineas pedido:int(100)) Claves ajenas: - id_compra referencia a Compras. - Part number referencia a Ofertas. - lineaofertas referencia a Ofertas. - lineaavl referencia a Ofertas. - id_proveedor referencia a Proveedores. - id_compra_Lineas pedido referencia a Lineas pedido. - Part-number referencia a Lineas pedido. Proveedores (id_proveedor:int(5), dni:int(8), nombre:var(64), alias:var(64), dirección:var(64), email:var(64), forma de pago:var(64)) Lineas pedido (id_compra:int(5), Part-number:var(8), cantidad:int(100), precio:int(100)) Contienen item-ubi (Part Number, part_number, lineaubi) Claves ajenas: - #Part Number referencia a Itemmaster. - #part_number referencia a Ubicaciones. - #lineaubi referencia a Ubicaciones. kitting (part_number, lineaubi, Part_number, lineaubi_Kitting) Claves ajenas: - part_number referencia a Ubicaciones. - lineaubi referencia a Ubicaciones. - Part_number referencia a Kitting. - lineaubi_Kitting referencia a Kitting.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 66 de 97 5 IMPLEMENTACIÓN E INTEGRACIÓN En este apartado se tratarán temas como las tecnologías que se han decidido utilizar para la implementación de la aplicación así como de cuáles son los aspectos más importantes en la evolución de la misma dentro de su integración. Es un punto importante dentro de toda la documentación para validar y aceptar el software, obtener información de la integración de cada una de las partes aquí mencionadas dentro del software y posteriormente cumplir con las fases de testeo en el punto 6. 5.1 TECNOLOGÍAS La aplicación se ha desarrollado como una solución LAMP, creando una aplicación Web mediante esta combinación de tecnologías: . Linux, sistema operativo . Apache, servidor Web . MySQL, servidor de base de datos . PHP, lenguaje de programación He optado por estas tecnologías ya que reúnen unas características básicas: - La gran cantidad y calidad de documentación existente que permite un aprendizaje rápido y profundo de la materia. - Buena interacción de estas tecnologías entre sí. - Son tecnologías libres y gratuitas mantenidas por la comunidad de software libre. - Se utilizan a nivel profesional y demuestran alta calidad y productividad. Las tecnologías Linux, Apache y MySQL son componentes externos a la aplicación, explicado al detalle en el punto de integración. PHP Es un lenguaje para programar scripts del lado del servidor incluido dentro del código HTML, siendo gratuito y multiplataforma. El uso de PHP es fundamental en la aplicación. Las páginas se generan de forma dinámica en el servidor mediante los scripts en PHP procesados. He desarrollado un conjunto de librerías en PHP situados en el nivel de acceso a datos y que permiten independencia de la aplicación. Las páginas dinámicas permiten: - Listados de todo el inventariado y sus búsquedas. Estas páginas cambian cuando se va actualizando el inventariado y las búsquedas permiten realizar listados personalizados.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 67 de 97 - Modificaciones sobre todo el inventariado (fabricantes, proveedores, ofertas, ubicaciones, etc.) reflejados de inmediato en los listados y búsquedas mencionadas. - Control de acceso a las diferentes secciones de la aplicación - Validación de entrada de datos por los usuarios en formularios - Verificar las diversas restricciones que se pueden realizar en cuanto a las operaciones. - Redirecciones de forma dinámica a páginas distintas según condiciones del usuario. - Envío, según la identificación del navegador cliente, de distintos elementos - Acceso a la base de datos donde están los datos de la aplicación y sus modificaciones - Realización de tareas automatizadas. - Realización de estadísticas en base a las ofertas realizadas. En la ejecución del proyecto he usado la versión PHP 4.3. de forma limitada, que ofrece una programación orientada a objetos, implementando parte de las librerías con relación de herencia entre ellas. CSS Las hojas de estilo son un lenguaje formal que se utiliza para definir la presentación de un documento estructurado escrito en HTML, XML o XHTML. Éstas pueden insertarse directas en el código HTML en un archivo separado de hoja de estilos enlazando al documento principal. Este método, en el cual los cambios se limitan a un único archivo y además el tamaño de los documentos XHTML se reduce al no contener ya información referente al estilo, va ganando en eficiencia. Otra ventaja radica en que un cambio en la hoja de estilos derive en un cambio de estilo general para la aplicación, de otra manera habría que revisar uno a uno todos los documentos aplicándoles los estilos correspondientes Las hojas de estilo en la aplicación se han utilizado para presentar las páginas web generadas por el servidor de manera estructurada, aplicando diseño a la aplicación para que los navegadores muestren al usuario de forma más agradable. 5.2 HERRAMIENTAS Anteriormente hemos visto la aplicación como una presentación Web formada por una base de datos relacional en MySQL y por un portal Web en PHP, conectadas entre sí y ubicadas en una misma máquina con sistema operativo Linux y un servidor Web( Apache). Los documentos HTML y scripts en PHP se han realizado usando DreamWeaver, especializado en los lenguajes HTML, XHTML y CSS. También permite trabajar con PHP. Cabe destacar que DreamWeaver permite utilizar dentro de la propia interfaz, completos manuales de referencia de HTML y CSS, y el administrador de archivos incorporado deja trabajar con varios documentos a la vez. Para facilitar el trabajo con la base de datos he utilizado phpMyAdmin que es un administrador Web de bases de datos MySQL y permite realizar las tareas de administración necesarias (gestionar tablas, eliminar campos,…)
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 68 de 97 Otra herramienta es la aplicación de retoque fotográfico The Gimp para la creación o modificación del logotipo, los iconos, toda la aplicación de ubicaciones y demás gráficos utilizados en la aplicación, siguiendo un criterio general que clarifica, simplifica el uso de la aplicación. Además de HTML y PHP, en algún caso he utilizado el lenguaje de scripting JavaScript. 5.3 DETALLES DE LA IMPLEMENTACIÓN 5.3.1 PERFILES DE USUARIO Existen diversos tipos de usuario según los permisos que obtengan o se le atribuyan en cada momento. La aplicación dependiendo del tipo de usuario que la esté utilizando, adapta automáticamente la interfaz con la funcionalidad adecuada al nivel de permisos de dicho usuario. Por lo tanto a cualquier usuario no identificado que acceda a la aplicación se le redirigirá a la página principal . A continuación se relatarán diversos tipos de usuarios: Uno de ellos será el usuario básico el cual podrá consultar cualquier información sobre cualquier componente de la base de datos. Obtendrá información sobre fabricantes, proveedores, ofertas, ubicaciones, estructuras donde se está utilizando, stock. Otra funcionalidad será el solicitar dar de alta un componente nuevo y mirar en qué estado se encuentra su petición de alta. También podrá modificar datos personales y hacer cualquier tipo de consulta sobre cualquier orden de trabajo dada de alta (responsable, componentes, pedidos, fechas de orden, proyecto, horas dedicadas y dinero dedicado). Otro usuario sería el que obtiene permisos de almacén que teniendo todas las acciones del usuario básico además tiene funcionalidades como la adición y extracción de stock de cualquier componente, la creación de nuevas ubicaciones para componentes ayudado de una aplicación de codificación de ubicaciones sobre un mapa de la empresa, modificación y eliminación de ubicaciones y la posibilidad de hacer kitting completos o parciales (parecido a un carrito de la compra). Otro tipo de usuario es el que obtiene los permisos de compras con los que podrá hacer solicitudes de compra y verificar el estado en el que se encuentran y donde cabe destacar otro usuario del tipo administrador que se encargará de firmar esas solicitudes para que posteriormente se conviertan en pedidos. Este último usuario aparte de tener las funcionalidades del usuario de compras básico también se encarga de la actualización del valor de las divisas. Otro tipo de usuario es el encargado de la administración de las órdenes de fabricación las cuales podrá dar de alta en cualquier momento sin supervisores por el medio. Tendrá permisos de modificación de datos sensibles de la orden así como de la eliminación de la misma. Este tipo de usuario podrá obtener información de todos los pedidos que tenga una orden de fabricación a diferencia del usuario básico que solo podrá ver los pedidos hechos por él en cada una de ellas. Por último existe un usuario administrador del sistema que se encargará de todo lo anterior y aparte tendrá acceso a la parte de administración de permisos para cada uno de los usuarios así como el dar de alta a un usuario nuevo dentro del sistema. Este usuario también se responsabilizará de dar de alta una lista de componentes mediante altas masivas si el fichero que las contiene está correctamente creado bajo la estructura acordada.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 69 de 97 5.3.2 AUTENTIFICACIÓN DE USUARIOS La aplicación utiliza un mecanismo de autenticación basado en el seguimiento de sesiones que posee PHP y consultas a la base de datos almacenando los identificadores de usuario y su contraseña cifrada en md5. Al acceder el usuario a la página de identificación, introduce su identificador y contraseña. En un futuro el envío de esta información se producirá mediante el protocolo HTTP seguro o HTTPS, de esta forma ambos viajarán cifrados por la red. En este momento el sistema comprueba si los datos introducidos son válidos y si el usuario existe a través de la tabla accesos de la base de datos. Si todo es válido establecemos las variables de sesión indicando los permisos del usuario y se cargará la página de inicio personalizada para dicho usuario. La sesión permanecerá abierta hasta que el usuario finalice mediante la opción cerrar sesión o cerrando el navegador Web. Las páginas restringidas a usuarios identificados comprueban el tipo de usuario que es y si dicho usuario tiene permiso necesario para visualizar dicha página. Si no tiene acceso, se expulsará de la aplicación y se enviará a la página de autentificación y así controlaremos el acceso a la funcionalidad de la aplicación. 5.3.3 ASPECTOS GENERALES La información mostrada por la aplicación está formateada en HTML y generada mediante el código en PHP, el cual, dota de funcionalidad a la aplicación. Por ello, la aplicación es un conjunto de páginas HTML con scripts en PHP que ejecuta el servidor. Las diversas clases utilizadas en los scripts que componen la aplicación se clasifican en tres tipos: . Relacionadas con la interfaz de usuario, que muestran y obtienen información de los mismos . Realizan la lógica de la aplicación . Encargados del nivel de persistencia (recuperar y salvar información de base de datos) En base a esta estructuración por capas se consigue cierta independencia entre las diferentes partes de la aplicación; podemos refinar el funcionamiento de las funciones de acceso a datos o cambiar el SGBD utilizado sin preocuparnos en el nivel de presentación o la lógica del programa. He incluido una serie de librerías en PHP encargadas del nivel de persistencia o de acceso a los datos, de forma que el nivel lógico de la aplicación accede a éstas y no a la propia base de datos. La información introducida por los usuarios al sistema se recoge a través de formularios HTML. Los campos de los formularios se envían entre páginas mediante el método POST codificando los datos a enviar en HTML. Resaltaremos el empleo de campos ocultos en los formularios HTML, para que la aplicación traspase información propia de una página a otra.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 70 de 97 La funcionalidad de la aplicación se basa en consultas al sistema de gestión de bases de datos MySQL. Ésta interpreta los resultados obtenidos y actúa en consecuencia.. Referente al diseño, la aplicación Web se crea siguiendo las especificaciones de HTML y de estilos CSS, de forma que se visualice correctamente en cada navegador sin perder ninguna de sus funcionalidades. 5.4 INTEGRACIÓN Los componentes de origen externo utilizados en la aplicación son el servidor Web y el Gestor de Bases de Datos. El servidor Web que he elegido es Apache, instalado sobre el S.O. GNU/Linux. Se ha utilizado con sus correspondientes módulos de PHP, para que sea capaz de interpretar scripts en el lado del servidor. El módulo de PHP debe estar compilado con las siguientes directivas adicionales: • --enable-trans-sid, con el que las URIs relativas se modifican de forma que contienen el session id automáticamente (por ejemplo en los enlaces o formularios), con lo que se consigue mantener la sesión incluso sin el uso de cookies. El SGBD elegido ha sido MySQL con el que he implementado el nivel de consistencia de la aplicación, por las evidentes ventajas de almacenar la información utilizando una base de datos frente a ficheros. Cabe destacar que PHP se combina a la perfección con MySQL, por lo que incorporarlo en el sistema no ha sido una tarea costosa. Sin embargo, de cara a futuras funcionalidades autónomas (como puede ser pedidos automáticos, emails de pedidos, alarmas de stock por debajo de su nivel mínimo), he encontrado problemas de implementación. Debido a que MySQL es una base de datos sin integridad referencial y sin soporte para disparadores, su velocidad es mucho mayor frente a otras soluciones, mucho más completas como el PostgreSQL, MS SQL Server, Oracle, etc. Por ello se decidió debido a su mayor expansión en internet y principalmente por su rendimiento, pero pueden llegar a producir situaciones no deseadas. Debido a, la complejidad alta y al coste operacional, lo hacía inviable por las operaciones inútiles que se llevarían a cabo. Se decidió para este tipo de funcionalidades futuras delegar esta tarea en un programa externo: el programador estándar de tareas de UNIX: crontab, que se encargará diariamente de éstas acciones. Generalmente, crontab utiliza un “demonio”, crond, que se ejecuta continuamente en segundo plano y comprueba cada minuto si alguna de las tareas programadas necesita ser ejecutada. De ser así, las ejecuta. Evidentemente esta es una solución alternativa, quizá lo más correcto sería la utilización de un SGBD que contemplase los disparadores como puede ser PostgreSQL, que provee soporte para lenguajes SQL92/SQL99, transacciones, integridad referencial, procedimientos almacenados y extensibilidad de tipos, con lo que se evitaría el uso de una solución dependiente del S.O. como es el uso del programador de tareas.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 71 de 97 Dada la arquitectura que se ha desarrollado en la aplicación, el SGBD podría fácilmente ser intercambiado por otro. Los cambios a realizar entonces serían en la capa de aplicación, ya que se encuentra por encima del nivel de persistencia donde se encuentra el SGBD y es la que se comunica con éste. Estos cambios además se realizarían únicamente en las llamadas a funciones dependientes del SGBD utilizado, ya que el resto de funciones son generación de consultas en SQL u otras no relacionadas con el nivel de persistencia, sino con el de presentación.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 72 de 97 6 EVALUACIÓN Y PRUEBAS 6.1 EVALUACIÓN He realizado una serie de pruebas y análisis de la usabilidad. La usabilidad se centra en las necesidades del usuario: • Pensar en qué modo el usuario desearía encontrar la información. • Definir un árbol de navegación intuitivo como referencia de navegabilidad sin excesivos enlaces, y mostrándolos a medida que el usuario se interesa por ellos. • Definir un diseño visual que transmita justo lo que se quiere sin que éste produzca confusión. • Tener en cuenta las limitaciones de los recursos del usuario a nivel de ancho de banda, capacidad de procesamiento y resolución. En las fases de diseño e implementación, con el diseño de la interfaz, el análisis etc. se ha tenido en cuenta este aspecto importante. Por lo tanto la usabilidad se ha ido incorporando de un modo interactivo a la vez que se diseñaba e implementaba la aplicación, intentando en todo momento que esta fuese lo más fácil, cómoda e intuitiva posible para el usuario final. 6.2 PRUEBAS En este apartado se ha forzado la aplicación a situaciones extremas en diversas funcionalidades y en el caso de que no cumpliesen con los requisitos establecidos se ha tenido que tomar decisiones importantes como rediseño, reprogramación y reimplementación. También se ha sometido a pruebas del tipo formatos, resoluciones y tiempo de cómputo a la hora de hacer búsquedas dentro del sistema. Se ha finalizado con una aplicación estable y compacta con el éxito de todos los objetivos planteados y preparada para futuras mejoras o ampliación de funcionalidades. Seguidamente se mostrarán diversos casos de uso que se han ido mencionando durante el documento. 6.2.1 PRUEBA SOLICITUD DE ALTA DE UN NUEVO COMPONENTE 1. Se rellena el formulario.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 73 de 97 Figura 6.2.1.1 – Formulario 2. Se agrega si se quisiese un archivo en formato pdf que irá adjunto al componente con la codificación interna que se le asignó al componente. Figura 6.2.1.2 –Adjuntar archivo
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 80 de 97 Figura 6.2.4.3 –Ubicación 3. Se podrá extraer o quitar stock pinchando en el elegido. Figura 6.2.4.4 – Componentes de dicha ubicación 4. Se tendrá que introducir la cantidad deseada a extraer o quitar.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 81 de 97 Figura 6.2.4.5 –Extraer o agregar stock 6.2.5 PRUEBA HACER UN KITTING 1. En el formulario se introducirá la lista de componentes que se desea extraer con sus respectivas cantidades. Figura 6.2.5.1 – Nuevo kitting 2. Se mostrará una tabla con todas las ubicaciones posibles de todos los componentes introducidos en la lista para seleccionar entre ellas de cual se quiere extraer. Existirán componentes inicialmente que no se podrán extraer y otros que a elección del usuario puede dejarlos en pendiente por cualquier motivo.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 82 de 97 Figura 6.2.5.2 – Selección de ubicaciones 3. Se podrán hacer kittings parciales y volver a retomarlos en la siguiente pantalla. Figura 6.2.5.3 –Kittings pendientes 4. Seleccionamos el kitting correspondiente y actuamos de la misma forma que en el punto 2. Figura 6.2.5.4 –Kitting por finalizar
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 83 de 97 6.2.6 PRUEBA SOLICITUD DE COMPRA 1. Rellenamos la cabecera de nuestra solicitud. Pudiendo agregar cargos adicionales a la misma que consisten en componentes o cualquier cargo no contemplado ni codificado en la base de datos del sistema. Figura 6.2.6.1 – Cabecera de la solicitud 2. Posteriormente se introduce la codificación del componente y se selecciona que oferta se desea.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 84 de 97 Figura 6.2.6.2 – Introducción del componente 3. Se pincha la oferta deseada y el sistema cargará los datos en la solicitud de compra. Si en algún caso los datos de la oferta no son los deseados se le avisará al usuario en el campo observaciones y éste podrá tomar la decisión de continuar o de modificar esos datos. Figura 6.2.6.3 – Oferta seleccionada Figura 6.2.6.4 –Fin de solicitud de compra
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 85 de 97 4. Al finalizar el sistema hará un pdf con todos los datos introducidos y el usuario seleccionará en hacer la solcitud definitiva o parcial. Si es parcial podrá modificarla o reenviarla de nuevo para que sea definitiva y así poder firmarla o si es definitiva sólo faltarás las consiguientes firmas para poder ser un pedido estable y, en ese momento, por parte del sistema crear el pedido. Figura 6.2.6.5 –Archivo pdf
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 86 de 97 7 CONCLUSIONES Para concluir puedo decir que dicho proyecto me ha ayudado mucho para tener más experiencia en aspectos importantes a la hora de afrontar un trabajo de este nivel de desarrollo. Tareas como la planificación, diseño, codificación, integración, pruebas y aspectos intuitivos y llamativos para garantizar el éxito de la aplicación. Ha sido un avance sobre la vida laboral después de la culminación de una carrera por la universidad con el colofón de este proyecto. Otros aspectos más informáticos que he aprendido han sido a la organización de código y a una programación limpia para una mejor administración del código. Esto provocó una mejor y fácil resolución de problemas en la aplicación o adaptar de forma más rápida alguna mejora. Dicha aplicación tiene un gran futuro a nivel empresarial puesto que durante todo el tiempo que ha transcurrido se ha ido haciendo cada vez más potente. Por ello como ya he indicado existen diversos puntos futuros que pueden hacer la aplicación aún si cabe más exitosa. Pienso también que la elección del diseño y las herramientas utilizadas han sido las correctas y las más concretas dentro del marco en el que se quería hacer este tipo de trabajo. El resultado final como se puede apreciar me ha producido una satisfacción plena debido a que tiene un gran futuro de desarrollo y porque viendo la evolución de la aplicación en el tiempo se ha ido alejando un poco de los primeros conceptos establecidos para convertirse en una proyecto de mayor impacto dentro de la empresa donde he podido hacer el proyecto. He aprendido a desenvolverme en un ámbito laboral, a tomar decisiones importantes con las personas responsables sobre mi trabajo y a tomar iniciativas propias con ideas nuevas. Agradezco a la empresa DAS PHOTONICS S.L por la oportunidad que me ha brindado y al grupo humano que trabaja en ella. Espero que se siga trabajando sobre un proyecto que se apostó fuerte y que no sea esto un punto final sino un punto y seguido.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 87 de 97 BIBLIOGRAFÍA • ERS: [1] Wikipedia en español: http://es.wikipedia.org [2] Manual de PHP: http://www.php.net [3] Especificaciones de HTML 1.0: http://www.w3schools.com/html/default.asp [4] Documentación de Apache: http://httpd.apache.org • HTML: [1] Tutorial W3 Schools: www.w3schools.com/html/ [2] Manual HTML: www.webestilo.com/html/ [3] Especificaciones de HTML 1.0: http://www.w3schools.com/html/default.asp • CSS: [1] Guía breve de CSS: www.w3c.es/divulgacion/guiasbreves/hojasestilo [2] Tutorial CSS: www.w3schools.com/css/ • PHP: [1] Manual de PHP: http://www.php.net/ [2] PHP a fondo: http://www.desarrolloweb.com/php/ • MySQL: [1] Documentación oficial de MySQL: www.mysql.com [2] Manual de MySQL: www.webestilo.com/mysql/ • Apache: [1] Documentación de Apache: http://httpd.apache.org.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 88 de 97 ANEXO A. DESCRIPCIÓN DE TECNOLOGÍAS A.1. HTTP Es el protocolo usado en cada transacción de la World Wide Web. HTTP fue desarrollado por el World Wide Web Consortium y la Internet Engineering Task Force, colaboración que culminó en 1999 con la publicación de una serie de RFC, el más importante de ellos es el RFC 2616 que especifica la versión 1.1. HTTP define la sintaxis y la semántica que utilizan los elementos de software de la arquitectura web (clientes, servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un servidor. Al cliente que efectúa la petición (un navegador web o un spider) se lo conoce como "user agent" (agente del usuario). A la información transmitida se la llama recurso y se la identifica mediante un localizador uniforme de recursos(URL). Los recursos pueden ser archivos, el resultado de la ejecución de un programa, una consulta a una base de datos, la traducción automática de un documento, etc. HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se usan las cookies, que es información que un servidor puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web instituir la noción de "sesión", y también permite rastrear usuarios ya que las cookies pueden guardarse en el cliente por tiempo indeterminado. Una transacción HTTP está formada por un encabezado seguido, opcionalmente, por una línea en blanco y algún dato. El encabezado especificará cosas como la acción requerida del servidor, o el tipo de dato retornado, o el código de estado. El uso de campos de encabezados enviados en las transacciones HTTP le da gran flexibilidad al protocolo. Estos campos permiten que se envíe información descriptiva en la transacción, permitiendo así la autenticación, cifrado e identificación de usuario. Un encabezado es un bloque de datos que precede a la información propiamente dicha, por lo que muchas veces se hace referencia a él como metadato —porque tiene datos sobre los datos—. Si se reciben líneas de encabezado del cliente, el servidor las coloca en las variables de ambiente de CGI con el prefijo HTTP_ seguido del nombre del encabezado. Cualquier carácter guión ( - ) del nombre del encabezado se convierte a caracteres "_". El servidor puede excluir cualquier encabezado que ya esté procesado, como Authorization, Contenttype y Content-length. El servidor puede elegir excluir alguno o todos los encabezados si incluirlos exceden algún límite del ambiente de sistema. Ejemplos de esto son las variables HTP_ACPT y HTP_R_AEN. HT_AEP'. Los tipos MIME que el cliente aceptará, dado los encabezados HTTP. Otros protocolos quizás necesiten obtener esta información de otro lugar. Los elementos de esta lista deben estar separados por una coma, como lo dice la especificación HTTP: tipo, tipo. HTT_USR_AET. El navegador que utiliza el cliente para realizar la petición. El formato general para esta variable es: software/versión biblioteca/versión.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 89 de 97 HTTP ha pasado por múltiples versiones del protocolo, muchas de las cuales son compatibles con las anteriores. El RFC 2145 describe el uso de los números de versión de HTTP. El cliente le dice al servidor al principio de la petición la versión que usa, y el servidor usa la misma o una anterior en su respuesta. HTTP/0.9 Obsoleta. Soporta sólo un comando, GET, y además no especifica el número de versión HTTP. No soporta cabeceras. Como esta versión no soporta POST, el cliente no puede enviarle mucha información al servidor. HTTP/1.0 (mayo de 1996) Esta es la primera revisión del protocolo que especifica su versión en las comunicaciones, y todavía se usa ampliamente, sobre todo en servidores proxy. HTTP/1.1 (junio de 1999) Versión actual; las conexiones persistentes están activadas por defecto y funcionan bien con los proxies. También permite al cliente enviar múltiples peticiones a la vez (pipelining) lo que hace posible eliminar el tiempo de Round-Trip delay por cada petición. HTTP/1.2 Los primeros borradores de 1995 del documento PEP — an Extension Mechanism for HTTP (el cuál propone el Protocolo de Extensión de Protocolo, abreviado PEP) los hizo el World Wide Web Consortium y se envió al Internet Engineering Task Force. El PEP inicialmente estaba destinado a convertirse en un rango distintivo de HTTP/1.2. En borradores posteriores, sin embargo, se eliminó la referencia a HTTP/1.2. El RFC 2774 (experimental), HTTP Extension Framework, incluye en gran medida a PEP. A.2. PHP PHP es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Es usado principalmente para la interpretación del lado 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+. 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. Puede ser desplegado en la mayoría de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra instalado en más de 20 millones de sitios web y en un millón de servidores, el número de sitios en PHP ha compartido algo de su preponderante sitio con otros nuevos lenguajes no tan poderosos desde agosto de 2005. Es también el módulo Apache más popular, el cliente hace una petición al servidor para que le envíe una página web, el servidor ejecuta el intérprete de PHP. Éste procesa el script solicitado que generará el contenido de manera dinámica (por ejemplo obteniendo información de una base de datos). El resultado es enviado por el intérprete al servidor, quien a su vez se lo envía al cliente. Mediante extensiones es también posible la generación de archivos PDF, Flash, así como imágenes en diferentes formatos.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 96 de 97 era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor "parcheado"). El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation. Apache presenta entre otras características altamente configurables, bases de datos de autenticación y negociado de contenido, pero fue criticado por la falta de una interfaz gráfica que ayude en su configuración. Apache tiene amplia aceptación en la red: desde 1996, Apache, es el servidor HTTP más usado. Alcanzó su máxima cuota de mercado en 2005 siendo el servidor empleado en el 70% de los sitios web en el mundo, sin embargo ha sufrido un descenso en su cuota de mercado en los últimos años. (Estadísticas históricas y de uso diario proporcionadas por Netcraft 3 ). La mayoría de las vulnerabilidades de la seguridad descubiertas y resueltas tan sólo pueden ser aprovechadas por usuarios locales y no remotamente. Sin embargo, algunas se pueden accionar remotamente en ciertas situaciones, o explotar por los usuarios locales malévolos en las disposiciones de recibimiento compartidas que utilizan PHP como módulo de Apache. Ventajas • Modular • Código abierto • Multi-plataforma • Extensible • Popular (fácil conseguir ayuda/soporte) Uso Apache es usado principalmente para enviar páginas web estáticas y dinámicas en la World Wide Web. Muchas aplicaciones web están diseñadas asumiendo como ambiente de implantación a Apache, o que utilizarán características propias de este servidor web. Apache es el componente de servidor web en la popular plataforma de aplicaciones LAMP, junto a MySQL y los lenguajes de programación PHP/Perl/Python (y ahora también Ruby). Este servidor web es redistribuido como parte de varios paquetes propietarios de software, incluyendo la base de datos Oracle y el IBM WebSphere application server. Mac OS X integra apache como parte de su propio servidor web y como soporte de su servidor de aplicaciones WebObjects. Es soportado de alguna manera por Borland en las herramientas de desarrollo Kylix y Delphi. Apache es incluido con Novell NetWare 6.5, donde es el servidor web por defecto, y en muchas distribuciones Linux.
Memoria del Proyecto Final de Carrera Diseño y desarrollo de base de datos en MySQL y aplicación Web en PHP con servidor central APACHE Página 97 de 97 Apache es usado para muchas otras tareas donde el contenido necesita ser puesto a disposición en una forma segura y confiable. Un ejemplo es al momento de compartir archivos desde una computadora personal hacia Internet. Los programadores de aplicaciones web a veces utilizan una versión local de Apache con el fin de previsualizar y probar código mientras éste es desarrollado. Microsoft Internet Information Services (IIS) es el principal competidor de Apache, así como Sun Java System Web Server de Sun Microsystems y un anfitrión de otras aplicaciones como Zeus Web Server. Algunos de los más grandes sitios web del mundo están ejecutándose sobre Apache. La capa frontal (front end) del motor de búsqueda. A.7. MYSQL MySQL es un sistema de gestión de bases de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones. MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C. Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y los derechos de autor del código están en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios Aplicaciones MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en plataformas (Linux/WindowsApache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento de errores como Bugzilla. Su popularidad como aplicación web está muy ligada a PHP, que a menudo aparece en combinación con MySQL. MySQL es una base de datos muy rápida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar MySQL, es importante adelantar monitoreos sobre el desempeño para detectar y corregir errores tanto de SQL como de programación.