ebook img

109347.pdf (5.186Mb) PDF

200 Pages·2015·5.19 MB·Spanish
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview 109347.pdf (5.186Mb)

Rediseño de la Arquitectura del Software y Reimplementación del Marketplace Uvinum Memoria del TFG Alumno: Javier Ferrer Ponente FIB-UPC: Cristina Gómez Director empresa: Pablo Ros 26 de octubre de 2015 Agradecimientos Este trabajo representa una de las mejores oportunidades que se me han presentado a nivel de reto profesional. Refleja todo lo que he ido incubando durante estos años gracias a lo que me han aportado todas las personas que han contribuido a mi conocimiento y forma de entender esta profesión. Es por esto por lo que lo he disfrutado tanto. Simplemente me gustaría dar las gracias y hacer explícito mi respeto a todas las personas que me han permitido descubrir este mundo tal y como lo he hecho. Por fin tengo algo en lo que materializar el agradecimiento por todos estos años. Va por vosotros. 2 Tabla de contenido AGRADECIMIENTOS ........................................... 2 RESUMEN / ABSTRACT ..................................... 10 1. INTRODUCCIÓN ...................................... 12 1.1. El TFG ............................................................................ 13 1.2. Uvinum .......................................................................... 14 1.3. El equipo ....................................................................... 14 2. DESCRIPCIÓN GENERAL .......................... 16 2.1. Conseguir un sistema más mantenible ........................... 16 2.2. Permitir la correcta implementación de test ................... 20 2.3. Automatización y modernización de sistemas ................ 23 2.4. Etapas del proyecto ........................................................ 24 2.4.1. Estudio de los requisitos de Uvinum ....................... 24 2.4.2. Evaluación de la arquitectura actual ........................ 25 2.4.3. Estado del arte ........................................................ 26 2.4.4. Propuesta de rediseño ............................................ 26 2.4.5. Evaluación rediseño propuesto ................................ 27 2.4.6. Plan de formación ................................................... 27 3. METODOLOGÍA Y PLANIFICACIÓN .......... 28 3.1. Metodología ................................................................... 28 3.2. Calendario ..................................................................... 30 3 3.3. Recursos ........................................................................ 30 3.3.1. Personal .................................................................. 30 3.3.2. Materiales ............................................................... 31 3.4. Descripción de las tareas ............................................... 32 3.4.1. Concienciación de principios SOLID ........................ 32 3.4.2. Detectar Code Smells y aplicar Refactorings ............ 33 3.4.3. DDD táctico ............................................................ 33 3.4.4. Código testeable ..................................................... 33 3.4.5. Modernización de sistemas y reducción de fricción en el desarrollo 34 3.4.6. Análisis estático de calidad del software ................. 34 3.4.7. Deploy orientado a Continuous Deployment ........... 34 3.4.8. Transferencia de conocimiento dentro del equipo ... 35 3.5. Posibles desviaciones ..................................................... 35 3.6. Diagrama de Gantt ......................................................... 35 3.6.1. Concienciación de principios SOLID ........................ 36 3.6.2. Detectar Code Smells y aplicar Refactorings ............ 36 3.6.3. DDD táctico ............................................................ 37 3.6.4. Código testeable ..................................................... 37 3.6.5. Modernización de sistemas y reducción de fricción en el desarrollo 37 3.6.6. Análisis estático de calidad del software ................. 37 3.6.7. Sistema de Deploy orientado a Continuous Deployment 38 3.6.8. Gantt global ............................................................ 38 4. COSTES ................................................... 39 4.1. Consideraciones iniciales ............................................... 39 4.2. Identificación y estimación de costes ............................. 39 4.2.1. Costes directos ....................................................... 39 4.2.2. Costes indirectos .................................................... 41 4 4.2.3. Contingencia .......................................................... 42 4.2.4. Imprevistos ............................................................. 42 4.2.5. Presupuesto final .................................................... 43 4.3. Control de gestión ......................................................... 43 5. ESTUDIO DE LOS REQUISITOS DE UVINUM 45 5.1. Requisitos funcionales ................................................... 45 5.1.1. Manager ................................................................. 45 5.1.2. Manager para afiliados ............................................ 51 5.1.3. Uvinum ................................................................... 55 5.2. Requisitos no funcionales .............................................. 64 5.2.1. Facilidad de descubrimiento ................................... 64 5.2.2. Requisito de calidad de reusabilidad ....................... 66 6. EVALUACIÓN ARQUITECTURA ACTUAL .... 67 6.1. Arquitectura física ......................................................... 67 6.1.1. Peticiones web ........................................................ 68 6.1.2. Peticiones a estáticos .............................................. 70 6.2. Arquitectura lógica ........................................................ 72 6.2.1. Proyectos de la aplicación ....................................... 72 6.2.2. Separación en capas MVC ....................................... 73 6.2.3. Principales problemas ............................................. 84 7. ESTADO DEL ARTE ................................... 92 7.1. Diseño ........................................................................... 92 7.1.1. Principios SOLID ...................................................... 93 7.1.2. Code Smells y Refactorings ..................................... 97 7.1.3. Composition over Inheritance ................................. 98 7.1.4. Tell don’t ask .......................................................... 99 5 7.1.5. Contenedor de inyección de dependencias ............ 100 7.2. DDD táctico ................................................................. 101 7.2.1. Arquitectura Hexagonal ........................................ 102 7.2.2. Building Blocks ..................................................... 108 7.2.3. Eventos de dominio .............................................. 114 7.2.4. Read Model ........................................................... 116 7.2.5. Bounded Contexts ................................................ 117 7.3. Cómo soluciona los principales problemas ................... 118 7.3.1. Objetivos a alcanzar (capítulo 2) ........................... 119 7.3.2. Principales problemas de la arquitectura de software actual (capítulo 6) ..................................................................... 119 7.3.3. Estado del arte analizado (capítulo 7) .................... 119 7.3.4. Relación de problemas y estado del arte ............... 120 8. PRINCIPIOS SOLID ............................... 122 8.1. Propuesta de rediseño ................................................. 123 8.1.1. MediaUploader y MediaPurguer ............................. 123 8.2. Evaluación de la propuesta ........................................... 128 8.3. Formación ................................................................... 129 9. CODE SMELLS Y REFACTORINGS ........... 130 9.1. Propuesta de rediseño ................................................. 130 9.2. Evaluación de la propuesta ........................................... 134 9.3. Formación ................................................................... 134 10. DDD TÁCTICO ..................................... 136 10.1. Propuesta de rediseño ................................................. 136 10.1.1. Arquitectura hexagonal ....................................... 136 10.1.2. Building Blocks ................................................... 145 10.1.3. Read Model ......................................................... 149 6 10.1.4. Eventos de dominio ............................................ 156 10.2. Evaluación de la propuesta ........................................... 157 10.2.1. Beneficios obtenidos ........................................... 157 10.2.2. Desviación de tiempos ........................................ 158 10.3. Formación ................................................................... 159 11. CÓDIGO TESTEABLE ............................ 161 11.1. Propuesta de rediseño ................................................. 161 11.2. Evaluación de la propuesta ........................................... 162 11.3. Formación ................................................................... 162 12. GESTIÓN DEL PROYECTO .................... 164 12.1. Desviaciones producidas .............................................. 164 12.2. Coordinación del equipo .............................................. 165 12.3. Sostenibilidad y compromiso social ............................. 165 12.3.1. Económicamente ................................................. 166 12.3.2. Intangibles .......................................................... 167 12.3.3. Conclusión .......................................................... 167 12.4. Social ........................................................................... 168 12.5. Ambiental .................................................................... 168 13. CONCLUSIONES .................................. 169 13.1. Lecciones aprendidas ................................................... 169 13.1.1. Gestión de equipos ............................................. 169 13.1.2. Planificación ....................................................... 170 13.1.3. Experiencia extrapolable ..................................... 170 13.1.4. A nivel técnico .................................................... 171 13.2. Resultado obtenido ...................................................... 172 13.2.1. Mejora continua .................................................. 172 13.2.2. Testeabilidad ...................................................... 172 13.2.3. Conclusión final .................................................. 173 7 13.3. Trabajo futuro ............................................................. 174 13.4. Justificación de competencias ...................................... 175 13.4.1. Asignaturas relacionadas .................................... 175 13.4.2. Adecuación a la especialidad de ingeniería del software 177 13.4.3. Competencias técnicas a cubrir ........................... 178 14. REFERENCIAS ..................................... 180 15. TABLA DE FIGURAS ............................. 195 8 9 Resumen / Abstract Este es un Trabajo Final de Grado (TFG) llevado a cabo en una empresa real, Verticomm Network S.L. El proyecto consiste en el rediseño de la arquitectura de software de Uvinum, el software desarrollado por la empresa. La finalidad de este proyecto es obtener una arquitectura de Uvinum con un menor coste de mantenimiento, una mayor modularidad, y que permita una correcta implementación de test. Para conseguir estos objetivos, el rediseño consistirá en la evaluación y transformación del sistema de software, pasando del estudio del sistema actual (altamente acoplado) a la definición de una arquitectura basada en la Arquitectura Hexagonal y los principios de diseño de software SOLID. El éxito del proyecto se supedita a dos factores principales: Que la nueva arquitectura propuesta sea viable de llevar a cabo en el contexto de la empresa, y que nadie del equipo técnico se quede atrás en el proceso de transformación. -- This is a Degree Final Project accomplished in a real company, Verticomm Network S.L. The project consists in redesigning the software architecture of "Uvinum", the system developed by the company. The purpose of this project is to get an architecture with a lower maintenance cost, a higher modularity and the possibility of a proper tests implementation. In order to achieve these goals, the rethinking process will include an analysis and transformation of the current system. This process will go from the study of the current system status (highly coupled) to the definition of an architecture based on the Hexagonal Architecture and the SOLID principles. 10

Description:
conceptos del Diseño Dirigido por el Dominio (Domain-Driven Design,. DDD [17]) que hemos decidido aplicar en nuestra nueva arquitectura. 2.4.4.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.