Propuesta framework de herramientas para el desarrollo de ...

53 downloads 18124 Views 594KB Size Report
Implantación de un entorno de desarrollo, pre-producción y producción automatizados. Definición de métricas de calidad del software, buenas prácticas de ...
Propuesta framework de herramientas para el desarrollo de aplicaciones en un modelo colaborativo Ricardo Borillo Domenech [email protected]

Índice 

Introducción y objetivos



Arquitectura básica del sistema



Entorno de desarrollo



Conclusiones

2

Introducción y objetivos 

Conclusiones derivadas de la experiencia de la Universitat Jaume I: 

Modelo inicial centrado en dar servicio al usuario



La evolución de estos últimos 20 años supone un cambio



Autocrítica y evolución hacia un modelo más ”profesional”



La calidad y la reutilización son los nuevos objetivos



Motor del cambio para el rediseño de las TI

3

Introducción y objetivos Para conseguir todo esto es necesario: 

La definición de una nueva arquitectura



Un nuevo framework tecnológico que guie el desarrollo



Cambio de paradigma. Adopción de metodologías ágiles







Evaluación y adopción de herramientas abiertas que cubran las nuevas necesidades que aparecerán Implantación de un entorno de desarrollo, pre-producción y producción automatizados Definición de métricas de calidad del software, buenas prácticas de desarrollo y un entorno que garantize la integración y mejora contínua 4

Índice 

Introducción y objetivos



Arquitectura básica del sistema



Entorno de desarrollo



Conclusiones

5

Arquitectura básica del sistema

6

Arquitectura básica del sistema Aspectos a tener en cuenta a la hora de definir la arquitectura del sistema: 

Interoperabilidad. Tanto a nivel de formatos como de comunicación entre aplicaciones.



Cumplimiento de estándares.



Garantía de unicidad y no replicación de datos.



Garantizar una excelente experiencia de usuario.



Aplicaciones para múltiples dispositivos y despliegues.



Evitar ser dependientes de una única tecnología



Tender a soluciones sencilla y escalables 7

Arquitectura básica del sistema Simplicidad

8

Arquitectura básica del sistema Arquitecturas ligeras orientadas a servicios: 

Capa ligera de comunicación REST



Soporte para múltiples formatos: JSON, ATOM, OData, RDF



Facilita la integración desde cualquier origen

9

Arquitectura básica del sistema Este tipo de arquitectura permite: 

Volcar el conocimiento del negocio en la capa del modelo



Exponer este modelo en forma de API orientada a servicios



Cada integrador puede desarrollar un UI alternativo



Creación de interfaces altamente usables: Cliente rico

10

Arquitectura básica del sistema Buenas prácticas en la parte del servidor: Gestión integral de la configuración



Despliegue automatizado



Patrones de diseño



Aplicaciones modulares, independientes y distribuibles



Testing de aplicaciones a todos los niveles



Frameworks como Spring pueden ayudar a reducir la complejidad de este tipo de desarrollos: 

11

Arquitectura básica del sistema Buenas prácticas en la parte del cliente: Buscar una mejor experiencia de usuario.



Homogeneizar interfaces mediante unas pautas básicas de diseño y usabilidad



Generar aplicaciones más dinámicas y flexibles



12

Arquitectura básica del sistema Gran cantidad de componentes gráficos de gran potencia



Soporte independiente del navegador



Integración con REST



Diponibilidad de herramientas de diseño visual



Soporte para internacionalización



13

Índice 

Introducción y objetivos



Arquitectura básica del sistema



Entorno de desarrollo



Conclusiones

14

Entorno de desarrollo Elementos del ecosistema de desarrollo ágil: 

Gestión de proyectos e incidencias



Herramientas de documentación y gestión del conocimiento



Sistema de control de versiones



Herramientas de construcción



Integración contínua



Repositorio de artefactos



Herramientas de análisis estático del código



IDE para el desarrollo y generadores de código 15

Entorno de desarrollo Gestión de proyectos e incidencias Bugs, tareas y mejoras.



Definición de los productos.



Versionado de los distintos productos.



Planificación de iteraciones y soporte a las metodologías empleadas.



Propuesta: Atlassian JIRA



16

Entorno de desarrollo Sistema de control de versiones Repositorio unificado.



Versionado de los proyectos.



Herramientas de acceso, gestión, revisión, comparación y trazabilidad de cambios. 

Propuesta: Subversion / Git



17

Entorno de desarrollo Herramientas de construcción Evitar proceso manual para evitar errores.



Facilitar el despliegue por cualquiera.



Mantener la independencia del IDE.



Gestionar de forma automática las dependencias.



Integración de herramientas auxiliares (despliegue, documentación, análisis estático del código, tests unitarios, etc).



Propuesta: Maven



18

Entorno de desarrollo Integración contínua 

Requisitos:

Construcción, revisión e integración contínua de los módulos desarrollados.



Independiente del lenguaje de programación.



Existencia de plugins que permitan adaptarse a cualquier requisito de despliegue.



Punto único de generación de artefactos, documentación, informes de test, despliegues de pre-producción, etc.





Herramienta propuesta:

Jenkins: http://jenkins-ci.org/



19

Entorno de desarrollo Resumen de herramientas seleccionadas: 

JIRA: Gestión de proyectos e incidencias.



Confluence: Documentación y gestión del conocimiento.



Subversion: Control de versiones.



Maven: Herramienta de construcción.



Jenkins: Herramienta de integración continua.



jUnit: Pruebas unitarias.



Nexus: Repositorio de artefactos.



Sonar: Análisis estático del código.



ExtJS Designer: Creación de interfaces de forma visual.



Eclipse (SpringSource Tool Suite): Herramienta integradora. 20

Índice 

Introducción y objetivos



Metodología



Arquitectura básica del sistema



Entorno de desarrollo



Conclusiones

21

Conclusiones 







Entorno altamente integrado y cohesionado Ecosistema propuesto basado en herramientas de alta adopción en la industria Todos los productos son gratuitos para proyectos de código abierto Modelo probado: Colaboración UJI – Ministerio de Presidencia para el cliente @firma

22

Conclusiones 

Aunque el ecosistema de herramientas puede ser el inicio, quedan muchos interrogantes: 

¿Dónde y cómo coordinar el trabajo en la forja?



¿Bajo qué licencias publicar los trabajos?







Interoperabiliad ¿Qué formatos y estándares utilizar? ¿Es posible hacer uso de PaaS? Cloud Foundry, Amazon Elastic Beanstalk, DotCloud, Heroku, … ¿Podría dar servicios en este entorno RedIris? 23

Gracias

¿Preguntas?

24