Академический Документы
Профессиональный Документы
Культура Документы
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Agenda
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Introducción (I)
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Control del Código Fuente (I)
> Problemas
– ¿Donde almaceno el código fuente?
– ¿Cómo unificar el código de varios programadores?
– ¿Qué ocurre cuando varias personas modifican los mismos ficheros?
– ¿Cómo puedo gestionar diferentes versiones del software?
– Ha ocurrido un desastre... ¿puedo recuperar una versión concreta?
– ¿Puedo evitar accesos no autorizados?
SUBVERSION
> Características
– Modelo basado en cliente/servidor
– Soporta diferentes protocolos de acceso: SVN, SVN+SSH,
HTTP, HTTPS y FILE
– Existen distintos clientes: TortoiseSVN, Subclipse, Subversive
> Utilidades
– Descarga del proyecto (checkout)
– Actualización del proyecto (update)
– Actualización del repositorio (commit)
– Comparar versiones (diff)
– Fusionar cambios (merge)
– Limpiar (cleanup)
– ...
Control del Código Fuente (III)
Control del Código Fuente (IV)
Control del Código Fuente (V)
Agenda
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Gestión del Proyecto (I)
> Problemas
– ¿Como saber quien es el responsable de cada tarea?
– ¿Como controlar los “incurridos” del proyecto?
– ¿Cómo llevar el seguimiento de las tareas?
– ¿Como controlar las incidencias del proyecto (en producción)?
– ¿Que características y que parches se han incluido en la versión x.y.z del
software?
– ¿Como planificar los trabajos?
REDMINE
> Características
– Aplicación web construida con RoR
– Gestión multiproyecto y con múltiples versiones
– Interfaz muy facil e intuitiva
– Páginas de usuarios personalizadas y envío de emails
> Utilidades
– Planificación (básica) mediante diagramas de Gantt
– Gestión de tareas: estado, responsable, “target version”, fechas de
inicio/fin, porcentaje de avance, incurridos, etc.
– Seguimiento de tareas mediante consultas personalizadas
– Roadmap del proyecto
– Integración con SCM
– Noticias, Foros, Wikis
– ...
Gestión del Proyecto (III)
Gestión del Proyecto (IV)
Gestión del Proyecto (V)
Gestión del Proyecto (VI)
Agenda
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Construcción del Producto (I)
> Problemas
– ¿Cómo generar la estructura de directorios del proyecto?
– ¿Como gestionar la compilación y el empaquetado?
– ¿Cómo gestionar dependencias con librerías de terceros?
– ¿Cómo introducir meta-información del proyecto en el código?
– ¿Como hacer fácilmente un sitio web del proyecto?
APACHE MAVEN
> Características
– Estándar de facto en la construcción de proyectos JEE
– Metainformación en Project Object Model (POM.XML)
– Convención sobre configuración (estructura de directorios, versionado,cv)
– Ciclo de vida basado en fases y goals (acciones)
– Extensible mediante plugins
– Herramienta de consola, aunque existen plugins para IDEs (m2Eclipse, IAM,
mavenide)
– Inconvenientes: 1. Curva de aprendizaje. 2. Al ser un modelo nuevo, los
proyectos anteriores debe “renovarse”
> Utilidades
– Descarga automática de dependencias (evitar el jar-hell)
– Maven Site: Generación de un sitio web con información del proyecto,
changelogs, javadocs, fuentes, resultados de las pruebas, etc.
– Empaquetados condicionados al entorno
– Ejecución de tests previos a despliegues
– ...
Construcción del Producto (III)
Construcción del Producto (IV)
Construcción del Producto (V)
Construcción del Producto (VI)
Construcción del Producto (VII)
Agenda
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Gestión del Conocimiento (I)
> Problemas
– ¿Cómo redactar de forma colaborativa documentos de
trabajo?
– ¿Cómo proporcionar ayudas para la solución de problemas?
– ¿Cómo plasmar el conocimiento?
– ¿Cómo acceder rápidamente al conocimiento?
MEDIAWIKI
> Características
– CMS colaborativo construido en PHP
– Edición basada en artículos e hiperenlaces
– Histórico de versiones y búsquedas “fulltext” sobre los artículos
– Soporta multitud de plugins (extensiones) para mejorar el sistema
> Utilidades
– Definir modelos de arquitecturas y frameworks de desarrollo.
– Catálogo de librerías
– Documentación de proyectos (requisitos, análisis)
– FAQs y TIPs
– ...
Gestión del Conocimiento (III)
Gestión del Conocimiento (IV)
Agenda
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Repositorio de Componentes (I)
> Problemas
– ¿Reutilizamos código a nivel de proyecto?
– ¿Reutilizamos código entre diferentes proyectos?
– ¿Donde almacenamos el activo de componentes (jars) de la
organización?
– ¿Donde almacenamos los componentes de terceros?
ARTIFACTORY
> Características
– Repositorio basado en web y construido en Java
– Compatible 100% Maven
– Admite diferentes motores de bases de datos
– Interfaz de usuario sencilla y agradable
– Seguridad basada en grupos y usuarios, además de integración con LDAP.
– Copias de seguridad
> Utilidades
– Permite desplegar artefactos manualmente (via web)
– Admite el despliegue remoto de artefactos
– Funciona como proxy de repositorios en Internet
– Búsqueda de artefactos dentro de los repositorios
– ...
Repositorio de Componentes (III)
Repositorio de Componentes (IV)
Repositorio de Componentes (V)
Repositorio de Componentes (VI)
Agenda
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Aseguramiento de la Calidad (I)
> Problemas
– ¿Cómo mejorar la calidad de mi código?
– ¿Cómo automatizar las pruebas?
– ¿Cómo asegurar que los programadores usen unas mismas
guías de estilos?
– ¿Que partes de mi código son mas difíciles de mantener?
– Vamos a hacer refactoring... ¿por donde empiezo?
> Solución:
– Análisis Estático: PMD, CheckStyle, Findbugs, ... Sonar
– Análisis Dinámico: JUnit, HttpUnit, JMeter, ...
Aseguramiento de la Calidad (II)
SONAR
> Características
– Aplicación web que integra a varias herramientas de análisis opensource.
– Soporta diferentes métricas clasificadas en: eficiencia, mantenibilidad,
portabilidad, fiabilidad y usabilidad.
– Actualización de métricas en cada build de los proyectos
> Utilidades
– Analiza el código fuente generando informes, métricas, diagramas, etc.
– Presenta resultados a diversos niveles: proyecto, paquete, clase y
método.
– Permite visualizar el código fuente donde se incumplen las normas de
codificación
– Muestra tendencias en la calidad del código, cobertura de test unitarios,
hotspots, clouds, etc.
– ...
Aseguramiento de la Calidad (III)
Aseguramiento de la Calidad (IV)
Aseguramiento de la Calidad (V)
Aseguramiento de la Calidad (VI)
Agenda
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Integración Continua (I)
> Problemas
– ¿Cómo reducir los tiempos de integración?
– ¿Como ejecutar pruebas de regresión?
– ¿Como detectar los fallos rápidamente?
– ¿Como disponer de un entorno de pruebas siempre
actualizado?
HUDSON
> Características
– Sistema de CI basado en web
– Gracias a sus plugins, permite adaptarse fácilmente a las necesidades de
cada organización
– No está ligado a proyectos Maven (aunque es recomendable)
– Soporte de seguridad completo (conexión con LDAP)
– Integración con sistemas externos: svn, redmine, sonar, etc.
– Construcción distribuida
> Utilidades
– Permite crear tareas automáticas (cron) de construcción
– Notificaciones via email
– Posibilidad de despliegue en repositorios de componentes (artifactory)
– Permite desplegar proyectos en servidores de aplicaciones (tomcat)
– ...
Integración Continua (III)
Integración Continua (IV)
Integración Continua (V)
Agenda
> Introducción
> Control del Código Fuente
> Gestión del Proyecto
> Construcción del Producto
> Gestión del Conocimiento
> Repositorio de Componentes
> Aseguramiento de la Calidad
> Integración Continua
> Resumen
Resumen (I)
ivan.ruiz@uca.es