Professional Documents
Culture Documents
del
las
las
del
I. NOMENCLATURA
Test Driven Development (TDD), Agile Unified Process
(AUP)
II. LINTRODUCCIN
a realizacin del Paper consisti una primera etapa en
investigar las metodologas agiles que haba disponibles en el
mercado, recolectando informacin como caractersticas,
tipos, enfoques, antigedad, casos xito. Una vez tomada toda
esa informacin se analizo y se llego a un acuerdo en las
metodologas agiles a profundizar, quedndome con Scrum,
Test Driven Development, Agile Unified Process y Kanban.
III. CASO
El anlisis y eleccin de una de estas metodologas se basara
en proyectos de software desarrollos en el rea argentina, con
una importante inversin econmica, bajo requerimientos
cambiantes, sin una abundancia de recursos pero lo
suficientemente capaces e involucrados en el xito del
proyecto.
IV. MARCO TERICO
A. Las Metodologas giles valoran:
Scrum
Kanban
C. Scrum:
Scrum es un proceso en el que se aplican de manera regular un
conjunto de buenas prcticas para trabajar colaborativamente,
en equipo, y obtener el mejor resultado posible de un
proyecto. Estas prcticas se apoyan unas a otras y su seleccin
tiene origen en un estudio de la manera de trabajar de equipos
altamente productivos.
En Scrum se realizan entregas parciales y regulares del
producto final, priorizadas por el beneficio que aportan al
receptor del proyecto. Por ello, Scrum est especialmente
indicado para proyectos en entornos complejos, donde se
necesita obtener resultados pronto, donde los requisitos son
cambiantes o poco definidos, donde la innovacin, la
competitividad, la flexibilidad y la productividad son
fundamentales [2].
C.1. Sprint:
Un proyecto administrado mediante Scrum se organiza en
iteraciones, llamadas sprints, que normalmente tienen entre
dos y cuatro semanas de duracin. Al principio de cada sprint
se establece una lista de requerimientos llamada backlog, que
debe completarse cuando ste finalice. A diario se realizan
breves reuniones del equipo de desarrollo, en las que se
exponen los avances y los problemas encontrados, y se
sealan posibles caminos para resolverlos [3].
C.2. Backlog:
Un proceso Scrum reconoce tres tipos de backlog: el backlog
de producto, el backlog de versin y el backlog de sprint. El
backlog de producto es un repositorio de requerimientos
enunciados por los interesados en el xito del proyecto (los
llamados stakeholders, que pueden ser usuarios,
administradores, tcnicos de soporte, etc.). Por lo general, los
requerimientos incluidos en este backlog son de alto nivel,
evitan detallar cuestiones tcnicas o de implementacin, y
tienen asociadas estimaciones de tiempos tambin de alto
nivel, realizadas por los stakeholders.
El backlog de versin (release backlog) consiste en una lista
de requerimientos extrada del backlog de producto, priorizada
para la prxima versin (release) del producto. Los elementos
de este backlog tienen un mayor nivel de detalle en cuanto a
los requerimientos y tienen asociadas estimaciones ms
precisas, realizadas por los miembros del equipo de Scrum.
El backlog de sprint se arma al principio de cada sprint, y
rene aquellos requerimientos que el equipo se compromete a
completar para cuando finalice dicho sprint. Completar un
requerimiento implica codificarlo, testearlo y documentarlo.
El backlog de sprint se arma dividiendo los requerimientos del
backlog de release en tareas que comnmente pueden
completarse en perodos de 8 a 16 horas.
C.3. Equipo:
En Scrum, los equipos de desarrollo deben estar formados por
una cantidad aproximada de siete miembros. El lder del
equipo es el denominado Scrum Master, y su trabajo consiste
en implementar y administrar el proceso Scrum en el proyecto.
Al inicio del proyecto, el equipo debe ponerse de acuerdo en
cuanto a las prcticas que se van a implementar, la frecuencia
de las reuniones, los artefactos por utilizar, etc.
A partir de all, es responsabilidad del Scrum Master asegurar
que el equipo se atenga a las normas establecidas. El Scrum
Master asume el rol de facilitador, y su autoridad es, en su
mayor parte, indirecta. Su trabajo consiste en atajar las
interferencias externas para que el equipo de desarrollo
optimice su productividad, resolviendo los impedimentos que
no pueden ser resueltos por los miembros del equipo. Su
responsabilidad tambin incluye el hecho de asegurar la
transparencia del proceso de desarrollo, manteniendo los
artefactos definidos para el proceso (ver el recuadro Los roles
de un Scrum).
C.4. Reuniones:
Las reuniones de Scrum deben llevarse a cabo diariamente,
aunque el equipo puede ponerse de acuerdo al inicio para
realizarlas con una periodicidad diferente; por ejemplo, da por
medio. Es importante que se efecten siempre en el mismo
lugar y a la misma hora, y que su duracin no exceda los 30
minutos.
Durante la reunin, el Scrum Master hace a cada miembro del
equipo tres preguntas: qu hizo desde la ltima reunin de
Scrum, qu obstaculiz su trabajo y qu planea hacer desde
ese momento hasta la prxima reunin. La conversacin debe
limitarse a las respuestas de los miembros del equipo a las tres
preguntas anteriores. Sobre la base de las respuestas obtenidas
y de los problemas que stas reflejen, pueden agendarse
reuniones para llevar a cabo en forma inmediata luego de la
reunin de Scrum, entre un subgrupo del equipo, para dar
solucin a los inconvenientes detectados. El Scrum Master
seala los caminos de solucin a los problemas y es
responsable de identificar impedimentos externos que puedan
frenar el proceso.
C.5. Fases:
El proceso de desarrollo Scrum se compone de cinco
actividades principales: revisin de los planes de release;
distribucin, revisin y ajuste de los estndares de producto;
sprint; revisin de sprint, y cierre.
La fase de sprint es en la que se realiza el desarrollo de
software propiamente dicho. Dentro de un sprint se efectan
varias sub-actividades: desarrollo, empaquetado, revisin y
ajuste. No existe secuencia dentro de esta fase. Algunas veces,
un tem del backlog debe ser desarrollado, empaquetado y
revisado, y otras veces, el tem slo debe ser revisado y
ajustado; todo depende de las caractersticas del tem en
cuestin.
Cada sprint es seguido por un proceso de revisin. Durante
esta etapa, se revisa el software desarrollado en el sprint que
acaba de finalizar y, de ser necesario, se agregan nuevos tem
en el backlog. El grupo de revisores debe incluir a los
stakeholders, los administradores del proyecto, los
desarrolladores y los usuarios.
F. Kanban
E.2. Incremento y desarrollo de AUP:
Los equipos de AUP suelen ofrecer versiones de desarrollo al
final de cada iteracin en preproduccin rea (s). Una versin
de desarrollo de una aplicacin es algo que podran ser
liberados en la produccin si se ponen a travs de su preproduccin de garanta de calidad (QA), las pruebas y los
procesos de despliegue. La primera produccin de liberacin a
menudo toma ms tiempo para entregar versiones posteriores.
La primera produccin de liberacin puede tomar doce meses
para entregar la segunda versin de nueve meses, y luego otras
liberaciones se entregan cada seis meses. Una de las primeras
se centra en cuestiones de despliegue, no slo permite evitar
los problemas, sino que tambin permite tomar ventaja de sus
experiencias durante el desarrollo. Por ejemplo, cuando
despliegue un software en su rea deber tomar notas de lo
que funciona y lo que no, toma nota de que puede servir como
la columna vertebral de su instalacin de scripts [10].
E.3. Ventajas [11]:
El personal sabe lo que est haciendo: no obliga a conocer
detalles.
Simplicidad: apuntes concisos.
Agilidad: procesos simplificados del RUP
Centrarse en actividades de alto valor: esenciales para el
desarrollo.
Herramientas independientes: a disposicin del usuario.
Fcil adaptacin de este producto: de fcil acomodo
(HTML)
E.4. Desventajas:
El AUP es un producto muy pesado en relacin al RUP.
Como es un proceso simplificado, muchos desarrolladores
eligen trabajar con el RUP, por tener a disposicin mas
detalles en el proceso.
F.4. Desventajas:
Herramienta: El mantenimiento manual del tablero se ve
factible a largo plazo. Por lo tanto, tenemos que encontrar
una herramienta Kanban que puede ser fcilmente
integrada con el sistema de gestin de la empresa.
Planificacin inicial del proyecto: Kanban est abierto
acerca de la planificacin del proyecto. Sin embargo, al
Cliente se le tiene que dar una estimacin inicial del
esfuerzo y de la fecha fin del proyecto. Para ello vamos a
seguir con los mtodos tradicionales de estimacin hasta
que podamos incorporar mtricas de Kanban en ellas.
V. DESARROLLO
La eleccin de las metodologas de anlisis se debi al uso que
actualmente tienen en el mercado, a la cantidad de
informacin disponible de cada una y a la recomendacin del
tutor a cargo.
Luego de la eleccin de las metodologas, puntualic en las
caractersticas de los proyectos de software en los que iban a
estar aplicadas estas metodologas. Las caractersticas tenan
que ser propias de los proyectos de software, tendran que
tener una descripcin y un rango para evaluar su aplicacin.
Las caractersticas elegidas fueron recursos, requerimientos,
duracin, complejidad y tecnologa.
Cumplida la primera etapa de definiciones de metodologas y
caractersticas y habiendo utilizado esto dos conceptos para
armar un cuadro comparativo, me introduje en el grueso de la
investigacin, en la relacin de los proyectos con lo gil.
Profundizando en cada una de las metodologas para ir
cubriendo todos los aspectos de los proyectos de software.
La investigacin no fue nada sencilla debido a su reciente a
crecimiento y la escasa informacin de algunas metodologas
en trminos de xito.
Por ltimo, y una vez completado el cuadro comparativo,
aborde los tipos de herramientas que dan soporte a las
metodologas descriptas. Entre las existente opte por las ms
populares tanto para Test Driven Development como para
Scrum. Con ellas desarrolle la relacin de metodologa y
herramientas como un objetivo de simplificar todas las tareas
que forman parte de proceso de desarrollo de software.
Llegando al final de la investigacin y antes de darle un cierre
al paper con una conclusin, expuse algunos sitios donde se
podra seguir la investigacin con otras metodologas no
desarrolladas en este estudio pero que serian muy interesantes
tenerlas en cuenta para una investigacin ms amplia en otra
oportunidad.
A continuacin se llevara a cobo la realizacin de un cuadro
comparativo en el que relacionare las metodologas expuestas
anteriormente con las caractersticas ms relevantes de los
tipos de proyectos de desarrollo de software.
Luego profundizare en las tecnologas ms relevantes
utilizadas en el desarrollo del cuadro comparativo.
A. Cuadro comparativo:
Para la realizacin del cuadro comparativo entre las cuatro
metodologas elegidas, opte por diferentes caractersticas de
los proyectos de software, cada una de estas caractersticas
contienen una clasificacin especfica para poder ser aplicada
en el cuadro con mayor claridad.
A.1. Recursos:
El equipo de proyecto se compone de todos aquellos que
tienen un rol y responsabilidad para completar el proyecto. La
clasificacin por cantidad de personas en un proyecto se
realizara de hasta quince personas la clase ms baja, de quince
a cincuenta personas la clase media y ms de cincuenta la
clase alta.
A.2. Requerimientos:
El nmero detallado de servicios y restricciones del sistema en
base a la cantidad de Casos de uso. La importancia de los
casos de uso es significativa no solo porque proporcionan una
descripcin detallada de la funcionalidad de un sistema, sino
tambin para porque permiten expresar la arquitectura del
mismo. El rango ser pequeo de 0 a 30, mediano de 30 a 100
y mayor a 100 casos de usos grande.
Scrum
TDD
AUP
Kanban
Recursos
BAJA
BAJA
BAJA
BAJA
-MEDIA
Requerimientos
ADAPTABLE
GRANDE
ADAPTABLE
GRANDE
Duracin
LARGOS
LARGOS
LARGOS
ADAPTABLE
Complejidad
ADAPTABLE
ADAPTABLE
UTILIZA
Fitnesse
Concordion
Cucumber
ADAPTABLE
ADAPTABLE
NO UTILIZA
NO UTILIZA
Tecnologa
UTILIZA *
Scrumdesk
Scrumworks
A.3. Duracin:
La duracin del proyecto es el nmero de unidades de tiempo
necesarias para llevar a cabo el proyecto. Hasta 6 meses es
corto, de 6 a 18 mediano y mayor a 18 largos.
A.4. Complejidad:
El grado en el cual el diseo o implementacin de un sistema,
incluyen el nivel de integracin de la tecnologa, necesidades
de seguridad, estabilidad del hardware/software.
A.5. Tecnologa:
Programa de software, utilizado para desarrollar una actividad
para producir un producto o resultado.
El momento de elegir la metodologa a utilizar es uno de los
puntos ms crticos en todo proyecto y del que depender el
xito o no del mismo.
No existe un mtodo universal para desarrollar con xitos los
proyectos de software, toda metodologa tiene que ser
ajustada al contexto del proyecto. Si podemos hacer puntos en
comn como por ejemplo que la mayora de las metodologas
se adaptan a equipos pequeos, as como tambin que la
dificultad del proyectos no influye a la hora de la eleccin
[TABLA I].
10
B. Tecnologas Utilizadas:
En esta seccin hare un estudio a las soluciones ms populares
existentes en el mercado y que puedan ser interesantes en el
campo que estoy estudiando, estudio del desarrollo de
software sobre diferentes versiones de un mismo producto.
Nos centraremos en las herramientas ScrumDesk y
Scrumworks que dan soporte a metodologas de desarrollo
gil, a la metodologa Scrum y luego en las herramientas
FitNesse, Concordion y Cucumber de la metodologa Test
Driven Development.
a) ScrumDesk:
Es una herramienta que nos ayuda en la administracin de
proyectos a travs de SCRUM, proporciona una visin
intuitiva en las tareas con vista de tarjetas y permitir la
colaboracin en la gestin de proyectos. ScrumDesk conecta
los equipos de proyecto, miembros del equipo con los clientes
y de gestin.
Esta herramienta es una Aplicacin .NET. Que se caracteriza
por ser muy visual y muy buena en la gestin de tareas como
tabln de "post-it".
ScrumDesk est disponible para iPhone, iPod e iPad.
d) Concordion:
Es un framework Java de Software Libre que admite convertir
especificaciones en texto comn sobre requerimientos en
pruebas automatizadas.
Esencialmente se escribe una especificacin en un HTML, con
comandos internos que delimitan la conducta de las pruebas.
Esta especificacin se realiza por medio de una clase Java
relacionada a cada especificacin y funciona como mediador
entre la especificacin y el sistema bajo prueba.
Concordion colorear con ayuda de la hoja de estilos,
subrayando en verde o en rojo segn funcione el software.
Un test de cliente o de aceptacin con estos frameworks, a
nivel de cdigo, es un enlace entre el ejemplo y el cdigo
fuente que lo implementa.
El propio framework se encarga de hacer la pregunta de si las
armaciones son ciertas o no. Por tanto, su aspecto dista
mucho de un test unitario o de integracin con un framework
xUnit.
En lneas generales podemos decir que es una extensin de
JUnit. Corre perfectamente en conjunto con IDEs.
Es amigable e intuitivo para desarrolladores.
Se encuentran versiones para Python.NET y Ruby.
b) Scrumworks:
Es una herramienta de automatizacin de procesos giles, una
aplicacin Web que permite compartir la informacin entre
todo el equipo.
Manejar dinmicamente el Backlog, definir las tareas y
arrastrarlas al Sprint, observar grficos por cada Sprint,
llamados burndown, que no slo permiten observar el estado
de avance del proyecto, sino tambin analizar sus
comportamientos e ir aprendiendo para mejorar los Sprints
que restan.
Es una aplicacin en java que no requiere instalacin.
Contiene una limitada versin web. Cubre todas las fases de
Scrum, incluyendo informes. Es una muy completa, sin
embargo
es
un
poco
rgida
en
su
manejo.
Pasando a Test Driven Development, cualquier lista de
herramientas que hagamos se desactualizar da a da. Sin
embargo, resulta ilustrativo ver algunas de las ms relevantes.
Hoy en da el desarrollo moderno se realiza a partir de pruebas
de aceptacin, es decir, se establecen una serie de pruebas con
la funcionalidad que debe cumplir la aplicacin y el cliente las
acepta, o de lo contrario lo haremos con algn framework
xUnit.
Existen varias herramientas open source en el mercado, tales
como
FitNesse,
Concordion,
Cucumber.
c) FitNesse:
Es una herramienta colaborativa para el desarrollo de
software. Permite a los clientes, testers, y programadores
aprender lo que su software debera hacer, y automticamente
compara lo que realmente hace. Compara las expectativas de
los clientes a los resultados reales.
e) Cucumber:
Es un framework de desarrollo de pruebas de aceptacin.
Utiliza Gherkin para hacer match entre los pasos escritos en
lenguaje natural y los pasos definidos por el usuario.
Permite a los equipos de desarrollo de software detallar de qu
manera debe funcionar el software que estn desarrollando en
un texto plano. El texto est escrito en un lenguaje especfico
de dominio (DSL) enfocado al negocio y sirve como
documentacin, pruebas automatizadas y de ayuda al
desarrollo.
Cucumber puede ser considerado como un instrumento ms de
testing, su amplitud llega al paradigma del Desarrollo Basado
en Comportamientos (BDD). Esto significa que los tests, el
texto plano descriptivo son escritos antes que puedan ser
verificados.
Cucumber est escrito en Ruby, pero puede ser utilizado para
testear cdigo en cualquier otro lenguaje
VI. CONCLUSIN
11
Las Metodologas:
Crystal Methodologies
Extreme Programming
Scrum
Kanban
VIII. REFERENCIAS
[1] Scrum, http://groups.yahoo.com/group/scrumdevelopment.
Metodologas de Desarrollo de Software giles
[2] http://www.proyectosagiles.org/que-es-scrum
[3]
http://www.mastersoft.com.ar/MsWeb/otros_archivos/NotaScrumPCU
sers.pdf
[4]
http://cic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:sg07.p02.
scrum.pdf
[5]http://www.dirigidoportests.com/wp-content/uploads/2009/12/disenoAgil
ConTDD.pdf
[6]http://osl2.uca.es/wikiCE/index.php/Test_Driven_Development
[7]
http://blog.lordudun.es/2011/04/introduccion-a-tdd-test-driven-develop
ment/
[8] Ingenieria del Software: Metodologias y ciclos de vida
[9] http://www.ingenieriadesoftware.mex.tl/63758_AUP.html
[10] Proyecto de consultoria externa, sistema de software de venta
[11] http://www.adolfo.mex.tl/images/18149/METODOLOG%C3%8DAS%
20%C3%81GILES%20(AUP).ppt.
[12] http://www.javiergarzas.com/2011/11/kanban.html
[13] http://es.scribd.com/doc/86666351/Kanban-y-ERP-II
[14] http://teodorabozheva.blogspot.com.ar/
12