Full text
PROYECTO FIN DE GRADO Escuela de Ingeniería Informática Universidad de Las Palmas de Gran Canaria JUNIO 2014 E-NATURAL: DESARROLLO DE UNA APLICACIÓN ORIENTADA A LA GESTIÓN Y ADMINISTRACIÓN DE LOS SERVICIOS DE EMPRESAS RELACIONADAS CON ACTIVIDADES EN LA NATURALEZA PARTE I Autor: Yeray Pérez Valiente Tutor1: Agustín Sánchez Medina Tutor2: Mónica Pellejero Silva Titulación: Grado en Ingeniería en Informática
Proyecto fin de grado de la Escuela de Ingenería Informática de la Universidad de Las Palmas de Gran Canaria presentado por el alumno: Yeray Pérez Valiente Titulo del proyecto: E-Natural: Desarrollo de una aplicación orientada a la gestión y administración de los servicios de empresas relacionadas con actividades en la naturaleza. Parte I Tutor1: Agustín Sanchez Medina Tutor2: Mónica Pellejero Silva
DEDICATORIA A mis padres y a mi novia
2-i Índice general 1 Introducción .......................................................................................................................... 5 2 Estado actual y Objetivos ...................................................................................................... 6 2.1 Estado actual del Arte ................................................................................................... 7 3 Competencias ...................................................................................................................... 11 4 Aportaciones Socio-Económicas ......................................................................................... 23 5 Planificación del trabajo ...................................................................................................... 24 5.1 Metodología de desarrollo .......................................................................................... 24 5.2 Planificación y temporización ..................................................................................... 26 6 Desarrollo del trabajo.......................................................................................................... 28 6.1 Requisitos del sistema ................................................................................................. 28 6.1.1 Modelo del dominio ............................................................................................ 28 6.1.2 Diagramas modelo de dominio ........................................................................... 28 6.1.3 Diagramas entidad relación ................................................................................ 30 6.1.4 Modelo relacional ............................................................................................... 34 6.2 Especificación de requisitos de usuario. ..................................................................... 37 6.2.1 Descripción. ......................................................................................................... 37 6.2.2 Actores ................................................................................................................ 38 6.2.3 Listados de actores y sus roles ............................................................................ 39 6.2.4 Modelo de casos de uso ...................................................................................... 42 6.2.5 Lista de Casos de Uso .......................................................................................... 47 6.2.6 Prototipo de interfaz de usuario ......................................................................... 48 6.3 Diseño arquitectónico ................................................................................................. 52 6.3.1 Características de esta arquitectura ................................................................... 52 6.3.2 Arquitectura de la aplicación .............................................................................. 54 6.3.3 Detalles de la implementación. ........................................................................... 57 6.3.4 Diagrama de Despliegue...................................................................................... 59 6.3.5 Diagramas de clases ............................................................................................ 61 6.3.6 Diagramas de secuencia ...................................................................................... 86 7 Conclusiones........................................................................................................................ 91 7.1 Uso del Framework Codeigniter .................................................................................. 91 7.2 Uso de Librería Grocery CRUD .................................................................................... 91 7.3 Uso de componentes, tecnologías y estrategias. ........................................................ 91 7.4 Resultado final del proyecto ....................................................................................... 92
2-ii 8 Trabajo Futuro: .................................................................................................................... 92 9 Anexos ................................................................................................................................. 94 9.1 Anexo I: Recursos utilizados ........................................................................................ 94 9.1.1 Recursos software ............................................................................................... 94 9.1.2 Recursos hardware ............................................................................................ 101 9.2 Anexo II: Especificación de casos de uso ................................................................... 102 9.3 Anexo III: Implementación ........................................................................................ 133 9.3.1 TinyMce ............................................................................................................. 133 9.3.2 Codeigniter: ....................................................................................................... 134 9.3.3 Paypal ................................................................................................................ 177 9.3.4 Grocery Crud ..................................................................................................... 190 9.3.5 Image Crud ........................................................................................................ 204 9.3.6 Image Moo ........................................................................................................ 206 9.3.7 JRating ............................................................................................................... 210 9.4 Anexo IV: Manual de usuario .................................................................................... 223 9.5 Anexo V: Índice de Imágenes .................................................................................... 263 9.6 Anexo VI: Indice de figuras completo ....................................................................... 266 9.7 Anexo VII: Indice de tablas completo ........................................................................ 268 10 Bibliografía .................................................................................................................... 269
2-iii
10 Yumping: Jumping es una empresa que ofrece productos de ocio y deportes de aventura. Mediante un buscador de actividades y una localización se pueden encontrar los diferentes servicios ofrecidos. También tiene la posibilidad de realizar reservas y hacer comentarios (Véase Imagen 5). Imagen 5: Página web Yumping Daventuras: Es un buscador de empresas de deportes de aventura y deportes extremos. Ofrecen turismo de aventura, campamentos y casas rurales. Solo realiza búsquedas y enlaza con las páginas webs de las empresas (Véase Imagen 6). Imagen 6: Página web DAventuras
11 Enatural en cambio, además de los servicios anteriormente mencionados, proporciona un servicio de gestión de información completo para la creación, mantenimiento y hosting de sitios web para las empresas alojadas. 3 Competencias En este apartado se mostrarán las distintas competencias que se pretenden cubrir con el presente proyecto: CII01 Capacidad para diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación vigente. Esta competencia queda cubierta con los capítulos Estado actual y objetivo del Trabajo de Fin de Grado y Requisitos Hardware y Software. En ellos se especifican, por un lado, los motivos de diseño, desarrollo, etc. explicando exhaustivamente las fases de definición de requisitos, análisis y diseño de los casos de uso necesarios para satisfacer las necesidades de la aplicación Web, y por otro lado se justifica la utilización del hardware más adecuado para la implementación de la misma, teniendo en cuenta parámetros de fiabilidad, calidad y seguridad. En resumen, con esta elección de hardware y software, la implementación de este trabajo de fin de grado da como resultado una aplicación robusta y conforme a los principios éticos y a la legislación vigente. CII02 Capacidad para planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha y su mejora continua y valorando su impacto económico y social. De todos los elementos de un sistema de gestión de proyectos, la planificación es posiblemente la más importante, puesto que una mala o inexistente planificación conducirá a una mala realización en el proyecto, lo cual repercutirá enormemente tanto en la calidad como en el plazo de terminación del proyecto, ocasionando grandes perjuicios. Esta es la razón por la que esta competencia queda cubierta, puesto que la buena planificación de este trabajo de fin de grado ha dado lugar al propósito fundamental del mismo, que no es más que la finalización en los plazos establecidos así como conseguir de manera adecuada los objetivos propuestos inicialmente. Si además tenemos en cuenta el capítulo Aportaciones, podernos apreciar el impacto del proyecto en el ámbito de aplicación en que nació. Hay que tener en cuenta que los objetivos que siempre se buscan al desarrollar una aplicación no deben limitarse a resolver el problema sino que hay que intentar elegir la solución más apropiada y conforme a la infraestructura con la que cuenta el cliente. CII04
12 Capacidad para elaborar el pliego de condiciones técnicas de una instalación informática que cumpla los estándares y normativas vigentes. Pliego de especificaciones técnicas que han de regir en la contratación de una plataforma compuesta por todo el desarrollo de la plataforma web y todo lo relacionado con su implementación. Objeto del contrato y condiciones El contrato tiene como objeto, la implementación de la plataforma web dinámica VideoEduca para uso de la ULPGC. Ámbito geográfico El ámbito geográfico en que se prestará el servicio será mundial. Ya cualquier visitante externo puede acceder a la plataforma, pero sólo los alumnos matriculados en la Ulpgc podrán disfrutar de la totalidad de sus servicios. Requisitos de fiabilidad El desarrollo de la aplicación debe acometerse de tal forma que su resultado garantice: Alta fiabilidad Comportamiento estable Plazo de ejecución El contratista se compromete a elaborar el software de conformidad con lo establecido en este documento y con la oferta que hubiese presentado, así como a entregarlo al contratante. Dicha entrega deberá hacerse en el plazo máximo de 6 meses, a contar desde la fecha de la firma del contrato. El software se considerará debidamente entregado cuando se haya recibido la plataforma y a su vez esté disponible para su inmediato funcionamiento y se haya facilitado el manual de usuario y la documentación técnica correspondiente. Documentación Las empresas licitadoras deberán poner claramente de manifiesto las posibles actualizaciones de la aplicación. Transferencia Tecnológica Durante la ejecución de los trabajos objeto del contrato, el adjudicatario se compromete a facilitar en todo momento a las personas designadas por la Universidad de las Palmas de Gran Canaria a tales efectos la información que ésta solicite para disponer de un pleno conocimiento de las circunstancias en que se desarrollan los trabajos, así como de los eventuales problemas que pueden plantearse y de las tecnologías, métodos y herramientas utilizados para resolverlos. Propiedad del resultado de los trabajos
13 Todos los documentos y resultados de los trabajos realizados serán propiedad de la Universidad de las Palmas de Gran Canaria que podrá ejercer el derecho de explotación en su centro de trabajo. La empresa adjudicataria podrá hacer uso de los mismos, ya sea como referencia o base para trabajos futuros, siempre que cuente con la autorización expresa del contratante. Entrega de la solución Todo el proceso de suministro de software, documentación, manuales de instalación y configuración, manual de administración y de usuario, desarrollo de pruebas, plan de marcha atrás, se hará conforme al Proceso de Gestión de la Entrega definido por la Dirección de la Universidad de las Palmas de Gran Canaria. Entorno Pre-explotación De ser necesarias tareas correctivas una vez implementada la solución objeto de este contrato, con el fin de facilitar los trabajos, y realización de pruebas sin afectar al sistema en producción, será preciso que cualquier actividad a realizar sobre la plataforma se realice previamente en el entorno de pre-explotación similar al de producción. Será preciso verificar y testear el correcto funcionamiento en este entorno, como paso previo al despliegue en producción. CII18 Conocimiento de la normativa y la regulación de la informática en los ámbitos nacional, europeo e internacional. Un análisis de las legislaciones que se han promulgado en diversos países arroja que las normas jurídicas que se han puesto en vigor están dirigidas a proteger la utilización abusiva de la información reunida y procesada mediante el uso de computadoras, e incluso en algunas de ellas se ha previsto formar órganos especializados que protejan los derechos de los ciudadanos amenazados por los ordenadores. Desde hace aproximadamente diez años la mayoría de los países europeos han hecho todo lo posible para incluir dentro de la ley, la conducta punible penalmente, como el acceso ilegal a sistemas de cómputo o el mantenimiento ilegal de tales accesos, la difusión de virus o la interceptación de mensajes informáticos. En la mayoría de las naciones occidentales existen normas similares a los países europeos. Todos estos enfoques están inspirados por la misma de preocupación de contar con comunicaciones electrónicas, transacciones e intercambios tan confiables y seguros como sea posible. Dar un concepto sobre delitos informáticos no una labor fácil y esto en razón de que su misma denominación alude a una situación muy especial, ya que para hablar de “delitos” en el sentido de acciones tipificadas o contempladas en textos jurídico penales, se requiere que la expresión “delitos informáticos” este consignada en los códigos penales, lo cual en nuestro
14 país, al igual que en muchos otros, no ha sido objeto de tipificación aún; sin embargo, muchos especialistas en derecho informático emplean esta alusión a los efectos de una mejor conceptualización. Normativa y regulación de la informática en el ámbito internacional. En el contexto internacional, son pocos los países que cuentan con una legislación apropiada. Entre ellos, destacan, Estados Unidos, Alemania, Austria, Gran Bretaña, Holanda, Francia, España, Argentina y Chile. Por esta razón a continuación se mencionan algunos aspectos relacionados con la ley en los diferentes países, así como con los delitos informáticos que persigue. Alemania Este país sancionó en 1986 la Ley contra la Criminalidad Económica, que contempla los siguientes delitos: Espionaje de datos. Estafa informática. Alteración de datos. Sabotaje informático. Austria La Ley de reforma del Código Penal, sancionada el 22 de Diciembre de 1987, sanciona a aquellos que con dolo causen un perjuicio patrimonial a un tercero influyendo en el resultado de una elaboración de datos automática a través de la confección del programa, por la introducción, cancelación o alteración de datos o por actuar sobre el curso del procesamiento de datos. Además contempla sanciones para quienes comenten este hecho utilizando su profesión de especialistas en sistemas. Estados Unidos Este país adoptó en 1994 el Acta Federal de Abuso Computacional que modificó al Acta de Fraude y Abuso Computacional de 1986 con la finalidad de eliminar los argumentos hipertécnicos acerca de qué es y que no es un virus, un gusano, un caballo de Troya y en que difieren de los virus, la nueva acta proscribe la transmisión de un programa, información, códigos o comandos que causan daños a la computadora, a los sistemas informáticos, a las redes, información, datos o programas. La nueva ley es un adelanto porque está directamente en contra de los actos de transmisión de virus. Asimismo, en materia de estafas electrónicas, defraudaciones y otros actos dolorosos relacionados con los dispositivos de acceso a sistemas informáticos, la legislación
15 estadounidense sanciona con pena de prisión y multa, a la persona que defraude a otro mediante la utilización de una computadora o red informática. En el mes de Julio del año 2000, el Senado y la Cámara de Representantes de este país, tras un año largo de deliberaciones, establece el Acta de Firmas Electrónicas en el Comercio Global y Nacional. La ley sobre la firma digital responde a la necesidad de dar validez a documentos informáticos, mensajes electrónicos y contratos establecidos mediante Internet, entre empresas (para el B2B) y entre empresas y consumidores (para el B2C). Chile Chile fue el primer país latinoamericano en sancionar una Ley contra delitos informáticos, la cual entró en vigencia el 7 de junio de 1993. Esta ley se refiere a los siguientes delitos: La destrucción o inutilización de los de los datos contenidos dentro de una computadora es castigada con penas de prisión. Asimismo, dentro de esas consideraciones se encuentran los virus. Conducta maliciosa tendiente a la destrucción o inutilización de un sistema de tratamiento de información o de sus partes componentes o que dicha conducta. Francia En enero de 1988, este país dictó la Ley relativa al fraude informático, en la que se consideran aspectos como: Intromisión fraudulenta que suprima o modifique datos. Conducta intencional en la violación de derechos a terceros que haya impedido o alterado el funcionamiento de un sistema de procesamiento automatizado de datos. Conducta intencional en la violación de derechos a terceros, en forma directa o indirecta, en la introducción de datos en un sistema de procesamiento automatizado o la supresión o modificación de los datos que éste contiene, o sus modos de procesamiento o de transmisión. Supresión o modificación de datos contenidos en el sistema, o bien en la alteración del funcionamiento del sistema (sabotaje) impida, obstaculice o modifique su funcionamiento. Conducta maliciosa que altere, dañe o destruya los datos contenidos en un sistema de tratamiento de información. Gran Bretaña Debido a un caso de hacking en 1991, comenzó a regir en este país la ComputerMisuseAct (Ley de Abusos Informáticos). Mediante esta ley el intento, Exitoso o no, de alterar datos informáticos es penado con hasta cinco años de prisión o multas. Esta ley tiene un apartado que específica la modificación de datos sin autorización. Holanda
16 El 10 de Marzo de 1993 entró en vigencia la Ley de Delitos Informáticos, en la cual se penaliza los siguientes delitos: El hacking. El preacking (utilización de servicios de telecomunicaciones evitando el pago total o parcial de dicho servicio). La ingeniería social (arte de convencer a la gente de entregar información que en circunstancias normales no entregaría). La distribución de virus. Normativa y regulación de la informática en el ámbito europeo. Hasta ahora, el principal esfuerzo europeo por regular el tema de los delitos 21 de noviembre de 2001. Este documento fue firmado por los representantes de cada país miembro del Consejo de Europa, aunque su eficacia depende de su posterior refrendo por los órganos nacionales de cada país firmante. El “Convenio sobre la Ciberdelincuencia” permitió la definición de los delitos informáticos y algunos elementos relacionados con éstos, tales como “sistemas informáticos”, “datos informáticos”, o “proveedor de servicios”. Estos delitos informáticos fueron clasificados en cuatro grupos: 1. Delitos contra la confidencialidad, la integridad y la disponibilidad de los datos y sistemas informáticos. Acceso ilícito a sistemas informáticos. Interceptación ilícita de datos informáticos. Interferencia en el sistema mediante la introducción, transmisión, provocación de daños, borrado, alteración o supresión de éstos. Abuso de dispositivos que faciliten la comisión de delitos 2. Delitos informáticos. Falsificación informática que produzca la alteración, borrado o supresión de datos informático que ocasionen datos no auténticos. Fraudes informáticos. 3. Delitos relacionados con el contenido. Delitos relacionados con la pornografía infantil. 4. Delitos relacionados con infracciones de la propiedad intelectual y derechos afines.
17 Es conviene destacar que en el “Convenio sobre la Ciberdelincuencia” se encomienda a cada Parte que tome las medidas necesarias para tipificar como delito en su derecho interno cada uno de los apartados descritos en cada categoría. En la Disposición 14221 del BOE núm. 226 de 2010, encontramos el Instrumento de Ratificación del Convenio sobre la Ciberdelincuencia, hecho en Budapest el 23 de noviembre de 2001. Normativa y regulación de la informática en el ámbito nacional. Leyes y Decretos Ley. Ley Orgánica de Protección de datos de carácter personal: régimen sancionador aplicable (BOE no298 de 14/XII/99 que publicó la Ley Org. 15/1999 de 13 de Dic.) Objeto: Proteger y garantizar las libertades públicas y derechos fundamentales de las personas, especialmente su HONOR e INTIMIDAD personal y familiar. Aspectos de interés: Serán responsables: “Los responsables de los ficheros o de los tratamientos” y “los encargados de los tratamientos”. Ley 7/1998 de 13 de Abril que regula las condiciones generales de contratación. R.D. 1906/1999 de 17/XII que regula la contratación telefónica. R.D.Ley 14/1999 de 17/XII sobre Firma Electrónica (BOE No224 de 18/XII) Firma electrónica: Dispositivo electrónico que permite la identificación del signatario de las operaciones realizadas por Internet. Identifica: El firmante (autentificación) y Evita el retracto (no repudio). Código Penal Ley Orgánica 10/1995 de 23/XI Tipifica delitos y faltas por el uso de la informática, concretamente contra la Intimidad, Patrimonio, Socioeconómicos y Propiedad Intelectual. Título X: “Delitos contra la intimidad, derecho a la propia imagen y la inviolabilidad del Domicilio”. Apoderarse de papeles, e-mails, mensajes, otros... Cracks: delitos Obtener datos de terceros... Recomendaciones de la APD Información en la recogida de datos.
18 Cuando suministre datos personales a cualquier organización (proveedores de acceso, proveedores de contenido, vendedores a través de comercio electrónico, etc.) sea consciente de a quién se los facilita y con qué finalidad. Finalidad para la que se recogen los datos Desconfíe si los datos que le solicitan son excesivos para la finalidad con la que se recogen o innecesarios para el servicio que se le presta. Tenga en cuenta que cuando introduce su dirección de correo electrónico en un directorio, lista de distribución o grupo de noticias, dicha dirección puede ser recogida por terceros para ser utilizada con una finalidad diferente, como por ejemplo, remitirle publicidad no deseada. Cuando navegue por Internet, sea consciente de que los servidores Web que visita pueden registrar tanto las páginas a las que accede como la frecuencia y los temas o materias por las que busca, aunque no le informen de ello. Seguridad en el intercambio de datos Utilice, siempre que sea posible, las últimas versiones de los programas navegadores, ya que cada vez suelen incorporar mejores medidas de seguridad. Considere la posibilidad de activar en dichos programas las opciones que alerten sobre los intercambios de datos no deseados y no rellene aquellos datos que no desee hacer públicos (por ejemplo, dirección de correo electrónico, nombre, apellidos, etc.). No realice transacciones comerciales electrónicas a través de proveedores con sistemas inseguros o no fiables. Consulte el manual de su navegador para averiguar cómo informa de que se ha establecido una conexión con un servidor seguro. Recuerde que existen sistemas de dinero electrónico que preservan el anonimato de sus compras en Internet. Utilice los mecanismos de seguridad que tenga a su alcance para proteger sus datos de accesos no deseados. El medio más fiable para conseguirlo es el cifrado de los mismos. Salvo que se utilicen mecanismos de integridad, autenticación y certificación (firma digital, notarios electrónicos, etc.) no confíe ciegamente en que la persona u organización que le remite un mensaje es quien dice ser y en que el contenido del mismo no se ha modificado, aunque esto sea así en la inmensa mayoría de las ocasiones. Para terminar: Siempre que se le soliciten datos personales que no esté obligado legalmente a suministrar, sopese los beneficios que va a recibir de la organización que los recoge frente a los posibles riesgos de utilización irregular de los mismos. Ante cualquier duda sobre la legalidad de la utilización de sus datos de carácter personal, póngase en contacto con la Agencia de Protección de Datos.
19 La protección jurídica de programas de ordenador. Piratería informática El Real Decreto Legislativo 1/1996, por el que se aprueba el Texto Refundido sobre Propiedad Intelectual, la protección jurídica de los programas de ordenador, antes regulada por la Ley de Protección Jurídica de Programas de Ordenador y por la Ley de Propiedad Intelectual, crea un marco jurídico en contra de la piratería informática. El Texto Refundido desarrolla una serie de medidas para combatir la piratería informática, como la posibilidad de que los fabricantes de programas de ordenador soliciten a la justicia española la realización de un registro sorpresa en empresas en las que existan sospechas fundadas o evidencias de delito. España es uno de los países en los que se puede acudir a esta medida cautelar. De esta manera se erradica la posibilidad de que los presuntos infractores puedan destruir las pruebas existentes, lo cual, indudablemente ocurrirá si se les notifica por adelantado la realización de un registro. ¿En qué casos se infringe la Ley? Al copiar o distribuir un programa de ordenador o la documentación que le acompaña, incluidas aplicaciones, datos, códigos y manuales, sin permiso expreso o licencia del propietario de los derechos de explotación. Al utilizar un programa sin la correspondiente licencia o autorización del fabricante, con independencia de que se utilice en un solo ordenador o en varios de forma simultánea. Al utilizar programas de ordenador en un número de copias superior al autorizado por el fabricante en sus contratos o licencias de uso. En empresas y demás organizaciones, al fomentar, consciente o inconscientemente, permitir, obligar o presionar a los empleados a realizar o distribuir copias no autorizadas del programa. Al efectuar copias no autorizadas porque alguien lo requiere u obliga a ello. Al ceder o prestar el programa de forma que pueda ser copiado o al copiarlo mientras está en su posesión en calidad de cedido o prestado. Al crear, importar, poseer o negociar con artículos destinados a burlar o neutralizar cualquier medio técnico aplicado para proteger el programa de ordenador. Medidas Judiciales Si finalmente existe evidencia de delito, las medidas judiciales que pueden adoptarse son: Solicitar al Juez un registro sorpresa de las instalaciones del presunto infractor, tanto por la vía civil, como por la penal. Solicitar al Juez la adopción urgente de medidas cautelares de protección. Exigir indemnizaciones acordes con los daños materiales y morales causados.
26 5.2 Planificación y temporización A continuación mostramos las impresiones de la planificación y temporización del proyecto (Véase Tabla 1): A la fase de Análisis le dedicamos unas treinta horas de proyecto, debido a la facilidad para encontrar manuales y ejemplos de las tecnologías web. También los requisitos fueron fáciles de analizar ya que eran términos sencillos y manejables. Las estrategias y metodologías a seguir fueron bastante claras desde el principio y la experiencia previa en este tipo de proyectos, fue la clave determinante para avanzar deprisa en este apartado. En cuanto a la fase de Implementación, el diseño previo fue relativamente rápido utilizando herramientas “Mockup”, el diseño de la base de datos fue sencillo, el diseño de la plataforma “backend” fue relativamente sencillo pero el diseño del “Frontend” fue bastante más complicado y llevó mucho tiempo completar esta fase. A la fase final le dedicamos bastante menos tiempo, ya que, la fase de pruebas la íbamos realizando también durante la fase de implementación. FASE HORAS % 1. Análisis Estudio inicial de necesidades y requisitos 5 0,016666667 Estudio de la herramienta en la que se va a realizar el desarrollo 10 0,066666667 Anatomía y estructura de los servicios web. 5 Anatomía y estructura de la aplicación web. 3 0,02 Análisis y estrategia de contenidos 4 0,01 Documentación de la información generada en la fase de Análisis 3 0,033333333 TOTAL FASE DE ANÁLISIS 30 10% 2. Desarrollo del proyecto Diseño de aplicación y plataforma web 8 0,05 Análisis y programación (aplicación web y servicios Web) 70 0,233333333 Análisis y programación de base de datos 20 0,1 Finalización de fase diseño 135 0,083333333 Documentación de la información generada en la fase de Desarrollo 6 0,066666667
27 TOTAL FASE DE DESARROLLO 239 74,7% 3. Fase final Pruebas finales 8 Planificación del mantenimiento de la plataforma 7 0,033333333 Planificación del seguimiento de resultados previsto 7 0,033333333 Documentación de la información generada en la fase final 7 0,033333333 TOTAL FASE FINAL 29 9,6% TOTAL HORAS 300 Tabla 1: Planificación y Temporización
28 6 Desarrollo del trabajo 6.1 Requisitos del sistema 6.1.1 Modelo del dominio Un modelo del dominio captura los tipos más importantes de objetos en el contexto del sistema. Los objetos del dominio representan las cosas que existen o los eventos que suceden en el entorno en el que trabaja el sistema. Muchos de los objetos del dominio o pueden obtenerse de una especificación de requisitos o mediante la entrevista con los expertos del dominio. A continuación se presenta el modelo del dominio para el contexto en el que se engloba la aplicación. Debido a las dimensiones del modelo, este se ha dividido en varias partes para facilitar su comprensión y dar mayor claridad al mismo. 6.1.2 Diagramas modelo de dominio El usuario administrador: Figura 1: Modelo de dominio de usuario administrador El administrador puede crear usuarios y servicios, los usuarios tienen un perfil y un rol único (Véase Figura 1).
29 El usuario cliente: Figura 2: Modelo de dominido de usuario cliente El cliente puede publicar comentarios y asociarlos a los productos, además puede añadir reservas y compras de productos (Véase Figura 2).
30 El usuario gestor: Figura 3: Modelo de dominio de usuario gestor El usuario gestor puede crear categorías y productos, puede añadir tarifas y gestiona la visualización de los comentarios en los productos (Véase Figura 3). 6.1.3 Diagramas entidad relación Un diagrama o modelo entidad-relación (es una herramienta para el modelado de datos que permite representar las entidades relevantes de un sistema de información así como sus interrelaciones y propiedades. Para el TFG se han diseñado dos bases de datos: La Base de Datos enatural_db está compuesta por las tablas más importantes de la base de datos, antes de realizar el diseño estudiamos previamente sus entidades a continuación las enumeramos: Usuario: Es la entidad básica que representa a un participante del sistema, los tipos de usuarios pueden ser Usuario anónimo, Usuario Cliente, Usuario Gestor y Usuario Administrador. Sus características son: Id,Email,Password,Estado,Idweb. Referencia: Representa un código de activación de cuentas de usuario. Sus características son: Id, Código. Rol: Representa un rol de usuario, pueden ser Administrador, Gestor y Cliente. Sus características son: Id,Tipo. Perfil: Representa toda la información pública y privada relativa al usuario. Sus características son: Id,Edad,Iduser,Avatar,Nombre,Apellidos,Comentarios,Fecha de nacimiento.
31 Registro: Representa una actividad realizada por alguno de los usuarios de la web. Sus características son: Id,Iditem,Accion,Fecha de emisión, Idweb. Categoría: Representa una tipo de producto. Sus características son: Id, Nombre, Descripción,Imagen. Servicio: Representa una actividad específica de la empresa. Sus características son: Id, Nombre, Descripción, Imagen, Idweb. Tarifa: Representa un precio temporal de un producto. Sus características son: Id, Fecha inicio, Fecha fin, Emisión, Tasas, Precio1, Precio2, impuestos. Reserva: Representa un registro que otorga de manera temporal el uso exclusivo de un producto a un usuario. Sus características son: Id, Fecha Inicio, Fecha Fin, Fecha de emisión, Información, Email, Dirección. Producto: Representa una actividad, servicio o alojamiento. Sus características son: Id, Galeria de imágenes, Archivos, Nombre, Imagen de portada, Descripción. Comentario: Representa una opinión de un producto dado. Sus características son: Id, Comentario, Activo. Municipio/Provincia: Representa una localización. Sus características son: Id municipio, Id Provincia, Codigo municipio, Digito control, Nombre. Webtemplate: Representa la plantilla o colección de plantillas de la web de clientes. Seguidamente se muestra el diagrama entidad relación que previamente hemos diseñado para las relaciones entre entidades (Véase Figura 4):
32 Figura 4: Diagrama entidad relación enatural_db.
33 Por otro lado el esquema de la segunda base de datos statistics_db fue mucho más simple ya que solo existían tres relaciones usuarios, servicios y productos . Una característica importante a tener en cuenta en esta base de datos es que las tablas se van a autogenerar dinámicamente, es decir, cada vez que un servicio, un producto o un usuario se creen en el sistema, se generaran tablas con la siguiente plantilla [servicio o usuario o producto]_[id del objeto]_[ id de la web]. De esta manera se guardaran en esta base de datos las estadísticas de uso de cada uno por separado, proporcionando una información exacta de su uso. A continuación se muestra el diagrama entidad relación de la base de datos (Véase Figura 5): Figura 5: Diagrama entidad relación db_statistics
34 6.1.4 Modelo relacional En este modelo todos los datos son almacenados en relaciones, y como cada relación es un conjunto de datos, el orden en el que éstos se almacenen no tiene relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar por un usuario no experto. La información puede ser recuperada o almacenada por medio de consultas que ofrecen una amplia flexibilidad y poder para administrar la información. Este modelo considera la base de datos como una colección de relaciones. De manera simple, una relación representa una tabla que no es más que un conjunto de filas, cada fila es un conjunto de campos y cada campo representa un valor que interpretado describe el mundo real. Cada fila también se puede denominar tupla o registro y a cada columna también se le puede llamar campo o atributo. Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el Álgebra relacional y el Cálculo relacional. El Álgebra relacional permite describir la forma de realizar una consulta, en cambio, el Cálculo relacional sólo indica lo que se desea devolver. A continuación se muetra el modelo relacional de la base de datos enatural_db (Véase Figura 6):
35 Figura 6: Modelo relacional enatural_db.
42 6.2.4 Modelo de casos de uso Casos de usos de las tareas comunes para todos los usuarios: Figura 9: Caso de uso Registrar Los usuarios anónimos pueden en cualquier momento auto-registrarse en el sistema para acceder a las operaciones de reservar, comprar y comentar los productos (Véase Figura 9). Casos de usos por roles: Clientes: Figura 10: Casos de uso rol cliente Usuario Registrar Validar Email <<include>> Iniciar Sesión <<extend>> Usuario Cliente Visualizar Producto Reservar producto Insertar Comentario Cancelar Reserva Introducir datos <<extend>> <<include>> Realizar Compra Realizar Valoraciones
43 El cliente tendrá todas las operaciones de usuario registrado, podrá visualizar los productos, reservar productos, cancelar reservas y realizar compras de productos a través de Paypal. Además el usuario cliente podrá realizar valoraciones de productos y de empresas (Véase Figura 10). Gestores: Figura 11: Caso de uso Gestionar Comentarios Los gestores podrán mostrar o no mostrar los comentarios que se realicen en sus productos. No se podrán borrar de la base de datos (Véase Figura 11). Figura 12: Caso de uso Visualizar Registro Los gestores podrán visualizar las actividades mediante un visor de registro que se realicen en su sitio web (Véase Figura 12). Gestionar Comentarios Visualizar Comentarios <<include>> Activar Comentarios Desactivar Comentarios Usuario Gestor <<extend>> <<extend>> Visualizar Registro Buscar Buscar Usuario Buscar Actividad Buscar Fecha <<extend>> Usuario Gestor
44 Figura 13: Caso de uso Gestionar Producto El usuario gestor podrá crear o editar productos introduciendo los datos del producto, una imagen que lo represente y además la posibilidad de tener una galería de imágenes o archivos relacionados con el producto. También se podrá tener las opciones de eliminar y buscar productos relacionados con los servicios y categorías de la empresa (Véase Figura 13). Gestor Gestionar Producto Crear Producto Cargar Galeria Imagenes Editar Produto Eliminar Producto <<include>> Introducir Datos <<include>> <<extend>> <<extend>> Buscar Producto
45 Administrador: Figura 14: Caso de uso Gestionar Categoria El usuario gestor podrá crear o editar categorías introduciendo los datos necesarios, subiendo una imagen y eligiendo un servicio para la categoría. También podrán eliminar y buscar categorías de servicio relacionados con las actividades de las empresas (Véase Figura 14). Administrador Gestionar Categoria Crear Categoria Editar Categoria Eliminar Categoria Cargar Imagen <<include>> Introducir Datos <<include>> <<extend>> <<extend>> Buscar Categoria
46 Figura 15: Caso de uso Gestionar Servicio El administrador podrá crear o editar los servicios comunes para todas las empresas de la web. También tendrá la posibilidad de buscar y eliminar servicios (Véase Figura 15). Figura 16: Caso de uso Gestionar Usuarios Administrador Gestionar Servicio Crear Servicio Cargar Imagen <<include>> Editar Servicio Eliminar Servicio Introducir Datos <<include>> <<extend>> <<extend>> Buscar Servicio Administrador Gestionar Usuarios Crear Usuario Editar Usuario Eliminar Usuario Introducir Datos <<extend>> <<include>> Buscar Usuario
47 El administrador podrá crear o editar a todos los usuarios con roles de gestor y clientes dentro del sistema. También podrá eliminarlos y buscar usuarios (Véase Figura 16). 6.2.5 Lista de Casos de Uso A continuación mostramos una tabla con todo el listado de casos de uso (Véase Tabla 4): Actor(Roles) Caso de Uso Nº Caso de uso Usuario Registrarse 01 Visualizar Web 02 Visualizar Producto 03 Usuario Registrado Iniciar Sesión 04 Cerrar Sesión 05 Usuario Cliente Realizar Compra 06 Realizar Reserva 07 Insertar Comentario 08 Usuario Gestor Visualizar Comentarios 09 Visualizar Registro 10 Crear Tarifa 11 Editar Tarifa 12 Eliminar Tarifa 13 Buscar Tarifa 14 Crear Reserva 15 Eliminar Reserva 16 Buscar Reserva 17 Crear Producto 18 Editar Producto 19 Eliminar Producto 20 Buscar Producto 21 Usuario Administrador Crear Categoría 22 Editar Categoría 23 Eliminar Categoría 24 Buscar Categoría 25 Crear Usuario 26 Editar Usuario 27 Eliminar Usuario 28 Buscar Usuario 29 Crear Servicio 30 Editar Servicio 31 Eliminar Servicio 32 Buscar Servicio 33 Tabla 4: Lista de Casos de uso La especificación de los casos de uso se encuentran en el anexo.
48 6.2.6 Prototipo de interfaz de usuario Los Mockups o prototipos de interfaz de usuario nos muestra como quedaría una aplicación antes de su diseño final, de este modo se representa la aplicación de forma visual sin la implementación del diseño. Aplicación Web: Interfaz principal de usuario gestor: Figura 17: Prototipo de interfaz de usuario gestor En la interfaz se diferencia un menú a la izquierda con el que se podrá navegar por la aplicación, en la parte central, se visualizan gráficas de estadísticas para el control de la web y en la parte superior derecha se visualiza la foto de perfil del gestor y un menú para editar perfil y cerrar sesión (Véase Figura 17).
49 Interfaz de producto: Figura 18: Prototipo de interfaz de producto En la interfaz se dispone de una tabla con la información asociada a la lista de productos, un buscador de productos y también se podrán realizar diferentes operaciones como editar y eliminar productos (Véase Figura 18).
50 Interfaz editor web: Figura 19: Prototipo de interfaz de Editor Web En la interfaz del editor web se dispondrá de una plantilla web que el usuario podrá ir configurando y se podrá visualizar a través del buscador del sitio (Véase Figura 19).
51 Interfaz Página principal: Figura 20: Prototipo de página web principal Muestra como quedaría la página principal de la empresa una vez creada (Véase Figura 20).
58 La carpeta Config almacena todos los archivos de configuración relevantes para la aplicación. Eso incluye qué librerías debe auto-cargar la aplicación y detalles de la base de datos. La carpeta Controllers almacena todos los controladores de la aplicación. La carpeta Errors almacena todas las páginas de patrones de errores de la aplicación. Cuando un error aparece, se genera una página de error a partir de uno de estos patrones. La carpeta Hooks contiene extensiones que modifican el funcionamiento de los archivos del núcleo de CI. La carpeta Language contiene líneas de texto que pueden ser cargadas a través del módulo de lenguaje para crear sitios multilenguaje. La carpeta Libraries contiene todas las librerías o módulos específicos para la aplicación. La carpeta Models almacena los modelos de la aplicación. La carpeta Views almacena las vistas de la aplicación.
59 6.3.4 Diagrama de Despliegue Cuando el sistema es finalizado ha de ser desplegado en los componentes físicos (hardware) que deben cumplir unos requisitos software. Dichos componentes necesarios para este despliegue son (Véase Imagen 13): Imagen 13: Diagrama de despliegue
60 Servidor principal Requisitos hardware: Procesador: 2x Intel® Xeon® E7-4820, 8C, 2.00GHz, 18M Cache, 5.86GT/s, 105W TDP, Turbo, HT, DDR3-980MHz Memoria: 16GB Memory for 2 CPUs, 1066MHz (4x4GB 2R LV RDIMMs), 2 Memory Risers, 1333MHz DIMMs Almacenamiento: 4x 1TB, SATA, 2.5-in, 7.2K RPM Hard Drive Tarjeta controladora RAID: PERC H700 Integrated RAID Controller, 512MB Cache Conectividad RAID: RAID5 for PERC H200/H700, 4 HDDs Tarjetas de red: Intel Gigabit ET Dual Port Server Adapter, Cu, PCIe-4 Servidor de Base de datos 1: Requisitos hardware: Procesador: 2x Intel® Xeon® E7-4820, 8C, 2.00GHz, 18M Cache, 5.86GT/s, 105W TDP, Turbo, HT, DDR3-980MHz Memoria: 16GB Memory for 2 CPUs, 1066MHz (4x4GB 2R LV RDIMMs), 2 Memory Risers, 1333MHz DIMMs Almacenamiento: 4x 2TB, SATA, 2.5-in, 7.2K RPM Hard Drive Tarjeta controladora RAID: PERC H700 Integrated RAID Controller, 512MB Cache Conectividad RAID: RAID5 for PERC H200/H700, 4 HDDs Tarjetas de red: Intel Gigabit ET Dual Port Server Adapter, Cu, PCIe-4 Servidor de Base de datos 2: Requisitos hardware: Procesador: 2x Intel® Xeon® E7-4820, 8C, 2.00GHz, 18M Cache, 5.86GT/s, 105W TDP, Turbo, HT, DDR3-980MHz Memoria: 16GB Memory for 2 CPUs, 1066MHz (4x4GB 2R LV RDIMMs), 2 Memory Risers, 1333MHz DIMMs Almacenamiento: 4x 2TB, SATA, 2.5-in, 7.2K RPM Hard Drive Tarjeta controladora RAID: PERC H700 Integrated RAID Controller, 512MB Cache Conectividad RAID: RAID5 for PERC H200/H700, 4 HDDs Tarjetas de red: Intel Gigabit ET Dual Port Server Adapter, Cu, PCIe-4 Servidor de Copia: Requisitos hardware: Procesador: Intel® Xeon® E3-1220, 4C/4T, 3.10GHz, 8M Cache, 80W TDP, Turbo Memoria: 4GB Memory (1x4GB), 1600Mhz, Dual Ranked, Low Volt UDIMM Almacenamiento: 2x 1TB, SATA, 2.5-in, 7.2K RPM Hard Drive Tarjeta controladora RAID: PERC H200 Integrated RAID Controller
61 Conectividad RAID: RAID1 for PERC H200/H700, 2 HDDs Tarjetas de red: Intel® PRO/1000PT GbE Single Port Server Adapter, Cu, PCIe-1 Requisitos software: SO: Ubuntu Server Copias de seguridad: Bacula Clientes móviles: Cualquier dispositivo movil. Clientes Navegadores (versiones más recientes): Mozilla Firefox Safari Google Chrome 6.3.5 Diagramas de clases Seguidamente se mostrará los diagramas de clase correspondientes a los módulos de la aplicación:
63 Categorías: Figura 21: Diagrama de clases Categorias PageView CategoryController <<controller>> CategoryModel <<model>> WebsiteModel <<model>> CIController <<controller>> CreateCategoryView <<view>> CategoryListView <<view>> MenuLeftAdminView <<view>> HeadView <<view>> HeaderView <<view>> MenuHorizontalView <<view>> FooterView <<view>> CIModel <<controller>> ServiceModel <<model>> vistas controladores modelos
64 Home: Figura 22: Diagrama de clases Home HomeView <<view>> CIController <<controller>> HomeController <<controller>> PageView MenuLeftAdminView <<view>> HeadView <<view>> HeaderView <<view>> MenuHorizontalView <<view>> FooterView <<view>> StatisticsModel <<model>> ReserveModel <<model>> controladores vistas modelos CIModel <<controller>>
65 Registro de eventos: Figura 23: Diagrama de clases Registro de eventos ActivityController <<controller>> ActivityView <<view>> ActivityModel <<model>> CIController <<controller>> PageView MenuLeftAdminView <<view>> HeadView <<view>> HeaderView <<view>> MenuHorizontalView <<view>> FooterView <<view>> vistas controladores modelos CIModel <<controller>>
67 Comentarios: Figura 24: Diagrama de clases comentarios CommentController <<controller>> CommentView <<view>> CommentModel <<model>> CommentListView <<view>> OfferModel <<model>> ProfileModel <<model>> WebsiteModel <<model>> PageView MenuLeftAdminView <<view>> HeadView <<view>> HeaderView <<view>> MenuHorizontalView <<view>> FooterView <<view>> CIController <<controller>> vistas controladores modelos CIModel <<controller>>
74 Controlador web: Figura 31: Diagrama de clases website CIController <<controller>> CIModel <<controller>> modelos controladores vistas WebsiteController <<controller>> WebsiteModel <<model>> HomeView <<view>> UserModel <<model>>
75 Tarifa Figura 32: Diagrama de clases tarifa PageView MenuLeftAdminView <<view>> HeadView <<view>> HeaderView <<view>> MenuHorizontalView <<view>> FooterView <<view>> PrizeController <<controller>> CIController <<controller>> ServiceModel <<model>> CategoryModel <<model>> OfferModel <<model>> PrizeView <<view>> CIModel <<controller>> vistas controladores modelos PrizeModel <<model>>
76 Registro login: Figura 33: Diagrama de clases login UserModel <<model>> ReferenceModel <<model>> TablesModel <<model>> LoginView <<view>> RegistrenLoginController <<controller>> CIController <<controller>> CIModel <<controller>> vistas controladores modelos
77 Reservas: Figura 34: Diagrama de clases reserva PageView MenuLeftAdminView <<view>> HeadView <<view>> HeaderView <<view>> MenuHorizontalView <<view>> FooterView <<view>> OfferModel <<model>> ReserveCreateView <<view>> WebsiteModel <<model>> PrizeModel <<model>> WebsiteModel <<model>> ReserveModel <<model>> ReservesView <<view>> ReservesListView <<view>> ReservesController <<controller>> CIController <<controller>> CIModel <<controller>> vistas controladores modelos
78 Save index: Figura 35: Diagrama de clases saveindex WebsiteModel <<model>> WebModel <<model>> OfferModel <<model>> ServiceModel <<model>> IndexHtmlView <<view>> SaveIndexController <<controller>> CIController <<controller>> CIModel <<controller>> vistas controladores modelos
79 Usuario: Figura 36: Diagrama de clases usuario PageView MenuLeftAdminView <<view>> HeadView <<view>> HeaderView <<view>> MenuHorizontalView <<view>> FooterView <<view>> CIController <<controller>> UserController <<controller>> CreateuserView UserListview UserModel <<model>> vistas controladores modelos CIModel <<controller>>
80 Pago Paypal: Figura 37: Diagrama de clases Paypal PaypalController <<controller>> CIController <<controller>> PaypalServerController <<controller>> IPNListener ReserveModel <<model>> PurchaseModel <<model>> CIModel <<model>> PurchaseView <<view>> vistas controladores modelos
81 Guardar Servicio: Figura 38: Diagrama de clases guardar servicio WebModel <<model>> OfferModel <<model>> ServiceModel <<model>> CategoryModel <<model>> CIModel <<controller>> CIController <<controller>> controladores modelos WebsiteModel <<model>> SaveServicesController <<controller>>
82 Referencias: Figura 39: Diagrama de clases referencias ReferenceController <<controller>> ReferenceModel <<model>> CIModel <<controller>> CIController <<controller>> UserModel <<model>> controladores modelos
83 Save info: Figura 40: Diagrama de clases saveinfo WebModel <<model>> WebsiteModel <<model>> OfferModel <<model>> ServiceModel <<model>> SaveInfoController <<controller>> CIController <<controller>> CIModel <<controller>> controladores modelos
91 7 Conclusiones 7.1 Uso del Framework Codeigniter En el inicio de un proyecto de estas características debemos decidir que estrategia de programación se va ha usar para conseguir el objetivo fijado. En este caso la estrategia estaba clara al tratarse de un proyecto web, se optó por desarrollar un proyecto con patrones modelo-vista-controlador. Aunque existen multitud de Frameworks que usan este patrón, se decidió elegir Codeigniter debido a la facilidad de uso y a kis helpers que proporcionaba la plataforma. Este framework tiene una curva de aprendizaje bastante alta pero, una vez que se domina el redimiento que se obtiene es considerable. Así, una vez que se va conociendo cómo es el flujo de ejecución y el manejo de todos sus componentes, es posible desarrollar aplicaciones en muy poco tiempo haciendo uso de toda la potencia de su arquitectura y librerías. Gracias a todos los mencionados componentes ha sido posible tener elementos tan importantes como un sistema de verificación de usuarios, validación de formularios, interacción coherente y mapeada con la base de datos, paginación, sencillo manejo con respuestas JSON, control de peticiónes y respuestas AJAX, etc. Sin duda, y no menos importante, el trabajar con el patrón modelo-vista-controlador permite abstraerse e implementar componentes reutilizables. Otro punto importante a tener en cuenta es que Codeigniter trabaja cien por cien con objetos, lo cual me ha permitido continuar el rodaje y aprendizaje continuo con esta filosofía, que es utilizada de forma profesional. Por todo ello el uso de un framework y en concreto Codeigniter ha sido muy fructífero y desde luego muy recomendable para desarrollar cualquier aplicación web. 7.2 Uso de Librería Grocery CRUD En un proyecto en el que el uso de operaciones C.R.U.D. (Create, Read, Update, Delete) es fundamental, era inevitable tener que usar algún tipo de herramienta para afianzar los posibles errores asociados a la entrada de información del sistema y la compatibilidad con los distintos navegadores. Esta librería, que es cien por cien compatible con el Framework Codeigniter, fue la solución. Así, no solo permite un uso adecuado de la información recibida sino que, además, esta automatizada y estandarizada, permitiendo de manera fácil e intuitiva la creación de sistema de gestión de contenidos o CMS (Create Management System). 7.3 Uso de componentes, tecnologías y estrategias. En este apartado de las conclusiones me gustaría remarcar la importancia de la reutilización e integración de código. Gracias a librerías y componentes como JQuery, JavaScript, JRating, Bootstrap, CSS3, Spinner y otras ha sido posible mostrar un buen aspecto y funcionalidad. Resulta imprescindible y recomendable en este tipo de proyectos utilizar los citados elementos que colaboran de forma activa al desarrollo de las aplicaciones.
92 Bitbucket, el control de versiones privado, para el desarrollo de la aplicación web ha supuesto un componente esencial para el avance del proyecto. Con este proyecto he conseguido comprender mejor y coger soltura en la utilización de estos elementos que ahora me resultan imprescindibles para desarrollar cualquier aplicación web. 7.4 Resultado final del proyecto La conclusión final de este proyecto es que ha finalizado cumpliendo los objetivos y metas que se propusieron teniendo como resultado: Un portal web con un sistema de información que permite introducir todos los datos necesarios para la descripción de ofertas en turismo rural con especial atención en el alojamiento. Un sistema de gestión de contenidos que autogenera páginas web profesionales para las empresas del sistema, con posibilidad de edición de páginas. Un sistema de gestión de reservas y venta de productos. Un sistema de clasificación de productos y páginas web del sistema, mediante votación de usuarios registrados. Esto permite que la salida de este proyecto concluya con un portal web dónde se localizan empresas de turismo rural, que se publicitan y venden sus productos. 8 Trabajo Futuro: Este proyecto a pesar de su complejidad puede ofrecer todavía multitud de mejoras. Su expansión se puede realizar por una gran cantidad de frentes, algunos de ellos se comentan a continuación: 1.-Ampliación de las plantillas del editor web: Actualmente el editor dispone de una sola plantilla configurable muy básica, se podrían generar multitud de plantillas configurables y añadirlas en el editor para que el usuario pudiera seleccionar la más idónea para su actividad comercial. Las plantillas podrían tener distintos diseños, imágenes, combinaciones de colores e iconos diferentes. 2.-Interfaz multi-idioma: En los tiempos que corren tener una página en multiples idiomas es algo básico. Al ser una actividad turística los clientes potenciales pueden ser de otros países. Por ello, sería recomendable disponer de al menos uno o dos idiomas más. El Framework Codeigniter dispone de una clase “Language Class”, ésta permite abstraer la lógica de la aplicación del idioma de la interfaz mediante ficheros donde se contiene la información del idioma con las etiquetas, pudiendo haber tantos idiomas como ficheros disponibles.
93 3.-Compras con tarjeta de crédito: En la actualidad no solo se paga con Paypal, los clientes deberían disponer de otras formas de pago. Implementar una pasarela de pago con seguridad cifrada será uno de los siguientes pasos a realizar. Paypal o Paymil ofertan servicios de pagos dónde implementan toda la pasarela de pago. 4.- Descuentos: Las empresas deberían poder ofertar descuentos de sus productos, el próximo paso debería ser la creación de un gestor de descuentos. Este gestor permitiría la creación de descuentos temporales asociados a productos de la empresa. 5.- Promociones: Las empresas deberían disponer de un gestor de promociones y la posibilidad de hacer regalos sobre los productos ofertados, para fidelizar a los clientes. 6.-Mejorar las búsquedas: Será necesario crear un sistema de calificaciones para ordenar de manera equitativa y justa según la valoración de los usuarios. 7.- Interfaz Web y Móvil: Cambiar periódicamente el diseño de la web y el móvil, para dar una imagen de fluidez y dinamismo y no estancarse en el pasado.
94 9 Anexos 9.1 Anexo I: Recursos utilizados 9.1.1 Recursos software SO - Ubuntu Linux. Ubuntu es un sistema operativo basado en Debian y que se distribuye como software libre y gratuito, el cual incluye su propio entorno de escritorio denominado Unity. Está orientado al usuario novel y promedio, con un fuerte enfoque en la facilidad de uso y en mejorar la experiencia de usuario. Está compuesto de múltiple software normalmente distribuido bajo una licencia libre o de código abierto. Cada seis meses se publica una nueva versión de Ubuntu. Esta recibe soporte por parte de Canonical durante nueve meses por medio de actualizaciones de seguridad, parches para bugs críticos y actualizaciones menores de programas. Las versiones LTS (Long Term Support), que se liberan cada dos años, reciben soporte durante cinco años en los sistemas de escritorio y de servidor (Véase Imagen 14). Imagen 14: S.O. Ubuntu Linux Se ha utilizado mayoritariamente para hacer pruebas en el servidor.
95 SO – Mac OSX. Es el nombre del sistema operativo creado por Apple para su línea de computadoras Macintosh. Es conocido por haber sido uno de los primeros sistemas dirigidos al gran público en contar con una interfaz gráfica compuesta por la interacción del mouse con ventanas, Icono y menús. Desde la existencia del sistema operativo en los primeros años dentro de la línea Macintosh ha centrado sus esfuerzos en favor de que la máquina resultara más agradable al usuario, diferenciándolo de otros sistemas contemporáneos, como MS-DOS, que eran un desafío técnico. El equipo de desarrollo del Mac OS original incluía a Bill Atkinson, Jef Raskin y Andy Hertzfeld. Esta fue la base del Mac OS clásico, desarrollado íntegramente por Apple, cuya primera versión vio la luz en 1985. Su desarrollo se extendería hasta la versión 9 del sistema, lanzada en 1999. A partir de la versión 10 (Mac OS X), el sistema cambió su arquitectura totalmente y pasó a basarse en Unix, sin embargo su interfaz gráfica mantiene muchos elementos de las versiones anteriores. Hay una gran variedad de versiones sobre cómo fue desarrollado el Mac OS original y dónde se originaron las ideas subyacentes. Pese a esto documentos históricos prueban la existencia entre el proyecto Macintosh y el proyecto Alto de Xerox PARC. Las contribuciones iniciales del Sketchpad de Ivan Sutherland y el On-Line System de Doug Engelbart también fueron significativas (Véase Imagen 15). Imagen 15: S.O. MaCosX
96 PhpMyAdmin PhpMyAdmin es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web utilizando Internet. Actualmente puede crear y eliminar Bases de datos, crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos y está disponible en 62 idiomas. Se encuentra disponible bajo la licencia GPL. Este proyecto se encuentra vigente desde el año 1998, siendo el mejor evaluado en la comunidad de descargas de SourceForge.net. Esta herramienta ha sido utilizada para gestionar la base datos. Se ha usado principalmente en el servidor de pruebas para la inserción y consulta de datos en nuestra aplicación web (Véase Imagen 16). Apache El servidor HTTP Apache es un servidor web HTTP de código abierto, para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.12 y la noción de sitio virtual. 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. Sus características principales y por el que es muy extensamente utilizado es por ser un servidor muy modular, de código abierto, multi-plataforma y extensible. Ha sido el servidor utilizado para desarrollar la aplicación en preproducción (Véase Imagen 17). GitHub Es una plataforma de desarrollo colaborativo de software que sirve para alojar proyectos utilizando el sistema de control de versiones Git. Utiliza el framework Ruby on Rails por GitHub, Inc. (anteriormente conocida como Logical Awesome). El código se almacena de forma pública, aunque también se puede hacer de forma privada, creando una cuenta de pago. Esta herramienta se ha utilizado para llevar el control de las versiones del proyecto y facilitar el desarrollo colaborativo de la aplicación (Véase Imagen 18). Imagen 16: PhpMyAdmin Imagen 17: Apache Imagen 18: Github
97 Bitbucket Bitbucket es un servicio de alojamiento basado en web, para los proyectos que utilizan el sistema de control de revisiones Mercurial y Git. Bitbucket ofrece planes comerciales y gratuitos. Se ofrece cuentas gratuitas con un número ilimitado de repositorios privados (que puede tener hasta cinco usuarios en el caso de cuentas gratuitas). Este sistema en línea permite gestionar y compartir multitud de repositorios públicos y privados en la nube. Desde septiembre de 2010, los repositorios privados no se muestran en las páginas de perfil si un usuario sólo tiene depósitos privados, el sitio web dará el mensaje “Este usuario no tiene repositorios”. El servicio está escrito en Python. Es similar a GitHub, que utiliza Git. Esta herramienta se ha utilizado junto con Git para llevar el control de las versiones del proyecto (Véase Imagen 19). Microsoft Visio Premium 2010 Microsoft Visio es un software de dibujo vectorial para Microsoft Windows. Visio comenzó a formar parte de los productos de Microsoft cuando fue adquirida la compañía Visio en el año 2000. Las herramientas que lo componen permiten realizar diagramas de oficinas, diagramas de bases de datos, diagramas de flujo de programas, UML, y más, que permiten iniciar al usuario en los lenguajes de programación. Esta herramienta se ha utilizado para elaborar diagramas de casos de uso y diagramas de bases de datos (Véase Imagen 20). Notepad++ Notepad++ es un editor de texto y de código fuente libre con soporte para varios lenguajes de programación. De soporte nativo a Microsoft Windows. Se parece al Bloc de notas en cuanto al hecho de que puede editar texto sin formato y de forma simple. No obstante, incluye opciones más avanzadas que pueden ser útiles para usuarios avanzados como desarrolladores y programadores. Se distribuye bajo los términos de la Licencia Pública General de GNU. Se ha utilizado esta herramienta para la edición de diferentes tipos de código, javascript, jquery, html, php, etc (Véase Imagen 21). Imagen 9.1.1.1: Bitbucket Imagen 19: Bitbucket Imagen 20: Microsoft Visio Imagen 21: Notepad++
98 Sublime text 2 Sublime Text es un editor de texto y editor de código fuente creado en Python desarrollado originalmente como una extensión de Vim, con el tiempo fue creando una identidad propia, por esto aún conserva un modo de edición tipo vi llamado Vintage mode. Se distribuye de forma gratuita, sin embargo no es software libre o de código abierto, se puede obtener una licencia para su uso ilimitado, pero el no disponer de esta no genera ninguna limitación más allá de una alerta cada cierto tiempo. Se ha utilizado esta herramienta para edición de código php. (Véase Imagen 22) HTML5 Representa toda la estructura en la que está fundamentada la web hoy en día. Sus siglas significan HyperText Markup Languaje y hace referencia al lenguaje de marcado para la elaboración de páginas web. Este lenguaje se escribe en forma de etiquetas y se encarga de definir y estructurar cada uno de los elementos que aparecen en una página web. Fue publicado por primera vez en Internet por Tim Berners-Lee en 1991. Actualmente la W3C se encarga de desarrollar estándares abiertos para asegurar el correcto crecimiento de la web. La última versión de HTML, HTML 5, ofrece nuevas etiquetas para incrustar videos y gráficos de manera directa en la propia página entre otras muchas nuevas características. Se ha utilizado para el desarrollo web y móvil de la aplicación (Véase Imagen 23). PHP Es un lenguaje de programación de uso general que trabaja del lado del servidor y fue diseñado para el desarrollo web de contenido dinámico. Es uno de los primeros lenguajes que permitió incorporar código directamente en el HTML en vez de un fichero externo que procesara datos. Forma parte de la familia de lenguajes interpretados y el servidor web es quien se encarga de procesarlo y generar la página web resultante. Es posible utilizarlo tanto en sistemas UNIX como en Microsoft Windows apoyándose en servidores como Apache, CGI e ISAPI. Es un lenguaje que derivó en su nacimiento (1995) de los lenguajes más comunes de programación estructurada como C y Perl. Actualmente es uno de los lenguajes más utilizados en el desarrollo en la web y constituye una alternativa a otros lenguajes como Microsoft ASP y las páginas JSP de Java. PHP tiene incorporados unos puentes que permiten realizar conexiones con diferentes tipos de bases de datos como MySQL, PostgreSQL, Oracle,ODBC, Microsoft SQL Server, Firebird y SQLite (Véase Imagen 24). Imagen 22: Sublime Text 2 Imagen 23: Html5 Imagen 24: Php
99 AJAX AJAX no es en sí un lenguaje de programación sino una técnica de desarrollo web para crear aplicaciones interactivas. Como su propio nombre indica, Asynchronous JavaScript And XML, utiliza el lenguaje de programación JavaScript y la estructuración de datos XML en el lado del cliente para comunicarse de forma asíncrona con el servidor. Esta tecnología permite modificar elementos de la página web sin necesidad de recargarla o ir a otra página. De esta forma es posible incrustar datos recuperados de la B.B.D.D. en un elemento concreto de la página. Su principal ventaja es que evita la necesidad de cargar todo el contenido cuando sólo es necesario refrescar o cargar algunos elementos de la página. Su funcionamiento está basado en peticiones realizadas mediante XMLHttpRequest y procesado y modificado de elementos en la parte del cliente con JavaScript y DOM (Véase Imagen 25). CSS Las hojas de estilo en cascada son un lenguaje que permiten describir estilos de un documento (página web) a través de marcas. Esta información puede estar incrustada en el propio HTML o por el contrario separada en ficheros .css. Su sintaxis está basado en uno o más selectores y un bloque de estilos donde se definen los valores de las propiedades del documento. Los selectores pueden ser únicos cuando se trata del id de un elemento o múltiple cuando se habla de una clase de elementos (Véase Imagen 26). SQL El SQL es un lenguaje de consulta estructurado de acceso a bases de datos relaciones que permite especificar diversos tipos de operaciones entre ellas. Una de sus características es el manejo del álgebra y el cálculo relaciones que permiten efectuar consultas con el fin de recuperar, de forma sencilla, información en bases de datos, así como hacer cambios en ella. En SQL una sola sentencia puede equivaler a uno o más programas que se utilizarían en un lenguaje de bajo nivel orientado a registros (Véase Imagen 27). Imagen 25: Ajax Imagen 26: Css3 Imagen 27: MySql
106 Nombre: Realizar reserva Descripción: El usuario una vez autentificado puede seleccionar un producto y hacer una reserva en el sistema. Precondición: Usuario autentificado y visualizando producto. Parámetros: Nombre Apellidos Dirección País Provincia/Municipio Email Código postal Teléfono Fecha inicio Fecha fin Nº Adultos Nº Niños Comentarios Flujo de Ejecución: 1.- El usuario visualiza el producto. 2.-El usuario selecciona haciendo click en botón “Reservar”. 3.-El usuario accede al formulario de reserva. 4.-El usuario introduce los datos necesarios para completar la solicitud. 5.-Se calculan y muestran los datos de la reserva. 6.-El usuario hace click en el botón “Reservar ahora”. 7.- Se envía un email con la información de la reserva. 8.- La reserva se ha realizado. Caminos Alternativos: (4)Errores al introducir datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (4)No se dispone de tarifas. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (6)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Reserva realizada Tabla 11: Descripción caso de uso Realizar Reserva
107 Nombre: Insertar Comentario Descripción: Una vez el usuario este visualizando el producto puede realizar comentarios sobre sus valoraciones. Precondición: Usuario autentificado y Visualizando el producto. Parámetros: Comentario Flujo de Ejecución: 1.- Al usuario se le muestra el producto. 2.-El usuario introduce el comentario. 3.- El sistema inserta el comentario en la base de datos. 4.- El sistema muestra el comentario insertado. Caminos Alternativos: (3)Error en la base de datos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (4)No existen comentarios Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Comentario guardado. Tabla 12: Descripción caso de uso Insertar Comentario
108 Usuario Gestor: A continuación mostramos los casos de uso con más detalle para el usuario gestor (Véase Tablas desde la 13 hasta la 25). Nombre: Visualizar Comentarios Descripción: El usuario gestor puede buscar comentarios de productos para decidir si se muestran o no se muestran en el producto seleccionado. Precondición: Usuario autentificado . Parámetros: Ninguno. Flujo de Ejecución: 1.- Al usuario se le muestra una lista de productos. 2.-El usuario selecciona un producto. 3.- El sistema muestra una tabla con los comentarios del producto seleccionado. 4.- El usuario selecciona un comentario. 5.- El usuario visualiza el comentario. Caminos Alternativos: (3)Error en la base de datos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (3)No existen comentarios Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Ninguno. Tabla 13: Descripción caso de uso Visualizar Comentarios
109 Nombre: Visualizar Registro Descripción: El usuario gestor una vez autentificado puede visualizar todas las actividades que se realizan los gestores en la aplicación web. Precondición: Usuario gestor autentificado. Parámetros: Ninguno. Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Registro de Eventos”. 3.- El sistema muestra mediante una tabla todos los datos relativos a los eventos. Caminos Alternativos: (3) Los Datos no existen en la base de datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (3) No se puede conectar a la base de datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Ninguno. Tabla 14: Descripción caso de uso Visualizar Registro
110 Nombre: Crear Tarifa Descripción: El usuario gestor una vez autentificado puede crear una o distintas tarifas para un producto. Precondición: Usuario gestor autentificado. Parámetros: Fecha inicio Fecha fin Precio Adulto Precio Niño Impuestos Tasas Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Tarifas”. 3.- El sistema muestra mediante una tabla todos los productos. 4.- El usuario selecciona un producto. 5.- El usuario hace click en el icono nueva tarifa. 6.- El usuario introduce los datos. 7.- El sistema guarda la nueva tarifa. Caminos Alternativos: (3)No existen productos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (6) Error de base de datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Tarifca Guardada. Tabla 15: Descripción caso de uso Crear Tarifa
111 Nombre: Editar Tarifa Descripción: El usuario gestor una vez autentificado puede editar una tarifa de producto. Precondición: Usuario gestor autentificado. Parámetros: Fecha inicio Fecha fin Precio Adulto Precio Niño Impuestos Tasas Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Tarifas”. 3.- El sistema muestra mediante una tabla todos los productos. 4.- El usuario selecciona un producto. 5.- El usuario hace click en el icono editar tarifa. 6.- El usuario introduce los datos. 7.- El sistema modifica la tarifa seleccionada. Caminos Alternativos: (3)No existen productos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (6) Error de base de datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Tarifa modificada. Tabla 16: Descripción caso de uso Editar Tarifa
112 Nombre: Eliminar Tarifa Descripción: El usuario gestor una vez autentificado puede eliminar una tarifa de un producto. Precondición: Usuario gestor autentificado. Parámetros: Ninguno. Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Tarifas”. 3.- El sistema muestra mediante una tabla todos los productos. 4.- El usuario selecciona un producto. 5.- El usuario hace click en el icono eliminar tarifa. 6.- El sistema muestra un mensaje de seguridad. 7.- El usuario selecciona aceptar 6.- El sistema eliminar la tarifa seleccionada. Caminos Alternativos: (3)No existen productos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (7) El usuario selecciona la opción cancelar eliminar. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (8) Error la tarifa no pudo eliminarse. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Tarifa eliminada. Tabla 17: Descripción caso de uso Eliminar Tarifa
113 Nombre: Buscar Tarifa Descripción: El usuario gestor una vez autentificado puede buscar una tarifa de un producto. Precondición: Usuario gestor autentificado. Parámetros: Producto Fecha inicio Fecha fin Precio Adulto Precio Niño Impuestos Tasas Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Tarifas”. 3.- El sistema muestra mediante una tabla todos los productos. 4.- El usuario busca en la tabla la tarifa. 5.- El sistema muestra el/los productos asociados a esta tarifa. 6.- El usuario selecciona el producto. 7.- El usuario selecciona la tarifa. Caminos Alternativos: (3)No existen productos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (5) No existen tarifas con estos parámetros. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Ninguno. Tabla 18: Descripción caso de uso Buscar Tarifa
114 Nombre: Crear Reserva Descripción: El usuario una vez autentificado puede seleccionar un producto y hacer una reserva en el sistema de forma manual para un cliente. Precondición: Usuario autentificado. Parámetros: Nombre Apellidos Dirección País Provincia/Municipio Email Código postal Teléfono Fecha inicio Fecha fin Nº Adultos Nº Niños Comentarios Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Reservas”. 3.- El sistema muestra mediante una tabla todos los productos. 4.- El usuario busca el producto para realizar la reserva. 5.- El usuario introduce los datos en el formulario de reserva. 6.- El sistema guarda los datos de la reserva. Caminos Alternativos: (3)No existen productos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (5)Error al introducir los datos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (6)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Reserva realizada. Tabla 19: Descripción caso de uso Crear Reserva
115 Nombre: Eliminar Reserva Descripción: El usuario una vez autentificado eliminar reservas de productos de forma manual. Precondición: Usuario autentificado. Parámetros: Ninguno. Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Reservas”. 3.- El sistema muestra mediante una tabla todos los productos. 4.- El usuario busca el producto para eliminar la reserva. 5.- El usuario hace click en el icono eliminar. 6.- El sistema muestra un mensaje de seguridad. 7.- El usuario hace click en aceptar. 8.- El sistema elimina la reserva. Caminos Alternativos: (3)No existen productos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (7)El usuario cancela la operación de eliminar. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (8)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Reserva eliminada. Tabla 20: Descripción caso de uso Eliminar Reserva
122 Nombre: Editar Categoría Descripción: El usuario una vez autentificado puede editar categorías de productos asociados a un servicio en el sistema. Precondición: Usuario autentificado. Parámetros: Nombre Servicio Imagen de Icono Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Categorías”. 3.-El usuario selecciona haciendo click en el submenú principal “Buscar Categoría”. 4.- El sistema muestra una tabla con las categorías. 5.- El sistema muestra un formulario de edición de la categoría. 6.- El usuario introduce o modifica los datos de la categoría. 7.- El sistema guarda la categoría. Caminos Alternativos: (4)No existen categorías. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (6)Errores de datos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (7)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Categoría modificada. Tabla 27: Descripción caso de uso Editar Categoría
123 Nombre: Eliminar Categoría Descripción: El usuario una vez autentificado puede eliminar categorías de productos asociados a un servicio en el sistema. Precondición: Usuario autentificado. Parámetros: Ninguno. Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Categorías”. 3.-El usuario selecciona haciendo click en el submenú principal “Buscar Categoría”. 4.- El sistema muestra una tabla con las categorías. 5.- El usuario hace click en el icono eliminar. 6.- El sistema muestra un mensaje de seguridad. 7.- El usuario hace click en aceptar. 8.- El sistema elimina la categoría. Caminos Alternativos: (4)No existen categorías. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (7)El usuario cancela la operación eliminar. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (8)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Categoría eliminada. Tabla 28: Descripción caso de uso Eliminar Categoría
124 Nombre: Buscar Categoría Descripción: El usuario una vez autentificado puede buscar categorías de productos asociados a un servicio dentro d el sistema. Precondición: Usuario autentificado. Parámetros: Nombre Servicio Imagen de Icono Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Categorías”. 3.-El usuario selecciona haciendo click en el submenú principal “Buscar Categoría”. 4.- El usuario introduce los parámetros de búsqueda. 5.- El sistema muestra una tabla con las categorías. Caminos Alternativos: (5)No existen categorías. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (5)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Ninguno. Tabla 29: Descripción caso de uso Buscar Categoría
125 Nombre: Crear Usuario Descripción: El administrador una vez autentificado puede crear nuevos usuarios y aplicarle los roles correspondientes. Precondición: Usuario administrador autentificado. Parámetros: Datos personales (email, password). Rol determinado según tipo de usuario. Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Usuarios”. 3.-El usuario selecciona haciendo click en el submenú principal “Crear usuario”. 4.- El sistema muestra un formulario de creación del usuario. 5.- El usuario introduce los datos correspondientes. 6.- El sistema guarda la categoría. Caminos Alternativos: (5)Errores de datos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (6)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Usuario guardado. Tabla 30: Descripción caso de uso Crear Usuario
126 Nombre: Editar Usuario Descripción: El usuario una vez autentificado puede editar usuarios registrados en el sistema Precondición: Usuario administrador autentificado. Parámetros: Datos personales (password). Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Usuarios”. 3.-El usuario selecciona haciendo click en el submenú principal “Buscar Usuarios”. 4.- El sistema muestra una tabla con los usuarios. 5.-El usuario selecciona haciendo click en el icono de opciones “Editar” del perfil de usuario a modificar. 6.- El sistema muestra un formulario de edición del usuario. 7.- El usuario introduce o modifica los datos del usuario. 7.- El sistema guarda la modificación del usuario. Caminos Alternativos: (4)No existen usuarios. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (6)Errores de datos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (7)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Usuario modificado. Tabla 31: Descripción caso de uso Editar Usuario
127 Nombre: Eliminar Usuario Descripción: El usuario una vez autentificado puede eliminar un usuario en el sistema. Precondición: Usuario administrador autentificado. Parámetros: Ninguno. Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Usuarios”. 3.-El usuario selecciona haciendo click en el submenú principal “Buscar Usuarios”. 4.- El sistema muestra una tabla con los usuarios. 5.- El usuario hace click en el icono eliminar. 6.- El sistema muestra un mensaje de seguridad. 7.- El usuario hace click en aceptar. 8.- El sistema elimina el usuario. Caminos Alternativos: (4)No existe el usuario. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (7)El usuario cancela la operación eliminar. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (8)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Usuario eliminado. Tabla 32: Descripción caso de uso Eliminar Usuario
128 Nombre: Buscar Usuario Descripción: El usuario una vez autentificado puede buscar usuarios dentro del sistema. Precondición: Usuario administrador autentificado. Parámetros: Usuario Rol Estado Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Usuarios”. 3.-El usuario selecciona haciendo click en el submenú principal “Buscar Usuarios”. 4.- El usuario introduce los parámetros de búsqueda. 5.- El sistema muestra una tabla con los usuarios. Caminos Alternativos: (5)No existen usuarios. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (5)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Ninguno. Tabla 33: Descripción caso de uso Buscar Usuario
129 Nombre: Crear Servicio Descripción: El usuario una vez autentificado puede crear nuevos servicios en el sistema. Precondición: Usuario administrador autentificado. Parámetros: Nombre Descripción del servicio Imagen de Icono Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Servicios”. 3.-El usuario selecciona haciendo click en el submenú principal “Crear Servicio”. 4.- El sistema muestra un formulario de creación del servicio 5.- El usuario introduce los datos del servicio. 6.- El sistema guarda el servicio. Caminos Alternativos: (5)Errores de datos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (6)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Servicio guardado. Tabla 34: Descripción caso de uso Crear Servicio
130 Nombre: Editar Servicio Descripción: El usuario una vez autentificado puede editar servicios en el sistema. Precondición: Usuario administrador autentificado. Parámetros: Nombre Servicio Imagen de Icono Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Servicios”. 3.-El usuario selecciona haciendo click en el submenú principal “Buscar Servicio”. 4.- El sistema muestra una tabla con los servicios. 5.- El sistema muestra un formulario de edición del servicio. 6.- El usuario introduce o modifica los datos del servicio. 7.- El sistema guarda el servicio. Caminos Alternativos: (4)No existen servicios. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (6)Errores de datos Se emite un mensaje informando al usuario y se vuelve al punto de partida. (7)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Servicio modificado. Tabla 35: Descripción caso de uso Editar Servicio
131 Nombre: Eliminar Servicio Descripción: El usuario una vez autentificado puede eliminar servicios en el sistema. Precondición: Usuario administrador autentificado. Parámetros: Ninguno. Flujo de Ejecución: 1.- El usuario accede a la aplicación web. 2.-El usuario selecciona haciendo click en el menú principal “Gestionar Servicios”. 3.-El usuario selecciona haciendo click en el submenú principal “Buscar Servicio”. 4.- El sistema muestra una tabla con los servicios. 5.- El usuario hace click en el icono eliminar. 6.- El sistema muestra un mensaje de seguridad. 7.- El usuario hace click en aceptar. 8.- El sistema elimina el servicio. Caminos Alternativos: (4)No existen servicios. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (7)El usuario cancela la operación eliminar. Se emite un mensaje informando al usuario y se vuelve al punto de partida. (8)Error en conexión de base de datos no se han podido guardar los datos. Se emite un mensaje informando al usuario y se vuelve al punto de partida. Postcondición: Servicio eliminado. Tabla 36: Descripción caso de uso Eliminar Servicio
138 'value' 'maxlength' 'size' 'style' => 'usuario', => 'usuario', => 'natalia_natalia', => '100', => '50', => 'width:50%', ); echo form_input($data); // Produciría: <input type="text" name="usuario" id="usuario" value="natalia_natalia" maxlength="100" size="50" style="width:50%" /> Si quisiera que su formulario contuviera algún dato adicional, como Javascript, podría pasárselo en una cadena como tercer parámetro: form_password() Esta función es idéntica en todos los aspectos a la función form_input() anterior salvo que permite generar un tipo "password". form_upload() Esta función es idéntica en todos los aspectos a la función form_input() anterior salvo que permite generar un tipo "file", permitiéndole usarla para subir archivos. form_textarea() Esta función es idéntica en todos los aspectos a la función form_input() anterior salvo que permite generar un tipo "textarea". Nota: En lugar de los atributos "maxlength" y "size" del ejemplo anterior, deberá establecer "rows" y "cols". form_dropdown() Le permite crear un campo de lista desplegable estándar. El primer parámetro contendrá el nombre del campo, el segundo parámetro contendrá un array asociativo de opciones y el
139 tercer parámetro contendrá el valor que desee que se seleccione. También puede pasarle un array de varios elementos mediante el tercer parámetro y CodeIgniter creará un selector múltiple. Ejemplo: $js = 'onClick="alguna_funcion()"'; echo form_input('usuario', 'natalia_natalia', $js); $opciones = array( 's' => 'Camisa S', 'm' => 'Camisa M', 'l' => 'Camisa L', 'xl'=> 'Camisa XL', ); $camisas_en_venta = array('s', 'l'); echo form_dropdown('camisas', $opciones, 'l'); // Produciría: select name="camisas"> <option value="s">Camisa S</option> <option value="m">Camisa M</option> <option value="l" selected="selected">Camisa L</option> <option value="xl">Camisa XL</option> </select> echo form_dropdown('camisas', $opciones, $camisas_en_venta); // Produciría: <select name="camisas" multiple="multiple"> <option value="s" selected="selected">Camisa S</option> <option value="m">Camisa M</option> <option value="l" selected="selected">Camisa L</option> <option value="xl">Camisa XL</option> </select>
140 Si quisiera que la apertura <select> contuviera datos adicionales, como un atributo id o JavaScript, puede pasarle una cadena como cuarto parámetro: Si el array pasado como $opciones es multidimensional, form_dropdown() producirá un <optgroup> con la clave del array como rótulo. form_multiselect() Le permite crear un campo de selección múltiple estándar. El primer parámetro contendrá el nombre del campo, el segundo parámetro contendrá un array asociativo de opciones, y el tercer parámetro contendrá el valor o valores que desea que estén seleccionados. El uso de parámetros es idéntico a usar el anterior form_dropdown(), salvo por supuesto que el nombre del campo tendrá que usar la sintaxis del array POST, por ejemplo foo[]. form_fieldset() Le permite generar los campos "fieldset"/"legend". $js = 'id="camisas" onChange="alguna_funcion();"'; echo form_dropdown('camisas', $opciones, 'large', $js); echo form_fieldset('Información de la dirección'); echo "<p>contenido del conjunto de campos aquí</p>\n"; echo form_fieldset_close(); // Produce <fieldset> <legend>Información de la dirección</legend> <p>contenido del conjunto de campos aquí</p> </fieldset> Similar a otras funciones, puede enviar un array asociativo en el segundo parámetro si prefiere establecer atributos adicionales. $attributes = array('id' => 'address_info', 'class' => 'address_info'); echo form_fieldset('Información de la dirección', $attributes); echo "<p>contenido del conjunto de campos aquí</p>\n"; echo form_fieldset_close(); // Produce <fieldset id="address_info" class="address_info">
141 <legend>Información de la dirección</legend> <p>contenido del conjunto de campos aquí</p> </fieldset> form_fieldset_close() Produce una etiqueta </fieldset> de cierre. La única ventaja de usar esta función es que le permite pasar datos a ella, los que se agregarán debajo de la etiqueta. Por ejemplo: form_checkbox() Le permite generar un campo de casilla de verificación. Ejemplo sencillo: El tercer parámetro contiene un booleano TRUE/FALSE para determinar si la caja se debería marcar o no.Similar a las otras funciones de formulario en este helper, también puede pasarle a la función un array de atributos: $string = "</div></div>"; echo fieldset_close($string); // Produciría: </fieldset> </div></div> echo form_checkbox('newsletter', 'accept', TRUE); // Produciría: <input type="checkbox" name="newsletter" value="accept" checked="checked" /> $data = array( 'name' => 'newsletter', 'id' => 'newsletter', 'value' => 'accept', 'checked' => TRUE, 'style' => 'margin:10px', ); echo form_checkbox($data); // Produciría: input type="checkbox" name="newsletter" id="newsletter" value="accept"
142 checked="checked" style="margin:10px" /> Como con otras funciones, si quisiera que la etiqueta contenga datos adicionales, como JavaScript, puede pasarle una cadena como cuarto parámetro: $js = 'onClick="alguna_funcion()"'; echo form_checkbox('newsletter', 'accept', TRUE, $js); Esta función es idéntica en todos los aspectos a la función form_checkbox() anterior, salvo que establece un tipo "radio". form_submit() Le permite generar un botón enviar estándar. Ejemplo sencillo: Similar a otras funciones, puede pasar un array asociativo en el primer parámetro si prefiere establecer sus propios atributos. El tercer parámetro le permite agregar datos adicionales al formulario, como JavaScript. form_label() Le permite generar un <label>. Ejemplo sencillo: Similar a otras funciones, puede pasar un array asociativo en el tercer parámetro si prefiere establecer sus propios atributos. echo form_submit('mi_submit', 'Enviar mensaje'); // Produciría: <input type="submit" name="mi_submit" value="Enviar mensaje" /> echo form_label('Cual es su nombre?', 'username'); // Produciría: <label for="username">Cual es su nombre?</label> $attributes = array( 'class' => 'mi_clase', 'style' => 'color: #000;', ); echo form_label('Cual es su nombre?', 'username', $attributes); // Produciría:
143 <label for="username" class="mi_clase" style="color: #000;">Cual es su nombre? </label> form_reset() Le permite generar un botón estándar de reset. El uso es idéntico a form_submit(). form_button() Le permite generar un elemento de botón estándar. Mínimamente puede pasar el nombre del botón y contenido en el primer y segundo parámetros: echo form_button('nombre','contenido'); // Produciría <button name="nombre" type="button">contenido</button> O puede pasarle un array asociativo conteniendo cualquier dato que desee que su formulario contenga: $data = array( 'name' => 'button', 'id' => 'button', 'value' => 'true', 'type' => 'reset', 'content' => 'Reset' ); echo form_button($data); // Produciría: <button name="button" id="button" value="true" type="reset">Reset</button> Si desea que su formulario contenga algunos datos adicionales, como JavaScript, puede pasarlos como una cadena en el tercer parámetro: form_close() Produce una etiqueta </form> de cierre. La única ventaja de usar esta función es que le permite pasar datos a ella, los que se agregarán debajo de la etiqueta. Por ejemplo: $js = 'onClick="alguna_funcion()"';
144 echo form_button('mi_boton', 'Clic aquí', $js); $string = "</div></div>"; echo form_close($string); // Produciría: </form> </div></div> form_prep() Le permite usar con seguridad HTML y caracteres tales como comillas dentro de elementos de formulario sin romper el formulario. Considere este ejemplo: Como la cadena anterior contiene un conjunto de comillas, ese causará que el formulario se rompa. La función form_prep convierte HTML para que se pueda usar en forma segura: $string = 'Aquí hay una cadena que contiene texto entre "comillas".'; <input type="text" name="mi_formulario" value="$string" /> <input type="text" name="mi_formulario" value="<?php echo form_prep($string); ?>" /> Nota: Si usa alguna de las funciones del Helper Form listadas en esta página los valores del formulario se prepararán automáticamente, por lo que no hay necesidad de llamar a esta función. Úsela solamente si está creando sus propios elementos de formulario. set_value() Le permite establecer el valor de una entrada de formulario o de un textarea. Tiene que suministrar el nombre del campo mediante el primer parámetro de la función. El segundo parámetro (opcional) le permite establecer un valor por defecto para el formulario. Ejemplo: El formulario anterior mostrará "0" cuando se cargue por primera vez. set_select(). Si usa un menú <select>, esta función le permite mostrar el elemento de menú que se seleccionó. El primer parámetro tiene que contener el nombre del menú select, el segundo parámetro tiene que contener el valor de cada elemento y el tercer parámetro (opcional) le permite establecer un elemento por defecto (usar el booleano TRUE/FALSE). Ejemplo: <input type="text" name="cantidad" value="<?php echo set_value('cantidad', '0'); ?>" size="50" /> <select name="mi_select"> <option value="uno" <?php echo set_select('mi_select', 'uno', TRUE); ?> > Uno</option>
145 <option value="dos" <?php echo set_select('mi_select', 'dos'); ?> > Dos</option> <option value="tres" <?php echo set_select('mi_select', 'tres'); ?> > Tres</option> </select> set_checkbox() Le permite mostrar una casilla de verificación en el estado en que se envió. El primer parámetro tiene que contener el nombre de la casilla de verificación, el segundo parámetro tiene que contener su valor y el tercer parámetro (opcional) le permite establecer un elemento por defecto (usar el booleano TRUE/FALSE). Ejemplo: set_radio() Le permite mostrar botones de radio en el estado en que se enviaron. Esta función es idéntica a la función set_checkbox() anterior. <input type="checkbox" name="mi_casilla" value="1" <?php echo set_checkbox('mi_casilla', '1'); ?> /> <input type="checkbox" name="mi_casilla" value="2" <?php echo set_checkbox('mi_casilla', '2'); ?> /> <input type="radio" name="mi_radio" value="1" <?php echo set_radio('mi_radio', '1', TRUE); ?> /> <input type="radio" name="mi_radio" value="2" <?php echo set_radio('mi_radio', '2'); ?> /> 9.3.2.4 Helper Database CodeIgniter viene con una clase de base de datos abstracta muy rápida y completa que soporta tanto las estructuras tradicionales como los patrones Active Record. Las funciones de base de datos ofrecen una sintaxis clara y sencilla. Inicio Rápido: Código de Ejemplo
146 La siguiente página contiene código de ejemplo mostrando como se usa la clase database. Para obtener detalles completos, por favor lea las páginas individuales que describen cada función. Inicializar la Clase Database El siguiente código carga e inicializa la clase database basado en los valores de su configuración: $this->load->database(); Una vez cargada la clase, está lista para usarse como se describe a continuación. Consulta Estándar con Resultados Múltiples (Versión Objetos) $query = $this->db->query('SELECT nombre, titulo, email FROM mi_tabla'); foreach ($query->result() as $row) { echo $row->titulo; echo $row->nombre; echo $row->email; } echo 'Resultados totales: ' . $query->num_rows(); La función result() anterior devuelve un array de objetos. Ejemplo: $row->titulo. Consulta Estándar con Resultados Múltiples (Versión Array) $query = $this->db->query('SELECT nombre, titulo, email FROM mi_tabla'); foreach ($query->result_array() as $row) { echo $row['titulo']; echo $row['nombre']; echo $row['email']; }
147 La función result_array() anterior devuelve un array de índices de array estándar. Ejemplo: $row['titulo']. Comprobar Resultados Si ejecuta consultas que pueden no producir resultados, le aconsejamos probar primero de usar la función num_rows(): $query = $this->db->query("SU CONSULTA"); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { echo $row->titulo; echo $row->nombre; echo $row->cuerpo; } } Consulta Estándar con Resultado Simple La función row() anterior devuelve un objeto. Ejemplo: $row->nombre. Consulta Estándar con Resultado Simple (Versión Array) La función row_array() anterior devuelve un array. Ejemplo: $row['nombre']. Inserción Estándar Consulta Active Record El Patrón Active Record le da una forma simplificada de devolver los datos: $query = $this->db->query('SELECT nombre FROM mi_tabla LIMIT 1'); $row = $query->row(); echo $row->nombre; $query = $this->db->query('SELECT nombre FROM mi_tabla LIMIT 1'); $row = $query->row_array(); echo $row['nombre'];
250 Gestionar Reservas: El usuario gestor podrá en cualquier momento generar reservas de modo manual sobre productos de la empresas (Véase Imagen 103). Imagen 103: Gestión de reservas. Para poder realizar operaciones sobre las reservas de los productos el usuario deberá hacer click en el botón “Reservas” (Véase Imagen 104). Imagen 104: Reservas Seguidamente el usuario puede seleccionar la reserva o crear una nueva (Véase Imagen 105). Imagen 105: Editar reservas.
251 Crear Reserva: Para poder añadir una reserva el usuario deberá hacer clic en el botón “Añadir Reserva” (Véase Imagen 106). Imagen 106: Añadir reserva. Al usuario se le muestra un formulario de creación de reservas de un producto. Se deberán todos los campos del formulario para crear la reserva (Véase Imagen 107). Imagen 107: Formulario de añadir reserva. Al usuario se le muestra un listado de todas las reservas disponibles de la empresa. El usuario puede seleccionar una reserva y realizar una serie de operaciones (Véase Imagen 108): Imagen 108: Acciones de editar reservas. Editar Reserva: El usuario podrá añadir o modificar información de la reserva mediante un formulario (Véase Imagen 109).
252 Imagen 109: Formulario de editar reserva. Eliminar Reserva: El usuario puede eliminar la reserva seleccionada. El sistema le muestra un mensaje de alerta de seguridad y el usuario podrá decidir si eliminar la reserva o cancelar la operación (Véase Imagen 110). Imagen 110: Eliminar reserva.
253 Visualizar Reserva: El usuario podrá visualizar un listado de tarifas asociadas al producto (Véase Imagen 111). Imagen 111: Visualizar reserva. Gestionar Comentarios: El usuario tiene la opción de ocultar o mostrar comentarios en los productos de la página web de la empresa. Al usuario se le muestra una lista de los productos disponibles (Véase Imagen 112). Imagen 112: Gestionar comentarios.
254 El usuario tiene la posibilidad modificar la visualización de comentarios (Véase Imagen 113). Imagen 113: Editar comentarios. Al usuario se le muestra un listado de los comentarios del producto (Véase Imagen 114). Imagen 114: Editar comentarios de producto. El usuario puede modificar el estado de visualización del comentario seleccionado (Véase Imagen 115). Imagen 115: Estado del comentario.
255 Gestionar Web: El usuario podrá configurar el aspecto visual de las páginas web de la empresa (Veáse Imagen 166). Imagen 116: Editor web. El usuario gestor podrá realizar distintas acciones en el editor: Acciones de la página web principal (Véase Imagen 117). Imagen 117: Menu de acciones de página principal. Guardar web: El usuario podrá guardar los cambios realizados. Hasta que el usuario no haga clic en guardar la página temporal no aplicará los cambios a la página web original. Reiniciar: El usuario puede reiniciar a la página web original en cualquier momento y deshacer los cambios. Editar Imágenes de Slider: El usuario puede editar las imágenes del slider principal( Véase Imagen 118).
256 Imagen 118: Galería de imágenes del Slider principal. Social Media: El usuario puede crear, editar, visualizar y eliminar datos de enlaces a las redes sociales más importantes (Véase Imagen 119). Imagen 119: Social media. Editar página principal: El usuario puede editar los datos de la página principal mediante un formulario (Véase Imagen 120).
257 Imagen 120: Formulario de edición de página principal. Página de información: El usuario podrá editar la página de información mediante un formulario (Véase Imagen 121). Imagen 121: Edición web de página de información.
258 Página de Servicios: El usuario podrá editar la página de servicios mediante un formulario (Véase Imagen 122). Imagen 122: Edición web de página de servicios. Registro de Eventos: Al usuario se le muestra un listado de todas las actividades realizadas por la empresa en la aplicación por todos los usuarios del sistema. Si lo desea el usuario puede filtrar la información (Véase Imagen 123). Imagen 123: Visor de actividades.
259 El usuario puede la ver información ampliada de los registros (Véase Imagen 124). Imagen 124: Ver registro de actividad.
266 9.6 Anexo VI: Indice de figuras completo Figura 1: Modelo de dominio de usuario administrador ............................................................ 28 Figura 2: Modelo de dominido de usuario cliente ...................................................................... 29 Figura 3: Modelo de dominio de usuario gestor ......................................................................... 30 Figura 4: Diagrama entidad relación enatural_db. ..................................................................... 32 Figura 5: Diagrama entidad relación db_statistics ...................................................................... 33 Figura 6: Modelo relacional enatural_db. ................................................................................... 35 Figura 7: Modelo relacional db_statistics ................................................................................... 36 Figura 8: Actores ......................................................................................................................... 38 Figura 9: Caso de uso Registrar ................................................................................................... 42 Figura 10: Casos de uso rol cliente .............................................................................................. 42 Figura 11: Caso de uso Gestionar Comentarios .......................................................................... 43 Figura 12: Caso de uso Visualizar Registro .................................................................................. 43 Figura 13: Caso de uso Gestionar Producto ................................................................................ 44 Figura 14: Caso de uso Gestionar Categoria ............................................................................... 45 Figura 15: Caso de uso Gestionar Servicio .................................................................................. 46 Figura 16: Caso de uso Gestionar Usuarios ................................................................................. 46 Figura 17: Prototipo de interfaz de usuario gestor ..................................................................... 48 Figura 18: Prototipo de interfaz de producto ............................................................................. 49 Figura 19: Prototipo de interfaz de Editor Web .......................................................................... 50 Figura 20: Prototipo de página web principal ............................................................................. 51 Figura 21: Diagrama de clases Categorias ................................................................................... 63 Figura 22: Diagrama de clases Home .......................................................................................... 64 Figura 23: Diagrama de clases Registro de eventos .................................................................... 65 Figura 24: Diagrama de clases comentarios ................................................................................ 67 Figura 25: Diagrama de clases productos ................................................................................... 68 Figura 26: Diagrama de clases servicios ...................................................................................... 69 Figura 27: Diagrama de clases sites ............................................................................................ 70 Figura 28: Diagrama de clases editor web .................................................................................. 71 Figura 29: Diagrama de clases webeditorinfo ............................................................................. 72 Figura 30: Diagrama de clases webeditorservices ...................................................................... 73 Figura 31: Diagrama de clases website ....................................................................................... 74 Figura 32: Diagrama de clases tarifa ........................................................................................... 75 Figura 33: Diagrama de clases login ............................................................................................ 76 Figura 34: Diagrama de clases reserva ........................................................................................ 77 Figura 35: Diagrama de clases saveindex .................................................................................... 78 Figura 36: Diagrama de clases usuario ........................................................................................ 79 Figura 37: Diagrama de clases Paypal ......................................................................................... 80 Figura 38: Diagrama de clases guardar servicio .......................................................................... 81 Figura 39: Diagrama de clases referencias .................................................................................. 82 Figura 40: Diagrama de clases saveinfo ...................................................................................... 83 Figura 41: Diagrama de clases login ............................................................................................ 84 Figura 42: Diagrama de clases login2 .......................................................................................... 85
267 Figura 43: Diagrama de secuencia crear usuario ........................................................................ 86 Figura 44: Diagrama de secuencia crear servicio ........................................................................ 87 Figura 45: Diagrama de secuencia crear reserva ........................................................................ 87 Figura 46: Diagrama de secuencia insertar comentario ............................................................. 88 Figura 47: Diagrama de secuencia comprar producto ................................................................ 89
268 9.7 Anexo VII: Indice de tablas completo Tabla 1: Planificación y Temporización ....................................................................................... 27 Tabla 2: Listado de actores y roles .............................................................................................. 39 Tabla 3: Listado de actores y sus objetivos ................................................................................. 41 Tabla 4: Lista de Casos de uso ..................................................................................................... 47 Tabla 5: Descripción caso de uso Registrarse ........................................................................... 102 Tabla 6: Descripción caso de uso Visualizar Web ..................................................................... 103 Tabla 7: Descripción caso de uso Visualizar Producto .............................................................. 103 Tabla 8: Descripción caso de uso Iniciar Sesión ........................................................................ 104 Tabla 9: Descripción caso de uso Cerrar Sesión ........................................................................ 104 Tabla 10: Descripción caso de uso Realizar Compra ................................................................. 105 Tabla 11: Descripción caso de uso Realizar Reserva ................................................................. 106 Tabla 12: Descripción caso de uso Insertar Comentario ........................................................... 107 Tabla 13: Descripción caso de uso Visualizar Comentarios ...................................................... 108 Tabla 14: Descripción caso de uso Visualizar Registro .............................................................. 109 Tabla 15: Descripción caso de uso Crear Tarifa ........................................................................ 110 Tabla 16: Descripción caso de uso Editar Tarifa ........................................................................ 111 Tabla 17: Descripción caso de uso Eliminar Tarifa .................................................................... 112 Tabla 18: Descripción caso de uso Buscar Tarifa ...................................................................... 113 Tabla 19: Descripción caso de uso Crear Reserva ..................................................................... 114 Tabla 20: Descripción caso de uso Eliminar Reserva ................................................................ 115 Tabla 21: Descripción caso de uso Buscar Reserva ................................................................... 116 Tabla 22: Descripción caso de uso Crear Producto ................................................................... 117 Tabla 23: Descripción caso de uso Editar Producto .................................................................. 118 Tabla 24: Descripción caso de uso Eliminar Producto .............................................................. 119 Tabla 25: Descripción caso de uso Buscar Producto ................................................................. 120 Tabla 26: Descripción caso de uso Crear Categoría .................................................................. 121 Tabla 27: Descripción caso de uso Editar Categoría ................................................................. 122 Tabla 28: Descripción caso de uso Eliminar Categoría .............................................................. 123 Tabla 29: Descripción caso de uso Buscar Categoría ................................................................ 124 Tabla 30: Descripción caso de uso Crear Usuario ..................................................................... 125 Tabla 31: Descripción caso de uso Editar Usuario .................................................................... 126 Tabla 32: Descripción caso de uso Eliminar Usuario ................................................................. 127 Tabla 33: Descripción caso de uso Buscar Usuario ................................................................... 128 Tabla 34: Descripción caso de uso Crear Servicio ..................................................................... 129 Tabla 35: Descripción caso de uso Editar Servicio .................................................................... 130 Tabla 36: Descripción caso de uso Eliminar Servicio ................................................................. 131 Tabla 37: Descripción caso de uso Buscar Servicio ................................................................... 132
269 10 Bibliografía Luke Welling, Laura Thomson. “Desarrollo web con PHP y MySQL”. Anaya Multimedia. Matt Doyle. “PHP Práctico”. Anaya Multimedia. Julie C. Meloni. “HTML5, CSS3 y JavaScript”. Anaya Multimedia. David Flanagan, “JQuery”. O’Really. Douglas Crockford. “JavaScript The Good Parts”. O’Really. Zachary Kessin. “HTML5 Applications”.O’Really. PHP: http://www.php.net Grocery Crud: http://www.grocerycrud.com/ Codeigniter: http://ellislab.com/codeigniter/user-guide/ Image Moo: http://www.matmoo.com/digital-dribble/codeigniter/image_moo/ Image Crud: http://www.grocerycrud.com/image-crud Ajax: http://www.w3schools.com/Ajax/ JQuery: http://api.jquery.com/ JQuery UI: http://jqueryui.com/ Bootstrap: http://getbootstrap.com/2.3.2/index.html http://fortawesome.github.io/Font-Awesome/ Javascript: http://www.w3schools.com/js/DEFAULT.asp
270 http://www.w3.org/standards/webdesign/script.html Paypal: https://developer.paypal.com/webapps/developer/applications/accounts JRating: http://demos.myjqueryplugins.com/jrating/ Email Codeigniter: http://www.renato.16mb.com/tutorial-codeigniter-class-e-mail HTML5: http://www.w3.org/standards/webdesign/htmlcss.html http://www.w3schools.com/html/html5_intro.asp CSS: http://www.w3schools.com/css/css3_intro.asp