Desarrollo Basado en Conocimiento Con Practicas Agiles
Desarrollo Basado en Conocimiento Con Practicas Agiles
Desarrollo Basado en Conocimiento Con Practicas Agiles
FACULTAD DE INFORMÁTICA
Desarrollo basado en
conocimiento siguiendo
prácticas ágiles
Trabajo de tesis
presentado para obtener el grado de
Magíster en Ingeniería de Software
Julio de 2015
A mi madre, Graciela
AGRADECIMIENTOS
Este trabajo sólo fue posible gracias al aporte, directo o indirecto de muchas personas. A
“todos” ellos quiero agradecer, especialmente:
• A mi Director por su tiempo dedicado, constante guía y aliento para seguir adelante.
INDICE
1. INTRODUCCIÓN .................................................................................................................... 1
1.1 MOTIVACIÓN .................................................................................................................. 1
1.2 OBJETIVO GENERAL..................................................................................................... 1
1.1.1 Metodologías ágiles ................................................................................................. 1
1.1.2 Bases de Datos del Conocimiento ........................................................................... 2
1.3 PUBLICACIONES Y TRABAJOS RELACIONADOS ...................................................... 2
1.4 CONTENIDOS ................................................................................................................ 3
2 METODOLOGÍAS ÁGILES ................................................................................................... 4
2.1 GENERALIDADES SOBRE LAS METODOLOGÍAS ÁGILES ........................................ 4
2.1.1 Inicios de las Metodologías ágiles ........................................................................... 4
2.1.2 El manifiesto ágil ...................................................................................................... 5
2.1.3 Definición de Metodologías Ágiles ........................................................................... 7
2.1.4 Metodologías a describir .......................................................................................... 9
2.2 PROGRAMACIÓN EXTREMA (XP) .............................................................................. 15
2.2.1 Introducción............................................................................................................ 15
2.2.2 Valores y Principios de XP .................................................................................... 15
2.2.3 Instrumentos usados en XP ................................................................................... 16
2.2.4 Roles XP ................................................................................................................ 17
2.2.5 El Proceso de desarrollo en XP ............................................................................. 18
2.2.6 Prácticas XP........................................................................................................... 20
2.2.7 Conclusiones.......................................................................................................... 23
2.3 SCRUM ......................................................................................................................... 24
2.3.1 Introducción............................................................................................................ 24
2.3.2 Principales elementos ............................................................................................ 24
2.3.3 Roles ...................................................................................................................... 25
2.3.4 El proceso Scrum ................................................................................................... 25
2.3.5 Comenzando el próximo Sprint.............................................................................. 31
2.3.6 Conclusiones.......................................................................................................... 31
2.4 KANBAN ........................................................................................................................ 33
2.4.1 Introducción............................................................................................................ 33
2.4.2 Kanban ................................................................................................................... 34
2.4.3 Sistema Kanban ..................................................................................................... 35
2.4.4 Conclusiones.......................................................................................................... 40
2.5 OPENUP ....................................................................................................................... 41
2.5.1 ¿Qué es Open UP? ............................................................................................... 41
2.5.2 Visión general de OpenUP .................................................................................... 42
2.5.3 Principios OpenUP ................................................................................................. 43
2.5.4 Roles ...................................................................................................................... 44
2.5.5 Disciplinas OpenUP ............................................................................................... 45
2.5.6 Artefactos ............................................................................................................... 47
2.5.7 Ciclo de vida de la iteración ................................................................................... 49
2.5.8 Microincrementos ................................................................................................... 50
2.5.9 Ciclo de vida del desarrollo de software mediante OpenUP ................................. 50
2.5.10 Como comenzar ..................................................................................................... 53
2.5.11 Conclusiones.......................................................................................................... 54
2.6 CRYSTAL CLEAR ......................................................................................................... 55
2.6.1 Introducción............................................................................................................ 55
2.6.2 Roles en Crystal Clear ........................................................................................... 59
2.6.3 Los productos de trabajo ....................................................................................... 60
2.6.4 Proceso Crystal Clear ............................................................................................ 61
2.6.5 Conclusiones.......................................................................................................... 64
2.7 TEST DRIVEN DEVELOPMENT) .......................................................................................... 65
2.7.1 Procesos. ............................................................................................................... 65
2.7.2 Principios de TDD .................................................................................................. 67
2.7.3 Roles y responsabilidades. .................................................................................... 67
2.7.4 Prácticas. ............................................................................................................... 67
INDICE DE FIGURAS
Figura 2.1.1. El espectro de la planificación [Bohem 2002] .......................................................................... 8
Figura 2.1.3. Mejoras obtenidas por implementar una metodología ágil [VisionOne]................................. 11
Figura 2.1.4. Metodologías y prácticas ágiles utilizadas [VisionOne] ......................................................... 12
Figura 2.1.5. Técnicas ágiles empleadas [VisionOne]................................................................................ 12
Figura 2.1.6. Causas de fracaso en los proyectos ágiles [VisionOne]........................................................ 13
Figura 2.1.7. Preocupaciones sobre adoptar desarrollo ágil [VisionOne] ................................................... 13
Figura 2.1.8. Preferencias y usos de herramientas ágiles [VisionOne] ...................................................... 14
Figura 2.2.1. Proceso XP – Ciclos de planificación y retroalimentación [XP web] ..................................... 20
Figura 2.2.2. Modelo propuesto para una prueba de aceptación [Canós 2003] ......................................... 21
Figura 2.3.1. Ciclo de vida de un proyecto Scrum [Parasuraman 2011] .................................................... 26
Figura 2.3.2. Pre–sprint o Planificación del sprint [PalacioBañeres 2008] ................................................. 27
Figura 2.3.3: Ejemplo de ScrumBoard [Parasuraman 2011] ...................................................................... 28
Figura 2.3.4 Progreso en un sprint [Cockburn web] ................................................................................... 29
Figura 2.3.5. Actualizaciones diarias de Trabajo Restante en la Pila del Sprint [DeemerEs] ..................... 29
Figura 2.3.6. Gráfica de Trabajo Restante del Sprint [DeemerEs] ............................................................. 30
Figura 2.3.7: Scrum – Ficha sinóptica [PalacioBañeres 2008] ................................................................... 32
Figura 2.4.1: Tarjeta Kanban como se usa en Toyota [Modezki 2011] ...................................................... 35
Figura 2.4.2: Flujo de Valor [Modezki 2011] ............................................................................................... 35
Figura 2.4.3: Empujar vs. Arrastrar [Modezki 2011] ................................................................................... 36
Figura 2.4.4: Tablero Kanban [Modezki 2011] ........................................................................................... 38
Figura 2.5.1: Capas de OpenUP: micro incrementos, ciclo de vida de la iteración y del proyecto [OPENUP
web] .................................................................................................................................................... 42
Figura 2.5.2: Roles principales en OpenUp y su interacción [OPENUP web] ............................................ 44
Figura 2.5.3: Disciplinas de Proceso Unificado [Baudino] .......................................................................... 45
Figura 2.5.4: Énfasis dentro de una iteración. [OPENUP web] .................................................................. 49
Figura 2.5.5. Ciclo de vida de OpenUP [OPENUP web] ............................................................................ 51
Figura 2.5.6: Reducción de Riesgo (curva roja) y creación de valor (curva verde) durante el ciclo de vida
del proyecto.[OPENUP web] .............................................................................................................. 52
Figura 2.6.1: Cobertura de diferentes tipos de proyectos dentro de Crystal. [Cockburn 2004] .................. 57
Figura 2.6.2: Iteración y ciclos de entrega dentro de un proyecto [Cockburn 2004] ................................... 61
Figura 2.6.3: Un ciclo de iteración, integrando varias veces por día [Cockburn 2004] ............................... 62
Figura 2.6.4: Un ciclo de iteración con varios días por integración [Cockburn 2004]. ................................ 62
Figura 2.6.5: Los ciclos expandidos para mostrar actividades específicas. [Cockburn 2004] .................... 62
Figura 2.7.1: Proceso simplificado TDD [Kirrily] ......................................................................................... 66
Figura 2.7.2: Proceso de TFD [AgileData web] .......................................................................................... 66
Figura 2.8.1. Acrónimo de DSDM. Elaborado según [Highsmith] ............................................................... 69
Figura 2.8.2: Variables de un Proyecto [DSDM Consortium] ..................................................................... 72
Figura 2.8.3. Roles en DSDM [Caine web] ................................................................................................. 74
Figura 2.8.4: Fases de Atern [Caine web] .................................................................................................. 76
Figura 2.8.5: Ejemplos de adaptaciones de DSDM Atern a un proyecto específico [DSDM web] ............. 77
Figura 2.8.6: Productos Atern [DSDM web] ............................................................................................... 78
Figura 3.1.1: Metodología Tradicional [Genexus web] ............................................................................... 81
Figura 3.1.2: Proceso de Ingeniería Inversa [Gonda 2007] ........................................................................ 84
Figura 3.1.3: Base de conocimiento [Gonda 2007] .................................................................................... 86
Figura 3.1.4: Base de Conocimiento [Gonda 2007].................................................................................... 88
Figura 3.1.6: Objetos Genexus................................................................................................................... 89
Figura 3.1.7: Ciclos Diseño Prototipación y Diseño Producción [Artech 2008] ......................................... 91
Figura 4.2.1. Tipo de organizaciones que utilizan desarrollo basado en conocimiento ............................ 100
Figura 4.2.3. Tiempo de empleo de Desarrollo basado en conocimiento................................................. 102
Figura 4.2.4. Cantidad de proyectos siguiendo Desarrollo basado en conocimiento ............................... 102
Figura 4.2.5. Proporción de proyectos desarrollados para terceros ......................................................... 103
Figura 4.2.6. Cantidad de personal involucrado en el sector de desarrollo. ............................................. 103
Figura 4.2.7. Existencia de varios equipos dentro del sector de desarrollo.............................................. 104
Figura 4.2.8. Cantidad de personas por equipo dentro del sector de desarrollo. ..................................... 104
Figura 4.2.9. Personal que comparte horario de trabajo dentro del sector de desarrollo. ........................ 105
Figura 4.2.10. Personal que comparte lugar de trabajo dentro del sector de desarrollo. ......................... 105
Figura 4.2.11. Formas de suplir la falta de un horario y lugar común de trabajo. ..................................... 106
Figura 4.2.12. Cantidad de proyectos por líder de proyecto..................................................................... 107
Figura 4.2.13. Existencia de un procedimiento predefinido para el desarrollo. ........................................ 109
Figura 4.2.14. Existencia de un procedimiento predefinido para el desarrollo, discriminado por tipo de
organización. .................................................................................................................................... 109
Figura 4.2.15. Adaptabilidad del procedimiento de desarrollo.................................................................. 110
Figura 4.2.16. Responsable de definir el procedimiento de desarrollo. .................................................... 111
Figura 4.2.17. Responsable de definir el procedimiento de desarrollo por tipo de organización. ............. 111
INDICE DE TABLAS
Tabla 2.5.1: Mapping between OpenUP principles and Agile Manifesto [Baudino] .................................... 44
Tabla 2.5.2: Artefactos de OpenUP (armado con información de [OPENUP web]) ................................... 46
Tabla 2.5.3: Artefactos de OpenUP (armado con información de [OPENUP web]) ................................... 48
Tabla 2.6.1: Roles y productos en Crystal (basado en [Cockburn 2004]) .................................................. 61
Tabla 2.8.1. Principios de DSDM Atern. Traducido de [Caine web] ........................................................... 73
Tabla 2.8.2: Roles en DSDM Atern [DSDM web] ....................................................................................... 75
Tabla 2.8.3 Fases de DSDM Atern. Traducido de [DSDM web] ................................................................. 76
Tabla 3.1.1: Ambientes y lenguajes soportados por Genexus [Genexus web] .......................................... 93
Tabla 3.1.2: Suite de herramientas Genexus [Genexus web] .................................................................... 94
Tabla 4.3.1: Reuniones propuestas para la etapa de Inicio ágil ............................................................... 146
Tabla 4.3.2: Reuniones propuestas para la etapa de Producción ............................................................ 151
Tabla 4.3.3: Reuniones propuestas para la etapa de Ritual de finalización ............................................. 152
Tabla 4.3.6: Reuniones propuestas por etapa ......................................................................................... 156
Tabla 4.4.1: Historias de usuarios iniciales del proyecto de la librería ..................................................... 166
Tabla 4.4.2: Listado de historias de usuario iniciales del proyecto del gimnasio ...................................... 169
Tabla 4.4.3: Listado de Historias de usuario del proyecto del gimnasio nuevas ...................................... 172
1. INTRODUCCIÓN
El presente trabajo tiene como objetivo poder elaborar una propuesta de prácticas ágiles para
el desarrollo basado en Conocimiento. No se plantea realizar trabajo experimental, sino un
análisis de las metodologías o procesos de desarrollo utilizadas en empresas salteñas
(públicas y privadas) que trabajan con desarrollo basado en Conocimiento para posteriormente
elaborar una propuesta de prácticas ágiles para desarrollo de software basado en
conocimiento.
1.1 MOTIVACIÓN
En este trabajo se combinan dos conceptos novedosos, fundamentalmente para Salta Capital,
respecto a la forma de encarar un desarrollo de software, tanto en el ámbito público como
privado: las metodologías ágiles y el desarrollo basado en conocimiento (o también llamadas
bases de datos del conocimiento). Si bien en la actualidad es más frecuente escuchar hablar
de metodologías ágiles, no es común encontrar en la ciudad de Salta una empresa pública o
privada que aplique concretamente alguna de ellas. En esta ciudad recién se está comenzando
a tratar de incorporar algunas de las prácticas que estas metodologías proponen, y capacitar al
personal en estas metodologías (mayormente en SCRUM). Además existen varias empresas
públicas y privadas que están trabajando con bases de datos del conocimiento sin una
metodología de desarrollo bien definida, tratando de definir un proceso de desarrollo poco
burocrático que podría verse enriquecido si se incorporar un marco de trabajo como el que
proponen las metodologías ágiles.
Por todo lo antes expuesto, se considera importante poder investigar diferentes propuestas que
plantean autores de metodologías ágiles y profundizar en el conocimiento de las bases de
datos del conocimiento. También es importante poder analizar el uso de bases del
conocimiento en la ciudad de Salta, por parte de empresas locales salteñas públicas y
privadas, para poder armar un mapa de la situación actual de cómo se está trabajando y ver si
es posible sugerir una serie de prácticas ágiles que acompañen este tipo de desarrollos. La
virtud más importante de lo que se pudiera obtener es la posibilidad de combinar dos
metodologías novedosas y que a simple vista no son combinables.
Las metodologías ágiles conllevan una filosofía de desarrollo de software liviana, debido a que
hace uso de modelos ágiles. Se considera que un modelo es ágil o liviano cuando se emplea
para su construcción una herramienta o técnica sencilla, que apunta a desarrollar un modelo
aceptablemente bueno y suficiente en lugar de un modelo perfecto y complejo.
Existen actualmente una serie de metodologías que responden a las características de las
metodologías ágiles y cada vez están teniendo más adeptos. Aunque los creadores e
impulsores de las metodologías ágiles más populares han suscrito el manifiesto ágil y coinciden
Los sistemas basados en conocimiento (SBC) tratan de mantener una gran cantidad de
conocimiento y aportan mecanismos para manejarlo. La representación es declarativa: se
separa el conocimiento del dominio de los mecanismos de deducción. Esto permite reutilizar
tanto la Base del Conocimiento como los mecanismos de razonamiento [Alonso 2004]. En este
trabajo de tesis, el paradigma de desarrollo basado en conocimiento al que se hace referencia,
consta de dos partes principales: la Base de conocimiento y el motor de inferencia o proceso
de razonamiento, donde el objetivo es obtener por inferencia la base de datos y los programas
para manejar los objetos descritos por el usuario. Pero, no busca emular capacidades de un
dominio experto. Este paradigma está orientado más a los sistemas de gestión. Permiten partir
de la descripción de las visiones de todos los usuarios del sistema a desarrollar y genera la
base de datos y los programas necesarios para satisfacer dichas visiones.
Actualmente también se está dirigiendo dos Tesinas de grado para la Licenciatura en Análisis
de Sistemas en la Facultad de Ciencias Exactas de la UNSa sobre desarrollo de aplicaciones
específicas aplicando Desarrollo basado en Conocimiento siguiendo prácticas ágiles.
1.4 CONTENIDOS
El trabajo de tesis se divide en cinco partes principales: Introducción, Metodologías Ágiles,
Desarrollo Basado en Conocimiento, Propuesta de Prácticas Ágiles y Conclusiones
Metodologías Ágiles presenta un marco teórico de las Metodologías ágiles en general, su razón
de ser, el manifiesto ágil para, posteriormente, adentrarse en diferentes metodologías
investigadas donde se exponen sus fundamentos.
Propuesta de Prácticas Ágiles presenta en primer lugar un estudio de campo según datos
recopilados de encuestas y entrevistas realizadas a organizaciones del sector público como
privado que trabajan con Desarrollo Basado en Conocimiento dentro del ámbito de Salta
Capital y se realiza un análisis de campo de la situación. Luego se proponen ciertas prácticas
ágiles para el desarrollo basado en conocimiento, teniendo en cuenta el estudio de campo
obtenido.
2 METODOLOGÍAS ÁGILES
“Desde hace unos pocos años ha habido un interés creciente en las metodologías ágiles
(léase "livianas"). Caracterizadas alternativamente como antídoto a la burocracia, han suscitado
interés en el panorama del software.” Martin Fowler [Fowler 2003a]
Se ha sobrevivido con este estilo de desarrollo por mucho tiempo, pero también surgió una
alternativa desde hace muchos años: emplear una Metodología de Desarrollo Ingenieril. Las
metodologías imponen un proceso disciplinado sobre el desarrollo de software con el fin de
hacerlo más predecible y eficiente. Lo hacen, desarrollando un proceso detallado con un fuerte
énfasis en planificar inspirado por otras disciplinas de la ingeniería. Dichos procesos definen
artefactos de desarrollo, documentación a producir, herramientas y notaciones a ser utilizadas,
y actividades a realizar y su orden de ejecución, entre otras definiciones. Como resultado, los
procesos generan gran cantidad de documentación con el objetivo de facilitar compartir el
conocimiento entre los integrantes del equipo de trabajo. Si bien existen varios procesos de
desarrollo – Proceso Unificado [Jacobson 1999], Proceso V [IABG web], etc., la mayoría de
estos procesos se derivan del Modelo de Cascada propuesto por Boehm [Bohem 1976]. Las
metodologías ingenieriles, denominadas tradicionales, han estado presentes durante mucho
tiempo y han demostrado ser efectivas, particularmente en lo que respecta a la administración
de recursos a utilizar y a la planificación de los tiempos de desarrollo, en proyectos de gran
tamaño con requerimientos estables. La crítica más frecuente a estas metodologías es que son
burocráticas. Fowler afirma que hay tanto que hacer para seguir la metodología que el ritmo
entero del desarrollo se retarda.
Sin embargo, debido a entornos comerciales más competitivos, conducidos por la rapidez para
producir y entregar servicios [Ridderstrale 2000], el enfoque propuesto por estas metodologías
tradicionales o burocráticas no resulta el más adecuado. Usualmente, estos nuevos entornos
se caracterizan por el desarrollo de proyectos donde los requerimientos del sistema son
desconocidos, inestables o muy cambiantes, los tiempos de desarrollo se deben reducir
drásticamente, y al mismo tiempo, se espera la producción de un producto de alta calidad, que
a su vez garantice mínimo riesgo ante la necesidad de introducir cambios a los requerimientos.
Por todo lo mencionado puede verse fácilmente que este nuevo concepto dentro de la
ingeniería de software, denominado modelado ágil de sistemas o metodologías ágiles, se trata
de una filosofía de desarrollo liviana, debido a que hace uso de modelos ágiles. Logró adeptos,
inició una corriente filosófica dentro del concierto de metodologías para el desarrollo de
sistemas de software, conformó un corpus documental de sus principios y de sus prácticas y
obtuvo éxitos resonantes en proyectos de envergadura. [Giro 2002] [Ferrer 2003] [Canós 2003]
La razón de la reunión fue ver si había algo en común entre las diferentes metodologías
livianas de ese momento: Adaptative Software Development, XP, Scrum, Crystal, FDD, DADM
y “Pragmatic Programming”. Tal como lo aclara Cockburn [Cockburn 2007], ninguno estaba
interesado en combinar las prácticas para crear una Metodología Liviana Unificada (Unified
Light Methodology – ULM). El objetivo de la reunión era discutir los valores y principios que
facilitarían desarrollar software más rápidamente y respondiendo a los cambios que surjan a lo
largo del proyecto. La idea era ofrecer una alternativa a los procesos de desarrollo
tradicionales, caracterizados por su rigidez y dirigidos por la documentación que se genera en
cada etapa.
En esta reunión se decidió adoptar el término Ágil y como resultado se obtuvo un documento
conocido como el Manifiesto Ágil [ManifiestoAgil web]. El Manifiesto Ágil incluye cuatro
postulados y una serie de principios asociados. Tal como hace observar Alistair CockBurn
[Cockburn 2007], el propio manifiesto comienza diciendo que se están sacando a la luz mejores
formas de desarrollar software, no las están inventando. Además, que el resultado se obtuvo
de la experiencia directa y la reflexión sobre la experiencia y que se reconoce valor a las
herramientas, procesos, documentación, contratos y planes, si bien ponen mayor énfasis en
otros valores. Por esto es que las metodologías ágiles cambian significativamente algunos de
los énfasis de las metodologías tradicionales, lo que puede apreciarse en los postulados del
manifiesto ágil.
1) Valorar al individuo y a las interacciones del equipo de desarrollo por encima del proceso y
las herramientas. Este postulado enuncia que las personas son componentes primordiales en
cualquier desarrollo [Cockburn 1999]. Tres premisas sustentan este postulado:
Se presta atención a las personas en el equipo como opuesto a los roles en un diagrama de
proceso, donde las personas son reemplazables. Y por otro lado se presta atención a la
interacción de los individuos. Es preferible un proceso no documentado con buenas
interacciones que un proceso bien documentado con interacciones hostiles [Cockburn 2007]
2) Valorar el desarrollo de software que funcione por sobre una documentación exhaustiva. El
postulado se basa en la premisa que los documentos no pueden sustituir ni ofrecer el valor
agregado que se logra con la comunicación directa entre las personas a través de la
interacción con los prototipos. Se debe reducir al mínimo indispensable el uso de
documentación que genera trabajo y que no aporta un valor directo al producto [MendesCalo
2010].
El sistema funcionando es lo único que muestra lo que el equipo ha desarrollado. Correr código
es honestidad implacable. La documentación la utiliza el equipo para reflexionar, como pistas
de lo que se debería realizar. El acto completo de reunir requerimientos, diseñar, codificar,
probar el software revela información del equipo, el proceso, y la naturaleza del problema a
resolver. Esto, junto con la posibilidad de correr el resultado final, provee la única medida
confiable de la velocidad del equipo, y un vistazo de lo que el equipo debería estar
desarrollando. Los documentos pueden ser útiles pero deben usarse en la “medida justa” o “a
penas suficiente” [Cockburn 2007]
Es muy importante la relación entre la persona que quiere el software y los que la construyen.
La Colaboración se refiere a amigabilidad, toma de decisiones conjuntas, comunicación rápida,
y conexiones de interacción entre individuos. Aunque a veces los contratos son útiles, la
colaboración fortalece el desarrollo tanto cuando hay un contrato como cuando no existe el
contrato. [Cockburn 2007]
El valor final se refiere a la rapidez para ajustarse a los cambios del proyecto. Construir un plan
es útil y cada metodología ágil contiene actividades de planificación específicas, pero también
tienen mecanismos para manejar cambios de prioridades.
Los postulados descriptos anteriormente, inspiraron los doce principios del Manifiesto Ágil.
Estos principios son las características que diferencian un proceso ágil de uno tradicional. Dos
de ellos hacen referencias a generalidades, luego hay seis que tienen que ver directamente
con el proceso de desarrollo de software a seguir y cuatro que están más directamente
relacionados con el equipo de desarrollo, en cuanto metas a seguir y organización del mismo.
Algunos de los autores recomiendan metodologías ágiles para situaciones muy fluctuantes
pero por ejemplo para Cockburn, en su propia experiencia comenta que aún sirvió esta
metodología en proyectos supuestamente estables.
Dado que hay tantas prácticas asociadas al desarrollo ágil, una forma más simple de definir
Ágil es hacerlo en término de beneficios. Poole define el desarrollo ágil como aquel que, en
comparación con el desarrollo tradicional, provee beneficios de mayor flexibilidad, retorno de
inversión más alto, realización más rápida del retorno de Inversión, más alta calidad, mayor
visibilidad, y paz sostenible. [Poole 2009]
Poole hace notar que se habla de Metodologías Ágiles como un solo paquete: si se adhiere a
los principios del manifiesto ágil, se obtienen los beneficios. Pero, hay otra forma de mirarlas y
es pensar que las metodologías ágiles introducen un conjunto nuevo y completo de prácticas al
conjunto de herramientas de desarrollo. Estas prácticas incluyen: product backlog,
programación de a pares, cliente en el lugar, integración continua, refactorización, desarrollo
dirigido por pruebas (TDD) y muchas otras. Mientras que todas estas prácticas han estado
asociadas con las Metodologías Ágiles o fueron creadas como resultado de las Metodologías
Ágiles, su aplicación y beneficios resultantes pueden aplicarse completamente independientes
de cualquier metodología específica. [Poole 2009]
Por otro lado, según [Giro 2002] [Ferrer 2003] [Canós 2003], se considera que un modelo es
ágil o liviano cuando se emplea para su construcción una herramienta o técnica sencilla, que
apunta a desarrollar un modelo aceptablemente bueno y suficiente en lugar de un modelo
perfecto y complejo. Un modelo es suficientemente bueno cuando cumple con los objetivos
para los que fue creado, esto es, logra principalmente el propósito de la comunicación; es
entendible por la audiencia para la que fue concebido; no es perfecto y puede presentar
algunos errores e inconsistencias no esenciales; posee un grado de detalle adecuado; suma
valor al proyecto; y es suficientemente simple de construir [Ambler web].
Hawrysh y Ruprecht, [Hawrysh 2002], declaran que una sola metodología no puede funcionar
para todo un espectro de proyectos diferentes, pero en su lugar el administrador de proyectos
debe identificar la naturaleza específica del proyecto en mano y luego seleccionar la mejor
Cockburn, [Cockburn 2002], define el corazón de los métodos de desarrollo de software ágil
como el uso de reglas livianas pero suficientes sobre el comportamiento de un proyecto y el
uso de reglas orientadas a las personas y a la comunicación. El proceso ágil es tanto liviano
como suficiente; liviano significando mantenerse maniobrable y suficiente como un asunto
relacionado a mantenerse en el juego.
Según Abrahamsson Pekka, Salo Outi, Ronkainen Jussi & Juhani Warsta [Abrahamsson 2002],
estudios han demostrado que las metodologías de desarrollo de software tradicionales dirigidas
por planes no se usan en la práctica. Se ha argumentado que las metodologías tradicionales
son demasiado mecánicas para usarse en detalle. Como resultado, los desarrolladores de
software industriales se han vuelto escépticos sobre “nuevas” soluciones que son difíciles de
comprender y por lo tanto permanecen sin usar. Los métodos de desarrollo de software ágil,
que “oficialmente” comenzaron con la publicación del manifiesto ágil, hacen un intento por
hacer un cambio en el campo de la ingeniería de software. Los métodos ágiles claman por
colocar más énfasis en las personas, la interacción, el software funcionando, la colaboración
del cliente, y el cambio más que en los procesos, las herramientas, los contratos y los planes.
El pensar de manera ágil es una vista centrada en las personas para desarrollar software
[Abrahamsson 2002]. Las estrategias centradas en las personas son una fuente importante de
ventaja competitiva, porque, a diferencia de la tecnología, los costos o las nuevas tecnologías,
estas estrategias humanas son difíciles de imitar ([Pfeffer 1998];[Miller 2001]). Eso, sin
embargo, no es una nueva creación. Una edición de verano de 1990 de American Programmer
(Ed Yourdon’s Software Journal, Vol3. No 7 8) estuvo dedicada exclusivamente a
“Peopleware”. El editor señala que “todos saben que la mejor forma de mejorar la productividad
y calidad software es enfocarse en las personas”. Por lo tanto, la idea que traen las
metodologías ágiles no son nuevas, ni tampoco los agilistas se adjudican esto. Ellos, sin
embargo, creen que los métodos ágiles de desarrollo de software proveen una forma novedosa
de aproximarse a los problemas de ingeniería de software, así como también sostienen que los
métodos no son de ninguna forma exhaustivos o capaces de resolver todos los problemas.
Existe gran variedad de metodologías ágiles, pudiendo complementarse unas con otras dado
que el enfoque en cada una puede ser diferente. Por ejemplo, XP se centra en la programación
y Scrum en la administración. Muchas organizaciones están utilizando estas metodologías,
como por ejemplo: Google, Canon, NEC, Seros, Fuji, Oracle, Toyota, Honda, Nokia, Yahoo!,
Microsoft, HP, 3M, Sun, Epson [Programación extrema].
Los resultados de la octava encuesta del “Estado del Desarrollo Ágil” realizada por VersionOne
entre el 4 de agosto al 23 de octubre de 2013 fue publicada en 2014. Esta encuesta fue
respondida por 3501 empresas. Entre los datos obtenidos, se puede mencionar que hay un
11% de incremento respecto de hace dos años en el número de personas que dicen que las
metodologías ágiles ayudan a las organizaciones a completar más rápidamente los proyectos.
A través de los datos de la encuesta, también se ve que quienes fallan al intentar adoptar una
metodología ágil es a menudo por aspectos relacionados con la cultura organizacional y la
resistencia al cambio. Específicamente las personas sienten una falta de planificación previa y
pérdida de control en la administración del proyecto. Scrum y sus variantes siguen siendo las
metodologías ágiles más difundidas. Kanban sigue ganando popularidad, aumentando un 7%.
También aparecieron líneas nuevas e interesantes:
• Más equipos distribuidos están practicando metodologías ágiles. Este año pasó del
35% del 2012 al 75%, más del doble en un año.
• Más personas usan o planean utilizar herramientas para la administración de un
proyecto ágil. (76% en 2013 respecto de un 66% en 2011)
• Mayor uso de retrospectiva, un aumento de un 10% en los dos últimos años
El 88% de los encuestados ha practicado desarrollo ágil durante el 2012 y un 53% viene
trabajando con ágiles de 2 a 5 años y un 19% por más de 5 años. Los niveles donde se toman
las decisiones son de un 61% en el nivel de administración, solo un 17% dentro de los equipos
de desarrollo. El número de equipos dentro de las organizaciones que utiliza métodos ágiles
sigue aumentando.
A continuación se muestran algunos de los datos extraídos de las encuestas [VersionOne web]
y posteriormente se presentan algunos gráficos asociados a estas encuestas (Figuras 2.1.2 a
Figura 2.1.8):
Figura 2.1.3. Mejoras obtenidas por implementar una metodología ágil [VisionOne]
Las metodologías a describir en este trabajo son XP, Scrum, Kanban, OpenUP, Cristal, TDD y
DSDM. Las prácticas de ingeniería de XP evolucionaron junto con Scrum y los dos principales
procesos ágiles de desarrollo trabajan bien juntos. Scrum y XP son las metodologías ágiles
más utilizadas en todo el mundo y sus creadores son co autores del Manifiesto Ágil [Sutherland
2011]. Debido a esto, se detallarán un poco más que el resto de las metodologías aquí
mencionadas. Kanban está surgiendo con gran adhesión, por lo que es indispensable
considerarla. Open UP presenta una metodología más cercana a lo que sería una metodología
tradicional como es el Proceso Unificado. Crystal Clear, por el contrario de Open UP, va al
extremo opuesto dejando la mayor libertad a la hora de definir un proceso de desarrollo. A TDD
algunos la consideran más bien una técnica dentro de otra metodología, como por ejemplo
dentro de XP, pero su planteo es sumamente provechoso a la hora de encarar un proceso de
desarrollo ágil. DSDM fue la primera metodología ágil y sigue siendo utilizada mayormente en
Europa. La intención final es tener un panorama general de diferentes propuestas ágiles
actuales.
2.2.1 Introducción
La expresión Programación eXtrema es la traducción del inglés de “Extreme Programming”
(XP) acuñada por Kent Beck quien ahora se considera como una de las principales figuras de
este modelo de programación, junto a Ron Jeffries y Ward Cunningham quienes fueron
partícipes de la conformación y divulgación de una metodología mucho más arriesgada, versátil
y flexible para el desarrollo de software [Fowler 2003b]. Esta propuesta metodológica fue
denominada extrema porque lleva a límites extremos algunos elementos y actividades
comunes de la forma tradicional de programar, de ahí proviene su nombre.
XP deriva de buenas prácticas que han estado alrededor por largo tiempo. Son prácticas
simples, que podrían considerarse ingenuas o extrañas al principio, fácilmente adoptadas
luego, apoyadas unas en otras, con reducción de actividades improductivas. El propio Kent
afirma que “ninguna de las ideas en XP son nuevas. Muchas son tan viejas como la
programación”. Aunque, adhiriendo al comentario de Jim Highsmith, “Mientras las prácticas que
usa XP no son nuevas, las bases conceptuales y como se mezclan entre sí son nuevas y
mejoran grandemente estas “viejas” prácticas”.
Se basa en una serie de prácticas y principios que se han ido gestando a lo largo de toda la
historia de la ingeniería del software, son de sentido común pero llevadas al extremo. Usadas
conjuntamente proporcionan una nueva metodología de desarrollo software que se puede
englobar dentro de las metodologías ágiles o ligeras. Kent Beck describe la filosofía de XP en
[Beck 2000] sin cubrir los detalles técnicos y de implantación de las prácticas. Posteriormente,
otras publicaciones de experiencias se han encargado de dicha tarea.
Los principios suponen un puente entre los valores, algo intrínseco al equipo de desarrollo y las
prácticas, que se verán posteriormente, y que están más ligadas a las técnicas que se han de
seguir. Los principios fundamentales se apoyan en los cuatro valores previamente definidos y
también son cuatro: retroalimentación veloz, modificaciones incrementales, trabajo de calidad y
asunción de simplicidad.
El tratamiento de las historias de usuario es muy dinámico y flexible, en cualquier momento las
historias de usuario pueden romperse, reemplazarse por otras más específicas o generales,
añadirse nuevas o ser modificadas. Cada historia de usuario es lo suficientemente
comprensible y delimitada para que los programadores puedan implementarla en unas
semanas. [Letelier 2006] Para efectos de planificación, las historias pueden ser de una a tres
semanas de tiempo de programación (para no superar el tamaño de una iteración).
2.2.4 Roles XP
En este apartado se describen los roles de acuerdo con la propuesta original de Beck, si bien
en otras fuentes de información aparecen algunas variaciones y extensiones de roles en XP.
Los roles originales fueron: Programador, Cliente, Encargado de Pruebas, Encargado de
Seguimiento, Entrenador, Consultor y Gestor.
2. Cliente: escribe las historias de usuario y las pruebas funcionales para validar su
implementación. Además, asigna la prioridad a las historias de usuario y decide
cuáles se implementan en cada iteración buscando aportar mayor valor al negocio.
El cliente es sólo uno dentro del proyecto pero puede corresponder a un
interlocutor que está representando a varias personas que se verán afectadas por
el sistema.
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 más trabajo que el estimado, ya que se perderá
calidad en el software o no se cumplirán los plazos. De la misma forma el cliente tiene la
obligación de manejar el ámbito de entrega del producto, para asegurarse que el sistema tenga
el mayor valor de negocio posible con cada iteración.
El ciclo de vida ideal de XP consiste de seis fases [Beck 2000]: Exploración, Planificación de la
Entrega (Release), Iteraciones, Producción, Mantenimiento y Muerte del Proyecto:
3. Iteraciones: esta fase incluye varias iteraciones sobre el sistema antes de ser
entregado. El plan de entrega está compuesto por iteraciones de no más de tres
semanas. En la primera iteración se puede intentar establecer una arquitectura del
sistema que pueda ser utilizada durante el resto del proyecto. Esto se logra
escogiendo las historias que fuercen la creación de esta arquitectura, sin embargo,
esto no siempre es posible ya que es el cliente quien decide qué historias se
implementarán en cada iteración. Al final de la última iteración el sistema estará
listo para entrar en producción.
Los elementos que deben tomarse en cuenta durante la elaboración del plan de la
iteración son historias de usuario no abordadas, velocidad del proyecto, pruebas de
aceptación no superadas en la iteración anterior y tareas no terminadas en la
6. Muerte del Proyecto: es cuando el cliente no tiene más historias para ser incluidas
en el sistema. Esto indica que se satisfacen todas las necesidades del cliente en
aspectos como rendimiento y fiabilidad del sistema. Se genera la documentación
final del sistema y no se realizan más cambios en la arquitectura. La muerte del
proyecto también ocurre cuando el sistema no genera los beneficios esperados por
el cliente o cuando no hay presupuesto para mantenerlo.
2.2.6 Prácticas XP
La principal suposición que se realiza en XP es la posibilidad de disminuir la mítica curva
exponencial del costo del cambio a lo largo del proyecto, lo suficiente para que el diseño
evolutivo funcione. XP apuesta por un crecimiento lento del costo del cambio y con un
comportamiento asintótico. Esto se consigue gracias a las tecnologías disponibles para ayudar
en el desarrollo de software y a la aplicación disciplinada de ciertas prácticas [Letelier 2006].
XP especifica ciertas prácticas concretas de programación que deben llevarse a cabo al
implementar este modelo. Las mismas tienen su origen en prácticas bien conocidas en la
ingeniería del software, tal como se mencionó previamente. Las prácticas de XP facilitan el
desarrollo de una aplicación y permiten a los desarrolladores obtener software de calidad. Las
doce prácticas que caracterizan a la metodología son:
Juego de la Planificación: es un espacio frecuente de comunicación entre el cliente y los
programadores. El juego de la planificación define el límite o el punto de interacción entre
clientes y desarrolladores, especificando las responsabilidades de ambas partes. El equipo
técnico realiza una estimación del esfuerzo requerido para la implementación de las
historias de usuario y los clientes deciden sobre el ámbito y tiempo de las entregas y de
cada iteración. La duración de cada iteración se suele estimar en 2 3 semanas de trabajo.
Entregas pequeñas: la idea es producir rápidamente versiones del sistema que sean
operativas, aunque obviamente no cuenten con toda la funcionalidad pretendida para el
sistema pero sí que constituyan un resultado de valor para el negocio. Kent Beck enuncia
en su libro Extreme Programming Explained: Embrace Change [Beck 2000] “cada entrega
debe ser tan pequeña como sea posible, conteniendo los requerimientos con mayor valor
de negocio”. Las entregas pequeñas proveen un sentido de logro o éxito, que a menudo
falta en proyectos largos, y retroalimentación frecuente y relevante. Una entrega no
debería tardar más de 3 meses.
Metáfora: en XP no se enfatiza la definición temprana de una arquitectura estable para el
sistema. Dicha arquitectura se asume evolutiva y los posibles inconvenientes que se
generarían por no contar con ella explícitamente en el comienzo del proyecto se solventan
con la existencia de una metáfora. El sistema es definido mediante una metáfora o un
conjunto de metáforas compartidas por el cliente y el equipo de desarrollo. Una metáfora es
una historia compartida que describe cómo debería funcionar el sistema. La práctica de la
metáfora consiste en formar un conjunto de nombres que actúen como vocabulario para
hablar sobre el dominio del problema. Este conjunto de nombres ayuda a la nomenclatura
de clases y métodos del sistema [Letelier 2006]. El principal objetivo de la metáfora es
Figura 2.2.2. Modelo propuesto para una prueba de aceptación [Canós 2003]
2.2.7 Conclusiones
De todas las metodologías ágiles, ésta es la que ha recibido más atención [Fowler2003]. Los
defensores de XP son cuidadosos en expresar cuándo consideran que es apropiado XP y
cuándo no lo es. Defensores como Kent Beck y Ron Jeffries pueden imaginar que XP tiene una
aplicabilidad más amplia, generalmente son cautelosos sobre sus afirmaciones. Por ejemplo,
ambos son claros respecto de la aplicabilidad de XP en equipos pequeños (menos de 10
personas) en un mismo lugar, una situación donde ellos han tenido experiencia. Ellos no tratan
de convencer a las personas que las prácticas funcionarán en equipos de 200. [Higsmith 2002]
Sin embargo, como se resalta en [Letelier 2006], hay que tener presente una serie de
inconvenientes y restricciones para su aplicación, tales como: están dirigidas a equipos
pequeños o medianos (Beck sugiere que el tamaño de los equipos se limite de 3 a 20
miembros como máximo, otros dicen no más de 10), el entorno físico debe ser un ambiente
que permita la comunicación y colaboración entre todos los miembros del equipo durante todo
el tiempo, cualquier resistencia del cliente o del equipo de desarrollo hacia las prácticas y
principios puede llevar el proceso al fracaso (el clima de trabajo, la colaboración y la relación
contractual son claves), el uso de tecnologías que no tengan un ciclo rápido de
retroalimentación o que no soporten fácilmente el cambio, etc.
Aunque en la actualidad ya existen libros asociados a cada una de las metodologías ágiles
existentes y también abundante información en internet, es XP la metodología que resalta por
contar con la mayor cantidad de información disponible y es con diferencia la más popular.
2.3 SCRUM
2.3.1 Introducción
Scrum no es una metodología es un camino” Ken Schwaber, Co, Nov 2005. [Higsmith 2002]
El concepto de Scrum tiene su origen a principios de los 90’s. Está basado en un estudio de
gestión de equipos de 1986 desarrollado por Hirotaka Takeuchi e Ikujiro Nonaka llamado The
New New Product Developement Game. Era un estudio sobre los nuevos procesos de
desarrollo utilizados en productos exitosos en Japón y los Estados Unidos (cámaras de fotos
Canon, fotocopiadoras Xerox, automóviles Honda, ordenadores HP y otros). En este estudio se
comparaba la forma de trabajo de equipos de desarrollo, altamente productivos y
multidisciplinares, con la colaboración entre los jugadores de Rugby y su formación de Scrum.
[Sutherland 2011].
Scrum es una metodología para desarrollo ágil de productos software. Esta metodología, si
bien ha sido aplicada principalmente a proyectos de software, un número de proyectos que no
están relacionados con el software han sido administrados con Scrum – los principios son
aplicables a cualquier proyecto [Highsmith]. Actualmente SCRUM es uno de los métodos ágiles
que está creciendo más y ya en 2011 lo usaba el 75% de equipos ágiles alrededor del mundo.
[Sutherland web] [Sutherland 2011]. La encuesta de 2013 de VisionOne obtuvo porcentajes
similares, tal como se mostró anteriormente. La Scrum Alliance [ScrumAlliance] es la
organización sin ánimo de lucro que se encarga de difundir Scrum.
Está siendo utilizado por grandes y pequeñas compañías, incluyendo Yahoo, Microsoft,
Google, Lockheed Martin, Motorola, SAP, Cisco, GE Medical, Capital One y la Reserva Federal
de los Estados Unidos [Deemer]. Muchos equipos que están usando Scrum reportan mejoras
importantes, y en algunos casos transformaciones completas, tanto en productividad como en
la moral. Scrum es simple, poderoso y cimentado en el sentido común. [Highsmith]
“El corazón del enfoque Scrum es la creencia que la mayoría de los desarrollos de sistemas
tienen las bases filosóficas erróneas “. Ken Schwaber afirma que el desarrollo de sistemas no
es un “proceso definido” como asumen las metodologías rigurosas, sino un “proceso empírico”.
[Higsmith 2002]. Un proceso empírico requiere un estilo completamente diferente de
administración. Los procesos empíricos, a diferencia de los rigurosos, no pueden repetirse
consistentemente, requieren por lo tanto monitoreo y adaptación constante. “Los
desarrolladores y administradores de proyectos son forzados a vivir una mentira – deben
pretender que pueden planificar, predecir y entregar”. Eso dice Ken Schwaber.
Scrum comienza con la premisa que el mundo es complicado y por lo tanto “no se puede
predecir o planear definitivamente lo que se entregará, cuando se entregará y que calidad y
costo tendrá” dice Ken Schwaber. No se basa en seguir un plan sino en la adaptación continua
a las circunstancias de la evolución de proyecto. Mientras XP tiene un sabor definido a
programación (programación de a pares, estándares de codificación, refactorización), Scrum
tienen un énfasis en la administración de proyecto.
Sprint Backlog: Lista de tareas de un Sprint. El Sprint Backlog identifica y define el trabajo
a ser alcanzado por el equipo de desarrollo durante un Sprint. A un nivel el Sprint Backlog
identifica las características mientras que a otro nivel, identifica las tareas requeridas para
implementar esas características.
2.3.3 Roles
En Scrum se definen varios roles, estos están divididos en dos grupos. Por un lado figuran los
que están comprometidos con el proyecto y el proceso Scrum. Por otro lado, aquellos que en
realidad no forman parte del proceso Scrum, pero que deben tenerse en cuenta y cuya
participación es importante. [CaraballoMaestre 2009]
Product Owner: Representa la voz del cliente. Escribe historias de usuario, las prioriza, y
las coloca en el Product Backlog.
Equipo: Conformado por no más de 8 personas (si hay más se organizan varios equipos
que trabajan sobre el mismo product backlog). Tiene la responsabilidad de entregar el
producto. Son autónomos y auto organizados. Deben entregar un conjunto de ítems del
Backlog al final del Sprint.
Managers: Son aquellos que establecen el ambiente para el desarrollo del producto.
Una pieza final del proceso de planificación es desarrollar un Objetivo del Sprint, un propósito
de negocio para el Sprint. El objetivo del Sprint puede alcanzarse aún cuando algunas
características o tareas fueron demoradas o dejadas de lado. “La razón de un Objetivo de
Sprint es dar al equipo cierta flexibilidad respecto a la funcionalidad” tal como Ken Schwaber y
Mike Beedle lo enuncian en Agile Software Development with Scrum. El objetivo de un Sprint
recuerda constantemente al equipo cuales son las tareas detalladas que deben alcanzarse. Sin
este objetivo, el equipo puede enfocarse demasiado en las tareas y perder la razón por la que
se están realizando. Además, mantener el objetivo en mente anima al equipo a adaptarse a
condiciones que pudieran surgir durante el transcurso del Sprint.
Podría decirse que la Planificación del sprint consiste de dos sub reuniones donde se logra:
En la Figura 2.3.2 se puede observar cuáles son las entradas necesarias para realizar el pre
sprint y las salidas que esta actividad debe generar.
2.3.4.2 Sprint
Es un ciclo de producción dentro de un desarrollo iterativo e incremental, la duración estándar
es de 30 días (si bien algunos aducen que el Sprint puede variar de una semana a un mes).
Durante un Sprint los miembros del equipo eligen tareas a realizar, cada uno se esfuerza para
alcanzar el Objetivo del Sprint y todos participan de la reunión diaria de Scrum. No hay planes
elaborados durante un Sprint – se espera que el equipo use sus talentos para entregar
resultados.
Algo que hace de Scrum un poderoso enfoque es que reduce la fragmentación de tiempo y el
cambio constante de las prioridades al “bloquear” las características durante el Sprint. Excepto
en situaciones extremas, las prioridades no se cambian durante el sprint por nadie, ni siquiera
por el Product Owner, ni el administrador. Al final de Sprint, el Product Owner podría elegir
descartar todas las características desarrolladas o reorientar el proyecto, pero durante un
Sprint las prioridades se mantienen constantes. Esta es la parte de “control del caos
controlado”. Esto es crítico, porque en un entorno de constante cambio debe haber un cierto
punto de estabilidad. Es necesaria cierta estabilidad para que el equipo pueda sentir que
pueden lograr algo. Si aparece una circunstancia externa que cambie significativamente las
prioridades, e implique por lo tanto que el equipo estaría perdiendo el tiempo si continúa
trabajando, el Product Owner puede terminar el Sprint, significando que el equipo deja todo el
trabajo que estuvieran haciendo y comienza una reunión de planificación de un nuevo Sprint.
La cancelación de un Sprint es un costo, lo que sirve para desalentar al Product Owner a
realizarlo salvo circunstancias extremas.
Hay una influencia positiva poderosa que proviene de proteger al equipo de cambios de
objetivos durante el Sprint. Primero, el equipo trabaja sabiendo con absoluta certeza que el
compromiso asumido no cambiará, lo que refuerza el foco del equipo en asegurar cumplir con
ese objetivo. Segundo, ayuda a que el Product Owner realmente piense a conciencia los ítems
que prioriza en el Product Backlog. Saber que el compromiso es para toda la duración el Sprint
hace que el Product Owner sea más diligente al decidir lo que va a solicitar desde el principio.
Cada tarea está representada por una tarjeta que pueda moverse por el tablero (post it o
papeles con chinches). Cada tarjeta de tarea debe contener al menos un identificador (numero
único), nombre de la tarea, breve descripción y responsable (si es aplicable). En algunos casos
también se usan carriles horizontales para identificar el proyecto o el responsable de la tarea.
Al inicio del Sprint todas las tareas están en la primera columna de la izquierda, es decir en
estado de planificadas. Al finalizar el Sprint todas deberían estar en la última columna es decir
completadas.
Dado que los procesos empíricos se definen por su incertidumbre y cambio, es importante que
se ejecuten chequeos diarios. La reunión diaria de Scrum permite al equipo monitorizar el
estado, enfocarse en el trabajo a realizar y detectar problemas y cuestiones. Las reuniones se
realizan de pie, frente al Scrum Board y a la misma hora. En promedio debe durar 15 minutos y
debe ser moderada por el Scrum Master. Todos los miembros del equipo de desarrollo deben
participar. También los administradores deben asistir para tener un seguimiento del estado del
proyecto pero no para participar. Las reuniones se usan para detectar ciertas cuestiones y
obstáculos pero no para proponer soluciones ya que eso implicaría una duración mucho mayor.
Posteriormente el Scrum Master tratará de solucionar las cuestiones que generan obstáculos
en el equipo. Cada participante debe comentar qué hizo, que hará y qué obstáculos tuvo en el
camino para poder realizar su trabajo. Cada miembro se debe dirigir al Equipo, no al Scrum
Master ni a ningún otro miembro en concreto.
El Burndown chart muestra en el eje horizontal los días y el trabajo restante expresado en
horas en el eje vertical; al final de los 30 días, el trabajo faltante debería ser cero. Al día cero, el
trabajo restante debe ser igual a la cantidad de horas estimadas para el Sprint. Cada día los
desarrolladores registran los días (horas) invertidos en una tarea y su porcentaje de
completitud usando alguna herramienta automática de Backlog que calcula el trabajo
completado y el trabajo restante. Al mirar el gráfico de Sprint Backlog, el líder de proyecto tiene
retroalimentación diaria del progreso (o falta de progreso) y cualquier estimación que resultó
ser inadecuada.
Figura 2.3.5. Actualizaciones diarias de Trabajo Restante en la Pila del Sprint [DeemerEs]
Mike Beedle y Ken Schwaber señalan que “esto <el monitoreo> no debe confundirse con
reporte de tiempo que no es parte de Scrum Los equipos se miden por alcanzar objetivos no
por cuantas horas toman para alcanzarlo” (Schwaber & Beedle 2002). Los administradores
están mirando la tendencia general en el gráfico del Sprint Backlog y no estimaciones y
completitud de tareas de micro administración.
Si bien la duración sugerida por los autores es de 30 días, a los equipos se les recomienda que
escojan una duración para el Sprint (por ejemplo dos semanas o 30 días) y que no la cambien.
Una duración consistente ayuda al equipo a saber cuánto pueden hacer, lo que les ayuda en la
Uno de los principios de desarrollo ágil es “ritmo sostenible”, y solo trabajando dentro de las
horas delimitadas por el horario laboral a un ritmo razonable permite que los equipos continúen
este ciclo indefinidamente.
2.3.6 Conclusiones
Esta metodología, SCRUM, se centra en la gestión del proyecto y puede aplicarse a otros
proyectos que no tienen que ver con el desarrollo de software. Busca el trabajo cooperativo de
equipos multidisciplinares altamente productivos. Define sprints de duración fija y determina
una serie de reuniones a realizar a lo largo del proyecto. Como resultado de cada sprint se
entrega un incremento. Plantea realizar un monitoreo del proceso y una adaptación constante.
Actualmente es uno de los métodos ágiles que más está creciendo. En la Figura 2.3.7 se
puede tener una visión general de esta metodología.
En el primer Scrum se usaron todas las prácticas ingenieriles de XP y sentaron las bases de la
ingeniería actual. La mayoría de los equipos con alta performance usan conjuntamente
SCRUM y XP. Es difícil obtener un Scrum con velocidad extrema sin las prácticas ingenieriles
de XP. Por otro lado no se puede escalar XP sin Scrum. [Sutherland web]
2.4 KANBAN
2.4.1 Introducción
Kanban se considera el enfoque de Lean al desarrollo de software [Crisp web], por lo tanto
antes de introducir los conceptos de Kanban propiamente dichos se presentará brevemente
Lean.
2.4.1.1 Lean
Lean está definido como un Conjunto de Principios, no es un proceso que pueda ser
directamente adaptado a distintos ambientes. Lean Development fue iniciado por Bob Charette
y se inspira en el éxito del proceso industrial Lean Manufacturing, bien conocido en la
producción automotriz y en manufactura desde la década de 1980. Este proceso tiene como
precepto la eliminación de residuos a través de la mejora constante, haciendo que el producto
fluya a instancias del cliente para hacerlo lo más perfecto posible.
Las practicas Lean fueron implementadas y perfeccionadas por Toyota Production System
hace más de 40 años y luego fueron copiadas por otras empresas automotrices con mucho
éxito. También fueron llevadas a otras parte de la organización que no tienen mucho que ver
con la producción, es allí donde estas prácticas debieron ser adaptadas.
La diferencia entre la producción y otras áreas es que en estas últimas no es posible combatir
la variabilidad, sistematizar y estandarizar el trabajo como se hace en la producción. Sin
embargo la adaptación de las practicas Lean en otras áreas fue tan exitosa o más que en la
producción. [Modezki 2011]
Los principios que definen un sistema Lean son los siguientes [DeSeta web][Rubio 2009]:
Minimización del desperdicio eliminación de todas las actividades que no son de valor
añadido y la optimización del uso de los recursos escasos como capital, gente y espacio.
Hacer lo justo y necesario y hacerlo bien, como se decía antes en el punto anterior, y no
entretenerse en otras tareas secundarias o no necesarias (principio YAGNI).
Procesos "pull" los productos deben ser solicitados por el cliente final, no empujados al
mercado desde la fábrica hacia el cliente.
“Todo lo que hacemos es mirar la línea de tiempo y reducimos el tiempo reduciendo todo aquel
desperdicio que no agrega valor” Taiichi Ohno, creador de Lean y Just In Time
2.4.2 Kanban
El sistema Kanban utilizado en Toyota es la inspiración detrás de lo que se conoce como
Kanban para Ingeniería de Software. Kanban implementa completamente los principios Lean.
Mary y Tom Poppendieck publican el primer libro, por el año 2003, sobre la aplicación de los
principios de Lean al desarrollo de software llamado Lean Software Development [Poppendieck
2003], donde se refiere a Kanban. Aunque el contexto en que es usado no es técnicamente
correcto (porque se refiere al tablero, pero no habla de los límites) el término Tablero Kanban
se deslizó dentro del vocabulario Ágil. [Joyce 2009].
En los últimos años, los sistemas Kanban se han vuelto un tema de creciente interés en la
comunidad ágil, gracias particularmente a la excelente introducción que Tom y Mary
Poppendieck realizaron sobre los principios propuestos por Lean aplicados al desarrollo de
software [Poppendieck 2003]. Dentro de esta línea se pueden destacar tres personas que han
estado trabajando con sistemas Kanban dentro del marco de desarrollo ágil: David Anderson,
Arlo Belshee y Kenji Hiranabe. [Shore web]
Kanban se basa en una idea muy simple: el trabajo en curso (Work In Progress, WIP) debería
limitarse, y sólo se debería empezar con algo nuevo cuando un bloque de trabajo anterior haya
sido entregado o ha pasado a otra función posterior de la cadena. El Kanban (o tarjeta
señalizadora) implica que se genera una señal visual para indicar que hay nuevos bloques de
trabajo que pueden ser comenzados porque el trabajo en curso actual no alcanza el máximo
acordado. Según David J. Anderson, Kanban parece un cambio muy pequeño pero aun así
cambia todos los aspectos de una empresa. [Kniberg 2010]
2.4.2.1 Objetivos
Balancear la demanda con la capacidad.
Limitar el trabajo en proceso, mejorar el “flujo” del trabajo, descubrir los problemas
tempranamente y lograr un ritmo sostenible.
Controlar el trabajo (no la gente), coordinar y sincronizar, descubrir los cuellos de botella y
tomar decisiones que generen valor.
Equipos auto organizados.
Lograr una cultura de optimización incremental.
2.4.2.2 Beneficios
Ajuste de cada proceso y flujo de valor a medida.
Reglas simples que permiten optimizar el trabajo en función del valor que genera.
Mejor manejo del riesgo.
Tolerancia a la experimentación,
Difusión “viral” a lo largo de la organización con mínima resistencia.
Incremento de la colaboración dentro y fuera del equipo.
Mejora de la calidad del trabajo.
Ritmo de trabajo sostenido y sustentable.
Estos sistemas son diferentes. En vez de utilizar iteraciones de tiempo prefijado, se enfocan en
el flujo continuo de trabajo. El equipo toma una historia del backlog, la desarrolla y entrega tan
pronto como se finaliza. Luego toman la siguiente historia del backlog, la desarrollan y
entregan. El trabajo se entrega tan pronto esté listo y el equipo solo trabaja en una historia a la
vez. Este es el ideal, los enfoques varían .El principio de Kanban es que se comienza con lo
que se está haciendo actualmente. Se comprende el proceso actual mediante la realización de
un mapa del flujo de valor y entonces se acuerda los límites de trabajo en curso (WIP) para
cada fase del proceso. A continuación se comienza a hacer fluir el trabajo a través del sistema
comenzándolo ("pull") cuando se van generando las señales Kanban. [Shore web]
2.4.3.2 Límites
Para el sistema Kanban no solo es importante balancear demanda y capacidad sino también
poner límite en cada proceso y subproceso. Empíricamente se comprueba que cuando se limita
la cantidad de trabajo a la capacidad, la calidad aumenta y eso reduce los costos, aumenta la
velocidad y reduce los re trabajos por errores. [Modezki 2011]. Eso es porque:
• Las cosas se hacen con más velocidad cuando menos tareas paralelas hay. Esta
característica que cuando los sistemas están cargados de trabajos funciona más
lentamente se demuestra prácticamente en cada trabajo que se pueda hacer.
• La multitarea genera una pérdida de foco y de tiempo al pasar de una tarea a otra.
Estas pérdidas son un desperdicio.
2.4.3.5 Tablero
En el desarrollo del software, el sistema Kanban se puede resumir como la visualización de las
tareas mediante un tablero, en el que se van moviendo entre los sectores delimitados, con el
objetivo de tener siempre presente el trabajo a realizar y lo que hace cada uno. Que nadie se
quede sin trabajo y que todas las tareas importantes se realicen primero. [Rubio 2009]
El tablero Kanban, el cual debe estar visible a todo el equipo de trabajo, tiene la peculiaridad de
ser un tablero continuo. Esto quiere decir que, no se rellena con tarjetas y se van desplazando
hasta que toda la actividad ha quedado realizada (como pasa en Scrum), sino que a medida
que se avanza, las nuevas tareas (mejoras, fallos o tareas del proyecto) se van acumulando en
la sección inicial, en las reuniones periódicas con el dueño de producto (o el cliente) se
priorizan las más importantes, y se encolan en las siguientes zonas [Rubio 2009]. El tablero
Kanban debe contener todo lo necesario para que el equipo tome las decisiones más
convenientes sin necesidad de supervisión.
• Las columnas representan los procesos, con los números que son los límites de
trabajo.
• Las tarjetas blancas son productos en proceso que se deben hacer.
• Las tarjetas amarillas son tareas que deben realizarse para terminar un producto o
subproducto.
• Los avatares (personas en dibujos) son los responsables de cada tarea. No es
conveniente poner el nombre del responsable en cada tarjeta porque esta tarea va
siendo trabajada por distintas personas en distintos procesos.
• Los marcadores verdes son trabajos completados.
• Los marcadores rojos son trabajos bloqueados.
Existen reglas de decisión (ver dentro de Figura 2.4.4 abajo a la derecha) que indican el
procedimiento para decidir cómo arrastrar el trabajo. Debajo de cada proceso está su definición
de “terminado”, esta es una característica muy importante, ya que define la calidad con la que
se termina una determinada tarea.
Cada tarjeta tiene: Fecha de ingreso, Fecha comprometida (si es aplicable), Descripción y
Prioridad. Las tarjetas deben facilitar el sistema de pull (tirar, arrastrar) y alentar la toma de
decisiones autónoma del equipo. [Modezki 2011]. Las tarjetas de Kanban suelen tener bastante
más información, ya que el método consiste en tener todo visual, para saber de forma rápida la
carga total de trabajo, ya sea de los grupos, como del departamento, etc. Es importante
destacar que las tarjetas deben de tener la estimación de tiempo que tiene asignada la tarea,
así como se pueden anotar las fechas de entrada en cada cuadrante, para tener información, al
término de la tarea, de si ha sido una buena estimación, así como obtener el rendimiento del
equipo de trabajo.
El sistema Kanban, no se dedica a llevar información de un solo proyecto, sino que se pueden
entremezclar tareas y proyectos. El método se basa en tener a los trabajadores con un flujo de
trabajo constante, las tareas más importantes en cola para ser realizadas y un seguimiento
pasivo, a modo de no tener que interrumpir al trabajador para saber qué hace en cada
momento. El sistema Kanban tiene ciertas ventajas con relación a otras metodologías, ya que
permite no solo llevar el seguimiento de un proyecto de forma individual, sino también de las
incidencias que se van sucediendo, así como otros proyectos paralelos que tenga que hacer el
mismo equipo de desarrollo, por lo que se puede deducir es que no se lleva pista de los
proyectos, sino de los equipos de trabajo.
2.4.3.6 Indicadores
Kanban provee indicadores muy claros de la salud del proyecto. El límite de trabajo es fácil de
controlar, ayuda a decidir si se debe comenzar o no un nuevo trabajo. Es muy importante
indicar la cantidad y fecha en que se fijó el límite. Regular los límites reporta los problemas en
los procesos, mientras estos están sucediendo. Las colas acumulando ítems están seguidas
por un proceso bloqueado. Las colas no permiten dobles interpretaciones.
2.4.3.7 Costos
Lean identifica 7 tipos de desperdicio en la manufacturación. La metáfora de “desperdicio” no
es muy útil en la Ingeniería de Software. El “desperdicio” en las actividades puede ser una
forma de descubrir información, y por lo tanto no siempre es un desperdicio. El desperdicio se
trata más que nada del costo de retraso: maximizar el valor y disminuir los riesgos. En la
ingeniería de software el costo de retraso (desperdicio) proviene de 3 tipos [Joyce 2009]:
2.4.3.8 Funcionamiento
Ya en funcionamiento la limitación del trabajo en curso debería permitir lograr un ritmo de
trabajo suave, constante, armónico y sostenido. Ese debe ser el foco para lograr todos los
beneficios que el sistema Kanban provee.
Uno de los aspectos que se debe evitar es la formación de colas o cuellos de botella, no solo
porque interrumpe el flujo de trabajo sino porque son una fuente enorme de defectos, errores y
olvidos que se deben evitar. Puede producirse debido a problema de definición de límites,
problemas de capacidad o una oportunidad de mejorar algunos procesos. En caso de
producirse los cuellos de botella, lo ideal es usar los recursos libres para liberar las colas y
luego mejorar los procesos. De esta manera sucede una mejora incremental del flujo de valor.
Otra situación indeseable es la hambruna, una persona tiene todas sus tareas todas
terminadas pero no puede continuar porque no tiene de dónde “arrastrar”, ya que la persona
encargada de realizar la tarea anterior no tiene ninguna tarea finalizada. Nuevamente puede
ser problema de definición de límites, problemas de capacidad o una oportunidad de mejorar
algunos procesos.
Una tercera situación se presenta si un recurso dentro de un proceso queda liberado y tiene un
compañero que no finalizó su tarea. La persona liberada podría arrastrar un trabajo de la cola
de tareas o bien ayudar a su compañero para que el trabajo en proceso sea terminado lo más
rápido posible. La regla es que el recurso libre debe ayudar a su compañero a terminar el
trabajo siempre que esto sea posible. Una vez que ambos terminen arrastran 2 trabajos de la
cola. Esto es otra muestra de colaboración y coordinación autónoma, sin necesidad de
consultar a un supervisor.
Por todo esto, si una persona terminó su trabajo, lo primero que debe tratar de hacer es ayudar
a un compañero a terminar su trabajo. En caso de no poder ayudarlo debería buscar un cuello
de botella y liberarlo. Y si no es posible liberar un cuello de botella, debería arrastrar un trabajo
de la cola si es posible. En caso de no ser posible, buscaría otra cosa interesante para trabajar.
Kanban muestra que la utilización máxima de los recursos no es su objetivo, sino por el
contrario, si todos trabajaran al máximo no podría haber mejoras. Los únicos lugares que
hacen máxima utilización de recursos son los cuellos de botella, que por definición debería ser
uno solo. [Modezki 2011]
Por otro lado, las Políticas son reglas asociadas a cada Clase de Servicio, que indican qué
“arrastrar” primero y qué hacer cuando debemos tomar una decisión. [Modezki 2011]. Las
Políticas pueden incluir: Prioridad de arrastre, Límites, Restricciones de Tiempo y Riesgo, Color
de la tarjeta y Anotaciones complementarias. Se recomienda que las Clases de Servicio no
excedan más de 6. Esto busca evitar hacer el sistema complejo. [Joyce 2009]
2.4.3.11 Control
Kanban combina la flexibilidad de la producción artesanal con el control de flujo de una cañería.
2.4.4 Conclusiones
Kanban es un sistema muy simple que se basa principalmente en: Visualización del flujo de
trabajo, Limitación del trabajo en proceso, Medición y Gestión del Flujo y Mejora incremental.
Tal como lo mencionan los autores de esta metodología, son justamente los métodos simples
los que generan los menores trastornos y generalmente los más sustentables beneficios.
Esta metodología puede verse como un sistema transparente y visual de limitación del trabajo
en curso y arrastre (pull) del valor. Ayuda a entregar valor promoviendo el flujo y exponiendo
los cuellos de botella, las colas, el impacto de los defectos, los costos económicos y por lo
tantos el desperdicio.
Kanban, tal como uno de sus mayores exponentes David Anderson afirma, ha demostrado ser
útil en equipos que realizan desarrollo Ágil de software, pero también están ganando fuerza en
equipos que utilizan métodos más tradicionales. Kanban se está introduciendo como parte de
iniciativas Lean para transformar la cultura de las organizaciones y fomentar la mejora
continua. [Kniberg 2010]
Kanban dentro de un proyecto o en un área tiene que ser adaptado a su contexto y a sus
características específicas.
2.5 OPENUP
• Desarrollo incremental.
• Manejo de riesgos.
OpenUp es un marco de trabajo para procesos de desarrollo de software. Fue propuesto por un
conjunto de empresas de tecnología (IBM Corp., Telelogic AB., Armstrong Process Group, Inc.,
Number Six Software, Inc. & Xansa plc.) lo donaron en el año 2007 a la Fundación Eclipse. La
fundación lo ha publicado bajo una licencia libre y lo mantiene como método de ejemplo dentro
del proyecto Eclipse Process Framework.
Su proceso puede ser personalizado y extendido para distintas necesidades, que aparecen a lo
largo del ciclo de vida del desarrollo de software, dado que su modelo de desarrollo es iterativo
incremental, es capaz de producir versiones. Además, una de sus mayores ventajas es que
puede ser acoplado para proyectos pequeños, dado que en su gráfica de roles aparecen 4
personas, que pueden trabajar bien manejando esta metodología.
Como mantiene las bases de RUP, aún maneja procesos tan importantes como Manejo de
Riesgos, que es una parte del desarrollo de software que no se puede descuidar. Una
desventaja es que se puede utilizar este modelo sin tanto formalismo y se puede caer en el
desorden y perder la trazabilidad del proyecto. [OPENUP web]
Pueden distinguirse tres Niveles o Capas en OpenUP, tal como se aprecia en la Figura 2.5.1:
Micro incrementos, ciclo de vida de la iteración y ciclo de vida del proyecto.
Figura 2.5.1: Capas de OpenUP: micro incrementos, ciclo de vida de la iteración y del proyecto
[OPENUP web]
Estructura el ciclo de vida del proyecto en cuatro fases: Inicio, Elaboración, Construcción y
Transición. Cada fase puede tener tantas iteraciones como sean necesarias. El ciclo de vida
del proyecto provee visibilidad y puntos de decisión a través del proyecto a stakeholders y
miembros del equipo. Esto brinda una visión efectiva y permite tomar decisiones de continuar
o no en los momentos apropiados. Un plan de proyecto define el ciclo de vida y el resultado
final es una aplicación entregada.
Los miembros del equipo trabajan colaborativamente. La presencia de los stakeholders como
miembros del equipo es crítica para la implementación exitosa de OpenUP. Además, los
miembros del equipo participan en daily stand up meetings para comunicar los estados y
situaciones. Los problemas se resuelven fuera de estas reuniones, similar a Scrum.
Todo el trabajo se lista, rastrea y asigna a través de la lista de ítems de trabajo (Work Items
List). Los miembros del equipo usan este simple repositorio para todas las tareas que necesitan
registrarse y rastrearse. Esto incluye todas las solicitudes de cambio, bugs y solicitudes del
stakeholder.
Los casos de usos se usan para elicitar y describir los requerimientos. Si bien los describen los
desarrolladores, son los Stakeholders responsables de revisar y certificar que los
requerimientos sean correctos. Los casos de uso se desarrollan de manera colaborativa.
Las pruebas (Testing) se realizan muchas veces en cada iteración, cada vez que se incrementa
la solución con el desarrollo de un requerimiento, cambio o arreglo de un bug. Estas pruebas
ocurren luego de que los desarrolladores han desarrollado la solución (a la que debe haberse
realizado la prueba de unidad) y la integren al código base. Estas pruebas ayudan a garantizar
que se está creando una solución estable y siempre está disponible a medida que progresa el
desarrollo.
Fomentar prácticas que permitan a los participantes del proyecto y los stakeholders desarrollar
una solución que maximice los beneficios de los stakeholders y sea compatible con
restricciones impuestas en el proyecto (de costes, plazos, recursos, normas, etc).
Promover las prácticas que fomenten un ambiente de equipo saludable y que permitan la
colaboración y desarrollo de un entendimiento compartido del proyecto.
Promover prácticas que permitan al equipo enfocarse en la arquitectura para minimizar los
riesgos y organizar el desarrollo
Balancear las prioridades involucradas para Colaboración con el cliente por sobre la
maximizar el valor para el stakeholder negociación contractual
Tabla 2.5.1: Mapping between OpenUP principles and Agile Manifesto [Baudino]
2.5.4 Roles
OpenUp describe un conjunto mínimo de seis roles que deben cubrirse al realizar un
desarrollo. Ver Figura 2.5.2.
• Prueba (Test): explica cómo proveer retroalimentación sobre la madurez del sistema
diseñando, implementando, ejecutando y evaluando pruebas. Es iterativa e
incremental. Aplica la estrategia de “prueba lo antes posible y con la mayor frecuencia
posible” para replegar los riesgos tan pronto como sea posible dentro del ciclo de vida
del proyecto.
2.5.5.1 Tareas
Una tarea es una unidad de trabajo que se puede solicitar que lo realice un rol de trabajo. En
OpenUP hay 19 tareas que los roles pueden realizar como actor principal (teniendo la
responsabilidad de ejecutar esas tareas) o adicionales (ayudando y proveyendo información
que se usa al ejecutar la tarea). La naturaleza colaborativa de OpenUP se ve manifiesta al
tener los actores principales de las tareas interactuando con otros individuos al realizar las
tareas. Las tareas se enumeran en la siguiente tabla.
Disciplina Tarea
Arquitectura • Refinar la arquitectura
• Visualizar (Preveer) la arquitectura
Desarrollo • Implementar las pruebas de desarrollo
• Implementar la solución
• Correr las pruebas de desarrollo
• Integrar y crear el desarrollo
• Diseñar la solución
Administración de • Evaluar resultados
Proyecto • Administar la iteración
• Planear la iteración
• Planear el proyecto
• Solicitar cambios
Requerimientos • Identificar y resaltar requerimientos
• Detallar Escenarios de Caso de Uso
• Detallar requerimientos generales del sistema
• Desarrollar una visión técnica
Prueba • Crear Casos de Prueba
• Implementar pruebas
• Correr pruebas
Tabla 2.5.2: Tareas de OpenUP (armado con información de [OPENUP web])
2.5.6 Artefactos
Un artefacto (work product) es algo producido, modificado o utilizado por una tarea. Los Roles
son responsables de crear y actualizar los artefactos. Los artefactos están sujetos a control de
versión a través del ciclo de vida del proyecto. Los 17 artefactos de OpenUP se consideran
esenciales y son los que debe utilizar un proyecto para capturar información relacionada con el
producto y el proyecto. No hay obligación de capturar la información en artefactos formales. Se
puede capturar la información informalmente en pizarras (por ejemplo para el diseño y la
arquitectura), notas de reuniones (por ejemplo para la evaluación del estado), etc. Los
proyectos pueden utilizar los artefactos de OpenUP o reemplazarlos con los propios. En la
siguiente tabla se describe brevemente cada uno de los artefactos.
Administración Lista de ítems Datos del Contiene una lista de todo el trabajo
de Proyecto de trabajo proyecto calendarizado a realizarse dentro del
proyecto, así como el trabajo propuesto
que puede afectar al producto en este o
futuros proyectos. Cada ítem de trabajo
puede contener referencias a información
relevante para llevar a cabo el trabajo
descripto dentro de él.
Así como el proyecto tiene un ciclo de vida, las iteraciones tienen su ciclo de vida. Este ciclo de
vida de las iteraciones tiene un enfoque diferente para los equipos dependiendo si es la
primera o la última semana de la iteración, ver Figura 2.5.4. Una iteración comienza con una
reunión de planificación de unas pocas horas de duración. Los primeros días el enfoque está
puesto en seguir planificando y definir la arquitectura, entre otras cosas, para entender las
dependencias y orden lógico de los ítems de trabajo y de los impactos en la arquitectura del
trabajo a realizar. La mayor parte del tiempo en una iteración se emplea para ejecutar los
microincrementos. Cada microincremento debe entregar código probado al incremento así
como artefactos validados. Para dar mayor disciplina, al final de cada semana se produce un
incremento estable. Se emplea mayor atención en ese incremento para asegurar que no se
está socavando la calidad y problemas son resueltos tempranamente de tal forma que no
peligra el éxito de la iteración. La última semana o últimos días de la iteración, generalmente
tienen un énfasis mayor en pulir y arreglar errores que en semanas anteriores, aunque se
agregan nuevas características según sea apropiado. El objetivo es nunca socavar la calidad, y
así producir un incremento de producto útil de alta calidad al final de la iteración. A iteración
termina con una valoración (con los stakeholders) de lo que se construyó, y una retrospectiva
para entender cómo mejorar el proceso para la siguiente iteración.
Dar al equipo la posibilidad de organizar su trabajo y determinar la mejor forma de alcanzar los
objetivos motiva a los miembros del equipo a hacer lo mejor que pueden. También, los ayuda a
colaborar entre sí para asegurar que se aplican las habilidades apropiadas. La auto
organización impacta en muchas áreas, incluyendo cómo planificar o asumir los compromisos
(por el equipo, no individuos), cómo se asigna el trabajo (no se asigna a alguien sino que cada
uno elige qué hacer), y cómo los miembros del equipo ven los roles en el proyecto (en primer
lugar miembros del equipo, luego la función del trabajo).
2.5.8 Microincrementos
Un microincremento es un paso pequeño, medible hacia los objetivos de una iteración.
Representa unas pocas horas hasta un día de trabajo realizado por una o unas cuantas
personas colaborando para alcanzar el objetivo
Un microincremento debe estar bien definido y se debe poder rastrear diariamente su progreso.
En un ítem de trabajo se especifican y rastrean los microincrementos. Ejemplo de
microincrementos:
• Identificar Stakeholders. Dentro de una tarea que puede llevar unas semanas
como es Definir la Visión, esta actividad constituye un microincremento.
• Definir el plan de la iteración. Podría incluir una reunión para crear el plan y
realizar alguna preparación previa para la misma.
Para ofrecer un comienzo rápido a los equipos para planear sus iteraciones, OpenUp propone
desglosar el trabajo para cada iteración en un WBS (Work Breakdown Structure en castellano
Estructura de Desglose de Tareas, EDT), y un WBS para todo el proceso del proyecto (de
extremo a extremo).
En cada fase se desarrolla y entrega versiones del software estables y que funcionan. La
finalización de cada iteración representa un hito menor del proyecto y contribuye a lograr el
éxito del hito mayor de la fase donde se alcanzan los objetivos de la fase. Cada fase termina
con un hito esperado proveyendo una revisión haciendo surgir y respondiendo un conjunto de
preguntas que son comúnmente críticas para los stakeholders:
• Inicio (Inception). ¿Se está de acuerdo con el alcance y los objetivos? ¿Se debe
continuar o no con la realización del proyecto?
La siguiente figura muestra el ciclo de vida de Open UP. Este ciclo de vida del proyecto provee
a los stakeholders y miembros del equipo con visibilidad, sincronización, puntos de decisión a
través del proyecto permitiendo momentos de revisión y decisiones de continuar o no
continuar.
El ciclo de vida del proyecto provee a los stakeholders con revisión, transparencia y
mecanismos de dirección para controlar las bases del proyecto, el alcance, la exposición a los
riesgos, el valor provisto y otros aspectos del proceso.
Cada iteración entrega un incremento del producto, que provee a los stakeholders la
oportunidad de entender el valor que ha sido entregado y qué tan bien está marchando el
proyecto. También le brinda al equipo de desarrollo la oportunidad de realizar cambios al
proyecto para optimizar la salida.
Uno de los objetivos del ciclo de vida del proyecto es enfocarse en dos conductores claves de
los stakeholders: reducción de riesgo y creación de valor. Las fases de OpenUP enfocan al
equipo en la reducción del riesgo relacionado con preguntas a ser contestadas al final de la
fase, mientras se rastrea la creación de valor, ver Figura 2.5.6.
Figura 2.5.6: Reducción de Riesgo (curva roja) y creación de valor (curva verde) durante el
ciclo de vida del proyecto.[OPENUP web]
Hay cuatro objetivos en esta fase que clarifican el alcance, objetivos del proyecto y factibilidad
de la solución pretendida: [Kroll 2003]
• Identificar las funcionalidades claves del sistema. Decidir qué requerimientos son
más críticos.
Hay tres objetivos que ayudan a tratar los riesgos asociados con los requerimientos,
arquitectura, costos y calendario [Kroll 2003]:
Esencialmente, los principales objetivos para la elaboración están relacionados con el mejor
entendimiento de los requerimientos, creando y estableciendo una línea base de la arquitectura
para el sistema, y mitigando los riesgos de mayor prioridad.
Hay ciertos objetivos que ayudan a tener un desarrollo costo efectivo para un producto
completo, una versión operativa del sistema, que puede entregarse al usuario [Kroll 2003]:
Hay tres objetivos que ayudan a refinar la funcionalidad, performance, y calidad global del
producto beta completado en la fase anterior [Kroll 2003]:
• Realizar una Prueba Beta para validar que se cumplen las expectativas del usuario.
• Lograr constancia por parte de los stakeholders para asegurar que el despliegue esté
completo. Hay varios niveles de pruebas para la aceptación del producto.
2.5.11 Conclusiones
Open UP es una metodología de desarrollo completa, en el sentido que puede verse como un
proceso entero para construir un sistema. Mantiene las características esenciales de RUP y
realiza un manejo de Riesgos pero, a su vez, define cuatro principios que lo rigen y que pueden
vincularse con los cuatro valores del Manifiesto ágil.
Las iteraciones son de tiempo prefijado y su proceso puede ser personalizado y extendido para
distintas necesidades. Si bien se proponen una serie de artefactos esenciales, éstos se pueden
reemplazados con los propios del equipo de desarrollo. Cada iteración entrega un incremento
del producto, que provee a los stakeholders la oportunidad de entender el valor que ha sido
entregado y comprender qué tan bien está marchando el proyecto para, de esta forma, brindar
al equipo de desarrollo la oportunidad de realizar cambios al proyecto para optimizar la salida.
2.6.1 Introducción
Según Alistair Cockburn, el desarrollo de software puede caracterizarse como un juego
cooperativo de invención y comunicación con restricciones económicas, descripto en Agile
Software Development [Cockburn 2002]. La forma en que cada equipo juega cada partido tiene
mucho que ver con la salida del proyecto y el software resultante. Crystal Clear ataca
directamente el juego económico cooperativo, apuntando dónde prestar atención, dónde
simplificar y cómo variar las reglas.
Crystal Clear no aspira a ser la “mejor” metodología; aspira a ser "suficiente", de tal manera
que el equipo lo amolde a sus necesidades y lo use. Alistair Cockburn [Cockburn 2002]
Crystal Clear es una metodología que funciona con personas, descripta de la manera más
simple como sigue [Cockburn 2002]:
El diseñador líder y otros dos a siete desarrolladores en una gran habitación o habitaciones
contiguas, con radiadores de información, como pizarrones y rotafolios en la pared, teniendo
acceso a usuarios claves, distracciones mantenidas al margen, entregando y corriendo código
usable y probado cada mes o dos (a lo sumo tres), reflexionando periódicamente y ajustando
su propio estilo de trabajo.
Ya que es difícil recordar los 10 principios, ellos se derivan de una idea, la del juego
cooperación – económico, que reencuentra descripto en [Cockburn 2004]. El manifiesto del
juego cooperativo dice:
La ventaja de esta expresión es que resalta un par de aspectos importantes del desarrollo de
software:
• Son las personas y su invención y comunicación que hacen que surja el software.
• Hay dos objetivos en juego en cada instante: entregar el sistema actual y definir las
bases para el siguiente juego. Cada decisión, realizadas por cualquier persona
involucrada, tiene consecuencias económicas. La mayoría de las recomendaciones de
esta metodología están basadas en este manifiesto del juego cooperativo.
El desarrollo de software es un juego de personas trabajando con y contra personas. Todos los
motivos y emociones humanas se aplican y deben tenerse en cuenta, aún en Crystal.
Figura 2.6.1: Cobertura de diferentes tipos de proyectos dentro de Crystal. [Cockburn 2004]
El autor caracteriza a las metodologías Crystal por color, según el número de personas que son
coordinadas: Clear es para equipos de 8 personas o menos ubicadas en un mismo lugar,
Amarillo es para equipos de 10 20 personas, Naranja es para equipos de 20 50 personas,
Rojo para equipos de 50 100 personas, y así sucesivamente, pasando por el Marrón, Azul,
Violeta.
• Prioridades Seleccionadas
• Propiedades Seleccionadas
• Principios Seleccionados
• Ejemplos de Proyecto
• Habitabilidad (habitability) de las convenciones. Las reglas necesitan ser tales que las
personas dentro del equipo puedan vivir con ellas y no las ignoren.
Las prioridades interactúan entre sí. La habitablilidad significa que se acepta que un conjunto
de reglas dado puede no ser lo más eficiente posible. La Prioridad de seguridad significa que
las reglas elegidas deben ser lo suficientemente buenas para obtener resultados adecuados.
Parte de la eficiencia y habitabilidad es enfrentarse al hecho de que cada proyecto es
levemente diferente y necesita su propia metodología hecha a la medida. Cada equipo adapta
la metodología base según sus requerimientos, experiencia, y características tecnológicas.
Esto debe hacerse rápidamente, para que no sea costoso. Para poder definir un conjunto de
reglas básicas para un proyecto en particular, Alistair Cockburn construye una tabla de dos
entradas, como se mostró en la Figura 2.6.1.
Crystal conduce al equipo del proyecto hacia siete propiedades de seguridad, las tres primeras
son el corazón de Crystal. Las otras pueden agregarse para aumentar el margen de seguridad.
Las propiedades son:
• Entregas Frecuentes
• Mejora reflexiva
• Comunicación cercana
• Foco
• Podría no ser posible eliminar todos los productos intermedios y documentos legales
como documentos de requerimientos, diseño y planes de proyecto; pero pueden
reducirse ya que hay caminos de comunicación cortos, ricos e informales en el equipo
y se entrega de manera temprana y frecuente software funcionando y probado.
Crystal Clear es una optimización de Crystal que puede aplicarse cuando el equipo consiste de
2 a 8 personas ubicadas en la misma habitación u oficinas adyacentes. La propiedad de
comunicación cercana se refuerza a comunicación "osmótica", significando que las personas
escuchan a los otros discutiendo prioridades, estado, requerimientos, y diseño de proyecto
diariamente. Esta comunicación reforzada permite al equipo trabajar más desde una
comunicación tácita y notas pequeñas que de otra forma no sería posible.
• Tester y writer: suelen ser asignaciones temporales que van rotando. Algunos equipos
pueden contratar un writer por períodos de tiempo o tener un tester dedicado
trabajando e inclusive, sentado con ellos.
Los productos de trabajo listados aquí son un conjunto por defecto para un proyecto típico de
Crystal Clear porque han demostrado, según Cockburn, su valor en muchos proyectos. Pero,
depende del equipo del proyecto agregar, sacar o modificar la lista basados en su situación.
Cada ítem sirve a un propósito de comunicación en el juego económico cooperativo. Hay casi
24 productos de trabajo, dependiendo de cómo se los cuente. Los productos de trabajo aquí
son livianos y están distribuidos a través de los roles, así el equipo no lo encuentra agobiante
en la práctica.
No se puede definir un grupo de productos que sea el corazón. Si se saltean muchos productos
de trabajo se pierde alineación y visibilidad. La dirección y apoyo pueden sufrir por ello. Por
otro lado, no sería lo más apropiado insistir en realizar todos ya que los productos de trabajo
específicos que necesita el equipo varían según técnicas, tecnologías, hábitos de
comunicación y moda que todas son cambiantes. El desacuerdo dentro del equipo y la falta de
comunicación con el mundo exterior aumenta con cada omisión. Los riesgos se acumulan,
lentamente al principio, hasta que el proyecto no está en zona segura, y nunca está claro
cuándo pasa de zona segura a no segura.
A continuación se presenta una tabla indicando que rol es el último responsable de cada
producto. Muchos productos tienen una forma informal y otra formal de utilizarlos. Los
productos de Crystal se describen en detalle en [Cockburn 2004] y para no exceder con
información no se incluyen en el informe.
Las Figuras 2.6.2 a 2.6.5 muestran diferentes formas de desenrollar estos ciclos. Se puede
notar que episodios, días y períodos de integración pueden anidarse de diferente forma dentro
de una iteración. Las Figuras 2.6.3 y 2.6.4 muestran dos formas posibles.
Figura 2.6.3: Un ciclo de iteración, integrando varias veces por día [Cockburn 2004]
Figura 2.6.4: Un ciclo de iteración con varios días por integración [Cockburn 2004].
La Figura 2.6.5 muestra la expansión de cada ciclo de forma separada, listando las actividades
específicas que ocurren para ese tipo de ciclo
Figura 2.6.5: Los ciclos expandidos para mostrar actividades específicas. [Cockburn 2004]
De los ciclos antes mencionados se ampliarán solo algunos de ellos que requieren mayor
explicación.
• Dos o más ciclos de entrega: Este ciclo tiene tres o cuatro partes: una re calibración
del plan de entregas, una serie de una o más iteraciones, cada una resultando en
código integrado y probado, entrega a usuarios reales y un ritual de finalización,
1. ¿Cómo fue la distribución? ¿Qué se podría hacer para reducir los padecimientos a
la hora de distribuirlo a los usuarios y entrenarlos?
2. ¿Qué piensan los usuarios sobre el sistema? ¿Cuáles son los puntos fuertes y
débiles?¿Se puede aprender algo de lo que realmente necesitan los usuarios
respecto de lo solicitado originalmente?
La reflexión en el proceso de entrega es la misma que para cualquier otro workshop de
reflexión. El grupo se pregunta qué es lo que quieren mantener o hacer diferente. El
punto a destacar es que se revisa el producto, no el proceso.
Luego, el equipo simplemente realiza sus actividades normales de desarrollo. Los episodios de
desarrollo consisten en simplemente tomar una asignación de trabajo, desarrollarla y
chequearla respecto al sistema de administración de configuración, más realizar la integración
y pruebas de sistema, si se usa esa convención en el equipo. Probablemente discutan y
muestren su trabajo al sponsor o usuario experto.
Si se trabaja con períodos muy cortos, el equipo suele olvidarse de llevar el sistema a usuarios
reales. Se puede agregar un súper ciclo, que incluya visitas del usuario o sino crear
explícitamente una agenda de Visitas del usuario. Si por el contrario se trabaja en ciclos muy
largos, es recomendable tener un workshop de reflexión intermedio ya que permite descubrir si
se ha detectado algo que pudiera poner en riesgo el éxito de la iteración.
Dentro del ritual de finalización, se realiza el workshop de reflexión. Se debe revisar cada
aspecto de sus trabajos, desde sus relaciones con el sponsor y usuarios, hasta patrones de
comunicación, hostilidad, la forma de recolectar requerimientos, convenciones de codificación,
el entrenamiento que obtienen o no obtienen, nuevas técnicas que quisieran probar, etc. En
iteraciones muy cortas es mejor realizarlos mensualmente o cada dos meses, para que se
reflexione sobre un periodo mayor (Notar que esto crea el súper ciclo mencionado
anteriormente). El workshop de fin de ciclo brinda un tiempo para reflexionar en lo que
consideran positivo y negativo a cerca de sus hábitos de trabajo.
Después de la primera iteración o ciclo de entrega, muy a menudo los equipos ajustan sus
estándares, obtienen más entrenamiento, hacen más eficientes sus flujos de trabajo, aumentan
las pruebas, encuentran un “usuario amigable”, definen las convenciones de administración de
configuración. Al final de ciclos subsiguientes, sus cambios tienden a ser mucho menores, a
menos que estén experimentando con un proceso radicalmente nuevo.
Se suelen realizar también actividades que logren descomprimir la saturación que tiene el
equipo. Se pude utilizar una serie de juegos de computadora, juegos de ping pong, una
discusión ligera sobre algún tópico profesional, un paseo en bicicleta, una salida a una
confitería.
Para Crystal Clear programar y diseñar no vale la pena discriminarlos, van juntos. La frase
“tomar una tarea de diseño pequeña, programarla hasta su finalización” significa tomar una
tarea pequeña que requiere diseño y programación, luego diseñar, programar, depurar y
probarla hasta la finalización.
2.6.5 Conclusiones
Esta metodología se centra en las personas, la interacción, comunicación directa, habilidades,
talentos con la convicción que son éstos quienes tienen el efecto mayor en el desempeño,
dejando al proceso en un segundo lugar [Highsmith]. Cada equipo tiene un conjunto distinto de
talentos y habilidades y por lo tanto cada equipo debe utilizar un proceso de desarrollo
adaptado a él. Crystal Clear minimiza el proceso significativamente, una de las razones para
realizar esto es que exige que la ubicación del equipo esté en un solo lugar físico.
Es una metodología ágil con la cual el equipo no solo va haciendo evolucionar los entregables
sino el proceso mismo de desarrollo. Tal vez la contribución más importante es ofrecer las Siete
Propiedades de los Proyectos Exitosos. Cockburn ha estudiado proyectos ágiles exitosos y ha
identificado rasgos comunes entre ellos. Estas propiedades llevan al proyecto al éxito; en
cambio su ausencia pone en riesgo el proyecto. [Cockburn 2004]
A diferencia de XP, para el autor de esta propuesta, si todos agregan y modifican código puede
quedar desprolijo y llevar tiempo sacar mucha basura. Es mejor tener dueños de clases o
casos de uso. Cualquiera puede hacer un cambio a corto plazo pero debe notificar al dueño
para que lo revise.
TDD [Beck 2003] [Astels 2003], es un enfoque de desarrollo evolutivo que combina TFD (TestT
First Development) donde se escribe una prueba justo antes de escribir el código de
producción que cumpla con esa prueba y Refactorización. Para algunos el objetivo de TDD es
la especificación y no la validación [Martin 2003]. Es una manera de pensar a través de los
requerimientos o diseño antes de escribir código funcional, implicando que TDD es una técnica
importante para requerimientos ágiles y para diseño ágil. Para otros, TDD es una técnica de
programación. Ron Jeffries afirma que el objetivo de TDD es escribir código limpio que
funcione. Scott Amber adhiere a la primera línea de pensamiento. [AgileData web]
2.7.1 Procesos.
En esencia se siguen tres simples pasos que se repiten dentro de TDD:
• Refactorizar tanto el código viejo como el nuevo para que esté bien estructurado
Se sigue iterando paso a paso, con una prueba por vez, construyendo la funcionalidad del
sistema.
Programar la prueba primero (Test First Programming) provee dos beneficios principales. En
primer lugar es una forma de tener código auto probado ya que solo se escribe código
funcional para que una prueba sea superada. El segundo beneficio es que al pensar en las
pruebas primero fuerza a pensar acerca de la interfaz con el código primero. Esto hace
focalizarse en la interfaz y en cómo usar una clase ayudando a separar la interfaz de la
implementación [Fowler 2006d]
Según David Astels [Astels 2003] TDD es un estilo de desarrollo donde mantienes un juego de
pruebas del programador exhaustivo, ninguna parte del código pasa a producción a no ser
que pase sus juegos asociados, primero se escriben las pruebas y las pruebas determinan el
código que se necesita escribir para que puedan pasarse las pruebas.
Podrían simplificarse los pasos con el siguiente gráfico, ver Figura 2.7.1.
Amber utiliza una simple fórmula para explicar en qué consiste TDD, y es la siguiente:
Los pasos para TFD pueden verse en un diagrama de actividad, en la siguiente figura (Ver
Figura 2.7.2. El primer paso es agregar rápidamente una prueba, básicamente código
suficiente para que falle. Luego se corre la prueba para asegurar que falle realmente. Luego se
actualiza el código funcional para que pueda pasar las nuevas pruebas. El cuarto paso es
correr las pruebas nuevamente. Si fallan se debe actualizar el código funcional y volver a
probar. Una vez que las pruebas pasan, se comienza nuevamente, posiblemente se deba re
factorizar cualquier duplicación del diseño, volviendo a TFD en TDD.
Las pruebas del programador prueban que las clases se comporten de la forma esperada, son
escritas por los desarrolladores que escriben el código que será probado. Se llaman pruebas
del programador porque aunque se parecen mucho a las pruebas unitarias, se escriben por
diferentes motivos. Las pruebas unitarias se escriben para demostrar que el código escrito
funciona, en cambio, las pruebas del programador son escritas para definir qué significa que el
código funcione. También se llaman así para diferenciarlas de las pruebas escritas por los
usuarios.
En TDD se dispone de un gran juego de pruebas, esto es así porque no puede haber código si
no existen las pruebas que los prueben. Primero se escriben las pruebas y luego el código
que será probado, no hay por tanto código sin pruebas, concluyendo que las pruebas son por
tanto exhaustivas.
Esta característica recuerda una propiedad fundamental en TDD y es que una funcionalidad no
existe hasta que existe un juego de pruebas que vaya con él. Esta propiedad brinda la
oportunidad de utilizar un par de técnicas muy comunes como son el refactoring y la integración
continua. Ambas técnicas solo pueden ser ejecutadas si realmente se está seguro de que el
código sigue cumpliendo las características definidas en las pruebas.
Cuando se tiene una nueva funcionalidad, antes de implementarla se deben escribir sus
pruebas. Esta es una de las características más “extremas” de TDD. La manera de proceder es
escribir unas pruebas pequeñas y entonces, escribir un poco de código que las ejecute y las
pase, luego otra vez se amplían las pruebas, y se vuelve a escribir código, y así
sucesivamente.
Se está limitando la escritura de código a tan solo la prueba que ya se tiene implementada.
Solo se escribe lo necesario para pasar la prueba, esto quiere decir que se hace la cosa más
sencilla para que funcione.
• Cliente: Desarrolla las historias con los desarrolladores, las ordena según la prioridad y
escribe las pruebas funcionales.
• Desarrollador: Desarrolla las historias con el usuario, las estima, y entonces toma
responsabilidad de su desarrollo utilizando TDD, lo que quiere decir que ejecuta las
pruebas, implementa y refactoriza.
2.7.4 Prácticas.
Existen dos prácticas muy vinculadas con TDD, que forman parte de XP y fueron mencionadas
anteriormente. Sin estas prácticas TDD no podrían realizarse o sería casi una utopía. Las
prácticas son: refactoring e integración continua. Ambas fueron descriptas en la sección de XP.
2.7.4.1 Refactoring.
Esta actividad está muy relacionada con TDD ya que muchas veces se duplica código y se
introduce mucha “basura” cuando se está intentando programar algo para que pase unas
pruebas específicas. Se suele hacer refactorización cuando existe código duplicado, cuando se
percibe que el código no está lo suficientemente claro o cuando parece que el código tiene
algún problema. Luego de refactorizar se debe correr un juego de pruebas para verificar que no
se introdujeron cambios al comportamiento.
Fowler, [Fowler 2006d] recalca que la refactorización es clave en TDD ya que mantiene limpio
al código, sino se terminaría con una mezcla de agregaciones de fragmentos de código
2.7.5 Herramientas
Algunas herramientas fundamentales en el uso de TDD, ya que sin ellas sería imposible
realizar las tareas que la metodología propone, son.
2.7.6 Conclusiones
Test Driven Development es una de las metodologías con mayor acogida en el campo
profesional y que continúa expandiéndose debido a sus buenos resultados. La tendencia actual
es integrar TDD independientemente en cualquier metodología ya sea ágil [Schmidkonz 2007]
o tradicional [Letelier 2003] y aprovechar los beneficios de practicar una metodología que
siempre permite deshacer los errores, asegurar una calidad del producto y protegerse de
errores tanto malintencionados como humanos.
Dr. Hakan Erdogmus, editor jefe de IEEE Software [Hartmann 2008], comenta que TDD a
veces es entendido como un procedimiento de aseguramiento de lo calidad, provocando que
algunos administradores no lo utilicen porque creen que sus equipos ya tienen otros
procedimientos que garantizan la calidad. Hakan hace hincapié en que originalmente TDD fue
pensado como una técnica para mejorar la productividad y que el aumento de la calidad es un
efecto secundario, si bien actualmente se reconoce a TDD como una metodología ágil en si
misma.
2.8.1 Introducción
Unos años antes de la aparición de XP, en enero de 1994, se reunieron en Londres, Reino
Unido, un grupo de profesionales para discutir sobre la creación de un proceso iterativo
normalizado para el desarrollo RAD. RAD son las siglas de Rapid Application Development, un
método de desarrollo creado por James Martin que se caracteriza por usar un ciclo de vida
iterativo, prototipos y herramientas CASE (Computer Aided Software Engineering). Se formó un
consorcio sin fines de lucro e independiente. Este consorcio se dedicó a entender las mejores
prácticas en el desarrollo de aplicaciones y codificándola de tal forma que fuera ampliamente
enseñado e implementado. [Stapleton 1997]. El objetivo era desarrollar y promover de manera
conjunta un framework RAD independiente combinando sus mejores experiencias prácticas.
El resultado del trabajo de este consorcio, después de más de un año, fue DSDM (Dynamic
Systems Development Method), una forma de desarrollar sistemas de aplicación que realmente
satisfaga las necesidades del negocio. [Stapleton 1997]. La versión 1 fue publicada en febrero
de 1995. Este resultado fue un método genérico que cubre personas, proceso y herramientas y
que fue formado a partir de las experiencias de organizaciones de todo tipo de sector y tamaño.
DSDM Consortium es dueña y administra el framework DSDM y solo sus miembros pueden
emplearlo con fines comerciales. [Navegapolis web]. Habiendo empezado con 17 fundadores
ahora tiene más de mil miembros y ha crecido fuera de sus raíces británicas. Siendo
desarrollado por un consorcio, tiene un sabor diferente a muchos de los otros métodos ágiles.
Tiene una organización de tiempo completo que lo apoya con manuales, cursos de
entrenamiento, programas de certificación y demás.
Se considera a DSDM como el primer método ágil [Frankel 2004]. Estuvo representada en la
firma del Manifiesto Ágil y recientemente ha tenido un despertar en su popularidad,
especialmente en el Reino Unido. Esto es porque la APMG International, los fundadores de
Prince2, eligieron combinar DSDM Atern y PRINCE2 para producir un nuevo título:
Administración de Proyecto Ágil (Agile Project Management APM). El gobierno del Reino
Unido está buscando adoptar APM para todos sus proyectos IT. Se volvió popular en Europa,
si bien actualmente tiene presencia en Inglaterra, Estados Unidos, Benelux, Dinamarca,
Francia y Suiza; y con interés y contactos para futuras representaciones en Australia, India y
China [Navegapolis web].
Como todo enfoque ágil, DSDM ha ganado a través de la experiencia de los años. Dane Falker,
director de DSDM Consortium de Estados Unidos en 2001 afirma que si bien el acrónimo se
mantiene igual, las palabras y significado han cambiado, ver Figura 2.8.1. [Highsmith]
Antes
Ahora
D Dynamic D Dynamic
S Systems S Solution
D Development D Delivery
M Method M Model
DSDM enfatiza el uso de Workshops facilitadores tanto en las fases de Estudio de Negocio
como del Modelo Funcional para involucrar los clientes y usuarios claves en tener el proyecto
iniciado apropiadamente. [Highsmith]
2.8.2 Contexto
El modelo ágil que más áreas comprende es DSDM. Es la más veterana de las metodologías
ágiles, y la más próxima a los métodos formales; de hecho, la implantación de un modelo
DSDM en una organización, la lleva a alcanzar lo que en CMM (modelo no ágil) sería un nivel 2
de madurez, dejando por tanto fuera de su ámbito los objetivos y práctica de los niveles 3, 4 y
5. Surgió en 1994 de los trabajos de Jennifer Stapleton, la actual directora del DSDM
Consortium. [Navegapolis 2010]
En común con los métodos ágiles, DSDM considera imprescindible una implicación y una
relación estrecha con el cliente durante el desarrollo, así como la necesidad de trabajar con
métodos de desarrollo incremental y entregas evolutivas.
DSDM cubre los aspectos de gestión de proyectos, desarrollo de los sistemas, soporte y
mantenimiento y se autodefine como un marco de trabajo para desarrollo rápido más que como
un método específico para el desarrollo de sistemas. [Navegapolis 2010]
Es frecuente que DSDM se implante en combinación con XP o Prince2, siendo este último un
modelo predictivo tal como lo es PMBOK utilizado por el gobierno del Reino Unido como el
estándar de administración de proyectos para proyectos públicos. [Navegapolis web]
DSDM Atern es un framework ágil, robusto y probado para la efectiva administración del
proyecto y entrega [DSDM web]. Se lo puede ver en forma gratuita y está complementado por
un conjunto completo de materiales, handbook y plantillas. Además el DSDM Consortium
brinda el soporte.
El Atern Agile framework y sus prácticas han estado largo tiempo a la cabeza de la entrega de
proyectos exitosos; experiencias del mundo real que asegura que los objetivos de tiempo,
calidad y costos están siempre administrados y son alcanzables. Se diseñó Atern para que sea
fácilmente adaptado y usado en conjunción con métodos de entrega (delivery methods) como
PRINCE2® y demostró que complementa y mejora apropiadamente sistemas de administración
de calidad trabajados incluyendo aquellos que cumplen CMMI e ISO9001.
• Se prioriza el trabajo según la necesidad del negocio y la habilidad de los usuarios para
acomodar los cambios en la escala de tiempo acordada
El DSDM Consortium brinda el soporte y certifica Atern; la misión del DSDM Consortium sin
fines de lucro es promover las mejores prácticas en la entrega de un proyecto ágil
DSDM trata de evitar la falta de participación de los usuarios, la limitación en las oportunidades
de cooperación y colaboración, sistemas de baja calidad que no cumplen con los requisitos de
los usuarios, etc., todos estos son problemas que los grupos han encontrado. DSDM consiste
en técnicas de desarrollo y gestión del proyecto en la misma metodología.
El enfoque Atern para administración de proyectos (Figura 2.8.2 Diagrama de la derecha) fija el
tiempo, el costo y la calidad en la Fase de fundamentación mientras la contingencia se maneja
variando las características a entregar. Si es necesario, se descartan o difieren características
de menor prioridad con el consentimiento de todos los stakeholders. Así, un proyecto Atern
siempre entrega una solución viable y se garantiza por lo menos la entrega de un conjunto
mínimo de características en tiempo y presupuesto
En Atern se usan los principios para proveer una guía a través del proyecto. Hay 8 principios y
todo el framework completo puede derivarse a partir de ellos. En Atern existe una diferencia
respecto a DSDM 4.2 ya que para la versión DSDM 4.2 se definieron 9 principios. Los
principios están basados en las mejores prácticas en el verdadero sentido. Definen “la forma en
que deben hacerse las cosas” [DSDM web]. No cumplir con uno de ellos podría llevar al
fracaso ya que son los bloques básicos sobre los que se apoya DSDM Atern [DSDM web].
2.8.5 Roles.
DSDM define tres grupos de roles: roles del proyecto, roles del desarrollo de la solución y otros
roles El siguiente diagrama (Figura 2.8.3), conocido como “bebé alienígena” o “alien baby” es
el diagrama estándar de DSDM Atern que ilustra estos tres grupos de roles.
Sponsor de negocio Es dueño del negocio. Asegura los fondos y recursos. Garantiza la toma
(Business Sponsor) de decisiones efectiva y se ocupa de las priorizaciones rápidamente
Visionario del Tiene la visión del negocio y el impacto en cambios del negocio más
negocio (Business amplios. Monitorea el progreso frente a la visión. Contribuye en las
Visionary) sesiones de los requerimientos claves, diseño y revisión.
Desarrollador de la
Crea la solución y participa por completo en todas las actividades de QA
solución (Solution
apropiadas.
Developer)
Probador de la Trabaja con otros roles del negocio para definir los escenarios de prueba
solución (Solution para la solución. Realiza reportes completos de resultados de pruebas
Tester) técnicas al líder de proyecto y al Coordinador técnico.
Analista del Apoya la comunicación entre miembros técnicos y del negocio del equipo.
Negocio (Business Administra todos los productos requeridos relacionados a los
Analyst) requerimientos del negocio. Asegura que las implicancias del negocio de
las decisiones diarias sean pensadas apropiadamente.
Entrenador Atern Ayuda a los equipos nuevos con Atern a sacarle el mayor provecho.
(Atern Coach) Adapta Atern a las necesidades del proyecto.
Facilitador de taller
Maneja y organiza talleres. Responsable del contexto no del contenido.
(Workshop
Independiente.
Facilitator)
2.8.7 Entregables
Los entregables están asociados con cada fase del ciclo de vida y se denominan productos
(ver Figura 2.8.6). No se requieren todos los productos para cada proyecto y la formalidad
dependerá del proyecto y la organización. Algunos productos son específicos de una fase
particular y otros pueden seguir evolucionando a través de fases subsecuentes.
El flujo básico de los productos a través del ciclo de vida se muestra a continuación. Por
ejemplo, el Estudio de Factibilidad (Feasibility Assessment) se completa con las Bases del
negocio (Business Foundations) y la Lista priorizada de Requerimientos (PRL). De manera
similar el Similarly, bosquejo de plan (Outline Plan) se refina en el Plan de Entrega (Delivery
Plan) para el proyecto que el equipo va refinando por turnos para crear el Plan de Tiempo
Prefijado individual y el plan de Despliegue para un incremento.
Atern permite al equipo decidir qué productos construir o como deben verse, permitiendo
adaptar los productos a la mayoría de los entornos. Algunos entornos podrían requerir todos
los productos y otros solo el PRL y la Solución que va evolucionando (similar a Scrum).
2.8.8 Conclusiones
DSDM es una metodología ágil que abarca todo el ciclo de vida de un proyecto de desarrollo.
Usa un ciclo iterativo para hacer evolucionar la solución apropiada para satisfacer los objetivos
del proyecto. Al dividir el proyecto en períodos cortos de tiempo (timeboxes), cada uno con
salidas esperadas muy claras, el Administrador del proyecto y los propios miembros del equipo
pueden ejercer el control.
Se definen claramente los roles y se divide el trabajo en time boxes con fechas de entrega
inamovibles y resultados preacordados. El tamaño de los equipos en DSDM varía desde un
mínimo de dos integrantes hasta seis, pudiendo coexistir múltiples equipos en un mismo
proyecto. [Carvajal 2008]
Atern puede usarse para complementar otras disciplinas de administración de proyecto como
PRINCE2™ y PMI (Project Management Institute) sin duplicar esfuerzos. Atern puede
incorporar otros enfoques ágiles, como XP y Scrum para proveer el framework de agilidad
necesario para permitir una entrega controlada de proyectos ágiles.
Falta aún un cuerpo de conocimiento consensuado respecto a los aspectos teóricos y prácticos
de la utilización de metodologías ágiles, así como una mayor consolidación de los resultados
de aplicación. La actividad de investigación está orientada hacia líneas tales como: métricas y
evaluación del proceso, herramientas específicas para apoyar prácticas ágiles, aspectos
humanos y de trabajo en equipo.
Según Gonda Breogán y Jodal Nicolás, hasta el 2006 la complejidad de los sistemas había
aumentado en un 2000% (datos al 2006) la productividad aunque los lenguajes de programación
solo aumentaron un 150%. Esta situación hace que los costos crezcan de una manera
desmesurada, considerando los costos como una composición de tiempo y dinero.
El tiempo es crucial a la hora de desarrollar sistemas y mantenerlos. Por otro lado, los sistemas de
software necesitan responder a nuevas necesidades: nuevos dispositivos, nuevos usuarios,
nuevas modalidades de uso, nuevas posibilidades de integración y, por todo esto, se hacen cada
día más y más complejos y los negocios están sujetos a un “time to market” cada vez más crítico y
que no pueden cambiar. Como consecuencia, cada día más negocios se están perjudicando por
los tiempos inadecuados de desarrollo de las nuevas soluciones y de mantenimiento de las
actuales. Debido a todo esto es evidente que es necesario un aumento de la productividad a través
de tecnologías de muy alto nivel.
La solución no está relacionada tanto en mejorar más todavía los lenguajes de programación sino
en la programación en sí. Hoy la enorme mayoría de los sistemas se desarrollan y mantienen con
programación manual. Si se "describe" en vez de "programar", se pueden maximizar las
descripciones declarativas y minimizar las especificaciones procedurales, haciendo desarrollo
basado en conocimiento y no en programación. Esta pretensión constituye un cambio esencial de
paradigma e implica un choque cultural.
La mayor consecuencia de lo anterior está constituida por los muy altos costos de mantenimiento:
en la mayoría de las empresas que trabajan de una manera convencional se admite que el 80% de
los recursos que teóricamente están destinados al desarrollo, realmente se utilizan para hacer
mantenimiento de las aplicaciones ya implementadas. Cuando se trata de aplicaciones grandes la
situación es aún peor: este mantenimiento comienza mucho antes de la implementación, lo que
hace que los costos de desarrollo crezcan en forma hiperlineal con respecto al tamaño del
proyecto.
Dado que es muy difícil, en este contexto, determinar y propagar las consecuencias de los cambios
de la base de datos sobre los procesos, es habitual que, en vez de efectuarse los cambios
necesarios, se opte por introducir nuevos archivos redundantes, con la consiguiente degradación
de la calidad de los sistemas y el incremento de los costos de mantenimiento.
Es previsible, en cambio, que se siga dando cada vez más solidez: disponibilidad, seguridad,
eficiencia, escalabilidad, optimización de recursos y que se neutralicen las nuevas amenazas como
las representadas por virus innovadores.
Hay grupos de informáticos que creen en “bases de datos inteligentes” que permitan alimentar en
forma declarativa todo el conocimiento necesario (fundamentalmente “reglas del negocio”, “reglas
de precedencia y/o de flujo” y “reglas de autorización” con toda la generalidad que esos conceptos
representan) de manera que cualquier usuario sin la necesidad de conocimiento técnico alguno, de
una manera simple, pueda hacer en cualquier momento todo aquello que quiera y esté autorizado
a hacer, sin necesidad de programar. Este es un nuevo paradigma.
Los sistemas basados en conocimiento (SBC) tratan de mantener una gran cantidad de
conocimiento y aportan mecanismos para manejarlo. La representación es declarativa: se separa
En el trabajo de Holger Knublauch [Knublauch 2002], se planteó un proceso ágil, que busca aplicar
las prácticas principales de XP para el modelado de conocimiento. El objetivo principal fue buscar
realizar el desarrollo de sistemas basados en conocimiento de manera más eficiente. Pero si bien
en ese trabajo se plantea combinar metodologías ágiles y desarrollo basado en conocimiento, el
concepto de desarrollo basado en conocimiento no es el mismo, en el caso del trabajo de
Knublauch está relacionado con la inteligencia artificial y la posibilidad de emular capacidades de
un dominio experto, mientras que en el trabajo planteado en esta tesis, el concepto de desarrollo
basado en conocimiento es diferente, por lo especificado en el párrafo anterior.
Ya en el año 1983 Blazer y sus colegas [Barler] habían propuesto un modelo operacional que
soporte la implementación automática a través de un CASE (asistente de desarrollo de software
computarizado). La especificación de software operacional es obviamente una parte integral de la
base de conocimiento de ingeniería de software. Crear este tipo de base de conocimiento, según
los mencionados autores, requiere que:
• Riguroso
• Representable en forma objetiva
• Operable
Una nueva manera de resolver el problema del desarrollo de sistemas pasa por la sustitución de la
premisa básica enunciada anteriormente: asumir que no es posible construir un modelo de datos
estable de la empresa y, en cambio, utilizar una filosofía incremental y hacer un Desarrollo Basado
en Conocimiento. Un esquema incremental parece muy natural: no se encaran grandes problemas,
sino que se van resolviendo los pequeños problemas a medida que se presentan. [Artech 2008].
La idea de este paradigma es partir de las diferentes visiones de sus usuarios. Cada usuario,
perteneciente a cualquier nivel de la empresa, conoce bien la visión de los datos con los que
trabaja a diario. Así, tomando como base este conjunto de visiones de datos, se encuentra el
modelo de datos ideal derivado de ellas (puede probarse rigurosamente que, dado un número de
visiones de usuarios, existe solo un modelo relacional mínimo que las satisface [Gonda 2007]).
Se puede pensar entonces en un proceso de ingeniería inversa (ver Figura 3.1.2) que, a partir de
una serie de visiones de datos de diferentes usuarios, desarrolla el modelo ideal y la base de datos
relacional correspondiente. Todo este conocimiento se puede sistematizar y todo este
conocimiento es lo que Gonda denomina una Base de Conocimiento. Además, como subproducto,
también se puede sistematizar una buena descripción de las visiones de los usuarios y, partiendo
de esto, se pueden generar, por ejemplo, los programas requeridos para operar con ellas.
Por lo tanto, resumiendo, este nuevo paradigma pretende capturar el conocimiento que existe en
las visiones de los usuarios, y sistematizarlo en una base de conocimiento (todo ello en forma
automática). La característica fundamental de esta base de conocimiento, que la diferencia de los
tradicionales diccionarios de datos, es su capacidad de inferencia: se pretende que, en cualquier
momento, se puedan obtener de esta base de conocimiento, tanto elementos que se han colocado
en ella, como cualquier otro que se pueda inferir a partir de ellos. Si este objetivo se logra, la base
de datos y los programas de aplicación pasan a ser transformaciones determinísticas de dicha
base de conocimiento y ello permite [Artech 2008]:
• Generarlos automáticamente
• Ante cambios en las visiones de los usuarios determinar el impacto de dichos cambios
sobre datos y procesos y propagar esos cambios generando:
El informe fue muy elogiado en su momento y, luego, casi olvidado. Más allá de todo esto, el
informe ANSI SPARC sigue siendo válido hoy. La mayor diferencia es la tecnología disponible. En
los años transcurridos, los cambios tecnológicos han sido muy importantes.
Analizando el asunto a la luz de la tecnología actual, los desarrolladores que trabajan con el nuevo
paradigma de desarrollo basado en conocimiento, concluyen que pueden existir varios modelos,
pero el modelo realmente importante para los usuarios y los desarrolladores, es el Modelo Externo:
en él se recoge el conocimiento exterior y todo lo demás como, otros modelos auxiliares que
pudieran ayudar, debe y puede inferirse automáticamente a partir de dicho Modelo Externo.
Ellos pone el énfasis en el Modelo Externo, porque es allí donde está el conocimiento genuino y
donde reposa la esencia (el “qué”) y es el realmente importante para los usuarios y los
desarrolladores. En él se recoge el conocimiento exterior y todo lo demás, como otros modelos
auxiliares que pudieran ayudar, puede inferirse automáticamente a partir de ese Modelo Externo.
Un “Modelo Externo” no puede contener ningún elemento físico o interno como: archivos, tablas,
entidades, relaciones entre entidades, índices o cualquier otro que pueda deducirse
automáticamente del mismo. Ante nuevas posibilidades de la tecnología y necesidades de los
clientes, lo primero a hacer es ampliar dicho Modelo Externo.
El Modelo Relacional está orientado a obtener una buena representación de los datos en una Base
de Datos, obedeciendo algunas condicionantes muy deseables: eliminar la redundancia e introducir
un pequeño conjunto de reglas, de manera de evitar las mayores fuentes de inconsistencia de los
datos e introducir un conjunto de operadores que permitan manipular los datos a buen nivel.
El Modelo Externo se utiliza, entonces, para obtener y almacenar el conocimiento. Este modelo
pretende ser la representación más directa y objetiva posible de la realidad, por ello, se toman las
visiones de los diferentes usuarios. Estas visiones son almacenadas en el modelo. Luego, se
captura todo el conocimiento contenido en ellas y se lo sistematiza para maximizar las capacidades
de inferencia. Con eso se logra la independencia de la implementación, porque se tiene una
descripción del sistema en alto nivel, descripción que solo cambiará si cambian las visiones sobre
el mismo. El Modelo Relacional se utiliza para representar y manipular los datos: es el modelo
interno o físico, pero será inferido por alguna herramienta que trabaje con este paradigma a través
de un procedimiento de ingeniería inversa. [MárquezLisboa 2007]
El desarrollador puede alterar, modificando objetos de la realidad del usuario, el Modelo Externo y
las modificaciones se propagarán automáticamente a todos los elementos que lo necesiten: otros
elementos de la Base de Conocimiento, Base de Datos y programas de la aplicación. De la misma
manera, el desarrollador no puede alterar directamente ningún elemento que no pertenezca al
Modelo Externo.
A través de Herramientas Case Específicas creadas para tal fin se pretende dedicar la atención
únicamente al Modelo Externo (el “qué”) y abstenerse de tratar la Base de Conocimiento, que lo
contiene y lo mantiene, (y que forma parte del “cómo”: un sofisticado conjunto de herramientas
matemáticas y lógicas sobre las que se basan los procesos de inferencia y resultados intermedios
utilizados para aumentar la eficiencia de dichas inferencias). Si bien el “qué” y el “cómo” no
funcionan uno sin el otro, si el “qué” no es correcto, todo está equivocado. De lo anterior se puede
inferir algo muy importante: todo el conocimiento está contenido en el Modelo Externo y, por ello,
mañana se podría soportar la Base de Conocimiento de una manera totalmente diferente y el
conocimiento de los clientes seguiría siendo utilizable sin problema alguno.
3.1.2 Genexus
“El objetivo de Genexus es [a través de la descripción de las visiones de los
usuarios] conseguir un muy buen tratamiento automático del conocimiento de los
sistemas de negocios.” Breogán Gonda & Nicolás Jodal
Según los propios autores Genexus es, esencialmente, un sistema que permite una buena
administración automática del conocimiento de los sistemas de negocios [Gonda 2010]. Genexus
es una herramienta que parte de las visiones de los usuarios; captura su conocimiento y lo
sistematiza en una base de conocimiento. A partir de esta última, Genexus es capaz de diseñar,
generar y mantener de manera totalmente automática la estructura de la base de datos y los
programas de la aplicación, es decir, los programas necesarios para que los usuarios puedan
operar con sus visiones. [Genexus web] El desarrollador describe sus aplicaciones en alto nivel (de
manera mayormente declarativa), a partir de lo cual se genera código para múltiples plataformas.
Genexus incluye un módulo de normalización, que crea y mantiene la base de datos óptima
(estructura y contenido) basada en las visiones de la realidad descriptas por los usuarios utilizando
un lenguaje declarativo, ver Figura 3.1.4 y Figura 3.1.5. [Artech 2008]
La base de conocimiento de Genexus tiene una gran capacidad de inferencia lógica: en cualquier
momento es capaz de proporcionar cualquier conocimiento que se ha almacenado en ella o que
puede inferirse lógicamente de aquellos almacenados en ella. Basado en esta capacidad de
inferencia es capaz de proyectar, generar y mantener, en forma 100% automática, la base de datos
y los programas necesarios para satisfacer todas las visiones de usuarios conocidas en un
determinado momento.
La versión X posee una arquitectura extensible, por lo cual pueden agregarse al producto paquetes
de software, conocidos como extensiones, capaces de interactuar con la base de conocimiento,
pudiendo ser desarrolladas por terceros [Gonda 2010].
Una parte considerable del total de software producido en Uruguay se elabora con esta
herramienta creada y mantenida por una empresa uruguaya, Artech y en Salta existen varias
empresas del ámbito público y privado que también las utilizan.
• Integración del conocimiento de diversas fuentes para atender necesidades muy complejas
con costos en tiempo y dinero muy inferiores a los habituales.
• Generación para las tecnologías futuras, cuando esas tecnologías estén disponibles, a
partir del conocimiento que, hoy, atesoran los clientes Genexus en sus Bases del
Genexus es una herramienta que parte de las “visiones de los usuarios”; captura su conocimiento y
lo sistematiza en una base de conocimiento. Genexus almacena en una Base de Conocimiento
todos los elementos necesarios para construir la aplicación, y luego la utiliza para el desarrollo del
sistema, construyendo automáticamente el modelo de datos en forma normalizada, y también
utilizando el lenguaje de programación y base de datos que se le indique. A partir de su base de
conocimiento, Genexus es capaz de diseñar, generar y mantener de manera totalmente automática
la estructura de la base de datos y los programas de la aplicación (los programas necesarios para
que los usuarios puedan operar con sus visiones). Así, permite obtener un proyecto con el
conocimiento de la empresa. Todo ese conocimiento reglas de negocio, diálogos, controles,
reportes que hoy están en un lenguaje de programación determinado, pueden ser convertidos a
otros lenguajes sin necesidad de arrancar de cero. O sea que se reutiliza el conocimiento porque la
Base de Conocimiento es conocimiento independiente de la plataforma.
En resumen, una aplicación comienza con un diseño, luego se realiza el prototipo, posteriormente
se implementa o pone en producción y en cualquiera de los pasos anteriores se puede regresar al
diseño para realizar modificaciones.
• Diseño
Esta tarea es realizada conjuntamente por el analista y el usuario, y consiste en identificar y
describir las visiones de datos de los usuarios. El trabajo se realiza en el ambiente del usuario.
Este esquema permite trabajar con un bajo nivel de abstracción, utilizando términos y conceptos
que son bien conocidos por el usuario final.
Una consecuencia muy importante, es que la actitud del usuario se transforma en francamente
participativa. El sistema pasa a ser una obra conjunta y, como el usuario sigue permanentemente
su evolución, su calidad es mucho mejor que la habitual.
Partiendo de los objetos descritos, el modelo de datos físico es diseñado con base en la Teoría de
Bases de Datos Relacionales, y asegura una base de datos en tercera forma normal (sin
redundancia). Esta normalización es efectuada automáticamente por Genexus. El analista puede,
sin embargo, definir redundancias que, a partir de ello, pasan a ser administradas (controladas o
propagadas, según corresponda), automáticamente por Genexus.
El repositorio de Genexus mantiene las especificaciones de diseño en forma abstracta, o sea que
no depende del ambiente objeto, lo que permite que, a partir del mismo repositorio, se puedan
generar aplicaciones funcionalmente equivalentes, para ser ejecutadas en diferentes plataformas.
• Prototipado
En las tareas de diseño están implícitas las dificultades de toda comunicación humana:
o Como muchos de estos problemas sólo son detectados en las pruebas finales del sistema,
el costo (tiempo y dinero) de solucionarlos es muy grande.
o La realidad cambia, por ello, no es razonable pensar que se pueden congelar las
especificaciones mientras se implementa el sistema.
o La consecuencia de la congelación de las especificaciones, es que se acaba
implementando una solución relativamente insatisfactoria.
El impacto de estos problemas disminuiría mucho si se consiguiera probar cada especificación,
inmediatamente, y saber cuál es la repercusión de cada cambio sobre el resto del sistema.
Una primera aproximación a esto, ofrecida por diversos sistemas, es la posibilidad de mostrar al
usuario formatos de pantallas, informes, etc. animados por menús. Esto permite ayudar al usuario
a tener una idea de qué sistema se le construirá pero, posteriormente, siempre se presentan
sorpresas.
Una situación bastante diferente sería la de poner a disposición del usuario para su ejecución,
inmediatamente, una aplicación funcionalmente equivalente a la deseada, hasta en los mínimos
detalles. Esto es lo que hace Genexus: Un prototipo Genexus es una aplicación completa,
funcionalmente equivalente a la aplicación de producción.
• Implementación
Genexus genera automáticamente el código necesario para:
Recientemente en abril de 2014 se lanzó Genexus X Evolution 3 que acompaña los nuevos
avances en la tecnología, incorporando un generador web basado en HTML5 y CSS3, Integración
Automática en la Nube, y el generador de aplicaciones nativas para dispositivos móviles, con
soporte para las plataformas más populares del mercado: Android, Blackberry e iOS.
Genexus genera código: para múltiples lenguajes, incluyendo: Cobol, RPG, Visual Basic, Visual
FoxPro, Ruby, C#, Java; para múltiples plataformas nativas para dispositivos móviles, web
compatibles con todos los browsers, y para servidores IBM, Apache y Windows. Los DBMSs más
populares son soportados, como Microsoft SQL Server, Oracle, IBM DB2, Informix, PostgreSQL y
MySQL
Los ambientes y lenguajes más importantes actualmente soportados hasta la fecha de edición de
este documento se detallan en la siguiente tabla:
También en la nueva versión, se ha mejorado el lenguaje del corazón de Genexus que brinda
mayor flexibilidad a los desarrolladores.
• Mantenimiento
Esta es una de las características más importante de Genexus, y la que lo diferencia de manera
más clara de sus competidores: el mantenimiento, tanto de la base de datos (estructura y
contenido) como de los programas, es totalmente automático.
Análisis de impacto: Una vez descritos los cambios de las visiones de usuarios, Genexus
analiza automáticamente cual es el impacto de los mismos sobre la base de datos y
produce un informe donde explica cómo debe hacerse la conversión de los datos y, si
cabe, qué problemas potenciales tiene esa conversión (inconsistencias por viejos datos
ante nuevas reglas, etc.). El analista decide si acepta el impacto y sigue adelante o no.
Generación de programas de conversión: Una vez que los problemas han sido
solucionados o bien se ha aceptado la conversión que Genexus sugiere por defecto, se
• Documentación
Todo el conocimiento provisto por el analista, o inferido por GeneXus, está disponible en un
repositorio activo, que constituye una muy completa documentación online, permanentemente
actualizada.
o Completitud: Mide el porcentaje de código del sistema del usuario que es generado y
mantenido automáticamente por Genexus. Desde 1992 la completitud alcanzada por
Genexus es siempre de un 100%, Éste es un compromiso fundamental porque implica una
propagación automática de los cambios, que implica una disminución dramática de los
costos de desarrollo y mantenimiento.
o Usabilidad: Mide la facilidad de uso. Y pretende hacerlo con carácter general: facilitar el
uso a los usuarios técnicos, pero también aumentar el alcance permitiendo que cada vez
más usuarios no técnicos puedan utilizar Genexus con provecho. El solo hecho de utilizar
Genexus implica un gran aumento de la usabilidad: un desarrollador Genexus puede
desarrollar excelentes aplicaciones para una determinada plataforma sin necesitar de un
conocimiento profundo de esa plataforma lo que significa un nivel mínimo importante de
usabilidad.
Usualmente, los clientes de Genexus lo utilizan para desarrollar y mantener grandes aplicaciones
de Misión Crítica. [Gonda 2010]
Para el desarrollo de Altagracia, se tomó como base el generador Genexus. Altagracia, será
compatible con Genexus, tendrá sus cualidades, el mismo nivel de desarrollo de suite de
3.1.3.2 Altagracia
Altagracia apunta a obtener, a partir del trabajo en conjunto entre profesionales de la República
Oriental del Uruguay y la República Bolivariana de Venezuela, una plataforma para la generación
de códigos, construido bajo estándares abiertos. El nuevo software deberá cumplir con las
condiciones sobre software libre, inter operable e independiente de la tecnología englobada en
Genexus. Altagracia será un generador capaz de soportar el diseño e implementación de nuevas
aplicaciones en software libre, así como la adaptación y el mantenimiento de las soluciones
desarrolladas en estas. Con el generador de códigos libre, se podrán hacer todas las aplicaciones
basadas en Genexus, como sistemas administrativos, gestión de documentación, logísticos, todas
serán hechas en fuentes libres.
“Altagracia nos dará total autonomía sobre las aplicaciones y nos brindará una
herramienta para el desarrollo de aplicaciones sofisticadas. El Estado se reserva el
derecho de reservar la no liberación del código fuente creado en sectores críticos, si
esto ocurre, se haría por razones estratégicas.” Carlos Figueira presidente del
Centro Nacional de Tecnologías de la Información de Venezuela [Alvarado 2010]
A inicio del año 2008 a través de diversos medios el Estado venezolano informó sobre este
proyecto y anunció que tendría listo en un año el generador de código venezolano, de nombre
código "Altagracia": un programa de computadora capaz de crear otros programas de
computadora, ello a partir de diagramas introducidos por los programadores. “Esto facilitará
enormemente el desarrollo de aplicaciones de software libre para el Estado”. Así lo había
informado Carlos Figueira, presidente del Centro Nacional de Tecnologías de Información (Cnti,
ente adscrito al Ministerio de Telecomunicaciones e Informática) en entrevista a Últimas Noticias.
El propio Figueira explicó en julio de 2010 que el proyecto estaba a punto de empezar y que “tardó
el arranque porque involucra dos países y sin dudas hay complicaciones burocráticas, todo el tema
tomará calor en pocas semanas y de aquí a un año estará el proyecto culminado” [Alvarado 2010].
En entrevista realizada por Heberto Alvarado Vallejo, también, Carlos Figueira informó que en el
2011 se tendrá listo el generador de código libre Altagracia basado en Genexus. A más de tres
años de iniciado el acuerdo con la empresa uruguaya Genexus, creadora del generador de código
del mismo nombre, que permitiría la creación de un sistema con las mismas prestaciones, llamado
Altagracia, pareciera que ahora sí hay fecha definitiva para adopción definitiva de Genexus. Tal
como se puede ver en la página de administración de proyectos del Área Estratégica: CIENCIA,
TECNOLOGÍA E INDUSTRIAS INTERMEDIAS de la Embajada de la República Bolivariana de
Venezuela en la República Oriental del Uruguay [GenexusLibre web]. El proyecto cuyo nombre
completo es GENEXUS LIBRE. Proyecto Altagracia CNTI – Langecor figura que se terminaría a
mediados de 2011.
Las Instituciones involucradas son: el Ministerio del Poder Popular para la Ciencia, la Tecnología y
las Industrias Intermedias (http://www.mcti.gob.ve/), el Ministerio de Energía y Minería de la
República Oriental del Uruguay (http://www.miem.gub.uy/portal/hgxpp001?5) y la empresa
uruguaya Langecor, S.A. (Genexus Internacional). [CNTI web]
Al trabajar con este tipo de desarrollo como Genexus no se plantea una metodología ágil. Si bien
se menciona en [Genexus web] como una de sus fortalezas que ésta permite el desarrollo ágil, no
hay que entenderlo como un desarrollo siguiendo una metodología ágil, cumpliendo con el
Genexus es un producto con una permanente evolución. Tal como se mencionó anteriormente
recientemente salió al mercado una nueva versión de Genexus que incorpora tecnología para
Smart Devices. Una gran desventaja de Genexus es su característica de ser propietario pero el
proyecto Altagracia reivindica la idea detrás de Genexus, buscando brindar las mismas
características a través de una herramienta totalmente libre.
4.1 INTRODUCCIÓN
Como primer paso para poder elaborar una propuesta de prácticas ágiles para el desarrollo basado
en conocimiento se buscó conocer el contexto de esta forma de desarrollo en Salta Capital para
luego presentar una forma de trabajo que logre que las organizaciones al seguirla se acerquen a
los postulados enunciados en el manifiesto ágil. Por lo tanto, este capítulo muestra un estudio de
campo de la situación en zona, luego se plantea una propuesta concreta de prácticas ágiles,
posteriormente se muestran datos de una experiencia de aplicación práctica de esta propuesta y
se exponen las conclusiones arribadas.
Para obtener el listado de empresas y organismos del medio que trabajan con Bases de Datos del
Conocimiento, lo primero que se realizó fue una entrevista con el representante de Genexus en
Salta Capital. Como resultado se obtuvo un listado de las 11 organizaciones que lo utilizan. Seis
corresponden a empresas privadas y cinco, a organismos del sector público. Estos números
corresponden a quienes trabajan con las licencias comerciales, sabiendo por supuesto que existe
otro grupo de empresas que lo utilizan de manera ilegal. Varias empresas privadas, alrededor de
10 que antes utilizaban desarrollo basado en conocimiento, por la crisis que ha vivido últimamente
el país, dejaron de trabajar con él.
A la hora de realizar el relevamiento se informó a las organizaciones, que los datos obtenidos
serían tratados de manera anónima, por lo que no se hacen referencias directas a los nombres de
las empresas u organismos para respetar la confidencialidad. Pero, se puede decir que todos
tienen sede en Salta capital y una empresa es multinacional.
Tanto en organismos públicos como en empresas privadas, fueron las áreas de desarrollo de
software las que fueron analizadas. Es por eso que de ahora en adelante se hará referencia a las
áreas, grupos o sectores de desarrollo y no a organizaciones, salvo que sea necesario hacer una
referencia específica.
Para realizar el relevamiento, la idea inicial fue realizar entrevistas personales a cada responsable
de área de desarrollo. Lamentablemente, después del primer contacto con las organizaciones, se
pudieron concretar un 45.45% de entrevistas. En el resto de los casos, los responsables adujeron
De las encuestas enviadas, se obtuvieron las respuestas del 66.66%. Las dos encuestas sin
responder corresponden a organismos públicos, que adujeron no tener tiempo para responderla, si
bien previamente se habían comprometido a realizarla. Pero en total, con encuestas y entrevistas
se logró obtener información del 81.82% de quienes actualmente están trabajando con desarrollo
basado en conocimiento en Salta Capital.
En las siguientes secciones se detallan los resultados obtenidos de los sectores de desarrollo de
software de las empresas y organismos que colaboraron con información.
Tipo de sector
organizacional relevado
33,33%
66,67%
Público Privado
• Tiempo en el mercado:
Tiempo en el
mercado
0,00% 11,11%
55,56% 33,33%
Un dato útil para medir la idoneidad del encuestado respecto al desarrollo basado en conocimiento
es justamente saber cuánto tiempo viene trabajando con él. Se obtuvo que el tiempo medio de uso
de esta forma de desarrollo es de 5 años y medio. Claramente se puede observar en el gráfico que
el 55.56% de las empresas consultadas tiene entre 5 y 10 años de utilización de desarrollo basado
en conocimiento y el 33.33% más de 10 años por lo que se puede concluir que el 88.98% de las
organizaciones consultadas viene utilizándolo por más de 5 años. (Ver figura 4.2.3).De esta forma
se considera que por lo menos en este porcentaje de organizaciones ya se tiene un conocimiento
sólido de la forma de Desarrollo Basado en Conocimiento. En promedio el tiempo de uso es de
poco más de 9 años y medio (9.56).
Tiempo de uso de
DBC
11,11%
33,33% 0,00%
55,56%
<2 años <5 años <10 años 10>
Por supuesto, solo cantidades no debería ser comparables de manera directa, dado que hay
algunos proyectos de desarrollo de sistemas que realmente fueron muy importantes y de una larga
duración, por lo que se pudo deducir de las entrevistas. Sin embargo, estos datos sirven para
contextualizar la información.
Se consultó como dato adicional la proporción de proyectos realizados para terceros, respecto de
los internos. Un 55.55% trabaja mayoritariamente para terceros y el 44.44% restante para
proyectos internos de la organización(Ver figura 4.2.5). Aquellos que desarrollan mayoritariamente
para terceros han desarrollado algunos proyectos internos para crear herramientas que faciliten y
agilicen el proceso de desarrollo.
La cantidad de personas influye en la forma de trabajo y organización de los equipos, por eso se
consideró realizar esta pregunta. La media de la cantidad de personas involucradas en el sector de
desarrollo de software obtenida es de aproximadamente 8 personas. Se plantean situaciones
extremas, con 25 personas en el equipo de desarrollo por un lado, así como 2 personas en el otro
extremo. El 66.66% de los sectores está integrado con más de 5 personas (Ver figura 4.2.6).
Personal involucrado
22,22%
33,33%
11,11%
33,33%
Dentro de un sector de desarrollo existen equipos de trabajo internos y conocer su tamaño también
es algo a considerar. El 66.67% de las áreas de desarrollo de software cuentan con más de un
equipo de desarrollo (Ver figura 4.2.7).
Varios equipos de
desarrollo
33,33%
66,67%
SI NO
Los equipos de desarrollo integrados con una cantidad entre 3 y 5 personas cubren el 44% de los
relevados. Si se los agrupa y considera a los equipos conformados entre 3 y 7 personas, es de
77.77%.
Cantidad de personas
por equipo
0,00%
22,22%
33,33%
44,44%
<2 <5 <7 <10
Figura 4.2.8. Cantidad de personas por equipo dentro del sector de desarrollo.
Conocer el horario del personal es un dato importante si se piensa aplicar una metodología ágil.
Por esa razón, se preguntó si las personas comparten el horario de trabajo y se brindaron tres
alternativas: SIEMPRE / SE SOLAPAN / NUNCA. Las personas involucradas en el desarrollo
comparten el horario de trabajo en el 50% de los casos (Ver figura 4.2.9). Si se considera solo
dentro del sector público, el 100% comparte el horario de trabajo siempre. En el caso de empresas
privadas, existe variación.
Personal comparte
horario de trabajo
37,50%
50,00%
12,50%
Dentro de las empresas privadas, aquella que realiza solo desarrollos internos, el personal del
sector de desarrollo comparte el horario de trabajo de todos miembros del equipo. El 60% nunca
comparten el horario de trabajo de todos los miembros del equipo. Esto se debe a que en la gran
mayoría hay diferentes turnos de trabajo, y, si bien se trata de armar los grupos con personas que
estén en el mismo horario, esto no es factible la mayoría de las veces.
Otra característica que influye en la forma que trabaja y se comunica el equipo de desarrollo es
compartir o no el lugar de trabajo. Se solicitó contestar SI / NO a esta pregunta. El 88.89%
comparte el lugar de trabajo, si bien esto no implica necesariamente que compartan el horario de
trabajo. Como se puede apreciar, el porcentaje de personas que comparten el lugar de trabajo es
mucho mayor al porcentaje mencionado en el punto anterior que comparte el horario de trabajo.
Dentro del sector de desarrollo de empresas públicas, todos comparten el lugar de trabajo,
mientras que en las privadas solo el 83.33% lo hace (Ver figura 4.2.10).
SI
NO
88,89%
Figura 4.2.10. Personal que comparte lugar de trabajo dentro del sector de desarrollo.
El no disponer de un horario común y/o lugar de trabajo común hace indispensable definir
instrumentos que permitan mantener al equipo de desarrollo comunicado. Se propuso, a la hora de
realizar el relevamiento, una serie de vías de comunicación para que se indique cuales se
emplean: VIDEO CONFERENCIA / CHAT / TELEFONO / CORREO / MEMO / REUNIONES
PACTADAS / OTRAS.
Se puede observar en Figura 4.2.11 que el recurso más utilizado es el de las reuniones pactadas.
Le sigue el correo y teléfono para mantener la comunicación del equipo. Y finalmente, las video
conferencias, el chat y los memos son otros recursos que algunos sectores de desarrollo utilizan.
No surgió otro recurso que sea utilizado para suplir la distancia física y temporal de los miembros
del equipo que no fuera alguna de las propuestas presentadas.
En todos los sectores que pertenecen a empresas privadas de desarrollo de software para
terceros, se presenta el caso que el rol del líder de proyecto lo realiza el dueño o los socios
gerentes de la empresa. Los dueños no delegan responsabilidades al equipo. En uno de los casos,
el entrevistado quien era uno de los socios de una empresa privada, hizo referencia explícita a un
intento por delegar a otra persona el rol de líder de proyecto pero declaró no haber tenido buenos
resultados. Debido a ello, se sienten sobrecargados de tareas y responsabilidades pero consideran
que por el momento es la única forma de que se logren alcanzar los objetivos.
Los recursos humanos que conforman las áreas de desarrollo de los diferentes
organismos/empresas si bien son variables, en todos los casos permiten poder aplicar una
metodología ágil o en su defecto ciertas prácticas ágiles. El personal de estos sectores no es
numeroso, y en ninguno de los casos supera las 10 personas por equipo. Esto permite una
comunicación e interacción fluida entre los miembros del equipo.
En el 50% de los sectores de desarrollo analizados, las personas que lo conforman comparten el
horario de trabajo. La falta de un horario compartido podría ser un impedimento a la hora de querer
aplicar una metodología ágil, pero se puede intentar suplir esta ausencia considerando que el 89%
trabaja en el mismo lugar. Compartir el lugar de trabajo aunque sea en diferentes horarios permite
dejar ciertos recursos a la vista y disponibles para quienes estén trabajando en el sector, pizarras,
etc. Además, un 12% tiene personal con horario solapado, permitiendo en algunos momentos el
diálogo cara a cara.
Relacionado con este aspecto, los sectores de desarrollo que expresaron la necesidad de suplir la
falta de comunicación cara a cara por no compartir el horario y/o lugar de trabajo, todos expresan
que utilizan reuniones pactadas. Por lo que en situaciones especiales se puede contar con la
comunicación directa entre los miembros del equipo. Esto implica que existen mecanismos internos
que permiten reunir a todo el personal del equipo para alguna situación especial.
Todos los equipos dentro del área de desarrollos de cada organización trabajan en más de un
proyecto al mismo tiempo. Esto puede causar situaciones no deseables en algunos de los
proyectos. Además, no es una característica deseable a la hora de trabajar con metodologías
ágiles si se trabaja con iteraciones. La alternativa podría ser ver el proyecto como flujo de trabajo
Dentro del sector privado, existen empresas con áreas de desarrollo que utilizan Genexus
exclusivamente para desarrollo interno y otras que lo utilizan para proveer servicios de desarrollo a
terceros. En sector público lo utilizan para desarrollo interno.
En todos los sectores relevados por lo menos existe un líder de proyecto. El líder de proyecto
siempre es responsable de más de un proyecto a la vez y suele manejar entre 2 y 5 proyectos.
Además, el líder puede tener a su cargo más de un grupo de desarrollo. En todos los sectores que
pertenecen a empresas privadas de desarrollo de software para terceros, se presenta el caso que
el rol del líder de proyecto lo realiza el dueño o los socios gerentes de la empresa. Los dueños no
delegan responsabilidades al equipo. Esto demuestra poca confianza hacia ellos. Esta tampoco es
una característica deseable en las metodologías ágiles, va en contra del propio manifiesto ágil, que
habla de equipos auto organizados. El dueño de la empresa o líder de proyecto debe confiar en el
equipo y darles su espacio. La alternativa para poder intentar cambiar esto es proponer varios roles
diferentes que vayan desdibujando el rol del líder de proyecto: un analista que represente las
preocupaciones del cliente y defina prioridades, un diseñador líder que guíe en el diseño mayor del
sistema, un coordinador que realice el seguimiento del avance y proteja de interrupciones al
equipo.
A la hora de desarrollar software, muchos grupos de desarrollo tienen una serie de pasos
definidos, ya sea formal o informalmente para realizar la actividad. Se consideró importante poder
determinar si existía algún procedimiento preestablecido para realizar el desarrollo del software
basado en conocimiento. Se utilizó el término procedimiento para evitar que se nombre
directamente una metodología y se pueda relevar la forma de trabajo real. En el 77.78% existe un
procedimiento predefinido (Ver Figura 4.2.13)
Existe un procedimiento
definido
22,22%
SI
NO
77,78%
Figura 4.2.13. Existencia de un procedimiento predefinido para el desarrollo.
Figura 4.2.14. Existencia de un procedimiento predefinido para el desarrollo, discriminado por tipo
de organización.
Realizando un análisis de los procedimientos, se puede observar a simple vista que algunos tienen
procedimientos detallados y otros muy generales. Analizando la forma de trabajo según el
desarrollo basado en conocimiento, solo tres sectores de desarrollo plantean un procedimiento que
contempla éstas características, el resto plantea tareas o actividades que están más relacionadas
con un desarrollo más tradicional. Algunos definen dos procedimientos dependiendo del tamaño
del proyecto. Se pueden realizar las siguientes apreciaciones:
o Solo una empresa permite que cada miembro del equipo interactúe y/o visite al cliente
o Una sola empresa tiene registros muy formales del proceso de desarrollo, si bien ellos
mismos manifiestan que han flexibilizado un poco dicho proceso.
o Solo una empresa, en proyectos grandes, divide en fases menores y solo analiza con
detenimiento esa fase.
Así como se consideró oportuno preguntar sobre la existencia de un procedimiento a seguir para el
desarrollo de software, se consultó sobre la posibilidad de adaptarlo según las características del
proyecto a desarrollar. Se permitía como respuesta: SI / NO / DEPENDE. En caso de esta última
opción se requería mayores detalles.
Según lo relevado, el 62.50% permite al equipo adaptar el procedimiento según el proyecto (Ver
Figura 4.2.15). Esto haría pensar que las empresas permiten a los equipos organizarse para
encarar el proyecto de manera autónoma e independiente. Lo que sucede es que, los dueños de
empresas de desarrollo son a su vez líderes del proyecto y miembros del equipo y son ellos los que
adaptan el proceso. No es una decisión del equipo en su conjunto. Esto se podrá observar en el
siguiente ítem analizado.
Algo a considerar es que uno de los encuestados respondió que no tiene un procedimiento
predefinido, pero en esta pregunta contestó que el procedimiento lo pueden adaptar según el
proyecto. Esto no es incongruente, porque se define el procedimiento para cada proyecto en
particular.
Procedimiento adaptable
25,00%
12,50% 62,50%
SI NO DEPENDE
El 88.89% mencionó al líder como responsable de esta actividad (Ver Figura 4.2.16). El 11% que
consideró al equipo, señaló que lo define junto con el líder de proyecto. Por otro lado, el 22.22%
que corresponde a grupos de desarrollos donde el dueño es el que realiza la definición del
procedimiento a seguir indicó que los dueños son a su vez los líderes del proyecto. Entonces, para
este caso, si bien respondieron con una sola opción, los dueños, debería considerarse también
como parte de su respuesta no solo al dueño sino también al líder del proyecto. Si se analizan los
datos, teniendo en cuenta estas consideraciones, en el 100% de los casos el líder de proyecto está
involucrado en la definición del procedimiento de desarrollo.
80,00%
60,00%
40,00%
20,00%
0,00%
Dirección Lider de proyecto Equipo
Entonces, se observa que, en 77,78% de los sectores de desarrollo, es sólo el líder el responsable
de esta decisión (Ver Figura 4.2.17 y Figura 4.2.18). En un 22,22% es el líder y la dirección
quienes tiene esta responsabilidad (pero la misma persona es la que desempeña ambos roles).
22,22%
66,67%
• Desarrollo iterativo
Desarrollo iterativo
33,33%
66,67%
SI NO
Las respuestas obtenidas sobre las duraciones de las iteraciones se pudieron organizar en 3
grupos: DURACIÓN DE ITERACIONES VARIABLES / ITERACIONES DE 7 A 14 DÍAS / NO HAY
ITERACIONES.
Duración de iteraciones
33,33%
44,44%
22,22%
Analizando los datos según estas agrupaciones, el 44.44% no trabaja con iteraciones de duración
fija, generalmente las definen por los productos que deben realizar, son por lo tanto duraciones
variables (Ver Figura 4.2.20). Solo un 22.22% trabaja con duraciones fijas. El 33.33% ni siquiera
trabaja con iteraciones, uno de los grupos que no trabaja con iteraciones aclaró que trabajan
entregando al cliente los productos que le son más importantes al cliente a medida que los van
desarrollando
• Uso de UML
Para tratar de entender un poco más cómo realizan el diseño de las aplicaciones a desarrollar, y
complementar la definición brindada por cada grupo de desarrollo sobre la forma de encarar un
desarrollo software, se consultó sobre el uso de diagramas UML. Se permitió una contestación
simple: SI – NO. Además se solicitó a quienes contestaron afirmativamente que mencionen cuáles
utiliza. El 55.56% utiliza algún diagrama de UML (Ver Figura 4.2.21).
44,44%
55,56%
SI NO
Analizando los diagramas utilizados, el 33.33% utiliza Diagramas de Casos de Uso y el 22.22%
Diagramas de Clases. Es lógica la utilización de Casos de Uso para poder especificar las
necesidades del proyecto y los Diagramas de Clases, para poder trabajar directamente definiendo
la Base de Datos del Conocimiento. (Ver Figura 4.2.22). Pero, ninguno hizo mención a algún otro
de los diagramas, ni siquiera para situaciones excepcionales.
22,22%
Cómo se incluye al cliente a lo largo del proceso de desarrollo es muy importante, sobre todo si se
está pensando incorporar una metodología ágil. Se consultó como era la participación del cliente
en el proyecto. Las opciones que se brindaban fueron: SOLO AL INICIO / DURANTE TODO EL
PROCESO / AL FINAL. El 100% contestó que el cliente está involucrado durante todo el proceso
de desarrollo. Este punto además solicitaba especificar la forma en que obtenía la participación del
cliente, permitiendo realizar una respuesta abierta. Los detalles brindados por cada uno pueden
consultarse en el Anexo 1.
Todos de alguna manera buscan tener contacto con el cliente. Esto muestra la importancia que
tiene para cada equipo de desarrollo. El diálogo y la comunicación, es lo que podría encontrarse
en común en la mayoría de las respuestas.
Se observa que uno solo de ellos considera presentaciones de informes de avance, documentos
donde se describe lo que están realizando más que software funcionando. Y también, uno solo
hace uso de la presentación de prototipos de manera rápida al cliente para corroborar los
requerimientos, siendo ésta una de las características que permite fácilmente Genexus. Esto
podría demostrar que no lo consideran como una forma de participación del cliente de manera
intuitiva.
Otro aspecto a analizar es sobre, si se realizan o no, entregas frecuentes (a lo sumo cada 2
meses) de producto desarrollado al cliente y el período de tiempo entre entregas ya que esto
también es un punto relevante dentro de las metodologías ágiles. El 88.89% contestó que sí realiza
entregas frecuentes. Y solo una de ellas tiene preestablecido un período de tiempo para las
entregas que va de 15 días a un mes. El resto se organiza por módulos o porciones de software a
entregar (Ver Figura 4.2.23).
Entregas frecuentes
11,11%
SI
NO
88,89%
En el 22.22% de los casos, inclusive varía la frecuencia, incrementándose a medida que avanza el
proyecto. Uno solo hace mención que buscan entregar pequeñas funcionalidades que vayan
despertando el interés de los usuarios. La mayoría entrega módulos completos, pero no se fija
plazos máximos para ellos, dependiendo de lo que se está implementando.
A la hora de analizar los datos complementarios que explicaban la respuesta afirmativa, se observa
que no todos tienen la misma idea de colaboración del cliente en el proceso de desarrollo. Para
algunos es trabajar con ellos para probar el sistema, para otro es brindarles información del avance
del proyecto y para otros la colaboración del cliente en el proyecto es poder realizarles consultas
cuando sea necesario, es decir tener una comunicación directa con él en diferentes momentos.
Teniendo en cuenta estos tres grupos, se clasificaron las respuestas de cada organización y se
pudo realizar la siguiente gráfica, (Ver Figura 4.2.24).
Cada sector relevado trabaja de manera diferente, algunos combinan propuestas de informes de
avance con propuestas de nuevos requerimientos, otros solo consideran propuestas de
requerimientos, otros combinan la propuesta de requerimientos con comunicación y otros incluso le
agregan las pruebas de aceptación. Pero las combinaciones son todas diferentes entre los datos
relevados. No se puede determinar un patrón de combinación de la forma de participación. No hay
una tendencia en cómo combinarlos, siendo las de mayor proporción: la participación del cliente
para proponer nuevos requerimientos, realizar pruebas de aceptación y mantener cierta
comunicación con el equipo de desarrollo.
Respecto al momento de definir los requerimientos del proyecto, todas las empresas relevadas
respondieron que los requerimientos se definen al inicio del proyecto. Se solicitó, además, que
especifiquen la forma en que se define los requerimientos. En base a las especificaciones
obtenidas se puede desglosar la siguiente formación:
Esta pregunta pretendía evaluar cuan frecuente es el cambio en los requerimientos del proyecto.
Se brindaban las siguientes opciones: SI SIEMPRE / ALGUNAS VECES / CASI NUNCA / NO
CAMBIAN. El 77.78% respondió que siempre cambian los requerimientos y los restantes que
algunas veces, (Ver Figura 4.2.25). No existió ningún sector de desarrollo de organismo público o
empresa privada que considere que los requerimientos no cambian o cambian muy pocas veces.
22,22% 0,00%
77,78%
Se evaluó el momento, dentro del proyecto, cuando se realiza la planificación del desarrollo. Se
presentaban las siguientes opciones: AL INICIO / AL INICIO PERO SE VA MODIFICANDO
ENCADA ITERACION / OTRA OPCION (especificar). Esta fue la respuesta obtenida: el 11%
planifica solo al inicio, el 44.44% si bien planifica al inicio puede modificar la planificación en cada
iteración y otra opción con el 44.44% restante (Ver Figura 4.2.26).
Merece la pena analizar qué especificaron las empresas como otra opción. A continuación se
enumeran las 4 respuestas obtenidas:
Planificación
11,11%
44,44%
44,44%
Al inicio
Al inicio pero se va modificando en cada iteración
Otra opcion
Puede observarse que las tres primeras opciones detalladas podrían englobarse en la opción de
definir al inicio pero se puede ir modificando a lo largo del transcurso del proyecto, sin hacer
mención a las iteraciones. A este grupo correspondería un 33.33%. Y la última correspondería al
grupo de “al inicio pero se va modificando en la iteración ya que permite modificar la planificación
en una iteración, aumentando su porcentaje a 55.55%. Avanzando un poco más en este sentido,
se puede agrupar a quienes realizan una planificación inicial y luego lo van modificando ya sea que
lo realicen o no por iteración a esta modificación. Por otro lado quedan quienes realizan solo una
planificación inicial. El 88.88% planifica al inicio pero a lo largo del proyecto va modificando su
planificación, mientras que solo un 11.11% realiza la planificación al inicio y no la modifican.
Relacionado con la planificación se solicitaba que especifiquen la forma en que planifican, solo un
45.45% realizó esta especificación. Se destacan las siguientes respuestas:
Forma de planificar:
o Planificar al inicio las grandes etapas del proyecto (se divide en fases o etapas). Se
planifica con detalle solo la primera fase. Finalizada esta, se planifica la siguiente.
Existen algunas formas de planificar más formales que otras. Debido a la gran cantidad que no
completó este punto no es representativo intentar obtener porcentajes de cuántos trabajan de
manera más liviana que otros en este aspecto
Figura 4.2.27. Sectores que utilizan herramientas para realizar el seguimiento del proyecto.
En esta pregunta se buscaba que cada grupo relevado especifique su herramienta por lo tanto se
obtuvo un listado variado de herramientas: sistema de tickets, Google desktop, Microsoft Proyect,
dot Project, Kanban board, Aplicativo de gestión de tareas, Correo, Excel. Los porcentajes con que
fueron mencionados se pueden observar en la siguiente Figura.
Tres herramientas, dot Project, Microsfot Project y Aplicativo para Gestión de tareas puede
englobarse en una herramienta que justamente ayuda a la gestión de tareas, definir calendario,
responsables, tiempos, recursos, etc. Google desktop ayuda a la búsqueda de información y tener
organizado archivos, marcadores y mensajes. Sistema de tickets, previamente descripto, permite
al cliente solicitar servicios al equipo de desarrollo (modificaciones o requerimientos nuevos).
Kanban board, también mencionado anteriormente, que es una pizarra para visualizar el proyecto,
y permite ver el progreso del trabajo, asignación de tareas, que es lo que necesita realizarse luego,
entre otras funcionalidades y que se utiliza en metodologías ágiles.
Ninguno hizo mención a este diagrama como herramienta de seguimiento del proyecto, por lo que
surge la pregunta, si realmente se utiliza o no.
A través de esta pregunta se buscaba determinar el momento en que los alcances y costos se
pactan con el cliente. Se brindaban tres opciones: AL INICIO / PARA CADA ITERACION / OTRA
OPCION (especificar) y luego se solicitaba describir brevemente como lo realizaban. Pero las
respuestas merecieron dividir esta pregunta en dos partes separadas, para costos y para alcances,
debido a que algunos manejaban de manera diferente costos y alcances y todos los grupos de
desarrollos pertenecientes a organismos públicos no definen los costos.
Alcances pactados
al inicio para cada iteración otra opción
44,44% 44,44%
11,11%
Respecto a los costos, en base a las respuestas y comentarios adicionales, se pudo considerar
que, en este caso, otra opción era equivalente a: no se manejan costos. Y los que no manejan
costos, como se mencionó anteriormente pertenecen a organismos públicos. Los que consideraron
los costos al inicio, comentaron de diferentes formas que, en caso de variar los alcances, tratan de
renegociar los costos pero esto es sumamente difícil con el cliente y deben mantener los costos
definidos, si bien pueden modificar algunos plazos de entrega. En la siguiente Figura se pueden
observar los porcentajes obtenidos.
Costos pactados
al inicio para cada iteración otra opción
33,33%
55,56%
11,11%
Un solo grupo de desarrollo plantea la posibilidad de definir en forma general todo el proyecto y
solo en detalle una primera etapa, tanto en alcances como en costos. Esto les permite focalizarse
en una parte del producto a desarrollar, definirlo con la mayor granularidad posible y establecer un
precio proporcional a ese trabajo. Este grupo brinda la posibilidad al cliente de ofrecerle un análisis
detallado del sistema global pero cobrándoles un costo adicional y ningún cliente se los solicitó
hasta el momento
Cómo se seleccionan los artefactos a reutilizar, es una tarea no muy simple y fue consultada
también a los diferentes grupos de desarrollo. La gran mayoría, el 66,66% delega en el líder del
proyecto la búsqueda y selección de artefactos a reutilizar, el resto no especifica quien realiza la
tarea, pudiendo ser el líder o tal vez el equipo o un trabajo en conjunto.
Por otro lado, el 22.22% hace mención a un catálogo o librería donde tiene organizados los
artefactos o módulos de proyectos anteriores que pueden reutilizarse y en donde debe realizarse la
búsqueda. Un grupo explícitamente declara no utilizar ningún catálogo para realizar esta selección.
El resto no explicita nada al respecto.
Aquellos que respondieron este ítem y no hicieron mención a ningún instrumento para organizar
los artefactos reutilizables, se limitaron a responder que la reutilización es por similitudes de
funcionalidades. Algo que es completamente lógico, dado que no se van a reutilizar objetos que no
tengan funcionalidades similares a las requeridas.
Porcentaje de proyectos
con objetivos cumplidos
0,00% 11,11%
22,22%
11,11%
11,11%
44,44%
Un 66.67% cumplió el 95% de proyectos o más. Algunos al indicar el valor aclararon que entendían
cumplir los objetivos en el tiempo estipulado, y que el resto de los proyectos cumplió con los
objetivos del cliente pero se demoró un poco más en el desarrollo.
Cuando surgen dificultades, y no se logran los objetivos de la iteración pactados, se deben tomar
medidas. Esto es lo que se consultó en este punto, brindando cuatro opciones para elegir como
posibles reacciones ante esta situación: SE TRABAJAN HORAS EXTRAS / FINALIZA
IGUALMENE LA ITERACION EN FECHA PACTADA / SE EXTIENDEN LA ITERACION / OTRAS
ACCIONES (especificar). Los grupos relevados podían elegir si quisieran más de una opción.
En el 77.78% de los grupos de desarrollo, trabajar horas extras es la forma de tratar de alcanzar
los objetivos de la iteración (o proyecto, si lo tiene iteraciones). Para un 55.56%, también se utiliza
extender la iteración o plazo de entrega (si no hay iteraciones). Un solo caso planteó otra opción
que es la de agregar recursos si es que hay disponibles. Uno solo eligió la opción de finalizar la
iteración en el tiempo pactado, en combinación con otras opciones según la situación que, por su
forma de describir el uso de cada uno se transcribe a continuación:
o Debido al seguimiento con tickets, se detecta rápidamente las demoras. Sobre todo se
hace seguimiento de tickets críticos. Si la demora es por inexperiencia del programador,
este debe trabajar horas extras. Pero si es por una mala estimación se conversa con el
cliente y se le explica que de cumplirse con la fecha de entrega, no funcionará de manera
Figura 4.2.34. Medidas tomadas por los sectores ante dificultades en los alcances
Se solicitó especificar el nivel de satisfacción que en general tuvieron sus clientes con los
proyectos realizados frente al producto desarrollado. Se brindaron 5 opciones: COMPLETAMENTE
SATISFECHO / MUY SATISFECHO / CONFORME / CON LEVES DISCONFORMIDADES /
TOTALMENTE DISCONFORME. Para algunos expresar el nivel de conformidad en una sola
opción no fue posible y eligieron más de una. Esto se dio en tres casos, por lo que se decidió
trabajar un poco con valores ponderados para reflejar lo más fielmente posible la respuesta
obtenida.
Debido a esto se consideró un peso igual a seis para indicar que todos los clientes pertenecen a
este nivel de conformidad o satisfacción. Si la respuesta involucra más de una opción este peso se
divide proporcionalmente, según los comentarios realizados. En caso de no tener comentario, se
asigna el mismo peso a cada opción.
o Eligió tres opciones aclarando que muchos están completamente satisfecha, algunos, muy
conformes y unos pocos conformes. Se asignaron los valores 3, 2 y 1 respectivamente. A
la hora de hacer la entrevista el propio encuestado mencionó asignar tres estrellas, dos y
una a cada opción.
o Eligió dos opciones y aclaró que su elección era muy satisfecho en su mayoría y algunos
estaban conformes, por lo que se asignó un valor de 5 y 1 respectivamente para reflejar la
proporción.
o No brindó diferencias en cada uno por lo que se asigno un valor de 3 a cada uno.
En ningún caso se eligieron las opciones con leves disconformidades o totalmente disconforme.
Esto implica que en cada proyecto desarrollado cada grupo logró satisfacer las necesidades del
cliente. Por otro, lado el porcentaje de clientes completamente conformes es muy bajo, 5.56% (Ver
Figura 4.2.35). Generalmente es muy difícil poder cumplir con todas las expectativas del cliente y
por eso no es sencillo lograr alcanzar este nivel de satisfacción. Pero tener un 62.96% de clientes
muy conformes es un buen indicativo de que se está entendiendo bien las necesidades del cliente
y se está logrando implementarlas.
Se pidió identificar las situaciones de riesgo más comunes que ellos hubieren detectado en sus
proyectos y que las numeren según su importancia, siendo 1 el riesgo más importante:
6. Otras (especificar)
Si bien se solicitó ordenarlos por importancia, siendo 1 el riesgo más importante, a la hora de
ebaborar la gráfica se invirtieron los valores para que a simplevista se pueda observar la barra más
larga como la más importante. Para esto simplemente se consideró el valor mas grande que podría
haberse asignado a un riesgo planteado y se restó el valor asignado. De esta manera se
transformaron los datos, obteniendo un valor de 5 el riesgo más importante para el encuestado y 0
el ménos importante. Los puntajes medios obtenidos se muestran en la siguiente gráfica.
El riesgo al que claramente se le asignó mayor importancia fue la variación de los requerimientos
de los clientes. Le sigue con cierta diferencia las imprecisiones del cliente, que podría asociarse
también al riesgo anterior, dado que si los clientes no son precisos a la hora de definir que es lo
que necesitan, lo más probable es que loas especificaciones de requeriientos varíen. En el orden
de importancia le sigue el tener el equipo involucrado en más de un proyecto y otras causas, pero
las diferencias en la valoración respecto al riesgo anterior son muy pequeñas. A continuación se
encuentra el riesgo de tener un cliente con poca participación, que redunda en no tener la certeza
de contar con requerimientos bien definidos. El riesgo con menor importancia es tener un equipo
desmotivado. Este tuvo una valoración significativamente menor que hace notoria la diferencia
respecto de todos los anteriores.
Ninguno de los grupos que mencionaron otras causas coincidieron en sus consideraciones. Se
analizarán cada uno de los riesgos mencionados por los grupos de desarrollo relevados cuando
aclararon su elección de la opción otras causas:
o Desmotivación del usuario, nunca conforme. Aquí se hace mención del usuario no del
cliente, aunque a veces es la misma persona. Y lo consideró como el riesgo más
importante. Esta persona eligió como nivel de satisfacción del cliente CONFORME
o Problema del empalme de las partes reutilizadas. A veces la decisión de reutilizar algunos
módulos termina necesitando demasiado re trabajo que hubiera sido menos costoso
desarrollarlo desde cero. Este riesgo está claramente explicado y no merece mayores
comentarios
o Planificación imprecisa. Este riesgo hace referencia a una actividad del equipo o del líder
de proyecto. Dado que en todos los casos se consideró al líder involucrado directamente
en la planificación del proyecto, recae en él este riesgo. Si bien la mayoría explicitó que se
va ajustando la planificación en cada iteración, el responsable del equipo de desarrollo
realiza la planificación al inicio y solo si hay desviaciones realiza modificaciones dentro de
la iteración. Debido a esto es que se explica su mención en este punto.
88,89%
SI NO
Se planea utilizar
Metodologías ágiles
50,00% 50,00%
No SI
Dentro de los que contestaron negativamente, las razones aducidas fueron las siguientes:
Dentro de los que contestaron afirmativamente, todos coinciden en utilizar Scrum, si bien una
empresa contempla la posibilidad de incorporar DSDM como alternativa (Ver Figura 4.2.39).
Si se considera quienes utilizan y quienes tienen pensado incorporar las metodologías ágiles, se
tiene el siguiente porcentaje expresado gráficamente en la siguiente Figura.
44,44%
55,56%
No SI
Figura 4.2.40. Sectores que utilizan o planean utilizar metodologías ágiles en el futuro.
Si bien un grupo de desarrollo puede no adoptar una Metodología ágil puede estar utilizando
prácticas ágiles, aún sin saber que se encuentran dentro de esta categoría. Se solicitó a cada
representante del grupo de desarrollo que indique cuáles de las prácticas que se listaban eran
llevadas a cabo por ellos y se les brindaba la posibilidad de indicar alguna más que no estuviera
dentro del listado. El listado de prácticas ágiles presentado fue el siguiente.
o Programación de a pares
o Refactorización
o Diseño simple
o Reuniones diarias
o Pruebas automatizadas
o Iteraciones cortas
o Entregas frecuentes
o Otros
El 22.22% no indicó ninguna de las opciones por lo que se puede concluir que no sigue ninguna
práctica ágil, dejando un 77.78 % que sí lo hace (Ver Figura 4.2.41).
77,78%
SI NO
Analizando ya las prácticas elegidas, no se dio el caso de que alguien especificara alguna práctica
que no figurara en el listado. La práctica más indicada fue refactorización con 66.67% del total de
los grupos de desarrollo relevados (Ver Figura 4.2.42), seguida por entregas frecuentes 55.56% y
luego con un mismo porcentaje (44.44%) diseño simple y reuniones diarias. Ninguno realiza
pruebas automatizadas.
Se solicitó a cada representante del grupo de desarrollo que indique las herramientas utilizadas
para poder llevar a cabo las prácticas ágiles, indicadas en el punto anterior. Se dio libertad para
que cada uno indique aquellas que realmente utiliza y por lo tanto no se presentó un listado de
opciones para elegir. Se obtuvieron mención de diferentes herramientas que pueden agruparse en
las siguientes categorías:
o Herramienta que ayuda a interactuar con el cliente para que este pueda realizar solicitudes
de modificación al sistema o informar errores (Sistema de tickets).
o Las pizarras, donde Kanban board es un tipo especial de pizarra. Las Kanban board son
pizarras para visualizar el proyecto, permiten ver el progreso del trabajo, asignación de
tareas, que es lo que necesita realizarse luego, etc.
Los dos primeros grupos de herramientas no asisten directamente a alguna práctica ágil listada en
el punto anterior. Si bien los mapas conceptuales pueden servir como instrumento para definir los
requerimientos con el cliente; también podría pensarse que ayudan a mantener un diseño simple,
pero quienes utilizan esta herramienta no marcaron como una práctica seguida por el equipo al
diseño simple. Por otro lado, los sistemas de tickets permiten al cliente hacer solicitudes de servicio
al grupo de desarrollo que podrían ayudar a transmitir y gestionar cambios en los requerimientos.
En cambio, las herramientas para facilitar las teleconferencias ayudan a poder realizar reuniones
diarias entre personas que no comparten el mismo espacio físico al mismo tiempo. Y las pizarras
ayudan a visualizar el seguimiento del proyecto, compartiendo información con todo el equipo y es
un radiador de información muy utilizado en metodologías ágiles, como por ejemplo Crystal,
Kanban, Scrum. Estas pizarras son muy útiles también en las reuniones diarias, para tener en claro
el estado actual del proyecto. Pero ninguna de los dos grupos de herramientas facilita las prácticas
ágiles de: Programación de a pares, Refactorización, Iteraciones cortas, Diseño simple y Entregas
frecuentes que según los grupos relevados, practican en el desarrollo de software. Es interesante,
entonces, considerar que el 75% que dijo realizar refactorización, no utilizan ninguna herramienta,
corriendo el riesgo de propagar errores al realizar esa acción.
Se consideró importante preguntar los motivos por los que utiliza Desarrollo basado en
Conocimiento, utilizando Genexus. Se permitió a cada uno responder ampliamente y se obtuvo una
variedad de justificaciones.
Una de las justificaciones es simplemente porque fue comprado por el organismo, y por eso se
utiliza. Otros mencionan haber realizado comparaciones con otras herramientas y haber optado por
Genexus y otra menciona haber trabajado con otra herramienta y haber optado por Genexus
debido a los costos. Dos mencionan que se encuentra en castellano. Se mencionan también varias
características de Genexus como herramienta:
o Se encuentra en castellano.
o Es intuitivo.
o Hay evolución con la tecnología (comenzaron desarrollando para AS400, pasaron por
C++, ahora móviles). Genexus se encarga de la base.
Pero, analizando las características más destacables respecto del proceso de desarrollo, que es lo
que se pretende considerar principalmente en este informe, se puede agrupar y mencionar los
siguientes puntos:
o Requiere mínimo personal, debido a que permite generar código se ahora ese tiempo
de codificación.
o Permite desarrollo más rápido y dinámico, así es posible responder a las necesidades
del cliente rápidamente y obtener en poco tiempo una funcionalidad que de otra forma
varios meses.
o En poco tiempo permite evolucionar el prototipo. Esto a su vez permite realizar las
interacciones con el cliente con mayor frecuencia. Este aspecto es lo que la gente de
Genexus considera como ágil, no teniendo en mente una metodología ágil.
o GXServer “es una herramienta que permite coordinar el trabajo de equipos para el
desarrollo distribuido de aplicaciones GeneXus. Permite integrar distintos grupos de
programadores en una o varias locaciones, distribuir las diferentes tareas, compartir
bases de conocimiento y respaldar la información a distancia para llevar a buen
término proyectos complejos”. [sitioGenexus]
o GXFlow “es una herramienta de workflow integrada a GeneXus que permite modelar,
automatizar, administrar y optimizar los procesos de negocios de una empresa para la
creación de aplicaciones críticas en forma simple y eficaz”. [sitioGenexus]
Los resultados obtenidos respecto al uso de herramientas fueron los siguientes (Ver Figura 4.2.44):
o GXFlow: Uno solo de los grupos utiliza GFflow actualmente y representa un 11.11%,
hay un 55.56% que tiene pensado incorporarlo. Se puede considerar que un 66.67%
considera apropiado incorporarlo en su forma de trabajo. El 33.33% restante no lo
utiliza, ni va a utilizarlo a futuro. Dentro de este grupo, uno de ellos indicó que ha
trabajdo con WorkFlow para algunos clientes pero no volverán a utilizarlo, sin aducir
más razones
o GXQuery: Solo el 44.44% piensa utilizarlo. Uno de ellos aclaró que sólo lo utilizará
para un cliente específico. Ahora para otro están por considerar GXExplorer.
o GXTest que permite automatizar las pruebas funcionales y encontrar bugs en etapas
tempranas. “Fácil de configurar, utilizar y mantener. Permite correr las pruebas que son
necesarias para asegurar la calidad del software generado, encontrando los errores
cuando es más económico corregirlos. Creado sobre el modelo GeneXus. Los
resultados se basan en conceptos de GeneXus (objetos, controles, etc.), facilitando la
corrección de errores en su origen. Además, GXtest se adapta fácilmente a la
evolución de la aplicación” [sitioGenexus].
o GeneXus Business Process Modeler (BPM) “permite modelar, optimizar y exportar los
procesos de forma rápida para potenciar el desempeño de las empresas” [Genexus
web].
o GXplorer que es un “Modelo de datos específico para el área de la salud. Abarca áreas
administrativas, técnicas y clínicas. Satisface con un amplio margen todos los
requerimientos propios, externos, y oficiales (SINADITMSP). Se contempla la inclusión
de datos externos para comparar. Esta totalmente integrado al producto de gestión
para instituciones de salud MAGIK V4.0. Se puede anexar como módulo independiente
a cualquier sistema de gestión”. [WikiGenexus web]
Comentarios adicionales.
El último punto de la encuesta era una oportunidad para que el encuestado pueda aportar
cualquier dato que considerara relevante y que no hubiera sido contemplado en la encuesta, los
detalles pueden consultarse en cada encuesta adjuntada en el Anexo1. La mayoría de los datos
aquí mencionados fue incorporándose a los ítems evaluados anteriormente. La respuesta que
puede resaltarse es simplemente que al trabajar con patterns se puede tener métricas y poder
estimar complejidades y costos, se puede saber dónde realizar modificaciones debido a que todo
se mantiene lo mas estándar posible y se puede tener un producto más estándar.
Los pasos que plantean la mayoría de los procesos descriptos no reflejan las ventajas de trabajar
con un desarrollo basado en conocimiento, y tampoco específicamente con Genexus. No se refleja
el poder presentar rápidamente al cliente las funcionalidades solicitadas a través de un prototipo de
DBC, por ejemplo.
Si se trabajara con un flujo continuo de trabajo, definiendo las tareas (HU) a realizar en un Kanban
board, cada columna representaría una etapa o actividad dentro del proceso de desarrollo. Dichas
etapas podrían ser adaptadas según la forma de trabajar del equipo y la organización, pudiendo
agregar o eliminar etapas. Sería conveniente tener, mínimamente, una etapa de análisis, una de
desarrollo, una de prueba y finalmente una de producción. Cuando una historia de usuario llegara a
la columna producción, querría decir que el prototipo de DBC estaría listo para ser entregado al
cliente, y que pasó inclusive la etapa de testing que debería haber incluido pruebas de aceptación
en lo posible con participación del cliente. El incremento o prototipo de DBC se encontraría
completamente operativo en su ambiente real y podría ser explotado por los usuarios.
Analizando la etapa de pruebas, menos del 40% mencionan alguna actividad de pruebas ya sean
pruebas unitarias y/o de aceptación. Inclusive cuando se trabaja con un desarrollo tradicional las
pruebas son muy importantes para tratar de detectar errores lo antes posible y tratar de validar si
se está cumpliendo con los requerimientos especificados. Sería conveniente dejar explicitada la
actividad de pruebas en el Kanban board, para que quede evidente la necesidad de probar el
software y validarlo con el cliente para cada funcionalidad, independiente de la situación en que se
encuentre el proyecto.
Un sector tiene registros muy formales del proceso de desarrollo, si bien ellos mismos manifiestan
que han flexibilizado un poco dicho proceso. Tener procesos muy formales puede ir en contra del
desarrollo ágil.
La definición del procedimiento, ya sea general o específico es responsabilidad del líder del
proyecto. Solo uno de los sectores considera al equipo como co responsable junto con el líder para
definir el procedimiento de desarrollo a seguir. En metodologías ágiles es el equipo el que se auto
organiza y determina la forma de trabajar, si bien hay decisiones que toma el líder, Scrum master o
cualquiera sea el nombre del rol que ejerza la supervisión. Se debería tener reuniones de reflexión
donde el equipo pueda opinar y proponer modificaciones a la forma en que se encuentran
trabajando para que el procedimiento se adapte al equipo.
Para el diseño dentro del proceso de desarrollo casi el 56% utiliza algún diagrama UML, pero solo
utilizan Casos de Uso y Diagramas de Clases. Es lógica la utilización de casos de uso para poder
especificar las necesidades del proyecto y los diagramas de clases, para poder trabajar
directamente definiendo luego en Genexus la Base de Datos del Conocimiento. Pero, ninguno hizo
mención del resto de los diagramas, ni siquiera para situaciones excepcionales. Otros, utilizan para
el diseño los mapas conceptuales, diagrama de entidad relación, diccionario de datos, wiki con
estructura de productos ya desarrollados. Uno define sus diseños con “técnicas ágiles”, pero no se
aclara nada al respecto. La pregunta en realidad solo buscaba obtener información de los
diagramas UML que se utilizan para diseñar, y la respuesta obtenida en varios no se alineó en tal
sentido.
El 100% realiza un desarrollo con reutilización, variando sus porcentajes. La selección de los
artefactos a reutilizar, es una tarea no muy simple y para uno de los encuestados puede ser un
Respecto al tema de diseño, se podría considerar un rol de diseñador líder quien sea responsable
del diseño mayor del sistema y sea él quien determine los artefactos a reutilizar. No sería necesario
establecer herramientas específicas para realizar los diseños, cada equipo utilizará los que crea
convenientes en cada situación.
Se puede observar que todos los sectores relevados, de alguna manera, buscan tener contacto
con el cliente. Esto muestra la importancia que tiene para cada equipo de desarrollo esta
participación. Todos afirman tener colaboración por parte del cliente pero se deduce claramente
que no todos tienen la misma idea de colaboración del cliente en el proceso de desarrollo. Para
algunos es trabajar con ellos para probar el sistema, para otro es brindarles información del avance
del proyecto y para otros la colaboración del cliente en el proyecto es poder realizarles consultas
cuando sea necesario, es decir tener una comunicación directa con él en diferentes momentos.
La comunicación es la primera forma de participación del cliente. Los instrumentos usados para
lograr la comunicación, varían. El diálogo y la comunicación, es lo que podría encontrarse en
común en la mayoría de las respuestas. En un solo sector de desarrollo se busca que cada
miembro del equipo interactúe y/o visite al cliente. Para un sector la comunicación es simplemente
realizar presentaciones de informes de avance, documentos donde se describe lo que están
realizando más que software funcionando.
Solo uno menciona como instrumento para lograr la participación del cliente en el proceso de
desarrollo, la presentación de prototipos de manera rápida a éste para corroborar los
requerimientos implementados. La generación de prototipos es una característica muy destacada
en Genexus, pero por lo que se analiza no es muy utilizada en los equipos para lograr que el
cliente participe a lo largo del desarrollo. Tal vez realizan presentaciones de prototipos pero no
consideran a esta actividad una forma de lograr la participación del cliente.
La mayoría manifiesta realizar entregas frecuentes al cliente, menores a 2 meses, pero solo un
25% tienen plazos periódicos de entregas definidos. El resto define los períodos de entregas según
el producto a desarrollar. Inclusive a veces varía la frecuencia entre entregas según la etapa de
desarrollo. Uno solo hace mención que buscan entregar pequeñas funcionalidades que vayan
despertando el interés de los usuarios. Realmente las entregas frecuentes permiten tener una
retroalimentación directa del cliente y/o usuario a lo largo del proyecto que permiten corroborar lo
que se está realizando y lo que se planea realizar a futuro. También las entregas frecuentes, si
presentan valor agregado para el cliente lo van a motivar para involucrarse más en proceso de
desarrollo, colaborar más activamente en las pruebas del sistema y en utilización de aquellas
porciones de producto que ya se encuentren en producción.
Sería de gran utilidad tener definidas ciertas reuniones con el cliente, para poder definir
requerimientos, ajustes a requerimientos, presentar los prototipos de DBC y obtener
retroalimentación frecuentemente. Como en un proyecto suelen haber varios stakeholders
involucrados debería definirse un representante para participar en las reuniones ya que se volvería
insostenible que todos asistan a todas las reuniones y en caso de asistir, llegar a un consenso
entre todos llevaría mucho tiempo. Solo para situaciones específicas al inicio y finalización del
proyecto sería necesaria la participación de todos.
En todas las áreas de desarrollo relevadas, se definen los requerimientos al inicio del proyecto a
través de entrevistas, reuniones, encuestas. En la mayoría de los casos, 89%, se realiza detalle
completo de todos los requerimientos del cliente. En el 11% restante, no se realizan
especificaciones en detalle de todo el producto software a desarrollar cuando es muy grande;
primeramente realiza descripciones generales de las porciones de producto a desarrollar y
únicamente se realiza una especificación completa y detenida de la porción de funcionalidad que el
cliente opta por desarrollar en primer lugar. Esta última forma de trabajo se asemeja un poco más a
lo que son las prácticas de metodologías ágiles, pero aquí se eligen productos o porciones de
productos más que funcionalidades.
Los instrumentos que fueron mencionados para definir los requerimientos son variados y con
características diferentes: mapas conceptuales, historias de usuario, minutas de reuniones y
documento BluePrint BBP. También algunos al describir el procedimiento de desarrollo utilizan
diagramas de clase y diagramas de entidad relación para definirlos. Un 22% comparte el
instrumento realizado con el cliente para que sea el cliente mismo quien modifique lo que
considere necesario, antes de que queden establecidos. Algunos son muy formales, mientras que
otros son más que nada diagramas simples de entender y mantener actualizados.
Uno solo, correspondiente al 11.11%, hizo énfasis que al definir los requerimientos considera
además los puntos de verificación y añade luego algunos detalles específicos de tablas / objetos /
estructuras para entregarle al equipo. Este sector es el mismo que realiza una definición general
de todos los requerimientos y solo una definición detallada de la primera porción de producto a
desarrollar. El líder al darle al equipo datos específicos adjuntos a los requerimientos, respecto a
tablas / objetos / estructuras, en cierto modo está conduciendo el diseño del mismo y deja solo las
tareas de codificación y prueba al equipo.
Para todos los sectores relevados, los requerimientos cambian dentro de un proyecto. No existió
ningún sector de desarrollo de organismo público o empresa privada que considere que los
requerimientos no cambian o cambian muy pocas veces. Para el 78% éstos siempre cambian
mientras que para los restantes se modifican algunas veces. Esta situación amerita que el equipo
reaccione ante estas situaciones y las prácticas ágiles pueden facilitar la tarea.
Para definir los requerimientos sería recomendable trabajar con historias de usuario y que se
definan en una reunión de planificación. Pero para que el equipo entienda realmente el objetivo y
meta principal de proyecto sería oportuno tener antes una primera reunión de iniciación del
proyecto, exploración, donde participe todo el equipo, el cliente y demás stakehoders. La finalidad
de esta reunión sería lograr definir y compartir una visión común del proyecto. Por otro lado, debido
a que a que los requerimientos varían, se deberían realizar reuniones de ajustes de requerimientos
donde el cliente tenga la posibilidad de agregar o quitar funcionalidades o bien cambiar sus
prioridades. Otra reunión que podría ser útil es una reunión de contextualización para que en esa
reunión se le explique al equipo cada una de las funcionalidades incorporadas a la lista de trabajo,
o por lo menos las de mayor prioridad. De esta manera se evitarían malas interpretaciones de las
HU.
Más de la mitad de las empresas, el 66.67% de las empresas desarrolla de manera iterativa. Solo
el 22.22% trabaja con iteraciones fijas, el 45% trabaja con iteraciones cuya duración es fijada por
los productos que deben realizar, y son por lo tanto duraciones variables. Pero el trabajar con
iteraciones variables, trae sus inconvenientes porque no permite realmente tomar muchas métricas
que pueden ser importantes en el proceso de desarrollo y para la toma de decisiones. El 33% ni
siquiera trabaja con iteraciones, uno de los grupos de desarrollo que no trabaja con iteraciones
aclaró que trabajan entregando al cliente los productos que le son más importantes al cliente a
medida que los van desarrollando. En este último caso podría verse como un flujo continuo de
La planificación del desarrollo en su amplia mayoría, el 88.89% planifica al inicio del proyecto pero
a lo largo del proyecto va modificando su planificación, mientras que el 11.11% restante realiza la
planificación al inicio y no la modifican. Esta acción sería impensada en la actualidad, ya que
planificar al inicio y pretender mantener lo planificado durante todo el proyecto es algo
prácticamente utópico. Por eso, es necesario aclarar que quien eligió esta opción pertenece al
grupo de desarrollo donde se realiza una planificación muy detallada al inicio solo de la parte que
va a desarrollar primero y deja otras etapas definidas de forma genérica, para detallarlas justo
antes reiniciar su desarrollo. Entonces podría asemejarse a definir al inicio y luego ir modificando a
medida que se avanza sobre otra iteración. Pero, el entrevistado aclaró que en caso que el cliente
requiera un análisis de todo el proyecto de manera detallada, la empresa lo realiza pero cobrando
un adicional por este trabajo y especificando con gran nivel de detalle lo que se debe realizar en
cada fase/parte o etapa del desarrollo. De esta manera considera posible poder hacer una
planificación muy detallada junto con una definición de requerimientos muy detallada y se vuelve
entonces a esa situación utópica, pero que en caso de haber modificaciones en requerimientos “no
se podría modificar”.
Las herramientas utilizadas por los grupos de desarrollo para el seguimiento de un proyecto
ayudan a tener una visión más completa de la forma de trabajo. El 77.78% de los sectores
relevados utiliza alguna de estas herramientas. Las herramientas mencionadas son: dot Project,
Microsfot Project, Aplicativo para Gestión de tareas, Sistema de tickets y Kanban board. Se
mencionó también Google desktop pero esta herramienta tiene otros fines, no el seguimiento del
proyecto. Las cinco herramientas permiten realizar la asignación y control del proyecto. De todas
estas herramientas Kanban board es una herramienta utilizada en las metodologías ágiles.
Ninguno hizo mención al uso de burn down chart cuando se pidió herramienta de seguimiento del
proyecto. Pero, ante la pregunta específica y concreta, el 22.22% sí lo utiliza, por lo que surge la
pregunta, si realmente se utiliza o no. Uno de los sectores lo utiliza junto con el sistema de tickets y
el otro con kanban board solo para proyectos grandes.
Dentro de la planificación determinar los alcances y los costos son una actividad muy crítica e
importante. Algunos manejan distintos momentos en el desarrollo para definir costos y alcances.
Se detectaron tres momentos para definir los alcances, al inicio, para cada iteración o hacer una
definición inicial y refinar en cada iteración.
Respecto a los costos, se definen al inicio, para cada iteración o bien no se manejan costos. Todos
los que no manejan costos pertenecen a organismos públicos. Los que consideraron los costos al
inicio, comentaron de diferentes formas que, en caso de variar los alcances, tratan de renegociar
los costos pero esto es sumamente difícil con el cliente y deben mantener los costos definidos, si
bien pueden modificar algunos plazos de entrega. Con una metodología ágil, esto podría volverse
más fácil, ya que el cliente forma parte del equipo y los costos y alcances se van definiendo al
iniciar las iteraciones.
Un solo grupo de desarrollo plantea la posibilidad de definir en forma general todo el proyecto y
solo en detalle una primera etapa, tanto en alcances como en costos. Esto les permite focalizarse
en una parte del producto a desarrollar, definirlo con la mayor granularidad posible y establecer un
precio proporcional a ese trabajo. Este grupo brinda la posibilidad al cliente de ofrecerle un análisis
detallado del sistema global pero cobrándoles un costo adicional y ningún cliente se los solicitó
hasta el momento.
Una consideración especial tiene que todos los grupos de desarrollo que pertenecen a organismos
públicos, quienes no definen los costos, es que todos aducen que ya existen sueldos para el
personal y esos son los costos. Pero, esto hace pensar que tal vez no se realiza un análisis costo
beneficio del proyecto de desarrollo a implementar, la sola justificación que existe un monto del
Para realizar una planificación que pueda ir modificándose, deberían considerarse mínimamente
una reunión de planificación inicial, donde se definirían los requerimientos y se priorizarían
(utilizando HU) y reuniones de ajustes donde se pueda modificar las funcionalidades requeridas o
sus prioridades. Ambas reuniones deberían contar con la participación del cliente. Por otro lado
sería importante la monitorización del trabajo diario del equipo con reuniones de seguimiento para
detectar lo antes posible inconvenientes y visualizar el grado de avance.
El porcentaje promedio de proyectos donde se cumplieron los objetivos pactados con el cliente es
alto, un 88.11%. Como algunos de los sectores relevados aclararon que entendían cumplir los
objetivos en el tiempo estipulado, y que el resto de los proyectos cumplió con los objetivos del
cliente pero se demoró un poco más en el desarrollo podría ser más alto todavía. Un 78% de los
sectores relevados afirman haber cumplido en más del 90% de los proyectos con los objetivos del
cliente. Estos números harían pensar que no es necesario cambiar la forma de trabajo dado que el
porcentaje de éxito es muy alto, pero si se analizan otros datos, como situaciones de riesgo por
ejemplo, que se analizará más adelante, no es tan cierto.
Expresar en una sola opción el nivel de satisfacción que en general tuvieron los clientes con los
proyectos realizados frente al producto desarrollado, no es una pregunta sencilla. Existen
seguramente en el haber de cada área de desarrollo de software diferentes experiencias y
resultados. Pero se buscaba obtener la impresión que ellos mismos tienen, en términos generales,
de la satisfacción del cliente frente al producto desarrollado. En base a las respuestas obtenidas se
desprende que en cada proyecto desarrollado cada grupo logró entender al cliente y satisfacer sus
necesidades. O por lo menos, la idea en general del nivel de satisfacción del cliente es bastante
alta en todos los casos. Si bien el porcentaje de clientes completamente conformes es muy bajo,
5.56%, es entendible dado que es muy difícil poder cumplir con todas las expectativas del cliente.
Pero tener un 61,11% de clientes muy conformes es un buen indicativo de que se está
entendiendo bien las necesidades del cliente y se está logrando implementarlas. Este valor
también genera la inquietud de si es necesario o no modificar el proceso de desarrollo si se
alcanzan tan buenos niveles de satisfacción.
Si por dificultades se ve en riesgo cumplir con los alcances pactados, el 77.78% de los grupos de
desarrollo, trabajar horas extras. Es decir que, trabajar horas extras es la medida más común para
corregir desviaciones en un proyecto, pero esto como se afirma Beck [Beck 2000], desvaloriza y
desmotiva al equipo y, a su vez, éste suele producir código de menor calidad. Por lo tanto, trabajar
horas extras no es algo conveniente y no debería hacerse tan frecuentemente. Para un 55.56%,
también se utiliza extender la iteración o plazo de entrega (si no hay iteraciones), generalmente
asume aquí los costos el sector de desarrollo dado que el cliente difícilmente acceda a aumentar
los valores pactados, por eso se entiende que sea tan. Un solo caso planteó otra opción que es la
de agregar recursos si es que hay disponibles. Uno solo considera la opción de finalizar la
iteración en el tiempo pactado, si el cliente insiste en finalizar en esa fecha.
El riesgo al que claramente se le asignó mayor importancia fue la variación de los requerimientos
de los clientes. Es muy importante para el éxito del proyecto tener en claro que es lo que el cliente
necesita. Cuando estos requerimientos cambian debe ajustarse el proyecto para poder adaptarse a
los cambios, y si no se realiza correctamente puede no satisfacerse las expectativas del cliente.
Las imprecisiones del cliente le siguen en importancia, que podría asociarse también al riesgo
anterior, dado que si los clientes no son precisos a la hora de definir que es lo que necesitan, lo
más probable es que las especificaciones de requerimientos varíen. Ambos riesgos pueden
minimizarse o reducirse aplicando alguna práctica ágil, y sobre todo considerándo al cliente como
parte del equipo de desarrollo, buscando satisfacer más las necesidades del cliente que un
Dentro de otros posibles riesgos que fueron mencionados por los grupos de desarrollo relevados
merece la pena desacar la falta de validación interna cuando todo es urgente dado que se deja de
probar. Esta suele ser una práctica común cuando se deben cumplir fechas límites, pero llama la
atención que no fue mencionado como un recurso más al momento de tomar medidas para cumplir
con el alcance predefinido. Esto podría explicarse si se entiende que no es algo aconsejable, y por
eso no se mencionó como una medida a tomar. Pero aquí se manifiesta que esta práctica existe, y
se reconoce que puede poner en riesgo el éxito del proyecto. Otro riesgo ya mencionado es tomar
una mala decisión de qué objetos reutilizar dado que pueden llegar a necesitar demasiado re
trabajo que hubiera sido menos costoso desarrollarlo desde cero. Este riesgo está claramente
explicado y no merece mayores comentarios. Por último se comentará el riesgo de tener una
planificación imprecisa, dado que en todos los casos se consideró al lider involucrado directamente
en la planificación del proyecto, recae en él este riesgo y justamente quien hizo mención a este
riesgo realiza la planificación al inicio y solo, si hay desviaciones, realiza modificaciones dentro de
la iteración. Debido a esto es que se entiende su mención en este punto.
Una sola de las áreas de desarrollo relevadas utiliza una metodología ágil, Scrum y representa el
11.11% de la muestra. Pero existe otro porcentaje que está pensando en utilizarlas. Es decir que
poco más de la mitad (55.56%) usa o piensa utiliza una metodología ágil.
Si bien un grupo de desarrollo puede no adoptar una Metodología ágil puede estar utilizando
prácticas ágiles, en este caso el 88.89% reconoce utilizar alguna de las prácticas ágiles que se le
presentaron. La práctica más indicada fue refactorización con 66.67%, seguida por entregas
frecuentes 55.56% y luego con un mismo porcentaje (44.44%) diseño simple y reuniones diarias.
Ninguno realiza pruebas automatizadas
Se mencionaron varias herramientas para ayudar a realizar la práctica ágil de reuniones diarias y
otras herramientas como radiadores de información. Pero no se mencionan herramientas que
faciliten las prácticas ágiles de: Programación de a pares, Refactorización, Iteraciones cortas,
Diseño simple y Entregas frecuentes que según los grupos relevados, practican en el desarrollo de
software. Por lo menos es interesante, entonces, considerar que el 75% del total que dijo realizar
refactorización, no utilizan ninguna herramienta, corriendo el riesgo de propagar errores al realizar
esa acción, sumado a que no tiene pruebas automatizadas
Por lo tanto no es incongruente lo que se plantea en este trabajo de tesis que es sugerirles por lo
menos una serie de prácticas ágiles. De esta forma el acercamiento a las metodologías ágiles es
progresivo y pueden ir incorporándose las prácticas en forma individual y según necesidades y
características del equipo.
4.2.4 Reflexión
Realmente, obtener la información para analizarla y realizar el estudio de campo fue mucho más
complicado de lo esperado. Una actividad que se había planeado realizar en un par de semanas
debió extenderse en más de tres meses de insistir amablemente para conseguir la entrevista o la
encuesta con los datos. A pesar de insistir con los responsables del sector de desarrollo sobre todo
de los organismos públicos, no se pudo recabar la información que se pretendía. Si bien existía un
compromiso inicial de colaborar con el estudio de campo, es entendible que estos equipos de
desarrollo siempre estén sobrecargados de actividades y también deben adecuarse a las
necesidades de reuniones de personas del gobierno. Sin embargo se pudo obtener información
con la cual realizar un “modesto” estudio de campo.
Habiendo analizado los datos relevados con detenimiento, se tiene un panorama general de la
situación actual de los sectores de desarrollo que utilizan DBC, sus características y su forma de
trabajo. Si bien los niveles de satisfacción de los clientes son muy altos y los resultados de los
proyectos muy satisfactorios, la propuesta que se busca plantear podría tratar de minimizar los
riesgos que fueron identificados y que podrían conducir a no lograr los objetivos del proyecto. Se
puede tratar de definir roles dentro del equipo para dar mayor libertad al equipo y sacar tantas
responsabilidades al líder de proyecto, se pueden proponer diferentes reuniones para lograr la
participación de todos los involucrados y se pueden proponer recursos que ordenen la forma de
trabajar y realizar el seguimiento.
Si se quiere comenzar a pensar en una metodología ágil, hay que tener en mente los cuatro
postulados del manifiesto ágil y buscar una aproximación hacia ellos.
1) Valorar al individuo y a las interacciones del equipo de desarrollo por encima del proceso
y las herramientas.
Pero este postulado, exige un cambio de concepción de las personas dentro del equipo, no
como simples desarrolladores, sino como el recurso más importante para lograr el éxito del
proyecto. Se debe prestar atención a las personas y se debe proveer mecanismos para
mejorar las interacciones de las personas, la forma de comunicarse y transmitir su
información.
2) Valorar el desarrollo de software que funcione por sobre una documentación exhaustiva.
Si bien todos afirman tener colaboración por parte del cliente, se pudo determinar que el
significado de colaboración no es el mismo para todos. No es solo permitirles probar el
sistema, o brindarles información del avance del proyecto o poder realizarles consultas
cuando sea necesario. En el desarrollo ágil el cliente se debe integrar y debe colaborar con
el equipo de trabajo. Es otro cambio cultural importante para que cliente y equipo realicen
la toma de decisiones conjuntas. Es muy importante poder mantener una comunicación
rápida, y conexiones de interacción entre todos los individuos.
Por lo tanto, incorporar un desarrollo ágil al desarrollo basado en conocimiento en Salta, implica
por sobretodo un gran cambio cultural, que no es posible lograrlo de un día para otro. Requiere un
trabajo con el equipo, la organización de la que depende y el cliente.
A continuación, según las formas actuales en que vienen trabajando los equipos relevados se
presenta un lineamiento y plantean prácticas para ir incorporando e internalizando, para poder
trabajar con metodologías ágiles.
La propuesta se divide en tres secciones principales (Ver Figura 4.3.1), cada uno de ellos con
propósitos diferentes, como lo plantea la mayoría de las metodologías ágiles.
Mejoras al
Entendimiento de proceso
requerimientos
Visión Reflexión
Equipo de desarrollo
final
INICIO RITUAL DE
AGIL FINALIZACIÓN
Stakeholders
PLANIFICACION
Entrega
final
Lista
de HU Cambios en
requerimientos Aceptación de
entregas
Cliente + analista
Figura 4.3.1: Prácticas ágiles para el desarrollo basado en conocimiento
La primera parte busca compartir una visión del proyecto a realizar, clarificar los objetivos y
razones por las que se realiza el proyecto, la segunda parte se centra en el desarrollo en sí del
producto esperado y por último se encuentra el cierre del proyecto, que incluye la entrega final del
producto:
1. Iniciación ágil
2. Producción
3. Ritual de finalización del proyecto
A continuación se describe cada una de las etapas que la conforman.
Iniciación Ágil
Visión
INICIO
AGIL
PLANIFICACION
Lista
de HU
El principal objetivo de la iniciación ágil (agile inception) es construir una visión completa sobre el
concepto de producto y que además no caiga en sesgos personales, es decir, que esa visión sea
compartida y comprendida de idéntica forma por los principales interesados. Algunos agilistas
consideran que esta conceptualización en el arranque de un proyecto no es necesaria. Ya se sabe
que el agilismo es sinónimo de adaptabilidad y que, en cada iteración, se puede contar con
actividades de análisis que generarán la retroalimentación necesaria para construir la visión de
forma incremental; y que el equipo se adaptará para cumplirla. [Rasmusson]. En metodologías
como DSDM, open UP, Crystal existen ciertas tareas relacionadas con la incepción, ya sea que se
la llame actividad de caracterización, fase de inicio, definición de requerimientos.
“Los proyectos suelen iniciarse pensando que todos están de acuerdo y piensan lo mismo,
asumiendo consenso donde no lo hay. Al comenzar realmente a desarrollar, se detecta que todos
tienen algo diferente en mente. Buenos equipos pueden manejar estas situaciones y adaptarse en
En su mayoría, los equipos que trabajan con Desarrollo basado en conocimiento en Salta Capital,
delegan en el líder del proyecto la definición de los requerimientos quien trabaja junto con el
cliente. Posteriormente presentan el proyecto al equipo encargado de implementarlo. Prestándose
esta situación justamente a malas interpretaciones, como las mencionadas por Rasmusson.
Para atacar este problema, Rasmusson propone una herramienta para caracterizar el proyecto de
manera liviana. Simplemente plantea responder en una reunión con el equipo y el cliente 10
preguntas antes de comenzar el nuevo proyecto. Estas preguntas sirven para dos objetivos:
configurar la alineación y las expectativas. La alineación es sobre asegurarse que todos tengan
claro porqué se está tratando de realizar esto y cómo se va a lograr. Las expectativas están
relacionadas con la comunicación clara entre el equipo y los stakeholders, que implicará llevar el
proyecto al éxito. Se definen aquí las reglas de compromiso, concluyendo si es posible realizar lo
solicitado, si es muy complejo y lo que tomará [Rassmusson]. Pero esta reunión puede durar varios
días y posiblemente no se pueda contar con el cliente para participar en ella de manera exclusiva.
Por esto no se considera en esta propuesta aplicar la herramienta de manera completa.
Una reunión de inicio ágil donde se realizan dos técnicas propuestas por Ramusson
en The Agile Samurai. Todo el equipo debe participar y fundamentalmente los
stakeholders. Las dos técnicas son: Definir una visión y Conocer a la comunidad:
Definir una visión común: si bien parece trivial, todos deben estás de acuerdo en que
se quiere construir, porqué. Se debe poder definir los pasos para alcanzarlo e
identificar los posibles riesgos que condicionen el éxito del mismo.
Una reunión de planificación: el analista, junto con el cliente definen las historias de
usuario, refinando las visiones de los diferentes usuarios previamente definidas. Las
historias de usuario son priorizadas y sirven de base para toda la etapa de
producción. Se debe lograr tener escritas un número razonable de historias para
iniciar, sino, el equipo estaría desarrollando tareas no maduras completamente.
[Epstein].
El núcleo de la reunión de planificación es, no solo, poder definir y priorizar la mayor cantidad de
historias de usuario junto con el usuario, sino entender qué es lo que realmente está necesitando el
cliente y para ello en muchos casos trabajar con prototipación rápida es de mucha ayuda.
• los equipos trabajan en más de un proyecto cada uno: Se podría considerar subdividir al
equipo y asignar a cada uno un proyecto, pero algunos equipos son de muy pocas
personas y esta acción sería imposible.
• los líderes de proyecto no suelen delegar, ellos deciden que artefactos se reutilizan y fijan
pautas del diseño. Sería conveniente que el líder sea uno más del equipo y acompañe
desde adentro el proceso de producción.
• existe un sector relevado que si bien divide el personal en equipos de trabajo, estos no son
multidisciplinarios. Cada uno realiza una actividad específica para cada proyecto.
• existen especialistas que trabajan en varios equipos al mismo tiempo. Sería importante que
ellos puedan tener definidas claramente las tareas a realizar de todos los proyectos donde
están involucrados
• no todos trabajan con iteraciones. Dentro de los que trabajan con iteraciones, no todos
tienen duraciones establecidas. Los que directamente no trabajan por iteraciones trabajan
por módulos o productos a entregar, siendo las duraciones dependientes de la complejidad
de cada uno.
Se plantean entonces dos alternativas, definir iteraciones o ver el proceso como un flujo continuo
de trabajo. En la encuesta a quienes trabajan en Salta con ágiles, todos trabajan con iteraciones.
Si se quisieran seguir el camino de definir iteraciones, como los equipos trabajan en más de un
proyecto a la vez, la situación se vuelve compleja. Sería recomendable subdividir los equipos
donde cada sub equipo tenga asignado un único proyecto y solo sean los especialistas, quienes
estén involucrados en varios proyectos, definiendo un Scrum board para cada proyecto y un
Kanban board para los especialistas. Pero como se señaló anteriormente, esto puede no ser
posible por la cantidad de personal disponible.
La siguiente alternativa, que podría adaptarse más a esta característica, es trabajar en varios
proyectos simultáneamente, manteniendo un flujo de trabajo constante, tal como propone Kanban.
Es por eso que en esta tesis se propone trabajar de esta manera. Además, dentro de Kanban
también es posible trabajar con iteraciones si el equipo desea hacerlo.
Por lo tanto, la etapa de producción de esta propuesta plantea trabajar a través de un flujo de
trabajo contante compartido para todos los proyectos que se estén desarrollando en simultáneo. Si
surge un nuevo proyecto, se incorporan las historias de usuario o ítems asociados al mismo en el
Avances e Producción
inconvenientes
Entendimiento de
requerimientos
Aceptación de
entregas
A través de una pizarra Kanban se van incorporando, al listado de tareas, las historias de usuario
de diferentes proyectos y se logra tener la visión general de todo lo que se va realizando. Para ello
se divide el proceso de desarrollo propiamente dicho en diferentes etapas. Queda a criterio de
cada equipo las etapas a considerar, pero lo que se debe establecer claramente es la definición de
terminado (Definition of Done T DoD) de cada una dentro del proceso, y ésta definición debe ser
perfectamente comprendida por cada uno de los involucrados. Esto es muy importante, ya que
define la calidad con la que se termina una determinada tarea. Es simple de definir y evita malos
entendidos dentro del equipo ya que todos entienden hasta donde se debe avanzar en cada tarea
para considerarla terminada. Por ejemplo, el desarrollo debe quedar claro si debe contemplar la
realización de todas las pruebas de unidad necesarias o no. También, para evitar cuellos de botella
se debería especificar el WIP de cada etapa dentro de la pizarra. La determinación de qué etapas
definir dentro de la etapa de producción y el WIP de cada una debe ser definido por el propio grupo
y puede ir modificándose y refinando a medida que el equipo adquiera más experiencia.
La lista de Historias de usuario o ítems debe considerar las visiones de los diferentes stakeholders
de los proyectos. El analista, junto con el cliente determinará las prioridades de cada ítem. En caso
de trabajar en varios proyectos de manera simultánea, luego intercalará los ítems de cada proyecto
según sea más conveniente.
Las etapas dentro del proceso de desarrollo pueden ser adaptadas según la forma de trabajar del
equipo y la organización. Por ejemplo podría definirse según las actividades del ciclo de desarrollo
de Genexus: diseño – prototipación – producción. Otra opción podría plantear etapas como:
análisis – desarrollo – prueba – producción. Se pueden ir agregando o eliminando etapas. Se
sugiere iniciar con un análisis, dado que en todos los casos relevados del trabajo con DBC, el líder
fija pautas de cada funcionalidad a implementar, define si se debe utilizar reutilización y hasta en
algunos casos determina algunos detalles específicos a considerar. El que tradicionalmente venía
Los especialistas, que hubieren dentro de un equipo, pueden tranquilamente trabajar dentro de la
misma pizarra con una columna exclusiva y tener una pizarra aparte, donde se duplicará los ítems
o historias de usuario. De esta forma cada especialista tiene en una sola pizarra todas sus tareas,
priorizadas, de diferentes proyectos y equipos con los que colabora
Si el equipo quisiera trabajar con iteraciones podría definirlas sin ningún inconveniente. De hecho
la metodología Kanban puede combinarse con otras metodologías y permite definir iteraciones.
Además de ver el período de producción como un flujo de trabajo, se debe generar un espacio
propicio para la comunicación y reflexión. Se plantea mantener cinco reuniones, que se detallan en
la siguiente tabla: Una reunión de contextualización, Una reunión de seguimiento, Una reunión de
evaluación y reflexión interna, Una reunión de evaluación externa y Una reunión de ajuste. Cada
una de estas reuniones surge de una necesidad de comunicación específica.
Cuando aparecen nuevas historias o modificaciones en las historias, el analista debe tener un
tiempo para poder explicar al resto del equipo de desarrollo las razones por las que se incorporan o
modifican, enriqueciendo las historias con una descripción de lo que conversó con el cliente en la
reunión de ajuste. Ya no está presente el cliente, porque difícilmente éste pueda disponer de
tiempo para varias reuniones, y por otro lado porque podría haber modificaciones en historias de
varios proyectos y pueden discutirse todas en una sola reunión. Como resultado, todo el equipo
debe tener claro que es lo que se pretende alcanzar con las historias que se incorpora o modifica.
Se ha tomado el nombre de reunión de contextualización porque justamente el objetivo es
contextualizar a todos los miembros del equipo de desarrollo en los ajustes que se van a realizar
dentro de las historias de usuario a implementar.
El equipo de desarrollo debe acompañarse y conocer qué está realizando cada uno, y que
problemas puede estar teniendo. Este tipo de interacción es imprescindible, dentro de las
metodologías ágiles y debido a que el objetivo principal es realizar el seguimiento de las tareas
realizadas por cada uno del equipo de desarrollo, se tomó de los nombres posibles, para este tipo
de reuniones, el nombre de reunión de seguimiento.
En el propio manifiesto ágil se hace mención de la importancia y necesidad de que el propio equipo
reflexione sobre su forma de trabajo, los inconvenientes que tuvo, y sobre todo permitiendo un
intercambio tranquilo de opiniones que permite hacer crecer al equipo en madurez. De este tipo de
reuniones surgen cambios en la forma de trabajar para evitar inconvenientes que se tuvieron
anteriormente, o para tratar de mejorar el proceso de desarrollo. Así se va afinando el proceso a
Una situación muy frecuente es la solicitud de cambios por parte del cliente. Lo ideal es que sean
realizados por el cliente en una reunión de ajustes con el analista, para que explique cuáles son las
modificaciones ya sea de prioridades, funcionalidades que solicita. De esta manera se tiene la lista
de historias de usuario actualizada. Estos datos también son transmitidos al resto del equipo de
desarrollo por parte del analista mediante una reunión de contextualización.
Dentro de las actividades diarias del período de desarrollo es oportuno aclarar que, como se
considera el desarrollo basado en conocimiento, se incluye la prototipación rápida. Pero se
recuerda que el prototipo de DBC es un producto potencialmente entregable, que con mínimas
tareas puede ser instalado en el entorno real de cliente para su explotación. La generación de
prototipos de DBC es una característica muy destacada en Desarrollo Basado en Conocimiento y
muy útil para realizar validaciones rápidas con el cliente, pero por lo que se ha analiza no es muy
utilizada en los equipos para lograr que el cliente participe a lo largo del desarrollo.
Ritual de finalización
Reflexión
final
RITUAL DE
FINALIZACIÓN
Entrega
final
Las reuniones que aquí se realizan son dos, una de entrega final al cliente, entre el cliente y el
analista y otra de reflexión final de todo el equipo. Ambas se describen en la siguiente tabla (Ver
Tabla 4.3.3). Esta última etapa del proyecto es muy importante para el aprendizaje del equipo de
desarrollo. Si bien la reunión de entrega final es importante dado que se cierra el proyecto
formalmente con el cliente y se concluye con la relación con el cliente entregándole el sistema
empaquetado, la reunión de reflexión final es más importante en cuanto al crecimiento del equipo
de desarrollo. El equipo participa de esta reunión con los stakeholders y escuchan la opinión de
cada uno de ellos respecto a cuán útil o valioso es para su actividad lo que se desarrolló. Luego el
equipo de desarrollo extrae lo positivo y negativo del proyecto y con lo aprendido seguramente
propondrá mejoras al proceso de desarrollo.
Una reunión de entrega final, donde el analista se reúne con el cliente para dar por
concluido el proyecto habiendo realizado la entrega del sistema empaquetado
desarrollado por el equipo
Una reunión de reflexión final, el equipo junto con los stakeholders realizan una
valoración de lo que se logró construir. Se reflexiona en lo positivo y negativo del
proyecto que está concluyendo para aprender la experiencia vivida.
4.3.2 Roles
Cuando se comienza a utilizar una metodología ágil la pregunta es qué rol desempeñará el antiguo
líder de proyecto, el analista, el tester. La intención fue tratar de definir los roles de tal manera que
las personas casi intuitivamente sepan que rol deberían ejercer. Definiendo más roles, se buscó
Se tomaron como base las definiciones de roles principalmente de open UP y Crystal, pero se
realizaron a algunas de ellas sutiles modificaciones. Los términos utilizados dejan en claro su
función principal. Si bien tres tienen una correlación casi directa con los roles principales de Scrum,
se plantean otros roles que al iniciarse en metodologías ágiles pueden ser muy útiles y luego
pueden ir desdibujando para darle mayor autonomía y poder de auto organización al grupo.
• Coordinador: debe, como mínimo, tomar nota en la planificación del proyecto y las
reuniones, así rastrear la información para enviar o presentar. Debe proteger al equipo de
distracciones y de otros elementos externos y lo mantiene enfocado. Elimina obstáculos
que alejen al grupo de la consecución de objetivos de la iteración. Dirige las reuniones
diarias. Realiza el seguimiento del avance. Este rol sería casi el de Scrum Master en
Scrum. No es sinónimo de ser el líder del grupo. Puede desempeñar otros roles
simultáneamente
• Tester. Este rol es el responsable de acompañar, como describe XP, al cliente en las
pruebas funcionales o de aceptación, tomar registro de los resultados. Difunde los
resultados en el equipo. Tanto Open UP como Crystal Clear y XP cuentan con un rol de
Tester. Pueden ser asignaciones temporales dentro de los miembros del equipo dado que
en ninguno de los sectores que trabajan en Salta con Desarrollo basado en conocimiento
se tiene una persona específica para diseñar y ejecutar las pruebas, y además debido a
que se espera que cada diseñador programador realice sus pruebas.
• Diseñador líder: Es la persona técnica líder, la persona que se supone tiene experiencia
con el desarrollo de software, capaz de realizar el diseño mayor del sistema, que avisa
cuando el equipo de proyecto está o no en cronograma, y si no lo está como volver al
cronograma. Es el encargado de buscar y definir los objetos a reutilizar. El líder de diseño
suele tener mayor influencia en el taller para darle forma a la metodología. Se tomó este
nombre de Crystal Clear dado que Alistair Cockburn usa la palabra "diseñador" para este
rol para cortar el nombre "líder diseñador programador." El diseñador líder debe diseñar y
programar como los otros diseñadores programadores. Cuando el equipo tiene suficiente
experiencia se puede prescindir de este rol y delegar al equipo sus funciones.
El equipo de desarrollo por lo tanto está conformado por varios roles: analista, coordinador,
diseñadores programadores, testers, diseñador líder (si se encuentra definido) y especialistas (si
hubieran). A su vez el cliente participa constantemente con el equipo de desarrollo, colabora
constantemente y conforma junto con él el equipo del proyecto.
Se trató de desdibujar el rol tradicional del líder del proyecto tradicional, incorporando varios roles
propuestos por algunas metodologías ágiles. Ser ágil no es sencillo. Implica cambiar preconceptos
mentales en la forma de trabajo [VersionOne web].
4.3.3.1 Artefactos
Las historias de usuario (HU) permiten especificar los requisitos del software. Los datos que
mínimamente deberían contener son:
• Proyecto al que corresponde: sería conveniente trabajar con diferentes colores por
proyecto para que sea fácil identificar las tareas de cada proyecto
• Identificación de la HU.
• Prioridad
Prototipo DBC: Parte de un sistema desarrollado que funciona en el entorno de desarrollo y puede
ser potencialmente entregado al cliente.
Podrían considerarse otros artefactos, pero la intención es hacer una propuesta simple, y que
ayude a lograr un desarrollo ágil. Adhiriendo a lo que Cockburn menciona, no se busca que sea
eficiente sino que sea un conjunto de prácticas suficiente. Después el equipo puede ir adaptando y
completando lo que considere más adecuado a su situación particular. Por ejemplo, si fuera
necesario realizar un estudio de factibilidad, el documento resultante sería un artefacto a tener en
cuenta
Actualmente solo uno de los sector tiene registros muy formales del proceso de desarrollo, que
pueden ofrecer cierta resistencia a trabajar solo con los artefactos propuestos, pero cada equipo
puede incorporar los artefactos que considere necesarios y en reuniones de reflexión determinará
posteriormente si son útiles o no. La intención no es romper con lo que vienen realizando los
equipos sino ir sugiriendo alternativas para orientarlos hacia una metodología ágil.
4.3.3.2 Instrumentos
Kanban Board: Tablero de Trabajo con las Historias ordenadas para un equipo, pudiendo
corresponder a más de un proyecto. Es recomendable utilizar algún marcador distintivo para cada
proyecto, por ejemplo diferentes colores. Cada tarjeta en esta pizarra tiene: Fecha de ingreso,
Fecha comprometida (si es aplicable), Descripción y Prioridad. [Modezki 2011]. Se propone que
tenga en su forma más básica 5 columnas: ítems o HU, análisis, desarrollo, aceptación (testing),
producción. Salvo la primera y última columna, cada columna se divide en 2 sub columnas
(haciendo y terminado). También el tablero debe reflejar cual es la definición de terminado (DoD)
de cada etapa del proceso de desarrollo y el WIP fijado para cada uno. Si hubieren tareas para
especialistas, se debe considerar una columna más por cada especialidad. Cuando una tarjeta sea
arrastrada hacia allí, se crea una copia en el Kanban board del especialista. Y, cuando el
especialista termina la tarea desplaza la tarjeta a la columna terminado del Kanban board. Pero
esta es solo una propuesta (Ver Figura 4.3.6) y puede modificarse, simplemente se agregan o
eliminan columnas según sea necesario. Tranquilamente se puede utilizar una pizarra web de las
cuales existen muchas propuestas en el mercado, como por ejemplo KanbanFlow, Kanbanize, Jira.
La mayoría permite una visión simple y una más detallada de cada item definido, permite el uso de
diferentes colores, y tiene una versión para utilizar desde dispositivos móviles.
Kanban Board para especialista: Los especialista que trabajan en varios proyectos deberán tener
su Kanban board donde se les muestre todas las tareas a realizar de todos los proyectos.
4.3.3.3 Reuniones
Los equipos que trabajan con Desarrollo basado en conocimiento en Salta Capital, realizan
reuniones pactadas dentro del equipo. Algunos realizan reuniones con los clientes para mostrar
prototipos, otros para realizar ciertas pruebas. Lo importante de las reuniones es que permiten
obtener información muy relevante para el proyecto, sobre: qué es lo que hay que hacer, si lo que
se hizo es correcto, si la forma de trabajo fue correcta o puede mejorarse. La mayoría de las
metodologías plantean diferentes tipos de reuniones para obtener esta información. En esta
propuesta se plantean 9 tipos de reuniones, enumeradas en la siguiente tabla.
Etapas Reuniones
Cada organización según su experiencia podrá ir adaptando estas reuniones a las características
del equipo. Pero hay algunas consideraciones con tres reuniones claves, que vale la pena
mencionar:
Las reuniones de reflexión son una práctica que muchos equipos saltean, y esto es una
oportunidad que se pierde del equipo de discutir lo que está funcionando y lo que no y consensuar
los cambios a probar
Las reuniones de seguimiento solo deben poner al día al equipo, no resolver problemas. De ser
necesario el analista se reunirá con quien sea necesario para resolver las situaciones que
merezcan atención. Dado que aquí se plantea no realizar reuniones diarias sino hacerlas dos
veces a la semana, se puede mantener al equipo informado vía correo electrónico, y utilizando
alguna herramienta ágil. [Epstein]
Las reuniones de planificación no deben ser muy largas y no deben confundirse con reuniones de
diseño.
Por otro lado es obvio que se logrará un software de mayor calidad si se practican las prácticas
propuestas por XP, pero para comenzar con los primeros pasos en un desarrollo ágil, puede
prescindirse de ellas y dejarlas para ir incorporándolas paulatinamente, según el propio grupo vea
la necesidad y las ventajas de realizarlas. Mientras menos sea impuesto desde afuera al grupo de
desarrollo más fácil el grupo adoptará la forma de trabajo y la irá adecuando a sus características
específicas. Jim Highsmith da el consejo de comenzar con menos de lo que se piensa necesitar y
probablemente eso sea todo lo necesario; es más fácil agregar algo después que quitar algo
Los equipos ágiles maduros incorporan algunas prácticas técnicas claves dentro del procedimiento
estándar de operación para mantener una paz sostenible con un desarrollo de software rápido. Dos
de estas prácticas son integración continua y pruebas automatizadas. Producir construcciones
limpias, integradas varias veces cada día y correr esos desarrollos a través de suites de pruebas
automatizadas, aumenta la velocidad de desarrollo. También ayuda a mantener el código estable,
con el que puede interactuar el stakeholder alimentando ciclos más cortos de retroalimentación.
Estas suelen ser prácticas difíciles de incorporar debido a restricciones de capital, pero son
importantes para la sustentabilidad a largo plazo. [Kindon 2007]. Estas dos prácticas van de la
mano con la refactorización.
Por lo tanto solo se analizará una forma de lograr implementar estas cuatro prácticas:
3. Integración continua: El código se debe integrar como mínimo una vez al día, y realizar
las pruebas sobre la totalidad del sistema. La integración continua a menudo reduce la
4. Estándares de programación: para facilitar los cambios, mantener el código legible y para
maximizar la reutilización posterior de lo desarrollado. El seguir patterns de Genexus en el
desarrollo, ayuda mucho en este sentido. Exige, en un principio, control por parte del líder
de proyecto para supervisar que realmente se estén cumpliendo los estándares, aplicando
patrones, pudiendo hacerlo mediante la toma de muestras aleatorias de lo desarrollado.
Una vez que ya se encuentran internalizados los estándares en el equipo, los controles
pueden disminuirse. Esta es una práctica muy útil y simple, si bien parece fácil de
incorporar, requiere convencer al equipo de las bondades de esta práctica.
4.3.5 Reflexión
En esta sección se planteó una propuesta para realizar el Desarrollo Basado en Conocimiento
tratando de alcanzar, con ciertas prácticas, los postulados el manifiesto ágil, tomando como base
un estudio de campo en organizaciones de Salta Capital que trabajan con desarrollo basado en
conocimiento. Se planteó una estructura general para realizar los proyectos, se definieron roles,
algunos elementos (artefactos, instrumentos y reuniones) y se realizó una recomendación de
determinadas prácticas ágiles que sería conveniente aplicar. Nada de lo propuesto pretende ser
una regla, más bien un lineamiento que oriente a las organizaciones que quieren iniciar el cambio
hacia las metodologías ágiles. Cada organización adoptará lo que considere necesario y
reemplazará aquellos que crea que no se adapta a su situación específica.
Para finalizar, como se mencionó reiteradamente, para poder incorporar un desarrollo ágil al
desarrollo basado en conocimiento en contextos como los relevados en Salta Capital, es necesario
un gran cambio cultural, que debe realizarse paso a paso. A medida que se vayan conquistando
pequeños logros, todos obtendrán mayor confianza en esta nueva forma de trabajo, equipo, cliente
y organización.
Se creó en la plataforma educativa Moodle un espacio para poder compartir información con los
alumnos y donde cada grupo pudiera compartir entre ellos información. La información vertida en la
plataforma ayudaría también al seguimiento de la experiencia.
Lo primero que se realizó a través de la plataforma fue una breve encuesta a los diez alumnos para
determinar: la experiencia previa de cada uno con Genexus, cuántos trabajaban, cantidad de horas
que trabajan y tipo de trabajo realizado. A su vez, si trabajaban en el desarrollo de software, se
sondeó si seguían metodología ágil.
Respecto a la experiencia previa con Genexus antes de iniciar la asignatura, un 10 por ciento de
ellos consideraba que tenía experiencia moderada y venía trabajando con Genexus hace un año
(Ver Figura 4.4.1). Otro 20 por ciento considera que tenía conocimientos mínimos siendo la
experiencia de uno de ellos de un año de trabajo y del otro menos de un mes. Pero la cátedra
consideraba que todos tenían los conocimientos mínimos para realizar esta experiencia.
Figura 4.4.1: Experiencia con Genexus dentro del grupo de alumnos para iniciar experiencia
Figura 4.4.2: Alumnos que trabajan dentro del grupo para iniciar experiencia
Figura 4.4.3: Cantidad de horas dedicadas al trabajo dentro del grupo de alumnos para iniciar
experiencia
Todos los alumnos aun trabajando en desarrollo de software siguiendo metodologías ágiles, según
ellos, reconocieron que existía un líder de proyecto. También reconocieron que frecuentemente
trabajan en más de un proyecto a la vez pero comparte horario y lugar de trabajo. Este último
punto también se debe destacar, dado que en la empresa donde trabajan antes no compartían el
horario de trabajo, a veces se solapaba. Por lo que se detecta un cambio que anteriormente los
dueños de la empresa consideraban que no podrían realizar.
Por todo lo antes mencionado, se consideró que los equipos reflejarían la situación de los equipos
relevados en el estudio de campo de Salta Capital, donde casi no había experiencia con
metodologías ágiles, y donde existe la figura presente de un líder de proyecto. De esta manera los
Para determinar los miembros de cada grupo, se buscó que en cada uno participara uno de los
alumnos con mayor experiencia en el Desarrollo basado en conocimiento con Genexus, quienes
llevaban un año trabajando con este tipo de desarrollo. Dicha división fue planteada desde la
cátedra, una vez que los principales conocimientos sobre el Desarrollo basado en conocimiento
estaban afianzados en los alumnos.
A algunos alumnos les costó entender que los requerimientos podrían variar a lo largo del
desarrollo, creían imposible poder llegar a un desarrollo aceptable bajo estas condiciones. Otros,
vieron con mejor agrado no tener que documentar formalmente los requerimientos y diseños del
software a desarrollar. No entendían la necesidad de todas las reuniones detalladas y algunos
pensaban que podían llegar a ser opcionales. Pero, luego de las aclaraciones necesarias, los
miembros de los dos grupos estuvieron en condiciones de iniciar la experiencia práctica.
Antes de iniciar con los dos proyectos se dio un tiempo para que cada grupo se auto organice con
total libertar. La única consigna fue que expliquen en la Plataforma las decisiones tomadas. Se
creó en la plataforma educativa Moodle un espacio para que cada grupo además de compartir
entre ellos información, tengan un lugar donde puedan resumir las experiencias y resultados de
cada reunión. La información vertida en la plataforma ayudaría también al seguimiento de la
experiencia.
Cada grupo pudo distribuir los roles según su propio criterio sin intervención externa. Cada grupo
definió los estándares a seguir, si bien estaban basados en patrones. Cada grupo definió las
No se planteó como obligatorio el uso de ninguna herramienta específica, más bien se les dio
libertad a cada grupo de buscar y decidir cuáles utilizar. Aunque se les exigió que utilicen por
ejemplo alguna pizarra, sea física u on line.
Solo los clientes fueron personas externas que representaban las necesidades de cada negocio a
implementar. Estos clientes no eran alumnos de la cátedra, sino personas con necesidades reales
en las áreas planteadas para el desarrollo.
Durante todo el tiempo que duró la experiencia se brindó asesoramiento sobre la propuesta
metodológica a seguir y sobre el trabajo con Genexus para realizar el Desarrollo basado en
Conocimiento. Pero, se dejó que cada equipo trabaje libremente.
• El primer proyecto consistió en el desarrollo de un sitio web para una librería, que
buscaba principalmente obtener mayor cantidad de clientes y brindar beneficios a
determinados clientes.
• El segundo proyecto era el desarrollo para un gimnasio, cuyo objetivo principal era
llevar transparencia al control del mismo.
Para cada proyecto se contó con un cliente que participó de todas y cada una de las reuniones
enunciadas en la propuesta donde debía participar. No se mencionan los nombres de los clientes
porque solicitaron que no se utilizara su nombre real en ambos casos. Para el caso de la librería se
la denominó Mundo Libro, para el gimnasio el cliente dejó que cada grupo cree un nombre de
fantasía.
La reacción de los alumnos ante el desarrollo de dos proyectos simultáneos fue de sorpresa, dado
que en la carrera nunca se les había pedido algo similar. Consideraban en su gran mayoría, el
88.89 por ciento según encuesta realizada, que iba a ser imposible realizar ambos proyectos,
sobre todo por el poco tiempo disponible de cada uno, en algunos casos también influyó el poco
conocimiento de Genexus.
4.4.2.1 Auto-organización
Grupo 1
Como primera medida mediante una reunión definieron los roles de cada miembro, y los horarios
disponibles de cada uno. También acordaron trabajar con la herramienta kanbanize y probar el uso
• Coordinador / Analista / Diseñador líder: una persona ocupando los tres roles
• Diseñador Programador: cuatro personas
• Tester: según disponibilidad para trabajar con el analista o cliente
• Cliente: cliente real de librería y cliente real de gimnasio
• Stakeholder: vendedor de librería y secretario de gimnasio.
• No hay especialista definido.
En la pizarra de tareas definieron las siguientes actividades y para cada una mantuvieron su
columna Realizando y Terminada, salvo para la de Producción:
Grupo 2
En una reunión presencial de 25 minutos definieron los roles de cada miembro, horarios
compartidos de trabajo y horarios en que cada uno trabajaría por separado desde su casa.
También acordaron trabajar con la herramienta Kanbanize para la pizarra de tareas, Genexus
Evolution 3, Microsoft Excel 2013 y GXServer en su versión gratuita. Definieron la pizarra, sus
tareas y DoD. La información más relevante como DoD, así como los horarios de trabajo
disponibles y roles adoptados por cada uno fueron expresados en una Wiki dentro de la plataforma
En la reunión participaron el cliente, los dos equipos y un stakeholder de la librería y se obtuvo con
claridad la visión común del sistema a desarrollar para la librería: aumentar los ingresos, mediante
la captación de mayor cantidad de clientes. Se trabajó con preguntas directas al cliente. En esta
reunión también se buscó conocer a la comunidad. Aparecieron diferentes tipos de stakeholders:
dueño, vendedor, despachante, cliente virtual, cliente real, cliente preferencial, editorial..
Se pudo observar que gracias a la actividad de conocer a la comunidad aparecieron tres tipos de
stakeholders que, en un principio, el cliente, dueño de la librería, no había hecho mención:
despachante, cliente virtual y cliente preferencial.
Al tener como meta de esta actividad definir una visión, se clarificó el propósito fundamental que
algunos habían malinterpretado durante ciertos momentos de la reunión con otros objetivos que
para el dueño de la librería eran importantes pero no eran fundamentales. Si no hubiera existido
una referencia explícita a enunciar formalmente esta visión, habría quedado en cada integrante de
los equipos diferentes visiones: registrar las ventas, obtener reportes estadísticos para controlar al
personal, realizar seguimiento de envíos, entre otros.
Reunión de planificación
Luego de la reunión de iniciación ágil, se quedaron en el lugar de reunión el analista de cada grupo
y el cliente, dueño de la librería. Durante la misma el cliente enumeró muchísimas funcionalidades
que pretendía que tenga el sistema. Uno de los analistas se resistía a registrar todas las
funcionalidades aduciendo que no debían ser tan importantes y que podrían dejarse para otro
momento. Ante esa actitud, se interrumpió la reunión, y se aclaró que el cliente tenía derecho a
expresar todas las funcionalidades que quisiera en el sistema y que después serían priorizadas.
Hecha esta salvedad continuó la reunión sin inconvenientes. El haber tenido definido los diferentes
stakeholders permitió a los analistas hacerle preguntas al cliente, dueño de la librería, sobre las
funciones de cada uno, qué tareas podría realizar interactuando con el sistema. Sobre todo se vio
la utilidad en la definición de las actividades relacionadas con el despacho de pedidos de libros,
que no habían sido consideradas en profundidad. Ante la pregunta puntual de uno de los analistas
quedó completamente claro este circuito y las funcionalidades requeridas. Lo mismo surgió con el
trato preferencial a ciertos clientes de la librería. Durante la reunión los analistas fueron los que
escribieron las historias de usuarios con las funcionalidades que iban surgiendo. Iban preguntando
información complementaria para comenzar también a definir los criterios de aceptación. No fue
necesario utilizar un prototipo para las funcionalidades expresadas. Posteriormente se fue
revisando cada historia de usuario con el cliente (cada grupo redactó las historias de manera
separada), y finalmente el cliente priorizó las 25 historias de usuarios que allí surgieron.
Al cliente le resultó un poco complicado poder decidirse en las prioridades de algunas historias.
Aquí ayudó haber definido la visión común del sistema, uno de los analistas recordó al cliente cuál
era y teniendo esto en claro se determinaron con mayor facilidad las prioridades y algunas otras
fueron modificadas. El cliente tomó más tiempo para priorizar las historias más importantes y
después de la historia 25 ya no tenía demasiado claro que prefería tener implementado antes. Si
bien les dio un orden dejo en claro que para una reunión posterior tal vez podrían variar estas
prioridades.
Una vez retirado el cliente, se recordó a los analistas que ya estaban por comenzar la etapa de
producción y que el inicio la marcaba la primera reunión de contextualización de la Librería. Se hizo
énfasis en la necesidad de asegurarse que el resto del equipo se enterara de lo conversado en
esta reunión y se hizo hincapié que en debían aclarar bien a los miembros del equipo cada historia
de usuario redactada.
También se aclaró verbalmente y luego por la plataforma dos puntos muy importantes:
1. No se debía confundir Historia de usuario con Casos de uso ya que no se centra en cómo
realizarla ni tampoco pretende ser una definición exhaustiva
2. No se debía dar una historia por hecha cuando estuviera prácticamente hecha, sino tener
en cuenta que realmente cumpla el DoD.
A continuación, en la siguiente tabla, se listan las historias de usuario y las prioridades definidas.
Clasificar libros por Como vendedor quiero clasificar libros por rubro para
Media
rubro encontrarlos más fácilmente.
Ranking de libros más Como vendedor quiero solicitar el ranking de los más
Baja
vendidos (vendedor) vendidos para recomendar a los clientes.
Ranking de libros más Como cliente quiero solicitar el ranking de los más
Baja
vendidos (cliente) vendidos para conocer las tendencias.
Ranking de libros más Como dueño quiero solicitar el ranking de los más
Baja
vendidos (dueño) vendidos para recomendar a los clientes.
Pagar con tarjeta Como cliente quiero pagar con tarjeta de crédito. Baja
Ambos grupos decidieron trabajar con números correlativos como identificadores de las tareas.
En una reunión presencial con el equipo, el analista expuso las historias de usuario obtenidas y
explicó claramente las 15 primeras. Como plantearon trabajar con iteraciones de una semana,
trataron de determinar siguiendo estimaciones por comparación cuantas podrían realizar en la
primera iteración, y en principio definieron como meta realizar las tres con prioridad más alta y
avanzar si podían con las siguientes en el listado. Además debatieron como podría ser la
estructura de datos. El analista ya tenía cargadas las historias de usuario en la pizarra de tareas al
momento de iniciar la reunión y había solicitado previamente que cada uno lea las tarjetas
definidas.
Reunión virtual vía whatsapp donde cada uno comunicó sobre las actividades realizadas. Se
sorprendieron lo rápido que pudieron avanzar, sobre lo habían considerado en la reunión de
contextualización.
Reunión de Seguimiento H Grupo2
Reunión presencial donde cada uno comunicó las actividades realizadas. Se planteó problema
sobre la creación de usuario y se buscó solución a la creación de usuarios y roles. Se insistió en
aumentar la velocidad de desarrollo.
Ante este reporte se aclaró en la plataforma al equipo cuál era el objetivo de la reunión de
seguimiento y que la resolución de problemas no formaba parte de la propia reunión.
Reunión de seguimiento H Grupo1
Realizada por whatsapp, se explicó lo realizado por cada uno, y lo que cada miembro pensaba
realizar a continuación.
Reunión de Seguimiento H Grupo2
Se debatió sobre las HU desarrolladas y a desarrollar y el desempeño de cada uno en las tareas
según el tablero de tareas.
Reunión de reflexión y evaluación interna – Grupo 2
En la reunión participaron el cliente, los dos equipos y el secretario del gimnasio y se obtuvo con
claridad la visión común del sistema a desarrollar para el gimnasio: mayor control de las
actividades. Se trabajó con preguntas directas al cliente. En esta reunión también se buscó
conocer a la comunidad. Aparecieron diferentes tipos de stakeholders: dueño, secretario, cliente,
profesor.
La reunión fue más concreta, debido a que los equipos ya tenían experiencia después de haber
realizado una reunión similar con el cliente de la librería. Surgieron dos stakeholders cliente y
alumno que se mencionaron durante la reunión, pero posteriormente mientras se avanzaba en la
actividad de conocer a los vecinos quedo definido que cliente y alumno eran lo mismo y lo
llamarían cliente. En otro momento de la reunión alguien del equipo mencionó a un Gerente y
quedó aclarado que solo se consideraría a un rol administrativo aparte del dueño que se llamaría
secretario.
Reunión de planificación
Luego de la reunión de iniciación ágil, se quedaron en el lugar de reunión el analista de cada grupo
y el cliente, dueño del gimnasio. El cliente manifestó al inicio de esta reunión que no disponía de
mucho tiempo.
El cliente enumeró varias funcionalidades que pretendía que tenga el sistema. Los analistas
registraron las historias de usuario. Los analistas iban preguntando información complementaria
para comenzar también a definir los criterios de aceptación. Se pretendió también cubrir todos los
stakeholders para contemplar todas las funcionalidades pero debido a la falta de tiempo del dueño
del gimnasio, la reunión se centro básicamente en las funcionalidades relacionadas con el dueño y
el secretario. Solo se plantearon unas pocas funcionalidades referidas al cliente y ninguna referida
a los profesores. Posteriormente se fue revisando cada historia de usuario con el cliente (cada
grupo trabajó las historias de manera separada), y finalmente el cliente priorizó las 7 historias de
usuarios que allí surgieron.
Como se mencionó, el haber tenido identificado a todos los stakeholders facilitó la conducción de la
reunión, centrándose en un stakeholder por vez y determinando todas las funcionalidades
asociadas al mismo. Quedó claro para los analistas que muchas funcionalidades quedaron sin
describir por el poco tiempo disponible del cliente.
Al cliente le resultó muy simple poder decidir las prioridades de las historias. El cliente no tomó
mucho tiempo, quizás por el apuro de retirarse de la reunión lo más rápido posible.
A continuación, en la siguiente tabla, se listan las historias de usuario y las prioridades definidas
para el Gimnasio.
Clasificar clases por tipo Como secretario quiero clasificar clases por actividad para
Media
de actividad encontrarlas más fácilmente.
Tabla 4.4.2: Listado de historias de usuario iniciales del proyecto del gimnasio
Ambos grupos decidieron en principio seguir con la identificación numérica de las historias de
usuario y las numeraron a partir del número 26, dado que se habían definido 25 historias de
usuario de la Librería.
Luego, al crear en el tablero de tareas las historias de usuario, uno de los grupos decidió utilizar
colores diferentes para identificar las historias de usuario del Gimnasio respecto de los de la
Librería y el otro grupo decidió redefinir los ID de las historias anteponiéndole al número de
identificación la inicial L o G dependiendo si se refería a la Librería o al Gimnasio.
Se realizó la reunión del cliente de librería con el coordinador de grupo. El cliente manifestó estar
muy satisfecho con lo desarrollado. No se agregó ninguna historia de usuario con nuevas
funcionalidades pero se estableció el cambio de prioridades en alguna de las historias de usuario
pendientes.
En una reunión presencial con el equipo, el analista expuso y explicó las historias de usuario
obtenidas con el dueño del gimnasio. Se decidió agregar al ID de las historias de usuario una letra
G o L para que ayude a identificar las historias de usuario del gimnasio y las de la librería. Se
actualizó el Kanban Board con las nuevas historias. Se determinó la prioridad relativa de las
nuevas historias respecto de las historias de la Librería. Decidieron o seguir trabajando con
iteraciones porque se les complicaba trabajar con los dos proyectos en simultáneo, pero
incorporaron dos historias de usuario del Gimnasio con prioridad alta al inicio de la lista de tareas
para poder mostrarle al cliente del gimnasio un avance en la reunión de ajuste. Además debatieron
como podría ser la estructura de datos.
Además como se había realizado también la reunión de ajustes con el cliente de la librería se
ajustaron las prioridades en el tablero y se comentó al equipo la justificación dada por el cliente
para dichos cambios. El coordinador comentó además la satisfacción del cliente con lo que ya se
había desarrollado y esto motivó al resto del equipo.
Se decidió dar mayor énfasis a las funcionalidades del gimnasio que a los de librería. El analista
organizó según esta decisión las tarjetas de ambos sistemas.
Reunión de contextualización gimnasio y librería H Grupo2
Se planteó lo realizado por cada miembro y taras por realizar. Se plantearon los problemas con
GxServer y el abandono de un miembro del equipo y poco involucramiento de otro miembro. Se
retomó la idea de programación con Dummies.
Se realizó la reunión del cliente del gimnasio con el coordinador de grupo. El cliente manifestó
estar muy satisfecho con lo desarrollado sobre todo con la interfaz. El cliente manifestó que
prefería ahora llamar al cliente, socio o alumno. Se agregaron varias historias de usuario nuevas,
no hubo cambio de prioridades. En la siguiente tabla se muestran dichas historias de usuario.
Renombrar cliente por Como dueño quiero llamar a los clientes socios en el Alta
alumno o socio sistema, para que no haya confusiones.
Registrar asistencia Como profesor quiero registrar la asistencia a las clases de Alta
(profesor) clientes para controlar capacidades reales de las clases.
Mantener listado de Como secretario quiero administrar las clases por salones Media
salones para maximizar su uso
Registrar ventas de Como secretario deseo registrar las ventas de productos Media
extras complementarios para poder tener un control
Administrar un sitio de Como dueño deseo difundir promociones, clases gratuitas o Bajo
novedades eventos a los clientes para lograr captar nuevos clientes
Tabla 4.4.3: Listado de Historias de usuario del proyecto del gimnasio nuevas
Se realizó la reunión del cliente del gimnasio con el coordinador de grupo. El cliente solicitó
cambios en la interfaz que se tradujo en una nueva historia de usuario. Se agregaron varias
historias de usuario nuevas que son las mismas detalladas para el Grupo 1.
Respecto a la librería: Comunica los ajustes finales a realizar al proyecto y comunica la fecha de
entrega final: el 1 de junio.
Respecto al Gimnasio: Se comunicó al resto del equipo los comentarios positivos del cliente del
gimnasio sobre todo de la interfaz. Se comentaron las nuevas historias de usuario agregada a la
pizarra de tareas y se aclararon las dudas surgidas, sobre todo con la historia de usuario de
manejo de caja chica.
Respecto a la librería: Comunica los ajustes finales a realizar al proyecto y comunica la fecha de
entrega final: el 1 de junio.
Respecto al Gimnasio Se informó los comentarios del cliente. Se aclaró lo que el cliente esperaba
de la interfaz del gimnasio y se expuso las historias a agregar al listado de tareas de la pizarra,
tanto las que corresponden a nuevas funcionalidades como la que corresponde a las
modificaciones de la interfaz.
Ninguno de los miembros del equipo trabajó en los proyectos por dedicarse a estudiar para el turno
de examen extraordinario del día 26 de mayo.
Cada uno expuso el trabajo realizado. Muchos no dedicaron el tiempo estipulado por prepararse
para rendir en el turno de examen extraordinario de Mayo.
Reunión de reflexión y evaluación interna H Grupo 1
Cada miembro del grupo de desarrollo comunica lo que hizo y está por realizar. No hay
inconvenientes
Reunión de Seguimiento H Grupo2
Se reúnen los miembros del equipo e informan lo realizado y lo que realizarán. No hay problemas
detectados
Reunión de reflexión y evaluación interna H Grupo 2
Se comentó con satisfacción los logros alcanzados, aún trabajando con menos personas que el
otro equipo. Dentro del grupo algunos resaltaron el compromiso de cada miembro del equipo. Se
alentó a seguir trabajando de igual manera.
El cliente se reúne con el analista. El cliente realiza observaciones menores a una de las historias
implementadas generando una nueva historia y decide dejar fuera del proyecto el manejo de caja
chica.
Reunión de ajuste y evaluación externa y ajuste Gimnasio H Grupo2
El cliente se reúne con el analista. El cliente realiza observaciones menores a dos de las historias
implementadas y decide dejar fuera del proyecto el manejo de caja chica.
El analista se reunió con el cliente de la librería, mostraron la versión final que se encontraba ya
instalada en la web. El analista fue mostrando rápidamente las diferentes vistas del sitio según el
usuario y de esta forma el cliente vio un pantallazo general de todo lo desarrollado y estuvo de
acuerdo en que cumplía con lo solicitado.
Reunión del equipo junto con el cliente. No pudo asistir ningún stakeholder. Juntos valoraron lo
obtenido. Al cliente, debido a que trabajó con dos equipos de desarrollo le resultó demasiado
demandante de tiempo las reuniones con ambos equipos. Los productos obtenidos satisficieron
sus necesidades. Remarcó que se sorprendió de lo rápido del avance del desarrollo en pocos días,
y el resultado final en casi un mes de trabajo. Destacó de este equipo la rapidez con que realizaron
las primeras implementaciones, y la facilidad con que entendieron sus requerimientos. En este
equipo inclusive se llegaron a implementar todas las funcionalidades con prioridad baja que el
grupo 2 no consiguió hacerlo en el tiempo dado.
El analista se reunió con el cliente de la librería, presentó la versión final ya instalada en la web y
permitió que el cliente dé un vistazo general a todo lo desarrollado. Ayudó a ingresar a las distintas
vistas de usuario. El cliente estuvo de acuerdo en que cumplía con lo solicitado.
Reunión del equipo junto con el cliente. No pudo asistir ningún stakeholder. Juntos valoraron lo
obtenido. Al cliente, debido a que trabajó con dos equipos de desarrollo le resultó demasiado
demandante de tiempo las reuniones con ambos equipos. Los productos obtenidos satisficieron
sus necesidades. Destacó que teniendo conocimiento del abandono de uno de los miembros del
equipo, el equipo logró producir un producto con todo lo que él había indicado que era importante
en casi un mes de trabajo. El cliente eligió el producto desarrollado por el grupo 2 para utilizar en
su empresa pero quisiera agregarle primero las otras funcionalidades menores que logró
implementar el grupo 1. Todavía no lo tiene en uso.
El analista explica las modificaciones a realizar y saca de la pizarra la historia relacionada con Caja
chica
El analista explica las modificaciones a realizar y saca de la pizarra la historia relacionada con Caja
chica
Cada miembro explica las tareas realizadas, todas las historias fueron terminadas
Cada miembro explica las tareas realizadas, no hay ningún inconveniente. Solo resta completar la
prueba de la última historia y su puesta en producción. Los integrantes están contentos por estar
llegado a buenos resultados.
Reunión de Seguimiento H Grupo2
El analista se reunió con el cliente del gimnasio, manifestó ya haber ingresado al sistema desde su
casa y que su secretario también había estado revisando todo el sitio. El cliente aceptó que todo
estaba implementado como él había solicitado
Reunión de todo el equipo junto con el cliente. No pudo asistir ningún stakeholder. El cliente
informó que realmente el secretario se lamentaba que se hubiera sacado del listado el manejo de
caja chica, ya que era algo muy importante para él.
El cliente también apreció la forma rápida con que se iba desarrollando el sistema, la posibilidad de
no definir todo lo que necesitaba en una sola reunión y la buena predisposición para responder a
los pequeños cambios y nuevos requerimientos.
El equipo valoró la buena predisposición del cliente en el proyecto. El equipo valoró la buena
predisposición del cliente en el proyecto y lamentó no contar con la opinión directa de las otras
personas que usarían el sistema. Pero se agradeció el haber compartido la opinión del secretario.
El equipo posteriormente, sin la presencia del cliente, realizó su reflexión final, lamentando los
problemas ocasionados por haber trabajado con una versión trial y el abandono de un miembro del
grupo pero valorando los resultados obtenidos a pesar de las dificultades y rescatando lo
importante de lograr tener participación del cliente.
El analista se reunió con el cliente del gimnasio. También manifestó ya haber ingresado al sistema
desde su casa y que su secretario también había estado revisando todo el sitio. Aceptó todas las
funcionalidades implementadas y elogió la interfaz.
Reunión de todo el equipo junto con el cliente. No pudo asistir ningún stakeholder. El cliente
informó aquí también que realmente el secretario se lamentaba que se hubiera sacado del listado
el manejo de caja chica, ya que era algo muy importante para él. El cliente también apreció la
forma rápida con que se iba desarrollando el sistema, la posibilidad de no definir todo lo que
necesitaba en una sola reunión y la buena predisposición para responder a los pequeños cambios
y nuevos requerimientos, igual que en el caso del otro grupo.
El equipo valoró la buena predisposición del cliente en el proyecto. Cuando éste se retiró
reflexionaron sobre la experiencia y estuvieron conformes en términos generales con lo
desarrollado, y con el conocimiento adquirido.
En el Anexo 4 se adjuntan algunas capturas de pantallas del sistema del gimnasio desarrollado por
cada grupo.
En toda la experiencia se buscó tener un rol muy pasivo, como espectador, para simplemente
recabar información y aclarar dudas o aconsejar en situaciones especiales.
• Reuniones
• Herramientas
Posteriormente se expondrán las conclusiones finales teniendo en cuenta los puntos mencionados
anteriormente y se comentará las opiniones recibidas de una de las empresas consultadas.
Dentro del desarrollo, quedó claro que cada uno debía probar completamente lo desarrollado antes
de que pueda pasar a Testing, donde era realizado por otro integrante diferente.
Respecto a la importancia de tener una buena especificación del DoD, solo un 33% consideró que
era realmente importante (Ver Figura 4.4.5). Esto hace cuestionar, no la importancia en sí del DoD,
ya que es indiscutible que es realmente prioritario tenerlo perfectamente especificado para cada
etapa dentro de la sección de producción, sino que tal vez tenían el conocimiento tácito de lo que
involucraba y por eso lo consideraron como algo trivial. Por otro lado como se les exigió la
definición del DoD para cada etapa planteada en la pizarra Kanban al inicio de la experiencia, no
surgieron malos entendidos a los largo del proyecto respecto hasta donde involucraba cada etapa
y cuando considerarla terminada. Si se hubiera sugerido simplemente su uso, posiblemente
hubieran aparecido situaciones que les habría permitido valorar su importancia al cien por ciento
de los participantes.
En ambos casos el analista tomó el rol de coordinador. Aquellas que trabajaron como coordinador
también consideraron que las tareas que este debía realizar estaban bien especificadas y era
simple de entender pero no tan simple de ejecutar.
Por otro lado en uno de los equipos el analista y coordinador también ejerció el rol de diseñador
líder mientras que en el otro equipo fue desempeñado por una persona diferente al analista /
coordinador.
La variedad de respuestas puede interpretarse que todas están casi al mismo nivel de importancia
y es difícil elegir una de ellas. Relacionado a esta idea es que ninguno de los alumnos consideró
que había alguna reunión que podía obviarse, salvo un alumno que consideró que las reuniones de
Las reuniones con los clientes se realizaban para cada grupo el mismo día, una después de la
otra. Lo que se buscó desde la cátedra fue alternar el grupo que tenía la reunión en primer lugar.
En las encuestas realizadas el cien por ciento consideró que la participación tanto del cliente del
gimnasio como el de la librería fue algo activa. Todos reconocieron que el cliente del gimnasio
colaboró mucho con el desarrollo no solo en las reuniones, sino contestando mails, consultas
personales, participación por la plataforma en foros, y realizaba sugerencias y recomendaciones.
Si bien para el cliente de la librería el 88.89 por ciento consideró que colaboró de la misma forma
que el anterior, un 11.11 por ciento consideró que su participación se redujo a estar en las
reuniones y para él eso no mostraba colaboración con el equipo. Pero tanto para el cliente del
gimnasio como para el de la librería hay unanimidad para considerar que no fue necesaria mayor
participación de ninguno de ellos.
Fue más difícil todavía contar con la presencia de stakeholders en las reuniones iniciales y finales,
si bien es más importante incluirlo en el inicio ágil, es importante su opinión al final de proyecto.
Esto debido a sus obligaciones y a la necesidad de trasladarse al campus universitario. Un 55.56%
de los alumnos que completaron la encuesta al final, consideraron que hubiera sido más productivo
tener a los stakeholders de los sistemas en la revisión final y para el 44.44% restante que no lo
hubiera sido. Las razones aducidas por los primeros fueron en términos generales que permite
conocer si todos están satisfechos y cada stakeholder aporta una visión distinta del producto final.
Para el resto, o bien les daba lo mismo o consideraban que su opinión no influiría en cuestiones del
grupo de desarrollo.
En la propuesta, se mencionó como principal objetivo de la iniciación ágil construir una visión
completa sobre el concepto de producto y que además no caiga en sesgos personales, es decir,
que esa visión sea compartida y comprendida de idéntica forma por los principales interesados. El
propósito de esta etapa es alcanzar un acuerdo entre todos los stakeholders sobre los objetivos del
proyecto.
Para lograr esto se planteó en la propuesta realizar dos reuniones: una reunión de inicio ágil y
una reunión de planificación inicial. Se pretendía como resultado final no solo haber logrado
construir una visión compartida del proyecto, sino además tener un número considerable de
historias de usuario priorizadas, listas para comenzar con el proceso de producción.
Iniciación Ágil
Visión
INICIO
AGIL
PLANIFICACION
Lista
de HU
Reunión de inicio ágil: según la propuesta plateaba que todo el equipo debía participar y
fundamentalmente los stakeholders. Se proponían dos técnicas: Definir una visión y Conocer
a la comunidad:
• Definir una visión común: cuyo fin era lograr que todos estuvieran de acuerdo en qué se
quería construir, y también el porqué.
Por lo que se pudo observar en la reunión de inicio ágil realizada para el proyecto de la librería, los
miembros de ambos grupos consideraban este paso como algo muy trivial y cuya respuesta era
obvia. Pero, la realizaron, porque debían seguir la consigna que se les había indicado para la
reunión.
Mientras avanzaban con el desarrollo de la técnica durante la reunión, quedó en evidencia que las
visiones eran bastante divergentes entre los presentes. Para dar un ejemplo, para algunos
miembros del equipo de desarrollo la razón de realizar este sistema era para mejorar el manejo de
las ventas y el control de stock, para el stakeholder era tener un mejor control de stock y poder
registrar y realizar seguimiento de reservas de libros, pero para el cliente la razón por la que más le
interesaba el sistema era para aumentar los ingresos, mediante la captación de mayor cantidad de
clientes. Esto fue una sorpresa para varios y reamente admitieron verbalmente que sin esta
actividad nunca hubieran comprendido la visión del cliente.
Al realizar esta actividad para el proyecto del gimnasio, ya los grupos habían valorado en su gran
mayoría está técnica.
Según la encuesta realizada al final de la experiencia, la técnica propuesta para lograr definir la
visión fue considerada simple para el 78 por ciento, poco compleja para un 11 por ciento y para el
11 por ciento restante compleja (Ver Figura 4.4.8). Por otro lado, para el 67 por ciento no se
hubiera logrado tener una visión común si no se hubiera plateado está técnica en la reunión (Ver
Figura 4.4.9). Según estas opiniones y lo que se pudo observar en la experiencia realizada, en
líneas generales, podría considerarse aplicable esta técnica con buenos resultados.
Figura 4.4.9: Necesidad de la técnica de Definir la visión común para construir la visión del
proyecto
Dentro de la reunión de inicio ágil se realizó para cada proyecto la técnica de identificar a los
vecinos. Se detectaron dos situaciones diferentes que hacen válida la propuesta de realizar esta
técnica, para comenzar un proyecto sin malas interpretaciones
Cuando se aplicó la técnica para el proyecto del gimnasio aparecieron también diferentes tipos de
stakeholders: dueño, secretario, cliente, profesor, alumno. Se pudo observar que mientras se
avanzaba en esta técnica resultó evidente que cliente y alumno eran lo mismo y se estipuló que se
llamaría cliente. En otro momento de la reunión alguien del equipo mencionó a un Gerente y,
después de un debate, quedó aclarado que solo se consideraría a un rol administrativo aparte del
dueño que se llamaría secretario. Nuevamente seguir esta técnica evitó malos entendidos sobre
todo con historias de usuario que posteriormente pudieran haber surgido para dos stakeholders en
principio diferentes: Clientes y Alumnos.
La técnica propuesta resultó fácil al 78% de los participantes de la experiencia dentro del equipo de
desarrollo (Ver Figura 4.4.10). Para un 22 por ciento tuvo ciertas complejidades pero ninguno
consideró que la técnica planteada en la propuesta era compleja de aplicar.
Figura 4.4.10: Necesidad de la técnica de definir la visión común para construir la visión del
proyecto
Resumiendo, a través de esta reunión se logró realmente definir un rumbo común de todos los
involucrados en el desarrollo, permitiendo clarificar ciertos aspectos que podrían haberse
interpretado posteriormente de manera diferente. Teniendo en cuenta los resultados obtenidos, se
puede considerar que esta técnica también cumple con los objetivos con los que fue planteada y es
simple de aplicar.
La propuesta planteaba las dos técnicas mencionadas anteriormente y debían realizarse con todo
el equipo de desarrollo, el cliente y los stakeholders justamente para asegurar contemplar todas las
visiones de los posibles involucrados. Según la encuesta final, el 67 por ciento está de acuerdo en
la necesidad de participación de todos los involucrados en esta primera reunión. Algunas de las
razones citadas son:
• para que todos conozcan el objetivo del proyecto, las funcionalidades requeridas.
• porque ayuda a todo el equipo a conocer, por parte del cliente, el negocio y ayuda al
analista a entender mejor lo que se quiere.
• porque todos deben conocer el sistema a desarrollar, aportar a ello y aportar diferentes
puntos de vista.
• porque es distinto si solo participa uno solo del grupo porque se puede perder algún detalle
de lo que quiere el cliente.
• porque se debe tener claro cuál es el objetivo del proyecto y sus prioridades.
En síntesis, este 67 por ciento logró comprender cuál era el verdadero valor para esta reunión de
inicio ágil (Ver Figura 4.4.11). El 11 por ciento lo consideró inútil justificando que es el analista
quien luego describe al grupo las historias de usuario y termina ordenándolas por prioridades, este
grupo de participantes no valoró la importancia que todo el equipo de desarrollo tenga en claro la
visión, tal vez por tener una visión más rígida de un analista que actúa más bien como líder de
proyecto que ordena lo que debe realizar cada uno. Esta misma razón fue aducida por una de las
personas que consideró que era algo útil, la otra persona consideró que tiene cierto grado de
aporte pero no demasiado.
Vale la pena recordar lo que se mencionó anteriormente, para un 22% esta fue la reunión más
importante ( Ver Figura 4.4.6).
En base a la experiencia, se considera que la reunión de inicio ágil logró realmente introducir en el
tema del nuevo proyecto a todos los involucrados. De esta manera, es el equipo completo quien
construye la visión y ya no es el líder de proyecto quien transmite la visión al equipo. Se favorece
trabajando de este modo la comunicación directa enter todos, evitando malas interpretaciones. Es
el equipo completo que comienza a avanzar en el desarrollo de un nuevo proyecto de manera
conjunta.
Durante la reunión los analistas fueron los que escribieron las historias de usuarios con las
funcionalidades que iban surgiendo (cada grupo redactó las historias de manera separada). Ellos
solicitaban información complementaria para comenzar también a definir los criterios de
aceptación. No fue necesario utilizar un prototipo para las funcionalidades expresadas.
Posteriormente el cliente junto con cada analista fue revisando cada historia de usuario y
finalmente el cliente las priorizó.
El haber tenido definido los diferentes stakeholders permitió a los analistas hacerle preguntas al
cliente, dueño de la librería, sobre las funciones de cada uno, qué tareas podría realizar
interactuando con el sistema. Sobre todo se vio la utilidad en la definición de las actividades
relacionadas con el despacho de pedidos de libros, que no habían sido consideradas en
profundidad. Ante la pregunta puntual de uno de los analistas quedó completamente claro este
circuito y las funcionalidades requeridas. Lo mismo surgió con el trato preferencial a ciertos clientes
de la librería.
La priorización de las historias no fue sencilla para ninguno de los clientes. Pero los analistas
recordándole la visión previamente definida, ayudaron a realizar esta tarea, como se pudo observar
durante la realización de las mismas.
Para el 11% de los participantes en la experiencia esta fue la reunión más importante (Ver Figura
4.4.6). Analizando los resultados de la experiencia, esta reunión cumplió con los objetivos
propuestos y fue completamente viable, obteniendo como resultado un listado priorizado de las
historias de usuario para la siguiente etapa.
Avances eProducción
inconveniente
s
Entendimiento de
requerimientos
Aceptación
de entregas
Como herramienta fundamental en esta etapa se enunció la necesidad de utilizar una pizarra
Kanban, donde se reflejen las etapas que el equipo determinó considerar en el desarrollo
propiamente dicho incluyendo su definición de terminado (DoD). En la experiencia, en una reunión
de auto organización previo al inicio de los proyectos se solicitó a los dos grupos que establezcan
estas consideraciones consensuando entre todos, tal como se comentó anteriormente.
En esta etapa se plantearon cinco reuniones: Una reunión de contextualización, Una reunión de
seguimiento, Una reunión de evaluación y reflexión interna, Una reunión de evaluación externa y
Una reunión de ajuste. Cada una de estas reuniones surgía de una necesidad de comunicación
específica.
A continuación se tratará de expresar cómo funcionó cada una de las reuniones en la experiencia,
y determinar si colaboraron a los objetivos por los que fueron establecidas en la propuesta.
A lo largo de la experiencia cada grupo realizó una reunión de contextualización después de una
reunión de planificación inicial para describir las historias que surgieron y explicar un poco la
justificación de las prioridades de cada una. Uno de los grupos aprovechó estas reuniones para
discutir aspectos de diseño y esbozar un diagrama de clases para generar consenso en la forma
de trabajo del equipo.
También se realizaron estas reuniones cada vez que el cliente expresaba nuevas historias de
usuario, las modificaba o cambiaba prioridad, es decir después de las reuniones de ajuste. Tal
como lo refleja la Figura 4.4.6, para un 11 por ciento está fue la reunión más importante.
Realizando estas reuniones todo el equipo logró tener en claro que es lo que se pretendía alcanzar
con las historias que se incorporaban o modificaban.
Se pudo observar por los reportes realizados en la plataforma que a veces realizaron algunas
reuniones de manera virtual, pero que si bien es una posibilidad todos concuerdan en que el
diálogo cara a cara es mejor. En el grupo donde hubo deserción de uno de los miembros, también
sirvió de motivación esta reunión. Para un 34% de los participantes de la experienca (Ver Figura
4.4.6),esta fue la reunión más importante. Las razones aducidas principalente fueron que permite
aclarar dudas, plantear problemas, saber en qué se está trabajando.
En la segunda reunión de cada grupo se vió como objetivo alentarse a seguir trabajando para
concluir los proyectos. El grupo 1 destacó los logros alcanzados, aún trabajando con menos
personas que el otro equipo y también se resaltó el compromiso de cada miembro del equipo. Se
alentó a seguir trabajando de igual manera.
En este caso, el grupo 2 analizó la falta de tiempo dedicada al proyecto y concluyeron que esta se
debió al tiempo dedicado a la preparación de los exámenes del turno extraordinario. Todos se
comprometieron a avanzar lo máximo posible para mostrar al cliente del gimnasio y poder cerrar en
el menor tiempo posible el sistema de la librería.
Analizando los resultados de cada una de las reuniones de evaluación y reflexión interna se puede
observar que cumplió con la finalidad por la que fueron establecidas: hubo lugar para alentar a los
integrantes, lugar para resolver problemas técnicos y proponer mejoras, lugar para buscar mayor
compromiso de cada uno. Por todo esto se considera que realmente esta reunión es necesaria en
la propuesta.
Siempre a continuación de esta reunión se continuó con la reunión de ajuste, para detallar los
cambios requeridos y posteriormente el analista convocó a una reunión de contextualización para
comunicar al grupo dichos cambios solicitados.
Reunión de ajustes: El objetivo al proponer esta reunión fue brindar una herramienta para
mantener la lista de Historias de Usuario actualizada y priorizada según las necesidades
del cliente. Se reúnen únicamente el analista, junto con el cliente
En estas reuniones el cliente tuvo portunidad de detallar nuevas historias de usuario como por
ejemplo en el caso del Gimnasio, o realizar modificaciones en prioridades de la Librería. Siempre al
final de estas reuniones se actualizó la pizarra Kanban con lo convenido en esta reunión tal como
se establecía en la propuesta y se hizo una reunión de contextualización con el resto del equipo
para explicar lo acontecido.
Al respecto de los cambios solicitados en esta reunión, se consultó en la encuesta final si el equipo
aceptó los cambios de requerimientos realizados por el cliente obteniendo una respuesta afirmativa
de un 89% y el 11% restante no contestó (Ver Figura 4.4.13).
Y respecto a la complejidad para realizar los cambios solicitados (Ver Figura 4.4.14):
• el 37% consideró a la complejidad baja debido a que el analista logró entender bien los
cambios y expresar de manera concreta al grupo los mismos, también a que Gx se adapta
fácilmente a la metodoogía ágil y porque no fueron grandes cambios.
• el 50% consieró una complejidad media, aduciendo algunos por cuestiones de estar
trabajando con un trial, otro adujo que para ciertas funcionalidades se debió profundizar
ciertos conocimientos de Genxus y otro por ejemplo destacó que los cambios solicitados
tenían cierta complejidad de diseño.
• un 13% consieró que fue complejo debido a que no se contaba con todo el conocimiento
necesario sobre Genexus
Por lo tanto, se considera que el objetivo planteado al proponer esta reunión se logró en ambos
grupos durante la experiencia.
Para resumir la opinión generada a partir de la experiencia sobre las reuniones de la etapa de
producción, se puede decir que todas y cada una de las reuniones de esta etapa cumplieron con
su objetivo para ambos grupos, logrando desarrollar el producto requerido por el cliente, aceptando
los cambios que surgían y manteniendo una comunicación fluida dentro del equipo de desarrollo y
con el cliente. Tal vez, como al cliente no le agradan demasiadas reuniones, frente a él no
convenga hablar de dos tipos de reuniones, como son las de ajuste y de evaluación externa. Pero
se debe brindar oportunidad cuando el cliente desee de realizar ajustes a los requerimientos y no
solo cuando evalúa el producto que se le ha entregado hasta cierto momento.
Esta etapa de desarrollo concluyó para ambos equipos de manera posterior a una reunión de
evaluación externa y ajuste donde el cliente informó que ya no implementaría más funcionalidades
y se definió la fecha de entrega.
Pero dentro de esta etapa vale la pena resaltar también otros puntos, que se mencionarán a
continuación
• Herramientas
Si bien ambos grupos trabajaron con una pizarra Kanban utilizando la herramienta Kanbanize,
ambos grupos reconocieron no haber explotado todas las posibilidades que brindaba la
Para trabajar en una misma pizarra dos proyectos, se sugería trabajar con dos colores diferentes
para que visualmente ayude a diferenciarlos. Uno de los grupos siguió este lineamiento mientras
que el otro trabajó diferenciando el ID de la historia con una inicial según el proyecto, porque
prefirió usar los colores para distinguir diferentes tipos de historias de usuario, si eran pequeñas
modificaciones, grandes cambios, etc.
Se pudo trabajar con un mismo equipo en ambos proyectos, por lo que es viable la propuesta pero
de ser posible sería mejor trabajar cada proyecto con un grupo diferente ya que cada uno tiene un
contexto diferente.
Si se consideran las reuniones propuestas y la pizarra de tareas, éstas podrían realmente servir
para cualquier equipo de desarrollo que trabaje con reutilización y en equipos que quiera comenzar
a realizar una transformación a su proceso de desarrollo para incorporar prácticas ágiles. Pero
dentro de las actividades diarias del período de producción se había colocado énfasis en la
prototipación rápida, ya que ésta era una cualidad muy beneficiosa al consideraba el desarrollo
basado en conocimiento.
Esta herramienta para el desarrollo no fue aprovechada. Podría explicarse esto por la poca
experiencia de los participantes, quienes tal vez no se sentirían seguros de realizarlo frente al
cliente, por miedo a que ocurra algún error. Como los objetivos se lograron de igual manera podría
pensarse en que la prototipación no es necesaria, pero en esta propuesta se considera que
utilizarla podría haber clarificado más en primeras instancias algunos detalles que posteriormente
surgieron en la primera reunión de evaluación interna. Además, como se verá en los comentarios
de la empresa que opinó sobre la propuesta, consideran una gran herramienta prototipar frente al
cliente sobre todo en la reunión de planificación inicial y de ajuste.
• Pruebas
Ninguno de los grupos utilizó Framework de pruebas, realizándolas de manera manual, buscando
que el que realice la prueba no sea quien realizó la implementación. La razón de no haberla
utilizado en la experiencia, según encuesta, se visualiza en el siguiente gráfico:
La forma en que se garantizó que cambios no propagaran errores fue: mediante evaluaciones de
reportes de referencia generados por Genexus, realizando múltiples pruebas de todo el sistema y
analizando los objetos sobre los que iba a impactar los cambios realizados. En caso de surgir
algún error, se contaba con backups para volver a versión anterior siempre.
• Integración
Al no compartir todo el tiempo el lugar de trabajo y haber tenido problemas con GxServer libre, se
volvió más complejo el desarrollo. Esto llevó a que no lo utilice ninguno de los grupos. Entonces
debido a que muchas veces no estaban en el mismo lugar, ambos grupos determinaron un lugar
en la web para colocar la KB y esta se actualizaba después de que el encargado de pruebas
consideraba que estaba bien (se agregó esta actividad al DoD del testing) e informaba al resto por
chat. Ambos grupos trabajaron con programación con Dummies. Si se trabajara en un mismo lugar
compartiendo la KB directamente no habría estos problemas, por tanto se debería tratar de que los
miembros compartan el lugar de trabajo así se minimizan estos inconvenientes. La mayoría de los
encuestados, en el relevamiento para realizar el estudio de campo, manifestaron compartir el lugar
de trabajo, por lo tanto esto no sería un inconveniente.
• Reutilización
Se hizo mucho hincapié en la reutilización, sobre todo al inicio de la experiencia. Como los
alumnos no tenían demasiada experiencia y objetos desarrollados previamente se sugirió que
también en un desarrollo era válido reutilizar objetos creados por otros y se sugirió buscar en la
nube de GXServer. Esto también causó una reacción de sorpresa, dado que se les estaba
permitiendo usar algo no desarrollado por ellos. Pero al final de la experiencia el 88.89 por ciento
concluyó que es más rápido aunque en algunos casos no tanto como hubieran imaginado. Para el
11.11% restante es más rápido solo en algunos casos, y consideró más rápido desarrollar desde
cero que modificar propiedades y atributos. Caso especial fueron las reutilizaciones de objetos que
no necesitaron adaptarse y se reutilizaron sin modificaciones, como por ejemplo aquellos objetos
involucrados con la seguridad del sistema.
Por todo lo descripto en esta etapa de la experiencia, se considera que es posible realizarla sin
inconvenientes. Tal vez como al cliente no le agradan demasiadas reuniones, frente a él no
convenga hablar de dos tipos de reuniones, como son las de ajuste y de evaluación externa. Pero
se debe brindar oportunidad cuando el cliente desee de realizar ajustes a los requerimientos y no
solo cuando evalúa el producto que se le ha entregado hasta cierto momento.
Ritual de finalización
Reflexión
final
RITUAL DE
FINALIZACIÓN
Entrega
final
Tanto en la reunión de entrega final para el proyecto de la librería como para la del
gimnasio, se vio al cliente conforme con lo desarrollado. Antes de llevar a cabo esta reunión cada
grupo había instalado el sistema en un servidor privado. Se instalaron ambos ya que hasta ese
momento no se sabía cuál de los dos sistemas elegiría el cliente en cada caso.
Algo a destacar es el entusiasmo observado al presenciar la reunión con el dueño del gimnasio. En
la reunión con cada grupo, comentó haber estado accediendo al sistema desde su trabajo y que su
secretario también había navegado por el sitio final.
El 88.89% que respondió la encuesta consideró que realmente es necesaria esta reunión y el 11%
restante no contestó la pregunta (Ver Figura 4.4.18).
En el caso de la librería, el cliente aprovecho para comentar que fue muy demandante el tiempo
requerido para las reuniones. Cabe aclarar que el cliente debió participar en una reunión por cada
grupo, salvo en la inicio ágil. Por lo que no amerita reconsiderar las reuniones planteadas en la
propuesta por este comentario.
Otra cuestión a destacar del proyecto de la librería es que el cliente hizo un comentario al grupo
que había tenido la deserción de uno de los integrantes, valorando su esfuerzo y resultados
obtenidos. Esto permite detectar que las reuniones cara a cara generan un vínculo entre el equipo
de desarrollo y el cliente. Posteriormente, cuando ese grupo estuvo sin la presencia del cliente
remarcaron ese comentario y si bien el cliente prefirió el software desarrollado por el otro grupo,
quedó conforme con lo realizado, y reconocieron haber aprendido muchas cosas
Para el proyecto del gimnasio, el cliente informó que, si bien el secretario no había asistido a la
reunión, había lamentado que se hubiera sacado del listado de funcionalidades del sistema el
manejo de caja chica, ya que era algo muy importante para él. Destacó además como algo
positivo, rapidez con que se fue desarrollando el sistema y, sobre todo, la posibilidad de no definir
todo lo que necesitaba en una sola reunión. Valoró la buena predisposición para responder a los
pequeños cambios y nuevos requerimientos de ambos grupos.
El equipo valoró la buena predisposición del cliente en el proyecto y lamentó no contar con la
opinión directa de las otras personas que usarían el sistema. Pero se agradeció el haber
compartido la opinión del secretario.
Después que el cliente se retirar de la reunión, cada grupo buscó aprender y extraer cosas
positivas y negativas de lo que había ocurrido. Algunos de los comentarios surgidos en estas
reuniones, sin discriminar si fue en el proyecto de la de la librería o del gimnasio, relevados de las
encuestas fueron los siguientes:
• el equipo no quedó del todo conforme con algunos detalles de los productos, por las
limitaciones de haber trabajado con una versión trial de Genexus
• el equipo estuvo muy conforme con la forma de trabajar en equipo
• el equipo comentó diferentes cosas que “se podrían haber hecho” para considerar a futuro.
• el equipo enfatizó la reutilización de objetos para el proyecto que seguía en desarrollo
(opinión surgida en la reunión de reflexión final para el proyecto de la librería)
Analizando estos puntos se puede decir que hubo un cierto aprendizaje basado en las experiencias
vividas que enriqueció cada grupo y este era el objetivo de esta reunión. Lograron extraer
comentarios positivos y negativos del proyecto y en el último punto descripto, donde se sugería
maximizar la reutilización, incluso llegaron a proponer “mejoras” al proceso de desarrollo.
La propuesta requería la presencia de los stakeholders, pero no fue posible. Debido a esto, en la
encuesta, se consultó la opinión de cada uno respecto a la importancia de contar con los
stakeholders en la reunión. Para el 56% sí es importante contar con su presencia, para un 33% no
lo es y un 11% restante no contestó la pregunta (Ver Figura 4.4.19).
El incluir los stakeholders en la reunión, tal vez, debería reconsiderarse, dado que en cualquier
proyecto esta situación tiene muchas posibilidades de repetirse. Es casi una utopía imaginarse con
la disponibilidad horaria de todos los stakeholders en una reunión, más habiendo realizado ya la
entrega del sistema ya que incluso el cliente puede no ver ningún beneficio de ésta. La forma en
que el cliente podría acceder es tal vez, organizando una jornada de capacitación y realizando al
final de la misma esta reunión. Otra manera de obtener su apoyo y colaboración es mostrarle que
es una oportunidad para corroborar que todos ya conocen el sistema y obtener información que a
él también pueda servirle. Pero si no se tiene el apoyo del cliente en esto, se puede pensar como
alternativa realizar una encuesta breve a los stakeholders. Si bien la retroalimentación que se
puede obtener de esta forma es más limitada, se tendría una idea del grado de satisfacción y
algunas observaciones, quejas o comentarios de lo transcurrido durante el desarrollo desde el
punto de vista de cada stakeholder y son indicadores que pueden aportar algo significativo al
aprendizaje del grupo.
Por lo tanto, en base a la experiencia realizada, se considera que en el ritual de finalización ambas
reuniones son necesarias. Cada una permitió alcanzar los objetivos por los que fueron
incorporadas a la propuesta, entregar el producto y aprender en base a las vivencias durante el
proyecto. Lo que se debería reconsiderar es la participación de los stakeholders. Si bien sería
conveniente que estuvieran los stakeholders, su ausencia podría suplirse si se les solicita que
completen una encuesta simple con su opinión del sistema desarrollado. Esta alternativa debería
incorporarse como una opción concreta dentro de la propuesta.
Para el 22% de los que completaron la encuesta (Figura 4.4.6), ésta fue la reunión más porque
consideraron que permitió comprender mejor lo que el cliente necesitaba, si se estaba entendiendo
y satisfaciendo realmente sus necesidades y obteniendo retroalimentación directa respecto del
rumbo del desarrollo para ir ajustándolo. También porque servía como puntapié inicial para relevar
nuevas inquietudes del cliente.
4.4.3.9 Herramientas
El 88.89 por ciento está de acuerdo en la importancia de compartir el lugar de trabajo, para trabajar
de manera más simple, con una sola KB y sobre todo para compartir dudas, ideas, cooperar.
Reconocen que hay cuestiones que solo se pueden resolver en persona. El 11.11 por ciento
restante no contestó la pregunta por SI o NO pero consideró que “se logra mayor comunicación y
entendimiento del proyecto, además de que los problemas se ponen en común y muchas veces se
solucionan más rápido”. Debido a esta justificación, podría considerarse que también es un SI, por
lo que se puede concluir que todos se dieron cuenta de la importancia de compartir el lugar de
trabajo.
El 100 por ciento también considera que es necesario compartir el horario de trabajo, casi por las
mismas razones por las que deben compartir el lugar de trabajo. El dialogo cara a cara es más
rápido y hay cosas que se resuelven personalmente, fueron las dos razones más nombradas.
También que ayuda a mejorar la organización del equipo, plantear ideas, evacuar dudas.
Pero, aún sin compartir completamente el horario de trabajo suplieron la comunicación directa por
medios alternativos. Aunque, en base a la experiencia, se vuelve más evidente la necesidad de
compartir el lugar de trabajo, de esta forma se puede beneficiar el equipo al tener radiadores de
información colgados en las paredes que mantengan a todos informados además de la pizarra
Kanban y tener acceso directo al Servidor general sin necesidad de conexiones de Internet.
Compartir horarios sería óptimo para que fluya la información directa entre todos, pero puede
bastar sin tantos beneficios compartir ciertos horarios para reuniones.
Todos trabajarían nuevamente con Genexus. Estos son los comentarios por los que lo utilizarían:
Se pueden nombrar seis que fueron comentarios repetitivos entre los alumnos.
Otros tres puntos fueron resaltados por uno sólo pero vale la pena nombrarlos:
En un proyecto real, trabajando con la versión oficial de Genexus muchas de estas dificultades
desaparecerían. También la falta de experiencia no estaría considerada como dificultad porque se
sobreentiende que ya los equipos que viene trabajando con DBC con Genexus manejan este
software y forma de desarrollo.
Por otro lado, el poder trabajar en un lugar común, como se mencionó anteriormente reduciría
muchas complicaciones a la hora de compartir la KB, aún sin utilizar GXServer. El coordinar
horarios comunes de trabajo es más probable cuando existe una relación laboral y no en una
experiencia universitaria, donde queda a responsabilidad de cada uno debe buscar cumplir con los
horarios que demanda el grupo.
Siempre existirá una presión para tratar de entregar lo máximo posible en la menor cantidad de
tiempo, independientemente del proyecto y metodología a utilizar. Esto es común en cualquier
proyecto de desarrollo de software, no solamente en esta experiencia. Pero, al poder ir entregando
El tiempo que debe tomarse el coordinador para registrar la información relacionada con el
proyecto, debe considerarse tiempo valioso que realmente aporta al grupo.
Y por último, en todo equipo siempre habrá personas más comprometidas que otras, pero a través
de las reuniones de seguimiento se puede persuadir a aumentar el compromiso. De esta manera
todos trabajarán dando lo mejor de cada uno. Por lo tanto si bien se planteó la dificultad de hacer
que todos los integrantes trabajen relativamente iguales puede aparecer en cualquier metodología,
brindando esta propuesta, basándose en prácticas ágiles, las herramientas para tratar de minimizar
la falta de compromiso.
Costó al principio hacer que los alumnos participen en las reuniones pero luego los resultados
fueron muy buenos en cada tipo de reunión diferente. Se pudo constatar que no es siempre posible
contar con los stakeholders en todas las reuniones, se debería proponer alternativas dentro de la
propuesta en estos casos. Se plantea entonces, utilizar encuestas para obtener cierta
retroalimentación o realizar visitas al lugar de trabajo.
La etapa de inicio ágil es completamente aplicable, haciendo la salvedad que tal vez no sea posible
que todos los stakeholders estén participando, pero las dos técnicas plateadas resultaron efectivas.
• La reunión de inicio ágil logró realmente introducir en el tema del nuevo proyecto a
todos los involucrados. De esta manera, es el equipo completo quien construye la visión y
ya no es el líder de proyecto quien transmite la visión al equipo. Se favorece trabajando de
este modo la comunicación directa entre todos, evitando malas interpretaciones. Es el
equipo completo que comienza a avanzar en el desarrollo de un nuevo proyecto de manera
conjunta.
• La reunión de planificación inicial cumplió con obtener un listado priorizado de las
historias de usuario
En la etapa de producción, se pueden nombrar varios puntos:
• Reuniones planteadas, se puede decir que todas y cada una de las reuniones de esta
etapa cumplieron con su objetivo para ambos grupos, logrando desarrollar el producto
requerido por el cliente, aceptando los cambios que surgían y manteniendo una
comunicación fluida dentro del equipo de desarrollo y con el cliente. Tal vez, como al
cliente no le agradan demasiadas reuniones, frente a él no convenga hablar de dos tipos
de reuniones, como son las de ajuste y de evaluación externa. Pero se debe brindar
oportunidad cuando el cliente desee de realizar ajustes a los requerimientos y no solo
cuando evalúa el producto que se le ha entregado hasta cierto momento
• La programación con dummies, técnica sugerida en la propuesta, ayudó a trabajar en
objetos relacionados al mismo tiempo.
• El trabajo de dos proyectos en paralelo es posible, siendo siempre mejor si se pudieran
trabajar independientemente.
• La pizarra Kanban permite tener la información visible de todo el proyecto, permitiendo
organizarse, realizar el seguimiento, trabajar con dos proyectos simultáneos, tener
definidos el DoD de cada etapa establecida en la pizarra.
Respecto al lugar de trabajo, es conveniente que se comparta, si bien los horarios pueden no ser
los mismos y de ser posible se debería buscar momentos en que los horarios del equipo se
solapen, para fomentar la comunicación directa. En base a la experiencia, se volvió más evidente
la necesidad de compartir el lugar de trabajo, de esta forma se puede beneficiar el equipo al tener
radiadores de información colgados en las paredes que mantengan a todos informados además de
la pizarra Kanban y tener acceso directo al Servidor general sin necesidad de conexiones de
Internet. Compartir horarios sería óptimo para que fluya la información directa entre todos, pero
puede bastar sin tantos beneficios compartir ciertos horarios para reuniones.
La experiencia realizada para aplicar la propuesta será realizada nuevamente el año próximo a los
alumnos que estén cursando la asignatura. Esto se debe a que, como resultado de la misma, los
alumnos no solo entendieron más sobre Desarrollo basado en conocimiento utilizando Genexus,
sino que ellos mismos reconocieron haber logrado percibir cómo es la filosofía detrás de las
metodologías ágiles. Algunos de los alumnos que participaron, consideraron que la experiencia
ameritaba ser una asignatura completa, para poder realizar una experiencia más profunda y debatir
más sobre los conceptos ágiles utilizados. El responsable de la materia también manifestó su
conformidad a los resultados, sobre todo por haber logrado un gran compromiso y participación por
parte de los alumnos. Los mismos alumnos comentaron a otros sobre la experiencia y hay muchas
expectativas para el próximo año entre ellos.
Hasta el momento respondió a la encuesta sólo uno de ellos y sus comentarios se describen a
continuación. Es de esperar que se reciban otras opiniones y puedan enriquecer con su aporte a la
propuesta más adelante, pero por limitaciones de plazos para realizar este informe solo se
mostrará los datos recibidos por esta única empresa. En Anexo 5, se encuentra dicha encuesta.
A continuación se reflejan los datos obtenidos para cada uno de los 15 puntos planteados en la
encuesta.
1. Consideró que podría aplicarse a su situación la forma de dividir el proyecto en Inicio Ágil,
Producción y Ritual De Finalización
4. Dentro de las reuniones propuestas en la etapa de Producción las reuniones que figuran
en la propuesta y que tiene semejanza a reuniones realizadas actualmente son:
SEGUIMIENTO se realizan diariamente, REFLEXION INTERNA aproximadamente cada
dos meses. REFLEXION EXTERNA, es una reunión similar, tiempo variable.
5. En la Etapa del Ritual de Finalización consideró algo probable realizar ambas reuniones
propuestas debido a la dificultad de contar con disponibilidad horaria del cliente y los
stakeholders, pero se reconoce los beneficios de estas reuniones. Proponer buscar
alternativas.
7. Se consideró algo probable utilizar la pizarra Kanban debido a que están trabajando
actualmente con una pizarra Scrum, si bien se consideró que sería factible su uso.
10. Se consideró poco probable incorporar los roles propuestos. Actualmente el cambio
llevaría a malos entendidos, y el proyecto en curso es muy grande y crítico para arriesgar.
Se debería realizar con mucha cautela, además todos están acostumbrados a rendir
cuentas al líder del proyecto. Implicaría un cambio cultural grande que no serpia
conveniente en estos momentos, tal vez a futuro.
12. Se consideró muy probable poder utilizar algún Framework para automatizar las pruebas,
ya que actualmente utilizan GxTest. Se informó además que tienen varias personas
avocadas a esa tarea exclusivamente de probar. Además se comentó que están
mejorando mucho en la producción, trabajando de esta manera
14. Se solicitó una opinión general sobre la propuesta, considera si ayuda en entornos de
desarrollo con desarrollo basado en conocimiento para acercarlo al desarrollo ágil. A lo que
se respondió que ayuda bastante. Su justificación fue la siguiente: “Nosotros venimos
realizando el cambio hacia ágiles, haber contado con estos lineamientos antes, nos habría
facilitado varias cuestiones al inicio porque nos costó encontrar la forma de iniciar el
cambio. Por ejemplo podría haber sido útil definir otros roles para separar la idea del líder,
podría haberse replanteado si hace falta iteraciones o no. El trabajar por flujo tal vez podría
volver más solidario a los miembros del equipo. Otras cuestiones como lugar de trabajo,
herramientas propuestas, reutilización, algunas reuniones de reflexión ya venimos
trabajando y nos damos cuenta de su necesidad”.
15. Aprovechando la posibilidad de realizar otros comentarios, aclararon que trabajan por
iteración, pero se podría trabajar también por flujo de trabajo como se plantea, definiendo
para cada historia de usuario la fecha probable de entrega. Pero por el momento la opción
es trabajar por sprint. Aclararon además que el sistema en desarrollo actual tiene alrededor
de cinco mil objetos, donde la reutilización es muy importante y el testeo siempre lo
realizan más de 2 personas. Se integra y se va realizando backup de versiones anteriores
y ante un error se vuelve inmediatamente a la versiona anterior.
Por todo esto podría decirse que esta propuesta podría aplicarse en la empresa relevada, con
algunas salvedades.
4.6 CONCLUSIÓN
Se considera que la propuesta, en términos generales, es aplicable para quienes utilizan el
desarrollo basado en conocimiento con Genexus y buscan acercarse a las metodologías ágiles. Es
un lineamiento a seguir que cada empresa o sector determinará como adaptarlo y posteriormente
mejorarlo con las reflexiones que realice el equipo.
Permite trabajar en más de un proyecto a la vez, siendo siempre más conveniente tener un equipo
avocado a un único proyecto.
Cada una de las etapas logró cumplir con su objetivo específico planteados en la propuesta: inició
ágil, producción y ritual de finalización.
Los roles planteados permiten ir eliminando la idea del líder tradicional del desarrollo de software,
favoreciendo que el grupo se auto organice y defina la forma de trabajo. Un detalle que se podría
modificar es el nombre del rol analista que al principio confundió en la experiencia a los
participantes debido a que dentro de las etapas propuestas dentro de la pizarra Kanban existe una
etapa análisis. Otra alternativa sería, modificar el nombre de la etapa dentro de la pizarra. De esta
manera se evitaría la asignación casi instintiva e intuitiva de asignar la tarea de este análisis al
analista.
Se debe tratar de maximizar la ventaja de generar código rápidamente que no se expresó con
profundidad en la propuesta. Se podría considerar prototipación en la mayor cantidad de reuniones
con el cliente, permitiendo rápido entendimiento.
Las herramientas a utilizar como en toda metodología ágil, ayudan a reducir tiempos de trabajo,
para agilizar entregas. Realmente utilizar un Framework de prueba es muy conveniente, porque
brinda confianza, y por otro lado tener una etapa dentro del proceso de producción de prueba
propiamente dicha ayuda a no menospreciarla y tener a través de su DoD a mano disponible todas
las tareas necesarias para completar las pruebas.
En cuanto al DoD, es muy importante que se encuentre en un lugar accesible a todos y describirlo
dentro de la pizarra Kanban se considera una muy buena alternativa. La pizarra Kanban es muy útil
para visualizar el estado del proyecto y es muy simple de adaptar a las necesidades del equipo.
La propuesta no plantea desarrollo con iteraciones pero puede utilizarse dentro de iteraciones de
tiempo determinadas sin problemas. Para ello, dentro de la iteración se trabajará con un subgrupo
de tareas a implementar en un período de tiempo acotado y no con toda la lista.
Las fichas de historias de usuario permiten especificar fecha probable de entrega que puede
ayudar a realizar planificaciones con sectores que necesitan proyecciones a largo plazo. Estas
fechas deben establecerse dentro de las reuniones de contextualización y ser establecidas por
todo el equipo, teniendo una idea de las fechas en las que el cliente ha manifestado su necesidad
de obtenerlas en la reunión de planificación inicial o reunión de ajuste.
Las reuniones planteadas en cada etapa del proyecto cumplen con su objetivo específico. Hay una
situación que no es menor y es la poca disponibilidad horaria del cliente y/o stakeholders para
asistir a las reuniones que la propuesta estipula que participen. La propuesta debe ampliarse
brindando alternativas en caso de no ser viable su participación, para cada situación. A
continuación se detallan alternativas que se incorporan a la misma:
• Permitir a los clientes informar cambios de manera no presencial, por algún medio:
correo, sistema de tickets reservando la presencia de los mismos para situaciones muy
complejas. Para evitar malos entendidos en estas situaciones, se podría buscar
generar un prototipo rápido que permita clarificar lo solicitado y llevarlo al lugar de
trabajo, o subirlo a algún servidor de prueba para recibir opinión al respecto.
• Visitar a los stakeholders en su ámbito laboral o bien solicitar a los stakeholders
completar una encuesta, reconociendo la perdida de cierta información que solo se
logra en la comunicación cara a cara, sobre todo al definir la visión del proyecto:
o que permita determinar la visión de cada stakeholder si es imposible que
asistan a la reunión inicial
o que permita determinar la opinión de cada stakeholder sobre el producto
desarrollado si no pueden asistir a la reunión de reflexión final.
Si bien sería conveniente que el equipo comparta el lugar de trabajo, por los beneficios de la
transmisión de información visual, mediante radiadores de información distribuidos en las paredes,
o el acceso directo al Servidor general sin necesidad de conexiones de Internet, no es una
condición indispensable para esta propuesta. Lo mismo sucede con los horarios de los
participantes en el proyecto, sería óptimo para que fluya la información directa entre todos, pero
puede bastar sin tantos beneficios compartir ciertos horarios para reuniones y fomentar, en ciertos
momentos, la comunicación directa.
5 CONCLUSIONES FINALES
Ágil toma un día para aprenderlo y una vida para perfeccionarlo [Epstein]
Como recalca Kindon, “La transformación ágil efectiva es frecuentemente un cambio cultural total.”
Las personas deben cambiar su forma de interactuar, pensar y trabajar. Es un cambio cultural que
involucra la comunicación abierta y la colaboración entre las personas ya sean parte del equipo de
desarrollo propiamente dicho o bien estén más relacionados con los stakeholders. Con una buena
comunicación se puede lograr confianza, confianza para exponer las dificultades, confianza para
proponer alternativas de mejora, confianza que cada uno realizará de la mejor manera posible su
tarea. Y no solo es comunicación y relación entre individuos, es tener un tiempo de reflexión para
poder adaptar el proceso de desarrollo al equipo y al proyecto. Todo esto brinda transparencia y
genera responsabilidad de cada uno de los involucrados.
Si bien las prácticas ágiles son importantes, los principios que las sustentan y que están
declarados en el manifiesto ágil son los que realmente modifican la manera de trabajar. Si el
equipo no tiene en claro los conceptos esenciales del manifiesto ágil, difícilmente entenderán las
razones por las que es aconsejable seguir alguna práctica, y a la larga pueden dejar de utilizarla o
utilizarla a medias. Si el equipo entiende los fundamentos básicos de estas metodologías ágiles, va
a ser mucho más fácil la adopción de nuevas propuestas de prácticas ágiles ya que entenderán las
razones por las que se deben seguir y perdurará su utilización en el tiempo.
Si no se entiende el valor, por ejemplo, las reuniones de retrospectiva, cuando el equipo esté con
poco tiempo puede no realizarlas. Pero la reflexión y adaptación son una piedra fundamental
dentro de las metodologías ágiles. A intervalos de tiempo el equipo debe reflexionar sobre la forma
de trabajo. La mejora continua solo puede alcanzarse cuando se hace una pausa para reflexionar
sobre lo que funciona bien y lo que no, y tomar una decisión consciente de ajustar las prácticas.
Pequeños ajustes pueden hacer la diferencia entre el éxito y el fracaso de un equipo.
En esta propuesta particular, se buscó poder ayudar a los líderes actuales de proyecto a brindarles
ciertas ideas de cómo encuadrar sus proyectos de desarrollo basado en conocimiento dentro de
las metodologías ágiles.
• Permitir a los clientes informar cambios de manera no presencial, por algún medio:
correo, sistema de tickets reservando la presencia de los mismos para situaciones muy
complejas. Para evitar malos entendidos en estas situaciones, se podría buscar
generar un prototipo rápido que permita clarificar lo solicitado y llevarlo al lugar de
trabajo, o subirlo a algún servidor de prueba para recibir opinión al respecto.
• Visitar a los stakeholders en su ámbito laboral o bien solicitar a los stakeholders
completar una encuesta, reconociendo la perdida de cierta información que solo se
logra en la comunicación cara a cara, sobre todo al definir la visión del proyecto:
o que permita determinar la visión de cada stakeholder si es imposible que
asistan a la reunión inicial
o que permita determinar la opinión de cada stakeholder sobre el producto
desarrollado si no pueden asistir a la reunión de reflexión final.
También se planteó la propuesta obtenida a algunos sectores de desarrollos relevados, que
manifestaron interés en los resultados que se pudieran arribar para analizarlos. Solo respondió uno
de ellos, quien consideró que sería viable su aplicación, pero también hizo notar la imposibilidad de
poder contar con la presencia de stakeholders o clientes en las reuniones.
Agile es más sobre personas, interacciones y cultura que sobre procesos, prácticas y
herramientas. Mientras las prácticas ágiles son importantes y proveen lineamientos
prácticos que ayuden a aumentar el éxito del proyecto, los principios son lo que hace a las
metodologías ágiles sustentables a largo plazo y maximiza los grandes beneficios que
tiene para ofrecer. [Kindon 2007]
6 BIBLIOGRAFÍA
[AgileData web] Agile Data. Sitio de Amber Scott. Sitio: http://www.agiledata.org/. Accedido:
10/02/2012.
[AgileJournal web] Revista electrónica sobre metodologías de desarrollo de software. Agile Journal,
nº1, Marzo 2006. Http:// www.agilejournal.com. Accedido 05/12/2011.
[Balduino 2007] Balduino Ricardo. Año 2007. Introduction to OpenUP (Open Unified Process).
Sitio:http://www.eclipse.org/epf/general/OpenUP.pdf Accedido: 08/02/2012.
[Beedle web] Beedle Mike. Sitio oficial de Mike Beedle. Sitio: http://www.Xbreed.org. Accedido:
12/09/2011
[Beck 2000] Beck Kent. Extreme Programming Explained: Embrace Change Boston Addison
Wesley. 2000.
[Bonilla 2010] Bonilla David. Historias de Usuario vs. Casos de Uso. Fecha: Febrero 2010. Sitio:
http://sixservix.com/blog/david/2010/02/08/historias de usuario casos de uso/. Accedido:
14/11/2011
[Bonilla 2010b] Bonilla David. Estructura de una Historia de Usuario. Fecha: Febrero 2010. Sitio:
http://sixservix.com/blog/david/2010/02/10/estructura historia usuario/. Accedido: 14/11/2011
[Burrows 2010] Burrows, M. Learning together: Kanban and the Twelve Principles of Agile
Software. Junio de 2010. Sitio: http://positiveincline.com/index.php/2010/06/learning together
Kanban and the twelve principles of agile software/. Accedido 11/06/2011.
[Caine 2012] Caine. Matthew DSDM Atern –The biggest Agile Secret? Bern – Swiss – ICS Scrum
breakfast, 25 de enero 2012. Sitio: http://www.mcpa.biz/2011/11/dsdm atern %E2%80%93 the
biggest agile secret %E2%80%93 bern swissict scrumbreakfast january 25th 2012/. Accedido
08/02/2012.
[Caine 2011] Mathew Caine.DSDM Atern. Sitio Web de M.C. Partners & Associates – Crafting
sustainable agility. Agosto/Octubre 2011. Sitio: http://www.mcpa.biz/2011/10/dsdm atern project
structure overview/; http://www.mcpa.biz/2011/10/dsdm atern principals overview/; http://www.
mcpa.biz/2011/10/dsdm atern roles and responsibilities an overview/; http://www.mcpa.biz/2011/
10/dsdm atern products overview/; http://www.mcpa.biz/2011/10/an overview of dsdm atern/;
http://www.mcpa.biz/2011/08/what is dsdm atern/; http://www.mcpa.biz/2011/09/agile project
management/. Accedido: 20/02/2012.
[Canós 2003] Canós José H., Letelier Patricio y Penadés Mª Carmen. Metodologías Ágiles en el
desarrollo de software. Universidad Politécnica de Valencia. Sitio: http://www.willydev.net/
descargas/prev/TodoAgil.Pdf. 2003.
[CaraballoMaestre 2009] Caraballo Maestre, Alejandro. Scrum para Dummies. Desarrollo Software.
Sitio: http://caraballomaestre.blogspot.com/2009/05/scrum para dummies.html. Accedido:
05/05/2011
[Carvajal 2008] Carvajal Riola, José Carlos. Metodologías ágiles: herramientas y modelo de
desarrollo para aplicaciones java ee como metodología empresarial. Tesis Final de Máster.
Septiembre 2008 Sitio: http://upcommons.upc.edu/pfc/bitstream/2099.1/5608/1/50015.pdf
[CnetNews] Barnes Cecily More programmers going "Extreme”. CNet News. Abril 2001. Sitio:
http://news.cnet.com/2100 1040 255167.html. Accedido: 02/01/2012.
[Cockburn 2002] Cockburn, Alistair Agile Software Development. Editorial: Pearson Edication Inc.
Stoughton, MA. Estados Unidos. Año 2002 .ISBN:0 201 69969 9
[Cockburn 2004] Cockburn, Alistair. Crystal Clear A HumanTPowered Methodology for Small
Teams. Editorial: Addison Wesley Professional. Estados Unidos. Año 2004. ISBN: 0 201 69947 8
[Cockburn 2007] Cockburn, A. Agile Software Development The cooperative Game. Second
Edition. Alistair Cockburn. Addison Wesley. ISBN:0 321 48275 1 Año 2007 Boston. USA. (Fourth
printing, Agust 2009)
[Cunningham 1986] Cunningham, W. and Beck, K.: A Diagram for ObjectTOriented Programs in
Proceedings of OOPSLA 86. Octubre 1986.
[Deemer 2010] Deemer Peter, Benefield Gabrielle, Larman Craig, Vodde Bas. Scrum Primer.
Versión 1.2. Año 2010. Sitio: http://www.goodagile.com/scrumprimer/scrumprimer.pdf. Accedido:
10/11/2011
[Deemer 2009] Deemer Peter, Benefield Gabrielle, Larman Craig, Vodde Bas. Traducción al
castellano de Leo Antoli. Básica de Scrum (Scrum Primer). Scrum Training Institute. Versión 1.1.
Año 2009. Sitio: www.scrumalliance.org/resource_download/2481. Acceso: 10/11/2011
[DeSeta web] De Seta, L. Los 7 principios del desarrollo Lean. Sitio Web Dos Ideas. Sitio:
http://www.dosideas.com/metodologias/410 los 7 principios deldesarrollo lean.html. Accedido:
10/09/2011.
[DSDM web] DSDM Consortium. Sitio oficial. Sitio: http://www.dsdm.org/. Accedido: 08/02/2012
[DSDM Ebook] DSDM Atern Enables More Than Just Agility Infonic AG, Zurich, Switzerland
M.C. Partners and Associates, Zurich, Switzerland Abril 2011. Sitio http://www.dsdm.org/wp
content/uploads/2011/12/DSDM Enables More Than Just Agility.pdf. Accedido: 08/02/2012.
[Eclipse web] Dynamic Systems Development Method (DSDM) plugin for OpenUP. DSDM
Consortium. Año 2006. Sitio: http://www.eclipse.org/epf/downloads/configurations/
pubconfig_downloads.php. Accedido: 10/02/2012.
[Ferrer 2003] Ferrer Jorge. Metodologías Ágiles. Publicado en diciembre de 2003. Sitio
http://libresoft.dat.escet.urjc.es/html/downloads/ferrer 20030312. Accedido: 02/06/2011.
[Fowler 2003a] Fowler, M. The new methodology. Trabajo. © Copyright Martin Fowler.
Actualización Año 2003. Sitio: http://martinfowler.com/articles/newMethodology.html. Actualización
Año 2003. Accedido 02/10/2011
[Fowler 2003b] Fowler, M. La nueva metodología. Trabajo. © Copyright Martin Fowler. Traducción
Alejandro Sierra. Sitio: http://www.programacionextrema.org/articulos/newMethodology.es.html.
Actualización 2003. Accedido 10/10/2011
[Fowler 2005] Fowler, M. Ponga su proceso a dieta. Trabajo. 2005. ThougthWorks, Inc. Sitio:
http://www.thoughtworks.com/
[Fowler 2006a] Fowler, M. Sitio personal de Martin Fowler. Artículo: Is Design Dead? Sitio:
www.martinfowler.com/ Accedido 10/10/2011
[Fowler 2006b] Fowler, M., Foemmel M. Sitio personal de Martin Fowler. Artículo: Continuous
Integration. Sitio:www.martinfowler.com/ Accedido 10/10/2011
[Fowler 2006c] Martin Fowler, Sitio personal de Martin Fowler. Artículo: Continous Integration.
Mayo 2006. Sitio: http://martinfowler.com/articles/continuousIntegration.html. Accedido: 10/02/2012
[Fowler 2006d] Martin Fowler. Sitio personal de Martin Fowler. Artículo: TestTDriven Development.
Mayo 2006. Sitio: http://martinfowler.com/bliki/TestDrivenDevelopment.html. Accedido: 10/02/2012
[Frankel 2004] Frankel David. Abril 2004. sitio: http://www.lcc.uma.es/~av/MDD
MDA/publicaciones/p_2704 04%20COL%20MDSD%20Frankel%20 %20Bettin%20 %20Cook.pdf.
Accedido: 08/02/2012.
[Giro 2002] Giro Rodolfo, Leiva Fernando, Mesa Oscar y Pinciroli Fernando. Consideraciones
acerca de XP. UNLP. Año 2002
[Gurley 2008] Gurley Greg y Oster Nate de ATSC. Applying Agile OpenUp in a New Team: A Case
Study. Trabajo presentado en junio de 2008 en Rational Software Conference Presentations. Sitio:
http://www.atsc.com/documents/briefings/20080605 atsc agileopenup presentation.pdf. Accedido:
08/02/2012.
[Hartmann 2008] Interview with Hakan Erdogmus by Deborah Hartmann. Hakan Erdogmus on TDD
Misunderstandings and Adoption Issues. Julio 2008. http://www.infoq.com/interviews/TDD Hakan
Erdogmus. Accedido: 12/12/2012.
[Higsmith 2002] Highsmith Jim. Agile Software Development Ecosystems. AddisonWesley. 2002
[Jeffries 2007] Jeffries Ron , Melkin Grigori TDD: The Art of Fearless Programming. Mayo/Junio
2007 (Vol. 24, No. 3) pp. 24 30 © 2007 IEEE. Published by the IEEE Computer Society. Sitio:
http://www.computer.org/csdl/mags/so/2007/03/s3024.html Accedido: 10/02/2012.
[Kniberg 2010] Kniberg, H., & Skarin, M. Kanban vs Scrum: obteniendo lo mejor de ambos. 2010.
Madrid, España: Proyectalis.
[Letelier 2003] Leteiler Patricio et. al., An Experiment Working with RUP and XP, Extreme
Programming and Agile Processes in Software Engineering, 4th International Conference, 2003.
[Letelier 2006] Letelier Patricio, Penadés Mª Carmen Métodologías ágiles para el desarrollo de
software: eXtreme Programming (XP). Depto. de Sist. Informáticos y Computación.Universidad
Politécnica de Valencia. 2006. Sitio: http://www.willydev.net/descargas/masyxp.pdf o bien Sitio:
http://www.cyta.com.ar/ta0502/v5n2a1.htm Accedido: 13/10/2011
[LimitedWipSociete web] Limited WIP Society. The Home of Kanban Systems for Software
Engineering. Sitio: http://www.limitedwipsociety.org/ Accedido: 03/01/2012.
[Linden 2011] Linden Reed Janice. Quotable Kanban. Sabiduría recolectada de los participantes
de Kanban Leadership Retreat. Reykjavik, Iceland, 2011. Sitio:
http://agilemanagement.net/index.php/site/quotable/. Accedido: 11/12/2011.
[Lizeth 2008] Lizeth Torres Flores, Carmina & Harvey Alférez Salinas, Germán Establecimiento de
una Metodología de Desarrollo de Software para la Universidad de Navojoa Usando OpenUP
Departamento de Sistemas, Universidad de Navojoa, A.C.& Facultad de Ingeniería y Tecnologia,
Universidad de Montemorelos. Reporte Técnico año 2008
[ManifiestoAgil web] Beck, K., et.al, Manifesto for Agile Software Development,
Sitio:http://agilemanifesto.org/.
[MendesCalo 2008] Mendes Calo, K., Estevez, E. Fillottrani, P., Un Framework para Evaluación de
Metodologías Ágiles CACIC 2008 Sitio:http://www.egov.iist.unu.edu/cegov/content/download/
/1878/47500/version/8/file/Un+Framework+para+Evaluacion+de+Metodologias+Agiles.pdf.
[MendesCalo 2010] Mendes Calo, K., Estevez, E. Fillottrani, P., Evaluación de Metodologías Ágiles
para Desarrollo de Software, WICC 2010 XII Workshop de Investigadores en Ciencias de la
Computación
[Middleton 2012] Peter Middleton David Joyce. Lean Software Management BBC Worldwide T Case
Study. IEEE Transactions on Engineering Management. Febrero 2012. Sitio:
http://leanandKanban.wordpress.com/. Accedido: 03/02/2012.
[Modezki 2011] Modezki, M. Kanban para Gestión de Proyectos y otras Aplicaciones. 30 de Marzo
de 2011. Sitio: http://www.cafeproyectos.com/gestion de proyectos/Kanban para gestion de
proyectos y otras aplicaciones/. Accedido 01/06/2011.
[Parasuraman 2011] Parasuraman Narayan Understanding and Managing Agile Transitions. Julio
2011. Sitio: http://www.modernanalyst.com/Resources/Articles/tabid/115/articleType/ArticleView/
articleId/ 1926/Understanding and Managing Agile Transitions.aspx. Accedido: 15/12/2011.
[Poole 2009b] Damon B. Poole, Do It Yourself Agile T Agile Development Material for the DIY'er
Sitio:http://damonpoole.blogspot.com/. Accedido: 08/08/2011
[Programación extrema] sitio web miembro de la Agile Aliance. Programación extrema. Sitio: Http://
www.programacionextrema.org. Accedido 05/12/2011.
[Rassmunsson 2009] Rasmusson, J., The Agile Samurai: How Agile Masters Deliver Great
Software. PragmaticBookshelf. Año 2009
[Rubio 2009] Rubio Jimenez, M.A. Kanban: el método Toyota aplicado al software. Junio 2009.
Sitio: http://bosqueviejo.net/2009/06/22/Kanban el metodo toyota aplicadoal software/. Accedido:
10/09/2011.
[ScrumAlliance web] Sitio oficial del Grupo de profesionales para compartir trabajo con Scrum.
Sitio: www.Scrumalliance.org. Accedido: 10/09/2011. Directores: Chairman Mike Cohn, Steve
Fram, Treasurer Dan Hintz, Michele Sliger, Harvey Wheaton, Scott Duncan, and Mitch Lacey.
[Schmidkonz 2007] Schmidkonz Christian, CSM & Jürgen Staader, SAP AG, Germany. Noviebre
2007. "Piloting of TestTdriven Development in Combination with Scrum"
http://www.scrumalliance.org/resources/267. Accedido: 10/12/2012.
[Stapleton 1997] Stapleton, Jennifer. DSDM Dynamic Systems Development Method – The method
in practice. DSDM Consortium. Edison Wesley Professional. 1997
[Sutherland 2011] Sutherland Jeff & Schwaber Ken. The Scrum Papers: Nut, Bolts and Origins of
an Agile Framework. Enero 2011. París.
[ThoughtWorks web] Barnes, Cecily More Programmers Going “Extreme” CNET News. 3 abril
2001. Sitio:http://news.cnet.com/2100 1040 255167.html. Accedido: 09/10/ 2011.
[Turley 2010] Turley Frank. El Modelo de Procesos PRINCE2®. Una magnífica introducción a
PRINCE2. Traducido por José Luis Fernández Ramírez. Año 2010.
[Vega 2010] Vega Frank X. SCRUM, XP, and beyond: One Development Team’s Experience
Adding Kanban to the Mix. Proceedings of lean software & systems conference. Atlanta. EEUU.
2010. Descargado del Sitio http://agilemanagement.net. Accedido: 12/12/2011.
[XP 2011] Agile Processes in Software Engineering and Extreme Programming. 12th International
Conference, XP 2011 Madrid, Spain, Mayo de 2011. Proceedings. ISBN 978 3 642 20676 4.
[XP web] Sitio Extreme Programming. http://www.extremeprogramming.org/ Accedido: 08/07/2011.
[Ambler web] Ambler, Scott W.. When Is a Model Agile?. Fecha: sin especificar. Sitio:
http://www.agilemodeling.com/essays/whenIsAModelAgile.htm
[Astels 2003] David Astels. TestTDriven Development. A practical guide. Prentice Hall PTR 2003.
[Beck 1995] K. Beck, Request for SCRUM Information" J. Sutherland, Ed. Boston: Compuserve,
1995.
[Beck 1999] K. Beck, Extreme Programming Explained: Embrace Change. Boston: Addison
Wesley, 1999.
[Beck 2003] K. Beck, Test Driven Development: By Example. Año 2002. Addison-Wesley
Professional. ISBN 10: 0321146530 | ISBN 13: 978 0321146533
[Bohem 1976] Boehm, B. Software Engineering. IEEE Transactions on Computers, 1226 1241,
1976.
[Bohem 2002] Boehm, B. (2002) Get ready for the agile Methods, with Care. Computer 35(1):64 69
[Ehn 1990] Ehn P. WorkTOriented Design of Software Artifacts – Editorial L. Erlbaum Associates
Inc. Hillsdale, NJ, USA 1990 Año 1990. ISBN:0805807810
[Fowler 2005] Fowler, M., Beck, K., Brant, J. Refactoring: Improving the Design of Existing Code.
Addison Wesley. 1999
[eWorkshop 2002] eWorkshop. Resumen del segundo workshop en metodologías ágiles. Sitio:
http://fc md.umd.edu/projects/agile/secondeWorkshop/summary2ndeworksh.htm. Año 2002.
[Glass 2000] Glass, R.L. (2001) Agile Versus traditional: Make Love, not War! Cutter IT Journal
14(12):12 18
[Glass 2002] Glass, R. L., Facts and Fallacies of Software Engineering. 2002.
[Hawrysh 2002] Hawrush, S. & Ruprecht, J. (2000). Light Methodologies: It’s like Déjà Vu All over
again. Cutter IT Journal. 13:4 12.
[Highsmith 2001] Highsmith, J & Cockburn A. (2001). Agile Software Development: The Business of
Innovation. Computer 34(5):120 122.
[Jeffires 2001] Jeffries, R., Anderson, A., Hendrickson, C. Extreme Programming Installed. Addison
Wesley. 2001
[Kroll 2003] Kroll, P. and Kruchten, P. The Rational Unified Process Made Easy. Addison Wesley,
2003.
[Kroll 2006] Per Kroll, Bruce Macisaac. Agility and Discipline Made Easy: Practices from OpenUP
and RUP. 2006. Addison Wesley.
[Larman 2004] Craig Larman. Applying UML and Patterns: An Introduction to ObjectTOriented
Analysis and Design and Iterative Development. Tercera Edición. 2004. Prentice Hall.
[Martin 2003] Martin, Robert C. Agile Software Development, Principles, Patterns, and Practices,
Año 2002. Prentice Hall., ISBN 10: 0135974445. ISBN 13: 978 0135974445.
[McConnell 2003] Mc Connell, S., Professional Software Development: Shorter Schedules, Higher
Quality Products, More Successful Projects, Enhanced Careers. Addison Wesley, 2003.
[McCourley 2001] McCourley, R. (2001) Agile Development Methods Poised to Upset Status Quo.
SIGCSE Bulletin 33(4):14 15
[Miller 2001] Miller, D & Lee, J. (2001) The people make the process: commitment to employees,
decision making, and performance. Journal of Managment 27:163 189
[Pfeffer 1998] Pfeffer, J. (1988) The human equation: building profits by putting people first. Boston.
MA. Harvard bussiness School Press.
[Ohno 1988]. Ohno T.: JustTInTTime for Today and Tomorrow. Productivity Press (1988)
[Poppendieck 2003]. Poppendieck, M., Poppendieck, T.: Lean software development: An agile
toolkit. Addison Wesley, Boston (2003)
[Ridderstrale 2000] Ridderstrale, J., et al, Business:Talent Makes Capital Dance. Prentice Hall,
EEUU, 2000.
[Schwaber 1997] K. Schwaber, Scrum Development Process in OOPSLA Business Object Design
and Implementation Workshop, J. Sutherland, et al., Eds., London: Springer, 1997.
[Schwaber 2001] Schwaber K., Beedle M., Martin R.C. Agile Software Development with SCRUM.
Prentice Hall. 2001.
[Sutherland 2004] J. Sutherland. Agile Development: Lessons Learned from the First Scrum. Cutter
Agile Project Management Advisory Service: Executive Update, vol. 5, pp. 1 4, 2004.
[Thomas 2005] Thomas, Dave y Heinemeier Hansson, David. 2005. Agile Web Development with
Rails (2nd edition). s.l. : The Pragmatic Programmers , 2005.
[Womack 1991] Womack, J.P., Jones, D.T., Roos, D. The Machine That Changed the World: The
Story of Lean Production. Harper Business, New York (1991)
[Alonso 2004] Alonso Betanzos Amparo. Ingeniería del conocimiento: Aspectos metodológicos,
Pearson Education. ISBN: 9788420541921 Año 2004.
[Alvarado 2010] Artículo Gobierno garantizó la migración de las bases de datos del Estado.
Hormiga analítica – Marcaibo Venzuela –Julio 2010 Año 2 Nro 56 Editor Heberto Alvarado Vallejo
CNP 12270
[ANSI SPARC] ANSI SPARC: Final report of the ANSI/X3/SPARC DBS SG relational database
task group (portal ACM, citation id=984555.1108830)
[Artech 2008] Visión General de Genexus. Artech Consultores S.R.L. . Uruguay. Octubre 2008.
Sitio:http://www.genexus.es/wp content/uploads/2010/06/vision_general_gx_esp2009.pdf.
Accedido:05/08/2013.
[Balrer 1983] R Balrer, et all. Software Technology in the 1990’s using a New Paradigm” Computer,
Noviembre 1983, pp 19 45
[Bracci 2008] Bracci Luigino. YVKE mundial radio. Gobierno Bolivariano de Venezuela / Ministerio
de Poder Popular para la comunicación y la información Últimas Noticias (Heberto Alvarado), YVKE
Mundial. Publicado 24/02/2008. Sitio: http://www.radiomundial.com.ve/yvke/noticia.php?3323.
Accedido: 05/08/2013.
[Giro 2002] Giro Rodolfo, Leiva Fernando, Mesa Oscar y Pinciroli Fernando. Consideraciones
acerca de XP. Administración de Proyectos. UNLP. 2002
[Gonda 1995] Gonda B.,Jodal N. Proyecto GeneXus. Academia Nacional de Ingeniería, Uruguay,
1995 Sitio:http://www.aiu.org.uy/gxpsites/agxppdwn?2,1,4,O,S,0,79%3BS%3B1%3B21. Accedido:
16/09/2011.
[Gonda 2003] Gonda Breogán. ¿Desarrollo orientado a procesos u orientado a datos? Algunas
reflexiones en el 40° aniversario de los Sistemas de Gerencia de Bases de Datos. Artech. 2003
[Gonda 2007] Gonda Breogán y Jodal Nicolás. Desarrollo Basado En Conocimiento T Filosofía Y
Fundamentos Teóricos De Genexus. Artech. Mayo de 2007. Sitio:http://www.genexus.es/wp
content/uploads/2010/06/desarrollo_basado_en_el_conocimiento.pdf. Accedido: 16/09/2011.
[IEEE web] Andrew J. Symonds, IBM Data System Division. Creating a Software Engineering
Knowledge Base. IEEExplore. Digital Library. Año 1988. Sitio:http://ieeexplore.ieee.org/
stamp/stamp.jsp?tp=&arnumber=2011. Accedido: 16/09/2011.
[Latorres 2003] Latorres E.,Salvetto P., Larre Borges U., Nogueira, J. Una herramienta de apoyo a
la gestión del proceso de desarrollo de software. IX Congreso Argentino de Ciencias de la
Computación (CACIC 2003). La Plata, Argentina.
[MárquezLisboa 2007] Márquez Lisboa Daniel, Fernández Cecilia. Genexus Rocha – Episodio Uno.
Editorial Grupo Magro. Montevideo, Uruguay. 2007
[Salvetto 2006] Salvetto P. Modelos Automatizables de Estimación muy Temprana del Tiempo y
Esfuerzo de Desarrollo de Sistemas de Información. Tesis de Doctorado. Univ. Politécnica de
Madrid. Doctorado conjunto en ingeniería informática UPM ORT. Año: 2006. Sitio:
http://oa.upm.es/367/01/PEDRO_SALVETTO_LEON.pdf. Accedido: 16/09/2011.
[Almeida 2004] Almeida E. Software Testing: Tres enfoques para un mismo problema. Encuentro
Internacional de Usuarios GeneXus del año 2004.
[Almeida 2006a] Almeida E.,Araújo A.,Larre Borges U. Proyecto colaborativo GxUnit. Año: 2006.
Sitio: http://www.gxopen.com/commwiki/servlet/hwiki?GxUnit,
[Almeida 2006b] Almeida E. ,Araújo A.,Larre Borges U. Collaborative Projects. Año: 2006
http://www.concepto.com.uy/archivosvinculados/EncuentroGX2006CollaborativeProjects.ppt
[Cunningham 1986] Cunningham W. Framework for Integrated Tests. Año: 2007. Sitio:
http://fit.c2.com/
[GxUnit web] Proyecto de Ingeniería de Software 2007. GxUnit. Año 2007. Docente: Triñanes J.
Facultad de Ingeniería, Universidad de la República, Uruguay.
[Mugridge 2005], Mugridge R., Cunningham W. Fit for Developing Software: Framework for
Integrated Tests. Año: 2005. ISBN 0 321 26934 9. Prentice Hall PTR.
[WikiGenexus web] GeneXus Community Wiki, GeneXus Rocha/GXextensions. Año: 2007. Sitio:
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?category%3AGeneXus+Extensions
DATOS GENERALES
16. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas. mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
17. Especifique herramientas utilizadas para el seguimiento del proyecto:
18. Utiliza un diagrama Burn Down para seguimiento del proyecto. SI – NO.
19. Se desarrolla con reutilización. SI – NO. Especifique el porcentaje de reutilización de
proyectos anteriores. ¿Cómo se seleccionan los artefactos a reutilizar?
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
20. Especifique el porcentaje de proyectos donde se cumplieron con los objetivos pactados
con el cliente. mmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
21. Cuando surgen dificultades, y no se logran los objetivos de la iteración pactados,
SE TRABAJAN HORAS EXTRAS –
FINALIZA IGUALMENE LA ITERACION EN FECHA PACTADA
SE EXTIENDEN LA ITERACION
OTRAS ACCIONES (especificar)TTTTTTTTTTTTTTTT..
22. Especifique el nivel de satisfacción del cliente frente al producto desarrollado.
COMPLETAMENTE SATISFECHO
MUY SATISFECHO,
CONFORME,
CON LEVES DISCONFORMIDADES,
TOTALMENTE DISCONFORME
23. Identifique las situaciones de riesgo más comunes detectadas en los proyectos.
Numerarlas según su importancia, siendo 1 el riesgo más importante:
• Imprecisiones del cliente
• Variaciones de los requerimientos del cliente
• Poca participación del cliente
• Equipo de desarrollo desmotivado
• Equipo de desarrollo involucrado en varios proyectos
• Otras (especificar)mmmmmmmmmmmmm..
7.2.1 Encuesta 1
Fecha de realización de la encuesta: Marzo 2014
DATOS GENERALES
7.2.2 Encuesta 2
Fecha de realización de la encuesta: Abril 2014
DATOS GENERALES
1. Tipo de empresa: Privada
2. Tiempo en el mercado: 7 años
3. Tiempo de uso de Genexus: 7 años
4. Cantidad de proyectos desarrollados con Genexus: 10 grandes “algunas replicas”
5. Proporción de Proyectos para terceros: (100 – 0) 99% (1 interno de calidad de gestión)
6. Cantidad de personas involucradas: el núcleo son 4. Hoy hay 9, otras veces de 15 hasta
25. Mucha rotación del personal. Hay 80% Personal part H time
7. La empresa cuenta con más de un equipo de desarrollo: SI. Cantidad de personas de cada
equipo: 3. Dividen equipos por tareas (UNO: análisis, especificación, diseño, pruebas
– OTRO: documentación – OTRO: desarrollo y testing). Hay personas en varios
equipos a la vez
8. La empresa trabaja en más de un proyecto a la vez: SI
9. Los equipos trabajan en más de un proyecto a la vez: SI
15. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas: ninguna
16. Especifique herramientas utilizadas para el seguimiento del proyecto: dot project,
sistema de tickets
17. Utiliza un diagrama Burn Down para seguimiento del proyecto. NO. Planean usar a futuro
18. Se desarrolla con reutilización. SI. Especifique el porcentaje de reutilización de proyectos
anteriores. ¿Cómo se seleccionan los artefactos a reutilizar? 80%. El líder o el dueño de
7.2.3 Encuesta 3
Fecha de realización de la encuesta: 20 de agosto 2014
DATOS GENERALES
• Si es un sistema muy grande se divide en fases y se profundiza solo una de ellas (la
que se entregará primero) y se presenta un presupuesto y plazo de entrega para esa
fase. Dejando el resto pendiente y estimado a grandes rasgos por comparación con
esa primera fase.
• El líder (que además cumple rol de analista diseñador) identifica dentro de las
librerías –a través de menú de módulos – aquellos módulos u objetos que pueden
reutilizarse en el proyecto (por ejemplo seguridad, permisos, grupos, facturador,
etc). Como todo se realiza con nomenclatura compatible, no se repiten los nombres
y así se evitan conflictos. Por ejemplo, en un sistema se elige llamar
usuarioDeSistema a los usuarios y dejar el nombre usuario para el usuario de
tarjetas. Lo mismo sucede con los documentos, documentoDeVentas,
documentoDeCompras,etc
• El líder diseñador entonces después de elegir de lo desarrollado por procedimientos
(funcionalidades) no por objetos,
o Define las pantallas –interfaces
o Define los datos deducidos
o Define de manera completa y muy detallada del Diccionario de Datos (DD). A tal
punto de especificar como aparece cada dato en informes, en forms, etc
• El líder presenta el proyecto al equipo en una reunión, donde explica los objetivos y
las funcionalidades a implementar. Se genera muy poca documentación que sea
práctica y que eventualmente pueda crecer pero que no permanezca
desactualizadas. Se especifican las reglas de negocio mediante fichas asociadas a
cada objeto. Esto es útil a la hora de reutilizar, para no ver todo el código genexus y
comprender con estoa información la funcionalidad que cumple el objeto. Son los
lideres los intermediarios con los clientes (similar a un PO)
• El líder diseñador asigna tickets a cada uno de los programadores según sus
capacidades y gustos. Se utilizan especialistas para tares específicas como
conexiones a BD y creación de todos los store procedures o especialistas para
realizar la conexión con dispositivos (como una cortadoras de vidrio). Generalmente
los tickets no tienen un timpo asignado, salvo aquellos que tengan dependencia
entre sí (estos tiempos se pactan charlando con los programadores dejando una
pequeña holgura). Os tickets no duran mas de 2 semanas y se subdividen en tickets
con pasos internos para lograrlo (implementar, prueba,etc)
• Cada programador realiza los forms y webforms necesarios – realiza la
implementación generando los prototipos. A veces el programador detecta datos no
considerados previamente y se itera de manera cíclica con el líder diseñador). A
veces hay req adicionales que solicita el programador a cliente, como webservices,
de manera directa sin intermediación del líder diseñador.
• Cada programador debe ir informando a través del sistema de tickets el % que
trabajo que queda pendiente para terminar la tarea, así el líder puede hacer un
seguimiento de la evolución del proyecto
• Cada cierta cantidad de tickets se realiza una exposición de los programadores,
donde cada uno expone al grupo (lo que hizo, los problemas que tuvo y como los
solucionó). También sirve para que el líder detecte si semanalmente el programador
entendió la funcionalidad a implementar.
• Se realizan pruebas cruzadas, intercambian los módulos. En las fichas de
documentación el líder tiene definido también casos de prueba y aceptación con los
que se realizan las pruebas manuales. Se usó GXTest en un momento, pero el precio
de la licencia se elevó y además al trabajar con sistemas que interactúan con otros
sistemas, no sirve este CASE para ese tipo de pruebas. Además GXTest requiere
mucha programación adicional a la hora de ir definiendo los objetos
• Para segurar la calidad, el líder diseñador hace pruebas por muestreo del cgo escrito
por los programadores, para ver si respeta las pautas preestablecidas, sobre todo
con la nomenclatura ya que estos criterios son claves a la hora de hacer reusables
los objetos de Base del Conocimiento de Genexus.
7.2.4 Encuesta 4
DATOS GENERALES
•
15. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas. No se utilizan aún herramientas específicas.
16. Especifique herramientas utilizadas para el seguimiento del proyecto:
No se utilizan aún herramientas específicas.
17. Utiliza un diagrama Burn Down para seguimiento del proyecto. NO.
18. Se desarrolla con reutilización. SI Especifique el porcentaje de reutilización de proyectos
anteriores. 20% ¿Cómo se seleccionan los artefactos a reutilizar?
19. Especifique el porcentaje de proyectos donde se cumplieron con los objetivos pactados
con el cliente. 75%
20. Cuando surgen dificultades, y no se logran los objetivos de la iteración pactados, SE
EXTIENDE LA ITERACION
21. Especifique el nivel de satisfacción del cliente frente al producto desarrollado. MUY
SATISFECHO,
22. Identifique las situaciones de riesgo más comunes detectadas en los proyectos.
Numerarlas según su importancia, siendo 1 el riesgo más importante:
1. Variaciones de los requerimientos del cliente
2. Poca participación del cliente
3. Imprecisiones del cliente
4. Equipo de desarrollo involucrado en varios proyectos
5. Equipo de desarrollo desmotivado
23. ¿Por qué trabaja con Genexus? Nuestro organismo realizó la compra de licencia de
Genexus. Además es una herramienta muy potente para el desarrollo de
aplicaciones que permite realizar las iteraciones con el cliente con mayor frecuencia.
24. Indique si Utiliza o piensa utilizar a futuro
• GXServer: Pienso utilizar
• GXFlow: Pienso utilizar
• GXQuery: No Utilizo
7.2.5 Encuesta 5
Fecha de realización de la encuesta: julio 2014
DATOS GENERALES
1. Tipo de empresa: Privada
2. Tiempo en el mercado: 7 años
3. Tiempo de uso de Genexus: 6 años
4. Cantidad de proyectos desarrollados con Genexus: 2
5. Proporción de Proyectos para terceros: (100 – 0) 70%
23. ¿Por qué trabaja con Genexus? Buenos resultados rápidos y generación de código.
Además es bueno para trabajar en proyectos grandes
24. Indique si Utiliza o piensa utilizar a futuro
• GXServer: No Utilizo
• GXFlow: No Utilizo
• GXQuery: No Utilizo
25. Otros comentarios:
7.2.6 Encuesta 6
Fecha de realización de la encuesta: Agosto 2014
DATOS GENERALES
7.2.7 Encuesta 7
Fecha de realización de la encuesta: Marzo 2013
DATOS GENERALES
7.2.8 Encuesta 8
Fecha de realización de la encuesta: Agosto 2014
DATOS GENERALES
1. Tiene un procedimiento fijo a seguir para cada desarrollo SI. Si es afirmativo, puede
describirlo.
• Relevamiento
• Especificación Funcional, confirmación usuario
• Desarrollo y/o configuración
• Pruebas Unitarias
• Pruebas Integrales con funcionales
• Capacitación, si requiere
• Puesta a Punto
• Salida en Vivo
• Soporte
2. Cada equipo puede adaptar el procedimiento según el proyecto Si, DEPENDE del alcance
del proyecto, agregando o quitando más pasos de acuerdo al procedimiento anterior,
se puede ciclar entre esos pasos, generando miniHproyectos hasta conseguir la
solución final
3. El procedimiento a seguir en cada proyecto de desarrollo es definido por el líder de
proyecto
4. El cliente está involucrado: durante todo el proceso. Especifique. Como es interno y
los proyectos siempre se tiene un líder funcional, además del referente de TI. Él es el
encargado de comunicar y revisar las especificaciones y validar la solucionar. Se
trabaja en conjunto con el área funcional
5. Se realizan entregas frecuentes (a lo sumo cada 2 meses) de producto desarrollado al
cliente. SI. Son periódicos depende la magnitud de la solución, se presentan avances
a medida que se avanza y son más periódicos al llegar a la salida en productivo
6. Se tiene colaboración permanente con el cliente. SI. Explique como: Durante la definición
del alcance, relevamiento del proceso a automatizar, validación de la solución y
salida a productivo. Es importante contar con su apoyo para la implementación de
proyectos.
7. Los requerimientos se definen al inicio del proyecto: SI. Especifique COMO define los
requerimientos: Mediante relevamiento a través de entrevistas y/o encuestas a
usuarios claves, se deja especificado en un documento BluePrint BBP
7.2.9 Encuesta 9
Fecha de realización de la encuesta: agosto 2014
DATOS GENERALES
1. Tiene un procedimiento fijo a seguir para cada desarrollo SI. Si es afirmativo, puede
describirlo.
• Se realiza un relevamiento inicial, generalmente el líder de proyecto. Realiza el
modelado del negocio y elabora las minutas de reunión
8.1.1 Contexto
En Salta hace unos pocos años se ha comenzado a hablar sobre metodologías ágiles y comienzan
a realizarse actividades al respecto. Recientemente, en el mes de junio de 2014 se realizó el
primer Salta Agile Open Space. Fue coordinado y difundido por Juan Gabardini, Juan Ladetto y la
autor a de este trabajo. Actualmente la Escuela de Administración de la Provincia (EAP) está
incluyendo, dentro de los cursos que conforman la capacitación para obtener el título de
Especialista en Software, tres cursos relacionados con metodologías ágiles, de los cuales solo dos
fueron dictados hasta el momento. Ciertos organismos provinciales están capacitando a su
personal y buscando certificarlos como Certified Scrum Developer y Certified Scrum Product
Owner. En la Universidad Nacional de Salta, se logró realizar un primer taller con Juan Gabardini
para poder certificar a los docentes interesados y alumnos y graduados avanzados como Certified
Scrum Developer. Existe en el ambiente universitario, una necesidad de talleres prácticos para
poder tener una experiencia más concreta y poder asimilar los conceptos teóricos que se brindan
desde algunas cátedras.
La primera actividad de la comunidad ágil de Salta puede decirse que fue el evento antes
mencionado del Salta Agile Open Space. Aprovechando la posibilidad de tener reunidas a
personas interesadas y con cierto conocimiento de Metodologías ágiles de la zona, se realizó una
encuesta a quienes actualmente están trabajando con estas metodologías. De los participantes
solo un 15% trabajaba efectivamente con metodologías ágiles. Fueron éstas personas las que
completaron la encuesta ya que podrían brindar información de la forma de trabajo real utilizando
las metodologías ágiles.
Se pretendió conocer principalmente cuáles son las metodologías y las técnicas ágiles más
utilizadas, como así también la conformación de los grupos de trabajo, y forma de trabajo en los
proyectos a los que se aplican. La sección finaliza con las conclusiones a las que se pudo arribar
sobre cada uno de los temas mencionados, luego de analizadas las respuestas obtenidas. La
encuesta puede consultarse dentro de este anexo en la siguiente sección.
Se consultó cuáles eran las metodologías utilizadas. La mayoría de los encuestados mencionó
Scrum, con un 87,50% como la metodología utilizada, siendo Kanban la siguiente en ranking de
uso. Luego, le sigue Scrumban, que es combinación de las dos metodologías anteriores. El 50%
trabaja exclusivamente con Scrum sin combinarla, es decir aplicándola de manera pura. Pero, otros
encuestados combinan las metodologías.
Un gráfico interesante es analizar cada una de las metodologías que surgieron en la encuesta y su
porcentaje de aplicación. Con esto, se puede observar que por lejos Scrum es la más utilizada,
luego muy por debajo con un 25% sigue Kanban. También, uno de los encuestados manifestó
estar analizando la posibilidad de incorporar a futuro TDD y BDD.
• Duración de la Iteración
Duración de la iteración
12,50%
37,50%
37,50%
12,50%
• Planificación de la iteración
En toda metodología ágil, es importante poder planificar el proyecto y poder modificarlo a medida
que se va avanzando. Para corroborar esto, se brindaron tres opciones: al inicio, al inicio
modificando en cada iteración, otra opción (especificar). Tal como se esperaba, el 100% contestó
que se planifica al inicio, modificando en cada iteración.
En toda metodología ágil, es importante poder tener al cliente involucrado a lo largo del proyecto.
Para corroborar esto, se brindaron tres opciones: al inicio, durante todo el proyecto, al final. Se
esperaba una respuesta similar a la anterior, pero se obtuvo una diferente. Si bien la amplia
mayoría (87.5%) contestó que el cliente está involucrado a lo largo del proyecto, uno (12.50%)
contestó que sólo al inicio y no estaría cumpliendo con el manifiesto ágil.
Cliente involucrado
0,00% 12,50%
87,50%
Al inicio Durante todo el proceso Al final
• Entregas Frecuentes
El primer principio del Manifiesto ágil define que la prioridad es satisfacer al cliente mediante
entregas de software tempranas y continuas; solo el 75% respondió afirmativamente respecto a las
entregas frecuentes. El resto no realiza estas entregas frecuentes.
Entregas frecuentes
12,50%
37,50%
25,00% 75,00%
25,00%
Entre aquellos que sí realizan entregas frecuentes, las entregas cada 2 semanas fueron los
períodos más utilizados, seguidos por aquellos que lo realizan cada 4 semanas y por último un
pequeño porcentaje que realiza entregas cada 2 días.
El manifiesto ágil menciona que la colaboración del cliente es muy importante y se valora más que
a una documentación exhaustiva. La intención con esta pregunta era sondear los diferentes
recursos para lograr esta comunicación. Uno de los encuestados no contestó este punto. Los
correos electrónicos, las reuniones semanales y las reuniones al final del sprint, fueron las más
mencionadas, con un porcentaje de 37.50% cada una. Las videoconferencias fueron una
alternativa con menor porcentaje, siendo las charlas y las especificaciones de requerimientos las
de menor porcentaje con un 12.50% cada una.
El diálogo directo cara a cara, sin intermediarios, se puede dar en una charla o a través de
reuniones pactadas. Si se analiza la proporción de encuestados que plantean alguna de estas
comunicaciones directas, solo se obtiene un 55.56%.
• Cambio de requerimientos
Considerar que existen cambios en los requerimientos es algo inherente a las metodologías ágiles.
En las encuestas se puede observar que todos consideran que existen cambios en los
requerimientos de los proyectos, solo que se encuentra dividido en dos grupos iguales, entre
quienes consideran que los requerimientos siempre cambian y quienes consideran que algunas
veces cambian.
• Alcances y costos
Cuándo se pactan los alcances del proyecto y los costos asociados es otro punto importante en un
desarrollo de software. Uno de los encuestados no completó este punto de la encuesta. El 50.00%
define alcances por iteración pero existe un 25.00% que lo realiza al inicio y un 12.50% que lo
realiza por función (Opción detallada por el encuestado). Aquellos que trabajan en organismos
públicos además aclararon que no se manejan costos, debido a que el personal cobra un sueldo.
La proporción de encuestados que definen los alcances y costos al inicio y no por iteración son un
poco más del doble de quienes solo tienen colaboración del cliente al inicio. Pero, la planificación
en las metodologías ágiles no se define al inicio del proyecto y permanece inalterable, existe en
varias metodologías la práctica del juego de la planificación para poder realizar lo que es prioritario
para el cliente y le aporta mayor valor a su negocio. El manifiesto ágil habla de valorar la respuesta
al cambio sobre un plan contractual.
12,50%
50,00%
Al inicio Para cada iteración Otra Opcion(por funcion) No contestó
En este punto se solicitó que indiquen si trabajaban con reutilización y en caso de contestar
afirmativamente, el porcentaje de reutilización respecto a proyectos anteriores. Además se
solicitaba que especifique la forma de lograrlo.
Uno de los encuestados, respondió que realiza reutilización, pero no especificó el porcentaje, esto
se refleja con un valor NN en el siguiente gráfico. A continuación se muestra en la gráfica los
porcentajes de los valores obtenidos.
Si bien ninguno de los encuestados realiza una reutilización de más del 75%, en una de las
encuestas se detalló que se podría considerar una reutilización del 75% dentro de sistemas que no
son nuevos, es decir reutilización dentro del mismo.
Tomando como base la encuesta de Version One sobre la aplicación de prácticas ágiles o
metodologías ágiles en empresas en el mundo, se elaboró un listado con 24 prácticas ágiles que
pueden utilizarse trabajando con metodologías ágiles. Se mantuvo el término utilizado por la
encuestadora, pero algunas de las opciones realmente son herramientas más que prácticas; por
ejemplo pizarra digital, burndown chart, etc. Se solicitó indicar cuales utilizan y el resultado puede
observarse claramente en la siguiente gráfica.
Las herramientas que no fueron mencionadas por ninguno de los relevados son:
• Cliente en el lugar
• Construcciones automatizadas
• TDD
• Juegos ágiles
• BDD
Por sobre todo, llama la atención que ninguno realice las prácticas de propiedad colectiva del
código, dado que en metodologías ágiles se trata de eliminar cuellos de botella. Y si no se
comparte el código, cada persona es responsable de cierta parte y solo esa persona puede
modificarla, restando agilidad al proceso de desarrollo. Debido a esto puede entenderse también el
bajo porcentaje de quienes realizan integración continua.
• Herramientas utilizadas
Las herramientas ayudan a poder realizar las prácticas ágiles. Esta pregunta buscaba relevar las
herramientas utilizadas. Pero, la mayoría no describió herramientas específicas y tres personas no
detallaron ninguna, esto es un 37.5%.
La más utilizadas es la pizarra con un 37.50%, seguida con en uso de post its notes y afiches. Si
bien se podría considerar que un afiche podría comportarse como una pizarra utilizando post its
notes, los que eligieron esta segunda alternativa también mencionaron las pizarras, como otra
herramienta diferente.
Todo proyecto tiene riesgos asociados y un proyecto ágil no está exento a ellos. Se proporcionó un
conjunto de 5 riesgos para que fueran priorizados según la importancia que ellos consideren. No
hubo una tendencia uniforme, como muestra Figura 8.1.13. Si se calcula el promedio de los valores
asignados a cada uno de ellos se obtiene el gráfico de Figura 8.1.14.
Figura 8.1.13: importancia de los riesgos al trabajar con MA – porcentajes asignados a cada nivel
de importancia
Figura 8.1.14: importancia de los riesgos al trabajar con MA – promedio de los puntajes obtenidos
por cada uno
En el gráfico se observa claramente que las imprecisiones del cliente, en promedio son los riesgos
más importantes. Superando levemente a la poca participación del cliente y un equipo de
Se brindó siete opciones para que los encuestados señalen aquellos que consideren importantes a
la hora de querer implementar una metodología ágil en una organización. En el gráfico siguiente se
puede ver que la más importante es tener o no la posibilidad de poder cambiar la cultura
organizacional seguida por el tiempo necesario para realizarla transición y la resistencia que pueda
haber al cambio. Las restricciones de presupuesto casi no fueron consideradas como barreras para
implementar una metodología ágil en la organización.
• Metodologías utilizadas
Scrum es utilizado en forma exclusiva por el 50% de los encuestados. Pero hay un grupo grande
que trabaja con Scrum y Kanban o Scrumban. Por lo tanto, entre estas tres metodologías se cubre
el 87,5%, quedando XP híbrido con el 12.5%. Esto corrobora la idea informal que se tenía de las
metodologías que se estaban utilizando en Salta, teniendo una amplia aceptación SCRUM.
• Duración de la Iteración
• Planificación de la iteración
La amplia mayoría involucra al cliente durante todo el proyecto, pero llama la atención la respuesta
de un 12.50% donde el cliente solo participa al inicio y ni siquiera menciona su participación al final
del proyecto tampoco. Que exista esta situación, hace pensar que tal vez no se está aplicando una
metodología ágil sino que va camino a ello implementando ciertas prácticas. Esto es porque el
manifiesto ágil considera importante la participación y colaboración del cliente en todo el desarrollo
del proyecto. O bien no tiene en claro la importancia y necesidad de tener al cliente interactuando y
participando con el resto del equipo cuando se trabaja con metodologías ágiles.
• Entregas Frecuentes
Solo el 75% respondió afirmativamente respecto a las entregas frecuentes, el 25% restante no
realiza estas entregas frecuentes y no cumplen de esta forma el primer principio del Manifiesto ágil
donde se define que la prioridad es satisfacer al cliente mediante entregas de software tempranas
y continuas.
Dentro de los períodos para realizar las entregas frecuentes, el 50% toma el valor estándar de 2
semanas, habiendo otras respuestas de 4 semanas. Pero nuevamente llama la atención que para
un pequeño porcentaje, el período de entregas frecuentes es de 2 días. Nuevamente aparece un
período de tiempo demasiado pequeño, inclusive menor que el de la iteración que era de 3 días.
Entregar software al cliente funcionando lleva tiempo y realizarlo cada dos días se demoraría
demasiado en reuniones y demostraciones.
Los correos electrónicos, las reuniones semanales y las reuniones al final del sprint, fueron las más
mencionadas, con un porcentaje de 37.50% cada una. Las charlas o diálogo cara a cara, fueron
una de las dos obtuvieron el menor porcentaje. En base a esto, se puede deducir que el diálogo
cara a cara no es la forma más común de obtener la colaboración del cliente y por eso se buscan
otros medios alternativos, para acercar al cliente con el equipo de desarrollo. Algo que es
fundamental al trabajar con metodologías ágiles
• Cambio de requerimientos
Todos consideran que existen cambios en los proyectos, la mitad considera que los requerimientos
siempre cambian y la otra mitad considera que algunas veces cambian. Esta diferencia no tiene
mayores explicaciones que la experiencia que cada uno de los encuestados haya tenido, dado que
los proyectos son diferentes, los clientes son diferentes y los contextos son diferentes. Lo
importante, nuevamente es que existen cambios en los requerimientos.
• Alcances y costos
La mitad define alcances por iteración. Un pequeño porcentaje, lo realiza por función, pero existe
un 25% que lo realiza al inicio. Todos los que trabajan en organismos públicos además aclararon
que no se manejan costos, debido a que el personal cobra un sueldo.
Merece la pena analizar dos datos particulares: el 25% que contestó que realiza al inicio la
definición de alcances y costos, y el no considerar costos dentro de organismos públicos.
El primer punto se refiere a definir lo que se quiere realizar y fijar un costo al inicio. Esto no es lo
mismo que realizar la planificación, dado que ya se analizó que ésta se realiza en todos los casos
al inicio y se va modificando en cada iteración. Si bien no es lo mismo, están relacionados. Se
planifica en base a lo que se desea alcanzar. Cuando se ajusta la planificación para cada iteración
se debería poder ajustar también el alcance, para darle cierta libertad al cliente. Si se hubiera
mantenido el porcentaje del 12.50% para esta opción, tal como estaba en quienes solo tienen la
colaboración del cliente al inicio del proyecto sería hasta cierto punto entendible, pero es el doble.
El segundo punto, no considerar costos dentro de organismos públicos, es algo que hace
reflexionar. Todo desarrollo debería tener un cierto análisis de costo – beneficio. No se debería
emprender un desarrollo sin saber cuánto recurso consume dentro del organismo, aunque sean
sueldo fijo de personal estable. El desarrollo de un sistema podría hacer dedicar más tiempo del
personal al nuevo proyecto y luego tener que contratar a otros para realizar otras tareas que se
deberían seguir realizando independientemente del proyecto. Podría no calcular directamente
costos pero si esfuerzo, que fácilmente se traduce a costos, según los salarios que se perciben en
el sector
Las prácticas que mencionaron más del 50% fueron: las reuniones diarias, las iteraciones cortas, la
planificación de la iteración, los planes de entrega, los estándares de codificación. Justo con el
50% se encuentra la reunión de retrospectiva.
• Herramientas utilizadas
Hay muy poco uso de herramientas para poder realizar prácticas ágiles. La mayoría no describió
herramientas específicas y tres personas no detallaron ninguna. Las pizarras por lejos fueron las
más mencionadas, pero no con un alto porcentaje, un 37.50% y le siguen los afiches y post its.
Después no hay coincidencia entre las herramientas utilizadas. Solo uno hizo mención a un
entorno de pruebas de software. Otros mencionaron herramientas de diseño más que las que eran
requeridas.
En cierta medida, no haber obtenido gran variedad de herramientas para facilitar las prácticas
ágiles, se debió a que no se realizan demasiadas prácticas ágiles y muchas de ellas consisten en
reuniones donde una pizarra puede colaborar como radiador de información.
Las imprecisiones del cliente, en promedio son los riesgos más importantes en un desarrollo
siguiendo una metodología ágil. Superando levemente a la poca participación del cliente y un
equipo de desarrollo desmotivado. Mientras que, las variaciones de requerimientos por parte del
cliente tienen casi la mitad de importancia que tener un cliente impreciso.
Las siguientes barreras fueron el tiempo necesario para realizarla transición, la resistencia que
pueda haber al cambio y la complejidad del proyecto. Todo cambio requiere un tiempo de
aprendizaje, adaptación y entrenamiento y debe poder asignarse ese tiempo. En todo equipo hay
personas más resistente al cambio, cuando la gente no está dispuesta a cambiar en su forma de
trabajar se está ante otra barrera. Para comenzar a implementar una metodología ágil, se debe
tener un proyecto que no sea demasiado complejo, y que permita aprender sobre la marcha.
8.1.5 Reflexión
Si bien la muestra para realizar esta encuesta no es representativa, permite vislumbrar algunos
datos de la forma de trabajar con metodologías ágiles. Se pudo ver una tendencia al uso de Scrum,
muy amplio donde todos trabajan con iteraciones fijas y ajustan la planificación en cada iteración.
La mayoría plantea varios medios para reemplazar el diálogo cara a cara con el cliente.
Si bien todos dicen trabajar con metodologías ágiles, por algunas respuestas detalladas
anteriormente algunos de los encuestados no estarían cumpliendo con el manifiesto ágil. Tal vez
en estos casos, se está en una etapa inicial de implementación de metodologías ágiles, en un
período de aprendizaje.
Las prácticas más utilizadas se relacionan más con la coordinación y gestión del proyecto
(reuniones diarias, reuniones de retrospectiva, planificación de la iteración, planes de entregas),
aunque, también, más de la mitad define estándares de codificación. Debido a que éstas son las
prácticas más utilizadas, no hay un gran uso de herramientas para prácticas ágiles.
Los riesgos considerados más importantes están relacionados con el cliente, sus imprecisiones y
su poca participación. También se reconoce la poca motivación del equipo de desarrollo. Y a la
hora de implementar una metodología ágil la barrera más importante es tener o no tener la
posibilidad de poder cambiar la cultura organizacional donde se quiere implementar.
• Se consideran importante las alternativas utilizadas para suplir la falta de un diálogo cara a
cara frecuente. En los sectores que trabajan con desarrollo basado en conocimiento, no
todos comparten horario de trabajo, ni tienen entrevistas frecuentes con el cliente, por eso
las alternativas aquí descriptas son útiles
DATOS GENERALES
1. Se sigue una metodología ágil: SI – NO. En caso afirmativo, especifique cuáles utiliza:
mmmmmmmmmmmm.mmmmmmmmmmmEspecifique cuáles incorporaría:
mmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmm
2. Se realiza un desarrollo iterativo. SI – NO. Caso afirmativo, indique duración: mmmmm
3. La planificación del desarrollo se realiza:
AL INICIO
AL FINAL
ALGUNAS VECES
NO CAMBIAN.
11. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadasmmmmmmmmmmmmmmmmmmm..mmmmmmmmmmmmmmmm
mmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmm
12. Identifique las situaciones de riesgo más comunes detectadas en los proyectos.
Numerarlas según su importancia, siendo 1 el riesgo más importante:
• Imprecisiones del cliente
• Variaciones de los requerimientos del cliente
• Poca participación del cliente
• Equipo de desarrollo desmotivado
• Equipo de desarrollo involucrado en varios proyectos
• Otras (especificar) mmmmmmmmmmmm
13. Barreras que usted considera impiden adoptar una metodología ágil:
• Posibilidad de cambiar la cultura organizacional
• Disponibilidad de personal con las habilidades correctas
• Resistencia general al cambio
• Complejidad del proyecto
• Restricciones de presupuesto
• Confianza en la posibilidad de escalar
• Tiempo de transición
• Ninguna
8.3.1 Encuesta 1
Fecha de realización de la encuesta: 31/05/2014
DATOS GENERALES
1. Se sigue una metodología ágil: SI. En caso afirmativo, especifique cuáles utiliza: XP –
Híbrido, Cear Start.
2. Se realiza un desarrollo iterativo. SI. Caso afirmativo, indique duración: 3 días
3. La planificación del desarrollo se realiza: AL INICIO, MODIFICANDO EN CADA
ITERACION
4. El cliente está involucrado: DURANTE TODO EL PROCESO
5. Se realizan entregas frecuentes (a lo sumo cada 2 meses) del producto desarrollado al
cliente: SI. Caso afirmativo, indique el tiempo: 2 días.
6. Se tiene colaboración permanente con el cliente: SI.
7. Los requerimientos cambian a lo largo del proyecto. SIEMPRE
8. Los alcances y costos se pactan con el cliente: OTRA OPCION: POR FUNCION
9. Se desarrolla con reutilización. SI. En caso afirmativo, especifique el porcentaje de
reutilización de proyectos anteriores y cómo se seleccionan los artefactos a reutilizar. 75%
si es similar sino 10% si el producto es nuevo
10. Especifique cuáles de las siguientes prácticas y herramientas ágiles se siguen en sus
proyectos:
• Programación de a pares • Iteraciones cortas
• Diseño simple
11. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas: wireframe, strock, play stone.
12. Identifique las situaciones de riesgo más comunes detectadas en los proyectos.
Numerarlas según su importancia, siendo 1 el riesgo más importante:
• Equipo de desarrollo desmotivado (1)
• Equipo de desarrollo involucrado (1)
13. Barreras que usted considera impiden adoptar una metodología ágil:
• Resistencia general al cambio
• Confianza en la posibilidad de escalar
• Tiempo de transición
8.3.2 Encuesta 2
Fecha de realización de la encuesta: 31/05/2014
DATOS GENERALES
1. Se sigue una metodología ágil: SI. En caso afirmativo, especifique cuáles utiliza: SCRUM,
KANBAN. Especifique cuáles incorporaría: TDD, BDD.
2. Se realiza un desarrollo iterativo. SI. Caso afirmativo, indique duración: 15 días
3. La planificación del desarrollo se realiza: AL INICIO, MODIFICANDO EN CADA
ITERACION
4. El cliente está involucrado: DURANTE TODO EL PROCESO
5. Se realizan entregas frecuentes (a lo sumo cada 2 meses) del producto desarrollado al
cliente: SI. Caso afirmativo, indique el tiempo: 15 días.
6. Se tiene colaboración permanente con el cliente: SI. Explique cómo: Meeting de
presentación al finalizar el sprint.
7. Los requerimientos cambian a lo largo del proyecto. SIEMPRE
8. Los alcances y costos se pactan con el cliente: AL INICIO
9. Se desarrolla con reutilización. SI. En caso afirmativo, especifique el porcentaje de
reutilización de proyectos anteriores y cómo se seleccionan los artefactos a reutilizar. 50%.
Armado de biblioteca de artefactos. Los desarrollos y variables tienen que ser
genéricos.
10. Especifique cuáles de las siguientes prácticas y herramientas ágiles se siguen en sus
proyectos
• Reuniones diarias • Pruebas de aceptación
• Planificación de la iteración automatizadas
• Plan de entregas • Mapeo de Historias
• Burndown chart • Refactorización
• Retrospectiva • Pizarra digital
• Integración continua • Kanban
• Estándares de codificación • Iteraciones cortas
• TDD H Test Driven Development
• Pruebas de unidad
11. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas. Sin especificar
12. Identifique las situaciones de riesgo más comunes detectadas en los proyectos.
Numerarlas según su importancia, siendo 1 el riesgo más importante:
• Imprecisiones del cliente (2)
• Variaciones de los requerimientos del cliente (5)
• Poca participación del cliente (1)
• Equipo de desarrollo desmotivado (3)
13. Barreras que usted considera impiden adoptar una metodología ágil:
• Posibilidad de cambiar la cultura organizacional
• Disponibilidad de personal con las habilidades correctas
• Resistencia general al cambio
• Complejidad del proyecto
• Restricciones de presupuesto
• Confianza en la posibilidad de escalar
• Tiempo de transición
8.3.3 Encuesta 3
Fecha de realización de la encuesta: 31/05/2014
DATOS GENERALES
1. Se sigue una metodología ágil: SI. En caso afirmativo, especifique cuáles utiliza: SCRUM /
KANBAN
2. Se realiza un desarrollo iterativo. SI. Caso afirmativo, indique duración: 3 SEMANAS
3. La planificación del desarrollo se realiza: AL INICIO, MODIFICANDO EN CADA
ITERACION
4. El cliente está involucrado: AL INICIO
5. Se realizan entregas frecuentes (a lo sumo cada 2 meses) del producto desarrollado al
cliente: NO.
6. Se tiene colaboración permanente con el cliente: SI. Explique cómo: ESPECIFICACION
DE REQUERIMIENTOS
7. Los requerimientos cambian a lo largo del proyecto: SIEMPRE.
8. Los alcances y costos se pactan con el cliente: PARA CADA ITERACION
9. Se desarrolla con reutilización. NO.
10. Especifique cuáles de las siguientes prácticas y herramientas ágiles se siguen en sus
proyectos
• Reuniones diarias • Estándares de codificación
• Planificación de la iteración • Kanban
• Retrospectiva • Iteraciones cortas
11. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas: PIZARRAS
13. Barreras que usted considera impiden adoptar una metodología ágil:
• Posibilidad de cambiar la cultura organizacional
• Disponibilidad de personal con las habilidades correctas
• Resistencia general al cambio
8.3.4 Encuesta 4
Fecha de realización de la encuesta: 31/05/2014
DATOS GENERALES
1. Se sigue una metodología ágil: SI. En caso afirmativo, especifique cuáles utiliza: SCRUM
2. Se realiza un desarrollo iterativo. SI. Caso afirmativo, indique duración: 2 SEMANAS
3. La planificación del desarrollo se realiza: AL INICIO, MODIFICANDO EN CADA
ITERACION
4. El cliente está involucrado: DURANTE TODO EL PROCESO
5. Se realizan entregas frecuentes (a lo sumo cada 2 meses) del producto desarrollado al
cliente: SI. Caso afirmativo, indique el tiempo: CADA 2 SEMANAS, AVANCES DEL
PRODUCTO
6. Se tiene colaboración permanente con el cliente: SI. Explique cómo: REUNIONES,
VALIDACIONES DE LOS AVANCES
7. Los requerimientos cambian a lo largo del proyecto. SIEMPRE H ALGUNAS VECES
8. Los alcances y costos se pactan con el cliente: (ALCANCES) PARA CADA ITERACION –
(COSTOS) OTRA OPCION sueldos.
11. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas: AFICHES, PIZARRAS, PST ITS PARA PLANIFICACIONES,
DOCUMENTACIÓN EN PLANILLAS DE PROCESOS, CONCEPTOS, MAPAS
CONCEPTUALES, DIAGRAMAS
12. Identifique las situaciones de riesgo más comunes detectadas en los proyectos.
Numerarlas según su importancia, siendo 1 el riesgo más importante:
• Imprecisiones del cliente (1)
• Variaciones de los requerimientos del cliente(4)
• Poca participación del cliente(3)
• Equipo de desarrollo desmotivado(5)
• Equipo de desarrollo involucrado en varios proyectos(5)
13. Barreras que usted considera impiden adoptar una metodología ágil:
• Posibilidad de cambiar la cultura organizacional
• Complejidad del proyecto
8.3.5 Encuesta 5
Fecha de realización de la encuesta: 31/05/2014
DATOS GENERALES
1. Se sigue una metodología ágil: SI. En caso afirmativo, especifique cuáles utiliza: SCRUM
2. Se realiza un desarrollo iterativo. SI. Caso afirmativo, indique duración: 2 SEMANAS
3. La planificación del desarrollo se realiza: AL INICIO, MODIFICANDO EN CADA
ITERACION
4. El cliente está involucrado: DURANTE TODO EL PROCESO
5. Se realizan entregas frecuentes (a lo sumo cada 2 meses) del producto desarrollado al
cliente: SI. Caso afirmativo, indique el tiempo: CADA 2 SEMANAS ENTREGAS DE
AVANCES DEL SISTEMA.
6. Se tiene colaboración permanente con el cliente: SI. Explique cómo: REUNIONES,
VALIDACIONES
7. Los requerimientos cambian a lo largo del proyecto. SIEMPRE H ALGUNAS VECES
8. Los alcances y costos se pactan con el cliente: PARA CADA ITERACION (ALCANCES) H
OTRA OPCION (COSTOS): SUELDOS
9. Se desarrolla con reutilización. SI. En caso afirmativo, especifique el porcentaje de
reutilización de proyectos anteriores y cómo se seleccionan los artefactos a reutilizar.
APROXIMADAMENTE 60%. SE SELECCIOAN POR FUNCIONALIDAD
11. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas: AFICHES, PIZARRAS, POST ITS NOTES.
12. Identifique las situaciones de riesgo más comunes detectadas en los proyectos.
Numerarlas según su importancia, siendo 1 el riesgo más importante:
• Imprecisiones del cliente (1)
• Variaciones de los requerimientos del cliente (4)
• Poca participación del cliente (3)
• Equipo de desarrollo desmotivado (2)
• Equipo de desarrollo involucrado en varios proyectos (1)
13. Barreras que usted considera impiden adoptar una metodología ágil:
• Posibilidad de cambiar la cultura organizacional
• Complejidad del proyecto
8.3.6 Encuesta 6
Fecha de realización de la encuesta: 31/05/2014
DATOS GENERALES
1. Se sigue una metodología ágil: SI. En caso afirmativo, especifique cuáles utiliza: SCRUM
2. Se realiza un desarrollo iterativo. SI. Caso afirmativo, indique duración: 4 SEMANAS
3. La planificación del desarrollo se realiza: AL INICIO, MODIFICANDO EN CADA
ITERACION
4. El cliente está involucrado: DURANTE TODO EL PROCESO
5. Se realizan entregas frecuentes (a lo sumo cada 2 meses) del producto desarrollado al
cliente: SI. Caso afirmativo, indique el tiempo: 1 MES.
6. Se tiene colaboración permanente con el cliente: SI. Explique cómo: SKYPE / EHMAILS.
7. Los requerimientos cambian a lo largo del proyecto. ALGUNAS VECES
8. Los alcances y costos se pactan con el cliente: PARA CADA ITERACION
11. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas: MEETINGS, DOCUMENTACION DE ESTÁNDARES A CUMPLIR,
SELENIUM, GESTOR DE PROYECTOS
12. Identifique las situaciones de riesgo más comunes detectadas en los proyectos.
Numerarlas según su importancia, siendo 1 el riesgo más importante:
• Imprecisiones del cliente (2)
• Variaciones de los requerimientos del cliente (3)
• Poca participación del cliente (1)
• Equipo de desarrollo desmotivado (4)
• Equipo de desarrollo involucrado en varios proyectos (5)
13. Barreras que usted considera impiden adoptar una metodología ágil:
• Posibilidad de cambiar la cultura organizacional
• Resistencia general al cambio
8.3.7 Encuesta 7
Fecha de realización de la encuesta: 31/05/2014
DATOS GENERALES
1. Se sigue una metodología ágil: SI. En caso afirmativo, especifique cuáles utiliza: SCRUM H
SCRUMBAN
2. Se realiza un desarrollo iterativo. SI. Caso afirmativo, indique duración: 4 SEMANAS
3. La planificación del desarrollo se realiza: AL INICIO, MODIFICANDO EN CADA
ITERACION
4. El cliente está involucrado: DURANTE TODO EL PROCESO
11. Especifique herramientas utilizadas para realizar algunas de las prácticas ágiles
seleccionadas. SIN ESPECIFICAR
12. Identifique las situaciones de riesgo más comunes detectadas en los proyectos.
Numerarlas según su importancia, siendo 1 el riesgo más importante:
• Imprecisiones del cliente (1)
• Variaciones de los requerimientos del cliente (3)
• Poca participación del cliente (2)
• Equipo de desarrollo desmotivado (4)
• Equipo de desarrollo involucrado en varios proyectos (5)
13. Barreras que usted considera impiden adoptar una metodología ágil:
• Disponibilidad de personal con las habilidades correctas
• Complejidad del proyecto
• Tiempo de transición
8.3.8 Encuesta 8
Fecha de realización de la encuesta: 31/05/2014
DATOS GENERALES
1. Se sigue una metodología ágil: SI. En caso afirmativo, especifique cuáles utiliza: SCRUM
13. Barreras que usted considera impiden adoptar una metodología ágil:
• Confianza en la posibilidad de escalar
• Restricciones de presupuesto
• Tiempo de transición
DATOS LABORALES
9.2.1 Encuesta 1
Fecha de realización de la encuesta: Junio 2015
DATOS LABORALES
9.2.2 Encuesta 2
Fecha de realización de la encuesta: Junio 2015
DATOS LABORALES
9.2.3 Encuesta 3
Fecha de realización de la encuesta: Junio 2015
DATOS LABORALES
9.2.4 Encuesta 4
Fecha de realización de la encuesta: Junio 2015
DATOS LABORALES
9.2.5 Encuesta 5
Fecha de realización de la encuesta: Junio 2015
DATOS LABORALES
9.2.6 Encuesta 6
Fecha de realización de la encuesta: Junio 2015
DATOS LABORALES
9.2.7 Encuesta 7
Fecha de realización de la encuesta: Junio 2015
DATOS LABORALES
9.2.8 Encuesta 8
Fecha de realización de la encuesta: Junio 2015
DATOS LABORALES
9.2.9 Encuesta 9
Fecha de realización de la encuesta: Junio 2015
DATOS LABORALES
10.1 DESCRIPCIÓN
En esta sección se presentan algunas capturas de pantallas de los sistemas desarrollados por
ambos grupos en la experiencia de aplicación práctica de la propuesta de este trabajo. Se
presentará primeramente pantallas del sistema de la librería y luego del sistema del gimnasio
para ambos grupos.
10.2.1 Grupo 1
10.2.2 Grupo2
10.3.1 Grupo 1
Figura 10.3.6: Opciones para socios del sitio del gimnasio – Grupo 1
Figura 10.3.8: Datos de alumnos por clase del sitio del gimnasio – Grupo 1
Figura 10.3.13: Administración de Datos de un profesor del sitio del gimnasio – Grupo 1
10.3.2 Grupo2
Figura 10.3.17: Login – password olvidada del sitio del gimnasio – Grupo 2
1. ETAPAS DEL PROYECTO. La propuesta plantea tres etapas: Inicio Ágil, Producción y
Ritual De Finalización. Considera que son aplicables a su situación. INADECUADAS –
POCO ADECUADAS – ALGO ACEPTABLES H ADECUADAS H MUY ADECUADAS.
2. INICIO AGIL. Considera que proveería algún aporte esta etapa. NO – POCO ALGO –
ALGO – APORTE CONSIDERABLE H GRAN APORTE. Justifiquemmmmmmmm.
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
7. PIZARRA KANBAN: considera probable utilizar este tipo de pizarra. MUY PROBABLE
H PROBABLE – ALGO PROBABLE – POCO PROBABLE – IMPROBABLE.
10. PRUEBA. Considera probable poder utilizar algún Framework para automatizar las
pruebas. MUY PROBABLE H PROBABLE – ALGO PROBABLE – POCO PROBABLE
– IMPROBABLE. Justifique. mmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
12. ROLES PLANTEADOS. Considera probable incorporar los roles propuestos. MUY
PROBABLE H PROBABLE – ALGO PROBABLE – POCO PROBABLE –
IMPROBABLE. Justifique. mmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
14. OPINION GENERAL DE LA PROPUESTA. Considera que es una propuesta que ayuda
en estos entornos de desarrollo con desarrollo basado en conocimiento para acercarlo
al desarrollo ágil. NADA – MUY POCO – ALGO – BASTANTE – MUCHISIMO.
Justifique: mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm...
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
11.1.2 Encuesta1
Fecha de realización: Junio de 2015
1. ETAPAS DEL PROYECTO. La propuesta plantea tres etapas: Inicio Ágil, Producción y
Ritual De Finalización. Considera que son aplicables a su situación. ADECUADAS.
2. INICIO AGIL. Considera que proveería algún aporte esta etapa. APORTE
CONSIDERABLE. Justifique. Tener una idea común de todo el equipo es valioso,
la propuesta propone algo simple. Se puede llegar a considerar incorporar en la
empresa el inicio ágil, por las ventajas enunciadas en la propuesta y por no
consumir demasiado tiempo.
12. ROLES PLANTEADOS. Considera probable incorporar los roles propuestos. POCO
PROBABLE. Justifique. Actualmente el cambio llevaría a malos entendidos, y el
proyecto en curso es muy grande y crítico para arriesgar. Se debería realizar con
mucha cautela, además todos están acostumbrados a rendir cuentas al líder del
proyecto. Implicaría un cambio cultural grande que no serpia conveniente en
estos momentos, tal vez a futuro
14. OPINION GENERAL DE LA PROPUESTA. Considera que es una propuesta que ayuda
en estos entornos de desarrollo con desarrollo basado en conocimiento para acercarlo
al desarrollo ágil. BASTANTE. Justifique: Nosotros venimos realizando el cambio
hacia ágiles, haber contado con estos lineamientos antes, nos habría facilitado
varias cuestiones al inicio porque nos costó encontrar la forma de iniciar el
cambio. Por ejemplo podría haber sido útil definir otros roles para separar la idea
del líder, podría haberse replanteado si hace falta iteraciones o no. El trabajar por
flujo tal vez podría volver más solidario a los miembros del equipo. Otras
cuestiones como lugar de trabajo, herramientas propuestas, reutilización,
algunas reuniones de reflexión ya venimos trabajando y nos damos cuenta de su
necesidad.