Documentos de Académico
Documentos de Profesional
Documentos de Cultura
software
Resumen
El desarrollo de software no es una tarea fcil. Prueba de ello es que
existen numerosas propuestas metodolgicas que inciden en distintas
dimensiones del proceso de desarrollo. Por una parte tenemos aquellas
propuestas ms tradicionales que se centran especialmente en el
control del proceso, estableciendo rigurosamente las actividades
involucradas, los artefactos que se deben producir, y las herramientas y
notaciones que se usarn. Estas propuestas han demostrado ser
efectivas y necesarias en un gran nmero de proyectos, pero tambin
han presentado problemas en otros muchos. Una posible mejora es
incluir en los procesos de desarrollo ms actividades, ms artefactos y
ms restricciones, basndose en los puntos dbiles detectados. Sin
embargo, el resultado final sera un proceso de desarrollo ms complejo
que puede incluso limitar la propia habilidad del equipo para llevar a
cabo el proyecto. Otra aproximacin es centrarse en otras dimensiones,
como por ejemplo el factor humano o el producto software. Esta es la
filosofa de las metodologas giles, las cuales dan mayor valor al
individuo, a la colaboracin con el cliente y al desarrollo incremental del
software con iteraciones muy cortas. Este enfoque est mostrando su
efectividad en proyectos con requisitos muy cambiantes y cuando se
exige reducir drsticamente los tiempos de desarrollo pero
manteniendo una alta calidad. Las metodologas giles estn
revolucionando la manera de producir software, y a la vez generando
un amplio debate entre sus seguidores y quienes por escepticismo o
convencimiento no las ven como alternativa para las metodologas
tradicionales. En este trabajo se presenta resumidamente el contexto
en el que surgen las metodologas giles, sus valores, principios y
comparaciones con las metodologas tradicionales. Adems se describe
con mayor detalle Programacin Extrema (eXtreme Programming, XP)
la metodologa gil ms popular en la actualidad.
1.- Introduccin
En las dos ltimas dcadas las notaciones de modelado y
posteriormente las herramientas pretendieron ser las "balas de plata"
para el xito en el desarrollo de software, sin embargo, las expectativas
no fueron satisfechas. Esto se debe en gran parte a que otro importante
elemento, la metodologa de desarrollo, haba sido postergado. De nada
sirven buenas notaciones y herramientas si no se proveen directivas
para su aplicacin. As, esta dcada ha comenzado con un creciente
inters en metodologas de desarrollo. Hasta hace poco el proceso de
desarrollo llevaba asociada un marcado nfasis en el control del proceso
mediante una rigurosa definicin de roles, actividades y artefactos,
incluyendo modelado y documentacin detallada. Este esquema
"tradicional" para abordar el desarrollo de software ha demostrado ser
efectivo y necesario en proyectos de gran tamao (respecto a tiempo y
recursos), donde por lo general se exige un alto grado de ceremonia en
el proceso. Sin embargo, este enfoque no resulta ser el ms adecuado
para muchos de los proyectos actuales donde el entorno del sistema es
muy cambiante, y en donde se exige reducir drsticamente los tiempos
de desarrollo pero manteniendo una alta calidad. Ante las dificultades
para utilizar metodologas tradicionales con estas restricciones de
tiempo y flexibilidad, muchos equipos de desarrollo se resignan a
prescindir del buen hacer de la ingeniera del software, asumiendo el
riesgo que ello conlleva. En este escenario, las metodologas giles
emergen como una posible respuesta para llenar ese vaco
metodolgico. Por estar especialmente orientadas para proyectos
pequeos, las metodologas giles constituyen una solucin a medida
para ese entorno, aportando una elevada simplificacin que a pesar de
ello no renuncia a las prcticas esenciales para asegurar la calidad del
producto.
Las metodologas giles son sin duda uno de los temas recientes en
ingeniera de software que estn acaparando gran inters. Prueba de
ello es que se estn haciendo un espacio destacado en la mayora de
conferencias y workshops celebrados en los ltimos aos. Es tal su
impacto que actualmente existen 4 conferencias internacionales de alto
nivel y especficas sobre el tema1. Adems ya es un rea con cabida en
prestigiosas revistas internacionales. En la comunidad de la ingeniera
del software, se est viviendo con intensidad un debate abierto entre
los partidarios de las metodologas tradicionales (referidas
peyorativamente como "metodologas pesadas") y aquellos que apoyan
las ideas emanadas del "Manifiesto gil"2. La curiosidad que siente la
mayor parte de ingenieros de software, profesores, e incluso alumnos,
sobre las metodologas giles hace prever una fuerte proyeccin
industrial. Por un lado, para muchos equipos de desarrollo el uso de
metodologas tradicionales les resulta muy lejano a su forma de trabajo
actual considerando las dificultades de su introduccin e inversin
asociada en formacin y herramientas. Por otro, las caractersticas de
los proyectos para los cuales las metodologas giles han sido
especialmente pensadas se ajustan a un amplio rango de proyectos
industriales de desarrollo de software; aquellos en los cuales los
equipos de desarrollo son pequeos, con plazos reducidos, requisitos
voltiles, y/o basados en nuevas tecnologas.
El artculo est organizado como sigue. En la seccin 2 se introducen las
principales caractersticas de las metodologas giles, recogidas en el
Manifiesto y se hace una revisin de los principales mtodos giles. La
seccin 3 se centra en eXtreme Programming (XP), presentando sus
caractersticas particulares, como son las historias de usuario y los
roles, as como el proceso que se sigue y las prcticas que propone.
Finalmente aparecen las conclusiones.
2. METODOLOGAS GILES
En una reunin celebrada en febrero de 2001 en Utah-EEUU, nace el
trmino "gil" aplicado al desarrollo de software. En esta reunin
participan un grupo de 17 expertos de la industria del software,
incluyendo algunos de los creadores o impulsores de metodologas de
software. Su objetivo fue esbozar los valores y principios que deberan
permitir a los equipos desarrollar software rpidamente y respondiendo
a los cambios que puedan surgir a lo largo del proyecto. Se pretenda
ofrecer una alternativa a los procesos de desarrollo de software
tradicionales, caracterizados por ser rgidos y dirigidos por la
documentacin que se genera en cada una de las actividades
desarrolladas. Varias de las denominadas metodologas giles ya
estaban siendo utilizadas con xito en proyectos reales, pero les faltaba
una mayor difusin y reconocimiento.
Tras esta reunin se cre The Agile Alliance3, una organizacin, sin
nimo de lucro, dedicada a promover los conceptos relacionados con el
desarrollo gil de software y ayudar a las organizaciones para que
adopten dichos conceptos. El punto de partida es fue el Manifiesto gil,
un documento que resume la filosofa "gil".
Metodologa Metodologa
gil Tradicional
Pocos Ms Artefactos.
Artefactos. El El modelado es
modelado es esencial,
prescindible, mantenimiento
modelos de modelos
desechables.
No existe un Existe un
contrato contrato
tradicional, prefijado
debe ser
bastante
flexible
Cliente es El cliente
parte del interacta con
equipo de el equipo de
desarrollo desarrollo
(adems in- mediante
situ) reuniones
Orientada a Aplicables a
proyectos proyectos de
pequeos. cualquier
Corta tamao, pero
duracin (o suelen ser
entregas especialmente
frecuentes), efectivas/usadas
equipos en proyectos
pequeos (< grandes y con
10 equipos
integrantes) y posiblemente
trabajando en dispersos
el mismo sitio
La Se promueve
arquitectura que la
se va arquitectura se
definiendo y defina
mejorando a tempranamente
lo largo del en el proyecto
proyecto
Basadas en Basadas en
heursticas normas
provenientes provenientes de
de prcticas estndares
de produccin seguidos por el
de cdigo entorno de
desarrollo
3.2. Roles XP
Aunque en otras fuentes de informacin aparecen algunas
variaciones y extensiones de roles XP, en este apartado
describiremos los roles de acuerdo con la propuesta original
de Beck.
Programador
El programador escribe las pruebas unitarias y produce el
cdigo del sistema. Debe existir una comunicacin y
coordinacin adecuada entre los programadores y otros
miembros del equipo.
Cliente
El cliente escribe las historias de usuario y las pruebas
funcionales para validar su implementacin. Adems, asigna
la prioridad a las historias de usuario y decide cules se
implementan en cada iteracin centrndose en aportar
mayor valor al negocio. El cliente es slo uno dentro del
proyecto pero puede corresponder a un interlocutor que
est representando a varias personas que se vern
afectadas por el sistema.
Encargado de pruebas (Tester)
El encargado de pruebas ayuda al cliente a escribir las
pruebas funcionales. Ejecuta las pruebas regularmente,
difunde los resultados en el equipo y es responsable de las
herramientas de soporte para pruebas.
Encargado de seguimiento (Tracker)
El encargado de seguimiento proporciona realimentacin al
equipo en el proceso XP. Su responsabilidad es verificar el
grado de acierto entre las estimaciones realizadas y el
tiempo real dedicado, comunicando los resultados para
mejorar futuras estimaciones. Tambin realiza el
seguimiento del progreso de cada iteracin y evala si los
objetivos son alcanzables con las restricciones de tiempo y
recursos presentes. Determina cundo es necesario realizar
algn cambio para lograr los objetivos de cada iteracin.
Entrenador (Coach)
Es responsable del proceso global. Es necesario que
conozca a fondo el proceso XP para proveer guas a los
miembros del equipo de forma que se apliquen las prcticas
XP y se siga el proceso correctamente.
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.
Gestor (Big boss)
Es el vnculo entre clientes y programadores, ayuda a que el
equipo trabaje efectivamente creando las condiciones
adecuadas. Su labor esencial es de coordinacin.
4. PROCESO XP
Un proyecto XP tiene xito cuando el cliente selecciona el
valor de negocio a implementar basado en la habilidad del
equipo para medir la funcionalidad que puede entregar a
travs del tiempo. El ciclo de desarrollo consiste (a grandes
rasgos) en los siguientes pasos [12]:
5. PRCTICAS XP
La principal suposicin que se realiza en XP es la posibilidad
de disminuir la mtica curva exponencial del costo del
cambio a lo largo del proyecto, lo suficiente para que el
diseo evolutivo funcione. XP apuesta por un crecimiento
lento del costo del cambio y con un comportamiento
asinttico. Esto se consigue 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
constituyan un resultado de valor para el negocio. Una
entrega no debera tardar ms 3 meses.
Metfora
En XP no se enfatiza la definicin temprana de una
arquitectura estable para el sistema. Dicha arquitectura se
asume evolutiva y los posibles inconvenientes que se
generaran 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.
Martin Fowler en [6] 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.
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.
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 estructura interna del cdigo
sin alterar su comportamiento externo [8]. Robert Martin
[13] 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. Segn Cockburn y Williams en
un estudio realizado para identificar los costos y beneficios
de la programacin en parejas [4], las principales ventajas
de introducir este estilo de programacin son: muchos
errores son detectados conforme son introducidos en el
cdigo (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 menor
(continua discusin de ideas de los programadores), los
problemas de programacin se resuelven ms rpido, 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
informacin y la dinmica del equipo, y finalmente, los
programadores disfrutan ms su trabajo. Dichos beneficios
se consiguen despus de varios meses de practicar la
programacin en parejas. En los estudios realizados por
Cockburn y Williams este lapso de tiempo vara de 3 a 4
meses.
Propiedad colectiva del cdigo
Cualquier programador puede cambiar cualquier parte del
cdigo en cualquier momento. Esta prctica motiva a todos
a contribuir con nuevas ideas en todos los segmentos del
sistema, evitando a la vez que algn programador sea
imprescindible para realizar cambios en alguna porcin de
cdigo.
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 incorporado definitivamente. La
integracin continua a menudo reduce la fragmentacin de
los esfuerzos de los desarrolladores por falta de
comunicacin sobre lo que puede ser reutilizado o
compartido. Martin Fowler en [7] afirma que el desarrollo
de un proceso disciplinado y automatizado es esencial para
un proyecto controlado, el equipo de desarrollo est ms
preparado para modificar el cdigo cuando sea necesario,
debido a la confianza en la identificacin y correccin de los
errores de integracin.
40 horas por semana
Se debe trabajar un mximo de 40 horas por semana. No
se trabajan horas extras en dos semanas seguidas. Si esto
ocurre, probablemente est ocurriendo un problema que
debe corregirse. El trabajo extra desmotiva al equipo. Los
proyectos que requieren trabajo extra para intentar cumplir
con los plazos suelen al final ser entregados con retraso. En
lugar de esto se puede realizar el juego de la planificacin
para cambiar el mbito del proyecto o la fecha de entrega.
Cliente in-situ
El cliente tiene que estar presente y disponible todo el
tiempo para el equipo. 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
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 [12] Jeffries indica que se debe pagar un
precio por perder la oportunidad de un cliente con alta
disponibilidad. Algunas recomendaciones propuestas para
dicha situacin son las siguientes: 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.
Comentarios respecto de las prcticas
El mayor beneficio de las prcticas se consigue con su
aplicacin conjunta y equilibrada puesto que se apoyan
unas en otras. Esto se ilustra en la Figura 1 (obtenida de
[2]), donde una lnea entre dos prcticas significa que las
dos prcticas se refuerzan entre s.
La mayora de las prcticas propuestas por XP no son
novedosas sino que en alguna forma ya haban sido
propuestas en ingeniera del software e incluso demostrado
su valor en la prctica (ver [1] para un anlisis histrico de
ideas y prcticas que sirven como antecedentes a las
utilizadas por las metodologas giles). El mrito de XP es
integrarlas de una forma efectiva y complementarlas con
otras ideas desde la perspectiva del negocio, los valores
humanos y el trabajo en equipo.
Figura 1. Las prcticas se refuerzan entre s
6. CONCLUSIONES
No existe una metodologa universal para hacer frente con
xito a cualquier proyecto de desarrollo de software. Toda
metodologa debe ser adaptada al contexto del proyecto
(recursos tcnicos y humanos, tiempo de desarrollo, tipo de
sistema, etc. Histricamente, las metodologas tradicionales
han intentado abordar la mayor cantidad de situaciones de
contexto del proyecto, exigiendo un esfuerzo considerable
para ser adaptadas, sobre todo en proyectos pequeos y
con requisitos muy cambiantes. Las metodologas giles
ofrecen una solucin casi a medida para una gran cantidad
de proyectos que tienen estas caractersticas. Una de las
cualidades ms destacables en una metodologa gil es su
sencillez, tanto en su aprendizaje como en su aplicacin,
reducindose as los costos de implantacin en un equipo de
desarrollo. Esto ha llevado hacia un inters creciente en las
metodologas giles. Sin embargo, hay que tener presente
una serie de inconvenientes y restricciones para su
aplicacin, tales como: estn dirigidas a equipos pequeos
o medianos (Beck sugiere que el tamao de los equipos se
limite de 3 a 20 como mximo, otros dicen no ms de 10
participantes), el entorno fsico debe ser un ambiente que
permita la comunicacin y colaboracin entre todos los
miembros del equipo durante todo el tiempo, cualquier
resistencia del cliente o del equipo de desarrollo hacia las
prcticas y principios puede llevar al proceso al fracaso (el
clima de trabajo, la colaboracin y la relacin contractual
son claves), el uso de tecnologas que no tengan un ciclo
rpido de realimentacin o que no soporten fcilmente el
cambio, etc.
Falta an un cuerpo de conocimiento consensuado respecto
de los aspectos tericos y prcticos de la utilizacin de
metodologas giles, as como una mayor consolidacin de
los resultados de aplicacin. La actividad de investigacin
est orientada hacia lneas tales como: mtricas y
evaluacin del proceso, herramientas especficas para
apoyar prcticas giles, aspectos humanos y de trabajo en
equipo. Entre estos esfuerzos destacan proyectos como
NAME12 (Network for Agile Methodologies Experience) en el
cual hemos participado como nodo en Espaa.
Aunque en la actualidad ya existen libros asociados a cada
una de las metodologas giles existentes y tambin
abundante informacin en Internet, es XP la metodologa
que resalta por contar con la mayor cantidad de informacin
disponible y es con diferencia la ms popular.
REFERENCIAS BIBLIOGRFICAS