Universidad de Valladolid Escuela Técnica de Ingeniería Informática de Valladolid GradodeIngenieroInformáticoconmenciónenIngenieríadelSoftware TRABAJODEFINDEGRADO BUSY: UnaplataformaparalagestióndereservasporhoraenPyMes Autor:JuanCarlosGonzálezCabrero Tutora:YaniaCrespoCarvajal 15dejuliode2016 Resumen Elobjetivodeesteproyectoconsisteeneldesarrollodeunaplataformasoftwareenfocada a pequeñas y medianas empresas (PyMEs), para llevar a cabo la organización de servicios ofrecidosalosclientes. buSy es una herramienta cómoda y sencilla para la gestión de reservas y control de horariosconunámbitodenegociogeneralista,yaquesuenfoqueglobalpermitelautilización deestaaplicaciónaunaampliagamadecategoríasdeempresa. Se trata de un proyecto web desarrollado en Java y HTML5, utilizando el framework Springcomobasedelproyecto. Siguiendo la filosofía del desarrollo ágil, se han aplicado los principios TDD y BDD desde el principio del proyecto. Gracias a ello, la implementación ha sido guiada a través delaspruebasquedefinenelcomportamientodecadafuncionalidad,loquehafacilitadola determinacióndelámbitooscopedecadahistoriadeusuariodelproyecto. Sehanaplicadoademásvariospatronesdediseñosobrelaarquitecturasoftware,como sonlaprogramaciónencapasyelpatrónmodelo-vista-controlador. «A la memoria de mi padre, un hombre fuerte y emprendedor, cuyos sueños se vieron truncadosporunahorribleenfermedad.» Agradecimientos Ami familia,por aguantarmeen mismomentos deestrés, yporque sinellos nohabría podidollegarhastaaquí. A mi tutora Yania, por su entusiasmo e implicación con los alumnos, siendo así una profesoraejemplar. A mis amigos y compañeros de carrera, con los que he aprendido mucho, tanto como ingenieroinformáticocomopersona. AminoviaBeatriz,porayudarmeyapoyarmeenlarealizacióndeesteproyecto. Y por último, a todos aquellos que me han animado y han creído en mí en esta etapa final. Gracias Índice general 1. Introducción 1 1.1. Objetivosdelproyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Contextodelaaplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Planificaciónygestióndelproyecto 5 2.1. PaaS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Behaviour-Driven-Development . . . . . . . . . . . . . . . . . . . . . . . 7 2.3. Test-Driven-Development . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4. EstimaciónbasadaenSprints . . . . . . . . . . . . . . . . . . . . . . . . . 8 3. Herramientasytecnologíasutilizadas 11 3.1. Gestióndelproyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.1. PivotalTracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.2. Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.1.3. Github . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.1.4. Heroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2. Diseñoydesarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 i ii ÍNDICEGENERAL 3.2.1. Draw.io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.2. BalsamiqMockups . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.3. Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.4. Atom.io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.5. ShareLaTeX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3. Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.1. JUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.2. Mockito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.3. DBUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3.4. SeleniumWebDriver . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3.5. Cucumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4. Back-End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.1. Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.2. Spring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.3. JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.4. PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.5. Front-End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.5.1. BootstrapCSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.5.2. Thymeleaf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.5.3. JQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4. Arquitecturabasedelaaplicación 23 4.1. Visióngeneral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2. SpringFramework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 ÍNDICEGENERAL iii 4.3. PatrónMVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.4. Construccióndelentornodedesarrollo . . . . . . . . . . . . . . . . . . . . 27 5. DiseñodeUserStories 31 5.1. HistoriasdeusuariosobreGestióndecuentas . . . . . . . . . . . . . . . . 31 5.2. HistoriasdeusuariosobreGestióndeempresa . . . . . . . . . . . . . . . 35 5.3. HistoriasdeusuariorelacionadasconReservadeservicios . . . . . . . . . 41 5.4. HistoriasdeusuariorelacionadasconAdministración . . . . . . . . . . . . 42 6. DiseñodelaInterfazgráfica 47 6.1. InterfazdelaGestióndecuentas . . . . . . . . . . . . . . . . . . . . . . . 47 6.2. InterfazdelaGestióndeempresa . . . . . . . . . . . . . . . . . . . . . . . 49 6.3. InterfazparalazonadeReservadeservicios . . . . . . . . . . . . . . . . . 50 6.4. InterfazparalazonadeAdministración . . . . . . . . . . . . . . . . . . . 55 7. DiseñoFinal 57 7.1. Capadepresentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.1.1. Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.1.2. Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 7.1.3. Controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 7.2. Capadelógicadenegocio . . . . . . . . . . . . . . . . . . . . . . . . . . 59 7.3. Capadepersistenciadedatos . . . . . . . . . . . . . . . . . . . . . . . . . 60 7.4. Visiónglobal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 7.5. Modelosdinámicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 7.5.1. Identificacióndeusuario . . . . . . . . . . . . . . . . . . . . . . . 62 iv ÍNDICEGENERAL 8. Arquitecturadelosdatos 69 8.1. Restriccionesdelabasededatos . . . . . . . . . . . . . . . . . . . . . . . 69 8.1.1. Tablaperson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8.1.2. Tablaaddress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.1.3. Tablacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.1.4. Tablacountry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.1.5. Tablaverification . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.1.6. Tablacategory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.1.7. Tablacompany . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.1.8. Tablabranch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 8.1.9. Tablarole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 8.1.10. Tablanotification . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 8.1.11. Tablaservice_type . . . . . . . . . . . . . . . . . . . . . . . . . . 73 8.1.12. Tablaservice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 8.1.13. Tablatime_slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 8.1.14. Tablaschedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 8.1.15. Tablabooking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 8.2. Modeloentidad-relación . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 9. Pruebasdecalidaddesoftware 77 9.1. Pruebasunitarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.2. Pruebasdeintegración . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 10.Seguimiento 83
Description: