Índice General
Introducción a la gestión de proyectos de desarrollo
de Software .......................................................... 13
¿Qué es el Desarrollo Ágil? ...........................................................13
Un pantallazo general sobre la gestión de proyectos....................13
Diferenciando las metodologías de gestión...............................15
Tipos de Proyecto..........................................................................17
Desarrollo de un nuevo sistema informático.............................17
Desarrollo de nuevas funcionalidades......................................18
Reingeniería de un sistema.......................................................18
Mantenimiento evolutivo..........................................................18
Mantenimiento adaptativo........................................................19
Mantenimiento preventivo........................................................19
Mantenimiento correctivo.........................................................20
La octava clasificación..............................................................20
Abordaje de un proyecto de construcción de Software.................20
El agilismo y su Manifiesto ...........................................................22
Los valores del agilismo............................................................22
Individuos e interacciones sobre procesos y herramientas...22
Software funcionando sobre documentación extensiva........23
Colaboración con el cliente sobre negociación contractual...23
Respuesta ante el cambio sobre seguir un plan....................23
Los doce principios del agilismo................................................24
Principio #1: Satisfacer al cliente mediante la entrega
temprana y continua de software con valor..........................24
Principio #2: Aceptamos que los requisitos cambien, incluso
en etapas tardías del desarrollo. Los procesos Ágiles
aprovechan el cambio para proporcionar ventaja competitiva
al cliente............................................................................... 25
Principio #3: Entregamos software funcional frecuentemente,
5Scrum y eXtreme Programming para Programadores
Eugenia Bahit
entre dos semanas y dos meses, con preferencia al periodo
de tiempo más corto posible.................................................25
Principio #5: Los proyectos se desarrollan en torno a
individuos motivados. Hay que darles el entorno y el apoyo
que necesitan, y confiarles la ejecución del trabajo.............26
Principio #6: Conversación cara a cara................................26
Principio #7: El software funcionando es la medida principal
de progreso...........................................................................27
Principio #8: Los promotores, desarrolladores y usuarios
debemos ser capaces de mantener un ritmo constante de
forma indefinida....................................................................27
Principio #9: La atención continua a la excelencia técnica y al
buen diseño mejora la Agilidad.............................................27
Principio #10: La simplicidad, o el arte de maximizar la
cantidad de trabajo no realizado, es esencial.......................28
Principio #11: Las mejores arquitecturas, requisitos y diseños
emergen de equipos auto-organizados.................................28
Principio #12: A intervalos regulares el equipo reflexiona
sobre cómo ser más efectivo para a continuación ajustar y
perfeccionar su comportamiento en consecuencia...............29
Conociendo Scrum ................................................ 30
El Marco de Trabajo de Scrum.......................................................31
Los Roles en Scrum ..................................................................33
El Dueño de Producto (Product Owner) en Scrum ................33
Funciones y responsabilidades..................................34
Aptitudes que debe tener un Dueño de Producto.....34
El Scrum Master....................................................................34
Funciones y responsabilidades..................................35
Aptitudes que debe tener un Scrum Master..............35
Actitudes que un buen Scrum Master debe evitar
indefectiblemente.....................................................36
6Scrum y eXtreme Programming para Programadores
Eugenia Bahit
El Equipo de Desarrollo (Scrum Team o Equipo Scrum)........37
Funciones y responsabilidades..................................37
Un buen Scrum Team, actúa como un verdadero
equipo.......................................................................38
Artefactos y Herramientas .......................................................39
Backlog de Producto .............................................................39
Formato del Backlog de Producto..........................................40
Priorización de los ítems del Backlog de Producto.....40
Estimación de esfuerzo.............................................41
Granulidad de los ítems .........................................42
Criterios de Aceptación.............................................43
Backlog de Sprint......................................................................45
Dividiendo Historias de Usuario en Tareas............................46
Incremento de Funcionalidad....................................................49
Ceremonias en Scrum...................................................................50
Ceremonia de Planificación del Sprint.......................................50
Reunión diaria...........................................................................52
Ceremonia de Revisión.............................................................53
Ceremonia de Retrospectiva: la búsqueda de la perfección.....55
Estimando esfuerzos.....................................................................56
Estimando con T-Shirt Sizing.....................................................58
¿Cómo se juega?...................................................................60
Estimación por Poker................................................................60
Reglas del Juego....................................................................61
¿Cómo jugar Scrum Poker?...................................................62
Estimando por Columnas..........................................................65
Estimación por Columnas y Poker.............................................68
Scrum Kit...................................................................................... 69
7Scrum y eXtreme Programming para Programadores
Eugenia Bahit
Introducción a la Programación eXtrema .................. 70
Bases de la programación eXtrema..............................................70
Comunicación........................................................................... 70
Simplicidad............................................................................... 71
Retroalimentación.....................................................................71
Respeto..................................................................................... 71
Coraje....................................................................................... 71
Prácticas técnicas.........................................................................72
PRÁCTICA #1: CLIENTE IN-SITU (ON-SITE CUSTOMER)..............72
PRÁCTICA #2: SEMANA DE 40 HORAS (40 HOUR WEEK)...........73
PRÁCTICA #3: METÁFORA (METAPHOR).....................................74
PRÁCTICA #4: DISEÑO SIMPLE (SIMPLE DESIGN)......................75
PRÁCTICA #5: REFACTORIZACIÓN (REFACTORING)...................76
PRÁCTICA
#6:
PROGRAMACIÓN
DE
A
PARES
(PAIR
PROGRAMMING)........................................................................77
PRÁCTICA #7: ENTREGAS CORTAS (SHORT RELEASES).............78
PRÁCTICA #8: TESTING.............................................................78
PRÁCTICA #9: CÓDIGO ESTÁNDAR (CODING STANDARDS).......79
PRÁCTICA
#10:
PROPIEDAD
COLECTIVA
(COLLECTIVE
OWNERSHIP)............................................................................. 80
PRÁCTICA #11: INTEGRACIÓN CONTINUA (CONTINUOUS
INTEGRACIÓN)...........................................................................80
PRÁCTICA #12: JUEGO DE PLANIFICACIÓN (PLANNING GAME)..81
Programación de a pares y Coding Dojo: ¿quién dijo que el trabajo
es aburrido?.................................................................................. 82
¿Por qué "Dojo"?.......................................................................82
¿Para qué hacer en un Coding Dojo? ¿Cuál es la finalidad?......83
Duración de un Coding Dojo.....................................................84
¿Qué se hace en un Coding Dojo?.............................................84
Codekata en el Coding Dojo......................................................84
8Scrum y eXtreme Programming para Programadores
Eugenia Bahit
El Kata en el Coding Dojo......................................................84
Un Randori Coding Dojo............................................................85
El Randori en el Coding Dojo.................................................85
Ventajas de implementar un Coding Dojo en el lugar de trabajo
de forma periódica....................................................................86
Cuándo y cómo implementar el Coding Dojo en la empresa.....87
TDD – Test-Driven Development .............................. 88
¿Qué es el desarrollo -o programación- guiado por pruebas?.......88
Test Unitarios................................................................................ 91
Características de los Test Unitarios..........................................91
Anatomía.................................................................................. 93
Algoritmo para escribir pruebas unitarias.................................98
PRIMER PASO: Escribir el Test y hacer que falle....................98
SEGUNDO PASO: Escribir la mínima cantidad de código para
que el test pase..................................................................100
TERCER PASO: Escribir un nuevo test y hacer que falle......101
CUARTO PASO: Escribir el algoritmo necesario para hacer
pasar el test........................................................................102
Unit Testing con PHPUnit.............................................................105
Métodos Assert de PHPUnit.....................................................105
Ejercicio...................................................................................... 108
Unit Testing con PyUnit...............................................................109
Métodos Assert de PyUnit.......................................................109
Corriendo test por línea de comandos....................................112
Integración continua............................................. 114
Generación de Test de Integración..............................................115
Test de Aceptación..................................................................115
Test Funcionales......................................................................118
Test de Sistema.......................................................................119
9Scrum y eXtreme Programming para Programadores
Eugenia Bahit
Unificación del código en Repositorios........................................120
Sobre los Sistemas de Control de Versiones...........................121
Integración continua con Bazaar.............................................122
Instalación de Bazaar..........................................................124
Bazaar por línea de comandos............................................124
Presentarse ante Bazaar.....................................................125
Iniciar un nuevo proyecto...................................................125
Clonar el repositorio central: crear los repositorios locales.126
Nociones básicas para integrar código de forma continua..127
Guardando el path del repo central....................................129
Integración continua avanzada con Bazaar.............................130
Resumen de comandos de uso frecuente...........................131
Resumen para uso diario de Bazaar............................................133
Refactoring.......................................................... 135
El problema................................................................................. 135
La solución.................................................................................. 136
Cuándo y cómo tomar la desición de refactorizar...................137
Una solución a cada problema................................................138
Variables de uso temporal mal implementadas..................138
Métodos que reciben parámetros.......................................141
Expresiones extensas.........................................................142
Métodos extensos...............................................................142
Código duplicado en una misma clase................................144
Código duplicado en varias clases con la misma herencia..145
Código duplicado en varias clases sin la misma herencia...146
Combinando Scrum y eXtreme Programming ........... 148
Compatibilizando ambas metodologías.......................................148
Compatibilidad de Scrum con los valores de XP.....................148
10Scrum y eXtreme Programming para Programadores
Eugenia Bahit
Compatibilidad con las prácticas técnicas de XP....................151
Combinando ambas metodologías..............................................153
Combinar Scrum con eXtreme Programming..........................153
Combinar Scrum con eXtreme Programming..........................154
Material de lectura complementario...........................................155
Kanban: la metodología ágil que menor resistencia
ofrece................................................................. 156
De TOYOTA TM al Desarrollo de Software ......................................156
Las tres reglas de Kanban ..........................................................158
Mostrar el proceso .................................................................158
Los tableros Kanban ...........................................................159
Limitar el trabajo en curso: WIP .............................................160
Optimizar el flujo de trabajo ...................................................162