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