Beruflich Dokumente
Kultur Dokumente
Desarrollo de Software
Alicante, 12 de Noviembre de 2003
Organizacin:
Grupo ISSI
(Ingeniera del Software y Sistemas de Informacin)
Colaboradores:
Metodologas giles en el
Desarrollo de Software
Alicante Espaa
12 de Noviembre de 2003
Editado Por:
Patricio Letelier Torres
Emilio A. Snchez Lpez
Grupo ISSI
(Ingeniera del Software y Sistemas de Informacin)
Comit organizador
Patricio Letelier Torres
M Carmen Penads
Jos Hilario Cans
Emilio A. Snchez Lpez
Comit Tcnico
Esperanza Marcos, Universidad Rey Juan Carlos
Rafael Corchuelo, Universidad de Sevilla
Mikel Emaldi, European Software Institute (ESI)
Csar Prez-Chirinos, Banco de Espaa
Jos Hilario Cans, Universidad Politcnica de Valencia
Presentacin
En las dos ltimas dcadas las notaciones de modelado y posteriormente las herramientas han sido las
"balas de plata" para el deseado xito en el desarrollo de software. El proceso de desarrollo asumido en
este contexto llevaba asociada una marcada tendencia hacia el control del proceso mediante una
rigurosa definicin de actividades, artefactos y roles. Este esquema "tradicional" para abordar el
desarrollo de software ha demostrado ser efectivo en proyectos de gran envergadura 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 contexto es muy cambiante, y en donde
se exige reducir drsticamente los tiempos de desarrollo pero manteniendo una alta calidad. En la
prctica, para muchos equipos de desarrollo, ante las dificultades para utilizar metodologas
tradicionales, se lleg a la resignacin de prescindir del "buen hacer" de la ingeniera del software con
el objetivo de ajustarse a estas restricciones. Ante esta situacin, las metodologas giles aparecen como
una posible respuesta para llenar este vaco metodolgico. Por estar especialmente orientadas para
proyectos pequeos, las metodologas giles constituyen una solucin a medida, con una elevada
simplificacin que a pesar de ello no renuncia a las prcticas esenciales para asegurar la calidad del
producto.
El tema es de rabiosa actualidad. La curiosidad que siente la mayor parte de ingenieros de software,
profesores, e incluso alumnos, sobre los mtodos giles hace prever una fuerte proyeccin industrial de
las metodologas giles. 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, nuevas tecnologas, etc. Esto ltimo
abrira interesantes canales de cooperacin entre la industria y la universidad.
El objetivo de este taller ha sido constituir un primer punto de encuentro en Espaa para acadmicos y
gentes de industria interesados en metodologas giles.
Esperamos que este taller cumpla con dichas espectativas y genere nuevas iniciativas y vnculos de
colaboracin.
Los editores.
ndice
Artculos en programa
Haca un proceso metodolgico dirigido por modelos para el desarrollo gil de sistemas
de informacin Web
Universidad Rey Juan Carlos de Madrid
Paloma Cceres y Esperanza Marcos.........................................................................................................9
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
1
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 comparacin
con las tradicionales. La seccin 3 se centra en eXtreme Programming (XP), presentando sus
caractersticas particulares, el proceso que se sigue y las prcticas que propone. En la seccin 4
se citan otros mtodos giles, enumerndose sus principales caractersticas. Finalmente aparecen
las conclusiones.
2. METODOLOGAS GILES
En febrero de 2001, tras una reunin celebrada 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.
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.
1
XP Agile Universe: www.agileuniverse.com. Conference on eXtreme Programming and Agile Processes in Software
Engineering: www.xp2004.org. Agile Development Conference (EEUU): www.agiledevelopmentconference.com.
Agile Development Conference (Australia): www.softed.com/adc2003/
2
agilemanifesto.org
3
www.agilealliance.com
2
La colaboracin con el cliente ms que la negociacin de un contrato. Se propone que
exista una interaccin constante entre el cliente y el equipo de desarrollo. Esta colaboracin
entre ambos ser la que marque la marcha del proyecto y asegure su xito.
Responder a los cambios ms que seguir estrictamente un plan. La habilidad de
responder a los cambios que puedan surgir a los largo del proyecto (cambios en los
requisitos, en la tecnologa, en el equipo, etc.) determina tambin e l xito o fracaso del
mismo. Por lo tanto, la planificacin no debe ser estricta sino flexible y abierta.
Los valores anteriores inspiran los doce principios del manifiesto. Son caractersticas que
diferencian un proceso gil de uno tradicional. Los dos primeros principios son generales y
resumen gran parte del espritu gil. El resto tienen que ver con el proceso a seguir y con el
equipo de desarrollo, en cuanto metas a seguir y organizacin del mismo. Los principios son:
I. La prioridad es satisfacer al cliente mediante tempranas y continuas entregas de
software que le aporte un valor.
II. Dar la bienvenida a los cambios. Se capturan los cambios para que el cliente tenga una
ventaja competitiva.
III. Entregar frecuentemente software que funcione desde un par de semanas a un par de
meses, con el menor intervalo de tiempo posible entre entregas.
IV. La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto.
V. 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.
VI. El dilogo cara a cara es el mtodo ms eficiente y efectivo para comunicar informacin
dentro de un equipo de desarrollo.
VII. El software que funciona es la medida principal de progreso.
VIII. Los procesos giles promueven un desarrollo sostenible. Los promotores,
desarrolladores y usuarios deberan ser capaces de mantener una paz constante.
IX. La atencin continua a la calidad tcnica y al buen diseo mejora la agilidad.
X. La simplicidad es esencial.
XI. Las mejores arquitecturas, requisitos y diseos surgen de los equipos organizados por s
mismos.
XII. En intervalos regulares, el equipo reflexiona respecto a cmo llegar a ser ms efectivo, y
segn esto ajusta su comportamiento.
2.2. Comparacin
La Tabla 1 recoge esquemticamente las principales diferencias de las metodologas giles con
respecto a las tradicionales (no giles). Estas diferencias que afectan no slo al proceso en s,
sino tambin al contexto del equipo as como a su organizacin.
4
www.extremeprogramming.org,www.xprogramming.com,
c2.com/cgi/wiki?ExtremeProgramming
3
Metodologas giles Metodologas Tradicionales
Basadas en heursticas provenientes de prcticas de Basadas en normas provenientes de estndares
produccin de cdigo seguidos por el entorno de desarrollo
Especialmente preparados para cambios durante el Cierta resistencia a los cambios
proyecto
Impuestas internamente (por el equipo) Impuestas externamente
Proceso menos controlado, con pocos principios Proceso mucho ms controlado, con numerosas
polticas/normas
No existe contrato tradicional o al menos es Existe un contrato prefijado
bastante flexible
El cliente es parte del equipo de desarrollo El cliente interacta con el equipo de desarrollo
mediante reuniones
Grupos pequeos (<10 integrantes) y trabajando en Grupos grandes y posiblemente distribuidos
el mismo sitio
Pocos artefactos Ms artefactos
Pocos roles Ms roles
3.2. Roles XP
Los roles de acuerdo con la propuesta original de Beck son:
- Programador. El programador escribe las pruebas unitarias y produce el cdigo del sistema.
- 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.
- Encargado de pruebas (Tester). 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.
4
- Encargado de seguimiento (Tracker). Proporciona realimentacin al equipo. Verifica el
grado de acierto entre las estimaciones realizadas y el tiempo real dedicado, para mejorar
futuras estimaciones. Realiza el seguimiento del progreso de cada iteracin.
- Entrenador (Coach). Es responsable del proceso global. Debe proveer guas al 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, en el que puedan surgir problemas.
- 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.
3.3. Proceso XP
El ciclo de desarrollo consiste (a grandes rasgos) en los siguientes pasos [12]:
1. El cliente define el valor de negocio a implementar.
2. El programador estima el esfuerzo necesario para su implementacin.
3. El cliente selecciona qu construir, de acuerdo con sus prioridades y las restricciones de
tiempo.
4. El programador construye ese valor de negocio.
5. Vuelve al paso 1.
En todas las iteraciones de este ciclo tanto el cliente como el programador aprenden. No se debe
presionar al programador a realizar ms trabajo que el estimado, ya que se perder calidad en el
software o no se cumplirn los plazos. De la misma forma el cliente tiene la obligacin de
manejar el mbito de entrega del producto, para asegurarse que el sistema tenga el mayor valor
de negocio posible con cada iteracin.
El ciclo de vida ideal de XP consiste de seis fases [2]: Exploracin, Planificacin de la Entrega
(Release), Iteraciones, Produccin, Mantenimiento y Muerte del Proyecto.
3.4. 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. Esto se consigue gracias a las tecnologas disponibles para ayudar en el
desarrollo de software y a la aplicacin disciplinada de las siguientes prcticas.
El juego de la planificacin. Hay una comunicacin frecuente 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.
Entregas pequeas . Producir rpidamente versiones del sistema que sean operativas,
aunque no cuenten con toda la funcionalidad del sistema. Esta versin ya constituye un
resultado de valor para el negocio. Una entrega no debera tardar ms 3 meses.
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 (conjunto de nombres que
acten como vocabulario para hablar sobre el dominio del problema , ayudando 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.
Pruebas . La produccin de cdigo est dirigida por las pruebas unitarias. stas son son
establecidas por el cliente antes de escribirse el cdigo y son ejecutadas constantemente ante
cada modificacin del sistema.
5
Refactorizacin (Refactoring). Es una actividad constante de reestructuracin del cdigo
con el objetivo de remover duplicacin de cdigo, mejorar su legibilidad, simplific arlo y
hacerlo ms flexib le para facilitar los posteriores cambios. Se mejora la estructura interna
del cdigo sin alterar su comportamiento externo [8].
Programacin en parejas . Toda la produccin de cdigo debe realizarse con trabajo en
parejas de programadores. Esto conlleva ventajas implcitas (menor tasa de errores, mejor
diseo, mayor satisfaccin de los programadores, ).
Propiedad colectiva del cdigo. Cualquier programador puede cambiar cualquier parte del
cdigo en cualquier momento.
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 .
40 horas por semana. Se debe trabaja r 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.
Cliente in-situ. El cliente tiene que estar presente y disponible todo el tiempo para el
equipo. ste es uno de los principales factores de xito del proyecto XP. El cliente 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.
Estndares de programacin. XP enfatiza que la comunicacin de los programadores es a
travs del cdigo, con lo cual es indispensable que se sigan ciertos estndares de
programacin para mantener el cdigo legible .
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.
6
3. OTRAS METODOLOGAS GILES
Aunque los creadores e impulsores de las metodologas giles ms populares han suscrito el
manifiesto gil y coinciden con los principios enunciados anteriormente, cada metodologa tiene
caractersticas propias y hace hincapi en algunos aspectos ms especfic os. A continuacin se
resumen otras metodologas giles. La mayora de ellas ya estaban siendo utilizadas con xito en
proyectos reales pero les faltaba una mayor difusin y reconocimiento.
SCRUM 5 [16]. Desarrollada por Ken Schwaber, Jeff Sutherland y Mike Beedle. Define un
marco para la gestin de proyectos, que se ha utilizado con xito durante los ltimos 10 aos.
Est especialmente indicada para proyectos con un rpido cambio de requisitos. Sus
principales caractersticas se pueden resumir en dos. El desarrollo de software se realiza
mediante iteraciones, denominadas sprints, con una duracin de 30 das. El resultado de cada
sprint es un incremento ejecutable que se muestra al cliente. La segunda caracterstica
importante son las reuniones a lo largo proyecto, entre ellas destaca la reunin diaria de 15
minutos del equipo de desarrollo para coordinacin e integracin.
Crystal Methodologies6 [5]. Se trata de un conjunto de metodologas para el desarrollo de
software caracterizadas por estar centradas en las personas que componen el equipo y la
reduccin al mximo del nmero de artefactos producidos. Han sido desarrolladas por Alistair
Cockburn. El desarrollo de software se considera un juego cooperativo de invencin y
comunicacin, limitado por los recursos a utilizar. El equipo de desarrollo es un factor clave,
por lo que se deben invertir esfuerzos en mejorar sus habilidades y destrezas, as como tener
polticas de trabajo en equipo definidas. Estas polticas dependern del tamao del equipo,
establecindose una clasificacin por colores, por ejemplo Crystal Clear (3 a 8 miembros) y
Crystal Orange (25 a 50 miembros).
Dynamic Systems Development Method7 (DSDM) [17]. Define el marco para desarrollar un
proceso de produccin de software. Nace en 1994 con el objetivo de crear una metodologa
RAD unificada. Sus principales caractersticas son: es un proceso iterativo e incremental y el
equipo de desarrollo y el usuario trabajan juntos. Propone cinco fases: estudio viabilidad,
estudio del negocio, modelado funcional, diseo y construccin, y finalmente implementacin.
Las tres ltimas son iterativas, adems de existir realimentacin a todas las fases.
Adaptive Software Development8 (ASD) [9]. Su impulsor es Jim Highsmith. Sus principales
caractersticas son: iterativo, orientado a los componentes software ms que a las tareas y
tolerante a los cambios. El ciclo de vida que propone tiene tres fases esenciales: especulacin,
colaboracin y aprendizaje. En la primera de ellas se inicia el proyecto y se planifican las
caractersticas del software; en la segunda desarrollan las caractersticas y finalmente en la
tercera se revisa su calidad, y se entrega al cliente. La revisin de los componentes sirve para
aprender de los errores y volver a iniciar el ciclo de desarrollo.
Feature -Driven Development9 (FDD) [3]. Define un proceso iterativo que consta de 5 pasos.
Las iteraciones son cortas (hasta 2 semanas). Se centra en las fases de diseo e
implementacin del sistema partiendo de una lista de caractersticas que debe reunir el
software. Sus impulsores son Jeff De Luca y Peter Coad.
Lean Development10 (LD) [15]. Definida por Bob Charettes a partir de su experiencia en
proyectos con la industria japonesa del automvil en los aos 80 y utilizada en numerosos
proyectos de telecomunicaciones en Europa. En LD, los cambios se consideran riesgos, pero si
se manejan adecuadamente se pueden convertir en oportunidades que mejoren la
5
www.controlchaos.com
6
www.crystalmethodologies.org
7
www.dsdm.org
8
www.adaptivesd.com
9
www.featuredrivendevelopment.com
10
www.poppendieck.com
7
productividad del cliente. Su principal caracterstica es introducir un mecanismo para
implementar dichos cambios.
4. 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 NAME11 (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.
BIBLIOGRAFIA
[1] Abrahamsson, P., Salo, O., Ronkainen, J., Warsta, J. Agile software development methods Review and
analysis. VTT Publications. 2002.
[2] Beck, K.. Extreme Programming Explained. Embrace Change, Pearson Education, 1999. Traducido al
espaol como: Una explicacin de la programacin extrema. Aceptar el cambio, Addison Wesley, 2000.
[3] Coad P., Lefebvre E., De Luca J. Java Modeling In Color With UML: Enterprise Components and Process.
Prentice Hall. 1999.
[4] Cockbun, A. Agile Software Development. Addison-Wesley. 2001.
[5] Fowler, M., Beck, K., Brant, J. Refactoring: Improving the Design of Existing Code. Addison-Wesley. 1999
[6] Highsmith J., Orr K. Adaptive Software Development: A Collaborative Approach to Managing Complex
Systems. Dorset House. 2000.
[7] Jeffries, R., Anderson, A., Hendrickson, C. Extreme Programming Installed. Addison-Wesley. 2001
[8] Poppendieck M., Poppendieck T. Lean Software Development: An Agile Toolkit for Software Development
Managers. Addison Wesley. 2003.
[9] Schwaber K., Beedle M., Martin R.C. Agile Software Development with SCRUM. Prentice Hall. 2001.
[10] Stapleton J. Dsdm Dynamic Systems Development Method: The Method in Practice. Addison-Wesley. 1997.
11
name.case.unibz.it/
8
Hacia un proceso metodolgico dirigido por modelos
para el desarrollo gil de sistemas de informacin Web
Paloma Cceres, Esperanza Marcos
Grupo de Investigacin Kybele
Universidad Rey Juan Carlos
Madrid
{p.caceres, e.marcos}@escet.urjc.es
1. Introduccin
Hoy en da, el desarrollo de los sistemas de informacin Web (SIW) ha despertado un
gran inters tanto a nivel empresarial como a nivel investigador y docente.
La necesidad de metodologas especficas para el desarrollo de SIW es tambin
conocida (Fraternali, 2000). Las metodologas tradicionales no incorporan mtodos
especficos para contemplar determinadas caractersticas de estos sistemas (Lowe and
Hall, 1999) y son demasiado pesadas y burocrticas puesto que exigen la generacin de
un gran volumen de documentacin, impidiendo as un desarrollo gil y rpido, Fowler
(2001). As han aparecido las metodologas y procesos denominados giles, que
garantizan un proceso de desarrollo suficiente pero no excesivo.
Por otra parte, la creciente aparicin de diferentes tecnologas y plataformas asociadas
al desarrollo de sistemas de informacin, hace demasiado especfico el modelado de un
sistema. En este sentido, OMG ha propuesto la Arquitectura Dirigida por Modelos
(MDA), (Miller y Mukerji, 2001) que garantiza la especificacin completa de un
sistema en base a modelos, independientes y especficos de una tecnologa y plataforma.
Estos motivos nos han llevado a proponer un proceso software dirigido por modelos
para el desarrollo gil de SIW dentro del marco metodolgico de MIDAS1, presentado
en Marcos et al. (2002).
El resto del artculo se organiza de la siguiente forma: la seccin 2 hace una breve
introduccin a MDA; la seccin 3 presenta el proceso metodolgico de MIDAS y por
ltimo, las conclusiones y trabajos futuros se presentan en la seccin 4.
1
Este trabajo se ha llevado a cabo dentro de los proyectos: EDAD (07T/0056/2003 1) financiado por la Comunidad
Autnoma de Madrid y DAWIS (TIC 2002-04050-C02-01) financiado por la Subdireccin General de Proyectos de
Investigacin del MCyT (Ministerio de Ciencias y Tecnologa) y por la Universidad Rey Juan Carlos (GC-2003-12).
9
2. Arquitectura dirigida por modelos
MDA (Miller and Mukerji, 2001) es un marco de trabajo para el desarrollo del software,
definido por OMG (Object Management Group), que define una arquitectura orientada a
modelos y unas guas de transformacin entre los mismos para recoger las
especificaciones de un sistema, donde los productos que se generan son modelos
formales, que incluso pueden llegar a ser comprendidos por ordenadores.
MDA propone la realizacin de: Modelos independientes de computacin (CIM) que
son modelos del ms alto nivel de abstraccin que identifican el contexto del sistema.
Modelos Independientes de la Plataforma (PIM) que proporcionan la especificacin
formal de la estructura y funcin del sistema, sin tener en cuenta aspectos tcnicos e
independientes de cualquier tecnologa de implementacin; Modelos Especficos de la
Plataforma (PSM) que proporcionan modelos en trminos de constructores de
implementacin que estn disponibles en una tecnologa especfica.
Las reglas de transformacin se aplican para transformar: PIM en PIM que van
generalmente asociadas a los pasos que se suceden entre el modelado de la
especificacin, anlisis y diseo; PIM en PSM que se realizan cuando el PIM est
suficientemente refinado y se transforma en un modelo dependiente de la
insfraestructura final de ejecucin; un PIM se transforma en uno o varios PSM; PSM en
PSM que son necesarios para la realizacin y despliegue de componentes; PSM en
PIM que permiten la abstracin de modelos a partir de implementaciones especficas de
una plataforma y dependientes de una tecnologa concreta.
10
Agilidad en el desarrollo dirigido por modelos
Pero dado que seguamos apostando por un proceso gil, haba que analizar la
viabilidad de un proceso gil y dirigido por modelos. En este sentido nos encontramos
que, segn puede apreciarse en la figura 1, los procesos giles y los procesos dirigidos
por modelos no contemplan igualmente el espacio del problema (qu es lo que hay que
resolver) y el espacio de la solucin (cmo resolverlo), Weneger (2002). Nuestro rea
de inters, parte sombreada de la figura 1, se centr entonces en el acercamiento entre
ambas propuestas, en base al estudio de cinco aspectos diferenciadores entre ambos
procesos, indicados en la tabla 1 (Weneger, 2002).
Area of
interest
Model-driven,
Low
Don t do this
generative
Low High
Fig. 1.- Relacin entre el espacio del problema y de la solucin
Tabla 1. Aspectos diferenciadores entre los procesos giles y los procesos dirigidos por modelos
Finalmente propusimos lo siguiente:
Personas. Al igual que en los procesos giles, nosotros s apostamos por darle una alta
prioridad a la relacin con el cliente. Aunque en los procesos dirigidos por modelos, el
cliente entra a formar parte del proyecto a partir del modelo del espacio del problema,
para nosotros es fundamental esa relacin desde el principio: para establecer cul es el
espacio del problema, para definirlo y para utilizarlo posteriormente como base de la
discusin entre el cliente-analista, entre el cliente-diseador/arquitecto, entre el cliente-
desarrollador. El cliente es parte fundamental durante todo el proceso, puesto que es la
forma de garantizar que el producto final cumpla sus expectativas.
Proceso. Es una parte muy relevante dentro de nuestra propuesta. El modelo de proceso
propuesto en MIDAS tiene mucho que ver con el de los procesos giles puesto que es
un modelo iterativo, incremental, adaptativo y con prototipado, lejano por tanto del
modelo en cascada indicado en los procesos dirigidos por modelos. El proceso iterativo
e incremental aporta grandes ventajas puesto que permite la obtencin de versiones del
producto software antes de la entrega final del mismo, Jacobson et al. (2000). Ambler
11
(2003) confirma adems, la posibilidad de realizar una implementacin iterativa e
incremental, a travs del desarrollo gil dirigido por modelos.
Tecnologa. Nuestra propuesta en este aspecto se basa en tecnologa XML y objeto-
relacional (Cceres et al., 2003). A diferencia de los procesos giles, este punto lo
consideramos relevante, puesto que los PSM indicados por MDA, son especficos de
una tecnologa concreta; luego es obligatorio identificarla.
Modelos. Este elemento tiene una alta prioridad en nuestra propuesta. Los modelos son
los artefactos que generamos y nuestra nica documentacin junto con el cdigo. Aqu
disentimos respecto a los procesos giles. Nosotros consideramos que el conocimiento
acerca del sistema y del negocio no puede mantenerse exclusivamente en la mente de
los desarrolladores y del cliente. Segn Atkinson y Khne (2003), es conveniente tanto
para satisfaccin del cliente como para el buen desarrollo del proyecto que se deje
constancia de ello por escrito con una notacin concisa; en nuestro caso se deja
constancia a travs de modelos en notacin UML y UML extendido.
Software. El objetivo de cada iteracin propuesta en MIDAS es la obtencin de un
prototipo o versin del producto software a travs de ciclos cortos de desarrollo, con la
finalidad de garantizar el progreso del software. Gracias a que el proceso es adems
incremental, el producto final se obtiene a travs de versiones lo que permite entregas al
cliente de forma rpida, previas a la versin final. Por lo tanto, s que dotamos de una
alta prioridad tambin a este aspecto, tanto a nivel de prototipo, como de versin no
definitiva.
Hay que destacar en este subapartado que, segn afirma Mellor et al. (2003), el hecho
de tener identificado un conjunto de modelos especficos as como sus reglas de
transformacin (Cceres et al., 2003), es tambin una forma gil de desarrollo, puesto
que cada modelo es autnomo, completo y se enlaza con otros modelos.
Proceso metodolgico de MIDAS
En MIDAS se ha combinado la arquitectura de MDA con una arquitectura de capas
donde cada capa representa una vista del sistema (Kulkarni y Reddy, 2003). De esta
forma tenemos una representacin bidimensional de nuestro proceso metodolgico (ver
figura 2).
CIM
DOMINIO NEGOCIO
Proceso
Proceso PIM
FUNCIONALIDAD
HIPERTEXTO
CONTENIDO
PSM
Proceso
Fig. 2.- Dimensiones del proceso metodolgico de MIDAS
La dimensin correspondiente al eje x, representa las diferentes vistas del SIW que en
nuestra propuesta son la vista del hipertexto, la vista del contenido y la vista de la
funcionalidad. La dimensin correspondiente al eje y, representa la parte independiente
12
de computacin primero (CIM) y despus, la parte independiente (PIM) y dependiente
de tecnologa (PSM).
La interseccin de ambas dimensiones ha dado lugar a un conjunto de modelos que
representan, a nivel de CIM el modelado conceptual del contexto o entorno del sistema,
a travs del modelado del dominio y del negocio; a nivel de PIM el modelado del
hipertexto, del contenido y de la funcionalidad del sistema, desde el modelado
conceptual hasta la etapa de diseo (excluido el diseo lgico); y a nivel de PSM
representan tambin el modelado del hipertexto, del contenido y de la funcionalidad del
sistema, desde la etapa de diseo lgico hasta la implementacin.
El proceso de desarrollo de MIDAS, mostrado en la figura 3, comienza siempre en la
definicin de los CIM, y posteriormente evolucionar hacia los PIM y hasta los PSM.
Sin embargo desde el punto de vista del eje x, y una vez completados los CIM, el
proceso puede comenzar en diferentes puntos a nivel PIM. Puede comenzar en la vista
de contenido o bien en la vista de funcionalidad con la definicin del modelo conceptual
de datos o de casos de uso, respectivamente. A continuacin, las guas de
transformacin permiten pasar a definir, bien la vista de hipertexto a nivel de PIM, o
bien continuar dentro de las mismas vistas para definir, ya a nivel de PSM, el modelado
lgico. Esta decisin vendr dada por las necesidades del cliente o bien por una
priorizacin de requisitos realizada la etapa de especificacin de requisitos.
CIM
Modelo de Modelo de
PIM
Presentacin Modelo de
Composicin de
Servicio
Servicio
Modelo Lgico
Modelo Lgico Modelo Lgico Modelo Lgico de Modelo Lgico
de Composicin
de Datos de Presentacin Hypertexto de Servicio
de Servicio
PSM
Referencias
Atkinson, C., Khne, T. Model-Driven Development: A Metamodeling Foundation.
IEEE Software, Vol. 4, pp. 36-41, septiembre-octubre de 2003.
Ambler, S. (2003). Agile Model Driven Development is Good Enough. IEEE Software,
Vol. 4, pp. 71-73, septiembre-octubre de 2003.
Booch, G. (2001). Developing the Future. Software Solutions. Communications of
ACM, vol. 44 (3), pp. 119-121, March 2001.
Cceres, P.; Marcos, E. (2001) Procesos giles para el desarrollo de aplicaciones Web.
Taller de Web Engineering de las Jornadas de Ingeniera del Software y Bases de
Datos de 2001. (JISBD2001). En http://www.dlsi.ua.es/webe01/articulos/s112.pdf
Cceres, P.; Marcos, E.; Vela, B. A MDA-Based Approach for Web Information
System Development. Workshop in Software Model Engineering
(WiSME@UML'2003) in conjunction with UML Conference. Octubre, 2003. San
Francisco, USA. Aceptado.
Fraternali, P. (2000). Tools and Approaches for Developing Data-Intensive Web
Applications: a Survey. Retrieved July 2000 from the World Wide Web:
http://toriisoft.com
Jacobson, I., Booch, G., Rumbaugh, J. (2000). El proceso unificado de desarrollo del
software. Addison Wesley.
Lowe, D.; Hall, W. (1999). Hypermedia & the Web. An Engineering Approach. J.
Wiley and Sons.
Fowler, M. (2001). The New Methodology. Retrieved May 2001 from
http://www.martinfowler.com/articles/newMethodology.html.
Kulkarni, V., Reddy, S. (2003). Separation of Concerns in Model-Driven Development.
IEEE Software, Vol. 4, pp. 64-69, septiembre-octubre de 2003.
Marcos, E., Cceres, P., Vela, B. y Cavero, J.M. MIDAS/DB: a Methodological
Framework for Web Database Design (DASWIS 2001). LNCS-2465. Springer Verlag.
ISBN 3-540-44122-0. Septiembre, 2002.
Mellor, S.J., Clark, A.N., Futagami, T. (2003) Model-Driven Development. IEEE
Software, Vol. 4, pp. 14-18, septiembre-octubre de 2003.
Miller, J. and Mukerji, J. (Eds). (2001) Model Driven Architecture. Document number
ormsc/2001-07-01. Retrieved from: http://www.omg.com/mda, 2003.
Snchez Daz, J., Pastor Lpez, O. (2001). Generacin automtica de prototipos de
interfaz de usuario a partir de modelos de requisitos. Actas de las Jornadas de
Ingeniera de Requisitos Aplicada (JIRA 2001), pp. 83-97, Sevilla (Espaa), Junio de
2001.
Overmyer, S. P. (2000). What's Different about Requirements Engineering for Web
Sites? Requirements Engineering, Vol. 5, pp. 62-65, Springer-Verlag, London.
Weneger, H. (2002). Agility in Model-Driven Software Development? Implications for
Organization, Process and Architecture. Retrieved from
http://www.softmetaware.com/oopsla2002/wenegerh.pdf
14
Mutacin de casos de prueba de JUnit
Mara del Mar Jimnez, Macario Polo, Jos Luis Ruiz, Mario Piattini
Escuela Superior de Informtica
Universidad de Castilla-La Mancha
Paseo de la Universidad, 4; 13071-Ciudad Real (Spain)
Mar.Jimenez@uclm.es
Resumen
En este artculo se presenta un mtodo y una herramienta para generar u ejecutar
de manera automtica casos de prueba similares a los de JUnit, pero aplicando
operadores de mutacin.
1 Introduccin.
Las pruebas mediante mutacin fueron propuestas originalmente por Hamlet (1977)
y DeMillo et al. (1978), y han sido desde entonces muy utilizadas. Dado un programa P
que se va a probar, se genera un conjunto de copias de P, pero introduciendo en cada
copia una pequea alteracin, normalmente sintctica, mediante al aplicacin de un
operador de mutacin. A estas copias levemente alteradas se las llama mutantes de
P.
De acuerdo con Offut et al. (1996), las pruebas mediante mutacin comienzan
generando un conjunto de casos de prueba que son pasados al programa original P; si la
salida de ste es incorrecta para algn caso de prueba, se revisa P hasta que las salidas
sean correctas. Cuando P responde correctamente, se ejecuta el conjunto de mutantes
con todos los casos de prueba. Se dice que el mutante m vive cuando su salida es igual
que la de P para todos los casos de prueba; si su salida es distinta para algn caso,
entonces se dice que m es un mutante muerto. Un mutante puede permanecer vivo por
varias causas: bien porque los casos de prueba no hayan ejercitado la instruccin
mutada (en este caso, es preciso construir ms casos de prueba hasta conseguir matarlo),
bien porque el mutante sea funcionalmente equivalente al programa original (caso en el
que es imposible encontrar un caso de prueba que lo mate, resultando adems muy
dificultoso detectar dicha equivalencia funcional debido al enorme nmero de mutantes
que se generan y a la mayor o menor complejidad del programa).
La Figura 1 muestra en su lado izquierdo un sencillo programa Fortran (tomado de
Offut et al., 1996) y dos mutantes, obtenidos el primero mediante la modificacin del
lado derecho de una asignacin, y el segundo sustituyendo un operador de comparacin
por otro. Si P funciona correctamente para un conjunto grande de casos de prueba,
tendremos una seguridad grande de que est bien construido (pero, como es bien sabido,
nunca podremos garantizarlo al 100%); sin embargo, si no slo P se comporta
correctamente, sino que adems los mutantes dan salidas diferentes a P para todos los
casos de prueba, entonces tenemos an mayor garanta de que P se est comportando
correctamente en cada una de las instrucciones mutadas (con lo que, en cierto modo, nos
aproximamos a la resolucin del problema irresoluble de demostrar que un programa es
totalmente correcto); adems, al ofrecer cada mi una salida distinta de la dada por P,
podemos asegurar que se ha ejecutado la instruccin mutada en el programa original,
15
con lo que podemos conocer la cobertura alcanzada por los casos de prueba. Adems, si
P se comporta correctamente en la instruccin mutada y algn mutante ofrece una salida
distinta, entonces sabemos que la sentencia es correcta para ese caso de prueba; si
obtenemos resultados similares para otros mutantes, entonces tendremos mucha mayor
confianza en la calidad de esa sentencia, de las instrucciones anteriores y posteriores y
del programa completo.
P m1 m2
FUNCTION Min(I,J) FUNCTION Min(I,J) FUNCTION Min(I,J)
Min=I Min=J Min=I
IF (J .LT. I) Min=J IF (J .LT. I) Min=J IF (J .GT. I) Min=J
RETURN RETURN RETURN
16
aleatorios), generamos un conjunto grande de casos de prueba, pasando las
combinaciones de los valores de prueba como parmetros en cada test case.
Clase que vamos a probar Descripcin del test script n 284
public class Triangulo implements { //TS_284
public Triangulo(){ ... } //public Triangulo()
public void setX(int x) { ... } //public void setY(int x1)
public void setY(int y) { ... } //public void setZ(int x1)
public void setZ(int z) { ... } //public void setX(int x1)
public void calcularTipo(){ ... } //public void calcularTipo()
}
Descripcin del 83 test case del test Descripcin del 84 test case del test
script n 284 script n 284
Triangulo TS_284_83= new Triangulo(); Triangulo TS_284_84= new Triangulo();
TS_284_83.setY((int)12455); TS_284_84.setY((int)32768);
TS_284_83.setZ((int)32768); TS_284_84.setZ((int)32768);
TS_284_83.setX((int)1); TS_284_84.setX((int)1);
TS_284_83.calcularTipo(); TS_284_84.calcularTipo();
Figura 2. Una clase, uno de sus test scriptsy dos de los test cases generados
Los test case que generamos siguen la misma filosofa que los casos de prueba de
JUnit, un entorno para automatizar la realizacin de pruebas de caja negra de programas
Java, que permite el Desarrollo dirigido por las pruebas, propio de las metodologas
giles (en particular, de XP) (Beck, 2003). Para crear casos de prueba de JUnit, debe
crearse una especializacin de Te stCase (Figura 3), y aadir a sta una serie de mtodos
de prueba, cuyo nombre debe comenzar por test para que sean interpretados y
ejecutados (mediante Reflexin) por la herramienta. Cada mtodo aadido constituye
realmente un caso de prueba, en el que, a grandes rasgos, se crea manualmente el objeto
(resultado) esperado, y mediante llamadas a mtodos de la clase que se est probando el
objeto (resultado) obtenido. Entonces, ambos objetos son comparados utilizando una
serie de mtodos assert que estn definidos en la clase Assert, de la que tambin hereda
la clase de prueba que hemos construido.
<<Interface>>
Test
Assert
En nuestro caso, dada una clase que queremos probar, creamos una clase de prueba
a la que aadimos de manera automtica un conjunto de mtodos de prueba del estilo
del mostrado en la Figura 4.
17
public Triangulo testTS_284_23() throws Exception {
Triangulo TS_284_23= new source.Triangulo();
TS_284_23.setY((int)12455);
TS_284_23.setZ((int)32768);
TS_284_23.setX((int)12455);
TS_284_23.calcularTipo();
return TS_284_23;
}
Figura 4. Uno de los casos de prueba generados, contenido en la clase TestTriangulo.java
18
Entonces, comparamos el resultado ofrecido por el mtodo original con el que ofrece
cada uno de los mtodos de prueba. Esto se realiza tambin mediante la ejecucin de
otro mtodo, generado tambin de forma automtica, que es el ofrecido en la siguiente
figura:
String cab="TS_284_23;TS_284_23_m0;TS_284_23_m1;TS_284_23_m2;TS_284_23_m3\n";
String lin=(TS_284_23==null ? "null;" : TS_284_23.toString() + ";") +
(TS_284_23_m0==null ? "null;" : TS_284_23_m0.toString() +";") +
(TS_284_23_m1==null ? "null;" : TS_284_23_m1.toString() +";") +
(TS_284_23_m2==null ? "null;" : TS_284_23_m2.toString() +";") +
(TS_284_23_m3==null ? "null\n" : TS_284_23_m3.toString() +"\n");
try { mF.write(cab.getBytes()); mF.write(lin.getBytes()); } catch (Exception e) {}
}
Figura 6. Mtodo generado para comparar los objetos creados por el mtodo original y sus
mutantes
19
3 testOO: la herramienta de generacin automtica de casos
de prueba
testOO es una herramienta que extrae mediante Reflexin el conjunto de
operaciones de una clase Java ya compilada, y que genera una clase que contiene una
lista de mtodos test, consistentes cada uno en la construccin de un objeto y una
secuencia de llamadas a sus mtodos (como el mostrado en la Figura 4), un conjunto de
mutantes para cada mtodo de prueba (Figura 5), varios mtodos para comparar los
resultados obtenidos por los mtodos buenos (no mutados) y los mutantes (Figura 6),
as como una funcin main en la que se llama a los distintos mtodos de comparacin
(Tabla 1). Ha sido desarrollada por Jos Luis Ruiz, coautor de este artculo.
public static void main (String [] args){
TestTriangulos2 tc=new TestTriangulos2();
tc.comprobarTS_284_1();
tc.comprobarTS_284_2();
...
tc.comprobarTS_284_26();
tc.comprobarTS_284_27();
String s="Muertos: " + tc.mMuertos + "; Vivos: " + tc.mVivos;
try { tc.mF.write(s.getBytes()); tc.mF.close(); } catch (Exception e) {}
}
}
Figura 7. Funcin main que ejecuta y muestra los resultados de la prueba, aadida a la clase de
prueba
El lado izquierdo de la siguiente figura muestra la ventana inicial de testOO, a partir
de la cual se carga la clase compilada (tambin puede cargarse una clase de un modelo
Rational Rose con el mismo objetivo) y se muestra en un rbol su lista de miembros. El
usuario selecciona la longitud de los test cases que desea generar. testOO genera todas
las secuencias posibles de llamadas (test scripts) de longitudes desde 1 hasta la
especificada, y las muestra en la ventana que se muestra en el lado derecho.
Obviamente, se genera un nmero muy grande de test scripts que no ocurrirn en la
ejecucin real de la clase (como la mostrada en la figura), por lo que el usuario puede
eliminar manualmente las que no desee en la ventana que aparece a la derecha de la
Figura 8 (Doong y Frankl, 1994, proponen un mtodo de filtrado de test scripts mucho
ms elegante, que modela las secuencias de llamadas vlidas mediante expresiones
regulares; estamos trabajando en un mtodo similar, que acepte o rechace secuencias
segn el diagrama de estados que describe la clase que se est probando).
20
Figura 8. Aspecto de la herramienta testOO
Tras pulsar el botn Continue en la ventana del lado derecho de la figura anterior, la
herramienta genera un fichero de prueba que contiene el cdigo que ejecutar las
pruebas. Para ello, toma los test scripts aceptados por el usuario y, para cada uno,
genera un conjunto de test cases ejecutables dando a los parmetros valores reales
(recurdese el ejemplo mostrado en la Figura 2). Cuando el tipo de los parmetros es
primitivo no hay problema en la asignacin de los valores; cuando el tipo de alguno de
ellos es complejo (por ejemplo: en la clase Tarjeta de una aplicacin bancaria hay una
operacin transferir(Cuenta destino, double importe, String concepto), en donde Cuenta
es una clase de la propia aplicacin), el objeto usado para dar valor al parmetro debe
existir previamente, haber sido serializado y haber sido salvado en un directorio
especfico en el que testOO busca valores de prueba.
La herramienta incluye un editor/visor manual de objetos, que permite crear y
serializar instancias. En la Figura 8, el usuario est creando una instancia de Tarjeta,
que tiene dos campos de tipo String (mNumero y mTitular) y otro de tipo Account. Para
dar valor a los dos primeros, el usuario utiliza la caja de texto que hemos resaltado con
una elipse; el tercer campo no es asignable de esta manera, sino que debe asignarse
mediante un objeto que ya debe estar creado y guardado en disco, lo que se hace con la
caja de texto de debajo, que muestra un cuadro de dilogo para que el usuario navegue y
cargue el objeto que quiere asignar. La creacin manual de objetos es desde luego
bastante costosa, pero los objetos quedan archivados para ser reutilizados cuando sea
necesario; esto se consigue utilizando la serializacin automtica, que me permite
guardar objetos en tie mpo de ejecucin.
21
Figura 9. Editor manual de objetos.
5 Agradecimientos
Este trabajo est parcialmente financiado por el proyecto MS (Mantenimiento
gil del Software), TIC2003-02737-C02-02, Ministerio de Ciencia y Tecnologa.
22
6 Referencias
Beck K. (2003). Test-drive development: by example. Addison-Wesley. Boston,
MA, EE.UU.
DeMillo RA, Lipton RJ y Sayward FG. (1978). Hints on test data selection: help for
the practicing programmer. IEEE Computer, 11(4), 34-41.
Doong RK. y Frankl PG. (1994). The ASTOOT approach to testing object-oriented
programs. ACM Transactions on Software Engineering and Methodology, 3(2):101-130.
Fewster M y Graham D. (1999). Software Test Automation. Addison-Wesley, ACM
Press Book. Boston, MA, EE.UU.
Ghosh S y Mathur AP. (2001). Interface mutation. Software Testing, Verification
and Reliability, 11, 227-247.
Hamlet, RG. (1977). Testing programs with the aid of a compiler. IEEE
Transactions on Software Engineering, 3(4).
Offut AJ, Rothermel G, Untch RH y Zapf C. (1996). An experimental determination
of sufficient mutant operators. ACM Transactions on Software Engineering and
Methdology, 5(2), 99-118.
23
24
Experiencias de formacin en metodologas giles
Resumen
Las metodologas giles estn acaparando gran inters en la industria del software generando una clara
necesidad de formacin en este enfoque. El trmino gil est estrechamente asociado a un conjunto de
ideas pragmticas para la produccin de software, con un marcado nfasis en los aspectos humanos
del trabajo en equipo. Por estas caractersticas, la formacin en metodologas giles supone la
bsqueda de estrategias innovadoras que permitan motivar al alumno y escenificar los aspectos claves
de la filosofa que conlleva una metodologa gil. En este trabajo se describe nuestra experiencia de
formacin en metodologas giles realizada en los dos ltimos aos con alumnos de informtica en la
Universidad Politcnica de Valencia. Se explica el esquema de trabajo establecido, fruto de una serie
de refinamientos, incluyendo el mtodo docente y el mtodo de evaluacin aplicados.
1. Introduccin
Es indudable el inters que han despertado las metodologas giles para el desarrollo de software.
Despus de ser vistas en un comienzo como una moda o una mera corriente radical, han pasado a ser
un atractivo medio para mejorar el proceso de produccin de software, con bastante afinidad respecto
de las necesidades actuales de muchos equipos de desarrollo en la industria del software. Este inters
industrial ha ido acompaado del reconocimiento en entornos acadmicos y de investigacin,
demostrado por el espacio conseguido en conferencias internacionales y revistas de prestigio.
Acompaado de esta situacin surge la necesidad de contar con estrategias de formacin en
metodologas giles. Sin embargo, los esquemas tradicionales utilizados para llevar a cabo la
formacin en notaciones de modelado y en herramientas no son apropiados, principalmente porque la
formacin en una metodologa debe orientarse a la aplicacin efectiva de los conocimientos en
notaciones y herramientas, enfatizando el marco de proyecto de ingeniera y el trabajo en equipo. Los
trabajos realizados en este mbito son escasos y suelen estar ms orientados a la evaluacin de
prcticas giles mediante experimentos.
El objetivo de este trabajo es presentar una estrategia de formacin en metodologas giles y los
resultados de nuestra experiencia en su aplicacin, llevada a cabo durante los aos acadmicos 2002-
2003 y 2003-2004 en la Escuela Tcnica Superior de Informtica Aplicada (ETSIA) y en la Facultad
de Informtica (FI) de la Universidad Politcnica de Valencia (UPV). Nuestra iniciativa se enmarca
dentro del contexto de programas de ayuda a la mejora de la enseanza del Proyecto EUROPA [6].
Las asignaturas objeto de la experiencia son: El proceso del software (PSW) y Laboratorio de
Desarrollo de sistemas de informacin (LDS), ambas optativas de tercer ao en la intensificacin en
Ingeniera del Software de la ETSIA, y Laboratorio de Sistemas de Informacin (LSI), optativa de
quinto curso en la FI. El trabajo aqu presentado es la continuacin natural de otros previos de los
autores [3, 4, 5].
Debido a que eXtreme Programming (XP) [1] es la metodologa gil ms popular y que cuenta con
abundante informacin en libros e internet decidimos centrar en ella nuestro estudio.
25
El resto de este artculo est organizado como se describe a continuacin. En la seccin 2 se presenta
el contexto de aplicacin donde se est realizando la formacin en metodologas giles. En la seccin
3 se describen el mtodo docente y de evaluacin utilizados. Finalmente en la seccin 4 se establecen
las conclusiones y el trabajo futuro.
2. Contexto de aplicacin
Dado que la enseanza de una metodologa exige que el alumno tenga cierta madurez en cuanto a
conocimientos y experiencia en construccin de software, decidimos abrir un espacio a las
metodologas giles en los contenidos de los ltimos cursos, tanto en la titulacin de Ingeniero
Tcnico en Informtica (en la ETSIA) como en Ingeniero en Informtica (en la FI). Comenzamos el
perodo 2002-2003 en la FI con la asignatura LSI. Este segundo ao de aplicacin hemos definido
tambin un esquema para la ETSIA, aprovechando la implantacin del nuevo plan de estudios que
inclua la Intensificacin Ingeniera del Software, a la cual pertenecen las asignaturas PSW y LDS.
Las clases de laboratorio se imparten en un aula que dispone de 20 puestos de trabajo acondicionados
para 40 alumnos. Las clases de teora y problemas se realizan en un aula tradicional.
LSI es una asignatura optativa de quinto ao con una asignacin de 6 crditos, todos ellos son crditos
de laboratorio. La matrcula en LSI ha ido en aumento en los ltimos aos hasta llegar actualmente a
copar el mximo establecido de 60 alumnos. LSI viene impartindose desde el perodo 1997-1998 y
sus contenidos han evolucionado desde prcticas con notaciones de modelado y herramientas CASE
hacia el trabajo en equipo para desarrollar un sistema de informacin. Hasta hace tres aos, slo
utilizbamos Rational Unified Process (RUP) [2] como metodologa en LSI. Al introducir XP en LSI
nos pareci apropiado mantener tambin RUP para ofrecer una visin ms global en el mbito de las
metodologas. Este ao se han definido 8 equipos de trabajo de 6 a 8 integrantes. As, 4 equipos
utilizan RUP y los otros 4 trabajan con XP. Cada alumno asiste a dos sesiones semanales, de 2 horas
cada una.
PSW es una asignatura de tercer ao de la ETSIA que cuenta con 4.5 crditos de teora y problemas, y
1.5 de laboratorio. PSW se imparte en el primer cuatrimestre. En los contenidos tericos, PSW aborda
los modelos de proceso para desarrollo de software, metodologas (XP, RUP, Mtrica) y estndares en
ingeniera de software. En su parte prctica se realiza un caso de estudio aplicando el Juego de la
Planificacin de XP.
Hay que considerar que en tercer ao en la ETSIA los alumnos en otras asignaturas comienzan a
trabajar con el modelo orientado a objetos y aprenden modelado conceptual de bases de datos. Con lo
cual, para PSW y LDS no se haca recomendable utilizar una metodologa tradicional, al menos en la
parte prctica, puesto que se presentaran problemas de sincronizacin difciles de resolver respecto de
los conocimientos y madurez necesaria en notaciones y herramientas. As, el esquema que hemos
depurado en LSI lo aprovechamos y adaptamos para la ETSIA distribuyndolo en parte en PSW (la
parte terica de metodologas giles y un caso prctico aplicando el Juego de la Planificacin) y en
LDS (el formato de proyecto de desarrollo trabajando en equipos).
26
3. Mtodo docente y de evaluacin
En esta seccin nos centraremos en describir el esquema que hemos establecido en LSI para la
enseanza de metodologas giles, en particular XP.
LSI se imparte por dos profesores, de los cuales uno desempea el rol de cliente y el otro de
entrenador para todos los equipos XP. Cada equipo XP tiene un jefe, un tester/tracker y entre 4 a 6
programadores. La composicin de los equipos y la asignacin de los roles se efecta de forma
aleatoria.
Planificacin XP
1 2 3 4 5 6 7 8 9 10 11 12
Al trmino de cada iteracin los equipos realizan una presentacin del resultado obtenido, incluyendo
una demo del producto y comentarios de las incidencias en la planificacin y otras aparecidas durante
el trabajo de la iteracin. Se hace hincapi en la deteccin (encargada al tracker) y resolucin
inmediata de desviaciones en la planificacin mediante negociacin con el cliente.
Durante todo el desarrollo del proyecto se dedica una sesin semanal exclusiva al trabajo en equipo en
el laboratorio. En estas sesiones est presente el cliente. La otra sesin semanal se utiliza para las
presentaciones de seguimiento y actividades complementarias trabajando slo con el entrenador.
Adems, tanto el cliente como el entrenador estn disponibles para los equipos en los horarios
establecidos para tutoras u otros que de comn acuerdo puedan establecerse. Los equipos se renen
segn sus disponibilidades. Sin embargo, para conseguir la aplicacin del equivalente a la prctica de
las 40 horas semanales se estableci un lmite de 12 horas de trabajo semanal para cada alumno,
incluyendo las 4 horas de trabajo en laboratorio.
Los artefactos con los cuales se trabaja son: Historias de Usuario, Tareas, Casos de Prueba, Plan de la
Entrega y Cdigo. Adems se deja como opcional el utilizar cualquier tcnica de modelado.
Normalmente los equipos al menos utilizan un modelo lgico relacional para el diseo de la base de
datos.
27
En la pgina web de la asignatura (http://www.dsic.upv.es/asignaturas/facultad/lsi/), en el apartado
contenidos, puede verse el detalle de las actividades que se realizan, el mtodo docente para cada
una de ellas, el material de apoyo proporcionado al alumno y el tipo de evaluacin.
En PSW el trabajo de laboratorio se evala de acuerdo con una presentacin del resultado del la
exploracin y de la planificacin de la entrega. Los equipos deben presentar las Historias de Usuario,
Plan de la Entrega, Tareas para la primera iteracin y prototipos desarrollados. Este caso de estudio se
pondera con un 30% de la nota final. El otro 70% corresponde al examen que cubre los contenidos
tericos de la asignatura.
En cuanto a la recreacin eficaz de una situacin real de proyecto, pensamos que hay algunos aspectos
claves que han contribuido positivamente, entre los que destacaron: a) se cuenta con dos instructores
que realizan de forma separada el rol de cliente y el de entrenador; b) se efectan presentaciones de
seguimiento del proyecto y se comenta desde distintas perspectivas (como cliente y como entrenador)
el trabajo realizado; c) la utilizacin de un mtodo de evaluacin diversificado en el cual cada
integrante tiene una evaluacin como parte del equipo desde la perspectiva del cliente, como
integrante del equipo evaluado pblicamente por el jefe, y como participante, evaluado secretamente
por sus compaeros de equipo; y d) la eleccin de un buen caso de estudio en el cual el cliente pueda
desenvolverse con naturalidad y ofrecer material de apoyo como por ejemplo documentos con datos
utilizados por el sistema actual. Con respecto a esto ltimo hemos obtenido los mejores resultados
trabajando con un sistema de informacin que exista y haba sido desarrollado por el profesor que
desempeaba el rol de cliente.
En XP se han presentado conflictos entre miembros del equipo. Esto tiene su clara explicacin en el
hecho que los diferentes ritmos de trabajo y capacidades quedan ms rpidamente en evidencia en el
esquema de trabajo XP, que exige una mayor interaccin, participacin y protagonismo de los
integrantes. Sin embargo, en todos estos casos la situacin se apacigu o al menos se llegaron a
28
acuerdos prcticos de cara a los objetivos. Esto le dio una perspectiva de realismo no esperada al caso
de estudio y como tal fue asumida y aprovechada como experiencia.
Con las asignaturas PSW y LDS se ha comenzado este ao una experiencia similar a la implantada en
LSI. En este caso las condiciones parecen incluso ms apropiadas para la incorporacin de
metodologas giles. Los alumnos en tercer curso de la ETSIA comienzan a aprender notaciones de
modelado (E-R para diseo de bases de datos y UML en orientacin a objetos). En segundo curso slo
llegan a ver el enfoque estructurado (DFDs y Diagramas de Estructura) y diseo lgico relacional. As,
la incorporacin de una metodologa tradicional tendra muchos inconvenientes para ser exitosa. Por
otra parte, la sencillez de una metodologa gil como XP permite dar al alumno una visin del trabajo
en equipo en un proyecto de desarrollo de software utilizando un enfoque disciplinado, todo ello
dentro de las restricciones de tiempo que tiene una asignatura.
Respecto de las prcticas XP, su grado de aplicacin vara y es uno de los aspectos que pensamos que
se debera intentar mejorar. Entre las prcticas que ms dificultades de aplicacin presentaron estn:
pruebas, refactoring e integracin continua. Estas prcticas requieren experiencia y mucha disciplina,
lo cual es difcil de conseguir sin un entrenamiento previo. En el caso de las pruebas, no basta con
herramientas del tipo XUnit puesto que particularmente en sistemas de informacin de gestin gran
parte de las pruebas se asocian a probar interfaces grficas de usuario. La integracin continua y el
trabajo en grupo necesitan disponer de herramientas adecuadas, que permitan control de versiones y
automatizacin en la integracin y pruebas asociadas. Por otra parte, aunque el cliente in-situ es sin
lugar a dudas importante, para efectos de formacin la disponibilidad que establecimos para el cliente
result suficiente. Similarmente, en un comienzo pensamos que la configuracin del espacio de trabajo
que ofrecan nuestros laboratorios poda constituir un inconveniente, pero no fue as. La programacin
en parejas tampoco present problemas destacables, aunque por problemas de coincidencias horarias
entre los integrantes no toda la programacin se hizo en parejas. El resto de las prcticas de XP fueron
aplicadas en un alto grado, particularmente Entregas Pequeas y Juego de la Planificacin.
Como trabajo futuro, adems de la continua mejora en el plan de trabajo y en el material de las
asignaturas, nos planteamos las siguientes tareas:
- Continuar con la iniciativa de dejar disponible todo el material en la pgina web de las asignaturas,
tal como ya se hace con LSI.
- Hemos comenzado un proyecto para dotar de infraestructura para el trabajo de los equipos. Se trata
de la implantacin de un servidor de contenidos va Web que permitir a los miembros de un
equipo de desarrollo de software (alumnos y profesores) colaborar en la realizacin de un proyecto.
Dicho servidor proporcionar un repositorio compartido para los artefactos generados durante el
29
proyecto y una serie de servicios tales como: administracin de usuarios, control de acceso, carga y
descarga de artefactos, discusin entre los miembros del equipo, material de apoyo para la
realizacin del proyecto (plantillas, ejemplos, etc.). Adems la informacin resultante del proyecto
quedar disponible para cursos posteriores. Tambin se incorporar la evaluacin continua del
alumno, pudiendo cada alumno conocer sus calificaciones hasta el momento, as como estadsticas
de evaluacin de su equipos y de los otros equipos. Para la implementacin se seleccionarn
herramientas Open Source y se desarrollarn las extensiones necesarias para ajustarlas a las
necesidades requeridas.
Referencias
[1] Beck K.. Una Explicacin de la Programacin Extrema, Aceptar el Cambio. Addison-Wesley,
2002.
[2] Jacobson I., Booch G and Rumbaugh J. The Unified Software Development Process. Addison-
Wesley, 1999.
[3] Letelier P., Cans J.H. Incorporando Extreme Programming como Metodologa de Desarrollo en
un Laboratorio de Sistemas de Informacin. Thomson, Actas de las IX Jornadas de Enseanza
Universitaria de la Informtica (JENUI 2003), pp. 257-264, Cdiz, Julio 2003.
[4] Letelier P., Cans J.H. An Experiment Comparing RUP and XP. Springer-Verlag, Lecture Notes
in Computer Science, Proceedings of IV International Conference on Extreme Programming, XP
2003, pp. 41-46. Gnova, Italia, Mayo 2003.
[5] Letelier P., Cans J.H. Working with Extreme Programming in a Software Development
Laboratory. Proceedings Fifteenth International Conference on Software Engineering and
Knowledge Engineering , SEKE 2003, pp. 612-615. San Francisco, Julio 2003..
30
Brief eXPERT Approach Description
Teodora Bozheva
European Software Institute
Parque Tecnolgico
48170 Zamudio, Bizkaia
Spain
Teodora.Bozheva@esi.es
eXPERT APPROACH
Development Guidelines
All SME developing e-commerce and e-business software have similar business
objectives, namely Faster-Better-Cheaper. Reports from the field show that
productivity and software quality increase by applying XP principles. However, even
projects that have adopted several or all XP practices meet project management
problems, namely related to estimating and planning the project, both in terms of time
and costs.
To overcome this obstacle eXPERT focuses on combining XP and PSP practices. In
particular PSP principles are added to provide the development teams a means to
measure their effectiveness, use it to better plan and manage the projects, and as a
consequence increase the customer satisfaction. The combination considered the
following objectives:
o To maintain the approach comprehensive
o To maintain the approach easy to apply. Calculation of the additional
measurements is essential for making the method practical, however the
approach has to remain applicable by software developers.
o To provide all data necessary to perform good estimations, project planning
and management activities.
o To retain the people motivated to use the approach.
31
eXPERT approach architecture
The eXPERT approach builds on XP and PSP principles. The activities described into
the eXPERT approach are based on the XP practices. Certain modifications to the
pure PSP principles are introduced mainly related to measuring the effectiveness of
the activities and the defect rates in order to identify problem causes and to eliminate
them in the future. The logs for collecting project data follow the templates and the
principles of PSP, but are adjusted as to fit the XP method, in particular to reflect the
fact that developers work in pairs and the design, testing and coding process are
strongly interrelated and executed in parallel. The PROBE method used for
estimating time necessary to develop a given customer requirement considers
requirement complexity, which is a slight modification of the PROBE method used
in PSP.
The eXPERT approach is described in terms of processes. There are several reasons
for selecting this manner of representation, namely:
o Software development companies, influenced by the well-known models for
software process improvement like CMM, ISO and SPICE, are used to think
in terms of processes, and it will be easier for them to understand and
implement a process-oriented approach.
o A description in terms of processes facilitates the comparison between a
current state of the software development activities performed into an
organization with their state after the new approach has been implemented and
adopted.
o Companies who later will want to assess and/or increase their maturity
following models like CMM, ISO or SPICE, will be able to do it easier.
The eXPERT approach consists of the following processes, as shown on fig.1:
o Customer Requirements Management (CRM)
o Project Management (PM)
o Design (DS)
o Code (CD)
o Test (TS)
The processes are described in terms of
o Activities,
o Tasks that have to be done to complete an activity, and
o Responsible role for performing a task.
For the sake of brevity the processes are described herein only at the level of
activities. The complete description of the eXPERT approach also provides guidelines
for its application, definition of the probe method, data recording logs and a set of
tools supporting the usage of the method.
32
Customer requirements
Customer Iteration
Project Iteration
Requirements Estimated CR plan
plan
Management Management
Project planning
Testing Estimations
scenarios Communication
Design
Test-before-
code
Code Coding
standardTest
software product
33
o To specify tests that prove whether the requirements have been correctly
implemented. These acceptance tests are later implemented by developers to
validate the application.
o To perform the acceptance test before accepting the product from the
development team.
Project leader
The Project Leader supervises and guides the application of the eXPERT approach.
Project Leaders responsibility:
o To lead the everyday work: the day-to-day process of planning, designing,
testing, coding, releasing.
o To ensure that the entire team takes part into the release and iteration
planning. To coordinate the project activities.
o To take measures: project velocity, developers productivity, defect removal
efficiency
o To look for things that slow the team, and to resolve them.
o To resolve scheduling conflicts.
o To keep up-to-date stakeholders which are not directly involved in the
project.
o To tune the approach to the project and organisations needs.
Developer
The developers analyse, design, test, code, and integrate the system. The developers
estimate the difficulty of all requirements, and the time they need to develop and
deliver the product to the customer.
Developers responsibilities:
o To estimate requirements complexity
o To split requirements to tasks small enough
o To base the program on simple, clear design, to produce quality software
quickly.
o To improve the design using refactoring.
o To keep the system integrated at any time, so that there is a good working
version to look at.
o To share the ownership of the code, so everyone feels able to make everything
better.
o To follow the accepted coding standards.
o To make sure that the system always works, writing and using comprehensive
unit tests, and using customers acceptance tests.
o When necessary and appropriate to code in pairs, for maximum speed and cross
training, in support of shared code ownership and rapid progress.
o To support the Customer in implementing the acceptance tests.
34
EXPERT Processes
Project Management
Overview: The project management process encompasses activities related to
planning, tracking and controlling the software development. Project management
includes activities that ensure the delivery of a high-quality system on time and within
budget.
Estimation of the customer requirements is made into the Customer Requirements
Management process because it is a prerequisite for prioritising the customer
requirements and deciding which ones of them to include in the following iteration,
which is a responsibility of the Customer.
Process Input: Documented customer requirements
Activity1: Define the Project
Activity2: Create Release Plan
Activity3: Create Iteration Plan
Activity4: Monitor and Control the Project
Activity6: Conclude Project
Activity7: Measure the Process
Activity8: Tune process
35
Process Output: Iteration and release plans
Design
Overview: During the design process the customer requirements are decomposed to
product components. The design process is highly interrelated with the Code and Test
processes.
Process input: Documented customer requirements
Activity1: Prepare for design
Activity2: Design
Activity3: Document design
Activity4: Make Design Inspection
Activity5: Measure process
Process output: Coding standard, Design document
Completion criteria: simple design well understood by the whole team
Code
Overview: The objective of the Code process is to produce the code of the software
product that satisfies the customer requirements. The code is permanently maintained
in good condition, i.e. in reusable, testable and working state. The coding process is
highly interrelated with the Design and Test processes.
Process input: Documented CR, Design document, Coding standard
Activity1: Implement the product
Activity2: Integrate the code
Activity3: Measure process
Process output: Software product
Completion criteria: Customer requirements and acceptance tests satisfied
Measurement: Implementation effort
36
Test
Overview: The purpose of the Test process is to validate that the software product
produced meets the requirements and satisfy the acceptance criteria defined by the
customer. The Testing process is highly interrelated with the Code and Design
processes.
Process input: Documented CR, Design document, Coding standard
Activity1: Prepare for testing
Activity2: Implement acceptance tests
Activity3: Perform unit testing
Activity4: Perform regression testing
Activity5: Perform acceptance testing
Activity6: Measure process
Process output: Code without defects
Completion criteria: The test cases defined cover all typical, boundary, and specific
cases described by the customer requirements
Measures: Defects rate, Effort spent on acceptance testing
REFERENCES
eXPERT approach description and guidelines for its application, www.esi.es/Expert
Case studies about the 7 trials of the eXPERT approach: www.esi.es/Expert
L. Williams, The Collaborative Software Process, PhD dissertation
Ron Jeffries, Ann Anderson, Chet Hendrickson, The XP Series: EXTREME
PROGRAMMING Installed; Addison Wesley
Watts S. Humphrey, A Discipline for Software Engineering; Addison Wesley (1995)
37
38
eXPERT: Results from seven pilot projects
Teodora Bozheva
European Software Institute (ESI)
Parque Tecnolgico #204
48170 Zamudio (Bizkaia)
Teodora.Bozheva@esi.es
1. Introduction
For the past several years, business has been evolving into e-business, commerce into e-
commerce, education into e- learning, work into e-work, and the projects related to them
all are naturally called e-projects. This development of the e-era requires large amounts
of software development with specific requirements and constraints. If in software
development projects cost is usually the most important control criteria, in e-project
development time-to-market is in most cases the most critical, overriding cost, quality
or any other criteria; the reason is that often getting to the marketplace soon would
provide a very significant market opportunity.
Several agile methodologies appeared recently whose goal is to serve the needs of e-
service providers. They all aim at customer satisfaction, adaptability to changes,
delivering high quality products quickly and within an agreed budget frame. They look
promising but little actual experience still exists using them in real e-project
development (or any other development).
This article presents the results of seven pilot projects, which have applied an agile
method based on the principles of extreme programming (XP) and the Personal
Software Process (PSP) 1 , named eXPERT. The goal of combining XP and PSP is
twofold: (a) to improve developers productivity and product quality, and (b) to
facilitate the integration of beginner programmers into real software development
projects, namely to help them start working in a disciplined manner, to correctly define
and estimate their tasks, as well as to provide means for a smoother and more efficient
software development.
2. eXPERT
The eXPERT project 2 was established with two main objectives:
To define a practical combination of XP[3] and PSP[4] practices, named eXPERT
approach;
To experiment the eXPERT approach in 7 pilot projects in order to validate its
usability, benefits and pitfalls, and to collect and disseminate best practices and
lessons learned.
1
PSP is developed at the Software Engineering Institute (SEI), Carnegie Mellon University.
2
The eXPERT project (http://www.esi.es/Expert) is partially funded by the European Commission
through the IST programme (ref. IST-2001-34488) and by the Spanish Ministry of Science and
Technology (TIC-2001-5254).
39
The eXPERT approach includes all the XP practices, and three PSP practices: time and
effort recording, defect recording, task estimation by means of the Probe method,
modified as to reflect customer requirements complexity instead of LOC.
The eXPERT approach is described in terms of 5 processes: Customer Requirements
Management, Project Management, Design, Test, and Code. This allows software
development companies, influenced by models and standards like CMM(I) and ISO,
and used to think in terms of processes, to understand and implement the approach. A
description in terms of processes makes it easier to compare the state of the software
development activities performed in an organization at different times.
Despite the process-oriented description of the method it preserves the individual
orientation of XP and PSP, remains comprehensive and easy to apply, and at the same
time provides all the data necessary to perform good estimations, project planning and
management activities
3. Experiment approach
The eXPERT approach was defined after a thorough study of both models. Two of the
piloting teams had little experience in software development, and only one of the other
teams had previously applied some XP practices. Every team defined a Baseline project,
developed with the companies traditional approach and a comparable Pilot one, in
which the eXPERT approach was experimented. All the projects were real ones in the
area of e-commerce.
All the pilot projects had the following business goals:
o G1: To increase productivity of the developers by 20%
o G2: To reduce the defect rate by 30%
o G3: To decrease schedule and cost deviations by 15%.
Several metrics (see Table 1) were defined to show goal achievement. Companies, who
did not have available data, used part of the ir Pilot projects as a Baseline. In particular
they developed certain modules of the Pilot Project with the ir traditional approach in
order to obtain data and be able to see if there was an improvement or not. To decrease
the influence of the experience gained in the domain, different developers took part in
the implementation of the Baseline and the Pilot projects. The teams selected, however,
had relatively the same professional level. The duration of the pilot projects ranged from
6 to 9 months and they all were in the e-service area.
Three reviews were performed to all the pilot projects. They were realised according to
a predefined procedure. After each review lessons learnt by all the experimenting
companies were described and documented. Additionally, it was checked, if the project
objectives and the additional business goals defined by the companies were reached.
The collection of metrics, though tedious in the beginning as mentioned by the
companies, has proved to be useful, clearly showing whether the project objectives were
fulfilled, and the organisations keep applying them in their following projects.
40
Metric Calculation Unit Measured Possible degree of detail
Defect Rate Number of defects Number Number of defects Make measurements for different types of defects
Measure Defect Rate both for the team and for each programmer
Measure Defect Rate for the whole project and for each release and/or iteration
(Effort spent for bug fixing / Effort) x % Effort spent for bug fixing Measure Defect Rate both for the team and for each programmer
100 [Man month] Measure Defect rate for the whole project and for each release and/or iteration
Relative ((Real time - Planned time) / Planned % Real time [months] Measure the times planned and real for
Schedule time) *100 the whole project
Deviation Planned time [months] a release
an iteration
each user story/ feature/
Relative cost ((Real costs - Planned costs)/Planned % Real costs [K ] Measure the costs planned and real for
deviation costs) *100 the whole project
Planned costs [K ] a release
an iteration
each user story/ feature/
Relative project (1-Cost pp /Cost bp)x100 % Costpp [K ] Measure Relative project cost change
cost change Costbp [K ] For the overall project
For selected modules
Customer Customer satisfaction rated between % Questionnaire Measure the customer satisfaction with the whole project and/or during the project with each
satisfaction 0-100% release, iteration etc., depending of the company
Developer Developer satisfaction rated between % Questionnaire Measure the developer satisfaction with the whole project and/or during the project with each
satisfaction 0-100% release, iteration etc., depending of the company
Table 1: Metrics
41
4. Main results
The following results were obtained within the pilot projects with respect to the project
goals:
o G1: Productivity increased up to 73%. One company decreased its productivity
by applying eXPERT
o G2: Defect rates reduced between 10% and 83%.
o G3.1: Schedule deviation reduced between 7% and 38%.
o G3.2: Cost deviation decreased up to 31%. Only one company increased its cost
deviation.
As a consequence of the
Percentage of companies who achieved the following
achievement of the results results
with respect to G1-G3, the
companies software products 100%
are now at higher quality and 80%
developed in a shorter time 60%
that is their competitiveness %
40%
increased too. The diagram
20%
on the right shows the
0%
percentage of companies, who Increased Reduced Reduced sche- Reduced cost
productivity defect rate dule deviation deviation
achieved the defined
objectives.
The following correlation between the achievement of the business goals and the
application of the XP and PSP practices incorporated in the eXPERT approach was
observed:
o The factors that mostly influenced the productivity of the developers were
the improved discipline, which the eXPERT approach established in the
pilot projects, in particular the improved responsibility with respect to
the team mates, and the effort and defect tracking practices;
the maintenance of the code in working state due to the test-driven
development, the frequent integration and the small releases;
the better task estimations based on the PSP PROBE method and the
more effective time spending impacted by the metrics collection.
The team, which decreased its productivity had been postponing refactoring,
which resulted in re-design of a big part of the system implemented.
o The defect rate was mainly reduced due to the application of the test-before-code
principles and the requirement to integrate the code at least once a day and to
maintain it working.
o The schedule and cost deviations, although not completely removed, were
significantly reduced. Key contribution for this had the PSP practices included
42
in the eXPERT approach, namely the estimation with the PROBE method and
the effort tracking procedure.
All the teams applying the method found different ways to adopt it with benefits. For
the sake of brevity we are going to point out only the most important ones here. Case
studies about all the experiments, lessons learnt and a detailed analysis of the trials can
be found at the project web site, http://www.esi.es/Expert.
With respect to the work with the customer, since none of the companies managed to
have customer-on-site, three alternatives of this XP practice were found:
o Developer-on-site: Sending regularly a developer to the customers office to
present the latest state of the developed software and discuss modifications to
existing as well as new features.
o Web-demo: Develop a web site with restricted access to it providing the
customer possibility to see the current status of the development and provide
feedback about it.
o Excellent communication: the key difference from the traditionally
recommended good communication with the customer is that eXPERT advices
to achieve and apply an agreement with the customer that he/she is reachable
any time for development-related questions and is going to provide useful
feedback.
The software engineering practices have to be adjusted to the customs of the developers
and the organisational culture.
All the teams found pair programming difficult to apply all day long, but especially
useful when resolving key problems in the project. One of the experimenting companies
investigated deeper the relationship between the effectiveness of a pair and the
qualification of the buddies. The results showed that for difficult tasks, e.g. designing
the software architecture, experienced developers have to be paired, while the beginners
have to be paired for simpler tasks.
Test-before-code implies a New, Fixed and Closed Bugs Trend
change in the manner
programmers are used to 140
different approaches to
08 02
22 002
06 02
04 003
18 03
03
20 02
10 02
24 03
21 03
07 03
07 03
21 03
.20
.20
.20
.20
.20
.20
.20
.20
.20
.20
.20
.2
.2
.11
.11
.03
.04
.04
.11
.12
.01
.02
.02
.01
.03
25
One possibility is to begin with implementing test cases for key functionality, e.g. the
business logic of the software, and gradually extend the test cases framework to cover
more software features. An alternative is to implement the test cases before code
43
integration. Although this approach is controversial to the principle to write the tests
before the code, the experience shows that conscious and continuous testing of recently
implemented small pieces of code leads to the same result as testing before coding.
Two ISO-certified organisations took part in the project. It showed up that the
application of eXPERT increased significantly the agility of their processes and
shortened the time-to-market with 30%. Apart from this about 80% of the effort is
devoted to Implementation and less than 10% is dedicated to Project Management (see
the diagram bellow).
90,0
80,0
70,0 PM
60,0
Design
50,0
Implementation
40,0
Bugs Fix
30,0
20,0 Testing
10,0
0,0
02
03
02
02
02
03
03
03
03
02
03
02
.20
.20
.20
.20
.20
.20
.20
.20
.20
.20
.20
.20
.11
.03
.10
.12
.01
.01
.02
.03
.04
.11
.02
.12
22
07
25
06
10
24
07
21
04
08
21
20
All the alternative approaches to implement eXPERT, found during the pilot projects,
are generalised in Guidelines for Applying the eXPERT Approach, which can be also
found at the project web site. Additionally, tools facilitating the method application are
recommended in the document.
5. Conclusion
The eXPERT approach proved to be helpful and effective for small software teams
developing business-critical projects cha racterised with often changing requirements,
exploration and application of new technologies, and need of fast integration of new
staff. It is relatively easy to implement and is well accepted by the developers. After
successful adoption it decreases the deviations from the schedule and the budget, and
improves customers satisfaction with the final product.
Unlike other agile methods, eXPERT offers a set of practices for collection of data,
which support the estimation of the projects with respect to time and effort needed for
their working out. Additionally guidelines for its application and a list of supporting
tools are provided, which make it a very useful and practical package necessary for
every team interested in implementing software faster, better, and cheaper.
References
1. Case studies about the 7 trials of the eXPERT approach: http://www.esi.es/Expert
2. L. Williams, The Collaborative Software Process, PhD dissertation
44
3. Ron Jeffries, Ann Anderson, Chet Hendrickson, The XP Series: Extreme Programming Installed;
Addison Wesley
4. Watts S. Humphrey, A Discipline for Software Engineering; Addison Wesley (1995)
45
46
Formal Agility. How much of each?
Abstract. Agile Processes and Formal Methods (FM), water and oil, impossi-
ble mixture? Yes at first sight. Nevertheless, being formal methods weight pro-
cesses and being agile processes informal approaches to software development,
it is worth to study how much formal can be an agile process like Extreme Pro-
gramming (XP) and how much agile can be a formal method. On our view, some
XP practices are suitable for a formal approach.
1 Motivation
At first sight, XP [1] and FM [10, 8] are water and oil: an impossible mixture. Maybe
the most relevant discrepancy is that while one of the strategic motivation of XP is
spending later and earning sooner FM require spending sooner and earning later.
However, a deeper analysis reveals that FM and XP can benefit their selves.
The use of formal specifications is perceived as improving reliability at the cost of
lower productivity. XP and other agile processes focus on productivity so, in principle,
using FM following XP practices could improve its efficiency. In particular, pair pro-
gramming, daily build, the simplest design or the metaphor are XP practices that in our
view are independent of the concrete development technology used to produce software
and the declarative technology and FM is just a different development technology.
On the other hand, one criticism to XP is that it has been called systematic hack-
ing and, probably, the underlying problem is the lack of a formal or even semi-formal
approach. What XP practices are liable to incorporate a formal approach? We think
that unit testing, incremental development and refactoring are three main XP practices
where FM can be successfully applied:
When you write a formal specification you are saying what your code must do,
when you write a test you are doing the same so one idea is to use formal specifi-
cations as tests.
Incremental development is in some sense similar to the refinement process in FM:
specifications evolve to code maintaining previous functionality.
Finally FM can help to remove redundancy, eliminate unused functionality and
transform obsolete designs into new ones, and this is refactoring.
After all, it might be possible to dilute FM in XP. We would like to point out that
we are not claiming to formalise XP, but just to study how the declarative technology
can be integrated in XP and how XP can take advantages of this technology.
47
2 Formal XP? How?
Most XP practices are technology independent. In our opinion, the XP process could be
adopted by using a formal method tool (an specification language and a verified design
process) instead of an ordinary programming tool. In other words, we propose to write
formal specifications instead of programs. A number of advantages appear:
Instead of the code is the documentation, the specification is the documentation
and business and development would have a high level description through a formal
specification of the intended semantics of the future code.
FM tools (theorem provers, model checkers, etc.) help to maintain the consistency
of the specification and the correctness of the implementation.
Important misunderstandings and errors can be captured in the early stages of the
development but close enough to code generation.
While in XP emphasis is on staying light, quick, and under a low ceremony process,
the introduction of FM might make XP sometimes heavier, sometimes not. Even in the
first case we would have that: i) it can still be considered a light method in the FM area,
and ii) the benefits should compensate in many cases the increase of work.
Writing specifications can be perceived as improductive because programmers have
to do their work anyway. In order to be productive enough a code synthesiser from
specifications is needed. In section 3 we discuss briefly this issue.
The introduction of FM in XP would not impact in all the practices, mainly because
most of them are technology independent. What XP practices would be more affected?
On our view, Testing, Refactoring an Continuous Integration. Other practices seem to
be easily adapted.
48
2.2 Incremental Development
During the Planning Game new customer stories are added in every iteration, these
means, in many cases, that those requirements are added incrementally. Most valuable
stories are then specified and new logical properties must be added to the system and
previous properties must still hold.
The formal meaning of a specification can be understood as a theory, a set of formu-
las. Let us say that the specification of the system after step i is i , a new story appears
at step i + 1 and the specification of the new story is the set of formulas i+1 . The the
specification at step i + 1 is then i+1 . We call the combination property at step i + 1
to the following property:
i+1 |= i , i+1
Informally: if after every iteration a new story is correctly specified the system will
implement correctly all the customer stories.
The most important consequence of paragraphs above is that we have a method
for proving that the specification entails every customer story. Is this method practical
enough? To be honest, the answer is no, it is not, it is a heavy method. But we would
like to point out that the prover technology will help a lot: a great amount of proofs can
be automatically done and the rest can be manually proved by guiding the prover.
2.3 Refactoring
With respect to Refactoring we think that FM can help in two different ways. First,
the system is restructured but the meaning cannot be changed. If the system has been
specified, to prove that the behaviour has not changed is possible. Second, declarative
technology makes easier to find and remove redundancy, eliminate unused functionality
and transform obsolete designs into new ones.
An open possibility is to specify generic patterns and then, whether a specification
is an instantiation of such a generic pattern can be proved. The idea is having a rele-
vant collection of generic patterns trust the prover technology of FM are able to match
specifications with specifications in those patterns. Some works in formalising design
patterns [2] have been done using SLAM-SL [3].
3 What FM?
We would like to finish with a brief discussion about which FM would be more suitable
for XP. From our point of view, the method should be close to the programming stage,
these means that high level languages like Z are not a good choice. A better one is VDM.
The VDM abstract syntax is close to the abstract syntax of a programming language.
49
Since 2001 our group is working in the design and implementation of a specification
language that, modestly, we think that it would be a good option: SLAM-SL [6, 9]. The
most relevant features of SLAM-SL for this work are:
It is an object-oriented specification language valid for the design and programming
stages in the software construction process (a non alien notation).
It has been designed as a trade-off between the expressiveness of its underlying
logic and the possibility of code synthesis. From a SLAM-SL specification the
user can obtain code in a high level programming language (let us say Java), a code
that is readable and, of course, correct with respect to the specification.
Because the code is readable, it can be modified and, we expect, improved by hu-
man programmers.
In [7] SLAM-SL was presented as a useful formal tool for AP. The reader can find
a deeper explanation of features above and its relationship with XP practices seen in
this work. Other, on our view, interesting autors work have todo with the synthesis of
asssertions for debugging from specifications: [4, 5].
4 Conclusions
We have presented how some XP practices can admit the integration of Formal Meth-
ods. In particular, unit testing, refactoring, and, in a more detailed way, incremental
development have been studied from the prism of FM. Probably there is more room for
FM ideas helping agile methodologies and XP, and we will study this as a future work.
One of the goals of the SLAM system is to make FM and their advantages closer
to any kind of software development. Obviously FM are specially needed for critical
applications but combining it with rapid prototyping and agile methodologies could
make them affordable for any software construction. Up to know we have not equipped
SLAM with an automatic interface generator that precludes the use of our system for
heavy graphical interface applications. The automatic generation of graphical interfaces
is another matter of future work.
References
1. K. Beck. Extreme Programming Explained: Embrace Change. Addison-Wesley, Pearson
Education, 2000. ISBN 201-61641-6.
2. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns - Elements of Reusable
Object Oriented Software. Addison-Wesley, 1995.
3. A. Herranz, J. Moreno, and N. Maya. Declarative reflection and its application as a pattern
language. In M. Comini and M. Falaschi, editors, 11th. International Workshop on Func-
tional and Logic Programming (WFLP02), Grado, Italy, June 2002. University of Udine.
4. A. Herranz and J. J. Moreno. Generation of and debugging with logical pre and post condi-
tions. In M. Ducasse, editor, Workshop on Automated and Algorithmic Debugging 2000. TU
Munich, 2000.
5. A. Herranz and J. J. Moreno. On the role of functional-logic languages for the debugging of
imperative programs. In Workshop on Functional and Logic Programming 2000. Universi-
dad Politecnica de Valencia, 2000.
50
6. A. Herranz and J. J. Moreno. On the design of an object-oriented formal notation. In Fourth
Workshop on Rigorous Object Oriented Methods, ROOM 4. Kings College, London, March
2002.
7. A. Herranz and J. Moreno-Navarro. Formal extreme (and extremely formal) programming.
Fourth International Conference on eXtreme Programming and Agile Processes in Software
Engineering (XP03), May 2003.
8. C. B. Jones. Systematic Software Development Using VDM. Prentice Hall, 1986.
9. The SLAM website. http://lml.ls.fi.upm.es/slam.
10. J. B. Wordsworth. Software Development with Z. Addison-Wesley, 1992.
51
Diseo de una Metodologa gil de
Desarrollo de Software.
- 2004 -
Diseo de una Metodologa gil de Desarrollo de Software 1 Cuatrimestre 2004 FIUBA
Fecha de Examen:
Autor
Tutor
Abstract
Tabla de Contenidos
Prefacio
Esta Tesis de Grado fue realizada durante el perodo que va desde Agosto de
2001 hasta Abril de 2004.
La eleccin del tema surgi a partir de la investigacin del autor en relacin a los
Modelos de Proceso de Desarrollo observados en diversas materias de la carrera. A
medida que comenzaba la exploracin lleg a su conocimiento la metodologa eXtreme
Programming (XP) desarrollada por Kent Beck a las cuales se incorporaron muchas
cuales que conformaran el universo de metodologas giles. Dado el nfasis de las
mismas en cuestiones de Peopleware, Dinmica de Equipos, Psicologa Social, Calidad
del Proceso, el tema fue elegido como base para la construccin de una metodologa que
analizara estos aspectos, basndose en las mejores practicas de la industria e
incorporando aspectos interdisciplinarios tomados de la Psicologa, Sociologa,
Relaciones de Trabajo y Administracin. La idea de la misma era que pudiera ser
utilizada dentro de la realidad de la informtica en nuestro pas. As nace la presente
tesis que describe en detalle AgEnD, la metodologa gil que es motivo del presente
trabajo.
Organizacin de la Tesis
La Tesis est organizada de la siguiente forma.
Agradecimientos
Quisiera agradecer a las siguientes personas que han contribuido de una u otra
forma durante la elaboracin de la Tesis. Mis agradecimientos son para: Anbal Calligo,
Germn Boccoleri, Alejandro Oliveros, Elvio Nabot, Enrique Vetere, ngel Prez
Puletti, Adriana Yecha, Pablo Sametband, Adrin Lasso, Pablo Cosso. A mi Tutor,
Sergio Villagra.
Captulo I - Introduccin
Como en todas las dems ingenieras que han tenido un mayor tiempo de
maduracin surge la necesidad de la estandarizacin. Es decir, abandonar la aplicacin
de tcnicas y buenas prcticas en forma ad hoc a favor de un proceso disciplinado, que
est definido por normas, que resulte predecible y provea una adecuada visibilidad para
los stakeholders. Estas ideas son las que impulsan el desarrollo de esta tesis.
del software (subsanando muchas de las falencias del modelo en cascada) mitigando los
riesgos en forma temprana. Los procesos iterativos de los cuales se desprenderan
diversas instancias, como son el modelo iterativo e incremental, el modelo en espiral, el
modelo basado en prototipo, el modelo SLCD, el MBASE, el RUP, etc.
Del modelo en espiral desarrollado por [Boehm, 1988] surgi una de las ideas
fundamentales que las metodologas posteriores adoptaran: el temprano anlisis de
riesgos. Como muestra la Figura 001 este modelo de carcter iterativo en sus primeras
fases, plantea la necesidad de realizar al principio diversas iteraciones dirigidas a
mitigar los riesgos ms crticos relevados en el proyecto mediante la realizacin de
prototipos o simulaciones de tipo desechables tendientes a probar algn concepto. Una
vez que esos prototipos son validados se suceden iteraciones del tipo: determinar
objetivos, evaluar, desarrollar, planear. Mediante estas iteraciones se procuraba el
feedback del que se hablaba anteriormente, en forma temprana. Una vez que se tena el
diseo detallado y validado por el cliente, se implementaba el software siguiendo las
etapas de un modelo en cascada. Esta es una falla importante del modelo ya que no se
acomoda a la posibilidad de cambios una vez que se inicia la construccin. Todas las
crticas que se le hacan al modelo en cascada se aplican a estas fases del modelo en
espiral.
Figura 001. Descripcin de las iteraciones del Modelo en Espiral. Tomada de [Calligo, 2003]
Fue el mismo Barry Boehm, autor de este modelo, quien en su artculo [Boehm,
1995] describe tres hitos crticos a ser utilizados en cualquier proyecto de forma de
poder planificar y controlar el progreso del mismo, dando visibilidad a los stakeholders.
Estos hitos estn relacionados con las etapas de avance que se van dando a lo largo de
un proyecto de acuerdo al pasaje que ocurre de las actividades de ingeniera (que
componen los espirales del modelo en espiral) a las actividades de produccin (que
componen la construccin en cascada del software). Su impacto en la industria del
software ha sido tan importante que uno de los procesos mas utilizados en la actualidad,
el [RUP, 2002], los incorpora. Estos hitos son:
El primer hito finaliza con la definicin del alcance del software a construir, la
identificacin de los stakeholders, y el delineamiento del plan de desarrollo del sistema.
El mismo ocurre al final de la fase de Concepcin segn el RUP.
El ltimo de los hitos corresponde a la entrega del primer release del software,
que incorpora la funcionalidad definida en la correspondiente iteracin. Tambin se
espera el tener material de entrenamiento, como un Manual del Usuario y Manual de
Operaciones. Este hito se corresponde con el hito final de la fase de Construccin segn
el RUP.
Lo que result interesante de estos hitos propuestos por Boehm es que los
mismos son independientes del proceso de desarrollo elegido. Permiten una
estandarizacin de entregas a ser realizadas en un proyecto, la cual tiene ventajas para
ambas partes comprometidas. Para los clientes, los hitos otorgan visibilidad sobre el
proyecto pudiendo medir el progreso con artefactos que les son de utilidad. Para el
equipo de desarrollo, los hitos proveen una gua de las fases del proyecto orientada a los
entregables necesarios para cada hito as como la posibilidad de recibir feedback de los
clientes/usuarios sobre los productos que son entregados en el tiempo.
Como fue mencionado en los ltimos prrafos, uno de los procesos con ms
influencia en la comunidad del software ha sido el RUP. El mismo, derivado y refinado
por Rational a partir de la absorcin del Objectory de Jacobson tiene diferencias
radicales en comparacin con los procesos que lo han precedido. El RUP es uno de los
primeros procesos que es vendido como un producto1 y que es altamente customizable a
las circunstancias en que es adoptado. La idea de los creadores del RUP es que el
mismo fuera un repositorio de todas las ideas vigentes y las denominadas Best Practices
de la Ingeniera de Software. Dada la complejidad del mismo se presenta mediante los
Durante 1996 Beck es llamado por Chrysler como asesor del proyecto Chrysler
Comprehensive Compensation (C3) payroll system. Dada la pobre calidad del sistema
1
De hecho, Rational que fue adquirida por IBM en el ao 2003 vende el RUP junto con templates y documentacin anexa para uso
comercial a empresas.
que se estaba desarrollando, Beck decide tirar todo el cdigo y empezar de cero
utilizando las prcticas que l haba ido definiendo a lo largo del tiempo. El sistema, que
administra la liquidacin de aproximadamente 10.000 empleados, y consiste de 2.000
clases y 30.000 mtodos, es puesto en operacin en Mayo de 1997 casi respetando el
calendario propuesto [C3, 1998] [Williams, 2000]. Como consecuencia del xito de
dicho proyecto, Kent Beck dio origen a XP iniciando el movimiento de metodologas
giles al que se anexaran otras metodologas surgidas mucho antes que el propio Beck
fuera convocado por Chrysler.
XP Extreme Programming
Figura 002. Disposicin fsica de las oficinas bajo la distribucin cavernas y comn. Tomada de [Cockburn, 2001a]
en una gran velocidad en el desarrollo. Sin embargo, una desventaja que deviene de esta
falta de documentacin es la incapacidad de persistir la arquitectura y dems cuestiones
de anlisis, diseo e implementacin, an despus de que el proyecto haya concluido.
Scrum
Figura 003. Descripcin de roles, artefactos, reuniones y proceso de desarrollo de Scrum. Cortesa de William C. Wake,
William.Wake@acm.org, www.xp123.com
Crystal Clear
y de forma muy liviana en relacin a los entregables [Cockburn, 2001b]. Crystal maneja
iteraciones cortas con feedback frecuente por parte de los usuarios/clientes,
minimizando de esta forma la necesidad de productos intermedios. Otra de las
cuestiones planteadas es la necesidad de disponer de un usuario real aunque sea de
forma part time para realizar validaciones sobre la Interfase del Usuario y para
participar en la definicin de los requerimientos funcionales y no funcionales del
software.
DSDM define cinco fases en la construccin de un sistema ver Figura 004. Las
mismas son: estudio de factibilidad, estudio del negocio, iteracin del modelo funcional,
iteracin del diseo y construccin, implantacin. El estudio de factibilidad es una
pequea fase que propone DSDM para determinar si la metodologa se ajusta al
proyecto en cuestin. Durante el estudio del negocio se involucra al cliente de forma
temprana, para tratar de entender la operatoria que el sistema deber automatizar. Este
estudio sienta las bases para iniciar el desarrollo, definiendo las features de alto nivel
que deber contener el software. Posteriormente, se inician las iteraciones durante las
cuales: se bajar a detalle los features identificados anteriormente, se realizar el diseo
de los mismos, se construirn los componentes de software, y se implantar el sistema
en produccin previa aceptacin del cliente.
Figura 004. Fases del proceso de desarrollo DSDM. Tomada de [Highsmith, 2002].
Descontando la primera fase que es realizada una nica vez al principio del
proyecto para analizar la factibilidad desde el punto de vista del negocio del desarrollo,
las dems fases presentan las caractersticas del modelo iterativo e incremental ya
tratado. Sin embargo, lo que diferencia a DSDM de dicho modelo son los principios
alrededor de los cuales se estructura y que hacen nfasis en los equipos de desarrollo, en
el feedback con el cliente, en las entregas frecuentes de productos.
Las mismas refieren a las caractersticas que se deben cumplir en los proyectos
para poder utilizar el enfoque RAD de construccin. Se observa que aquellos proyectos
que califiquen afirmativamente de acuerdo a dichas preguntas tendrn las siguientes
caractersticas que refieren a la aplicabilidad de DSDM:
Acotados en el tiempo
De esta forma observamos que DSDM deja las bases sentadas para el anlisis
sobre su aplicabilidad a un espectro bien definido de proyectos de software. Sin
embargo, la metodologa no tiene ninguna prescripcin respecto a las tcnicas a ser
usadas en el proyecto, ni siquiera impone el desarrollo bajo un paradigma especfico
funciona tanto para el modelo de orientacin a objetos como para el modelo
estructurado. Algo que s sugiere el mtodo es la generacin de un conjunto mnimo de
modelos necesarios para la sana progresin de la entrega del software y facilidad en el
mantenimiento. Estos modelos esenciales debern ser definidos antes que comience el
desarrollo, y debern ser revisados en las sucesivas iteraciones para validad su
contenido.
Algunas tcnicas sugeridas en DSDM son las sesiones JAD para capturar los
requerimientos del software y la realizacin de prototipos para descifrar aquellas
ambigedades que se presentan en el relevamiento y tambin para derribar las barreras
comunicacionales entre analistas y usuarios. El enfoque propuesto consiste en la
utilizacin de un prototipo evolutivo, el cual se va refinando hasta tenerse la aplicacin
deseada. El nfasis queda en manifiesto en los prototipos que se sugieren para cada
etapa: negocio, usabilidad, performance y capacidad, y diseo.
Ejemplos:
El ciclo de vida propuesto por FDD se puede observar en la Figura 005 y est
compuesto por cinco procesos, dos de las cuales se realizan tantas veces como
iteraciones se planifiquen en el desarrollo.
Figura 005. Los cinco procesos dentro de FDD. Tomada de [Coad, 2000].
La tercera actividad, Planificar por Feature, toma como input la lista priorizada
de la fase anterior y establece los tiempos las futuras iteraciones. En esta actividad
participan el lder de proyecto, el lder de desarrollo y el programador jefe. A medida
que se realiza la planificacin se delinean los hitos de finalizacin de las iteraciones,
dejando asentado cuales son los features y features sets que estarn construidos en
dichos hitos. Parte de tambin incluye la delegacin de responsabilidades a los
programadores jefe que sern dueos de los features, estos a su vez asignarn las clases
a dueos de clases seleccionados del equipo.
Las ltimas dos actividades, Disear por Feature y Construir por Feature, estn
relacionadas con la parte productiva del proceso en que se construye la aplicacin de
manera incremental. Empezando por el diseo que toma los features correspondientes a
Figura 006. Reportando el progreso al management y al cliente en FDD. Tomada de [Coad, 2000].
Sin embargo, no es ms que una especulacin ya que el carcter adaptativo del proceso
permite pequeas desviaciones en un sentido por lo que Highsmith sugiere que cada
ciclo se componga de un mix entre funcionalidades crticas, tiles, y opcionales,
previendo los posibles retrasos que puedan existir mediante el movimiento de las
funcionalidades de menor prioridad a futuros ciclos y grandes desviaciones en otro,
las cuales son utilizadas para la exploracin del dominio y de la aplicacin, que puede
llevar a cambiar el rumbo del proyecto estos desvos est representado por las flechas
de divergencia en la Figura 007.
es una propiedad de los sistemas adaptativos complejos que crea alguna propiedad ms
grande del todo (comportamiento del sistema) a partir de la interaccin entre las partes
(comportamiento auto-organizativo de los agentes). Gracias a esta propiedad los grupos
de desarrollo logran sacar lo mejor de si en la el borde del caos.
Para evaluar la calidad desde el punto de vista del cliente se sugieren utilizar
grupos de enfoque en el cliente, mediante los cuales se explora un modelo de la
aplicacin y se anotan los requerimientos de cambio del cliente.
El tercer proceso de feedback est relacionado con la interaccin entre las partes,
la dinmica de grupo, y las tcnicas empleadas. Para medir la performance y el grado de
cohesin del mismo, se podrn realizar al final de cada ciclo pequeas reuniones de
postmortem. En las mismas se discuten los aspectos del proceso que contribuyen al
desarrollo y aquellos que deben ser descartados por su influencia negativa.
En la Figura 008 se puede ver el detalle interno de cada fase como ya fue
explicado, mostrndose con una flecha que trasciende las tres fases en sentido inverso,
el bucle de aprendizaje. Este bucle es algo crtico para ASD ya que denota un cambio en
el esquema tradicional de la vista de un sistema en que se tena un bucle de control para
detectar diferencias y corregirlas. Es decir, en las metodologas tradicionales las
diferencias respecto a lo planificado eran vistas como errores que deban ser
enmendados para que cumplieran lo pautado. ASD y las metodologas giles plantean la
necesidad de que el feedback necesario sea para aprender, nos da la posibilidad de
entender ms respecto al dominio y construir la aplicacin que mejor satisfaga las
necesidades del cliente. Highsmith lo expone claramente en la siguiente frase:
En ambientes complejos, el seguir un plan al pie de la letra
produce el producto que pretendamos, pero no el producto que
necesitamos.
Figura 008. Actividades del ciclo de vida adaptativo. Tomada de [Highsmith, 2000].
XBreed ofrece una de las primeras fusiones exitosas entre metodologas giles.
Tomando las fuerzas en el management de Scrum y unindolas con las prcticas de XP
nace una de las ms modernas metodologas alrededor del 2000. Mike Beedle es la
mente detrs de XBreed y su objetivo es tomar las mejores prcticas del universo gil y
unificar estas en un marco de trabajo que permita el desarrollo concurrente de mltiples
proyectos usando metodologas giles.
Analizando los factores mencionados en detalle vemos que los mismos forman
parte esencial de las metodologas descriptas. En los mismos se plasman aquellas
razones que impulsaron a Beck, Highsmith, y otros, a construir metodologas giles. El
nfasis sobre las personas esta emblematizado en la primer oracin respecto a los
valores de las metodologas. El nfasis en el cdigo por sobre los documentos es una
propuesta eficaz para lograr el rpido feedback requerido por la agilidad. La
participacin del cliente es fundamental para el xito de los proyectos ya que ellos
definen la funcionalidad a construir y guan el desarrollo de las pruebas funcionales. La
importancia de responder al cambio indica que el desarrollo de software no es ms que
un proceso de aprendizaje en que cada cambio nos permite conocer ms en detalle el
dominio de la aplicacin.
El autor entiende que para que se pueda definir a AgEnD como una metodologa
gil, la misma deber estar completamente circunscripta a los valores detallados en el
Manifiesto. Es por esto que se harn continuas referencias al mismo para comentar la
conformidad del proceso a los principios y valores.
Presentacin de AgEnD
Es decir, si una empresa est interesada en que cada proyecto sea como una
aventura, en que se desconozca el resultado y existan una gran cantidad de riesgos, no
necesitar proceso alguno. Simplemente dejar en manos de los profesionales de
sistemas el desarrollo de proyectos mediante las tcnicas que utilice cada individuo en
su trabajo. La aleatoriedad de cada proyecto ser una caracterstica inherente. Se
realizarn planificaciones a muy corto plazo, ya que no existe visibilidad para las
personas externas al equipo de desarrollo. En conclusin, estamos hablando de todas las
organizaciones que se encuentran en el nivel 1 del CMM, el denominado nivel Inicial.
Indudablemente, cualquier organizacin que se precie de ser tal jams elegira este
enfoque como primera instancia ya que uno de los objetivos de la misma sera
maximizar ganancias a largo plazo y para esto debera mantener procesos que aseguren
el xito en todos los sectores en que est compuesta. Sin embargo, como veremos ms
adelante la mayora de las empresas termina eligiendo esta opcin sin ser plenamente
conciente de la eleccin y de los resultados que esta acarrea.
RUP
Completo Codificar
RUP y Probar
Modelo en Agilizado
Cascada
RAD
Modelo por
Prototipos
estas, las personas son de primera magnitud y se prefiere sacrificar el proceso en pos de
darles libertad a las personas. Sin embargo, esto no significa que se termina en un
proceso de Codificar y Probar, liderado por programadores rebeldes que se pasan el da
generando cdigo. Es por esto que el punto en que se ubican las mismas est bastante
alejado del Caos en que la aleatoriedad es la norma. Otra cuestin que diferencia estos
procesos de los anteriores es el cambio existente entre un proceso emprico y un proceso
determinista o definido. Como mencionbamos antes, los procesos ms burocrticos
tienden a tener definidos todos los aspectos del desarrollo. Esto se contradice con la
naturaleza compleja del software, para lo cual se adaptara con mayor eficiencia un
proceso emprico. Por esto nos referimos a un proceso en que se desconocen muchos
aspectos, se reconocen a las personas como componentes de primer orden totalmente
impredecibles, y simplemente se intenta guiar el desarrollo hacia un objetivo que puede
no permanecer constante en el tiempo a medida que aumenta el conocimiento de la
aplicacin a ser construida. En los procesos empricos se conocen las buenas prcticas
probadas con la experiencia, y los resultados u outputs que surgen generalmente de
tomar ciertos inputs o de realizar ciertas actividades. Estos modelos surgen de la
observacin y la experiencia obtenida a lo largo de los aos, sin basarse en leyes de la
naturaleza o principios tericos fundamentados. Es por esto que se los asocia a un
enfoque pragmtico para desarrollar software.
Siguiendo por la recta nos encontramos con el enfoque RAD propuesto por
[Martin, 1991] en el que se tena un lenguaje de alto nivel lo suficientemente poderoso
como para permitir generar cdigo de forma rpida, un pequeo equipo trabajando en
conjunto con buenos canales de comunicacin, y un plan de entregas de funcionalidad
en forma iterativa. El mismo no posea pautas claras en relacin a la calidad del
producto, la satisfaccin de los requerimientos de los usuarios, la clara definicin de la
arquitectura del sistema. Por estas causas termin siendo asociado con la generacin
rpida de aplicaciones con bajos niveles de calidad, y que resultaban en pesadillas de
mantenimiento. Sin embargo, debemos reconocer el aporte que hicieron a la ingeniera
de software ya que gracias a estas resurgieron las herramientas CASE y comenz el uso
masivo de lenguajes de alto nivel, sirviendo como base para el posterior advenimiento
de las metodologas giles.
Corolarios
Del anterior anlisis deberemos tener en cuenta ciertos aspectos inherentes a los
proyectos de desarrollo, que incidirn en forma directa en el grado de predictibilidad de
la metodologa. Es decir, que dadas ciertas variables deberemos movernos en uno u otro
sentido por la recta de la Figura 009.
Figura 010. Relacin entre cantidad de personas, criticidad, y tamao de la metodologa. Tomada de [Cockburn, 2001a].
Experiencia en aplicaciones
Factores comunicacionales
Experiencia en la plataforma
El nfasis de todas las metodologas giles esta centrado en los individuos y sus
interacciones, a diferencia de las metodologas tradicionales en que impera el proceso y
las herramientas como propulsores de la calidad. AgEnD no es ninguna excepcin a
estos principios y propone destacar en cada una de sus prcticas que las personas son las
que indudablemente decidirn sobre la mejor forma de trabajo para ellas. Tambin de
las personas depender la adopcin de AgEnD o cualquier proceso de desarrollo gil. Es
por esto, que ms adelante se define un rol en particular, el Coordinador, que se encarga
de mantener las prcticas de AgEnD en armona, durante las primeras iteraciones en que
se utiliza el proceso.
Consideraciones Humanas
El hecho que AgEnD base sus principios en las personas no significa que se han
resuelto todos los problemas del desarrollo y que teniendo un buen equipo el xito est
garantizado. Todo lo contrario, el nfasis propuesto requiere tomar ciertas
consideraciones en relacin a la naturaleza de las personas que no son necesarias en las
metodologas tradicionales. Partimos de la base formulada por [Cockburn, 1999] que las
personas son organismos vivientes impredecibles, inconsistentes pero con buena
voluntad y un sentido de hacer las cosas bien. De esto concluimos que la Figura 010
extrada del [RUP, 2002]2 establece ciertas suposiciones que han sido esenciales en las
prcticas tradicionales de management basadas en la ideologa de Command and
Control.
Figura 011. Descripcin de un workflow dentro del RUP. Tomada de [RUP, 2002].
2
La seleccin de la figura del RUP y el comentario posterior no intenta realizar ninguna referencia a la naturaleza de dicho
framework.
Realizando una analoga con el testing, se podra considerar que AgEnD aplica
lo que denominaremos desarrollo de caja negra mientras que las metodologas
tradicionales utilizan el desarrollo de caja blanca. El primero refiere a la nocin de
tomar ciertas entradas y verificar las correspondientes salidas. El segundo refiere a
tomar ciertas entradas, analizar el proceso interno y verificar las correspondientes
salidas. Las metodologas tradicionales al considerar a las personas como partes
reemplazables de un desarrollo, definen en detalle entradas, salidas y tareas necesarias
para llevar a cabo la correspondiente transformacin. Consecuentemente, estas
metodologas proponen que basta con tener una clara definicin de las tareas en un
proyecto para garantizar el xito del mismo. Un WBS nos provee la seguridad necesaria
para avanzar en las sucesivas etapas, en el cual describiremos que tareas son necesarias,
que necesita cada una para comenzar, y con que artefactos finalizan. Considerando a las
personas como componentes predecibles y reemplazables, engranajes de una
maquinaria, el desarrollo de caja blanca se convierte en la forma ms adecuada de
llevar un proyecto al xito en organizaciones orientadas al proceso. Ejemplos de esto se
observan en los proyectos de software encarados por el departamento de defensa y
aquellas grandes organizaciones en las que se tienen niveles de madurez certificados por
el CMM.
Una de las razones principales por la que las metodologas giles son Orientadas
a los Productos es el principio de Mxima Comunicacin descrito en ms detalle en
las Caractersticas de AgEnD. Dada la necesidad de tener un feedback continuo por
parte del cliente, el nfasis de cualquier iteracin esta puesto en los artefactos que esta
genera. Las actividades necesarias para la transformacin de entradas en salidas queda a
discrecin del equipo de desarrollo pudiendo utilizar las tcnicas provistas por AgEnD
que proporcionan agilidad al proceso. Para lograr que el desarrollo de caja negra tenga
xito deberemos tener un equipo integrado, balanceado y altamente motivado. De estos
tres factores, es la motivacin la que nos permitir lograr mejores resultados en la
adopcin de un proceso gil. Es la motivacin la que logra sacar lo mejor de un equipo
de desarrollo; la que nos permite saber que las personas involucradas utilizarn las
tcnicas que les sean ms efectivas para llegar al final de la iteracin con los artefactos
ms crticos construidos de acuerdo a las estimaciones. La motivacin es por lejos la
mayor contribuyente a la productividad [Boehm, 1981].
Desarrollo Iterativo
Dado el avance de la tecnologa, los tiempos en que se manejan los negocios han
ido reducindose abismalmente. Lo que una dcada atrs demoraba una semana de
procesamiento computacional, hoy se resuelve en cuestin de minutos. Los tiempos de
procesamiento han ido disminuyendo, mientras que los sistemas han ido creciendo en
complejidad teniendo cada vez necesidades mayores de distributibilidad, seguridad,
mantenibilidad, flexibilidad, etc.
Sin embargo esto mismo no aplica al dominio del software el cual tiene
correlatos ms fuertes con el desarrollo de nuevos productos. En la dcada del 70 ya se
proponan enfoques que mitigaban los problemas de intentar encajar el desarrollo de
software bajo un esquema de lnea de produccin. Los problemas con la integracin
realizada al final del proyecto fueron solventados mediante el desarrollo iterativo.
Mientras que la curva de costos del software demostraba que a medida que se
avanzaba en el desarrollo iban aumentando los costos de cambiar e incluir nuevas
funcionalidades en forma exponencial, fue solventado mediante el nfasis de las
metodologas del momento en la ingeniera de requerimientos, el anlisis funcional y el
diseo de componentes.
Caractersticas de la Metodologa
Para dar una primera aproximacin a AgEnD nos basaremos en la propuesta de
Alistair Cockburn [Cockburn, 1998] que desglosa una metodologa en 10 elementos,
como mnimo, enumerados a continuacin:
2. Destrezas las destrezas que presupone poseen los recursos que llevan a cabo el
proyecto. Por ejemplo: social, proactivo, hbil en el manejo de herramientas,
7. Asignacin de Tareas cmo son asignadas las tareas a los mltiples roles.
8. Tcnicas las tcnicas que se espera que las personas utilicen en su trabajo
diario. Por ejemplo: sesiones JAD, programacin en Java, modelado de
componentes.
9. Herramientas las herramientas que las personas usan a diario, ya sea dentro
de una tcnica o para producir un entregable de acuerdo al estndar.
Roles definidos
Una de las razones principales de la adopcin de una metodologa para
desarrollo consiste en la definicin de las tareas que sern llevadas a cabo por los
individuos que participan del proyecto. Los roles definen ese conjunto cohesivo de
actividades realizadas y artefactos mantenidos que son llevados a cabo por personas o
por grupos de personas. No slo se refieren a personas internas al desarrollo del
software, sino que tambin involucran a los usuarios u otras personas que se vean
afectadas por el proyecto, cualquiera de los denominados stakeholders.
Los roles recin mencionados no son roles exclusivos asociados a una nica
persona, aunque en algunos casos pueden serlo (Patrocinante). Algunos roles podrn ser
abarcados por ms de una persona (Desarrollador). Asimismo, una persona podr cubrir
ms de un rol (Arquitecto/Escritor Tcnico).
Las asignaciones sern llevadas a cabo por el Lder, el cual en base a las
aptitudes de los recursos que dispone repartir las tareas a ser realizadas en cada
iteracin.
Experto en
Patrocinante
el Dominio
Lder de
Proyecto
Equipo de
Desarrollo
Administrador
del
Conocimiento
Figura 012. Flujos de comunicacin durante el proyecto entre los roles propuestos.
Coordinador (Mentor)
Importancia del rol: en las metodologas giles este rol permite reforzar
la adherencia al proceso en aquellos momentos en que se el tiempo
apremia y se suele caer en el modelo Codificar y Probar.
Arquitecto (Architect):
Tester:
Aptitudes Requeridas
Uno de los principios esenciales que mencionamos al principio de esta tesis, era
el de Mxima Comunicacin. Este principio estableca la necesidad de un continuo
aprendizaje del equipo de trabajo, que deba ser transmitido en forma rpida a todos los
involucrados.
Ahora bien, algo que estaba implcito en la enunciacin del principio era el
hecho de disponer de recursos dispuestos y capacitados para aprender. No alcanza con
sentar a todas las personas en una misma habitacin para lograr la fluida comunicacin
3
Como se observa por estudios diversos de Gartner, Forrester, entre otros. Las dos plataformas que eventualmente comprendern el
mayor porcentaje de los futuros desarrollos, Java y .NET, estn construidos sobre lenguajes orientados a objetos los cuales basan su
tpica de los procesos giles. Tambin es necesario que esas personas estn dispuestas a
sacrificar su individualidad en pos de un grupo cohesivo de desarrollo. De esta forma,
se logra un entendimiento que abarca extensamente el alto grado de complejidad
inherente al software.
Patrocinante
Experto en el Negocio
El Experto en el Negocio debe ser una persona con amplio conocimiento del
dominio de la aplicacin que pueda concebir una visin lo suficientemente amplia del
producto a ser entregado para poder guiar el proceso de desarrollo. No ser necesario
que el experto en el dominio sepa en detalle toda posible operatoria del sistema; sin
embargo, deber contar con el suficiente conocimiento para poder resolver cualquier
duda o dificultad que tengan los miembros del equipo de desarrollo respecto a los
requerimientos. Tambin deber contar con la autoridad requerida para definir
prioridades respecto a los casos de uso a ser implementados en cada iteracin, pudiendo
agregar funcionalidad que no estaba contemplada o descartando funcionalidad que
perdi valor para el negocio.
Lder
Si bien estas caractersticas deben ser comprendidas por toda persona que
participe en el proceso, es esencial que sean asimiladas por el Lder ya que ste deber
encauzar nuevamente al equipo para que no ceda al caos total en el desarrollo.
Coordinador
Analista
proyecto4. En respuesta a esto AgEnD mantiene con firmeza un principio que consiste
en uno de los pilares de las metodologas giles, el de Mxima Comunicacin.
Arquitecto
4
Cabe mencionar que si esta condicin no se da, implicar un alto riesgo para el proyecto ya que la persona encargada de
especificar lo que el sistema debe realizar no conoce los procesos del negocio. Una forma de mitigar este riesgo es mediante la
realizacin de una disciplina de Modelado del Negocio [RUP, 2002].
Programador
Tester
Si bien una parte del testing de AgEnD ser realizada por los Programadores en
forma de pruebas unitarias sobre el cdigo construido, la porcin de testing ms
relevante para las partes involucradas se refiere a las pruebas funcionales. Y estas
debern ser construidas por el Tester que deber tener una estrecha comunicacin con el
Cliente ya que ser ste quien defina el contenido de las mismas.
Entre otras cosas el Tester deber contar con el suficiente conocimiento tcnico
como para poder entender la arquitectura del sistema, de forma de generar el cdigo
fuente de las pruebas funcionales necesarias para el sistema. Tomando como base los
casos de uso generados por los Analistas su funcin ser la de transformarlos en casos
de prueba. Estos casos de prueba estarn compuestos por dos componentes principales:
cdigo fuente y documentacin. Para el primer enfoque se llevarn a cabo programas
que verificarn la correcta realizacin de los casos de uso va la interaccin de las clases
que lo realizan. El segundo enfoque refiere a documentar procedimientos de prueba, que
consisten en instrucciones tcnicas necesarias para probar un componente.
Tcnicas
Las tcnicas propuestas por AgEnD son tcnicas que han sido adoptadas por la
industria para atacar la complejidad de las distintas fases del desarrollo. Las mismas
sern mencionadas brevemente; en caso que el lector desee profundizar en alguna podr
hacerlo a travs de la bibliografa propuesta al final de la tesis.
Dadas las caractersticas de los proyectos giles, definiremos las tcnicas que
ms se ajustan a esta filosofa y que colaboran al desarrollo de las tareas que son
encaradas en cada iteracin. Debido a esto, no se mencionarn en este resumen tcnicas
que si bien han sido probadas durante los aos son de dudosa trazabilidad en relacin a
las dems fases, o bien generan un overhead demasiado costoso para proyectos de estas
magnitudes.
Fases e Hitos
Kick-off
Concepcin
Elaboracin
Objetivos
Arquitectura
Iteracin
Transicin
Release
Una vez que pasamos a las etapas de produccin tenemos dos fases
concatenadas que se realizan en forma repetitiva por cada release de la aplicacin. Estas
fases son Construccin y Transicin. Durante la Construccin se terminan de
especificar los casos de uso correspondientes a la iteracin, se disean los mismos bajo
Kick-off
Factibilidad
Requerimientos
Anlisis
Iteracin
Despliegue
Factibilidad
Aceptacin
del Cliente
Ejecucin
Planificacin
de Iteraciones
Requerimientos-Anlisis
Espectro Espectro No
Funcional Funcional
Captura de Requerimientos
Requerimientos No Funcionales
Restricciones
Modelado de
Casos de Uso
Reglas del
Negocio
Diagramas de Documento de
Anlisis/Diseo Requerimientos
Suplementarios
Diseo
Espectro Espectro No
Funcional Funcional
Definicin de la
Arquitectura
Dentro de AgEnD, el Diseo es realizado tomando como input los casos de uso
escritos en la disciplina anterior y detallando los mismos en un esquema de clases,
atributos y mtodos del lenguaje elegido. Los miembros del equipo adaptan su modelo
mental para cerrar la brecha que existe del dominio del problema, el qu, al dominio de
la solucin, el cmo. Este proceso es plasmado mediante la generacin de Diagramas de
Secuencia para aquellas interacciones significativas desde un punto de vista tcnico las
cuales podrn ser anexadas al Documento de Arquitectura. El nivel de ceremonia estar
acorde a la criticidad del sistema que se desarrolla. En casos minimalistas y donde se
desee tener un mnimo overhead metodolgico el diseo podr ser realizado en papel o
Una vez finalizado el proceso de diseo detallado de las clases a ser construidas
durante la iteracin, se procede a la siguiente disciplina que es la de Implementacin-
Testing.
Implementacin - Testing
Control), la metodologa define diversas pruebas que podrn ser realizadas en las
iteraciones. Las mismas incluyen:
Pruebas Unitarias:
Alcance: las mismas son utilizadas para controlar la calidad del cdigo
construido y son ideales para testing de integracin y de regresin.
Pruebas Funcionales:
Pruebas de Aceptacin:
Alcance: las mismas son realizadas durante las Iteraciones con Release
en las que se lleva a cabo la transicin de la aplicacin al ambiente de
produccin en el Cliente.
Despliegue
Reuniones de
Entrega de
Versin
Figura 018. Esquema cronolgico de reuniones de entrega de una versin del sistema.
Disciplinas de Soporte
Las disciplinas de soporte ocurren a lo largo de todo el ciclo de vida del proyecto
y dan soporte a las actividades relacionadas con la construccin del software. Las
mismas son tan importantes como las disciplinas ya mencionadas pero la diferencia es
que sirven propsitos organizacionales no directamente relacionados con la produccin
de sistemas. Entre estas nuevas disciplinas mencionaremos cuatro como muestra la
Figura 019.
Administracin de Proyectos
Administracin de la Configuracin
Administracin de Personas
Administracin de Proyecto
AgEnD recomienda que se establezca una planificacin inicial del proyecto que
permita tener objetivos claros respecto a los grandes hitos para obtener feedback del
cliente respecto al avance realizado. Se armar un plan de proyecto con las fases y las
iteraciones durante las que se ir construyendo el sistema. Dadas las caractersticas de
este proceso gil, no se debera realizar un plan ultra detallado con un WBS que
presente todas las tareas a realizarse. Simplemente, se fraccionar la funcionalidad
relevada hasta el momento en iteraciones en las cuales se irn liberando versiones al
cliente para obtener el tan valioso feedback (ver en esta tesis la seccin de Estimaciones
giles y la de Orientado a los Productos vs. Orientado a las Tareas).
Administracin de la Configuracin
Los desarrolladores pueden volver a una versin anterior del sistema para
hacer pruebas contra esta.
Dentro del marco gil de AgEnD la prctica utilizada dentro de esta disciplina
deriva de una prctica propuesta por XP denominada Collective Code Ownership. Est
prctica recomienda que no existan dueos de los tems de configuracin subidos al
repositorio sino que cada persona podr interactuar con cualquier tem, pudiendo
modificarlo y subir una nueva versin. En cierto sentido el equipo de desarrollo es
responsable por todo el sistema por lo tanto todos los miembros de este son dueos de
todos los tems. Esto es posible gracias a la fluida comunicacin existente entre las
personas que fomenta AgEnD y al grado de responsabilidad que tienen las personas.
Ser clave en esta disciplina la figura del Coordinador quien empezar con un
anlisis del proyecto, tomando la planificacin original, la funcionalidad, el equipo de
trabajo, el perfil del cliente, y con todo esto definir como se emplear AgEnD en dicho
proyecto. El Coordinador deber tener un amplio conocimiento del espectro
metodolgico existente para poder extraer aquellos elementos de AgEnD que considere
que no apliquen y para poder agregar elementos que no estn contemplados y que
formen parte de otros procesos. En este sentido se puede recomendar una profunda
capacitacin en el RUP que muchas veces cumple la funcin de un metaproceso
sirviendo como base de conocimiento para los ingenieros de software. Tambin
conviene estar informado sobre las novedades de la Alianza gil
(http://www.agilealliance.com) que est compuesta por los principales creadores de
metodologas giles mencionadas en la introduccin de esta tesis.
5
El Proceso Unificado de Rational [RUP, 2002] incluye a las actividades de customizacin de proceso dentro de la disciplina de
Ambiente en la que tambin aparecen todas las consideraciones humanas. En AgEnD decidimos dividirla en dos partes:
Administracin de Proceso y Administracin de Personas.
Cabe remarcar que la tarea de adaptacin del proceso es llevada a cabo por el
Coordinador en cooperacin con el equipo de desarrollo. Esto resulta muy relevante ya
que ser este ultimo el usuario final de la metodologa por lo cual el Coordinador
consultar con los miembros ms especializados para entender los mecanismos de
desarrollo involucrados.
Una vez que la metodologa haya sido configurada para un proyecto, se harn
reuniones espordicas (una buena prctica consiste en coordinarlas con el fin de cada
iteracin) en las que se evaluar la adecuacin de AgEnD a las caractersticas del
proyecto. Se analizarn los resultados positivos y negativos, pudiendo el Coordinador
hacer cambios sobre la marcha para mejorar la forma de trabajo.
Administracin de Personas
Otra de las actividades que ser realizada en forma conjunta con el Lder de
Proyecto es mantener la salud del equipo de desarrollo. En otras palabras velar porque
la motivacin del equipo sea alta, garantizar relaciones interpersonales positivas,
minimizar las fricciones debidas a distintos tipos de personalidad, entender a cada
individuo para poder sacar lo mejor de s mismo. Existe un solapamiento entre esta
disciplina y la de Administracin de Proyectos en este punto. Se destaca que el mismo
no es tan importante desde un punto de vista conceptual pero la diferencia est marcada
en que las actividades de esta disciplina tienen como objetivo el bienestar de las
personas en el proyecto mientras que el management se relaciona con la consecucin
exitosa del proyecto.
La prctica recomendada para esta disciplina tiene que ver con el patrn de
Mxima Comunicacin que ser descrito ms delante. Es decir, si tenemos canales de
comunicacin suficientemente ricos las dificultades podrn ser resueltas, en la mayora
de los casos, utilizando el sentido comn y la buena predisposicin de la gente.
Para ello definimos los tres niveles de refinamiento hasta llegar al conocimiento;
son: datos, informacin y conocimiento. Comenzando con el nivel inferior, los datos
consisten en valores discretos y objetivos acerca de eventos, pero sin ningn contenido
acerca de su importancia o relevancia; a partir de stos podremos generar informacin.
La informacin son datos organizados de forma de servir de utilidad para las personas
que mediante el contexto la utilizan para encarar tareas o tomar decisiones. Finalmente,
el conocimiento requiere entender la informacin y tiene que ver con la relacin entre
tems de informacin, su clasificacin y su meta-dato (informacin de la informacin).
La experiencia es conocimiento aplicado.
Dado que nos manejamos en un contexto gil, es imperativo que este patrn no
genere una extrema burocracia dentro de la organizacin del proyecto. Por eso se
defini un rol particular como ya fue mencionado el cual deber entender la arquitectura
del sistema y los aspectos funcionales ms importantes para poder capturarlos en
documentos que puedan ser recuperados y consumidos en el futuro. Esto es de suma
importancia y tiene que ver con el aprendizaje organizacional sugerido por Tom
DeMarco [DeMarco, 1999]. Asimismo se recomienda capturar todas aquellas
experiencias humanas positivas y negativas que se tuvieron en el proyecto para poder
agruparlas en formato de patrones y anti-patrones que puedan ser dispersados y
aprendidos por todas las personas.
Artefactos
6
Herramienta de administracin de contenido, desarrollada por Ward Cunningham. Permite de manera sencilla la carga, edicin,
borrado y visualizacin de cualquier tipo de contenido a travs de la web. Ms informacin en http://www.swiki.org
Documento de Visin:
Plan de Proyecto:
Lista de Riesgos:
Descripcin de la Arquitectura:
Casos de Prueba:
Scripts de Despliegue:
Planilla de Incidentes:
Nota de Entrega:
1. Mxima Comunicacin
4. Estimaciones giles
5. Enfoque en la Arquitectura
6. Integracin Continua
7. Peopleware
Mxima Comunicacin
Las metodologas giles solo tienen sentido si existe comunicacin entre las
personas. Esto no solo refiere a las personas del equipo de desarrollo, sino a todas las
personas que se vean afectadas en distinta medida por la ejecucin del proyecto; los
denominados durante esta tesis como stakeholders.
Existen dos tipos de comunicaciones que este proceso toma en cuenta para
mejorar el desarrollo. Estas comunicaciones difieren en relacin a las personas
involucradas en las mismas. La primera es la comunicacin interna, es decir la
comunicacin entre todos los integrantes del equipo de desarrollo desde el lder del
proyecto hasta el programador. La segunda comunicacin a la que nos referiremos es la
comunicacin entre los integrantes del equipo de desarrollo y el cliente o usuario del
sistema. Es decir, todas las comunicaciones que el equipo mantenga con los
stakeholders. En la figura 020, tenemos una representacin grfica de los niveles
presentados en este prrafo.
Esta divisin nos permite concentrarnos en las prcticas que podrn ser aplicadas
en cada caso. Analizaremos las formas de atacar el desarrollo de manera de maximizar
la comunicacin entre las partes involucradas acorde al contexto en que se plantean.
Comunicacin Interna
La primera recomendacin que podemos tomar tiene que ver con el patrn de
Mnima Dispersin Fsica. Segn este patrn el equipo de desarrollo debe estar
colocado fsicamente en una nica oficina que tenga una distribucin centralizada al
momento de trabajo con lugares privados para cuestiones extra laborales. Esta es la
propuesta de XP la cual no hace ms que obedecer al canal de comunicacin ms rico
que es ver a las personas cara a cara para interactuar con ellas.
Diagramas de Arquitectura
Comunicacin Externa
Tan importante como la comunicacin interna resulta la comunicacin con los
stakeholders del proyecto. Primero debemos dividir a los stakeholders en dos franjas:
stakeholders claves para el xito del proyecto y stakeholders normales. Los stakeholders
claves sern aquellos que poseen conocimiento del dominio del sistema a construir. Son
aquellos que aceptarn el sistema en cuestin si el mismo se adeca a sus necesidades.
Por otro lado, tenemos los stakeholders normales con los que el equipo interacta
ocasionalmente para algn propsito del proyecto. Estos ltimos juegan un rol que
puede tener importancia para la salud del proyecto pero que no impacta directamente
sobre la funcionalidad de la aplicacin construida.
Ocurre que en la mayora de los casos los clientes tienen que hacer sus propios
trabajos y no disponen de tiempo para estar continuamente formando parte del equipo
de desarrollo. Dadas las realidades impuestas en la mayor parte de los proyectos,
AgEnD propone disponer de un cliente designado con el rol de Experto en el Dominio
mencionado anteriormente. El mismo debe estar dispuesto a contestar cualquier
pregunta del equipo de desarrollo ya sea mediante algn canal de comunicacin ms
fro de acuerdo a la Figura 021 (ej.: telfono, videoconferencia, mail, etc.) en un tiempo
razonable que no debera superar algunas horas. En caso de que el problema requiera de
una comunicacin ms personal, el cliente deber disponer de tiempo para visitar al
equipo de desarrollo y discutir el tema personalmente o bien para recibir a algn
miembro clave en sus propias oficinas.
abierto tan flexible la comunicacin con estos debe ser fluida y honesta ya que en algn
punto el sistema tendr influencia sobre ellos o viceversa.
Las razones de la inflexibilidad en este punto son aquellas que han revelado
cuales eran los factores que ms contribuan al fracaso de los proyectos de software.
Segn estudios realizados por el Grupo Standish [Standish, 1994] la falta de
involucramiento por parte de los usuarios y el poco apoyo del management estn entre
los factores antes mencionados. Si se analiza este hecho concluimos que es lgico
establecer que si el usuario no participa en la construccin del software nunca este
ltimo va a satisfacer sus necesidades por ser el usuario el nico que las conoce. En
otras palabras,
Para lograr esta activa participacin del usuario deberemos poder contar con
usuarios expertos en el dominio que puedan prestar todo el tiempo necesario para las
necesidades del equipo de proyecto. Entre estas se incluye la posibilidad de que los
analistas puedan delinear requerimientos con el grado de detalle necesario para que los
Los usuarios debern tener amplio conocimiento del dominio para poder
resolver cualquier duda del equipo respecto a las funcionalidades a desarrollar. Tambin
deber priorizar continuamente el valor del negocio de lo que se construye en cada
iteracin para guiar funcionalmente al equipo.
Estimaciones giles
Al estar Orientadas a los Productos, las metodologas giles permiten realizar
estimaciones de menor granularidad en el da a da para obtener ms precisin en la
estimacin de la entrega de artefactos en cada iteracin, en detrimento de una
visibilidad a largo plazo. Sin embargo, es importante realizar estimaciones realistas de
la duracin de los proyectos sobre todo al principio de los mismos.
La tcnica que propone AgEnD es la estimacin por puntos de caso de uso (use
case points). La misma mide a los sistemas desde una perspectiva funcional y es
independiente de la tecnologa. Sin tener consideracin del lenguaje, mtodo de
desarrollo, o plataforma de hardware utilizada, el nmero de puntos de casos de uso de
un sistema permanecer constante. La nica variable es la cantidad de esfuerzo
necesario para desarrollar un conjunto dado de puntos de caso de uso; por lo tanto el
Anlisis por Puntos de Caso de uso puede ser utilizado para determinar si una
herramienta, un ambiente, un lenguaje es ms productivo comparado con otros dentro
de una organizacin o entre organizaciones. Este es uno de los puntos crticos y uno de
los valores ms importantes de dicho anlisis. El mtodo de puntos de caso de uso est
cubierto y detallado en [Ribu, 2001].
todas las estimaciones del proyecto. En los procesos giles, al reconocer que las
personas son lo ms importante del desarrollo las mismas adquieren ms
responsabilidad en relacin a los productos que entregan, debiendo estimar la duracin
del desarrollo en cada iteracin. Esto no quiere decir que los Programadores estarn a
cargo de hacer la estimacin del proyecto completo - el Lder ser el que lo realice
consultando a todos los miembros del equipo, ya que este es responsable por la
concrecin del proyecto entero - pero si sern responsables por los productos que
construyen durante las tareas que realizan todos los das.
La estimacin para una iteracin dada ser realizada durante la iteracin previa,
de forma de tener la planificacin aprobada por el cliente previo a embarcar en las
actividades correspondientes al equipo en el desarrollo. Esta estimacin ser efectuada
por todo el equipo junto al cliente y en la misma ser validada la funcionalidad a ser
prximamente construida.
Enfoque en la Arquitectura
Una de las ideas propuestas por AgEnD consiste en una temprana definicin de
la arquitectura del sistema. La arquitectura no es un concepto que pueda ser explicado
en un par de palabras. Consiste ms bien en una suma de aspectos que estn
relacionados con el diseo de un sistema.
organizacin lgica
funcionalidad
concurrencia
Arquitectura gil
Figura 021. El costo relativo de reparar un defecto en diferentes fases del ciclo de vida. Tomada de [Leffingwell, 2001].
Figura 022. Curva del costo de cambio a los requerimientos en diferentes fases del ciclo de vida. Tomada de [Beck,
2000].
Figura 023. Tasas de cambio a los requerimientos en proyectos de software respecto al tamao funcional de los mismos.
Tomada de [Larman, 2003].
La premisa propuesta por AgEnD consiste en tener un proceso gil que tenga
alta tolerancia al cambio y que permita que la curva del costo de cambio propuesta por
Boehm no escale exponencialmente en la mayora de los casos. AgEnD sugiere que en
los proyectos se tenga una grfica como muestra la Figura 024. En la figura hay dos
curvas: la nmero 1 que crece exponencialmente al igual que la original de Boehm y en
la que se manifiestan los cambios relacionados con aspectos que involucran altos
riesgos como la arquitectura candidata del sistema, mientras que en la curva nmero 2
que es bastante achatada pondramos todos los cambios relacionados a la funcionalidad
del sistema los cuales pueden ser absorbidos en las distintas iteraciones mediante el
feedback continuo con el cliente.
Figura 024. El costo del cambio actualizado para una metodologa gil. Tomada de [Poppendieck, 2003].
Sin embargo, dadas las caractersticas del proceso resulta burocrtico desarrollar
un documento de grandes proporciones que gue el proceso con las decisiones ms
importantes del diseo, que incorpore extractos de los diversos aspectos que son
reconocidos como esenciales para el desarrollo y que sea actualizado en cada iteracin
para servir a su propsito.
Estos modelos estn especificados UML y sirven para describir distintas vistas
de la arquitectura necesarias para la comunicacin dentro del equipo. Entre los modelos
que el arquitecto debera manejar al momento de definir la arquitectura encontramos:
Figura 025. Diagrama de Despliegue de alto nivel en UML. Tomada de [Sun, 2003].
Messenger
messenger.ear
Database
Configure() : void
Restart() : void
Send Message()
doPost(response,request)
setSender(sender)
sendMessage(message)
getRecipients() getPrimaryContactMethod(contactMethod)
getEmailAddress()
sendMessage(messsage,emailAddress)
getFaxNumber()
sendMessage(message,faxNumber)
makePersistent(message)
Save
Sav ed
Send
Transmit via
Cancel Gateway [External
Sent Contact] In Transit
Send
Reach Recipient
Transmit [Internal Contact]
Discarded
Read
Purge Archiv ed
Purged
- Name: char
#Sender #Recipient
+Stores 1..*
+IsReceivedBy Message
Se debe tener en cuenta que debe existir un balance entre el esfuerzo en realizar
estos diagramas y la posibilidad de comunicar dichas ideas en forma directa. De
acuerdo al patrn de Mxima Comunicacin conviene que estos diagramas estn en
algn radiador de informacin ya sea mediante impresiones en hojas grandes colgadas,
en una intranet de administracin de conocimiento, o simplemente dibujados en
pizarrones en los casos que se desee ms informalidad. Una vez que el propsito
comunicacional es servido no tiene sentido seguir detallando y/o manteniendo estos
diagramas.
Integracin Continua
Indudablemente una de las prcticas que hoy se encuentra recomendada por la
mayor parte del espectro de metodologas modernas (no solo giles) es el de Integracin
Continua.
Esta prctica nace a partir de los fracasos acarreados por las fases de integracin
de los modelos tradicionales en que una vez que se tenan todos los mdulos
construidos se iniciaba una intensa y compleja fase en que los mismos se integraban
unos con otros hasta lograr el producto a ser entregado. Era en dicho lapso en que
ocurran los mayores descalabros en materia planificacin, excedindose de manera
desmedida el tiempo, haciendo que fracasen proyectos que haban concluido con xito
sus fases anteriores. Una de las causas principales consista en las complejas
interacciones existentes entre los distintos mdulos, construidos por distintos equipos,
los cuales al ser integrados por vez primera presentaban bugs que eran muy difciles de
encontrar por estar generados por distintas personas.
McConnell [McConnell, 1996] fue uno de los que ms analiz esta tcnica
recomendndola entre sus conocidas best practices. Martin Fowler [Fowler, 2002]
escribi un artculo bastante descriptivo de los beneficios de esta prctica.
pruebas unitarias sobre el mismo7 y una vez que pase exitosamente el 100% de las
mismas proceder a integrarlo. Cuando el programador se disponga a integrar lo que ha
construido realiza previamente una actualizacin de la copia local de su repositorio para
chequear que est usando la ltima versin de todos los tems de configuracin y luego
subir sus cambios mediante un check-in al repositorio.
Sin embargo, deberemos recordar que hasta este instante estamos verificando la
sintaxis y semntica del cdigo, pero no sabemos nada respecto a si cumple las
necesidades del usuario. Para esto se tienen las pruebas funcionales automatizadas o
manuales que deber crear o especificar el tester junto con el cliente.
Peopleware
Una de las cuestiones en que se enfoca AgEnD es Peopleware - esto es
consistente con la idea de estar alineada bajo el Agile Manifesto ya mencionado. Este
trmino refiere a las personas involucradas en el desarrollo de software y a todos los
aspectos relacionados con las mismas.
7
Esta idea surge del framework de testing creado por Kent Beck para Smalltalk, posteriormente portado y popularizado por la
versin en Java, denominada JUnit, desarrollada por Beck y Erich Gamma. Ms informacin en http://www.junit.org
Llevando las ideas de todas estas fuentes al contexto de esta tesis, AgEnD toma
a las personas como partes esenciales del desarrollo y las encuadra en un marco humano
necesario para el entendimiento del impacto que las mismas tienen en la construccin de
los diversos artefactos. Dicho marco humano se centra en tres reas de estudio:
organizacin, rea de desarrollo e individuo.
El lugar de trabajo.
La cultura de la empresa.
Dentro del anlisis del individuo se encuentran los factores que afectan a un
individuo al momento de desarrollar software. Las personas necesitan tener un
propsito para lo que hacen y esto toma mayor importancia en relacin a su trabajo ya
que ste ocupa en promedio el 35% del tiempo durante el que realizan actividades.
Consecuentemente, se debe fomentar que el individuo est cmodo en su trabajo y que
exista una buena relacin con sus pares. Para esto es de suma importancia que el Lder
de Proyecto monitoree las dinmicas que entran en juego en el grupo as como el
comportamiento de los individuos.
8
Una de las herramientas ms populares para despliegue en la plataforma Java es el ANT. Este es un subproyecto dentro de la
comunidad de Jakarta que brinda una herramienta indispensable para despliegue automatizado de aplicaciones complejas. Ms
Calidad en el Proceso
El referirnos a AgEnD como una metodologa gil no quiere decir que el nfasis
puesto en los entregables y la rapidez del desarrollo no tengan en cuenta el problema de
la calidad.
informacin en http://www.ant.org
por las cuales esto ocurre radica en la falta de un proceso de desarrollo maduro y en la
tendencia inherente en la gente de sistemas de seguir el modelo Codificar y Probar.
Esta tendencia se debera modificar de forma de seguir un proceso relativamente
disciplinado, generando documentacin de anlisis/diseo previamente, haciendo el
testing luego de la codificacin, siguiendo entregas definidas. Sin embargo, al momento
en que el tiempo apremia se dejan de lado todas estas prcticas, desapareciendo el
proceso al punto de volver al caos del que se deseaba escapar.
Por estas cuestiones es importante que el proceso se tenga en alta estima y que la
gente est convencida de su utilizacin. En caso contrario, el proceso no cumple su
funcin. Para mantener la salubridad del mismo incluimos en la prxima seccin una
serie de disciplinas que permiten tener siempre un proceso de calidad que se adece a
las necesidades de la gente que lo utiliza.
Enfoque Sistmico
Uno de los motivos principales de desarrollo de esta tesis consiste en una
investigacin extensa en los campos de la psicologa sistmica, la administracin de
empresas y las relaciones laborales; para incorporar el conocimiento de estas reas en el
desarrollo de software.
necesarias para cada rol, y las distintas formas en que estas contribuyen a que la persona
este satisfecha de su trabajo.
Existe una analoga de este efecto en relacin a las personas que componen una
organizacin y tiene que ver con la resistencia al cambio. Al momento de implementar
una metodologa la gente posee un cierto conocimiento respecto a sus actividades y la
forma en que se realizan. La idea es que de alguna forma la implementacin debe
cambiar el modo de pensar de las personas modificando el paradigma metodolgico
existente en la organizacin. Diversos estudios muestran que cuando un paradigma
cambia, todo el mundo vuelve a cero; es decir, el conocimiento es reestructurado. Por lo
tanto se debe tener especial cuidado al momento de llevar a cabo este cambio
analizando la posicin de cada individuo y la tolerancia al cambio de la organizacin.
Tom DeMarco nos presenta un continuo que coloca a las personas en una escala
que va de los Lealmente Ciegos hasta los Opuestos Militantemente, pasando en el
medio por los Creyentes pero Escpticos ver Figura 031. Es importante identificar
como es la posicin de los individuos en este espectro de manera de llevar a la
organizacin en un camino de pequeos cambios hasta llegar al nuevo status quo
deseado.
Establecimiento
de Criterios
Creacin de
Escrutinio y Conciencia
Revisin
Anlisis Lgico
Puesta en
Prctica Generacin y
Evaluacin de
Alternativas
Esta figura identifica los pasos necesarios para un gradual ciclo de mejora de
procesos. Se parte por el establecimiento de criterios en que las partes interesadas
expondrn los problemas existentes que sern motivos de la intervencin. Luego, se
comenzar a crear una conciencia que facilite el cambio, para esto tomaremos el
continuo mencionado anteriormente respecto a la posicin de los individuos respecto al
cambio. A continuacin se efectuar un anlisis de la situacin, entendiendo las causas
Calidad
(AP)
Proceso Gente
(AM)
Actividades
Adaptacin
Metodolgica
Adaptacin de las
Personas
Evaluacin
Iteraciones Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Preliminares #1 #2 #n #n+1 #n+2 #m #m+1
Iteraciones
Figura 034. Actividades desarrolladas durante la implementacin de AgEnD.
Uno de los primeros pasos es relevar las caractersticas de los proyectos que se
realizan en la empresa para determinar las necesidades metodolgicas. En general se
deber tener en cuenta que los procesos giles aplican a realidades organizacionales
particulares. AgEnD como fue mencionado se recomienda en aquellos casos en que se
tienen recursos capacitados con buenos niveles de comunicacin y con proyectos que
pueden ser fragmentados en pequeos grupos de desarrollo (idealmente no ms de 15
personas).
en paralelo y en forma iterativa, hasta que todos los cambios planificados han sido
ejecutados y existe concurrencia respecto al xito de la adopcin de la metodologa.
La Organizacin
Una organizacin puede ser observada como un sistema abierto. Existen inputs,
un proceso de transformacin que genera outputs, y un ciclo de feedback que ayuda a
controla que los outputs sean los esperados para poder tomar acciones correctivas. Sin
embargo, pensar que este modelo alcanza para describir las actividades fundamentales
de una organizacin es errneo ya que la organizacin reviste un comportamiento
dinmico resultante de una multiplicidad de factores que confluyen para conformar la
identidad organizacional los cuales no pueden ser tomados linealmente sobre esto se
podr consultar [Etkin, 1989].
En el inicio de la implementacin de AgEnD se efecta un relevamiento del
status organizacional. Para esto se debern identificar aquellos stakeholders claves para
que el proceso de implementacin resulte exitoso. En la Tabla 001 se describen aquellos
stakeholders que resultan importantes incluir al momento de llevar a cabo el
relevamiento.
Stakeholder Influencia
Gerente de Sistemas Persona a cargo del rea de sistemas que administra el sector
Segn los estudios de otros investigadores citados por Jim Highmith [Highsmith,
2002] en relacin a la implementacin de metodologas giles, existen cuatro tipos
bsicos de culturas organizacionales; cada una est caracterizada por una motivacin
que permite que la misma se mantenga en forma invariable. Las cuatro culturas son: la
cultura de competencia, la cultura de colaboracin, la cultura de control y la cultura de
cultivo.
El rea de Desarrollo
Sin duda alguna el rea que estar sometida a la mayor influencia ser el rea de
Desarrollo. Aqu se encontrarn los usuarios finales del proceso que sern los que
participarn en la customizacin del mismo. Para ejecutar la implementacin se
evaluar primero el enfoque de la Adaptacin Metodolgica en que cada disciplina,
artefacto y actividad de AgEnD ser contrastada con la forma de trabajo de las personas
para poder elegir la mejor manera en que ests ltimas podrn absorber el proceso.
Customizacion
del Proceso
Predictibilidad
Como se observa, muchas de estas cuestiones parten del sentido comn pero
pueden servir para que un equipo de desarrollo que presenta cierta resistencia a AgEnD
comience a alinear sus esfuerzos hacia la implementacin de las prcticas y la
articulacin de los principios. Podemos mencionar que la disciplina de Administracin
de Proyecto dentro de AgEnD debe aportar toda la informacin necesaria para que el
equipo sepa hacia dnde dirigir sus esfuerzos.
El Individuo
Equilibrio
Interno
Estmulo
Necesidad
Tensin
Accin
Satisfaccin
Desde un punto de management, acorde a las palabras de Tom Peters, una de las
consideraciones principales que tendrn las empresas del maana ser que su valor de
mercado estar dado por los bienes intangibles que esta posee (a diferencia de la visin
tradicional en que se valoran principalmente los tangibles). Los bienes intangibles estn
dados por el intelecto e imaginacin de las personas denominadas knowledge workers
bajo este esquema.
eficiente. La tolerancia puede resultar ms fcil de adoptar pero quizs sea menos
productiva.
Nomenclatura Estandarizada
Una de las primeras facilidades que una persona se encuentra al aprender
AgEnD es el uso de nombres estandarizados para todos sus elementos. Muchos de los
nombres utilizados han sido tomados del RUP [RUP, 2002] que sirve como base de
conocimiento para procesos de desarrollo. Tambin existieron fuertes influencias del
SWEBOK [SWEBOK, 2001] que comprende el cuerpo de conocimiento de la
ingeniera de software y que es fiel esperanza del autor que dicho proyecto siente las
bases hacia una profesionalizacin de nuestra disciplina.
Administracin de Proceso
AgEnD propone distintos patrones enmarcados en una disciplina que pueden ser
utilizados para customizar el proceso en distintas etapas. Los patrones sirven para que
AgEnD pueda ser implementado exitosamente y para adaptar el mismo a las
necesidades particulares del proyecto. Esto logra captar el feedback de la gente que es
usuaria del proceso y dinmicamente modificarlo para que cumpla mejor sus objetivos.
Administracin de Personas
AgEnD propone distintos patrones enmarcados en una disciplina que pueden ser
utilizados para manejar mejor el factor humano dentro del desarrollo. Los patrones
ayudan a mejorar el ambiente de trabajo de los individuos, mejorar la motivacin de los
grupos de trabajo y mitigar las fricciones que puedan existir. El resultado ser una
adopcin rpida y eficaz de AgEnD, tolerante a la diversidad de personalidades
existentes.
Templates de Artefactos
AgEnD ofrece una serie de templates (ver Apndice A) que ayudarn al
Coordinador que lleve a cabo la implementacin a elaborar los artefactos sugeridos.
Estos han sido utilizados en distintos proyectos y plasman de una manera concisa la
informacin que se desea transmitir. La idea de los mismos es adaptarlos de acuerdo a
la realidad de los proyectos manejados por la organizacin.
Las experiencias muestran como AgEnD contribuy a que los proyectos lleguen
a su concrecin exitosamente sin por eso restar importancia a los equipos de trabajo
que son el factor ms importante del desarrollo. Describiremos cada proyecto con un
nombre clave por cuestiones de confidencialidad. Se ese dar un nombre de fantasa a
cada proyecto, el primero ser FIDoNET y el segundo ser CONEST.
9
Por cuestiones de confidencialidad se dar un nombre de fantasa de la empresa.
FIDoNET est comprometido a utilizar AgEnD en todas sus fases pudiendo adaptarlo a
medida se avanza en el desarrollo mediante la intervencin del Coordinador.
Roles y Recursos
Los roles de AgEnD estn llevados a cabo por distintas personas del proyecto. A
continuacin mencionamos a los trabajadores que participaron en la primera versin del
proyecto:
Tecnologas
Arquitectura de la Aplicacin
<HTML>
<BODY>
...
</BODY>
</HTML>
Motores de BD
Framework de MVC
En particular, Struts utiliza JSP para enviar la pgina al cliente que efecta el
request (View Component). En el mismo se podrn usar tags propios de la
librera de Struts que permiten minimizar el cdigo que se escribe en el JSP.
poder acotar el campo de funcionalidad que ser incluido en la aplicacin. Esta funcin
es llevada a cabo por las personas Responsables del Negocio que conocen en
profundidad a los stakeholders del futuro sistema y los servicios que sern provistos a
estos. Durante un perodo de 4 meses estas personas mantienen reuniones peridicas en
las que se identifican aquellas ONGs que servirn como referentes al momento de
relevar necesidades.
Algo similar ocurri con los Casos de Uso que inicialmente fueron basados en el
template de [RUP, 2002]. Los mismos eran especificados por el Analista en conjunto
con los Usuarios Expertos. Durante las primeras iteraciones se observ que los
Desarrolladores los lean por arriba y hacan las preguntas directamente a los Usuarios
Expertos quienes hacan un breve repaso por el flujo de interacciones. A partir de ese
momento se decidi especificar el comportamiento en casos de uso mucho ms
informales que permitieran que los Desarrolladores tuvieran un idea de lo que tenan
que implementar pudiendo profundizar con la comunicacin cara a cara con los
Usuarios Expertos. Finalmente, los casos de uso terminaron siendo bastante parecidos a
las User Stories planteadas por XP [Jeffries, 2001].
Tomando el concepto del Scrum Daily Meeting sugerido por Scrum [Schwaber,
2001], se decidi agregar dentro de la disciplina de Administracin de Proyecto de
AgEnD esta reunin diaria de quince minutos a primera hora de la maana con el
equipo de desarrollo. La misma era coordinada por el Lder de Proyecto quien
preguntaba a cada persona del equipo qu haba hecho de la durante el da anterior, que
iba a hacer durante ese da y que obstculos tena para llevar a cabo sus actividades. En
la reunin poda participar el Cliente pero solo como observador. Esto permiti ir
teniendo un control y monitoreo constante sobre el progreso y los riesgos que se iban
dando.
Administracin de la Configuracin
Mxima Comunicacin
Una de las prcticas que fue aplicada con mayor xito en el proyecto fue la de
Mxima Comunicacin. Todas las personas involucradas en el proyecto (tanto de parte
de los usuarios expertos como el equipo de desarrollo) estaban en un mismo piso de un
edificio en oficinas adyacentes. Esto permita que cualquier duda planteada por
cualquier parte se resolviera mediante la rpida consulta con el miembro que tena el
conocimiento. Esta es una prctica esencial en AgEnD que es prerrequisito de su
implementacin. Alistair Cockburn [Cockburn, 2001a] identifica como las corrientes
comunicacionales mejoran la transferencia de conocimiento y son una de las causas por
las cuales se pueden minimizar el overhead metodolgico. Esto fue tratado ampliamente
en el captulo anterior.
avance solo como observador y en las reuniones semanales de revisin para validar el
contenido de lo que se construy.
Estimaciones giles
Usando la metodologa de UCP (Use Case Points) junto con los factores de
ajuste correspondientes, la estimacin arroj un total de 215 UCP no ajustados.
Mediante la utilizacin del factor de ajuste estandar de la industria de 20 horas/persona
por UCP se obtuvo un esfuerzo para el proyecto de 18,78 meses/persona. De acuerdo al
equipo de desarrollo descrito anteriormente se estim la duracin en 5 meses.
Este resultado fue bastante acertado si se tiene en cuenta que la primer versin
fue liberada 6 meses despus. Cabe remarcar que durante el desarrollo hubo grandes
Enfoque en la Arquitectura
Tomando como input los casos de uso que se iban teniendo y las cualidades
sistmicas requeridas se fue armando el documento de Descripcin de la Arquitectura.
Un breve resumen del mismo se puede observar en el punto anterior donde se visualizan
los componentes ms importantes de la solucin.
Podemos mencionar que a diferencia de otras metodologas giles (XP entre las
ms conocidas) que plantean el no realizar ningn esfuerzo de arquitectura al principio,
AgEnD sugiere especificar las cuestiones tcnicas ms importantes en forma temprana
de manera de minimizar el impacto del cambio en este sentido. Esto permiti que una
vez elegida la arquitectura, el Arquitecto y los desarrolladores construyeron un
prototipo proof of concept que validara las decisiones tomadas. Se seleccionaron los
casos de uso ms crticos de los que estaban especificados y se implement el prototipo.
El mismo fue exitoso y sent la base para la posterior implementacin de los casos de
uso.
Integracin Continua
Una vez que estaba subida la aplicacin la misma era testeada unitariamente y
funcionalmente por el desarrollador para verificar que el sistema continuaba en
funcionamiento. Al fin de cada semana el Tester tomaba todo lo construido y guindose
con los casos de uso llevaba a cabo el testing funcional en forma conjunta con el Cliente
en algunos casos.
Peopleware
Artefactos
Este proyecto fue encarado por una empresa que presta servicios de desarrollo
de software. El cliente para el cual realiza el proyecto en particular es CONEST10 quien
maneja importantes centros de compras dentro del pas. CONEST ha decidido
encargarle a la consultora un sistema para la administracin de recursos de hardware y
software disponibles en la empresa. Dicho sistema ser internamente por el
departamento de tecnologa de CONEST quin deber administrar el inventario de estos
bienes. El proyecto es relativamente pequeo (3 meses aprox.) como se mostrar en la
seccin de estimaciones.
Roles y Recursos
Los roles de AgEnD estn llevados a cabo por distintas personas del proyecto. A
continuacin mencionamos a los trabajadores:
10
Nuevamente, por cuestiones de confidencialidad se dar un nombre de fantasa de la empresa.
Tecnologas
Arquitectura de la Aplicacin
Motores de BD
Framework de MVC
Como se observa en la Figura 038, tomada del libro sobre patrones en J2EE
[Alur, 2001], el patrn encapsula la creacin de entidades que mantienen los
datos de la aplicacin. Estos Value Objects son los que contienen las sentencias
de accesos al RDBMS.
Figura 038. Diagrama de secuencia de interacciones en el patrn DAO. Tomada de [Alur, 2001].
Mxima Comunicacin el Coordinador dedic unos 4 das full time al proyecto para
llevar a cabo un refactoring de la Arquitectura suplantando el documento en s por
cdigo ejecutable que sirviera para gua a los desarrolladores. Los resultados fueron
excelentes.
En relacin a los artefactos sugeridos por AgEnD la Visin fue suplantada por la
Propuesta Econmica a partir de la cual el Cliente decida respecto a la ejecucin del
proyecto. Todos los dems artefactos sugeridos fueron realizados incluyndose como
parte de los casos de uso los prototipos de pantalla en HTML correspondientes. Esto
sirvi para obtener un rpido feedback del usuario respecto a aquellas funcionalidades
que resultaban ambiguas.
Administracin de la Configuracin
Mxima Comunicacin
Enfoque en la Arquitectura
Una vez que se comenz con la especificacin de los primeros casos de uso, en
paralelo el Coordinador en rol de Arquitecto junto con los Desarrolladores comenzaron
a definir la arquitectura del sistema. Uno de los requerimientos no funcionales ms
importante era el construir un sistema mantenible y flexible, el cual pudiera incorporar
cambios con facilidad y que debera ser interoperable con otras aplicaciones dentro de
los sistemas del Cliente.
Tomando como input los casos de uso que se iban teniendo y las cualidades
sistmicas requeridas se fue armando el documento de Descripcin de la Arquitectura.
Un breve resumen del mismo se puede observar en el punto anterior donde se visualizan
los componentes ms importantes de la solucin.
Estimaciones giles
Usando la metodologa de UCP (Use Case Points) junto con los factores de
ajuste correspondientes y efectuando una estimacin en paralelo basada en la
experiencia de especialistas tcnicos dentro de la consultora la estimacin arroj un
esfuerzo para el proyecto de 12 meses/persona. De acuerdo al equipo de desarrollo
descrito anteriormente se estim la duracin en 3 meses.
Este resultado fue bastante acertado si se tiene en cuenta que la primer versin
fue liberada 3 meses y 3 semanas despus. Cabe remarcar el desvo surgido debido a los
temas antes mencionados respecto a la comunicacin de la arquitectura y a las
dificultades con el paquete de reporting seleccionado.
Integracin Continua
Una vez que estaba subida la aplicacin la misma era testeada unitariamente y
funcionalmente por el desarrollador para verificar que el sistema continuaba en
funcionamiento. Al fin de cada iteracin el Tester tomaba todo lo construido y
guindose con los casos de prueba llevaba a cabo el testing funcional en forma conjunta
con el Cliente en algunos casos. En el proyecto de CONEST no existieron problemas
relacionados con la integracin.
Peopleware
Una vez que dichos documentos fueron generados el Coordinador los formate
adecuadamente y los puso a disposicin de todos en la intranet de conocimiento de la
consultora. Esta medida llevada a la escala de todos los proyectos en que se implemente
AgEnD permitir que cualquier tipo de conocimiento generado sea permeado en la
gente aumentando el conocimiento organizacional.
Artefactos
Casos de Prueba, contienen los flujos de ejecucin que sern utilizados por
los Testers para probar la aplicacin desde un punto de vista funcional; son
creados a partir de los casos de uso
Cabe mencionar que en aquellos casos en los que las prcticas no pudieron ser
implementadas siguiendo los lineamientos propuestos en esta tesis, hubo importantes
perjuicios que se manifestaron como desvos en el cronograma del proyecto. Es de
opinin del autor que estas cuestiones no hubieran sucedido si las circunstancias
hubieran permitido la implementacin completa de las prcticas.
Capitulo V - Conclusiones
cuales se basan las metodologas giles y que dirigirn todos los objetivos de la solucin
propuesta ms adelante.
Visin
Lista de Riesgos
Descripcin de la Arquitectura
Casos de Prueba
Nota de Entrega
Dado que los mismos son documentos totalmente independientes de esta tesis, se
incluyen en los distintos formatos generados por cada herramienta al fin de la misma.
Copyright 1997 por Software Productivity Research, Inc. Todos los derechos reservados.
Researching Languages
Actual counts of Function Points and source code statements were performed. Samples of
counting Function Points and source code statements were done on Ada, several BASIC
Source code statements were counted, then compared to the size of the same program in
languages of known levels. Assembly, APL, C, OBJECTIVE C, FORTH, FORTRAN, LISP,
PILOT, and PROLOG are languages that produce the same source code count as COBOL.
So code sizes were compared to the known quantity of COBOL source code.
Source code inspection for common applications was done. Then the volume of code for the
application in a measured language was hypothesized. ACTOR, CLARION, and TRUE
BASIC are examples of languages that were inspected and their levels hypothesized by
subjective means.
As of 1996, there were more than 500 languages and major dialects of languages available
to software practitioners. Table 2 lists the most common of them in what is considered
version 7 of the SPR Programming Languages Table.
AVERAGE SOURCE
LANGUAGE LEVEL STATEMENTS PER
FUNCTION POINT
1032/AF 20.00 16
1st Generation default 1.00 320
2nd Generation default 3.00 107
3rd Generation default 4.00 80
4th Generation default 16.00 20
5th Generation default 70.00 5
Access 8.50 38
Ada 83 4.50 71
Ada 95 6.50 49
AI shell default 6.50 49
ANSI BASIC 5.00 64
ANSI COBOL 74 3.00 107
ANSI COBOL 85 3.50 91
ANSI SQL 25.00 13
RPG II 5.50 58
RPG III 5.75 56
Screen painter default 57.00 6
SIMULA 67 7.00 46
Simulation default 7.00 46
SMALLTALK 286 15.00 21
SMALLTALK 80 15.00 21
SMALLTALK/V 15.00 21
SQL 25.00 13
SQL-Windows 27.00 12
Statistical default 10.00 32
Strongly typed default 3.50 91
Symantec C++ 11.00 29
Tandem Access Language 3.50 91
Topspeed C ++ 11.00 29
Turbo C 2.50 128
TURBO C++ 6.00 53
TURBO EXPERT 6.50 49
Visual Basic 1 7.00 46
Visual Basic 2 7.50 43
Visual Basic 3 8.00 40
Visual Basic 4 9.00 36
Visual Basic 5 11.00 29
Visual Basic DOS 8.00 40
Visual C++ 9.50 34
Visual COBOL 16.00 20
Visual Objects 20.00 16
VisualAge 15.00 21
VisualGen 18.00 18
Anexo C - Glosario
Casos de Uso. Notacin utilizada para representar los requerimientos funcionales de un
sistema basada en el esquema propuesto por Ivar Jacobson a principios de la dcada del
90.
CVS (Concurrent Versions System). Herramienta que permite seguir los cambios a un
conjunto de archivos a lo largo del tiempo. CVS es comnmente usado en el desarrollo
de software para:
Unit Testing. Tcnica utilizada por muchas de las metodologas giles descritas que
consiste en realizar pruebas automatizadas que verifiquen el correcto funcionamiento de
las clases que son desarrolladas. Para esto se utilizan frameworks como el JUnit,
Cactus, HttpUnit, etc.
WBS. Sigla en ingls de un Work Breakdown Structure. Especifica una tcnica que
consiste en desglosar un proyecto en actividades atmicas y estimar el esfuerzo de cada
una de estas actividades. Finalmente, mediante la sumatoria de todos los esfuerzos se
tendr el esfuerzo del proyecto.
Referencias Bibliogrficas
[Alexander, 1979] Alexander, Christopher, The Timeless Way of Building, New York,
Oxford University Press, 1979.
[Alur, 2001] Alur, Deepak, John Crupi, Dan Malks, Core J2EE Patterns, New York:
Prentice Hall, 2001.
[Boehm, 1981] Boehm, Barry W., Software Engineering Economics, Prentice Hall,
1981.
[Boehm, 1988] Boehm, Barry W., A Spiral Model of Software Development and
Enhancement, IEEE Computer, Vol. 21, No. 15 (May 1988) pp. 61-72.
[Boehm, 1995] Boehm, Barry W., Anchoring the Software Process, USC, November
1995.
[Boehm, 2000] Boehm, Barry W., Ellis Horowitz, Ray Madachy, Donald Reifer,
Bradford K. Clark, Bert Steece, A. Winsor Brown, Sunita Chulani, Chris Abts, Software
Cost Estimation with Cocomo II, Prentice Hall, 2000.
[Booch, 1999] Booch, Grady, Ivar Jacobson, James Rumbaugh, The Unified Modeling
Language User Guide, Addison-Wesley Object Technology Series, 1999.
[Brooks, 1975] Brooks, Frederick P., The Mythical Man Month, Reading, Mass.:
Addison-Wesley, 1975.
[Brooks, 1987] Brooks, Frederick P., No Silver Bullet: Essence and Accidents of
Software Engineering, IEEE Computer, Vol. 20, No. 4 (April 1987) pp. 10-19.
[Coad, 1998] Coad, Peter, Eric Lefebvre, Jeff De Luca, Feature-Driven Development,
http://www.cs.jhu.edu/~scott/oos/software/togetherj/help/Users-
Guide/Feature_Driven_Development.htm, 1998.
[Coad, 1999] Coad, Peter, Eric Lefebrve, Jeff De Luca, Java Modeling in Color with
UML, Prentice Hall, 1999.
[Crispin, 2002] Crispin, Lisa, Tip House, Testing Extreme Programming, Addison-
Wesley The XP Series, 2002.
[EA, 2003] Enterprise Architect v3.61, Online Help, Sparx Systems, 2003.
[Fowler, 2001] Fowler, Martin, Cara Taber, Planning and Running an XP Iteration,
http://www.martinfowler.com/articles/planningXpIteration.html, ThoughtWorks Inc.,
January 2001.
[Gamma, 1995] Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides,
Design Patterns, Elements of Reusable Object-Oriented Software, Addison-Wesley,
1995.
[Glass, 2002] Glass, Robert L., Facts and Fallacies of Software Engineering, Addison-
Wesley, 2002.
[Highsmith, 2000] Highsmith, Jim, Retiring Lifecycle Dinosaurs, Software Testing &
Quality Engineering (STQE), (July/August 2000) pp. 22-28.
[Jacobson, 1999] Jacobson, Ivar, Grady Booch, James Rumbaugh, The Unified Software
Development Process, Addison-Wesley Object Technology Series, 1999.
[Jeffries, 2001] Jeffries, Ron, Ann Anderson, Chet Hendrickson, Extreme Programming
Installed, Addison-Wesley The XP Series, 2001.
[Jones, 1997] Jones, Capers, Programming Languages Table, Release 8.2, Software
Productivity Research, March 1996.
[Kruchten, 2003] Kruchten, Philippe, Per Kroll, The Rational Unified Process Made
Easy: A Practitioners Guide to the RUP, Addison-Wesley Object Technology Series,
2003.
[Kulak, 2003] Kulak, Daryl, Eamonn Guiney, Use Cases: Requirements in Context,
Second Edition, Addison-Wesley, 2003.
[Larman, 2003] Larman, Craig, Agile and Iterative Development: A Managers Guide,
Addison-Wesley Agile Software Development Series, 2003.
[Martin, 1991] Martin, J., Rapid Application Development, Macmillan Inc., New York,
1991.
[Nunes, 1999] Nunes, Nuno Jardim, Joo Falco e Cunha, A Bridge too Far: The
WISDOM Approach, ECOOP99 Workshop on Interactive System Design and Object
[Ribu, 2001] Ribu, Kirsten, Estimating Object-Oriented Software Projects with Use
Cases, Master of Science Thesis, University of Oslo, Department of Informatics,
November 2001.
[Royce, 1970] Royce, Winston, Managing the Development of Large Software Systems,
Proceedings of IEEE Westcon, 1970.
[Schwaber, 2001] Schwaber, Ken, Mike Beedle, Agile Software Development with
Scrum, Prentice Hall, 2001.
[Sinan, 1998] Sinan Si Alhir, UML in a Nutshell, OReilly & Associates, 1998.
[Smith, 2001] Smith, John, A Comparison of RUP and XP, Rational Software White
Paper, 2001.
[Standish, 1994] The Standish Group, The CHAOS Report, The Standish Group
International, 1994.
[Standish, 1999] The Standish Group, CHAOS: A Recipe for Success, The Standish
Group International, 1999.
[Sun, 2003] Architecting and Designing J2EE Applications, Copyright 2003 Sun
Microsystems Inc., 2003.
[Williams, 2000] Williams, Laurie, Robert R. Kessler, Ward Cunningham, Ron Jeffries,
Strengthening the Case for Pair Programming, IEEE Software, Vol. 17, No. 4
(July/August 2000) pp. 19-25.
dX Robert Martin:
http://www.objectmentor.com/publications/RUPvsXP.pdf
Historia de Revisin
Fecha Versin Descripcin Autor
Tabla de Contenidos
<<Datos de la empresa>> 1
<<Logo Empresa>>
1. Introduccin
[Descripcin del documento y del contexto del proyecto de desarrollo. Se identifica al Cliente y el
propsito detrs de la construccin del sistema.]
Referencias
2. Posicionamiento
Situacin Actual
[Descripcin del problema actual que se presenta y la forma en que el sistema beneficiar a los
usuarios mediante una solucin dada.]
3. Stakeholders y Usuarios
Stakeholders identificados
[Tabla que muestra a los stakeholders involucrados en el proyecto. Se da una breve descripcin
de cada uno y se analiza el impacto de este en la solucin.]
Usuarios identificados
[Tabla que muestra a los usuarios que tendr el sistema. Se da una breve descripcin de cada uno
y se analiza las responsabilidades en relacin al sistema en construccin.]
[Feature 1.]
[Feature 2.]
...
[Feature X.]
5. Otros Requerimientos
[A continuacin se detallan las caractersticas del producto en forma de requerimientos no funcionales
de alto nivel, restricciones a ser impuestas a la solucin y reglas del negocio que determinarn la
descripcin de la arquitectura candidata resultante.]
<<Datos de la empresa>> 2
<<Logo Empresa>>
Requerimientos No Funcionales
Restricciones
[Restriccin 1.]
[Restriccin 2.]
...
[Restriccin X.]
<<Datos de la empresa>> 3
<<Logo Empresa>>
Historia de Revisin
Fecha Versin Descripcin Autor
Tabla de Contenidos
<<Datos de la empresa>> 1
<<Logo Empresa>>
1. Introduccin
Propsito
[Breve comentario del propsito de este documento. Se puede tomar la descripcin de AgEnD.]
2. Riesgos
[A continuacin se enumerarn todos los riesgos que presenta el proyecto. En dicha lista deben figurar
tanto los riesgos de management identificados por el Lder de Proyecto, como los riesgos ms tcnicos
identificados por el Arquitecto.]
Criticidad
[Indicar el nivel de criticidad en caso de que el riesgo se materialice. El rango puede
estar en una escala de alta, media o baja.]
Probabilidad de Ocurrencia
[Indicar la probabilidad de que ocurra el riesgo en el proyecto. El rango puede estar en
una escala de alta, media o baja.]
Impacto
[El impacto est dado por el producto de la criticidad y la probabilidad de ocurrencia.
En base a esto los riesgos sern priorizados y monitoreados por el Lder de Proyecto y el
Arquitecto. Por ejemplo, un riesgo con criticidad alta y probabilidad de ocurrencia alta
deber ser monitoreado frecuentemente.]
Estrategia de Mitigacin
[Indicar la estrategia a ser utilizada para minimizar el impacto del riesgo en caso que
este se materialice.]
Plan de Contingencia
[Indicar el plan de contingencia que ser tenido en cuenta en caso que la estrategia de
mitigacin no tenga xito.]
...
<<Datos de la empresa>> 2
<<Logo Empresa>>
Historia de Revisin
Fecha Versin Descripcin Autor
Tabla de Contenidos
<<Datos de la empresa>> 1
<<Logo Empresa>>
1. Breve Descripcin
[Breve descripcin del propsito del caso de uso. Recordar que el mismo debe dar algn valor a algn
actor del sistema.]
2. Actores
[Enumerar los actores que participan en este caso de uso.]
3. Flujo de Eventos
[A continuacin se describe la secuencia de pasos desde que el actor dispara el caso de uso hasta que la
interaccin llega a su fin.]
4. Requerimientos Suplementarios
[Indicar aquellos requerimientos suplementarios relacionados nicamente con este caso de uso.
Recordar que los requerimientos suplementarios globales van en el SRS]
5. Precondiciones
[Indicar las condiciones que deben darse para que se pueda disparar la ejecucin de este caso de uso.]
6. Poscondiciones
[Indicar como quedar el sistema despus que se termine la ejecucin de este caso de uso.]
7. Puntos de Extensin
[Puntos a partir de los cuales se extiende el flujo bsico de este caso de uso. Relacionado con la relacin
<<extends>> de UML.]
8. Diagramas Asociados
[Colocar aquellos diagramas asociados con este caso de uso. En este punto se puede colocar el modelo
de casos de uso afectado a este caso de uso, diagrama de estado, diagrama de actividad, prototipo de
GUI, etc.]
9. Supuestos y Dudas
[Dejar constancia de los supuestos que se han tomado en la especificacin del casos de uso as como las
dudas que el Analista tiene pendiente y debern ser resueltas con el Cliente.]
<<Datos de la empresa>> 2
<<Logo Empresa>>
Historia de Revisin
Fecha Versin Descripcin Autor
Tabla de Contenidos
<<Datos de la empresa>> 1
<<Logo Empresa>>
1. Introduccin
Propsito
[Breve comentario del propsito de este documento. Se puede tomar la descripcin de AgEnD.]
Referencias
[Indicaremos todos los artefactos relacionados con este documento.]
2. Requerimientos Funcionales
3. Requerimientos Suplementarios
Requerimientos No Funcionales
Restricciones
[A continuacin se enumerarn todas las restricciones que se aplican a la solucin planteada. Las
mismas restringen los grados de libertad al momento de disear una solucin determinada a un
problema.]
[A continuacin se enumerarn todas aquellas reglas del negocio globales a la aplicacin. Las
mismas tienen que ver con las polticas y/o condiciones que se dan en los procesos del negocio y
que deben ser implementadas en la solucin.]
<<Datos de la empresa>> 2
<<Logo Empresa>>
Historia de Revisin
Fecha Versin Descripcin Autor
Tabla de Contenidos
<<Datos de la empresa>> 1
<<Logo Empresa>>
1. Introduccin
Propsito
[Breve comentario del propsito de este documento. Se puede tomar la descripcin de AgEnD.]
Referencias
[Indicaremos todos los artefactos relacionados con este documento.]
2. Objetivos Arquitectnicos
[Se mencionarn los requerimientos no funcionales y restricciones que guiaron el trabajo del arquitecto.
Los mismos estarn basados en lo que fue documentado en el SRS, pero haciendo nfasis sobre como la
arquitectura candidata resuelve cada uno de estos.]
[Es una descripcin de una vista de la arquitectura del software a travs de los casos de usos.
Representa el conjunto de escenarios de la iteracin que describen o representan la funcionalidad
requerida para el proyecto.]
4. Vista Lgica
[Es una descripcin de una vista de la arquitectura del software a travs de la evaluacin realizada de
los requerimientos funcionales y no funcionales. Representa la organizacin en paquetes de servicios y
subsistemas y la organizacin de estos subsistemas en layers. Tambin se describen aqu las
realizaciones de caso de uso ms importantes.]
5. Vista de Despliegue
[La vista de despliegue permitir describir la distribucin fsica posible de los diferentes nodos de
procesamiento describiendo adems el modelo de crecimiento de la solucin.]
6. Bibliografa
[En este apartado se podr mencionar la bibliografa de donde se puede obtener ms informacin de los
elementos mencionados en este documento.]
<<Datos de la empresa>> 2
<<Logo Empresa>>
Historia de Revisin
Fecha Versin Descripcin Autor
Tabla de Contenidos
<<Datos de la empresa>> 1
<<Logo Empresa>>
1. Introduccin
Propsito
[Breve comentario del propsito de este documento. Se puede tomar la descripcin de AgEnD.]
Referencias
[Indicaremos todos los artefactos relacionados con este documento.]
ID de Caso de Uso
[Identificacin del caso de uso. Por ejemplo, podra ser algo como CUXXX Alta de Usuarios.]
Mdulo/Componente
[Mdulo de la aplicacin que esta siendo probado.]
Funcionalidad
[Funcionalidad de la aplicacin que se prueba.]
Modo de Prueba
[Manual o automtico (mediante algn script o robot).]
Preparacin de Configuracin
[Preparacin de configuracin para llevar a cabo la prueba. En este punto colocaremos
cualquier infraestructura o configuracin o carga de datos que requiera la prueba.]
Procedimiento de la Prueba
[Secuencia de pasos para llevar a cabo la prueba.]
Resultados Esperados
[Resultados esperados por la prueba.]
<<Datos de la empresa>> 2
<<Logo Empresa>>
Historia de Revisin
Fecha Versin Descripcin Autor
Tabla de Contenidos
<<Datos de la empresa>> 1
<<Logo Empresa>>
1. Introduccin
Propsito
[Breve comentario del propsito de este documento. Se puede tomar la descripcin de AgEnD.]
Referencias
[Indicaremos todos los artefactos relacionados con este documento.]
2. Informacin de la Entrega
Overview
[Breve descripcin del contenido de la entrega que se lleva a cabo. Se enumeran todos los
artefactos que la misma incluye, identificando el nmero de versin donde corresponda.]
3. Nuevos Features
Features
[Feature 1.]
[Feature 2.]
...
[Feature X.]
Bugs
[Bug 1.]
[Bug 2.]
...
[Bug X.]
Lista de Limitaciones
[Listado de las limitaciones de la versin entregada. Se detallarn aquellas cuestiones que
quedaron fuera de la implementacin corriente.]
<<Datos de la empresa>> 2
<<Logo Empresa>>
Limitaciones
[Limitacin 1.]
[Limitacin 2.]
...
[Limitacin X.]
<<Datos de la empresa>> 3
Introduccin a
las metodologas
giles
Otras formas de analizar y desarrollar
Los textos e imgenes publicados en esta obra estn sujetos excepto que se indique lo contrario a una licencia de
Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 Espaa de Creative Commons. Podis copiarlos, distribuirlos
y transmitirlos pblicamente siempre que citis el autor y la fuente (FUOC. Fundacin para la Universitat Oberta de Catalunya),
no hagis de ellos un uso comercial y ni obra derivada. La licencia completa se puede consultar en http://creativecommons.org/
licenses/by-nc-nd/3.0/es/legalcode.es
CC-BY-NC-ND PID_00184468 Introduccin a las metodologas giles
ndice
Introduccin............................................................................................... 5
Objetivos....................................................................................................... 7
Resumen....................................................................................................... 51
Actividades.................................................................................................. 53
Ejercicios de autoevaluacin.................................................................. 53
Solucionario................................................................................................ 54
Glosario........................................................................................................ 55
Bibliografa................................................................................................. 56
CC-BY-NC-ND PID_00184468 5 Introduccin a las metodologas giles
Introduccin
Es difcil cambiar las reglas del mercado mundial, as que lo que se ha pensado
es adaptar las metodologas de especificacin y desarrollo a este entorno cam-
biante y lleno de presiones, en el que obtener un resultado rpido, algo que se
pueda ver, mostrar y sobre todo utilizar, se ha vuelto crucial para el xito de
las organizaciones. La metodologa necesariamente ha de ser gil, debe tener
un ciclo corto de desarrollo y debe incrementar las funcionalidades en cada
iteracin del mismo preservando las existentes, ayudando al negocio en lugar
de darle la espalda.
Es para este entorno para el que han nacido las metodologas giles.
CC-BY-NC-ND PID_00184468 6 Introduccin a las metodologas giles
Objetivos
El objetivo general de este mdulo es que adquiris una primera visin de las
metodologas giles para que as tengis la posibilidad de reconocer cundo
un proyecto es propicio para usarlas. El objetivo general se descompone en los
siguientes objetivos parciales, que el estudiante debe conseguir:
Tras esta reunin, se crearon dos cosas que han dado mucho que hablar en Webs complementarias
los ltimos aos, la primera de ellas es el "Manifiesto gil para el desarrollo de
Podis ver el contenido
software" que recoge la filosofa de las metodologas giles. de "Manifiesto gil para
el desarrollo de software"
y "The Agile Alliance"en
La segunda de ellas es una organizacin sin nimo de lucro "The Agile Allian- las webs siguientes: http://
www.agilemanifesto.org/
ce", dedicada a promover los conceptos relacionados con el desarrollo gil de
(http://
software y ayudar a las organizaciones y empresas a adoptar la agilidad. www.agilealliance.org/)
"Estamos buscando mejores maneras para desarrollar software y ayudar a otros a desarro-
llarlo. En este trabajo valoramos:
"Manifiesto gil"
Firmado por Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cun-
ningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries,
Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland
y Dave Thomas.
1)Alindividuoysusinteraccionesmsquealprocesoylasherramientas.
primero el entorno y esperar que el equipo se adapte a l. Esto nos resta efi-
ciencia, es mejor que el equipo lo configure sobre la base de sus necesidades
y sus caractersticas personales.
Adems, las interacciones que haga el equipo con el usuario final deberan
ser igual de fluidas siendo este usuario un miembro ms del equipo, con un
objetivo comn, que es conseguir que el proyecto funcione y sea til para l.
2)Desarrollarsoftwarequefuncionamsqueobtenerunabuenadocu-
mentacin.
3)Lacolaboracinconelclientemsquelanegociacindeuncontrato.
4)Responderaloscambiosmsqueseguirunaplanificacin.
Llegados a este punto, podemos intuir que las formas de hacer las cosas en la
ingeniera del software estn cambiando, adaptndose ms a las personas y a
las organizaciones en las que han de funcionar las aplicaciones.
1.2.1. SCRUM
geniera por Goldratt, Takeuchi y Nonaka en la dcada de 1980. Para un nuevo aplicativo, los
requerimientos no sern total-
mente conocidos hasta que el
Podramos decir que SCRUM se basa en cierto "caoscontrolado" pero esta- usuario no lo haya usado.
blece ciertos mecanismos para controlar esta indeterminacin, manipular lo
impredecible y controlar la flexibilidad.
Lema de Wegner
1) pre-juego,
2) juego y
3) post-juego.
CC-BY-NC-ND PID_00184468 14 Introduccin a las metodologas giles
trabaja duro y se intenta conseguir el objetivo. Todos los miembros del equipo En la ingeniera del software:
han de participar en una reunin diaria que en ningn caso deber exceder los la incertidumbre es inherente
e inevitable en el proceso de
30 minutos. En la fase de post-juego se evala la entrega de funcionalidades, desarrollo de aplicaciones.
se ven las tareas pendientes, se evala el progreso del proyecto y se redefine el
tiempo de entrega del mismo si fuera necesario.
Nace en 1994 con el objetivo de crear una herramienta RAD (rapid applications DSDM
development) unificada, mediante la definicin de un framework de desarrollo
Se origin en Inglaterra y se
(sin propietario ni nimo de lucro) para los procesos de produccin de soft- ha ido extendiendo por Euro-
ware. pa (no tanto por EE.UU.). Exis-
te una organizacin que se en-
carga de su mantenimiento y
desarrollo llamada DSDM Con-
sortium.
DSDM se ha desarrollado teniendo como ideas fundamentales:
DSMD propone cinco fases, de las que slo las tres ltimas son iterativas a
pesar de que hay retroalimentacin en todas las fases.
Ejemplo
No es lo mismo cocinar para cuatro personas que para veinte; no es lo mismo planificar
un fin de semana para dos personas que para cuarenta, entonces por qu utilizamos la
misma metodologa para un grupo de tres desarrolladores que para un grupo de quince?
Ejemplos de
Una "caracterstica": ''caractersticas''
Ha de ser muy simple, y poco costosa de desarrollar, entre uno y Calcular el balance de situa-
cin.
diez das. Conceder un crdito a un
cliente de un banco.
Ha de aportarle valor al cliente y ser relevante para su negocio. Comprobar la validez del
Debe poderse expresar en trminos de <accin> <resultado> <obje- PIN de una tarjeta.
to>.
CC-BY-NC-ND PID_00184468 16 Introduccin a las metodologas giles
Esta metodologa parte de la idea de que las necesidades del cliente son siem- Ejemplo
pre cambiantes durante el desarrollo del proyecto (y posteriormente a su en-
La incertidumbre y el cambio
trega). Su impulsor es Jim Highsmith, la novedad de esta metodologa es que continuo son el estado natu-
en realidad noesunametodologadedesarrollodesoftware, sino un m- ral de los sistemas de informa-
cin, pero parece ser que mu-
todo (como un caballo de troya) a travs del cual inculcar una cultura adapta- chas organizaciones an no
son conscientes de ellos. La
tiva a la empresa, ya que su velocidad de adaptacin a los cambios marcar la idea de "finalizar" un proyecto
carece de sentido porque debe
diferencia entre una empresa prspera y una en declive. seguir adaptndose.
Ya hemos visto una serie de metodologas giles, nos hemos dejado en el tin-
tero muchas otras (lean development, pragmatic programming, etc.), pero an no
hemos visto cundo debemos utilizar una metodologa gil.
Cmo? No es siempre? Pues no. Como casi todo en esta vida, depende. De-
pende de cada proyecto en concreto, cada uno necesita de una metodologa
adecuada a l que le garantice el xito. Necesita que se adecue no slo a sus
funcionalidades a desarrollar, sino adems al equipo de desarrollo, a los recur-
sos disponibles, al plazo de entrega, al entorno socio-cultural, etc.
Aun as, existen algunas reglas bsicas, de "sentido comn", para discernir si
debemos aplicar una metodologa tradicional o una metodologa gil. Pero
recordad que son simplemente una gua, no un mandamiento.
4)Vuestroclientetienetiempoparadedicarloalproyecto? Si no vamos
a conseguir que nuestro cliente se involucre en la creacin de un sistema que
en el fondo es para l, nos ser imposible aplicar una metodologa gil. En
este caso lo mejor es utilizar una metodologa en cascada con un gran anlisis
inicial.
6)Culeslaculturaempresarialdelaempresaenlaquesevaadesarrollar
elproyecto? Las metodologas giles requieren de cierto ambiente "informal",
que fomente la comunicacin de igual a igual. Si la organizacin en la que se
quiere desarrollar el proyecto tiene un alto grado de ceremonia y jerarquas
estrictas, no deberais utilizar las metodologas giles.
CC-BY-NC-ND PID_00184468 18 Introduccin a las metodologas giles
7)Osapetece? Hay que saber si realmente se tienen ganas de probar una me-
todologa gil. Aprender cosas nuevas supone casi siempre un nuevo sacrificio.
Sin duda, la respuesta es no; siguen muy vivas y muy necesarias para grandes
proyectos con grandes equipos de desarrollo o para entornos crticos como
hemos visto antes, pero, sin embargo, ahora tienen una serie de competido-
res en el mbito de los proyectos ms manejables y que requieren de rpida
adaptacin y de resultados frecuentes.
Creada por Kent Beck, Ward Cunninghamn y Ron Jeffries a finales de los no-
venta, la programacin extrema ha pasado de ser una simple idea para un
nico proyecto a inundar todas las "factoras de software". Algunos la definen
como un movimiento "social" de los analistas del software hacia los hombres
y mujeres de negocios, de lo que debera ser el desarrollo de soluciones en
contraposicin a los legalismos de los contratos de desarrollo.
Lo que XP propugna es que esta curva ha perdido vigencia y que con una com-
binacin de buenas prcticas de programacin y tecnologa es posible lograr
que la curva no crezca siempre de forma exponencial.
XP pretende conseguir una curva de coste del cambio con crecimiento leve,
que en un inicio es ms costosa, pero que a lo largo del proyecto permiteto-
mardecisionesdedesarrollolomstardeposible sin que esa nueva decisin
de cambio implique un alto coste en el proyecto.
XPnoseolvidadelanecesariarentabilidaddelosproyectos, imprescin-
dible en una economa tan competitiva como la occidental. Por eso propone
una ecuacin de equilibrio entre el coste, el tiempo de desarrollo, la calidad
del software y el alcance de funcionalidades del mismo.
De estas cuatro variables, slo tres podrn ser fijadas por el cliente y/
o por el jefe de proyectos, la cuarta es responsabilidad del equipo de
desarrollo y se establecer en funcin de las otras tres.
"El cliente quiere estos requisitos satisfechos e implementados en dos meses; el equipo
es ste y no habr ms, y el software debe superar todos los test de calidad, ya que es
para una farmacutica".
Ejemplo
Tambin hay tareas que ya tienen todas sus variables fijadas de antemano por
su propia naturaleza y sobre las que no podemos hacer nada para modificar la
ecuacin. En este sentido hay una frase muy conocida que refleja esta situa-
cin: "nueve mujeres no pueden tener un hijo en un mes". Por mucho que se
intente, hay tareas que necesitan su tiempo y sus recursos para hacerlas.
Ejemplo
Otro ejemplo paradjico es el hecho de que en muchos casos aumentar la calidad acaba
derivando en una disminucin del tiempo de implementacin, sobre todo en aquellos
proyectos en los que se prev una gran cantidad de cambios durante el desarrollo. No
siempre bajar la calidad del software nos ahorrar costes.
Como podis ver, las relaciones entre estas cuatro variables no son siempre
evidentes, pero s hay una pregunta que nos haremos siempre con la metodo-
loga XP: Quvariableeslaquedebemossacrificar?
CC-BY-NC-ND PID_00184468 23 Introduccin a las metodologas giles
Distinguir entre los requisitos ms importantes y los que aportan menor valor
al negocio, dando prioridad a los primeros, nos ayudar a conseguir que el
proyecto tenga en cada instante tanta funcionalidad como sea posible. De esta
manera, cuando nos acerquemos al plazo de entrega nos aseguraremos de que
lo principal est implementado y que slo quedarn los detalles de los que
podemos prescindir en el caso de necesidad. El objetivo es siempre maximizar
el valor de negocio.
a otro proyecto futuro que quizs no llegue nunca. Por otro lado, nada nos
impide desarrollar un proyecto que nicamente se dedique a desarrollar pa-
trones que ms tarde se utilicen en proyecto XP.
d)Coraje. Coraje para vencer la frase ms tpica de los desarrolladores: "si fun-
ciona no lo toques". Con XP debemos tocar continuamente cosas que ya fun-
cionan, para mejorarlas. Hemos de cambiar esta frase por la de: "si funciona,
puedes mejorarlo". Y eso, os lo aseguramos, requiere de mucho valor y coraje.
Kent Beck, Ward Cunninghamn y Ron Jeffries tenan muy claro las prcticas
que les haban dado mejores resultados en sus proyectos. As que intentaron
aplicarlas todas juntas dando una vuelta de tuerca. se fue el embrin de la
metodologa XP. Crearon las doce prcticas que se refuerzan entre s para ob-
tener los mejores resultados. Las relaciones entre ellas las podemos ver en el
siguiente grfico que hemos adaptado del que propuso Kent Beck.
En el centro hemos situado las prcticas que ms resultados nos pueden dar
al adaptarlas; no son otras que el diseo simple, el test y la refactorizacin.
Incluso si no queremos tomar la totalidad de las prcticas de XP adoptando
estas tres a nuestra metodologa habitual, podemos tener una sustancial me-
jora en los resultados obtenidos.
CC-BY-NC-ND PID_00184468 25 Introduccin a las metodologas giles
"Debe ser simple para ser cierto. Si no es simple, probablemente no podremos descifrarlo."
Albert Einstein
Nada tan acertado como esta frase para ilustrar la idea de diseo simple de XP.
Si nuestro diseo es simple, cuando alguien lo vea lo entender, si es complejo,
probablemente no pueda descifrarlo.
2.3.2. Refactorizacin
As como en el Gnesis nos explican que en un principio todo era caos y luego
todo fue orden, cuando programamos generalmente pasa lo contrario. Inicial-
mente todo son lneas de cdigo bien ordenadas y comentadas, pero a medida
que vamos introduciendo cambios, el orden se va perdiendo hasta que aquello
deriva en una serie de lneas de cdigo caticas, llenas de cdigo comentado
de las diferentes pruebas y con comentarios obsoletos que no se corresponden
con la realidad de la funcionalidad.
Para mantener la curva del coste de cambio tan plana como sea posible, en la
metodologa XP se aplica larefactorizacin, que no es otra cosa que modificar
el cdigo para dejarlo en buen estado, volviendo a escribir las partes que sean
necesarias pero siempre desde un punto de vista global a la funcionalidad,
independientemente del cambio que hagamos.
CC-BY-NC-ND PID_00184468 26 Introduccin a las metodologas giles
Los comentarios son muy importantes para mantener esta claridad y sencillez.
2.3.3. Test
Para ello, los tests siempre se escriben antes que el cdigo a testear, nunca des-
pus. De esta manera estamos obligados a pensarporadelantado cules son
los problemas que podemos encontrar cuando usen nuestro cdigo, a poner-
nos en el lugar del usuario final, y este hecho de pensar por adelantado evita
muchos problemas, previnindonos sobre ellos en lugar de dejar que aparez-
can y luego responder sobre la marcha.
Es por esto por lo que el usuario final debe ayudar al programador a desarrollar
los tests de forma conjunta, ya que en estos tests estar implcita la funcio-
nalidad que queremos que tenga. Otro factor clave es que debe ser el mismo
programador el que desarrolle los tests, si no es as, perdemos la ventaja de
minimizacin de errores.
Los tests han de ser de tres tipos: tests de aceptacin, tests unitarios y tests de
integridad; y siempre han de estar automatizados.
Testunitario. Es creado por el programador para ver que todos los mto-
dos de la clase funcionan correctamente.
El equipo de desarrollo debe tener unas normas de codificacin comn, unas Web complementaria
nomenclaturas propias que todos los miembros del equipo puedan entender.
http://java.sun.com/docs/co-
Por ejemplo, si el programa ha de escribirse en Java, lo mejor es que todos deconv/index.html
utilicen las "Code Conventions for the Java Programming Language" de Sun
o una adaptacin propia de estas normas.
1) La primera letra ha de ser una "v" si es variable local o una "p" si nos viene
por parmetro de entrada o una "o" si es parmetro de entrada y salida.
If (pnc) { fp = ip;}
Frases como "que lo modifique quien lo hizo que seguro que lo entiende mejor"
o "quin ha tocado mi funcin?" dejan de tener sentido en XP, ya que el
diseo simple nos garantiza que ser fcilmente entendible, la refactorizacin
permite que cualquier miembro del equipo rehaga el cdigo para devolverle
su sencillez en el caso de que se haya complicado, los test automatizados nos
garantizan que no hemos modificado el comportamiento esperado del cdigo
con nuestra modificacin, y la codificacin con estndares nos da ese grado
de comprensin adicional.
grama. Obviamente, estos dos roles deben intercambiarse cada poco tiempo
entre los miembros de la pareja para abarcar todas las posibilidades tcticas
y estratgicas.
El hecho de que asignemos las tareas por parejas hace que el tiempo de apren-
dizaje se reduzca casi a cero, simplemente sustituyendo uno de los miembros
por otro nuevo. As pues, la rotacin de reas y de parejas nos garantiza que
podremos hacer un reparto ms equitativo del trabajo sin tener que depender
de una sola persona para un trabajo especfico.
''Efecto ttem''
XP necesita que el cliente final forme parte del equipo de desarrollo y est
ubicado fsicamente en el mismo sitio para que as se agilice el tiempo de res-
puesta y se puedan validar todas las funcionalidades lo antes posible.
En XP, el cliente siempre tiene que estar disponible para el resto del
equipo, formando parte de l y fomentando la comunicacin cara a
cara, que es la ms eficiente de las comunicaciones posibles.
CC-BY-NC-ND PID_00184468 31 Introduccin a las metodologas giles
Se deben desarrollar lo antes posible versiones pequeas del sistema, que aun-
que no tengan toda la funcionalidad, nos den una idea de cmo ha de ser la
entrega final y que nos sirvan para que el usuario final se vaya familiarizando
con el entorno y para que el equipo de desarrollo pueda ejecutar las pruebas
de integridad.
Las nuevas versiones tienen que ser tan pequeas como sean posibles,
pero tienen que aportar unnuevovalordenegocioparaelcliente.
Dar valor al negocio es lo que har que la visin final del cliente sea la mejor
posible.
Las doce prcticas haban dado por separado muy buenos resultados a Kent
Beck y compaa. Unificarlas en el ciclo de vida de una metodologa es lo que
dio origen a XP.
ste sera el desarrollo ideal de un proyecto XP. Para acercarnos a esto, estable-
cemos un ciclo de vida dividido en seis fases.
CiclodevidadeunproyectoXP
1) Fase de exploracin
2) Fase de planificacin
3) Fase de iteraciones
4) Fase de produccin
5) Fase de mantenimiento
6) Fase de muerte del proyecto
CC-BY-NC-ND PID_00184468 33 Introduccin a las metodologas giles
Todo comienza con las "historias de usuario". En esta fase los usuarios plan-
tean a grandes rasgos las funcionalidades que desean obtener del aplicativo.
Las historias de usuario tienen el mismo propsito que los casos de uso, salvo
en un punto crucial; las escriben los usuarios y no el analista. Han de ser des-
cripciones cortas y escritas en el lenguaje del usuario sin terminologa tcnica.
Estas historias son las que guiarn la creacin de los tests de aceptacin que
han de garantizar que dichas historias se han comprendido y se han imple-
mentado correctamente.
Prueba la tecnologa.
Se familiariza con la metodologa.
Se familiariza con las posibilidades de la arquitectura.
Realiza un prototipo que demuestre que la arquitectura es vlida para el
proyecto.
Una vez finalizadas las historias de usuario y el spike arquitectnico, se pasa a Ved tambin
desarrollar conjuntamente la metfora del negocio.
Como ya vimos en el apartado
"Metfora del negocio" de este
La metforadelnegocio: mdulo, esta metfora es una
de las 12 prcticas bsicas de
XP.
Debe servir a los desarrolladores para implementar las clases y objetos del
sistema.
El procedimiento es el siguiente:
Llegamos a esta fase al alcanzar la primera versin que el usuario final decida
que puede ponerse en produccin.
Paralelamente, se sigue con las iteraciones finales de proyecto, pero fijaos que
antes de que finalice ya estamos dando valor a la organizacin, el ROI (retorno
de la inversin) del proyecto empieza a generarse antes de que ste finalice
su versin final.
Esta fase se mantiene hasta que realizamos la ltima entrega, con la que fina-
lizamos el mbito del aplicativo y pasamos al mantenimiento del mismo.
Una vez el alcance del proyecto se ha conseguido, y tenemos todas las funcio-
nalidades en produccin, se revisan con el usuario aquellas nuevas historias
de usuario que se han producido tras la puesta en produccin del proyecto.
Estas nuevas funcionalidades se van incorporando segn su valor de negocio
y el presupuesto adicional del que se disponga.
Cada rol tiene unas funciones claras dentro de la metodologa XP. Cada per-
sona del equipo puede ejecutar uno o varios roles, o incluso cambiar de rol
durante las diferentes fases del proyecto.
Son muchas las extensiones que se han hecho de los roles de la propuesta ori-
ginal de Beck, pero los roles que permanecen siempre en cualquier implemen-
tacin de la metodologa XP son los siguientes:
Programador:
Cliente:
Encargadodepruebas(tester):
CC-BY-NC-ND PID_00184468 38 Introduccin a las metodologas giles
Encargadodeseguimiento(tracker):
Entrenador(coach):
Consultor:
Gestor(boss):
A este esquema final sera conveniente aadirle una sala de desconexin don-
de los programadores fatigados pudieran hacer un descanso, tomarse un re-
fresco, picar algo o simplemente mirar por la ventana.
Otro punto importante es que el cliente debe estar cerca y disponible pero
debe tener un entorno que le permita desarrollar su trabajo habitual. Por esta
razn, en el esquema se encuentra un poco apartado del grueso del equipo.
d) XP se basa en las pruebas y los tests, pero en un "entorno real", con la presin
que suelen sufrir los proyectos de desarrollo, lo primero que se reduce a su
mnima expresin son las pruebas. XP no es aplicable a un entorno de una
organizacin real.
Como podemos ver, argumentos no faltan, saber si son slidos o no, depende
ya de vuestro espritu crtico. Pero eso s, recordad que, antes de criticar o alabar
esta metodologa de proyectos, quizs sera conveniente que empezramos a
aplicarla en algn proyecto poco importante, para as podernos formar una
opinin fundamentada en nuestra experiencia.
2.8. Un ejemplo de XP
El cliente se pone en contacto con nosotros y nos comunica que necesita crear
una web de su tienda de mascotas, para lo que cuenta con un presupuesto
limitado. El equipo de desarrollo lo compondrn una o dos personas, que rea-
lizarn todos los roles dentro de la metodologa XP.
Los dos miembros del equipo de desarrollo estn familiarizados con las herra- Webs complementarias
mientas OpenSource y tras hacer varias pruebas, eligen las siguientes:
Para ampliar informacin
sobre las herramientas Ope-
Ant. Herramienta OpenSource de codificacin y compilacin de progra- nSource, podis ver: http://
ant.apache.org
mas Java. http://www.junit.org
http://tomcat.apache.org/
Junit. Herramienta OpenSource de creacin y ejecucin automatizada de http://www.jboss.org/
Men. Son las diferentes opciones que tendremos a la hora de ver la infor-
macin de la tienda. Sera como las diferentes puertas de acceso a la tienda
normal.
La planificacin es la siguiente:
Iteracin 1
Historia de usuario 1: Presencia en Internet (10 jornadas)
Primer paso a produccin
Iteracin 2
Historia de usuario 2: Catlogo de productos con las secciones ms impor-
tantes (10 jornadas)
Iteracin 3
Historia de usuario 2: Catlogo de productos con las secciones restantes
(10 jornadas)
Segundo paso a produccin
Iteracin 4
Historia de usuario 6: Productos vinculados (4 jornadas)
Historia de usuario 3: Pedidos de productos (6 jornadas)
Iteracin 5
Historia de usuario 7: Ofertas y promociones (10 jornadas)
Tercer paso a produccin
Iteracin 6
Historia de usuario 4: Carrito de la compra (10 jornadas)
Cuarto paso a produccin
Es decir, seis iteraciones de dos semanas cada una, con cuatro pases a produc-
cin. En esta planificacin a partir de la segunda semana de inicio del proyec-
to ya estaremos dando valor al negocio, al haber implementado la historia de
usuario 1 que era la ms importante en la priorizacin del cliente.
/* Clase producto */
/* Versin 1.0 */
package uoc.tienda;
public abstract class Producto {
public void setPrecio(double precio) {this.precio = precio; }
public double getPrecio(){ return precio }
protected double precio;
}>
La primera letra ha de ser una "v" si es variable local o una "p" si nos viene
por parmetro de entrada o una "o" si es parmetro de entrada y salida.
/* Clase producto */
/* Versin 1.1 */
package uoc.tienda;
Por supuesto esto no se queda aqu, porque recordemos que uno de los dos
programadores ha de estar pensando en estratgico, as que ve de forma clara
que todos los objetos del proyecto tendrn tres propiedades fijas: Identificador,
Nombre y Descripcin, e incita a crear un clase con estas tres propiedades de
las que herede el resto.
/* Clase producto */
/* Versin 1.2 */
package uoc.tienda;
/* Propiedad Identificador */
public void setIdentificador(int pnIdentificador)
throws Exception { this.vnIdentificador =
pnIdentificador; }
public int getIdentificador(){ return vnIdentificador; }
/* Propiedad Nombre*/
public void setNombre(String psNombre){ this.vsNombre = psNombre; }
public String getNombre(){ return vsNombre; }
/* Propiedad Descripcion*/
public void setDescripcion(String psDescripcion)
{ this.vsDescripcion = psDescripcion; }
public String getDescripcion(){ return vsDescripcion; }
No debemos olvidarnos de hacer los tests unitarios para cada uno de los ob- Web complementaria
jetos. Para ello, utilizaremos las clases de JUnit, en especial la clase abstracta
La jerarqua de la clase Assert
Assert que nos permite gran variedad de comprobaciones, y de su implemen- la podemos encontrar en:
tacin en la clase TestCase. Otra clase interesante es TestSuite, que nos permite http://junit.sourceforge.net/
javadoc/org/junit/packa-
automatizar una gran cantidad de tests unitarios. ge-tree.html
Siguiendo con el ejemplo, la primera versin del test unitario de la clase Pro-
ducto sera la siguiente:
CC-BY-NC-ND PID_00184468 47 Introduccin a las metodologas giles
package uoc.tienda.test;
import.uoc.tienda.Producto;
import junit.framework.TestCase;
La ultima parte de esta primera fase son los testsdeaceptacin creados por
el cliente ayudado por el miembro del equipo con el rol de tester. Si se pasan
con xito, pondremos esta iteracin en produccin. En nuestro caso, los tests
de aceptacin deberan reflejar las necesidades de la Historia de usuario 1:
Presencia en Internet.
Iteracin 1
Finalizada
Iteracin 2
Historia de usuario 2: Catlogo de productos con las secciones ms impor-
tantes (8 jornadas)
CC-BY-NC-ND PID_00184468 48 Introduccin a las metodologas giles
Iteracin 3
Historia de usuario 2: Catlogo de productos con las secciones restantes.
Parte 2 (6 jornadas)
Historia de usuario 6: Productos vinculados (4 jornadas)
Segundo paso a produccin
Iteracin 4
Historia de usuario 3: Pedidos de productos (6 jornadas)
Historia de usuario 7: Ofertas y promociones. Parte 1 (4 jornadas)
Iteracin 5
Historia de usuario 7: Ofertas y promociones. Parte 2 (6 jornadas)
Tercer paso a produccin
Iteracin 6
Historia de usuario 4: Carrito de la compra (10 jornadas)
Cuarto paso a produccin
Nos queda ahora una iteracin 5 con slo 6 jornadas y con un hueco para 4
jornadas adicionales. Despus de hablar con el cliente, decidimos incluir en ese
hueco una de las funcionalidades que haban sido descartadas, la historia de
usuario 8: Tarjetas cliente (4 jornadas). As, la iteracin 5 queda de la siguiente
manera.
Iteracin 5
Historia de usuario 7: Ofertas y promociones. Parte 2 (6 jornadas)
Historia de usuario 8: Tarjetas cliente (4 jornadas)
Tercer paso a produccin
Durante cinco aos la web funcion hasta que la empresa fue absorbida por
una multinacional de la venta de mascotas.
CC-BY-NC-ND PID_00184468 50 Introduccin a las metodologas giles
Agile Modeling nos permite realizar modelos que se adaptan a las meto- Web complementaria
dologas aqu vistas. El xito le viene dado por su gran adaptabilidad, ya
Agile Modeling (http://
que puede ser usada tanto en metodologas RUP, como en XP o cualquier www.agilemodeling.com)
otra metodologa de desarrollo de software. pretende ser "una gua para el
arte de modelar ", nunca para
la ciencia de modelar.
Agile Data Method nos ayuda en la creacin y mantenimiento de las bases
de datos que dan soporte a los proyectos giles en los que el cambio es
Web complementaria
constante y a veces traumtico para los administradores de las mismas.
http://www.agiledata.org/
Resumen
En este mdulo hemos visto cmo cada proyecto (o parte de l) puede realizar-
se con una metodologa diferente. Es responsabilidad nuestra elegir la mejor
adaptada a cada situacin en concreto. Muchas son las metodologas giles,
pero hemos visto que todas tienen caractersticas y objetivos similares. Unas
hacen ms hincapi en la comunicacin humana de los proyectos, otras en
dar valor al negocio lo antes posible, otras en asumir que todo es cambiante,
pero todas son tiles en determinados proyectos, cubren una necesidad o ca-
rencia que se ha detectado en las metodologas de desarrollo de aplicaciones.
Nos hemos asomado a los diferentes mbitos en los que la agilidad est irrum-
piendo con fuerza, siendo el ms prometedor de ellos el Agile Modeling. Co-
nocer todos los mbitos y todas las propuestas nos da un punto de referencia
para la reflexin, nos permite saber en qu pueden fallar las metodologas y
as poder aplicarlas con mayor criterio.
Actividades
1. Describid tres proyectos en los que trabajarais con metodologas giles. Elegid cul de ellas
utilizarais y comentad en qu fundamentarais esa decisin.
2. De los tres proyectos de la actividad anterior, elegid uno para desarrollarlo mediante XP.
Disead las historias de usuario, la metfora del negocio y planificad las fases.
3. Cread una metodologa propia que se adapte al manifiesto gil y explicad cmo la aplica-
rais en otro de los proyectos de la primera actividad.
Ejercicios de autoevaluacin
1. Las metodologas giles son siempre la mejor opcin para la mayora de proyectos?
4. De las doce prcticas de XP, cules tienen relacin con una metodologa de equipo? Cu-
les son las tres ms importantes?
Solucionario
Ejercicios de autoevaluacin
1. Las metodologas giles no son la gran solucin a todos los problemas del desarrollo de
aplicaciones, ni tan siquiera se pueden aplicar en todos los proyectos, pero s que nos aportan
otro punto de vista de cmo se pueden llegar a hacer las cosas, de forma ms rpida, ms
adaptable y sin tener que perder la rigurosidad de las metodologas clsicas.
Con un equipo muy grande y/o formado mayoritariamente por gente sin experiencia.
Si el cliente final no est involucrado y/o impone barreras de comunicacin.
Si los requisitos son apenas cambiantes.
Si es un proyecto crtico.
Si es un proyecto demasiado grande.
Si no os apetece probar una metodologa gil.
4. Las prcticas que tienen relacin con la parte metodolgica de trabajo en equipo son:
propiedad colectiva del cdigo, programacin en parejas, integracin continua, 40 horas
semanales y metfora del negocio.
Las tres ms importantes de las doce prcticas son el diseo simple, el test y la refactoriza-
cin. Incluso, si no queremos adoptar la totalidad de las prcticas de XP, adoptando estas
tres a nuestra metodologa habitual podemos tener una sustancial mejora en los resultados
obtenidos.
Prueba la tecnologa.
Se familiariza con la metodologa.
Se familiariza con las posibilidades de la arquitectura.
Realiza un prototipo que demuestre que la arquitectura es vlida para el proyecto.
Glosario
caracterstica fFuncionalidad simple y poco costosa de desarrollar que aporta valor al
cliente del software a utilizar.
en feature
Manifiesto gil m Manifiesto que recoge los valores que deberan cumplir las metodolo-
gas de desarrollo de software. Fue firmado por Kent Beck, Mike Beedle, Arie van Bennekum,
Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, An-
drew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwa-
ber, Jeff Sutherland y Dave Thomas.
metfora del negocio f Historia comn compartida por el usuario y el equipo de desa-
rrollo que describe cmo deben comportarse las diferentes partes del sistema que se quiere
implementar.
refactorizacin f Modificar el cdigo para dejarlo en buen estado, volviendo a escribir las
partes que sean necesarias, pero siempre desde un punto de vista global a la funcionalidad
independientemente del cambio que hagamos.
test de aceptacin m Test creado conjuntamente con el cliente final que debe reflejar las
necesidades funcionales del primero.
test de integridad m Test creado por el equipo de desarrollo para probar que todo el
conjunto funciona correctamente con la nueva modificacin.
test unitario m Test creado por el programador para ver que todos los mtodos de la clase
funcionan correctamente.
CC-BY-NC-ND PID_00184468 56 Introduccin a las metodologas giles
Bibliografa
Beck, K. (2000). Extreme Programming Explained: Embrace Change. Boston: Addison-Wesley.
Cans, J. H.; Letelier, P.; Penads, M. C. (2004). Metodologas giles en el desarrollo del
software. Valencia: Universidad de Valencia.
Cronin, G. (2003). eXtreme Solo: A Case Study in Single Developer eXtreme Programming. Auc-
kland: University of Auckland.
Hightower, R; Lesiecki, N. (2002). Java Tools for Extreme Programming. Nueva York: Wiley
& Sons Inc.
Reynoso, C. (2004). Mtodos heterodoxos en desarrollo del software. Buenos Aires: Universidad
de Buenos Aires.
Salo, J. H.; Abrahamson, P.; Ronkainen, J.; Warsta, J. (2002). Agile Software Develop-
ment Methods - Review And Analysis. Universidad de Oulu: VTT Publications.
Schwaber, K.; Beedle, M. (2002). Agile Software Development with Scrum. Nueva Jersey:
Prentice Hall.
Wallace, D.; Raggett, I.; Aufgang, J. (2002). Extreme Programming for Web Projects. Bos-
ton: Addison Wesley.