Sunteți pe pagina 1din 35
Herramientas Ágiles 2do. Agile Open - 7 de Setiembre de 2012 Alejandro Gallegos | alejandro.gallegos@lemondata.com.ar

Herramientas Ágiles

Herramientas Ágiles 2do. Agile Open - 7 de Setiembre de 2012 Alejandro Gallegos | alejandro.gallegos@lemondata.com.ar

2do. Agile Open - 7 de Setiembre de 2012

Herramientas Ágiles 2do. Agile Open - 7 de Setiembre de 2012 Alejandro Gallegos | alejandro.gallegos@lemondata.com.ar
Herramientas Ágiles 2do. Agile Open - 7 de Setiembre de 2012 Alejandro Gallegos | alejandro.gallegos@lemondata.com.ar

Alejandro Gallegos | alejandro.gallegos@lemondata.com.ar

Objetivos

Objetivos  Porqué utilizar herramientas ágiles  Cómo se relacionan con la metodología  Consideraciones para

Porqué utilizar herramientas ágiles Cómo se relacionan con la metodología Consideraciones para implementarlas Ventajas y desventajas

www.lemondata.com.ar

Prácticas del desarrollo ágil

Prácticas del desarrollo ágil  Revisiones continuas  Refactoring  Diseño simple  Pruebas de integración
Prácticas del desarrollo ágil  Revisiones continuas  Refactoring  Diseño simple  Pruebas de integración

Revisiones continuas

Refactoring

Diseño simple Pruebas de integración continuas

 Diseño simple  Pruebas de integración continuas  Estándares de codificación  Propiedad colectiva

Estándares de codificación

Propiedad colectiva Retroalimentación del cliente Pequeños releases

www.lemondata.com.ar

Nuestra primera herramienta

Nuestra primera herramienta ¿Cuál es nuestra primera Herramienta? EL IDE o Entorno de desarrollo www.lemondata.com.ar
Nuestra primera herramienta ¿Cuál es nuestra primera Herramienta? EL IDE o Entorno de desarrollo www.lemondata.com.ar

¿Cuál es nuestra primera Herramienta?

EL IDE o Entorno de desarrollo

www.lemondata.com.ar

Nuestra primera herramienta ¿Cuál es nuestra primera Herramienta? EL IDE o Entorno de desarrollo www.lemondata.com.ar

Desarrollo

Desarrollo  Nuestro trabajo se centra en el código fuente y por ende en el entorno
Desarrollo  Nuestro trabajo se centra en el código fuente y por ende en el entorno

Nuestro trabajo se centra en el código fuente y por ende en el entorno de desarrollo.

Elección de un IDE adecuado al proyecto :

Posibilidad de navegación rápida

Generación automática de código

Realizar Refactoring fácilmente Mantener los estándares de programación

Automatizar tareas: análisis estático de código,

formateo de código, compilación automática, versionado de código, etc.

www.lemondata.com.ar

estático de código, formateo de código, compilación automática, versionado de código, etc. www.lemondata.com.ar

Trabajo en equipo Ágil

Trabajo en equipo Ágil  ¿Cómo hago para compartir con el equipo el código fuente? 
Trabajo en equipo Ágil  ¿Cómo hago para compartir con el equipo el código fuente? 

¿Cómo hago para compartir con el equipo el código fuente? ¿Cómo mantengo un historial de cambios sobre el código?

www.lemondata.com.ar

con el equipo el código fuente?  ¿Cómo mantengo un historial de cambios sobre el código?

Versionado de código

Versionado de código  Una versión, revisión o edición de un producto, es el estado en
Versionado de código  Una versión, revisión o edición de un producto, es el estado en

Una versión, revisión o edición de un producto, es el estado en el que se encuentra dicho producto en un momento dado de su desarrollo o modificación.

Características:

Mecanismo de almacenamiento

Posibilidad de realizar cambios a lo almacenado Registro histórico de cambios realizados

Posibilidad de volver a versiones anteriores

Generación de informes con cambios entre versiones

www.lemondata.com.ar

Posibilidad de volver a versiones anteriores  Generación de informes con cambios entre versiones www.lemondata.com.ar

Versionado de código: clasificación

Versionado de código: clasificación  Centralizados:  Repositorio centralizado con todo el código  Único

Centralizados:

Versionado de código: clasificación  Centralizados:  Repositorio centralizado con todo el código  Único

Repositorio centralizado con todo el código Único usuario responsable (o conjunto de ellos) Administración vs Flexibilidad

Ejemplos: CVS y Subversion.

Distribuidos:

Cada usuario tiene su propio repositorio

Los distintos repositorios pueden intercambiar y mezclar revisiones entre ellos

Es frecuente el uso de un repositorio, que está

normalmente disponible Ejemplos: Git y Mercurial.

www.lemondata.com.ar

frecuente el uso de un repositorio, que está normalmente disponible  Ejemplos: Git y Mercurial. www.lemondata.com.ar

Versionado de código: opciones

Versionado de código: opciones CVS SVN GIT MERCURIAL Cada archivo tiene su número de revisión Todo
Versionado de código: opciones CVS SVN GIT MERCURIAL Cada archivo tiene su número de revisión Todo

CVS

SVN

GIT

MERCURIAL

Cada archivo tiene su número de revisión

Todo el repositorio tiene un único número

Desarrollo no lineal. Rapidez en la gestión de

Desarrollo

completamente

distribuido.

independiente

de versión que

ramas y mezclado

identifica un estado común de todos los

de diferentes versiones.

archivos.

www.lemondata.com.ar

y mezclado identifica un estado común de todos los de diferentes versiones. archivos. www.lemondata.com.ar
Pruebas  ¿Cómo mejoramos el nivel de las pruebas?  ¿Cómo evitamos realizar pruebas manuales?

Pruebas

Pruebas  ¿Cómo mejoramos el nivel de las pruebas?  ¿Cómo evitamos realizar pruebas manuales? 

¿Cómo mejoramos el nivel de las pruebas?

¿Cómo evitamos realizar pruebas manuales?

¿Cómo reutilizar las pruebas anteriores? ¿Cómo minimizar o acotar los posibles errores en el

software?

www.lemondata.com.ar

las pruebas anteriores?  ¿Cómo minimizar o acotar los posibles errores en el software? www.lemondata.com.ar

Control de calidad: Pruebas

Control de calidad: Pruebas  Necesidad de mantener pruebas unitarias e integradoras  Fomentan el cambio
Control de calidad: Pruebas  Necesidad de mantener pruebas unitarias e integradoras  Fomentan el cambio

Necesidad de mantener pruebas unitarias e integradoras Fomentan el cambio Simplifican la integración Documentan el código Errores acotados y mas fáciles de localizar

La herramienta debería permitir tener pruebas:

Automatizables

Completas

Repetibles

Independientes

Profesionales

www.lemondata.com.ar

tener pruebas:  Automatizables  Completas  Repetibles  Independientes  Profesionales www.lemondata.com.ar

JUnit

JUnit  Es un conjunto de clases (framework) que permite realizar la ejecución de clases Java
JUnit  Es un conjunto de clases (framework) que permite realizar la ejecución de clases Java

Es un conjunto de clases (framework) que permite realizar la ejecución de clases Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los métodos de la clase se comporta como se espera.

Es también un medio de controlar las pruebas de

regresión, necesarias cuando una parte del código ha sido modificado y se desea ver que el nuevo código cumple con

los requerimientos anteriores.

Este framework se encuentra actualmente en la versión

4.6, con grandes mejoras.

www.lemondata.com.ar

anteriores.  Este framework se encuentra actualmente en la versión 4.6, con grandes mejoras. www.lemondata.com.ar

JUnit: como funciona

JUnit: como funciona  En función de algún valor de entrada se evalúa el valor de
JUnit: como funciona  En función de algún valor de entrada se evalúa el valor de

En función de algún valor de entrada se evalúa el valor de retorno esperado.

Si la clase cumple con la especificación, entonces JUnit devolverá que el método de la clase pasó exitosamente la

prueba.

En caso de que el valor esperado sea diferente al que

regresó el método durante la ejecución, JUnit devolverá un

fallo en el método correspondiente.

www.lemondata.com.ar

regresó el método durante la ejecución, JUnit devolverá un fallo en el método correspondiente. www.lemondata.com.ar

JUnit: como funciona

JUnit: como funciona www.lemondata.com.ar

www.lemondata.com.ar

JUnit: como funciona www.lemondata.com.ar
Buenas prácticas de codificación  ¿Cómo fomento en el equipo las buenas prácticas de programación?

Buenas prácticas de codificación

Buenas prácticas de codificación  ¿Cómo fomento en el equipo las buenas prácticas de programación? 

¿Cómo fomento en el equipo las buenas prácticas de

programación?

¿Cómo hago mi código más entendible?

¿Cómo prever posible problemas de rendimiento, seguridad y complejidad?

más entendible?  ¿Cómo prever posible problemas de rendimiento, seguridad y complejidad? www.lemondata.com.ar

www.lemondata.com.ar

más entendible?  ¿Cómo prever posible problemas de rendimiento, seguridad y complejidad? www.lemondata.com.ar

Control de calidad: análisis estático

Control de calidad: análisis estático  El análisis estático del código es el proceso de evaluar
Control de calidad: análisis estático  El análisis estático del código es el proceso de evaluar

El análisis estático del código es el proceso de evaluar el software sin ejecutarlo. La verificación de código estática se basa en un conjunto de reglas que representan buenas practicas a la hora de codificar.

La idea es obtener información del código que nos

permita mejorarlo, manteniendo la semántica original.

www.lemondata.com.ar

es obtener información del código que nos permita mejorarlo, manteniendo la semántica original. www.lemondata.com.ar

PMD

PMD  Analizador de código estático  Se basa en un conjunto de reglas configurables 
PMD  Analizador de código estático  Se basa en un conjunto de reglas configurables 

Analizador de código estático Se basa en un conjunto de reglas configurables Busca errores potenciales:

Posibles errores: sentencias try/catch/finally/switch vacías Código muerto: variables, parámetros y métodos no usados

Expresiones complejas: if innecesarios, bucles for que pueden

ser while Código no óptimo Código duplicado

if innecesarios, bucles for que pueden ser while  Código no óptimo  Código duplicado www.lemondata.com.ar

www.lemondata.com.ar

PMD

PMD www.lemondata.com.ar

www.lemondata.com.ar

PMD www.lemondata.com.ar

PMD

PMD www.lemondata.com.ar

www.lemondata.com.ar

PMD www.lemondata.com.ar

Entrega de releases

Entrega de releases  ¿Cómo tengo seguridad para hacer cambios?  ¿Cómo disminuir el tiempo de
Entrega de releases  ¿Cómo tengo seguridad para hacer cambios?  ¿Cómo disminuir el tiempo de

¿Cómo tengo seguridad para hacer cambios?

¿Cómo disminuir el tiempo de integración?

¿Cómo hago versiones estables y entregables fácilmente?

www.lemondata.com.ar

disminuir el tiempo de integración?  ¿Cómo hago versiones estables y entregables fácilmente? www.lemondata.com.ar

Integración continua

Integración continua  El sistema se compila varias veces por día de forma automática.  Se
Integración continua  El sistema se compila varias veces por día de forma automática.  Se

El sistema se compila varias veces por día de forma automática.

Se obtiene el código fuente desde el repositorio con los últimos cambios. Se corren las pruebas unitarias en cada build.

Fomenta :

pruebas de integración continuas propiedad colectiva del código

pequeños releases con entrega frecuente de valor

Anticipa futuros conflictos.

www.lemondata.com.ar

del código  pequeños releases con entrega frecuente de valor  Anticipa futuros conflictos. www.lemondata.com.ar
Integración continua: Hudson www.lemondata.com.ar

Integración continua: Hudson

Integración continua: Hudson www.lemondata.com.ar
Integración continua: Hudson www.lemondata.com.ar

www.lemondata.com.ar

Integración continua: Hudson www.lemondata.com.ar

Integración continua: Hudson

Integración continua: Hudson www.lemondata.com.ar

www.lemondata.com.ar

Integración continua: Hudson www.lemondata.com.ar

Integración continua: Hudson

Integración continua: Hudson www.lemondata.com.ar

www.lemondata.com.ar

Integración continua: Hudson www.lemondata.com.ar

Administración Ágil

Administración Ágil  ¿Cómo puedo administrar el Product Backlog eficazmente?  ¿Cómo automatizar las métricas
Administración Ágil  ¿Cómo puedo administrar el Product Backlog eficazmente?  ¿Cómo automatizar las métricas

¿Cómo puedo administrar el Product Backlog eficazmente?

¿Cómo automatizar las métricas y visualizar el avance del proyecto? ¿Qué velocidad en la entrega de valor tiene el equipo?

¿Cómo reduzco los tiempos administrativos del proyecto?

www.lemondata.com.ar

en la entrega de valor tiene el equipo?  ¿Cómo reduzco los tiempos administrativos del proyecto?

Administración de proyectos ágiles

Administración de proyectos ágiles  Factores que ameritan herramientas colaborativas:  Equipos distribuidos
Administración de proyectos ágiles  Factores que ameritan herramientas colaborativas:  Equipos distribuidos

Factores que ameritan herramientas colaborativas:

Equipos distribuidos geográficamente

Necesidad de mantener históricos de las iteraciones

Mayor control con respecto a tiempos de trabajo Necesidad de reducir tiempos de administración del proyecto

Métricas automáticas

trabajo  Necesidad de reducir tiempos de administración del proyecto  Métricas automáticas www.lemondata.com.ar

www.lemondata.com.ar

Kunagi

Kunagi  Herramienta web para administración de proyectos ágiles  Administración y colaboración basada en Scrum
Kunagi  Herramienta web para administración de proyectos ágiles  Administración y colaboración basada en Scrum

Herramienta web para administración de proyectos ágiles Administración y colaboración basada en Scrum Buenas prácticas ágiles Información Scrum Product Backlog, Sprint Backlog, Impediments list.

Datos adicionales del proyecto

Requerimientos no funcionales Riesgos

Archivos

Issues y bugs Otras características Dashboard, Whiteboard y Planning Poker

Archivos  Issues y bugs  Otras características  Dashboard, Whiteboard y Planning Poker www.lemondata.com.ar

www.lemondata.com.ar

Archivos  Issues y bugs  Otras características  Dashboard, Whiteboard y Planning Poker www.lemondata.com.ar

Kunagi

Kunagi www.lemondata.com.ar

www.lemondata.com.ar

Kunagi www.lemondata.com.ar

Kunagi

Kunagi www.lemondata.com.ar

www.lemondata.com.ar

Kunagi

Kunagi www.lemondata.com.ar

www.lemondata.com.ar

Kunagi www.lemondata.com.ar
Sprint y Herramientas  Sprint Planning/ Sprint Review/ Retrospectiva: Kunagi  Diariamente:  Eclipse para

Sprint y Herramientas

Sprint y Herramientas  Sprint Planning/ Sprint Review/ Retrospectiva: Kunagi  Diariamente:  Eclipse para el

Sprint Planning/ Sprint Review/ Retrospectiva: Kunagi

Diariamente:

Eclipse para el desarrollo JUnit para realizar las pruebas

PMD para comprobar su código

SVN para compartir su código Hudson para comprobar la integración de los cambios

Kunagi para tareas, cargar impedimentos, etc.

Al final del Sprint: Kunagi y Hudson: tests fallidos, warnings PMD, demo al cliente.

www.lemondata.com.ar

etc.  Al final del Sprint: Kunagi y Hudson : tests fallidos, warnings PMD, demo al

Otras herramientas

Otras herramientas   Java .Net Php Phyton IDE Eclipse, Visual Studio, Eclipse, Vim, Emacs,
Otras herramientas   Java .Net Php Phyton IDE Eclipse, Visual Studio, Eclipse, Vim, Emacs,
 

Java

.Net

Php

Phyton

IDE

Eclipse,

Visual Studio,

Eclipse,

Vim, Emacs,

Netbeans,

Sharp Develop

ZendStudio, Open

Gedit, Kate,

Jdeveloper, BlueJ

Komodo, PDT, Aptana

PyDev, Open Komodo, Eric

Versionado

 

SVN/CVS/GIT/Mercurial

 

Pruebas

Junit, TestNG

NUnit

PHPUnit

PyUnit

Análisis

PMD,

FxCop, Code Analysis,

PHP Analyzer, RIPS

Emacs flymake, Pyflakes, PyLint

Estático

Checkstyles,

Findbugs

StyleCop

 

Integración

Hudson, Jenkins

CruiseControl.

Xinc, Jenkins, phpUnderControl

Hudson.

Continua

Net

Jenkins

Gestión

Kunagi, Xplanner, DotProject, Jira, GreenHopper, Mantis, Bugzilla,

TargetProcess, WebCollab, Rally, Version One, Agile Zen, Scrumwise

www.lemondata.com.ar

GreenHopper, Mantis, Bugzilla, TargetProcess, WebCollab, Rally, Version One, Agile Zen, Scrumwise www.lemondata.com.ar

Consideraciones

Consideraciones  El equilibrio es fundamental. Las herramientas tienen que ser un medio para el desarrollo
Consideraciones  El equilibrio es fundamental. Las herramientas tienen que ser un medio para el desarrollo

El equilibrio es fundamental. Las herramientas tienen que ser un medio para el desarrollo correcto del proyecto. Cuestiones que van mas allá de las herramientas:

Relación con el cliente Costos de implementación

Curva de aprendizaje

Restricciones tecnológicas

Re-trabajo para el equipo

“El OBJETIVO de las herramientas es

la entrega de VALOR al cliente al final del Sprint”

www.lemondata.com.ar

equipo “El OBJETIVO de las herramientas es la entrega de VALOR al cliente al final del

www.lemondata.com.ar

www.lemondata.com.ar
¿Preguntas?
¿Preguntas?
¿Preguntas? ¿ D e b a t e ? www.lemondata.com.ar ¿Comentarios?

¿Debate?

¿Preguntas? ¿ D e b a t e ? www.lemondata.com.ar ¿Comentarios?

www.lemondata.com.ar

¿Comentarios?

¿Preguntas? ¿ D e b a t e ? www.lemondata.com.ar ¿Comentarios?
¿Preguntas? ¿ D e b a t e ? www.lemondata.com.ar ¿Comentarios?