Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice General
Motivacin del trabajo de grado........................................................................................3
ntroduccin a las metodologas giles..............................................................................6
Historia de las metodologas giles..............................................................................6
Manifiesto gil..............................................................................................................7
Los 12 principios giles.................................................................................................8
Distintas Metodologas giles.....................................................................................10
Introduccin a eXtreme Programming............................................................................14
Su creador: Kent Beck.............................................................................................14
Descripcin de la Metodologa: XP detallado.............................................................15
Actividades de Xp.......................................................................................................16
Escuchar..................................................................................................................16
Disear.....................................................................................................................16
Codificar..................................................................................................................16
Hacer pruebas..........................................................................................................17
Proceso XP..................................................................................................................17
Prcticas XP................................................................................................................18
El juego de la planificacin.....................................................................................18
Entregas pequeas...................................................................................................18
Metfora..................................................................................................................19
Diseo simple..........................................................................................................19
Pruebas....................................................................................................................19
Refactorizacin (Refactoring).................................................................................19
Programacin en parejas.........................................................................................20
Propiedad colectiva del cdigo................................................................................20
Integracin continua................................................................................................20
40 horas por semana................................................................................................21
Cliente on-site..........................................................................................................21
Estndares de programacin....................................................................................21
Artefactos XP..............................................................................................................23
Las Historias de Usuario.........................................................................................23
Task Cards...............................................................................................................23
CRC Card................................................................................................................24
Roles XP......................................................................................................................24
Programador............................................................................................................24
Cliente.....................................................................................................................25
Encargado de pruebas (Tester)................................................................................25
Encargado de seguimiento (Tracker).......................................................................25
Entrenador (Coach).................................................................................................25
Consultor.................................................................................................................26
Gestor (Big boss).................................................................................................26
Casos de estudio en los que se utilizo Extreme Programming................................26
Bibliografa......................................................................................................................31
Glosario...........................................................................................................................33
http://en.wikipedia.org/wiki/Winston_W._Royce
http://en.wikipedia.org/wiki/MBASE
4
http://www.qualitrain.com.mx/index.php/Procesos-de-software/Evolucion-de-losprocesos-de-desarrollo-Primera-parrte/Page-3.html
3
http://es.wikipedia.org/wiki/Desarrollo_%C3%A1gil_de_software
http://es.wikipedia.org/wiki/Desarrollo_%C3%A1gil_de_software
5
El objetivo de dicha reunin fue esbozar los valores y principios que deberan
permitir a los equipos involucrados en un proyecto desarrollar sus tareas de forma
rpida y respondiendo a los cambios que puedan surgir a lo largo de todo el ciclo de
vida del proyecto.
Pretendan brindar una alternativa a los procesos de desarrollo de software
tradicionales, que se caracterizaban por ser rgidos y dirigidos por la documentacin que
se genera en cada una de las actividades desarrolladas.
Tras esta reunin se cre The Agile Alliance, una organizacin, sin fines de
lucro que se dedica a promover los conceptos relacionados con el desarrollo gil de
software y ayuda a las organizaciones para que adopten dichos conceptos en sus
procesos. El punto de partida de dichos valores y principios fue el Manifiesto gil. Este
documento resume la filosofa gil7.
Manifiesto gil
Los creadores del manifiesto gil son:
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
www.willydev.net/descargas/prev/TodoAgil.pdf
7
una vez que se cuente con el quipo adecuado de desarrollo, ste sea quien establezca el
entorno necesario para desarrollarse cmodamente.
Desarrollar software
documentacin.
que
funciona
ms
que
conseguir
una
buena
Basados en los valores anteriores enunciados se han formulado los doce principios
que componen el manifiesto gil. Estos son caractersticas comunes que deben tener
todos los procesos giles y que los diferencian de los procesos tradicionales.
Este principio establece que se deben realizar pequeas entregas al cliente para
que ste vaya viendo el estado del proyecto y pueda comunicar su satisfaccin o
descontento frente a las expectativas sobre el sistema. Las entregas realizadas a las
pocas semanas de empezado el proyecto, facilitan la comprensin de los requerimientos
del cliente. El cliente luego decide si pone en marcha dicho software con la
funcionalidad que ahora ste le proporciona o simplemente lo revisa e informa los
posibles cambios que desea que se realicen.
2. Dar la bienvenida a los cambios. Se capturan los cambios para que el cliente
tenga una ventaja competitiva.
Este principio nos dice que debemos tratar de hacer entregas pequeas en cortos
plazos y no dejar pasar grandes intervalos de tiempo entre una entrega y la siguiente.
Este principio hace nfasis en la entrega de componentes de software en lugar de
componentes de planificacin o documentacin, ya sea de anlisis o de diseo.
4. La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del
proyecto.
La interaccin con el cliente constituye una pieza clave del desarrollo del
proyecto. Este principio nos dice que tanto cliente como equipo deben trabajar
conjuntamente para facilitar la comunicacin y asegurar as el xito del proyecto.
5. Construir el proyecto en torno a individuos motivados. Darles el entorno y el
apoyo que necesitan y confiar en ellos para conseguir finalizar el trabajo.
Los miembros del equipo deben hablar entre ellos y con el cliente constantemente.
Si bien pueden existir otras formas de comunicacin como los documentos, no toda la
informacin necesaria estar comprendida en ellos. Es por esto que la comunicacin
oral debe ser la principal forma de comunicacin.
7. El software que funciona es la medida principal de progreso.
Este principio nos dice que debe mantenerse un ritmo constante de desarrollo
durante todo el proyecto en lugar de tratar de desarrollar lo ms rpido posible. Esto
asegurar una mayor calidad en el producto final.
9. La atencin continua a la calidad tcnica y al buen diseo mejora la agilidad.
Debido a los constantes cambios del entorno, el equipo tambin debe adaptarse al
nuevo escenario de forma continua para poder realizar las modificaciones necesarias
para poder trabajar correctamente y conseguir buenos resultados. Puede realizar
cambios en su organizacin, sus reglas, sus convenciones, sus relaciones, etc., y de sta
forma seguir siendo gil.
Extreme Programming: XP
Es el proceso gil ms popular y utilizado de todas las metodologas giles. Esta
metodologa pone mayor nfasis en la colaboracin, en la rpida y temprana entrega de
componentes de software y en prcticas de desarrollo simples. Sus prcticas
establecidas core son: un equipo trabajando en un mismo ambiente, pair programming
(programacin de a pares), uso constante de y la promocin del desarrollo orientado al
testing (realizar pruebas antes de programar). Hablaremos de xp con mayor detalle a lo
largo del trabajo.
Scrum
Metodologa desarrollada por Ken Schwaber, Jeff Sutherland y Mike Beedle. La
misma establece un marco para el management o gestin de proyectos, que ha sido
empleado con xito durante los ltimos 10 aos. Se encuentra principalmente dirigida
para proyectos que cuentan con un rpido cambio de requerimientos o requerimientos
inestables que presentan difcultades a la hora de ser definidos. Sus principales
caractersticas son el desarrollo de software iterativo y las reuniones diarias. El
desarrollo iterativo establece que el desarrollo de software se debe realizar mediante
iteraciones, denominadas sprints, que son de corta duracin, aproximadamente de unos
30 das. El resultado de cada sprint es un incremento ejecutable que se muestra al cliente
junto con el resto de los stakeholders. Las reuniones diarias se realizan a lo largo de
todo el proyecto se realizan reuniones diarias que poseen una duracin de
aproximadamente 15 minutos. En ellas participa todo el equipo de desarrollo junto con
el cliente o un representante del mismo quienes conjuntamente coordinan e integran el
proyecto.
Crystal Methodologies
Las metodologas Crystal para el desarrollo de software se caracterizan por
estar focalizadas en las personas que componen el equipo de desarrollo, de quienes
depende el verdadero xito del proyecto; as como en la reduccin al mximo del
nmero de artefactos producidos en un tiempo determinado. Las mismas fueron
desarrolladas por Alistair Cockburn. Esta metodologa ve al desarrollo de software
como un juego cooperativo de invencin y comunicacin, limitado por los recursos a
utilizar8. El equipo de desarrollo constituye una pieza clave en el proceso, por lo que
8
http://www.willydev.net/descargas/prev/TodoAgil.pdf
11
han de ser invertidos grandes esfuerzos en mejorar sus habilidades y destrezas (tanto
conocimientos tcnicos como aptitudes personales); as como tener polticas bien
definidas de trabajo grupal. Estas polticas dependern del tamao del equipo,
establecindose una clasificacin por colores, por ejemplo Crystal Clear en el caso que
el equipo cuente con un nmero de entre 3 y 8 miembros; y Crystal Orange en el caso
que este compuesto por un nmero de entre 25 y 50 miembros.
12
Lean Development : LD
Lean Development es un metodologa pensada por Bob Charettes a partir de
su trabajo realizado en proyectos relacionados con la industria automotriz japonesa en la
dcada de los 80. Fue utilizada en numerosos proyectos del rea de telecomunicaciones
en toda Europa. En ella, los cambios se consideran riesgos, pero si se manejan
adecuadamente se pueden convertir en oportunidades que mejoren la productividad del
equipo as como la calidad del producto. Su principal caracterstica es introducir un
mecanismo para implementar dichos cambios sin que impacte de forma negativa en las
componentes previamente desarrolladas del sistema.
A continuacin se presenta una tabla en la que se compara las distintas
aproximaciones giles en base a tres parmetros: vista del sistema como algo cambiante,
tener en cuenta la colaboracin entre los miembros del equipo y caractersticas ms
especficas de la propia metodologa (CM) como son los resultados, la simplicidad, la
excelencia tcnica, adaptabilidad, etc.
Tambin incorpora como referencia no gil el Capability Madurity Model
(CMM).
Los valores ms altos representan una mayor agilidad.
Como se puede observar en la Figura 3, todas las metodologas giles tienen una
significativa diferencia del ndice de agilidad respecto a CMM y entre ellas destacan
ASD, Scrum y XP como las ms giles a nivel general. Asimismo se puede observar que
XP, ASD y Scrum presentan los mayores valores con respecto a la adaptacin de los
cambios dentro del sistema. Lo mismo ocurre con la colaboracin y los resultados
obtenidos en donde se les suma a la lista Crystal.
Ahora bien, si observamos la grilla verticalmente, podremos notar que XP y ASD
son las metodologas con mayor nivel de agilidad de todas ya que poseen cinco de los
9
http://www.cyta.com.ar/ta0502/v5n2a1.htm
13
sietes aspectos analizados con el mayor valor posible de agilidad. Luego con un nivel
inferior pero an as elevado de agilidad les siguen Cristal y Scrum.
Como podemos ver XP presenta notables ventajas con respecto a las otras
metodologas de desarrollo y son estas ventajas las que precisamente lo posesionan
fuertemente dentro de la familia Agile as como en el actual mercado de la informtica.
14
10
10
http://images.google.com.ar
2008. Implementation Patterns. Addison-Wesley.
12
1999. Extreme Programming Explained: Embrace Change. Addison-Wesley.
13
2003. Contributing to Eclipse: Principles, Patterns, and Plugins. With Erich Gamma.
Addison-Wesley.
14
2002. Test-Driven Development: By Example. Addison-Wesley. Winner of the Jolt
Productivity Award.
11
15
Programming15, Smalltalk Best Practice Patterns16, and the JUnit Pocket Guide17.
Obtuvo sus ttulos en Computer Science (Ciencias de la computacin) en la
Universidad de Oregon. Sus actividades de negocio incluyen: contract programming
utilizando Java/Eclipse, writing, consulting y presentacin de workshops con su
compaera Cynthia Andres.
En la actualidad Beck divide su tiempo entre la escritura, la programacin y el
entrenamiento.
Su contribucin al desarrollo de software incluye patrones, el redescubrimiento
de:
Test-first programming
Es una metodologa basada en las pruebas unitarias como parte vital y buena
prctica del desarrollo de software. La misma establece que previamente a realizar la
implementacin del sistema deben realizarse dichas pruebas y slo teniendo la totalidad
de ellas aprobadas podr comenzarse entonces a desarrollar el cdigo fuente.
Esta metodologa cuenta con la particularidad de ser a su vez parte de otras
metodologas (XP y TDD Test driven Development).
xUnit
Es un framework de pruebas conducido por cdigo que ha llegado a conocerse
colectivamente y tomado gran importancia en los ltimos tiempos. Dicho framework
esta basado en un diseo de Kent Beck, implementado originalmente para Smalltalk.
Actualmente, se encuentra disponible para muchos lenguajes de programacin y
plataformas de desarrollo.
Finalmente, su mayor aporte al mundo de la informtica: Extreme
Programming, metodologa de la cual hablaremos con mayor detalle posteriormente.
16
Actividades de Xp
La metodologa cuenta con cuatro actividades bsicas y esenciales: escuchar,
disear, codificar y hacer pruebas. A continuacin se describen las mismas.
Escuchar
Beck menciona en una frase que los programadores no lo conocen todo, y sobre
todo desconocen muchas cosas que las personas de negocios piensan que son
interesantes.
Al realizar las pruebas sobre el sistema es necesario preguntar si los resultados
obtenidos son los deseados, es decir, se debe preguntar al cliente si era precisamente lo
obtenido lo que l estaba buscando por parte del software. Es necesario escuchar por
parte de los clientes cules son los problemas que presenta su negocio. Se debe tener
una escucha activa, explicando lo que es fcil y lo que es difcil de obtener a la hora de
desarrollar el sistema. La retroalimentacin entre ambas partes (cliente y equipo de
desarrollo) ser la que brindar la mayor ayuda a todos a la hora de entender los
problemas existentes a resolver. Es por ello que el equipo del proyecto debe estar
continuamente atento a lo que el cliente esta diciendo y debe hacerse escuchar por parte
del mismo a la hora de proponer nuevas soluciones.
Disear
El diseo moldea la estructura que ordenar la lgica de la aplicacin. Un correcto
diseo brinda la posibilidad de que el sistema crezca con cambios en un solo lugar, lo
hace extensible y reutilizable. Los diseos deben de ser sencillos, si alguna parte del
sistema es de desarrollo complejo, lo apropiado es dividirla en varias partes. Si hay
fallas en el diseo o malos diseos, estas deben ser corregidas cuanto antes porque de lo
contrario se vern plasmadas en el producto disminuyendo su calidad o en ocasiones, no
cumpliendo los requerimientos para los cuales ha sido creado el producto.
17
Codificar
El proceso de codificacin se basa en plasmar las ideas y funcionalidades del
sistema a travs del cdigo. En programacin, el cdigo expresa la interpretacin del
problema en trmino de los programadores. De esta forma podemos utilizar el cdigo
para comunicar, para hacer comunes las ideas y tambin para aprender y mejorar el
nivel de los mismos recursos involucrados en el desarrollo del proyecto. El cdigo es el
idioma de comunicacin de los programadores. Es por ellos que se recomienda que el
mismo sea sencillo y legible para todos los integrantes del equipo.
Hacer pruebas
Todas las caractersticas del software que muestran su correcto funcionamiento
deben ser demostradas mediante pruebas. Las pruebas brindan la oportunidad de saber
si lo implementado es lo que en verdad se tena en mente por parte del cliente. Las
pruebas son las que nos indican que el trabajo, es decir el propio sistema se encuentra
funcionando en perfectas condiciones. Cuando no es posible pensar en ninguna prueba
que pueda originar una falla en el sistema, entonces se da por finalizado el proceso de
testing o prueba del sistema. Es importante destacar que a la hora de realizar las pruebas
es importante la objetividad de dichas pruebas y que las mismas sean realizadas desde el
punto de vista del usuario. Es por ello que es recomendable que no sean realizadas por
los mismos programadores. Recordemos que al hablar de pruebas en este apartado
hacemos referencia a pruebas de testeo posterior al desarrollo del cdigo y no a las
pruebas unitarias realizadas previamente al desarrollo.
Resumiendo las actividades de Xp: Debe codificarse porque sin cdigo no hay
programas, se deben hacer pruebas de testeo porque sin pruebas no es posible
determinar si se ha acabado de codificar, se debe escuchar, porque si no hay escucha no
existe forma de saber que codificar ni probar, y finalmente se tiene que disear para
poder codificar, probar y prestar una mejor atencin para poder focalizar la escucha en
los puntos crticos o poco definidos del proyecto.
Proceso XP
Un proyecto XP tiene xito cuando el equipo de desarrollo cumple con todos las
expectativas del cliente, es decir el producto final realiza todo aquello para lo que fue
pensado. Para poder llevar a cabo esto, el cliente debe seleccionar el valor de negocio a
implementar (funcionalidad) basndose en la habilidad del equipo para medir la
funcionalidad que puede entregar dentro de un determinado perodo de tiempo. Es decir,
el cliente prioriza las funcionalidades y las agrupa acorde a la capacidad del equipo y la
importancia que stas poseen para l.
El ciclo de desarrollo de una iteracin consiste (a grandes rasgos) en los siguientes
pasos:
18
Prcticas XP
Uno de los principales anlisis que se realiza en XP es el estudio de la reduccin
de los costos que acarrean los cambios a lo largo de todo el proyecto. Se trata de
llevarlos a valores de forma tal que el diseo evolutivo funcione ptimamente. XP
apuesta por un crecimiento lento del costo del cambio con un comportamiento
asinttico; es decir, trata de reducir los costos de la mayor forma posible hasta llevarlos
a su valor mnimo y que estos permanezcan constantes en dicho valor. Esto es posible
de conseguir gracias a las tecnologas disponibles para ayudar en el desarrollo de
software y a la aplicacin disciplinada de las prcticas que describiremos a
continuacin.
El juego de la planificacin
Es un espacio frecuente de comunicacin entre el cliente y los programadores. El
equipo tcnico realiza una estimacin del esfuerzo requerido para la implementacin de
las historias de usuario y los clientes deciden sobre el mbito y tiempo de las entregas y
de cada iteracin. Esta prctica se puede ilustrar como un juego, donde existen dos tipos
de jugadores: Cliente y Programador. El cliente establece la prioridad de cada historia
de usuario, de acuerdo con el valor que aporta para el negocio. Los programadores
estiman el esfuerzo asociado a cada historia de usuario. Se ordenan las historias de
usuario segn prioridad y esfuerzo, y se define el contenido de la entrega y/o iteracin,
apostando por enfrentar lo de ms valor y riesgo cuanto antes. Este juego se realiza
durante la planificacin de la entrega, en la planificacin de cada iteracin y cuando sea
necesario reconducir el proyecto.
Entregas pequeas
La idea es producir rpidamente versiones del sistema que sean operativas, aunque
obviamente no cuenten con toda la funcionalidad pretendida para el sistema pero si que
19
Metfora
En XP no se enfatiza la definicin temprana de una arquitectura estable para el
sistema. Dicha arquitectura se asume en forma evolutiva. Los posibles inconvenientes
que se generarn por no contar con ella explcitamente en el comienzo del proyecto se
solventan con la existencia de una metfora. El sistema es definido mediante una
metfora o un conjunto de metforas compartidas por el cliente y el equipo de
desarrollo. Una metfora es una historia compartida que describe cmo debera
funcionar el sistema. Martn Fowler18 explica que la prctica de la metfora consiste en
formar un conjunto de nombres que acten como vocabulario para hablar sobre el
dominio del problema. Este conjunto de nombres ayuda a la nomenclatura de clases y
mtodos del sistema. Esta prctica simplemente nos dice que a la hora de abordar un
problema complejo, debemos atacar al mismo estableciendo una analoga entre dicha
problemtica y una historia o situacin que nos permita visualizarla y resolverla con una
mayor facilidad.
Diseo simple
Se debe disear la solucin ms simple que pueda funcionar y ser implementada
en un momento determinado del proyecto. La complejidad innecesaria y el cdigo extra
debe ser removido inmediatamente. Kent Beck dice que en cualquier momento el diseo
adecuado para el software es aquel que: supera con xito todas las pruebas, no tiene
lgica duplicada, refleja claramente la intencin de implementacin de los
programadores y tiene el menor nmero posible de clases y mtodos. 19
Pruebas
La produccin de cdigo est dirigida por las pruebas unitarias. Las pruebas
unitarias son establecidas antes de escribir el cdigo y son ejecutadas constantemente
ante cada modificacin del sistema. Los clientes escriben las pruebas funcionales para
cada historia de usuario que deba validarse. En este contexto de desarrollo evolutivo y
de nfasis en pruebas constantes, la automatizacin para apoyar esta actividad es
crucial.
Refactorizacin (Refactoring)
La refactorizacin es una actividad constante de reestructuracin del cdigo con el
objetivo de remover duplicacin de cdigo, mejorar su legibilidad, simplificarlo y
hacerlo ms flexible para facilitar los posteriores cambios. La refactorizacin mejora la
18
19
http://martinfowler.com/
http://www.cyta.com.ar/ta0502/v5n2a1.htm
20
estructura interna del cdigo sin alterar su comportamiento externo. Robert Martn 20
seala que el diseo del sistema de software es una cosa viviente. No se puede imponer
todo en un inicio, pero en el transcurso del tiempo este diseo evoluciona conforme
cambia la funcionalidad del sistema. Para mantener un diseo apropiado, es necesario
realizar actividades de cuidado continuo durante el ciclo de vida del proyecto.
De hecho, este cuidado continuo sobre el diseo es incluso ms importante que el
diseo inicial. Un concepto pobre al inicio puede ser corregido con esta actividad
continua, pero sin ella, un buen diseo inicial se degradar.
Programacin en parejas
Toda la produccin de cdigo debe realizarse con trabajo en parejas de
programadores.
Las principales ventajas de introducir este estilo de programacin son:
- Una gran cantidad de errores son detectados conforme son introducidos los
distintos mdulos desarrollados. Se realizan inspecciones de cdigo continuas,
por consiguiente la tasa de errores del producto final es ms baja.
- Los diseos son mejores y el tamao del cdigo es menor (continua discusin de
ideas de los programadores).
- Los problemas de programacin se resuelven ms rpidamente.
- Se posibilita la transferencia de conocimientos de programacin entre los
miembros del equipo.
- Varias personas entienden las diferentes partes sistema
- Los programadores conversan mejorando as el flujo de la informacin y la
dinmica del equipo.
- Los programadores disfrutan ms su trabajo.
Dichos beneficios se consiguen despus de varios meses de practicar la
programacin en parejas. Se estima que este lapso de tiempo vara de 3 a 4 meses.
Integracin continua
Cada pieza de cdigo es integrada en el sistema una vez que est lista. As, el
sistema puede llegar a ser integrado y construido varias veces en un mismo da. Todas
las pruebas son ejecutadas y tienen que ser aprobadas para que el nuevo cdigo sea
20
http://www.objectmentor.com/omTeam/martin_r.html
21
Cliente on-site
En esta prctica se establece que el cliente debe estar presente y disponible en
todo momento para el equipo de desarrollo. Gran parte del xito del proyecto XP se
debe a que es el cliente quien conduce constantemente el trabajo hacia lo que aportar
mayor valor de negocio y de esta forma, los programadores pueden resolver de manera
inmediata cualquier duda asociada. La comunicacin oral es ms efectiva que la escrita,
ya que esta ltima toma mucho tiempo en generarse y puede tener ms riesgo de ser mal
interpretada. En caso de que el cliente no cuente con dicha disponibilidad necesaria, se
recomienda lo siguiente: intentar conseguir un representante que pueda estar siempre
disponible y que acte como interlocutor del cliente, contar con el cliente al menos en
las reuniones de planificacin, establecer visitas frecuentes de los programadores al
cliente para validar el sistema, anticiparse a los problemas asociados estableciendo
llamadas telefnicas frecuentes y conferencias reforzando el compromiso de trabajo en
equipo.
Estndares de programacin
XP enfatiza la comunicacin de los programadores a travs del cdigo, con lo cual
es indispensable que se sigan ciertos estndares de programacin (del equipo, de la
organizacin u otros estndares reconocidos para los lenguajes de programacin
utilizados). Los estndares de programacin mantienen el cdigo legible para los
miembros del equipo, facilitando los cambios.
21
http://www.extremeprogramming.org/
23
Artefactos XP
Las Historias de Usuario
Las historias de usuario son la tcnica utilizada en XP para especificar los
requisitos del software. Estas constituyen el artefacto ms importante de XP. Se trata de
tarjetas de papel en las cuales el cliente describe brevemente las caractersticas que el
sistema debe poseer, sean requisitos funcionales o no funcionales.
El tratamiento de las historias de usuario es muy dinmico y flexible, en cualquier
momento del proyecto las historias de usuario pueden romperse en varias historias de
usuario, reemplazarse por otras ms especficas o generales, aadirse nuevas o ser
modificadas. Cada historia de usuario es lo suficientemente comprensible y delimitada
para que los programadores puedan implementarla en solo unas semanas.
Respecto de la informacin contenida en la historia de usuario, existen varias
plantillas sugeridas pero no existe un consenso al respecto. En muchos casos slo se
propone utilizar un nombre y una descripcin o slo una descripcin, ms quizs una
estimacin de esfuerzo en das. Beck en su libro presenta un ejemplo de ficha (customer
story and task card) en la cual pueden reconocerse los siguientes contenidos: fecha, tipo
de actividad (nueva, correccin, mejora), prueba funcional, nmero de historia,
prioridad tcnica y del cliente, referencia a otra historia previa, riesgo, estimacin
tcnica, descripcin, notas y una lista de seguimiento con la fecha, estado de cosas por
terminar y comentarios.
Una de los interrogantes (que tambin se presenta cuando se utilizan casos de uso)
es: Cul es el nivel de granularidad adecuado para una historia de usuario?
Desafortunadamente no existe una respuesta tajante a este interrogante. Jeffries dice que
depende de la complejidad del sistema aunque establece que debe haber al menos una
historia por cada caracterstica importante del mismo, y propone realizar una o dos
historias por programador en un perodo de un mes. Si se tienen menos, probablemente
sea conveniente dividir las historias en varias; si se tienen ms, por el contrario, lo
mejor es disminuir el detalle y agruparlas. Para efectos de planificacin, las historias
pueden ser de una a tres semanas en tiempo de programacin (para no superar el
tamao de una iteracin, recordemos que en XP las iteraciones son de corta duracin).
No hay que preocuparse si en un principio no se identifican todas las historias de
usuario. Al comienzo de cada iteracin estarn registrados los cambios en las historias
de usuario y segn eso se planificar la siguiente iteracin.
Las historias de usuario son descompuestas en tareas de programacin y asignadas
a los programadores para ser implementadas durante una iteracin.
Task Cards
Como hemos mencionado anteriormente las historias de usuario se encuentran
compuestas por distintas tareas. Para brindar informacin acerca de las mismas, se
24
utilizan las denominadas Task Cards.Si bien tampoco existe una plantilla o template
especfico para las mismas se recomiendan que contengan la siguiente informacin: el
numero de tarea, la historia de usuario a la que hacen referencia, el nombre de la tarea,
el tipo de tarea (si es de desarrollo, de correccin, de mejora, o algn otro tipo de tarea
especfico), los puntos estimados, una fecha de inicio, una fecha de finalizacin, el
programador responsable de ella, y una breve descripcin de la tarea (en que consiste la
misma).
CRC Card
Estas tarjetas pueden ser tambin denominadas: tarjetas de clase-responsabilidadcolaboracin. Estas tarjetas se dividen en tres secciones que contienen la informacin
del nombre de la clase, sus responsabilidades y sus colaboradores.
Una clase es cualquier persona, cosa, evento, concepto, pantalla o reporte. Las
responsabilidades de una clase son las cosas que conoce y las que realiza, sus atributos y
mtodos. Los colaboradores de una clase son las dems clases con las que trabaja en
conjunto para llevar a cabo sus responsabilidades.
En la prctica conviene tener pequeas tarjetas de cartn, que se llenarn y que
son mostradas al cliente, de manera que se pueda llegar a un acuerdo sobre la validez de
las abstracciones propuestas.
Los pasos a seguir para llenar las tarjetas son los siguientes:
- Encontrar clases
- Encontrar responsabilidades
- Definir colaboradores
- Disponer las tarjetas
Para encontrar las clases debemos pensar qu cosas interactan con el sistema (en
nuestro caso el usuario), y qu cosas son parte del sistema, as como las pantallas tiles
a la aplicacin (un despliegue de datos, una entrada de parmetros y una pantalla
general, entre otros). Una vez que las clases principales han sido encontradas se procede
a buscar los atributos y las responsabilidades. Para esto se puede formular la siguiente
pregunta: Qu sabe la clase? y Qu hace o como queremos que se comporte la clase?
Finalmente se buscan los colaboradores dentro de la lista de clases que se tenga es decir
quienes queremos que interacten con cada clase.
Roles XP
Segn Kent Beck existen los siguientes distintos roles involucrados en un
desarrollo basado en la metodologa extreme programming:
25
Programador
El programador es el encargado de escribir las pruebas unitarias y producir el
cdigo de la aplicacin. El cdigo debe ser legible por los distintos programadores del
equipo y es recomendable una buena comunicacin, coordinacin y colaboracin entre
los distintos programadores y los otros miembros del equipo.
Cliente
El cliente es el encargado de escribir las historias de usuario y las pruebas
funcionales para validar su implementacin. Adems, es quien prioriza las historias de
usuario y decide cules han de ser implementadas en cada una de las iteraciones
centrndose en el mayor valor que stas le brindan al negocio. Al hablar de cliente
hacemos referencia al cliente propiamente dicho o a su representante en aquellos casos
que el propio cliente no pueda realizar dichas tareas.
26
Entrenador (Coach)
Es coach es el responsable del proceso global. Es quien posee mayores
conocimientos sobre el proceso de la metodologa (extreme programming) y quien
provee las guas a los miembros del equipo de forma que se apliquen correctamente
todas las prcticas XP y se siga el proceso adecuadamente.
Consultor
El consultor es un miembro externo del equipo con un conocimiento especfico en
algn tema necesario para el proyecto. Gua al equipo para resolver un problema
especfico. Los consultores son llamados en ocasiones especiales donde existe alguna
problemtica (ya sea tcnica o de lgica del negocio) que el equipo no puede resolver.
Tema principal: Este artculo trata sobre el estudio de los distintos factores:
personas, proyecto y proceso, para evaluar la conveniencia de la utilizacin de XP como
metodologa de desarrollo considerando el impacto que la misma metodologa podra
provocar en el management o gestin de un proyecto.
Para realizar dicho estudio se han tenido en cuenta tambin los requerimientos,
staff y factores externos (propios del negocio) para evaluar estas cuestiones.
Que nos dice: En este artculo se establece que con respecto al personal
27
involucrado en el proyecto:
Desarrolladores: Pueden no adaptarse al ambiente agile lo cual influye notablemente en
su rendimiento a la hora de desempear sus tareas. Esto se debe a que la falta
documentacin complica el trabajo.
Testers: El testing debe ser automatizado entonces requiere de una skill o habilidad
nueva por parte del tester(un conocimiento mnimo en lo que es codificacin).
Poject leaders: Los lderes del proyecto deben integrar al equipo en la toma de
decisiones.
Managers: Tener una mayor relacin con el cliente, indicar el avance del proyecto.
Customers: El cliente debe tener un mayor compromiso con el proyecto y su desarrollo.
Debe tener compromiso, conocimiento, colaborar, debe ser representativo y con poder
suficiente.
Excecutive Management: La estimacin de costos es compleja, no se puede garantizar
las fechas de entrega, y en ocasiones las funcionalidades.
Con respecto a los procesos estable:
Planning: Es muy complejo planear, suele hacerse ligeramente y en el momento Ej.:
reuniones de scrum.
Documentacin: Escasa para ahorrar esfuerzo. Informacin es comunicada
informalmente. Luego se complica tambin el mantenimiento.
Development Process: Principios giles fuerzan a cambiar varios procesos
(refactorizacin, reviews, etc.)
Con respecto al proyecto, establece que la metodologa est orientada a proyectos con
requerimientos ligeros es recomendable utilizar la metodologa.
Conclusiones: En conclusin, las metodologas giles ofrecen un razonable ajuste
para el alto nivel de cambio que posee todo proyecto, mas precisamente para la
incertidumbre que puede presentarse en el mismo. Existen algunos principios que
utilizados en las correctas circunstancias, reducen notablemente el riesgo en el proyecto
y brindan una mayor productividad y calidad al mismo tiempo. Sin embargo las
metodologas giles no son apropiadas para todo tipo de proyectos. Un lder de proyecto
debe tener en cuenta las caractersticas del mismo para asegurar que una metodologa
gil sea indicada para el mismo. Los impactos de la utilizacin de la misma en la gente,
los procesos y el proyecto deben ser considerados y analizados de antemano.
On the effectiveness of pair programming
(Sobre la efectividad de la programacin en parejas)
Tema principal: En este artculo se estudia la efectividad de la programacin de a
pares desde el punto de vista de la duracin del proyecto, el tiempo, el esfuerzo y la
calidad del producto.
Que nos dice: El estudio muestra que gracias a la programacin de a pares, en
varios casos, se alcanza a producir ms en la mitad del tiempo. Tambin muestra que los
programadores estn ms contentos, y mejora el trabajo en equipo, el conocimiento del
equipo es mayor y la transferencia de conocimientos crece notablemente.
Conclusin: Como conclusin, el caso de estudio muestra que a la hora de
28
30
Que nos dice: Una de las principales clusulas de xp sugiere que se trabaje con
un cliente on-site, lo cual brinda la ventaja de poder reducir el trabajo de los cambios de
requerimientos notablemente.
Este cliente on-site puede predecir a grandes rasgos cuales podran llegar a ser los
cambios de requerimientos y el trabajo que ellos traeran desde una perspectiva basada
en la lgica del negocio
Los costos de los cambios de requerimientos tienden a incrementarse a lo largo
del ciclo de vida del proyecto (de manera exponencial).
Conclusin: Teniendo en cuenta lo expuesto en el artculo podemos decir que
como el cambio de requerimientos es inevitable, es muy importante tenerlo en cuenta.
La utilizacin de XP y sus practicas reducen notablemente la cantidad de rework y es
por ello que deben ser consideradas como buenas practicas de desarrollo porque estn
enfocadas principalmente en la satisfaccin del cliente y poseen una notable flexibilidad
para los cambios que dicho cliente plantea a lo largo del proyecto.
Extreme Programming ha demostrado ser una metodologa eficiente, flexible y
desafiante no por sus prcticas, sino por la integracin que propone entre ellas. Es una
metodologa relativamente joven que va ganando mercado da a da y es por ello que
debe ser tenida en cuenta no slo en la industria laboral sino tambin en el mbito
acadmico. Como toda metodologa nueva debe ser manejada con cuidado ya que,
como es natural, siempre existirn aquellos que se resistirn al cambio y aquellos que lo
acogern con gran entusiasmo.
Sin embargo, teniendo en cuenta los artculos analizados, deben considerarse
varios factores a la hora de decidir si es correcto o no implementar xp como
metodologa de desarrollo en un proyecto. Deben analizarse los aspectos tcnicos como
la naturaleza, complejidad y extensin del proyecto as como los recursos o personas
que integrarn el equipo de desarrollo.
31
32
Bibliografa
Agile Alliance website: http://www.agilealliance.org
http://c2.com/cgi/wiki?ExtremeProgramming
http://www.extremeprogramming.org/rules/iterative.html
Kent Beck.Extreme Programming Explained. Embrace Change.pdf
Kent Beck and Martin Fowler. Planning Extreme Programming.pdf
Patricio Letelier, Departamento de Sistemas Informticos y Computacin, Universidad
Politcnica de Valencia, letelier[arroba]dsic.upv.es
Manifiesto para el Desarrollo de Software gil, http://www.agilemanifesto.org
Martn Fowler. La Nueva Metodologa: http://www.programacion.net
Alistair, Desarrollo de Software gil,
http://www.amazon.com/exec/obidos/ASIN/0201699699/programacione-20
Jacobson, Ivar; Booch, Grady; Rumbaugh, James. El Proceso Unificado de Desarrollo
de Software.
http://es.wikipedia.org/wiki/Proceso_Unificado
http://www.dybox.cl/metodologia/rup.html. (2/5/05)
Annimo. Seminario sobre RUP en un entorno empresarial de desarrollo. http://www5.ibm.com/services/learning/es/tairis.nsf/(ExtCourseNr)/RUPS1ES. (2/5/05)
Kruchten, Philippe. The Rational Unified Process: An Introduction, 3rd edition. Addison
Wesley. December 2003.
Larman, Craig. Agile and Iterative Development: A Managers guide. Addison Wesley,
2003.
http://www.cyta.com.ar/ta0502/v5n2a1.htm
http://www.slideshare.net/fmmeson/metogologias-de-desarrollo-de-softwaretradicionales-vs-agiles
http://www.qualitrain.com.mx/index.php/Procesos-de-software/Evolucion-de-losprocesos-de-desarrollo-Primera-parrte.html
33
Michael Coram and Shawn Bohner. The Impact of Agile Methods on Software Project
Management. Department of Computer Science , Virginia Polytechnical Institute and
State University ,Blacksburg, Virginia 24061.
Tore Dyba, Erik Arisholm, Dag I.K. Sjoberg, Jo E. Hannay, and Forrest Shull. On the
Effectiveness of Pair Programming.
Panagiotis Sfetsos, Ioannis Stamelos, Lefteris Angelis and Ignatios Deligiannis.
Investigating the impact of Personality Types on Comunnication and collaboration
viability in Pair Programming - an empirical study. Department of Information
Technology, Thessaloniki, Greece.
Grigori Melnik, Frank Maurer .Introducing Agile Methods: Three Years of Experience.
Department of Computer Science,University of Calgary 2500 University Dr. N.W.,
Calgary, Alberta, T2N 1N4, Canada.
Mark C. Paulk. Extreme Programming from a CMM Perspectiva. Software Engineering
Institute.
Xu Bin, Yang Xiaohu, He Zhijun. EXTREME PROGRAMMING IN REDUCING THE
REWORK OF REQUIREMENT CHANGE. College of Computer Science &
Technology, Zhejiang Univ. 310027 Hangzhou, P. R. China
34
Glosario
Proceso de desarrollo: Es el conjunto de tcnicas y procedimientos que nos permiten
conocer los elementos necesarios para definir un proyecto de software.
Release / iteracin: Es una versin del producto que cumple con determinados
requerimientos.
Software: Es el conjunto de los programas de cmputo, procedimientos, reglas,
documentacin y datos asociados que forman parte de las operaciones de un sistema de
computacin.
Seniority: Nivel de experiencia y conocimientos de un recurso en un proyecto de
desarrollo. La misma puede ser Junior, Semi Sr. o Senior.
Refactorizacin: es una tcnica de la ingeniera de software para reestructurar un cdigo
fuente, alterando su estructura interna sin cambiar su comportamiento externo.
Rework: (o retrabado) es el trabajo excedente que debe realizarse en un proceso de
desarrollo.
Artefacto: producto tangible resultante del proceso de desarrollo de software. Algunos
artefactos como los casos de uso, diagrama de clases u otros modelos UML ayudan a la
descripcin de la funcin, la arquitectura o el diseo del software.
Ad hoc: locucin latina que significa literalmente para esto. Generalmente se refiere a
una solucin elaborada especficamente para un problema o fin preciso y, por tanto, no
es generalizable ni utilizable para otros propsitos.
Metodologa RAD: (Desarrollo rpido de aplicaciones) Proceso de desarrollo de
software que permite construir sistemas utilizables en poco tiempo.
Model-Based Architecture and Software Engineering: Proceso de desarrollo ideado por
Barry Boehm y Dan Port en la dcada del 90. El mismo se enfoca principalmente en el
aseguramiento de la consistencia y el refuerzo de los modelos de producto, procesos,
propiedades y xito del proyecto.
Mtodo de desarrollo de sistemas dinmicos (DSDM): es un mtodo que provee un
framework para el desarrollo gil de software, apoyado por su continua implicacin del
usuario en un desarrollo iterativo y creciente que sea sensible a los requerimientos
cambiantes, para desarrollar un sistema que rena las necesidades de la empresa en
tiempo y presupuesto. Es uno de los tantos mtodos de desarrollo gil de software y
forma parte de la conocida alianza gil.
35