Construir software es duro y difícil, hacerlo con calidad es aun mas difícil. En nuestra joven industria han existido muchas ideas acerca de como podríamos desarrollar software con eficiencia, muchas metodologías han emergido, casi todas ellas han fallado. El movimiento ágil, fundamentado por el Manifiesto Ágil, propone principios simples, basados en humanos y sus interacciones y no en procesos o herramientas; es esencial el factor humano.
En esta charla abordaremos rápidamente los problemas comunes al desarrollar software y como podemos minimizarlos a través de sencillos principios basados en Agile Software Development. Ademas de los principios veremos como el uso de algunas practicas tomadas de Extreme Programming pueden mejorar significativamente el proceso de desarrollo de software.
2. Twitter
Si usan Twitter pueden encontrarme en
@domix
Comenten sobre mi charla con el hashtag
#testGulev2KX
#Gulev2KX
3. Sobre mí
Ingeniero de software desde 1999, experiencia en Java
He fundado algunos grupos de usuarios
JavaUp.org, SpringHispano.org, grails.org.mx
Colaboro en algunos proyectos OpenSource
Trabajo en @SynergyJ
Adopte los métodos ágiles desde 2005 de manera “parcial”
Tengo año y medio usando Scrum
Certified Scrum Master
4. Agenda
Problemas comunes en el proceso de desarrollo
Algunas propuestas
Agile/Lean Software Development
Extreme Programming
Testing
Conclusiones
5. Problemas comunes
Mal levantamiento de requerimientos
No son entendidos
El usuario no sabe lo que en realidad quiere
No se tiene la capacidad técnica
Se aceptan los proyectos sin pensar lo suficiente
Pésima administración de recursos
Mala negociación
Falta de COMUNICACION
17. Agilismo
Empezó por el manifiesto Agil en Febrero 2001
Surge por la necesidad de mejores métodos para
construir software
La construcción de software DEBE considerar diversos
tipos de pruebas
18. Principios
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
19. Los principios del manifiesto van
encaminados a mejorar la
comunicación, para mejorar el
proceso de desarrollo de software
mediante la adaptación.
21. Enfoque ágil...
Software que funciona-Satisfacción del cliente
Adaptar el proceso continuamente
Comunicación cara a cara
A veces dificil
Excelencia técnica
Simplicidad
Auto organización
33. Extreme Programming (XP)
Conjunto de practicas sencillas
Es difícil su implementación si no hay compromiso
Su objetivo es mejorar la calidad del software y
responder a los cambios en los requerimientos
37. Practicas en XP-Pruebas
Pruebas
Pruebas de unidad para todo
Pruebas de integración
Deben funcionar todas las pruebas antes de liberar
Si surge un error (bug), deben escribirse las pruebas
para replicarlo. Un bug es una prueba que olvidamos
escribir
38. XP no es moneda de oro
Programación en pares
No hay diseño detallado
Se cree que la documentación es nula, pero las
pruebas automatizadas son la documentación de los
requerimientos
Control de cambios
39. Pruebas de unidad
Se prueban los componentes aislados
Generalmente se usan Mocks o Stubs
Se usan verificaciones “asserts” para probar
Son confundidas con Pruebas de integración
Pruebas de caja blanca
40. Pruebas de integración
Sirven para probar los componentes involucrados en
un flujo
Validan el trabajo de varios desarrolladores
Pruebas de caja negra
Pueden ser automatizados, simulan la interacción con
el usuario
41. Impacto de las pruebas
El tener una buena batería de pruebas, nos permite
entre otras cosas:
Validar nuevos requirimientos
Medir el impacto de los refactorings
Documenta el proyecto
Permite mejorar el diseño
42. Faltan mas pruebas¡¡
Pruebas de Stress
Pruebas de Performance
Pruebas de Integración de Sistema
Pruebas de Aceptacion
Pruebas de Sistema
Pruebas no funcionales
Pruebas Funcionales
43. Automatización de pruebas
Usar alguna herramienta para el build del proyecto
Las pruebas deben ser
Repetibles
Autónomas
De ejecución rápida
44. Integración continua
Es el proceso de que cada cierto tiempo o cambio en
el código (commit en el repositorio), se construye el
proyecto automaticamente.
Este proceso realiza:
Compilación
Ejecución de pruebas
Generación de reportes
Notificación de errores
56. Agil
Adoptar ágil funciona
No funciona para todos
En mi experiencia ha sido muy satisfactorio
Cada equipo debe trabajar en como adoptar ágil en su
empresa
Siempre pueden volver a cascada :)