Escolar Documentos
Profissional Documentos
Cultura Documentos
INDICE
1. Introduccin.....................................................................................................................................................3
2. La no metodologa...........................................................................................................................................4
3. Metodologas.................................................................................................................................................5
4. Metodologas Agiles.....................................................................................................................................6
4.1. Caractersticas bsicas.........................................................................................................................6
4.2 Antecedentes...............................................................................................................................................7
4.3. Caractersticas principales.......................................................................................................................7
4.4. Diferencias con las metodologas tradicionales...................................................................................8
5. Las Metodologas.....................................................................................................................................12
6. Manifiesto para el Desarrollo de Software gil......................................................................................17
7. XP..................................................................................................................................................................18
7.1. Riesgos....................................................................................................................................................20
7.2. Variables a considerar.........................................................................................................................22
7.3. Los valores...............................................................................................................................................22
7.3.1. Comunicacin.....................................................................................................................................22
7.3.2. Valenta...................................................................................................................................................23
7.3.3. Realimentacin (feedback)...................................................................................................................23
7.3.4. Simplicidad.............................................................................................................................................24
7.4. Principios bsicos.......................................................................................................................................24
7.5. Las actividades bsicas en el desarrollo de sistema..................................................................26
7.6. Las 12 prcticas.....................................................................................................................................27
7.6.1. Testing...................................................................................................................................................27
7.6.2. Programacin por pares de Programadores..............................................................................28
7.6.3. Diseo Simple.....................................................................................................................................29
7.6.4. Refactorizacin permanente...........................................................................................................29
7.6.5 Cliente On-Site.....................................................................................................................................30
7.6.6. Taller de planificacin.......................................................................................................................30
7.6.7. Integracin continua.........................................................................................................................31
7.6.8. Pequeos releases............................................................................................................................31
7.6.9. Propiedad Colectiva del cdigo.....................................................................................................32
7.6.10. Estndares de Codificacin..........................................................................................................32
7.6.11. Metforas del sistema.....................................................................................................................32
7.6.12. Semana de 40 Horas.......................................................................................................................33
7.7. Contexto de eXtreme Programing........................................................................................................33
7.8. Estrategias de gerenciamiento..........................................................................................................33
7.9. El espacio de trabajo............................................................................................................................34
7.10. Estrategias de planificacin en XP.................................................................................................34
7.11. Estrategias de desarrollo..................................................................................................................35
7.12. Estrategias de diseo........................................................................................................................35
7.13. Estrategias de testing........................................................................................................................35
7.14. Implementando XP..............................................................................................................................36
7.14.1. Integracin del equipo de trabajo y definicin de necesidades:........................................36
7.14.2. Planificacin......................................................................................................................................37
7.14.3. Diseo................................................................................................................................................37
7.14.4. Diseo de pruebas y codificacin...............................................................................................38
7.14.5. Integracin.........................................................................................................................................38
7.14.6. Refactorizacin.................................................................................................................................38
8. XP y Open Source.....................................................................................................................................39
9. Conclusiones.............................................................................................................................................43
10.Bibliografa................................................................................................................................................46
1. Introduccin
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
2. La no metodologa
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
3. Metodologas
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
4. Metodologas giles
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
4.2 Antecedentes
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
Los partidarios de las metodologas giles opinan que para poder ejecutar
proyectos se requiere un equipo muy eficaz de desarrolladores. El equipo necesita
ser eficaz tanto en la calidad de los individuos como en la manera en que
funcionan juntos en equipo.
En esta filosofa las personas no se consideran como recursos sino como actores
centrales que deben tomar decisiones tcnicas importantes y en algunos casos
como XP son los que pueden estimar el tiempo que tomar el trabajo.
10
Cuadro comparativo
Metodologas giles
Metodologas no giles
Desarrollo basado en la
planificacin
Existe un contrato prefijado.
La arquitectura es esencial.
11
5. Las Metodologas
XP (Programacin Extrema)
Formalmente el trmino Extreme Programming se dio a conocer en un
artculo en la edicin de octubre de 1998 de la revista Distributed Computing, en el
que se relataba la experiencia del Equipo C3 en el desarrollo del sistema de pago
de Chrysler, mejor conocido como Chrysler Comprehensive Compensation. Entre
los miembros del equipo C3 se encontraban Kent Beck, Ron Jeffries y Martin
Fowler. Beck es conocido como el padre de XP gracias a la publicacin, en 1999
de Extreme Programming Explained.
Aunque el sistema de Chrysler dej de utilizarse a finales del ao 2000 el
mensaje de XP est cada vez ms extendido y el xito de las conferencias de
Programacin Extrema y metodologas giles es cada vez mayor.
La XP empieza con cuatro valores: Comunicacin, Retroalimentacin, Simplicidad
y Coraje.
XP construye un proceso de diseo evolutivo que se basa en refactorar un sistema
simple en cada iteracin
12
Cdigo Abierto
Los principios del Open Source son:
Integridad del cdigo fuente y del autor: Se debe mantener la integridad con
el cdigo desarrollado por el propietario del proyecto
13
Especulacin
Colaboracin
Aprendizaje
14
Scrum
Scrum divide un proyecto en iteraciones denominadas carreras cortas de 30
das. Antes de que comience una carrera se define la funcionalidad requerida para
esa carrera y entonces se deja al equipo para que la desarrolle. El punto es
estabilizar los requisitos durante la carrera.
Sin embargo la gerencia no se desentiende durante la carrera corta. Todos los
das el equipo sostiene una junta corta (quince minutos), llamada scrum, donde el
equipo discurre lo que har al da siguiente
15
16
Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas
17
7. XP
Kent Beck define al XP como Un proceso ligero, de bajo riesgo, flexible,
predecible, cientfico y divertido de desarrollar Software.
Allistair Cockburn lo define como Una metodologa gil que requiere gran
disciplina
Al igual que la mayora de metodologas de desarrollo de software, la
programacin extrema no es el resultado de un plan maestro incubado en las
mentes de genios, sino el fruto de la formalizacin de un conjunto de prcticas que
demostraron ser exitosas en el desarrollo de sistema.
18
7.1. Riesgos
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
19
20
21
Costo
Tiempo
Calidad
Alcance
De estas variables el alcance es fundamental para el xito de un proyecto.
XP plantea que el cliente debe tener control sobre al menos 3 variables y el equipo
de desarrollo sobre la restante.
Comunicacin
Valenta
Retroalimentacin
Simplicidad
7.3.1. Comunicacin
Desde el momento en que se detecta un problema, la comunicacin comienza a
22
esa aislacin
7.3.2. Valenta
En las metodologas tradicionales de desarrollo de sistemas en general nos
encontramos con programadores pasivos que deben aceptar sin poder emitir
opinin alguna lo que el lder del proyecto impone. La filosofa de trabajo de XP es
sustancialmente distinta, el programador puede modificar en forma responsable el
cdigo cuando lo considere necesario, el hecho de que se realicen pruebas
unitarias sobre cada cambio antes de ponerlo en el repositorio central hace que
se garantice la calidad de cada modificacin.
Esta valenta que debe tener el equipo de desarrollo debe estar acompaada por
la humildad y se debe decir en el seno del equipo de desarrollo con coraje todo lo
que se piensa sin miedos injustificados. Lo cierto es que no muchos equipos
estn acostumbrados a esta metodologa de trabajo, basada en el valor de
modificar lo que es perfectible y tener un rol activo en el proceso de desarrollo,
pero la sinceridad, la humildad y el coraje son elementos sustantivos para
garantizar el xito de un proyecto basado en XP.
23
7.3.4. Simplicidad
Uno de los principios de la programacin extrema es la simplicidad. El cliente es el
eje que conduce todo el proceso de desarrollo en XP, hacer lo que el cliente
necesita, tan simple como sea posible es el objetivo, reduciendo la complejidad
desde el comienzo de cada proyecto.
Todo el cdigo debera ser refabricado tan frecuentemente como sea posible. La
refabricacin es el proceso de mejorar estructuras de cdigo sin cambiar la
funcionalidad que proveen.
El diseo debe ser lo ms simple posible. El paradigma KISS ("Keep It Small and
Simple" para unos o "Keep it Simple, Stupid" para otros) se lleva hasta las ltimas
consecuencias. Por ejemplo, se hace nfasis en no aadir funcionalidad nunca
antes de lo necesario, por las sencillas razones de que probablemente ahora
mismo no sea lo ms prioritario o porque quizs nunca llegue a ser necesaria.
24
25
26
7.6.1. Testing
Las pruebas guan el proceso de desarrollo y son cruciales entre otras cosas para
garantizar la calidad y la retroalimentacin. Se deben realizar pruebas unitarias y
de aceptacin.
Formar una coleccin de pruebas unitarias desde el primer da, se convierte en
una herramienta bastante poderosa despus en el proyecto. No es posible
actualizar el repositorio central sin haber realizado estas pruebas.
Para esto se implementa una prctica muy interesante de codificacin que es la
llamada test-first. Antes de aadir un nuevo mdulo al sistema, se escribe una
prueba unitaria que ejecuta el cdigo an no existente.
Las pruebas de aceptacin se caracterizan por requerir que se pruebe el sistema
en forma total, el cliente est involucrado en la creacin de las pruebas de
aceptacin. Las pruebas unitarias se centran en que cada detalle tcnico est
funcionando de acuerdo a lo previsto y son diseadas bsicamente por el
programador, las pruebas de aceptacin aseguran que cada requerimiento del
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
27
28
29
los
programadores
estiman
su
dificultad
factibilidad
de
Potenciar la retroalimentacin
Disear pruebas
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
30
Codificar
Prueba Unitaria
Integrar
31
reduciendo los errores. Esto rompe alguno de los vicios que tienen las
metodologas tradicionales donde cada programador es dueo exclusivo de su
cdigo y solo el puede modificarlo. Este sentimiento de team potencia la
productividad.
32
Este concepto intenta hacer entender que un programador que trabaja 14 horas
diarias no esta en condiciones de producir con calidad, muchas veces estas
actitudes heroicas solo perjudican los proyectos.
33
Reunir al equipo
34
7.14. Implementando XP
7.14.1. Integracin del equipo de trabajo y definicin de
necesidades:
El rol del cliente es central el mismo es parte del equipo de desarrollo como ya se
explico anteriormente y su importancia es capital tanto en la definicin de las
35
Si bien las Historias de Usuarios tienen alguna similitud con los Uses Cases de
UML el proceso de creacin es muy distinto. Es ms extensa que un requisito (que
suele ser una frase corta) y menos que un caso de uso (que puede ser de una o
dos pginas).
Los desarrolladores son los responsables de catalogar las historias de los usuarios
y asignarles una duracin, el tiempo de programacin de cada una de estas
historias no debe ser mayor a tres semanas y menor a una, en el caso que ocupen
menos de una semana se las agrupa y si ocupan ms de tres se las divide.
Cuando se habla de una semana de trabajo se considera 5 das a 8 horas cada
da. Al hacer la planificacin se aplica un factor de correccin medido de proyectos
anteriores para ajustar este tiempo ideal al real.
Las historias de los usuarios se plasmarn en tarjetas especialmente diseadas
para ese fin.
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
36
7.14.2. Planificacin
La planificacin debe definir cada una de las iteraciones, teniendo en cuenta que
se deben generar entregas frecuentemente.
El objetivo es que las necesidades del cliente guen el desarrollo y no la
planificacin, por lo tanto se debe prever que cada 3 a 5 iteraciones se tengan que
revisar las historias de los usuarios y renegociar nuevamente la planificacin.
Se debe tambin definir la planificacin de cada iteracin, en esta planificacin se
especifica que historias de usuarios son prioritarias y se agrega las historias de
usuarios que no han pasado las pruebas de la iteracin anterior.
Es por eso, que el diseo que seguimos se puede calificar de continuo. Se trata en
general de optimizar al final del desarrollo, se trata de "make it work, make it right
and then make it fast" (haz que funcione, hazlo bien y entonces haz que sea
rpido).
7.14.3. Diseo.
Se habla de diseo continuo, el mismo debe ser revisado y mejorado
permanentemente a medida que se agregan funcionalidades, esto se contrapone
con las metodologias tradicionales que hablan de un gran diseo previo.
La metfora tiene un papel central en esta etapa, mejorando la relacin en el
equipo de trabajo y dando una visin general del sistema que se quiere
desarrollar.
Puede suceder que el cliente participe en esta etapa. Muchas veces se utiliza un
tipo de tarjetas denominadas CRC (Class, Responsabilities and Collaboration Clases, Responsabilidades y Colaboracin). Para cada clase identificada se
rellenar una tarjeta de este tipo y se especificar su finalidad as como otras
clases con las que interaccione. Para algunos autores el uso de estas tarjetas solo
debe limitarse a los proyectos complejos.
37
Las pruebas unitarias se desarrollan antes de codificar. Hay mucha literatura sobre
las pruebas unitarias pero en general se coincide en que cuanto ms difcil sea
implementar una prueba, ms necesaria es.
Las pruebas unitarias se diferencias de las de aceptacin,
7.14.5. Integracin
Despus de codificar cada nueva funcionalidad se debe integrar, esta integracin
como ya fue mencionado es continua, evitando una gran integracin final.
En todo desarrollo de programacin extrema debera existir, por tanto, una versin
siempre integrada. Existe un repositorio central que debe sincronizar cada modulo
al menos una vez por da.
7.14.6. Refactorizacin
Refactorizar consiste en mejorar el cdigo. El cdigo no solo debe funcionar sino
debe ser simple. El proceso de refactorizacin incluye las pruebas unitarias.
Dado que se trata de desarrollos que se basan en los cambios, todo el proceso en
de tipo incremental.
8. XP y Open Source
Existen algunas caractersticas comunes entre las Metodologas giles y el Open
Source Software que sern analizadas en este capitulo, sin lugar a dudas ambos
han recorrido un camino en el desarrollo de sistemas con muchos puntos en
comn.
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
38
39
sin lugar a dudas muchos puntos en comn con los de las Metodologas giles,
algunos de los principios planteados por Raymon son:
Los buenos programadores saben que escribir. Los mejores que reescribir.
Si usted trata a sus beta tester como si fueran un recurso muy valioso, ellos le
respondern como recursos muy valiosos.
Etc.
OSS
Metodologas giles
Colaborativos,
capacitados, Colaborativos capaces giles.
giles.
En un mismo lugar fsico
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
40
Clientes
Requerimientos
Arquitectura
Tamao
Objetivo principal
Distribuidos geogrficamente
Dedicados,
capaces Autorizados,
especializados,
colaborativos
integrantes del equipo de
desarrollo.
Voltiles
Cambian rpidamente
Diseada
para
los Diseada
para
los
requerimientos actuales.
requerimientos actuales
Equipos grandes y dispersos. Equipos y sistemas pequeos.
Sistema pequeos
Problemas desafiantes
Rapidez.
O.S.S.
Metodologas giles
Metodologa Distribucin frecuente de Se desarrollan pequeos releases
Incremental
releases, con aporte de los
desarrolladores y testeados
por la comunidad, segn
Linus Torvald Release early,
release often
Cooperativo Existe un propietario
proyecto,
pero
desarrolladores
se
por
pares
de
proceso
de
41
Sencillo
Ingeniera Social.
Se trata de utilizar procesos Se trata de garantizar un proceso
de
construccin
ortodoxos,
con
es la calidad
Los requerimientos se van Una de las razones del nacimiento de
elaborando
constantemente las
Metodologas
giles
es
la
9. Conclusiones
Existe un antecedente claro de las metodologas giles que es el mtodo
Incremental e Interactivo, el origen de estas metodologas datan de 1930 y se
observan muchos proyectos desarrollados a partir de la dcada del 60.
Considerando que el Manifiesto de las Metodologas giles surge en el ao 2001,
estamos considerando metodologas que cuentan con antecedentes pero que se
Metodologas Agiles, programacin extrema
Lic. Horacio Kuna ASC Sergio Caballero
42
rea
Metodologas giles
Desarrolladores
43
Clientes
Especializados, representativos ,
situados en el mismo lugar
y autorizados.
Requerimientos
Arquitectura
Tamao
Objetivo Principal
Rapidez.
44
45
10.Bibliografa
46
SCRUM: http://controlcaos.com
47