PALABRAS CLAVE: gil, Desarrollo de Software, Proporcionar una visin de las metodologas
agiles Test Driven Development y
Programacin Extrema, Test Driven Development, TDD,
Programacion Extrema para el desarrollo de
XP.
software.
1 INTRODUCCIN Identificar las fases y ciclos de vida que cada
metodologa presenta.
El desarrollo de software no es una tarea fcil.
Prueba de ello es que existen numerosas propuestas Comprender los conceptos y las palabras
metodolgicas que inciden en el proceso de desarrollo. claves de ambas metodologas.
Por una parte tenemos aquellas propuestas ms
tradicionales y las metodologas giles, las cuales dan 3 METODOLOGIA AGIL.
mayor valor al individuo, a la colaboracin con el cliente
y al desarrollo incremental del software con iteraciones
El desarrollo gil de software se ha usado en la
muy cortas. Este enfoque est mostrando su efectividad
toma de decisiones en los proyectos de software,
en proyectos con requisitos muy cambiantes y cuando
tomndolo como un mtodo de ingeniera del software
se exige reducir drsticamente los tiempos de desarrollo
cuya base es el desarrollo iterativo e incremental, donde
pero manteniendo una alta calidad. Las metodologas
los requisitos y soluciones evolucionan con el tiempo
giles estn revolucionando la manera de producir
segn la necesidad del proyecto. Estos modelos son
software. En este trabajo se presenta resumidamente el
1
ITCR. Marn. Preparacin de reportes escritos informativos.
.
creados en respuesta a las debilidades del modelo (o entregas frecuentes), suelen ser especialmente
tradicional de cascada, que no es ms que un conjunto equipos pequeos (< 10 efectivas/usadas en
de tareas agrupadas en pequeas etapas repetitivas integrantes) y trabajando proyectos grandes y con
(iteraciones). En este caso, lo que conlleva la realizacin en el mismo sitio equipos posiblemente
de un software se hace mediante la colaboracin de
equipos auto-organizados y multidisciplinarios, inmersos
dispersos
en un proceso compartido de toma de decisiones a corto La arquitectura se va Se promueve que la
plazo. definiendo y mejorando a arquitectura se defina
lo largo del proyecto tempranamente en el
Los mtodos agiles enfatizan las comunicaciones proyecto
cara a cara en vez de la documentacin. La mayora de nfasis en los aspectos nfasis en la definicin
los equipos agiles estn localizados en una simple humanos: el individuo y del proceso: roles,
oficina abierta, a veces llamadas bullpen. La oficina el trabajo en equipo actividades y artefactos
debe incluir revisores, diseadores de iteracin,
escritores de documentacin y ayuda y directores de Basadas en heursticas Basadas en normas
proyecto. Los mtodos agiles tambin enfatizan que el provenientes de prcticas provenientes de
software funcional es la primera medida del progreso. de produccin de cdigo estndares seguidos por el
Combinado con la preferencia por las comunicaciones entorno de desarrollo
cara a cara, generalmente los mtodos agiles son Se esperan cambios Se espera que no ocurran
criticados y tratados como indisciplinados por la falta durante el proyecto cambios de gran impacto
de documentacin tcnica. durante el proyecto
2
ITCR. Marn. Preparacin de reportes escritos informativos.
.
12. A intervalos regulares, el equipo reexiona Es importante tener presente que solo se crea un
sobre cmo ser ms eficaces, a continuacin mejoran y test por iteracin y solo se implementa el cdigo mnimo
ajustan su comportamiento en consecuencia necesario para resolver ese caso. No es bueno que se
emocione implementando y desarrollando ms de lo
4 DESARROLLO GUIADO POR necesario para resolver el caso de prueba. Si se va por
las ramas desarrollando ms casos, se perder una gran
PRUEBAS (TDD). parte de la eficacia de este mtodo.
3
ITCR. Marn. Preparacin de reportes escritos informativos.
.
sea necesario, y el solo hecho de ejecutar las pruebas es muy importante, pues es la complejidad la que
debe mostrar si la ejecucin fue correcta o no. produce los errores.
4.3.2 Diseo enfocado en las necesidades El cdigo se va desarrollando por piezas pequeas,
por ende, cuando surge un error, los esfuerzos se
El escribir las pruebas primero que el cdigo, obliga
enfocan en la pequea pieza de cdigo que fue
a que las necesidades reales del cliente sean
modificada, por lo que se le pueden llegar a los
consideradas primero, obligando a analizar primero qu
problemas de forma ms directa.
es lo que realmente se necesita que el cdigo haga y no
al contrario. Como resultado, habr menos trabajo
despus. 4.4 POSIBLES PROBLEMAS DEL TDD Y
SUS SOLUCIONES
4.3.3 Mayor simplicidad en el diseo
4.4.1 Interfaz de usuario
Bajo TDD, en lugar de enfocarse en realizar
diseos extensos y complejos, el equipo se enfocar en TDD es difcil de implementar en la capa de interfaz
la necesidad o requerimiento del cliente, agregando de usuario (presentacin), debido a que est actividad
solamente la funcionalidad que el cliente necesita. Esto contiene elementos que contienen a alargar el ciclo de
4
ITCR. Marn. Preparacin de reportes escritos informativos.
.
prueba y desarrollo. En su lugar, TDD encaja ms medio de formacin (cursos) y consultoras que apoyen
fcilmente en los desarrollos en las capas de lgica de en la adopcin de la nueva forma de trabajo
negocios (objetos y dominio) y acceso a datos. Por
ende, pueden existir reservas respecto a aplicar TDD en
una aplicacin con alto grado de interaccin con el 5 PROGRAMACION EXTREMA (XP)
usuario.
Sin embargo, esto no es necesariamente algo Al igual que TDD, la programacin extrema es un
malo, dado que la metodologa obliga a separar las enfoque de la ingeniera de software formulado por Kent
capas y a no implementar lgica de negocio en la capa Beck, autor del primer libro sobre la materia, Extreme
de presentacin, lo cual sera un anti patrn. Programming Explainned: Embrace Change (1999). Es
el ms destacado de los procesos agiles de desarrollo
4.4.2 La base de datos de software.
Uno de los principales problemas de usar TDD en Se centra en potenciar las relaciones
aplicaciones con bases de datos, es que una vez que se interpersonales como clave para el xito en desarrollo
ha ejecutado una prueba, la base de datos puede del software, promoviendo el trabajo en equipo,
quedar en un estado distinto al que se necesita para preocupndose por el aprendizaje de los
hacer la siguiente prueba (por ejemplo, si la aplicacin desarrolladores, y propiciando un buen clima de trabajo.
necesita cambiar el valor de un campo de A a B, cuando
la prueba termina el valor queda en B, por lo que no se La programacin extrema se basa en la
puede ejecutar una siguiente prueba). realimentacin continua entre el cliente y el equipo de
desarrollo, comunicacin fluida entre todos los
Una forma de abordar este problema es escribir participantes, simplicidad en las soluciones
cdigo para inicializar la base de datos en el estado implementadas y coraje para enfrentar los cambios.
previo, sin embargo, esto aade carga de trabajo
adicional. Entonces, Qu es programacin extrema?
Otra solucin es utilizar objetos para representar la Bsicamente la programacin extrema se base en
base de datos, por medio de objetos cascaron, cuatro valores:
respuestas predefinidas o dummies que emulen las
Comunicacin
respuestas de la base de datos.
Comunicacin total a todos los niveles de trabajo.
4.4.3 Errores no identificados
Se trabaja en grupos de dos personas por ordenador
pero con total comunicacin en todos los momentos
Slo por el hecho de pasar todas las pruebas en la entre todos los grupos.
herramienta que se utilice (JUNIT por ejemplo), no
significa que no se tengan errores, slo significa que las Al trabajar en pareja, se suele efectuar rotaciones
pruebas que se han ejecutado no han encontrado de puesto regularmente, lo que implica que el cdigo es
errores. El utilizar TDD podra llevar a un falso propiedad de todos y no solo de una pareja, promueve
sentimiento de seguridad, por ende, se necesita tambin la comunicacin de conocimiento tcnico
enfocarse en que las pruebas sean detalladas y cubran entorno al equipo. Cuando haya un problema tcnico,
todos los escenarios posibles. aparece entonces todo el equipo para formar parte de la
solucin de este.
4.4.4 Perder la visin general
La programacin en pareja es excelente para las
TDD es un enfoque de abajo hacia arriba (Bottom- personas con diversas habilidades, permitiendo as que
Up), y se debe estar al tanto que podra perderse las personas que cuenten con menos nivel, sean
visibilidad general del proyecto y del aplicativo. Es una guiadas por personas con una mayor experiencia, as el
buena idea mantener un modelo general (bajo un riesgo de aadir cdigo de personas menos
enfoque tradicional como UML) y revisarlo de vez en experimentadas se reduce drsticamente.
cuanto, quizs se encuentren oportunidades para re
factorizar y hacer que la aplicacin se le pueda dar Simplicidad
mantenimiento en el tiempo.
Lo ms simple est en mente. El cliente es que
4.4.5 Pronunciada curva de aprendizaje tiene la ltima palabra en XP. Hacer lo que el cliente
necesite, tan simple como sea posible y nada ms.
TDD es difcil de adoptar, por lo que puede Este valor se basa en el hecho de que el futuro, a
esperarse un descenso en la productividad durante los nivel de requerimientos, no forma parte del proyecto.
primeros dos meses de implementacin. Lo Solo nos debemos de ocupar de cubrir las necesidades
recomendable para enfrentar esto es buscar ayuda, por inmediatas, partiendo de que los supuestos carecen de
5
ITCR. Marn. Preparacin de reportes escritos informativos.
.
fiabilidad, lo que conlleva a una posible prdida de requerimientos por una serie de user stories y adems
dinero. permiten hacer una estimacin del tiempo para la
reunin de lanzamientos de las futuras versiones de
Feedback nuestro sistema.
6
ITCR. Marn. Preparacin de reportes escritos informativos.
.
El proceso se va realizando en cuanto el cliente representando a varias personas que se vern afectadas
anuncia una necesidad y se habla sobre ella, intentando por el sistema.
que no existe ningn punto oscuro. Una vez escritas las
tarjetas, se evaluaran entre todos, refinndolas, para lo Como conclusin, se podra decir que la clave para
cual se usaran nuevas tarjetas. Es decir, si la tarjeta un desarrollo correcto al 100% es la coordinacin entre
presenta una tarea complicada, que requiere un tiempo los programadores y el cliente.
mayor, se proceder a la creacin de nuevas tarjetas
que sern el resultado de dividir la tarea inicial en tareas Encargado de pruebas (Tester)
ms pequeas.
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.
Entrenador (Coach)
Consultor
El cliente escribe las historias de usuario y las 1. Ofrece al cliente una visin global del sistema,
pruebas funcionales para validar su implementacin. para que ste sepa que es lo que se va a
Adems, asigna la prioridad a las historias de usuario y hacer.
decide cuales se implementan en cada interaccin.
2. Ofrece dinamismo al cliente, para que este vea
El cliente debe resolver cualquier duda de cualquier un sistema en evolucin.
desarrollador acerca de lo que este quiere conseguir con
una determinada tarea. 3. Ofrece al cliente la posibilidad de cambiar los
requerimientos a un coste no exorbitante.
El cliente es solo uno dentro del proyecto pero
puede corresponder a un interlocutor que est
7
ITCR. Marn. Preparacin de reportes escritos informativos.
.
4. Tener informado constantemente al cliente del Los programadores nunca debern tomar
calendario del proyecto, as como de los decisiones que consten en el diseo y se
posibles retrasos, para que este pueda realizar debern ajustar solo a l.
las modificaciones que considere oportunas.
Adems, el equipo de trabajo nunca
El gestor, en primera instancia, su razn de ser es deber incluir funcionalidades que no
la de causar, conseguir que las cosas ocurran siendo consten en el diseo. Esto es debido a
el desencadenante de todos los procesos necesarios que son funcionalidades que posiblemente
para el desarrollo del proyecto. En alguna forma, el gusten al cliente pero que puede que en
gestor debe ser la chispa que haga que inicie cualquier sucesivas vueltas atrs y en revisiones
tarea en el proyecto. por parte del cliente del programa decida
retocarlas o cambiar su funcin, con lo
Es evidente que el gestor debe coordinar a todo el que har falta retocar un cdigo que en un
equipo, pero adems, es el quien debe distribuir en principio no debera haber existido hasta
cierta medida la carga de trabajo, evitar que sea realicen que el cliente lo necesitase. Por otro lado,
trabajos ms de una vez. Debe controlar que el equipo puede resultar trabajo intil y no
este bien, no exista fisuras internas, intentando arreglar reconocido por lo que es mejor no salirse
cualquier problema entre los miembros del equipo. de las especificaciones y no regalar
esfuerzo y trabajo a nadie.
Aunque en la XP, se propone eliminar todos los
papeleos que sean intiles al 100%, siempre queda una 5.3.2 Sistema metafrico
parte que es necesaria. La ms preciada es la que se
recopila con las user stories, pero adems de esta A la hora de desarrollar cdigo, puede surgir el
documentacin, el gestor tiene que tener presente problema de nombrar mtodos, funciones, variables,
reportar la documentacin de terceras partes, bien por relaciones, etc de un modo coherente y que todos los
requerimientos del cliente o por otro tipo de componentes del equipo lo entiendan.
necesidades.
No se debe dejar este tema a la improvisacin de
Siempre se debe minimizar la carga de trabajo que cada uno.
necesiten estas actividades por ser consideradas como
no productivas, pero nunca se deben olvidar. Los identificadores debern ponerse en
arreglo a unas ciertas reglas
El gestor debe planificar las recompensas que se preestablecidas con anterioridad por el
ofrecern en caso de xito, en caso de un xito grupo.
absoluto, casos en el que trabajo ha sido excelente.
Con esto conseguimos:
Otra labor importante del gestor, es eliminar
cualquier obstculo al equipo de desarrollo. Por No perder tiempo valioso de programacin
obstculos entendemos cualquier cosa que entorpezca en pensar un nombre para un mtodo
al programador, desde la tozudez del usuario, sus similar. Gracias al sistema metafrico el
prioridades, hasta problemas debidos a la nombre viene rodado.
infraestructura, problemas con la red, etc.
Que el resto del equipo no dude sobre el
5.3 PRINCIPIOS nombre de un mtodo de un paquete
desarrollado por otros componentes.
La programacin extrema como hemos
Entonces como puede verse ahorramos tiempo por
mencionado, sigue una serie de reglas para la creacin
dos vas: La de creacin y la de consulta este
de software. Estos no son fijos ni obligatorios y por estos
fundamento de la XP ayuda a mantener el cdigo limpio
pueden surgir discusiones sobre la necesidad de una o
y aumenta su simplicidad.
varias reglas.
5.3.3 Programacin en parejas
Son doce fundamentos principales que se pueden
denominar como los doce mandamientos de la
Aunque la programacin en parejas suele ser
programacin extrema:
asociado con XP, es una prctica independiente y
5.3.1 Planificacin aplicable a cualquier metodologa.
8
ITCR. Marn. Preparacin de reportes escritos informativos.
.
Mientras uno desarrolla cdigo el otro El cliente puede ver regularmente cmo
realiza una revisin inmediata. evoluciona el software introduciendo
continuos en los requerimientos.
Se evitarn la mayora de los errores de
programacin debido a que habr en todo La vuelta atrs siempre ser ms fcil con
momento una persona dedicada versiones cortas que con versiones que
ntegramente a buscar errores en tiempo contienen un gran nmero de
de escritura del cdigo. modificaciones que las anteriores.
9
ITCR. Marn. Preparacin de reportes escritos informativos.
.
Otro punto importante es que el momento perfecto Una vez se empiece a trabajar en la
para encontrar un error en el cdigo. Cualquier momento nueva estructura del objeto y cuando se
sirve, pero como es lgico pensar cuanto antes se den est conforme, ser publicado al equipo
cuenta de un error cometido, mejor ir en el proyecto. de programacin.
Esto es debido a que cuanto ms fresco se tenga Dada la aprobacin, la pareja comenzara
el cdigo, ms fcil ser interpretar el error, descubrir con la implementacin del nuevo objeto, el
sus causas, sus dependencias y sus consecuencias en cdigo existente de ese nuevo ser
el resto del cdigo. incluido de nuevo en el objeto, donde la
nueva funcionalidad no est todava
A parte de las pruebas realizadas en funcin de los incluida.
requerimientos funcionales del proyecto, cuando se
acabe de programar el cdigo, posiblemente se ocurra Una vez terminada la nueva funcionalidad,
distintas pruebas en funcin del cdigo realizado y que la pareja comenzara con la fase de
ayudaran a que el conjunto de pruebas sea completo. pruebas.
Realizar pruebas continuas sobre nuestro cdigo Se cambian todas las invocaciones y se
nos reporta para empezar una mayor fiabilidad y ejecuta todos los mtodos de integracin
estabilidad en el trabajo de programacin realizado de ambos componentes, que sern
hasta el momento. Esto significa que al realizar las analizados por la propia pareja de
pruebas correctamente y con resultados esperados creacin de la nueva funcionalidad.
sobre el cdigo se tendr como resultado un mdulo
entero programado de forma correcta, que funciona Las nuevas funcionalidades son adheridas
ahora y que funcionara siempre, independientemente de al proyecto y la secuencia de codificacin
donde lo incluyamos. y anlisis normal sigue en curso.
El cdigo debe ser simple y claro. Esto provoca el En un equipo no existen derechos de
huir del cdigo duplicado. autor ni prohibiciones de ningn tipo a la
hora de modificar el cdigo de un
El cdigo duplicado complica la tarea de compaero.
programacin por diversas causas, una de ellas es que
ensucia el programa hacindolo ms largo de lo Todo el cdigo desarrollado por cada
estrictamente necesario. Con esto aumenta las componente del equipo es cedido para el
posibilidades de tener errores, y hace incomprensible o bien del propio equipo.
de difcil lectura el programa.
Permite al grupo trabajar ms
En ocasiones, cuando una nueva historia de rpidamente y rendir de una forma ms
usuario va a ser implementada, es normal que los eficaz debido a que no producen los
objetos existentes deban ser estructuralmente retardos o esperas ocasionados por la
cambiados o incluso debamos crear nuevos objetos. propiedad privada de un cdigo.
Para entonces, se discutir la necesidad de refactorizar
por parte del equipo, que confirme la validez o no de 5.3.10 Integracin contina
dicho proceso.
10
ITCR. Marn. Preparacin de reportes escritos informativos.
.
Establecer un estndar de codificacin de En esta fase el cliente hace uso de las historias
tal forma que los programadores sigan los de usuarios donde se describen a grandes rasgos las
mismos criterios para desarrollar cdigo. funcionalidades que debe poseer el sistema, de esta
11
ITCR. Marn. Preparacin de reportes escritos informativos.
.
12
ITCR. Marn. Preparacin de reportes escritos informativos.
.
Para una iteracin determinada se siguen los Este test no funciona (porque no hemos creado
pasos a continuacin: la clase Document todava). Creamos la clase Document
y unos cuantos mtodos para que compile, lo corremos
- Se renen las historias asignadas a esa de nuevo y todava fallar. Parece contradictorio,
iteracin, se detallan las tareas a realizar por queremos hacer pruebas para que pasen, pero al verlas
cada historia y el grado de dificultad de cada fallar antes nos da seguridad de que son vlidas.
una; luego se reparten las tareas prioritarias
para dejar el resto en cola. Creamos el constructor y los mtodos para
pasar el test, y luego funciona.
Siguiendo con el ejemplo, las tareas
necesarias por la historia de Consulta pueden ser crear 5.4.4 Fase de Produccin
las clases necesarias para la consulta (Documento,
Consulta, Resultado, Buscador) y los mtodos Esta etapa se fundamenta en pasar la
necesarios para su implementacin; para la historia de aplicacin a produccin cuando se alcancen las
configuracin las tareas por realizar son crear la clases funcionalidades mnimas que aporten un valor real al
Biblioteca, establecer los protocolos de comunicacin negocio y una estabilidad confiable; esto nos hace que
necesarios entre los sistemas de bibliotecas, adaptar las nuestra aplicacin aporte sus primeros frutos a la
configuraciones, etc. ; para la historia Impresin Elaborar empresa en an tempranas etapas de lo que es el
los mecanismos para impresin revisar los protocolos, proyecto de desarrollo.
establecer las conexiones con impresora, etc.
Para el ejemplo en desarrollo, esta etapa es despus
de la primera iteracin, al entregar la primera versin;
esta versin es capaz de crear una consulta y entregar
resultados de acuerdo a unos pocos libros ingresados al
sistema. Adems en esta etapa se trabaja en las
historias de menor prioridad (funcionalidades
secundarias del software).
13
ITCR. Marn. Preparacin de reportes escritos informativos.
.
5.5.1 Ventajas
Programacin organizada.
Menor taza de errores.
Satisfaccin del programador.
Solucin de errores de programas
Versiones nuevas
Implementa una forma de trabajo donde se
adapte fcilmente a las circunstancias
5.5.2 Desventajas
14
ITCR. Marn. Preparacin de reportes escritos informativos.
.
6 CONCLUSIONES
7 REFERENCIAS
[1] Kent Beck, Test Driven Development:By Example,
Addison-Wesley Professional, 2002
[2] Dave Chaplin, Test First Programming, Tech Zone,
2001
Manifiesto agil, disponible: http://agilemanifesto.org
Jos Carlos Cortizo Prez, D. E. (s.f.). eXtreme
Programming.
Metodologias agiles, obtenido de Noticias y articulos:
http://ldc.usb.ve/~abianc/materias/ci4713/metodologiasa
giles.pdf
Wells, D. (2009). extremeprogramming. Obtenido de
http://www.extremeprogramming.org/
15