SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
Análisis de la implementación de prácticas ágiles en
                          Argentina

              M. Alvarez, F. Escobar, A. Nardin, E. Ricci Aparicio, G. Bioul

                  Universidad CAECE, Sede Mar del Plata, Olavarría. 2464,
                                  Mar del Plata, Argentina
           { malvarez, fescobar, anardin, ericciaparicio, gbioul }@ucaecemdp.edu.ar


       Resumen. Este trabajo analiza el grado de implementación de las metodologías
       modernas de ingeniería de software en el ámbito profesional y educativo
       Argentino. A través de consultas, encuestas y en base a la experiencia de los
       autores, se acertaron conclusiones alentadoras acerca de la adopción de
       prácticas ágiles, que en muchos casos integran los nuevos conceptos en forma
       parcial o híbrida. Las Metodologías Ágiles son uno de los más populares
       enfoques para el desarrollo de software en estos días. Parte del reto de aplicar
       nuevas metodologías está basado en la educación. En el presente trabajo se
       exponen los resultados de consultas en empresas nacionales argentinas y
       multinacionales para identificar problemas y proponer soluciones. También se
       comenta una experiencia realizada en el ámbito universitario que pretende
       definir un método para la enseñanza de la “agilidad”.


       Keywords: Metodologías Ágiles, Ingeniería de Software, Scrum, Sprint.


1 Introducción
Las Metodologías Ágiles emergen como una alternativa a las metodologías
tradicionales de desarrollo de software. Se aplican en muchos de los proyectos en
donde el entorno del sistema es muy cambiante, y con necesidades de reducir
drásticamente los tiempos de desarrollo aun manteniendo una alta calidad en el
producto.
   Por eso, estas metodologías se han ido difundiendo en el mercado y están siendo
adoptadas por variadas organizaciones de desarrollo de software. ¿Cuál es el grado de
implementación de las metodologías ágiles en Argentina? ¿Cuáles de todas ellas son
las más utilizadas? ¿Se pueden adoptar en forma integral, es decir con todas las
prácticas propuestas? ¿Se pueden certificar normas o modelos de calidad siendo
„ágil‟? ¿Cuál es el futuro de estas metodologías? Son estas algunas de las preguntas
que se tratan de contestar en este trabajo.
   Se expone en primer lugar un estudio sobre el estado del arte en el uso de
metodologías ágiles, a través de consultas realizadas en empresas, argentinas e
internacionales, con diferentes características y tamaños. El objetivo de este estudio es
indagar a través de consultas, acerca de los principales problemas de adaptación que
las empresas encuentran al implementar total o parcialmente estas metodologías. A
partir de los resultados del mismo, se formulan una serie de propuestas tendientes a
mitigar los problemas evidenciados. Dado que unos de los factores de importancia
para la implementación de estas metodologías es contar con recursos experimentados,
se comenta una experiencia áulica de aplicación de Metodologías Ágiles en el
contexto de una materia de grado de la carrera Ingeniería en Sistemas de la
Universidad Caece Sede Mar del Plata.


2 Estudio de la implementación de las Metodologías Ágiles en
Argentina
La industria del software ha tenido un crecimiento significativo en los últimos años en
Argentina dando muestras de un fuerte dinamismo. Según datos obtenidos del Boletín
Estadístico Tecnológico del Ministerio de Ciencia, Tecnología e Innovación
Productiva de la República Argentina [19] existen aproximadamente 1000 empresas
formales de Software y Servicios Informáticos (SSI), y durante el año 2008 dicho
sector empresarial registró ventas cercanas a los USD 2000 millones, un 22,4% más
que en 2007, y los puestos de trabajo ya superan los 50000. A su vez dicha industria
es reconocida en el mundo por su calidad teniendo en cuenta que en el ranking de
certificaciones del SEI (Software Engineering Institute)[5] Argentina se encuentra en
el puesto número 12.
   Por otro lado, es importante mencionar que los organismos dedicados a fijar pautas
de calidad a aplicar para el desarrollo de software, también tienen en cuenta las
Metodologías Ágiles. La nueva versión de CMMI 1.3(Capability Madurity Model
Integration), propuesta por el Software Engineering Institute, contempla mejoras
para las organizaciones que trabajen bajo ambientes ágiles, a fin de asegurar una
correcta interpretación de sus prácticas [10]. El Project Management Institute (PMI)
incluye entre sus comunidades a la comunidad de Prácticas Ágiles con el objetivo de
difundir y compartir conocimiento entre seguidores del PMI y de las metodologías
ágiles.


2.1 Elaboración del estudio de indagación acerca de la implementación de
metodologías ágiles

Considerando que en Argentina existen empresas con importante trayectoria y
profesionales con gran experiencia, los autores creen que estarían dadas las
condiciones para el incremento de la utilización de metodologías ágiles.
    Por tal motivo se consideró realizar un estudio para indagar a través de consultas
(relevamiento) acerca del grado de implementación de las metodologías ágiles y su
problemática en el mercado de desarrollo de software en Argentina. Este relevamiento
no fue realizado con fines estadísticos, sino como una fuente de obtención de
información. Para la materialización de este relevamiento se elaboró una lista de
cuestiones destinadas a adquirir datos sobre la implementación de métodos ágiles en
la ingeniería del software.
    Considerando el objetivo mencionado anteriormente, se optó por realizar preguntas
abiertas, ya que las mismas permiten a los consultados explayarse en las respuestas.
Dicho relevamiento se enfocó desde tres perspectivas: a) empresas de desarrollo de
software, b) especialistas en calidad de software, c) empresas que tercerizan el
desarrollo de software.
   Teniendo en cuenta los criterios básicos propuestos por Alistair Cockburn en los
Métodos Crystal [13] para la definición de la metodología a utilizar y los principios
del Manifiesto Ágil [3], entre las cuestiones incluidas en el relevamiento se destacan:
       tiempo de experiencia en el uso de métodos ágiles,
       tiempo de duración promedio de los proyectos, prácticas utilizadas, y
       compromiso de los clientes, certificaciones de calidad y casos de éxito.

Las empresas consultadas para deliberar en estas cuestiones fueron seleccionadas
armando un conjunto heterogéneo que abarca la diversidad del mercado de desarrollo
de software. Este conjunto está formado por micro empresas, software factories
nacionales y empresas multinacionales con centros de desarrollo o filiales instaladas
en Argentina trabajando para mercados tales como América del Sur y del Norte,
Comunidad Europea y China, con 3 hasta 30 años de presencia en el mercado
internacional, y con rubros variados (telefonía, sistemas bancarios o comerciales,
empresas de servicios IT, entre otras). Además, se consultaron profesionales asesores
en normas y/o modelos de calidad para empresas de desarrollo de software. Por un
acuerdo de confidencialidad, no se revelan identidades de las empresas o
profesionales consultados.
   Luego, a partir de las respuestas obtenidas, se realizaron nuevas consultas
particulares con el objeto profundizar en algunas de las cuestiones planteadas.


2.2 Resultados del estudio

A continuación se presenta el resultado del relevamiento realizado como parte de este
trabajo.
   Uno de los primeros datos que surge de los resultados obtenidos es que la totalidad
de los consultados conocen estas metodologías. Si bien no todos las aplican aún,
ninguno de los consultados mostró oposición o resistencia en la utilización de
métodos ágiles en sus procesos. Esta característica fue detectada tanto en empresas de
desarrollo como en empresas que tercerizan el desarrollo de sus aplicaciones.
   Además, no se observa en ninguno de los consultados resistencia al uso de estas
metodologías, aún en aquellos que todavía no las han utilizado.
   De los consultados que utilizan estas metodologías, el 85% refiere haber usado
Scrum, aunque no en forma completa sino adaptando las técnicas que consideran más
apropiadas a las necesidades del proyecto de referencia, a la certificación de calidad
de la empresa y a las idiosincrasias respectivas de los grupos involucrados. El 50% de
los proyectos a los que hacen referencia han tenido una duración de entre 4 y 12
meses, y un 20% a proyectos que tienen una duración de entre 1 y 2 años. Algunas
otras prácticas ágiles utilizadas son XP y Test Driven Development[15].
   En cuanto al involucramiento del cliente en el proceso de desarrollo; todos los
consultados que han utilizado Scrum, coinciden en que es la práctica más difícil de
conseguir. El 16,5% de las empresas lo lograron, el 67% de los consultados responde
haber logrado el compromiso en algunos casos o en forma parcial, mientras que el
16,5% restante lo tienen entre sus objetivos pendientes.
   Otro dato de consideración se refiere a las certificaciones de calidad, encontrando
que el 71% de los consultados refieren estar certificado en ISO 9001, mientras que el
29% no cuentan con certificación alguna. Dentro de las empresas certificadas en ISO
una también lo está en CMMI ML3 y otra en CMMI ML5.
   No hay demasiadas coincidencias en cuanto a los resultados obtenidos con la
aplicación de métodos ágiles. Considerando el tiempo de desarrollo, algunos opinan
que fue óptimo mientras que otros no encuentran mejoría en este aspecto respecto del
uso de metodologías tradicionales. Muchos coinciden que las prácticas de gestión de
proyectos de Scrum ayudan a que esta variable esté bajo control.
   Una importante apreciación en la cual coincidieron los consultados se refiere a una
drástica diminución del esfuerzo de mantenimiento, sobre todo en el tiempo más
cercano a la implantación. Según el criterio y experiencia de los autores esto se
debería al fuerte involucramiento del usuario de la aplicación en el proceso de
construcción de la misma. El mismo conlleva a la adaptación progresiva de la
aplicación a las expectativas del usuario a lo largo del desarrollo. De la misma manera
se realizan los cambios o correcciones necesarios en el mismo periodo de desarrollo
en lugar de hacerlo en modo post-implantación.
    En cuanto a la calidad del producto, el 50% de los consultados encuentran una
mejoría en el aspecto atribuible a las iteraciones, mientras que el otro 50% considera
los productos de calidad aceptable pero sin percibir cambios significativos debidos a
la adopción de metodologías ágiles.
   A partir de los resultados obtenidos en respuesta a los cuestionarios, se hicieron
algunas consultas particulares con aquellos profesionales que implementaban
metodologías ágiles en grandes empresas. De estas consultas surgen las siguientes
problemáticas, Scrum establece que se debe considerar a todos los desarrolladores
como "un solo equipo" y que cualquier miembro del equipo pueda realizar cualquier
tarea; no obstante, según los datos obtenidos, esto resulta difícil de implementar. Un
aspecto clave para llevarlo a cabo es el tipo de proyecto y las características del
mismo. Si el proyecto contara con una arquitectura compleja, resultaría difícil que un
analista del equipo, con experiencia profesional en metodologías tradicionales,
modifique alguna línea de código de otro. En estos casos, lo máximo que podría
lograrse es que expertos en diseño y codificación puedan intercambiar algunas de sus
tareas.
   Adicionalmente se observó, que si bien las prácticas ágiles se realizan, el problema
radica en cómo se las implementa. Como ejemplos de unas incorrectas
implementaciones se pueden nombrar:
    las retrospectivas sólo usadas como espacio de formulación de quejas o para
        hablar únicamente del producto, y no para analizar los resultados y extraer
        lecciones aprendidas para las próximas iteraciones;
    las reuniones diarias no utilizadas para intercambiar información de trabajo,
        sino para resolver problemas y por lo tanto excediéndose demasiado;
    el usuario generando documentación para los desarrolladores como definición
        de requerimientos, en lugar de participar activamente junto al equipo del
        proyecto.
Otro punto muy importante es que las empresas que implementan las metodologías
ágiles deben tener a su personal convencido y dispuesto a convivir con dichas
metodologías. Se evidenció casos de empresas en las cuales los responsables de
implementar el modelo ágil estaban en contra del mismo. A su vez, si dichas
empresas tenían certificados de calidad como CMMI e ISO, al momento de definir
como implementar el modelo ágil, simplemente le cambiaban el nombre a sus
procesos para que “sonaran a ágil”, implementando de este modo los procesos con la
filosofía tradicional pero con otros nombres, y no aprovechando las ventajas que
ofrecen Scrum, XP, u otras, más allá de simples pasos para crear software.
    Estas últimas cuestiones, que plantean dudas respecto de la implementación de un
verdadero proceso ágil, corroboran lo expuesto por Pete Mc Breen [16] quien afirma
que mucha gente proclama que sus procesos son ágiles, pero sucede que en el día a
día de los proyectos nada ha cambiado. Mc Breen expone una lista de diez síntomas
que indicarían que un proceso que dice ser ágil en realidad no lo es. Varias de las
consideraciones de esa lista se corresponden con los puntos planteados anteriormente.
    Otro problema que se evidenció entre los consultados, es la dificultad para realizar
la estimación de un proyecto en forma anticipada cuando se utiliza una metodología
ágil, debido fundamentalmente a los posibles cambios en los requerimientos y sus
prioridades a lo largo del proyecto. En algunos casos han optado por utilizar un
presupuesto en horas basado en los requerimientos que son identificados en primera
instancia, y luego llevar adelante el proyecto hasta que se consuma dicho presupuesto.
    Los resultados de esta investigación fueron cotejados con los datos obtenidos en un
estudio realizado en una tesis de fin de carrera dirigida por los autores [11]. Dicho
estudio abordó empresas y profesionales diferentes a los referidos en este trabajo,
como también así, el método de selección y contacto. No obstante ello, los resultados
obtenidos refuerzan las conclusiones expresadas en este trabajo.


2.3 Problemas en la implementación detectados a partir del estudio

Las metodologías ágiles surgen como una necesidad a la hora de satisfacer los
cambiantes requerimientos de desarrollo de los sistemas actuales, pero manteniendo la
calidad del producto resultante. Por eso han sido adoptadas por distintas
organizaciones de desarrollo de software.
   Sin embargo, persisten algunos problemas que a criterio de los autores dificultan
todavía su correcta implementación:
    Lograr la participación activa y comprometida del usuario formando parte del
       equipo de desarrollo durante todo el proyecto.
    Falta de definición de pautas suficientes respecto de la ingeniería del producto.
    La conformación del equipo del proyecto con recursos que puedan adaptarse a
       las metodologías ágiles.

En cuanto a la participación de los usuarios, el Manifiesto Ágil [3] expresa en su
principio IV “La gente del negocio y los desarrolladores deben trabajar juntos a lo
largo del proyecto”. Esto implica que esta práctica es fundamental y no puede ser
omitida. Esta resistencia a la participación del usuario puede ser debida más a
cuestiones organizativas y operativas de los clientes, que por falta de reconocimiento
de la importancia de las especificaciones de requerimientos.
   Tampoco se cree que sea una causa para este problema la falta de capacidad para
realizar una correcta especificación, ya que los usuarios son cada vez más expertos y
formales al expresar sus necesidades. Actualmente, tienen una mayor experiencia en
la utilización de herramientas informáticas, por lo cual la tarea de abstracción de sus
necesidades en una especificación de requerimientos es realizada prácticamente sin
mayores dificultades.
   Un ejemplo claro de esto, es que en los últimos 2 años los autores han participado
en 34 proyectos de desarrollo de software utilizando metodologías tradicionales con 8
clientes diferentes. En el 41% de esos proyectos se han recibido diferentes tipos de
artefactos construidos directamente por los usuarios como parte de la definición de
sus requerimientos, como pueden ser prototipos de pantallas, planillas de cálculos,
diagramas de actividades y/o gráficos. Es importante destacar que en todos los casos
fueron entregados por iniciativa propia del usuario al momento de iniciarse el
relevamiento y no como una actividad requerida o guiada por el equipo del proyecto.
   Con respecto a la ausencia de pautas de ingeniería de producto, vale recordar uno
de los principios del Manifiesto Ágil [3]: “Desarrollar software que funciona más que
conseguir una buena documentación”. Al entender de los autores, habría que
diferenciar la construcción de modelos con el mero fin de documentar el producto
generado, de la elaboración de modelos como proceso de diseño de soluciones. Es
decir, que no documentar no significaría no modelar.
   En lo que se refiere a la conformación del equipo de trabajo, si bien se requiere que
en el mismo se puedan intercambiar tareas, no se descarta la existencia de una
diversidad de perfiles dentro de los integrantes, de modo tal que la asignación de
tareas en un sprint estaría regida por el conocimiento y experticia de cada uno. Si
dicho equipo es capaz de asumir el compromiso de los requisitos en cada iteración y
si se trabaja en forma cooperativa, es posible cumplir con los mismos. A tal efecto,
Martín Alaimo, referente de la comunidad ágil en Argentina, explica en su artículo
“Roles Ágiles” [17] cómo los roles existentes en metodologías tradicionales pueden
evolucionar hacia los métodos ágiles para integrarse en un equipo ágil, debiendo
aprender y adaptarse a los cambios requeridos para ello.


4. Propuestas de Mejoras en la Aplicación de Metodologías Ágiles
Como resultado del relevamiento, se detectó que Scrum es la metodología ágil
mayormente utilizada; sus actividades de gestión corresponden a las prácticas
recomendadas por CMMI. A partir de dicha consideración, los autores decidieron
trabajar en definir una serie de recomendaciones para la implementación de esta
metodología agregando ciertas actividades tendientes a la solución de los problemas
detectados en dicho relevamiento.
   En lo que respecta a planificación y seguimiento de proyectos si las actividades
definidas por esta metodología son llevadas a cabo de manera correcta, se estarían
cumpliendo las prácticas recomendadas para la gestión de proyectos.
Como una manera de completar esta metodología los autores recomiendan reforzar
las actividades de ingeniería. A continuación se describen las diferentes
recomendaciones organizadas según el ciclo de vida y elementos de Scrum.

Product backlog. No olvidar definir y priorizar no sólo los requerimientos que
tengan que ver con el comportamiento funcional del producto a construir, sino
también requerimientos no funcionales, como pueden ser: pautas de desarrollo,
restricciones arquitectónicas y de plataforma, seguridad, y otras.

Sprint backlog. Cuando se seleccionan los requisitos que serán incluidos en el sprint
también se deberán incluir los requerimientos no funcionales que deberán
implementarse. Esto es importante ya que la incorporación de un requerimiento no
funcional podría implicar actividades adicionales dentro del sprint
   .
Sprint Planning. Durante el sprint planning es conveniente generar un espacio para
el análisis de lecciones aprendidas. Es decir, considerar las acciones que hayan sido
recomendadas en las retrospectivas de sprints anteriores. En caso de que se trate del
primer sprint se podrían incluso considerar lecciones aprendidas de proyectos
anteriores en los que hayan participado los integrantes del equipo. Dicha cuestión
debería surgir naturalmente en equipos ágiles maduros, es decir con experiencia en
este tipo de proyectos. No obstante, se recomienda que el Scrum Master incluya de
manera obligatoria esta actividad dentro de la agenda.
   Considerar, en la planificación, las actividades de modelado a realizar durante el
sprint y quienes serían los responsables de su elaboración.
   Utilizar herramientas para el soporte de la planificación, desarrollo y control de
avance de las actividades. Existen múltiples herramientas, incluso algunas de uso
libre, que dan soporte a todas las actividades propuestas por estas metodologías.
Además proveen mecanismos que facilitan la comunicación entre los integrantes del
equipo dejando registro de dichas comunicaciones.

Sprint. En lo que respecta a actividades de ingeniería, como se ha dicho
anteriormente, construir modelos que faciliten el desarrollo no significa un
incumplimiento del manifiesto ágil. Por tal motivo, los autores consideran que si sólo
se realizan actividades de codificación sería una mala implementación de la
metodología convirtiéndose en un ciclo de vida conocido como “code and fix” [12].
En este sentido, es importante destacar que hay ciertos aspectos de la aplicación que
no pueden construirse en forma aislada con una visión independiente por
requerimiento. Por lo contario, se necesita una visión global de todo el conjunto de
requerimientos a implementarse en el sprint como, por ejemplo, el diseño de la
arquitectura y el modelo de datos.
   En particular en lo que respecta a diseño, en el primer sprint sería conveniente
realizar un diagrama de arquitectura y un análisis de alternativas de solución
eficientes según los requerimientos no funcionales. Este modelo podría ser revisado
en cada sprint en caso de que se considere necesario o que aparecieran nuevos
requerimientos que afecten la arquitectura. En cuanto al modelo de datos debería
definirse de manera incremental a medida que se definan los diferentes
requerimientos en cada sprint. Además se recomienda la elaboración de diagramas de
interacción para las funciones más complejas, quedando a criterio de cada integrante
del equipo la necesidad de este modelado como forma de simplificación de la
codificación. Esto permitirá realizar un diseño previo a la codificación de los
requerimientos del sprint y contar con una base para las sucesivas iteraciones.
   Respecto del seguimiento y control, son suficientes una correcta implementación
de los daily meetings, el uso de burndown charts y el boardtask. De todos modos, se
recomienda el uso de herramientas ya que las mismas dejarían registro suficiente para
las mediciones de desempeño y rendimiento.

Sprint Retrospective. Las retrospectivas deberían tener como principal objetivo la
obtención de lecciones aprendidas y la definición de acciones correctivas y
preventivas para las iteraciones subsiguientes del proyecto.

Las recomendaciones antes descriptas están dirigidas a la solución de algunos de los
problemas detectados para la implementación de metodologías ágiles, pero no
solucionan los problemas relacionados con la gestión de equipos y la falta de
formación superior en temas ágiles.
   Enfocados en esta problemática se presenta, en la siguiente sección, una
experiencia en el marco de una materia de la carrera de Ingeniería en Sistemas.


5. Experiencia en la Enseñanza
Como se ha expresado en secciones anteriores, la falta de formación de los recursos
humanos en este tipo de metodologías es uno de los problemas coyunturales a
solucionar para su correcta implementación.
   En este sentido, los autores consideran necesario que las universidades incluyan en
sus planes de estudio formación sobre metodologías ágiles. Esta formación no debería
realizarse sólo desde el punto de vista teórico ya que en estas metodologías son claves
aspectos que tienen carácter de dinámicos, como son la comunicación, y la capacidad
de autogestión del equipo. Por lo tanto, es fundamental realizar experiencias prácticas
que les permitan a los alumnos adquirir un cabal conocimiento de las prácticas ágiles.
   En el marco de la materia Investigación en Ingeniería de Software de 4to año de la
carrera Ingeniería en Sistemas (Universidad CAECE), los autores consideraron
oportuno que los alumnos no sólo aprendieran los principios de las metodologías
ágiles sino que también los ejercitaran.
   Para ello, propusieron a un grupo de alumnos realizar el desarrollo de un producto
que sirviera como herramienta para la gestión de proyectos ágiles. Es decir, se
construiría un producto para ágiles, aplicando Scrum como metodología de desarrollo.
   Debido a que eran cinco alumnos los inscriptos en el curso, se conformó un único
equipo de trabajo. Todos los alumnos se encontraban en el tramo final de su carrera,
incluso para algunos era la única materia que cursaban durante el cuatrimestre en el
cual se realizó la experiencia.
   Considerando la importancia que tienen para estas metodologías las relaciones
humanas y la sinergia y dinámica de los equipos de trabajo, se destaca que estos
alumnos ya se conocían en el ámbito universitario pero sólo dos de ellos habían
trabajado juntos previamente. Durante las primeras tres semanas profundizaron sus
conocimientos teóricos en metodologías ágiles y definieron las herramientas que
utilizarían durante el proyecto.
   Dado que el trabajo se realizaría a lo largo de un cuatrimestre en el marco de una
materia de cuatro horas semanales, se acordó con los alumnos una dedicación
adicional aunque obviamente menor a lo que sería en un ambiente profesional. El
objetivo de la materia no era construir un producto con las mismas características que
las que tendrían en nueve semanas de trabajo en un ambiente profesional, sino que los
alumnos aprendieran la dinámica de un grupo ágil y fueran capaces de comparar la
forma de trabajo de estas metodologías respecto de las tradicionales.
   Una de las pocas pautas establecidas por los docentes fue la cantidad y duración de
los sprints. Se debían realizar tres sprints de tres semanas de duración cada uno. El
grupo se asignó los roles y definió quien sería el Scrum Master. Los docentes
cumplieron el rol del cliente, fijando requerimientos, prioridades y evaluando el
producto.
   En cada encuentro, el grupo realizaba el daily-meeting correspondiente, en el cual
comentaban las tareas realizadas y las próximas a hacer. Para el seguimiento del
proyecto utilizaron una planilla de cálculo donde incluían el product backlog, el sprint
backlog y las horas estimadas y reales de cada requisito.
   Al final de cada sprint, el grupo realizaba la correspondiente demostración del
producto. En dicha reunión los docentes, en el rol de usuarios, evaluaban la
funcionalidad final desarrollada, surgiendo ajustes al producto presentado.
   A continuación, los alumnos realizaban la retrospectiva, en la cual el Scrum
Master tenía un rol preponderante. Si bien el grupo fue capaz de identificar fortalezas
y debilidades, los docentes dieron un feedback de cómo habían trabajado de acuerdo a
la metodología, para que el grupo pudiera ajustar lo necesario en el siguiente sprint.
   Luego de la retrospectiva, el grupo estimaba los requerimientos del product
backlog para establecer cuáles serían incluidos en el siguiente sprint. Como
herramienta para la estimación utilizaron juicio de expertos.
   Cabe destacar que fueron diferentes los resultados obtenidos en los sprints, y
quedó en evidencia la importancia de la experiencia en estas metodologías.
   Durante este primer sprint se cometieron una serie de errores que, a juzgar por los
docentes, fueron producto de la inexperiencia de los alumnos en este tipo de
metodologías. Pueden citarse como ejemplos una subestimación de los requisitos a
incluir, la minimización de la importancia de la comunicación del equipo durante el
sprint más allá de las reuniones de los días de cursada y una pobre retrospectiva
realizada en la que jugaron un papel más de observadores que de partícipes. Podría
decirse que este sprint fracasó porque al finalizar el mismo, los alumnos no tenían un
producto para presentar. Sólo habían construido un prototipo pues estaban
implementadas las interfaces de usuario con cierta funcionalidad pero se habían
obviado múltiples validaciones que en un producto con un mínimo de robustez y
confiabilidad se deberían realizar.
   Para el segundo sprint (habiendo comprendido los errores cometidos durante el
primero) el equipo planificó terminar todos los requisitos tomados durante el primero
y agregar un único requisito. Como lecciones aprendidas, realizaron cambios en
cuanto a la forma de trabajo y comunicación del equipo, asumiendo uno de los
miembros el rol de tester para hacer una integración funcional del producto,
reuniéndose por fuera de la materia para trabajar en un mismo lugar físico y
utilizando un cuadro de fortalezas e ítems a mejorar para la retrospectiva. Cabe
destacar que durante el desarrollo de este sprint los docentes, en el rol de usuario,
introdujeron algunos cambios en la definición de los requisitos (aunque no pueden ser
considerados cambios de alcance) los cuales fueron tomados con naturalidad e
implementados sin mayores problemas durante el sprint.
   Para el tercer sprint se seleccionaron nuevos requerimientos los cuales hacían que
la aplicación terminara siendo una buena herramienta para soporte de gestión de
metodologías ágiles pero dejaron afuera ciertos requisitos de reporting ya que el
equipo consideró que no podría llegar a completarlos. Cabe destacar que los docentes
consideraban que el product backlog definido inicialmente era mayor al que podría
ser efectivamente construido durante la cursada de la materia. La dinámica del equipo
fue muy buena, trabajando con eficiencia durante todo el desarrollo del sprint. Los
requisitos fueron concluidos en tiempo y forma.
   En resumen, durante el desarrollo del proyecto, los alumnos se encontraron con los
siguientes problemas, los cuales fueron solucionados a lo largo de la experiencia:
    Falta de experiencia en estas metodologías: Si bien tuvieron un período de
        entrenamiento teórico y capacitación previo al inicio del proyecto, en los
        primeros sprints la implementación de la metodología no fue la adecuada y
        mejoró en las sucesivas iteraciones.
    Sinergia del equipo: Los integrantes mejoraron la dinámica de trabajo con el
        avance del proyecto, pues el conocerse más hizo que la comunicación fuera
        más fluida y se entendieran con mayor facilidad ante problemas.
    Necesidad de trabajar en un mismo lugar físico fuera del horario de cátedra:
        En el inicio de cada sprint se repartían las tareas y durante la semana estaban
        en contacto entre ellos o se reunían en sub-grupos. Para poder avanzar y tratar
        de cumplir los compromisos acordados, comenzaron a reunirse en la última
        semana del sprint para integrar lo que cada uno había desarrollado, pues para
        esas tareas necesitaban estar todos en un mismo lugar físico.

Como cierre de esta experiencia didáctica, los autores exponen a continuación una
propuesta para aplicar en la enseñanza de prácticas ágiles.
   Antes de comenzar con el ejercicio práctico, es necesario contar con un período de
capacitación. Resulta muy útil que los docentes transmitan los conceptos teóricos y
luego que los alumnos continúen con el aprendizaje validando en las clases siguientes
el avance y los conceptos adquiridos. Para ello, podrían realizarse pequeños talleres
de no más de una hora cada uno, para trabajar los principales puntos de estas
metodologías, tales como estimación de los requisitos que entrarán en un sprint, cómo
realizar un daily meeting, técnicas para llevar adelante las retrospectivas, diferencias
entre retrospectiva y demostración. Esto permitirá que los alumnos comiencen el
proyecto con conceptos más maduros y el ejercicio les resulte más productivo.
   Respecto de la cantidad y duración de los sprints; se recomienda que sean tres o
más y que cada uno no se extienda más allá de tres semanas. Esto permitirá, (i) a los
docentes, validar la aplicación de la metodología y (ii) a los alumnos corregir los
errores eventuales y aplicar cambios en las siguientes iteraciones.
   Con relación a la dedicación semanal mínima de cada alumno, la misma no debería
ser inferior a las diez horas, incluidas las de clase. De este modo es posible mostrar
avances concretos en la construcción del producto y realizar las reuniones
correspondientes. En cuanto a la organización de la ejecución de las tareas, se
recomienda que se fijen pautas tales como: días de trabajo pre-establecidos y daily
meetings, aun cuando el equipo no se encuentre físicamente en el mismo lugar.
   En cuanto al producto a construir, se sugiere que su dominio de aplicación sea
conocido por los alumnos. Esto facilitará la definición del producto minimizando la
intervención de la cátedra dentro del equipo.
   Teniendo en cuenta los problemas observados y los resultados obtenidos los
autores consideran fructuosas las actividades expuestas. Permiten a los alumnos
aprender desde la práctica los principios de las metodologías ágiles. Tarea que es
imposible hacer con los mismos beneficios sólo desde la teoría. El concepto
fundamental se basa en las personas y la dinámica de los equipos de trabajo. Para
respetar este concepto la técnica “on the job training” se impone.


6. Conclusiones
El uso de las Metodologías Ágiles está en expansión. Esto se debe a las ventajas que
presentan estas metodologías para un mundo cambiante y dinámico como el actual.
   Como resultado del relevamiento realizado, se han detectado ciertos problemas que
aún dificultan la correcta implementación de estas metodologías. Sin embargo los
mismos pueden ser resueltos con la incorporación de pautas para actividades de
ingeniería derivadas de las metodologías tradicionales que permitan acelerar la
codificación y sirvan como base para futuras iteraciones.
   En lo que respecta al equipo de trabajo, existen diversas variables a ser tenidas en
cuenta: cultura organizacional, experiencia y experticia de los integrantes del equipo,
factores culturales, y formación hacia un determinado paradigma. El desarrollo de
habilidades “ágiles” en el ámbito universitario juega un rol importante en la
formación de futuros profesionales.
   En tal sentido, se evidencia que algunos de los problemas referentes a
implementaciones incorrectas detectados en el estudio de indagación realizado,
aparecieron también en los primeros Sprint de la experiencia didáctica realizada por
los autores en la Universidad CAECE. Siendo importante destacar que a medida que
los alumnos fueron avanzando en la materia estos problemas fueron corregidos.
   Esto hace suponer que una correcta formación práctica en este tipo de
metodologías, derivarían en una mejora en la implementación de las mismas en el
ámbito profesional.
   Así como los autores han vivido la transición del paradigma estructurado hacia el
de objetos, consideran que están dadas las condiciones para un cambio hacia la
agilidad, pero aplicando las lecciones aprendidas de los distintos paradigmas.
Mientras antes se empiece con este reto, más rápido se verán los resultados.


Bibliografía
1. Kent Beck. “Extreme Programming Explained: Embrace Change”. Reading, Addison
   Wesley, 1999.
2. Laurie Williams, Robert R. Kessler, Ward Cunningham, Ron Jeffries, “Strengthening the
    Case for Pair Programming,” IEEE Software, 2000.
3. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, y otros. “Ágile
    Manifesto”. 2001.http://ágilemanifesto.org/
4. Ken Schwaber, Mike Beedle, “Ágile Software Development with Scrum”, Prentice Hall,
    2001.
5. Actualmente                                                                          en:
    http://www.sei.cmu.edu/cmmi/casestudies/profiles/pdfs/upload/2010MarCMMI.pdf
6. M. B. Chrissis, Konrad, and Shrum, “CMMI, Guía para la integración de procesos y la
    mejora de productos”, Pearson Educación, 2009
7. Hillel Glazer, Jeff Dalton, David Anderson, Mike Konrad, Sandy Shrum, “CMMI® or
    Ágile: Why Not Embrace Both!”, TECHNICAL NOTE CMU/SEI-2008-TN-003
8. Henrik Kniberg, “Scrum y XP desde las trincheras”, C4Media Inc, 2007
9. Jeff Sutherland, Carsten R. Jakobsen, Kent Johnson, “Scrum and CMMI Level 5: The
    Magic Potion for Code Warriors”, Ágile2007 Conference
10. Mike Phillips , Sandy Shrum, “Process Improvement for All: What to Expect from CMMI
    Version 1.3”, Software Engineering Institute,2010.
11. Andrea N. Alende, “La utilización de las Metodologías Ágiles en las empresas de
    desarrollo de software de Argentina”, Universidad CAECE Sede Mar del Plata, 2010.
12. Tom de Marco, “Software Engineering An idea whose time has come and gone”, IEEE
    Software, July August 2009
13. Actualmente en: http://alistair.cockburn.us/Methodology+per+project
14. Actualmente       en:     http://www.pmi.org/GetInvolved/Pages/Communities-of-Practice-
    Ágile.aspx
15. Kent Beck, “Test Driven Development By Example”. Addison Wesley, 2003
16. Actualmente en http://www.informit.com/articles/article.aspx?p=25913&seqNum=3
17. Actualmente en http://www.martinalaimo.com/es/2010/02/roles-ágiles/
18. Actualmente                                                                         en:
    http://www.mincyt.gov.ar/indicadores/banco_indicadores/publicaciones/bet_TIC_final.pdf
19. Mike Cohn, „Succeding with Ágile: Software Development Using Scrum‟, Addison-
    Wesley, 2010
20. Actualmente en:http://alistair.cockburn.us/Ágile+contracts

Más contenido relacionado

La actualidad más candente

modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software Brihany Rossell
 
La ofimatica y sus prinsipales técnicas para la satisfacción de necesidades e...
La ofimatica y sus prinsipales técnicas para la satisfacción de necesidades e...La ofimatica y sus prinsipales técnicas para la satisfacción de necesidades e...
La ofimatica y sus prinsipales técnicas para la satisfacción de necesidades e...brenda-111200
 
Brochure de Codebay para desarrollo de software
Brochure de Codebay para desarrollo de softwareBrochure de Codebay para desarrollo de software
Brochure de Codebay para desarrollo de softwareAlberto Garibay
 
Diseño de estructuras metálicas tec
Diseño de estructuras metálicas tecDiseño de estructuras metálicas tec
Diseño de estructuras metálicas tecSecundariia
 
Fundamentos arquitectura del software
Fundamentos arquitectura del softwareFundamentos arquitectura del software
Fundamentos arquitectura del softwarevenezuela2015
 
programa de asignatura taller ofimatica secundaria
programa de asignatura taller ofimatica secundariaprograma de asignatura taller ofimatica secundaria
programa de asignatura taller ofimatica secundariaDonGato Ysupandilla
 
Metodologias De Desarrollo De Software
Metodologias De Desarrollo De SoftwareMetodologias De Desarrollo De Software
Metodologias De Desarrollo De Softwareguesta1695670
 
Programa analitico tecnologia.docx
Programa analitico tecnologia.docxPrograma analitico tecnologia.docx
Programa analitico tecnologia.docxAnaisNuez2
 
Condiciones necesarias que debe tener un proceso, sistema o producto técnico ...
Condiciones necesarias que debe tener un proceso, sistema o producto técnico ...Condiciones necesarias que debe tener un proceso, sistema o producto técnico ...
Condiciones necesarias que debe tener un proceso, sistema o producto técnico ...ParkNaye
 
La tecnologia y su relacion con otras areas del conocimiento
La tecnologia y su relacion con otras areas del conocimientoLa tecnologia y su relacion con otras areas del conocimiento
La tecnologia y su relacion con otras areas del conocimientoRuben Omar
 
Planeación Informática Bloque - 1 - Apartado 1.2.3 - secundaria
Planeación Informática Bloque - 1 -  Apartado 1.2.3 - secundariaPlaneación Informática Bloque - 1 -  Apartado 1.2.3 - secundaria
Planeación Informática Bloque - 1 - Apartado 1.2.3 - secundariaErasmo Ruíz
 

La actualidad más candente (11)

modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software
 
La ofimatica y sus prinsipales técnicas para la satisfacción de necesidades e...
La ofimatica y sus prinsipales técnicas para la satisfacción de necesidades e...La ofimatica y sus prinsipales técnicas para la satisfacción de necesidades e...
La ofimatica y sus prinsipales técnicas para la satisfacción de necesidades e...
 
Brochure de Codebay para desarrollo de software
Brochure de Codebay para desarrollo de softwareBrochure de Codebay para desarrollo de software
Brochure de Codebay para desarrollo de software
 
Diseño de estructuras metálicas tec
Diseño de estructuras metálicas tecDiseño de estructuras metálicas tec
Diseño de estructuras metálicas tec
 
Fundamentos arquitectura del software
Fundamentos arquitectura del softwareFundamentos arquitectura del software
Fundamentos arquitectura del software
 
programa de asignatura taller ofimatica secundaria
programa de asignatura taller ofimatica secundariaprograma de asignatura taller ofimatica secundaria
programa de asignatura taller ofimatica secundaria
 
Metodologias De Desarrollo De Software
Metodologias De Desarrollo De SoftwareMetodologias De Desarrollo De Software
Metodologias De Desarrollo De Software
 
Programa analitico tecnologia.docx
Programa analitico tecnologia.docxPrograma analitico tecnologia.docx
Programa analitico tecnologia.docx
 
Condiciones necesarias que debe tener un proceso, sistema o producto técnico ...
Condiciones necesarias que debe tener un proceso, sistema o producto técnico ...Condiciones necesarias que debe tener un proceso, sistema o producto técnico ...
Condiciones necesarias que debe tener un proceso, sistema o producto técnico ...
 
La tecnologia y su relacion con otras areas del conocimiento
La tecnologia y su relacion con otras areas del conocimientoLa tecnologia y su relacion con otras areas del conocimiento
La tecnologia y su relacion con otras areas del conocimiento
 
Planeación Informática Bloque - 1 - Apartado 1.2.3 - secundaria
Planeación Informática Bloque - 1 -  Apartado 1.2.3 - secundariaPlaneación Informática Bloque - 1 -  Apartado 1.2.3 - secundaria
Planeación Informática Bloque - 1 - Apartado 1.2.3 - secundaria
 

Destacado

Cas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agilCas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agilAgile Spain
 
Visual Scrum - What you see is What you get
Visual Scrum - What you see is What you getVisual Scrum - What you see is What you get
Visual Scrum - What you see is What you getAgile Spain
 
Cas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracionCas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracionAgile Spain
 
Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...Agile Spain
 
Como cocinar tu contrato ágil
Como cocinar tu contrato ágilComo cocinar tu contrato ágil
Como cocinar tu contrato ágilAgile Spain
 
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xpCas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xpAgile Spain
 
Guía para relevamiento, formalización y reingeniería de procesos
Guía para relevamiento, formalización y reingeniería de procesosGuía para relevamiento, formalización y reingeniería de procesos
Guía para relevamiento, formalización y reingeniería de procesosAlejandro BATISTA
 

Destacado (8)

Cas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agilCas2010 itinerario-implementacion-agil
Cas2010 itinerario-implementacion-agil
 
Visual Scrum - What you see is What you get
Visual Scrum - What you see is What you getVisual Scrum - What you see is What you get
Visual Scrum - What you see is What you get
 
Cas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracionCas2010 gestion-agil-de-la-configuracion
Cas2010 gestion-agil-de-la-configuracion
 
Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...Lessons learned from contrasting Design Thinking and Agile Project Management...
Lessons learned from contrasting Design Thinking and Agile Project Management...
 
Como cocinar tu contrato ágil
Como cocinar tu contrato ágilComo cocinar tu contrato ágil
Como cocinar tu contrato ágil
 
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xpCas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp
 
Guía para relevamiento, formalización y reingeniería de procesos
Guía para relevamiento, formalización y reingeniería de procesosGuía para relevamiento, formalización y reingeniería de procesos
Guía para relevamiento, formalización y reingeniería de procesos
 
BRC Norma global de regulación alimentaria Versión 6
BRC Norma global de regulación alimentaria Versión 6BRC Norma global de regulación alimentaria Versión 6
BRC Norma global de regulación alimentaria Versión 6
 

Similar a Implementación de prácticas ágiles en Argentina

Metodologías híbridas para desarrollo de software
Metodologías híbridas para desarrollo de softwareMetodologías híbridas para desarrollo de software
Metodologías híbridas para desarrollo de softwareJesus Rocha
 
Metodologías ágiles para el dessarrollo de aplicaciones móvil.
Metodologías ágiles para el dessarrollo de aplicaciones móvil.Metodologías ágiles para el dessarrollo de aplicaciones móvil.
Metodologías ágiles para el dessarrollo de aplicaciones móvil.Edwin Roy Casas Huamanta
 
Pruebas+en+metologias+agiles(3)
Pruebas+en+metologias+agiles(3)Pruebas+en+metologias+agiles(3)
Pruebas+en+metologias+agiles(3)Pablo Medina
 
Aplicación web basada en agentes para monitorear los indicadores de la gestió...
Aplicación web basada en agentes para monitorear los indicadores de la gestió...Aplicación web basada en agentes para monitorear los indicadores de la gestió...
Aplicación web basada en agentes para monitorear los indicadores de la gestió...Manuel Mujica
 
Dialnet propuesta demodelodemejoraparamypesproductorasdesof-6230454
Dialnet propuesta demodelodemejoraparamypesproductorasdesof-6230454Dialnet propuesta demodelodemejoraparamypesproductorasdesof-6230454
Dialnet propuesta demodelodemejoraparamypesproductorasdesof-6230454CintiaNarezoTurpo
 
Adopción de una metodología agil para proyectos de software
Adopción de una metodología agil  para proyectos de softwareAdopción de una metodología agil  para proyectos de software
Adopción de una metodología agil para proyectos de softwarefredarwin
 
Moprosoft informe de investigación
Moprosoft informe de investigaciónMoprosoft informe de investigación
Moprosoft informe de investigaciónHoward Pernía
 
Metodogia moprosof metrica v3 (5)
Metodogia moprosof metrica v3 (5)Metodogia moprosof metrica v3 (5)
Metodogia moprosof metrica v3 (5)Johita Guerrero
 
Metodogia moprosof metrica v3 (6)
Metodogia moprosof metrica v3 (6)Metodogia moprosof metrica v3 (6)
Metodogia moprosof metrica v3 (6)Johita Guerrero
 
Comparación entre cmmi y moprosoft
Comparación entre cmmi y moprosoftComparación entre cmmi y moprosoft
Comparación entre cmmi y moprosoftMali Ma
 
TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRE...
TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRE...TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRE...
TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRE...José Antonio Sandoval Acosta
 
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405JonathanEusebioTolen
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agilesmartin8730
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agilesmartin8730
 
Metodologias Agiles
Metodologias AgilesMetodologias Agiles
Metodologias Agilespuyol10
 
Todo agilok
Todo agilokTodo agilok
Todo agilokCRJOSE
 

Similar a Implementación de prácticas ágiles en Argentina (20)

Metodologías híbridas para desarrollo de software
Metodologías híbridas para desarrollo de softwareMetodologías híbridas para desarrollo de software
Metodologías híbridas para desarrollo de software
 
Metodologías ágiles para el dessarrollo de aplicaciones móvil.
Metodologías ágiles para el dessarrollo de aplicaciones móvil.Metodologías ágiles para el dessarrollo de aplicaciones móvil.
Metodologías ágiles para el dessarrollo de aplicaciones móvil.
 
Resumen
ResumenResumen
Resumen
 
Pruebas+en+metologias+agiles(3)
Pruebas+en+metologias+agiles(3)Pruebas+en+metologias+agiles(3)
Pruebas+en+metologias+agiles(3)
 
Aplicación web basada en agentes para monitorear los indicadores de la gestió...
Aplicación web basada en agentes para monitorear los indicadores de la gestió...Aplicación web basada en agentes para monitorear los indicadores de la gestió...
Aplicación web basada en agentes para monitorear los indicadores de la gestió...
 
Dialnet propuesta demodelodemejoraparamypesproductorasdesof-6230454
Dialnet propuesta demodelodemejoraparamypesproductorasdesof-6230454Dialnet propuesta demodelodemejoraparamypesproductorasdesof-6230454
Dialnet propuesta demodelodemejoraparamypesproductorasdesof-6230454
 
Adopción de una metodología agil para proyectos de software
Adopción de una metodología agil  para proyectos de softwareAdopción de una metodología agil  para proyectos de software
Adopción de una metodología agil para proyectos de software
 
Moprosoft informe de investigación
Moprosoft informe de investigaciónMoprosoft informe de investigación
Moprosoft informe de investigación
 
Metodogia moprosof metrica v3 (5)
Metodogia moprosof metrica v3 (5)Metodogia moprosof metrica v3 (5)
Metodogia moprosof metrica v3 (5)
 
Metodogia moprosof metrica v3 (6)
Metodogia moprosof metrica v3 (6)Metodogia moprosof metrica v3 (6)
Metodogia moprosof metrica v3 (6)
 
Comparación entre cmmi y moprosoft
Comparación entre cmmi y moprosoftComparación entre cmmi y moprosoft
Comparación entre cmmi y moprosoft
 
TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRE...
TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRE...TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRE...
TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRE...
 
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
Dialnet un modelodegestionderequerimientosparaminimizarelpo-7154405
 
Dmcs u3 atr_roch
Dmcs u3 atr_rochDmcs u3 atr_roch
Dmcs u3 atr_roch
 
Proceso de-desarrollo-software
Proceso de-desarrollo-softwareProceso de-desarrollo-software
Proceso de-desarrollo-software
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agiles
 
Metodologias agiles
Metodologias agilesMetodologias agiles
Metodologias agiles
 
Metodologias Agiles
Metodologias AgilesMetodologias Agiles
Metodologias Agiles
 
Todo agilok
Todo agilokTodo agilok
Todo agilok
 
Articulo agiles metodos
Articulo agiles metodosArticulo agiles metodos
Articulo agiles metodos
 

Más de Agile Spain

Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Agile Spain
 
Introducción a la agilidad
Introducción a la agilidadIntroducción a la agilidad
Introducción a la agilidadAgile Spain
 
Cas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equiposCas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equiposAgile Spain
 
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuarioCas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuarioAgile Spain
 
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...Agile Spain
 
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...Agile Spain
 
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-questionCas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-questionAgile Spain
 
Cas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsCas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsAgile Spain
 
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championshipCas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championshipAgile Spain
 
Cas2010 pair-programming-strategies
Cas2010 pair-programming-strategiesCas2010 pair-programming-strategies
Cas2010 pair-programming-strategiesAgile Spain
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationAgile Spain
 
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-molesCas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-molesAgile Spain
 
Ser ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remotoSer ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remotoAgile Spain
 
Cuore.js: Una historia de amor
Cuore.js: Una historia de amorCuore.js: Una historia de amor
Cuore.js: Una historia de amorAgile Spain
 
Stop the line & Stop Feature Development practices
Stop the line & Stop Feature Development practicesStop the line & Stop Feature Development practices
Stop the line & Stop Feature Development practicesAgile Spain
 
Cosas que te dije o cómo tragar la pastilla roja sin agua
Cosas que te dije o cómo tragar la pastilla roja sin aguaCosas que te dije o cómo tragar la pastilla roja sin agua
Cosas que te dije o cómo tragar la pastilla roja sin aguaAgile Spain
 
From Dev to DevOps
From Dev to DevOpsFrom Dev to DevOps
From Dev to DevOpsAgile Spain
 
La nueva guía de Scrum
La nueva guía de ScrumLa nueva guía de Scrum
La nueva guía de ScrumAgile Spain
 
Frogtek: de Waterfall a Scrumban pasando por Scrunch y Kanmal
Frogtek: de Waterfall a Scrumban pasando por Scrunch y KanmalFrogtek: de Waterfall a Scrumban pasando por Scrunch y Kanmal
Frogtek: de Waterfall a Scrumban pasando por Scrunch y KanmalAgile Spain
 
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?Agile Spain
 

Más de Agile Spain (20)

Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
 
Introducción a la agilidad
Introducción a la agilidadIntroducción a la agilidad
Introducción a la agilidad
 
Cas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equiposCas2010 gestion-agil-de-equipos
Cas2010 gestion-agil-de-equipos
 
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuarioCas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
Cas2010 integrando-practicas-agiles-y-de-experiencia-de-usuario
 
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
Cas2010 toolchain-for-agile-teams-traceability-from-product-vision-to-working...
 
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
Cas2010 los-principios-agiles-como-guia-o-por-que-querras-volver-a-modelos-tr...
 
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-questionCas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
Cas2010 to-track-defects-or-not-to-track-defects-that-is-the-question
 
Cas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsCas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projects
 
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championshipCas2010 one-year-of-software-developments-to-win-a-world-racing-championship
Cas2010 one-year-of-software-developments-to-win-a-world-racing-championship
 
Cas2010 pair-programming-strategies
Cas2010 pair-programming-strategiesCas2010 pair-programming-strategies
Cas2010 pair-programming-strategies
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
 
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-molesCas2010 herramientas-de-pruebas-unitarias-pex-y-moles
Cas2010 herramientas-de-pruebas-unitarias-pex-y-moles
 
Ser ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remotoSer ágil en España, un caso real con equipos de trabajo en remoto
Ser ágil en España, un caso real con equipos de trabajo en remoto
 
Cuore.js: Una historia de amor
Cuore.js: Una historia de amorCuore.js: Una historia de amor
Cuore.js: Una historia de amor
 
Stop the line & Stop Feature Development practices
Stop the line & Stop Feature Development practicesStop the line & Stop Feature Development practices
Stop the line & Stop Feature Development practices
 
Cosas que te dije o cómo tragar la pastilla roja sin agua
Cosas que te dije o cómo tragar la pastilla roja sin aguaCosas que te dije o cómo tragar la pastilla roja sin agua
Cosas que te dije o cómo tragar la pastilla roja sin agua
 
From Dev to DevOps
From Dev to DevOpsFrom Dev to DevOps
From Dev to DevOps
 
La nueva guía de Scrum
La nueva guía de ScrumLa nueva guía de Scrum
La nueva guía de Scrum
 
Frogtek: de Waterfall a Scrumban pasando por Scrunch y Kanmal
Frogtek: de Waterfall a Scrumban pasando por Scrunch y KanmalFrogtek: de Waterfall a Scrumban pasando por Scrunch y Kanmal
Frogtek: de Waterfall a Scrumban pasando por Scrunch y Kanmal
 
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
 

Implementación de prácticas ágiles en Argentina

  • 1. Análisis de la implementación de prácticas ágiles en Argentina M. Alvarez, F. Escobar, A. Nardin, E. Ricci Aparicio, G. Bioul Universidad CAECE, Sede Mar del Plata, Olavarría. 2464, Mar del Plata, Argentina { malvarez, fescobar, anardin, ericciaparicio, gbioul }@ucaecemdp.edu.ar Resumen. Este trabajo analiza el grado de implementación de las metodologías modernas de ingeniería de software en el ámbito profesional y educativo Argentino. A través de consultas, encuestas y en base a la experiencia de los autores, se acertaron conclusiones alentadoras acerca de la adopción de prácticas ágiles, que en muchos casos integran los nuevos conceptos en forma parcial o híbrida. Las Metodologías Ágiles son uno de los más populares enfoques para el desarrollo de software en estos días. Parte del reto de aplicar nuevas metodologías está basado en la educación. En el presente trabajo se exponen los resultados de consultas en empresas nacionales argentinas y multinacionales para identificar problemas y proponer soluciones. También se comenta una experiencia realizada en el ámbito universitario que pretende definir un método para la enseñanza de la “agilidad”. Keywords: Metodologías Ágiles, Ingeniería de Software, Scrum, Sprint. 1 Introducción Las Metodologías Ágiles emergen como una alternativa a las metodologías tradicionales de desarrollo de software. Se aplican en muchos de los proyectos en donde el entorno del sistema es muy cambiante, y con necesidades de reducir drásticamente los tiempos de desarrollo aun manteniendo una alta calidad en el producto. Por eso, estas metodologías se han ido difundiendo en el mercado y están siendo adoptadas por variadas organizaciones de desarrollo de software. ¿Cuál es el grado de implementación de las metodologías ágiles en Argentina? ¿Cuáles de todas ellas son las más utilizadas? ¿Se pueden adoptar en forma integral, es decir con todas las prácticas propuestas? ¿Se pueden certificar normas o modelos de calidad siendo „ágil‟? ¿Cuál es el futuro de estas metodologías? Son estas algunas de las preguntas que se tratan de contestar en este trabajo. Se expone en primer lugar un estudio sobre el estado del arte en el uso de metodologías ágiles, a través de consultas realizadas en empresas, argentinas e internacionales, con diferentes características y tamaños. El objetivo de este estudio es indagar a través de consultas, acerca de los principales problemas de adaptación que las empresas encuentran al implementar total o parcialmente estas metodologías. A
  • 2. partir de los resultados del mismo, se formulan una serie de propuestas tendientes a mitigar los problemas evidenciados. Dado que unos de los factores de importancia para la implementación de estas metodologías es contar con recursos experimentados, se comenta una experiencia áulica de aplicación de Metodologías Ágiles en el contexto de una materia de grado de la carrera Ingeniería en Sistemas de la Universidad Caece Sede Mar del Plata. 2 Estudio de la implementación de las Metodologías Ágiles en Argentina La industria del software ha tenido un crecimiento significativo en los últimos años en Argentina dando muestras de un fuerte dinamismo. Según datos obtenidos del Boletín Estadístico Tecnológico del Ministerio de Ciencia, Tecnología e Innovación Productiva de la República Argentina [19] existen aproximadamente 1000 empresas formales de Software y Servicios Informáticos (SSI), y durante el año 2008 dicho sector empresarial registró ventas cercanas a los USD 2000 millones, un 22,4% más que en 2007, y los puestos de trabajo ya superan los 50000. A su vez dicha industria es reconocida en el mundo por su calidad teniendo en cuenta que en el ranking de certificaciones del SEI (Software Engineering Institute)[5] Argentina se encuentra en el puesto número 12. Por otro lado, es importante mencionar que los organismos dedicados a fijar pautas de calidad a aplicar para el desarrollo de software, también tienen en cuenta las Metodologías Ágiles. La nueva versión de CMMI 1.3(Capability Madurity Model Integration), propuesta por el Software Engineering Institute, contempla mejoras para las organizaciones que trabajen bajo ambientes ágiles, a fin de asegurar una correcta interpretación de sus prácticas [10]. El Project Management Institute (PMI) incluye entre sus comunidades a la comunidad de Prácticas Ágiles con el objetivo de difundir y compartir conocimiento entre seguidores del PMI y de las metodologías ágiles. 2.1 Elaboración del estudio de indagación acerca de la implementación de metodologías ágiles Considerando que en Argentina existen empresas con importante trayectoria y profesionales con gran experiencia, los autores creen que estarían dadas las condiciones para el incremento de la utilización de metodologías ágiles. Por tal motivo se consideró realizar un estudio para indagar a través de consultas (relevamiento) acerca del grado de implementación de las metodologías ágiles y su problemática en el mercado de desarrollo de software en Argentina. Este relevamiento no fue realizado con fines estadísticos, sino como una fuente de obtención de información. Para la materialización de este relevamiento se elaboró una lista de cuestiones destinadas a adquirir datos sobre la implementación de métodos ágiles en la ingeniería del software. Considerando el objetivo mencionado anteriormente, se optó por realizar preguntas abiertas, ya que las mismas permiten a los consultados explayarse en las respuestas.
  • 3. Dicho relevamiento se enfocó desde tres perspectivas: a) empresas de desarrollo de software, b) especialistas en calidad de software, c) empresas que tercerizan el desarrollo de software. Teniendo en cuenta los criterios básicos propuestos por Alistair Cockburn en los Métodos Crystal [13] para la definición de la metodología a utilizar y los principios del Manifiesto Ágil [3], entre las cuestiones incluidas en el relevamiento se destacan:  tiempo de experiencia en el uso de métodos ágiles,  tiempo de duración promedio de los proyectos, prácticas utilizadas, y  compromiso de los clientes, certificaciones de calidad y casos de éxito. Las empresas consultadas para deliberar en estas cuestiones fueron seleccionadas armando un conjunto heterogéneo que abarca la diversidad del mercado de desarrollo de software. Este conjunto está formado por micro empresas, software factories nacionales y empresas multinacionales con centros de desarrollo o filiales instaladas en Argentina trabajando para mercados tales como América del Sur y del Norte, Comunidad Europea y China, con 3 hasta 30 años de presencia en el mercado internacional, y con rubros variados (telefonía, sistemas bancarios o comerciales, empresas de servicios IT, entre otras). Además, se consultaron profesionales asesores en normas y/o modelos de calidad para empresas de desarrollo de software. Por un acuerdo de confidencialidad, no se revelan identidades de las empresas o profesionales consultados. Luego, a partir de las respuestas obtenidas, se realizaron nuevas consultas particulares con el objeto profundizar en algunas de las cuestiones planteadas. 2.2 Resultados del estudio A continuación se presenta el resultado del relevamiento realizado como parte de este trabajo. Uno de los primeros datos que surge de los resultados obtenidos es que la totalidad de los consultados conocen estas metodologías. Si bien no todos las aplican aún, ninguno de los consultados mostró oposición o resistencia en la utilización de métodos ágiles en sus procesos. Esta característica fue detectada tanto en empresas de desarrollo como en empresas que tercerizan el desarrollo de sus aplicaciones. Además, no se observa en ninguno de los consultados resistencia al uso de estas metodologías, aún en aquellos que todavía no las han utilizado. De los consultados que utilizan estas metodologías, el 85% refiere haber usado Scrum, aunque no en forma completa sino adaptando las técnicas que consideran más apropiadas a las necesidades del proyecto de referencia, a la certificación de calidad de la empresa y a las idiosincrasias respectivas de los grupos involucrados. El 50% de los proyectos a los que hacen referencia han tenido una duración de entre 4 y 12 meses, y un 20% a proyectos que tienen una duración de entre 1 y 2 años. Algunas otras prácticas ágiles utilizadas son XP y Test Driven Development[15]. En cuanto al involucramiento del cliente en el proceso de desarrollo; todos los consultados que han utilizado Scrum, coinciden en que es la práctica más difícil de conseguir. El 16,5% de las empresas lo lograron, el 67% de los consultados responde
  • 4. haber logrado el compromiso en algunos casos o en forma parcial, mientras que el 16,5% restante lo tienen entre sus objetivos pendientes. Otro dato de consideración se refiere a las certificaciones de calidad, encontrando que el 71% de los consultados refieren estar certificado en ISO 9001, mientras que el 29% no cuentan con certificación alguna. Dentro de las empresas certificadas en ISO una también lo está en CMMI ML3 y otra en CMMI ML5. No hay demasiadas coincidencias en cuanto a los resultados obtenidos con la aplicación de métodos ágiles. Considerando el tiempo de desarrollo, algunos opinan que fue óptimo mientras que otros no encuentran mejoría en este aspecto respecto del uso de metodologías tradicionales. Muchos coinciden que las prácticas de gestión de proyectos de Scrum ayudan a que esta variable esté bajo control. Una importante apreciación en la cual coincidieron los consultados se refiere a una drástica diminución del esfuerzo de mantenimiento, sobre todo en el tiempo más cercano a la implantación. Según el criterio y experiencia de los autores esto se debería al fuerte involucramiento del usuario de la aplicación en el proceso de construcción de la misma. El mismo conlleva a la adaptación progresiva de la aplicación a las expectativas del usuario a lo largo del desarrollo. De la misma manera se realizan los cambios o correcciones necesarios en el mismo periodo de desarrollo en lugar de hacerlo en modo post-implantación. En cuanto a la calidad del producto, el 50% de los consultados encuentran una mejoría en el aspecto atribuible a las iteraciones, mientras que el otro 50% considera los productos de calidad aceptable pero sin percibir cambios significativos debidos a la adopción de metodologías ágiles. A partir de los resultados obtenidos en respuesta a los cuestionarios, se hicieron algunas consultas particulares con aquellos profesionales que implementaban metodologías ágiles en grandes empresas. De estas consultas surgen las siguientes problemáticas, Scrum establece que se debe considerar a todos los desarrolladores como "un solo equipo" y que cualquier miembro del equipo pueda realizar cualquier tarea; no obstante, según los datos obtenidos, esto resulta difícil de implementar. Un aspecto clave para llevarlo a cabo es el tipo de proyecto y las características del mismo. Si el proyecto contara con una arquitectura compleja, resultaría difícil que un analista del equipo, con experiencia profesional en metodologías tradicionales, modifique alguna línea de código de otro. En estos casos, lo máximo que podría lograrse es que expertos en diseño y codificación puedan intercambiar algunas de sus tareas. Adicionalmente se observó, que si bien las prácticas ágiles se realizan, el problema radica en cómo se las implementa. Como ejemplos de unas incorrectas implementaciones se pueden nombrar:  las retrospectivas sólo usadas como espacio de formulación de quejas o para hablar únicamente del producto, y no para analizar los resultados y extraer lecciones aprendidas para las próximas iteraciones;  las reuniones diarias no utilizadas para intercambiar información de trabajo, sino para resolver problemas y por lo tanto excediéndose demasiado;  el usuario generando documentación para los desarrolladores como definición de requerimientos, en lugar de participar activamente junto al equipo del proyecto.
  • 5. Otro punto muy importante es que las empresas que implementan las metodologías ágiles deben tener a su personal convencido y dispuesto a convivir con dichas metodologías. Se evidenció casos de empresas en las cuales los responsables de implementar el modelo ágil estaban en contra del mismo. A su vez, si dichas empresas tenían certificados de calidad como CMMI e ISO, al momento de definir como implementar el modelo ágil, simplemente le cambiaban el nombre a sus procesos para que “sonaran a ágil”, implementando de este modo los procesos con la filosofía tradicional pero con otros nombres, y no aprovechando las ventajas que ofrecen Scrum, XP, u otras, más allá de simples pasos para crear software. Estas últimas cuestiones, que plantean dudas respecto de la implementación de un verdadero proceso ágil, corroboran lo expuesto por Pete Mc Breen [16] quien afirma que mucha gente proclama que sus procesos son ágiles, pero sucede que en el día a día de los proyectos nada ha cambiado. Mc Breen expone una lista de diez síntomas que indicarían que un proceso que dice ser ágil en realidad no lo es. Varias de las consideraciones de esa lista se corresponden con los puntos planteados anteriormente. Otro problema que se evidenció entre los consultados, es la dificultad para realizar la estimación de un proyecto en forma anticipada cuando se utiliza una metodología ágil, debido fundamentalmente a los posibles cambios en los requerimientos y sus prioridades a lo largo del proyecto. En algunos casos han optado por utilizar un presupuesto en horas basado en los requerimientos que son identificados en primera instancia, y luego llevar adelante el proyecto hasta que se consuma dicho presupuesto. Los resultados de esta investigación fueron cotejados con los datos obtenidos en un estudio realizado en una tesis de fin de carrera dirigida por los autores [11]. Dicho estudio abordó empresas y profesionales diferentes a los referidos en este trabajo, como también así, el método de selección y contacto. No obstante ello, los resultados obtenidos refuerzan las conclusiones expresadas en este trabajo. 2.3 Problemas en la implementación detectados a partir del estudio Las metodologías ágiles surgen como una necesidad a la hora de satisfacer los cambiantes requerimientos de desarrollo de los sistemas actuales, pero manteniendo la calidad del producto resultante. Por eso han sido adoptadas por distintas organizaciones de desarrollo de software. Sin embargo, persisten algunos problemas que a criterio de los autores dificultan todavía su correcta implementación:  Lograr la participación activa y comprometida del usuario formando parte del equipo de desarrollo durante todo el proyecto.  Falta de definición de pautas suficientes respecto de la ingeniería del producto.  La conformación del equipo del proyecto con recursos que puedan adaptarse a las metodologías ágiles. En cuanto a la participación de los usuarios, el Manifiesto Ágil [3] expresa en su principio IV “La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto”. Esto implica que esta práctica es fundamental y no puede ser omitida. Esta resistencia a la participación del usuario puede ser debida más a
  • 6. cuestiones organizativas y operativas de los clientes, que por falta de reconocimiento de la importancia de las especificaciones de requerimientos. Tampoco se cree que sea una causa para este problema la falta de capacidad para realizar una correcta especificación, ya que los usuarios son cada vez más expertos y formales al expresar sus necesidades. Actualmente, tienen una mayor experiencia en la utilización de herramientas informáticas, por lo cual la tarea de abstracción de sus necesidades en una especificación de requerimientos es realizada prácticamente sin mayores dificultades. Un ejemplo claro de esto, es que en los últimos 2 años los autores han participado en 34 proyectos de desarrollo de software utilizando metodologías tradicionales con 8 clientes diferentes. En el 41% de esos proyectos se han recibido diferentes tipos de artefactos construidos directamente por los usuarios como parte de la definición de sus requerimientos, como pueden ser prototipos de pantallas, planillas de cálculos, diagramas de actividades y/o gráficos. Es importante destacar que en todos los casos fueron entregados por iniciativa propia del usuario al momento de iniciarse el relevamiento y no como una actividad requerida o guiada por el equipo del proyecto. Con respecto a la ausencia de pautas de ingeniería de producto, vale recordar uno de los principios del Manifiesto Ágil [3]: “Desarrollar software que funciona más que conseguir una buena documentación”. Al entender de los autores, habría que diferenciar la construcción de modelos con el mero fin de documentar el producto generado, de la elaboración de modelos como proceso de diseño de soluciones. Es decir, que no documentar no significaría no modelar. En lo que se refiere a la conformación del equipo de trabajo, si bien se requiere que en el mismo se puedan intercambiar tareas, no se descarta la existencia de una diversidad de perfiles dentro de los integrantes, de modo tal que la asignación de tareas en un sprint estaría regida por el conocimiento y experticia de cada uno. Si dicho equipo es capaz de asumir el compromiso de los requisitos en cada iteración y si se trabaja en forma cooperativa, es posible cumplir con los mismos. A tal efecto, Martín Alaimo, referente de la comunidad ágil en Argentina, explica en su artículo “Roles Ágiles” [17] cómo los roles existentes en metodologías tradicionales pueden evolucionar hacia los métodos ágiles para integrarse en un equipo ágil, debiendo aprender y adaptarse a los cambios requeridos para ello. 4. Propuestas de Mejoras en la Aplicación de Metodologías Ágiles Como resultado del relevamiento, se detectó que Scrum es la metodología ágil mayormente utilizada; sus actividades de gestión corresponden a las prácticas recomendadas por CMMI. A partir de dicha consideración, los autores decidieron trabajar en definir una serie de recomendaciones para la implementación de esta metodología agregando ciertas actividades tendientes a la solución de los problemas detectados en dicho relevamiento. En lo que respecta a planificación y seguimiento de proyectos si las actividades definidas por esta metodología son llevadas a cabo de manera correcta, se estarían cumpliendo las prácticas recomendadas para la gestión de proyectos.
  • 7. Como una manera de completar esta metodología los autores recomiendan reforzar las actividades de ingeniería. A continuación se describen las diferentes recomendaciones organizadas según el ciclo de vida y elementos de Scrum. Product backlog. No olvidar definir y priorizar no sólo los requerimientos que tengan que ver con el comportamiento funcional del producto a construir, sino también requerimientos no funcionales, como pueden ser: pautas de desarrollo, restricciones arquitectónicas y de plataforma, seguridad, y otras. Sprint backlog. Cuando se seleccionan los requisitos que serán incluidos en el sprint también se deberán incluir los requerimientos no funcionales que deberán implementarse. Esto es importante ya que la incorporación de un requerimiento no funcional podría implicar actividades adicionales dentro del sprint . Sprint Planning. Durante el sprint planning es conveniente generar un espacio para el análisis de lecciones aprendidas. Es decir, considerar las acciones que hayan sido recomendadas en las retrospectivas de sprints anteriores. En caso de que se trate del primer sprint se podrían incluso considerar lecciones aprendidas de proyectos anteriores en los que hayan participado los integrantes del equipo. Dicha cuestión debería surgir naturalmente en equipos ágiles maduros, es decir con experiencia en este tipo de proyectos. No obstante, se recomienda que el Scrum Master incluya de manera obligatoria esta actividad dentro de la agenda. Considerar, en la planificación, las actividades de modelado a realizar durante el sprint y quienes serían los responsables de su elaboración. Utilizar herramientas para el soporte de la planificación, desarrollo y control de avance de las actividades. Existen múltiples herramientas, incluso algunas de uso libre, que dan soporte a todas las actividades propuestas por estas metodologías. Además proveen mecanismos que facilitan la comunicación entre los integrantes del equipo dejando registro de dichas comunicaciones. Sprint. En lo que respecta a actividades de ingeniería, como se ha dicho anteriormente, construir modelos que faciliten el desarrollo no significa un incumplimiento del manifiesto ágil. Por tal motivo, los autores consideran que si sólo se realizan actividades de codificación sería una mala implementación de la metodología convirtiéndose en un ciclo de vida conocido como “code and fix” [12]. En este sentido, es importante destacar que hay ciertos aspectos de la aplicación que no pueden construirse en forma aislada con una visión independiente por requerimiento. Por lo contario, se necesita una visión global de todo el conjunto de requerimientos a implementarse en el sprint como, por ejemplo, el diseño de la arquitectura y el modelo de datos. En particular en lo que respecta a diseño, en el primer sprint sería conveniente realizar un diagrama de arquitectura y un análisis de alternativas de solución eficientes según los requerimientos no funcionales. Este modelo podría ser revisado en cada sprint en caso de que se considere necesario o que aparecieran nuevos requerimientos que afecten la arquitectura. En cuanto al modelo de datos debería definirse de manera incremental a medida que se definan los diferentes requerimientos en cada sprint. Además se recomienda la elaboración de diagramas de
  • 8. interacción para las funciones más complejas, quedando a criterio de cada integrante del equipo la necesidad de este modelado como forma de simplificación de la codificación. Esto permitirá realizar un diseño previo a la codificación de los requerimientos del sprint y contar con una base para las sucesivas iteraciones. Respecto del seguimiento y control, son suficientes una correcta implementación de los daily meetings, el uso de burndown charts y el boardtask. De todos modos, se recomienda el uso de herramientas ya que las mismas dejarían registro suficiente para las mediciones de desempeño y rendimiento. Sprint Retrospective. Las retrospectivas deberían tener como principal objetivo la obtención de lecciones aprendidas y la definición de acciones correctivas y preventivas para las iteraciones subsiguientes del proyecto. Las recomendaciones antes descriptas están dirigidas a la solución de algunos de los problemas detectados para la implementación de metodologías ágiles, pero no solucionan los problemas relacionados con la gestión de equipos y la falta de formación superior en temas ágiles. Enfocados en esta problemática se presenta, en la siguiente sección, una experiencia en el marco de una materia de la carrera de Ingeniería en Sistemas. 5. Experiencia en la Enseñanza Como se ha expresado en secciones anteriores, la falta de formación de los recursos humanos en este tipo de metodologías es uno de los problemas coyunturales a solucionar para su correcta implementación. En este sentido, los autores consideran necesario que las universidades incluyan en sus planes de estudio formación sobre metodologías ágiles. Esta formación no debería realizarse sólo desde el punto de vista teórico ya que en estas metodologías son claves aspectos que tienen carácter de dinámicos, como son la comunicación, y la capacidad de autogestión del equipo. Por lo tanto, es fundamental realizar experiencias prácticas que les permitan a los alumnos adquirir un cabal conocimiento de las prácticas ágiles. En el marco de la materia Investigación en Ingeniería de Software de 4to año de la carrera Ingeniería en Sistemas (Universidad CAECE), los autores consideraron oportuno que los alumnos no sólo aprendieran los principios de las metodologías ágiles sino que también los ejercitaran. Para ello, propusieron a un grupo de alumnos realizar el desarrollo de un producto que sirviera como herramienta para la gestión de proyectos ágiles. Es decir, se construiría un producto para ágiles, aplicando Scrum como metodología de desarrollo. Debido a que eran cinco alumnos los inscriptos en el curso, se conformó un único equipo de trabajo. Todos los alumnos se encontraban en el tramo final de su carrera, incluso para algunos era la única materia que cursaban durante el cuatrimestre en el cual se realizó la experiencia. Considerando la importancia que tienen para estas metodologías las relaciones humanas y la sinergia y dinámica de los equipos de trabajo, se destaca que estos alumnos ya se conocían en el ámbito universitario pero sólo dos de ellos habían trabajado juntos previamente. Durante las primeras tres semanas profundizaron sus
  • 9. conocimientos teóricos en metodologías ágiles y definieron las herramientas que utilizarían durante el proyecto. Dado que el trabajo se realizaría a lo largo de un cuatrimestre en el marco de una materia de cuatro horas semanales, se acordó con los alumnos una dedicación adicional aunque obviamente menor a lo que sería en un ambiente profesional. El objetivo de la materia no era construir un producto con las mismas características que las que tendrían en nueve semanas de trabajo en un ambiente profesional, sino que los alumnos aprendieran la dinámica de un grupo ágil y fueran capaces de comparar la forma de trabajo de estas metodologías respecto de las tradicionales. Una de las pocas pautas establecidas por los docentes fue la cantidad y duración de los sprints. Se debían realizar tres sprints de tres semanas de duración cada uno. El grupo se asignó los roles y definió quien sería el Scrum Master. Los docentes cumplieron el rol del cliente, fijando requerimientos, prioridades y evaluando el producto. En cada encuentro, el grupo realizaba el daily-meeting correspondiente, en el cual comentaban las tareas realizadas y las próximas a hacer. Para el seguimiento del proyecto utilizaron una planilla de cálculo donde incluían el product backlog, el sprint backlog y las horas estimadas y reales de cada requisito. Al final de cada sprint, el grupo realizaba la correspondiente demostración del producto. En dicha reunión los docentes, en el rol de usuarios, evaluaban la funcionalidad final desarrollada, surgiendo ajustes al producto presentado. A continuación, los alumnos realizaban la retrospectiva, en la cual el Scrum Master tenía un rol preponderante. Si bien el grupo fue capaz de identificar fortalezas y debilidades, los docentes dieron un feedback de cómo habían trabajado de acuerdo a la metodología, para que el grupo pudiera ajustar lo necesario en el siguiente sprint. Luego de la retrospectiva, el grupo estimaba los requerimientos del product backlog para establecer cuáles serían incluidos en el siguiente sprint. Como herramienta para la estimación utilizaron juicio de expertos. Cabe destacar que fueron diferentes los resultados obtenidos en los sprints, y quedó en evidencia la importancia de la experiencia en estas metodologías. Durante este primer sprint se cometieron una serie de errores que, a juzgar por los docentes, fueron producto de la inexperiencia de los alumnos en este tipo de metodologías. Pueden citarse como ejemplos una subestimación de los requisitos a incluir, la minimización de la importancia de la comunicación del equipo durante el sprint más allá de las reuniones de los días de cursada y una pobre retrospectiva realizada en la que jugaron un papel más de observadores que de partícipes. Podría decirse que este sprint fracasó porque al finalizar el mismo, los alumnos no tenían un producto para presentar. Sólo habían construido un prototipo pues estaban implementadas las interfaces de usuario con cierta funcionalidad pero se habían obviado múltiples validaciones que en un producto con un mínimo de robustez y confiabilidad se deberían realizar. Para el segundo sprint (habiendo comprendido los errores cometidos durante el primero) el equipo planificó terminar todos los requisitos tomados durante el primero y agregar un único requisito. Como lecciones aprendidas, realizaron cambios en cuanto a la forma de trabajo y comunicación del equipo, asumiendo uno de los miembros el rol de tester para hacer una integración funcional del producto, reuniéndose por fuera de la materia para trabajar en un mismo lugar físico y
  • 10. utilizando un cuadro de fortalezas e ítems a mejorar para la retrospectiva. Cabe destacar que durante el desarrollo de este sprint los docentes, en el rol de usuario, introdujeron algunos cambios en la definición de los requisitos (aunque no pueden ser considerados cambios de alcance) los cuales fueron tomados con naturalidad e implementados sin mayores problemas durante el sprint. Para el tercer sprint se seleccionaron nuevos requerimientos los cuales hacían que la aplicación terminara siendo una buena herramienta para soporte de gestión de metodologías ágiles pero dejaron afuera ciertos requisitos de reporting ya que el equipo consideró que no podría llegar a completarlos. Cabe destacar que los docentes consideraban que el product backlog definido inicialmente era mayor al que podría ser efectivamente construido durante la cursada de la materia. La dinámica del equipo fue muy buena, trabajando con eficiencia durante todo el desarrollo del sprint. Los requisitos fueron concluidos en tiempo y forma. En resumen, durante el desarrollo del proyecto, los alumnos se encontraron con los siguientes problemas, los cuales fueron solucionados a lo largo de la experiencia:  Falta de experiencia en estas metodologías: Si bien tuvieron un período de entrenamiento teórico y capacitación previo al inicio del proyecto, en los primeros sprints la implementación de la metodología no fue la adecuada y mejoró en las sucesivas iteraciones.  Sinergia del equipo: Los integrantes mejoraron la dinámica de trabajo con el avance del proyecto, pues el conocerse más hizo que la comunicación fuera más fluida y se entendieran con mayor facilidad ante problemas.  Necesidad de trabajar en un mismo lugar físico fuera del horario de cátedra: En el inicio de cada sprint se repartían las tareas y durante la semana estaban en contacto entre ellos o se reunían en sub-grupos. Para poder avanzar y tratar de cumplir los compromisos acordados, comenzaron a reunirse en la última semana del sprint para integrar lo que cada uno había desarrollado, pues para esas tareas necesitaban estar todos en un mismo lugar físico. Como cierre de esta experiencia didáctica, los autores exponen a continuación una propuesta para aplicar en la enseñanza de prácticas ágiles. Antes de comenzar con el ejercicio práctico, es necesario contar con un período de capacitación. Resulta muy útil que los docentes transmitan los conceptos teóricos y luego que los alumnos continúen con el aprendizaje validando en las clases siguientes el avance y los conceptos adquiridos. Para ello, podrían realizarse pequeños talleres de no más de una hora cada uno, para trabajar los principales puntos de estas metodologías, tales como estimación de los requisitos que entrarán en un sprint, cómo realizar un daily meeting, técnicas para llevar adelante las retrospectivas, diferencias entre retrospectiva y demostración. Esto permitirá que los alumnos comiencen el proyecto con conceptos más maduros y el ejercicio les resulte más productivo. Respecto de la cantidad y duración de los sprints; se recomienda que sean tres o más y que cada uno no se extienda más allá de tres semanas. Esto permitirá, (i) a los docentes, validar la aplicación de la metodología y (ii) a los alumnos corregir los errores eventuales y aplicar cambios en las siguientes iteraciones. Con relación a la dedicación semanal mínima de cada alumno, la misma no debería ser inferior a las diez horas, incluidas las de clase. De este modo es posible mostrar avances concretos en la construcción del producto y realizar las reuniones
  • 11. correspondientes. En cuanto a la organización de la ejecución de las tareas, se recomienda que se fijen pautas tales como: días de trabajo pre-establecidos y daily meetings, aun cuando el equipo no se encuentre físicamente en el mismo lugar. En cuanto al producto a construir, se sugiere que su dominio de aplicación sea conocido por los alumnos. Esto facilitará la definición del producto minimizando la intervención de la cátedra dentro del equipo. Teniendo en cuenta los problemas observados y los resultados obtenidos los autores consideran fructuosas las actividades expuestas. Permiten a los alumnos aprender desde la práctica los principios de las metodologías ágiles. Tarea que es imposible hacer con los mismos beneficios sólo desde la teoría. El concepto fundamental se basa en las personas y la dinámica de los equipos de trabajo. Para respetar este concepto la técnica “on the job training” se impone. 6. Conclusiones El uso de las Metodologías Ágiles está en expansión. Esto se debe a las ventajas que presentan estas metodologías para un mundo cambiante y dinámico como el actual. Como resultado del relevamiento realizado, se han detectado ciertos problemas que aún dificultan la correcta implementación de estas metodologías. Sin embargo los mismos pueden ser resueltos con la incorporación de pautas para actividades de ingeniería derivadas de las metodologías tradicionales que permitan acelerar la codificación y sirvan como base para futuras iteraciones. En lo que respecta al equipo de trabajo, existen diversas variables a ser tenidas en cuenta: cultura organizacional, experiencia y experticia de los integrantes del equipo, factores culturales, y formación hacia un determinado paradigma. El desarrollo de habilidades “ágiles” en el ámbito universitario juega un rol importante en la formación de futuros profesionales. En tal sentido, se evidencia que algunos de los problemas referentes a implementaciones incorrectas detectados en el estudio de indagación realizado, aparecieron también en los primeros Sprint de la experiencia didáctica realizada por los autores en la Universidad CAECE. Siendo importante destacar que a medida que los alumnos fueron avanzando en la materia estos problemas fueron corregidos. Esto hace suponer que una correcta formación práctica en este tipo de metodologías, derivarían en una mejora en la implementación de las mismas en el ámbito profesional. Así como los autores han vivido la transición del paradigma estructurado hacia el de objetos, consideran que están dadas las condiciones para un cambio hacia la agilidad, pero aplicando las lecciones aprendidas de los distintos paradigmas. Mientras antes se empiece con este reto, más rápido se verán los resultados. Bibliografía 1. Kent Beck. “Extreme Programming Explained: Embrace Change”. Reading, Addison Wesley, 1999.
  • 12. 2. Laurie Williams, Robert R. Kessler, Ward Cunningham, Ron Jeffries, “Strengthening the Case for Pair Programming,” IEEE Software, 2000. 3. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, y otros. “Ágile Manifesto”. 2001.http://ágilemanifesto.org/ 4. Ken Schwaber, Mike Beedle, “Ágile Software Development with Scrum”, Prentice Hall, 2001. 5. Actualmente en: http://www.sei.cmu.edu/cmmi/casestudies/profiles/pdfs/upload/2010MarCMMI.pdf 6. M. B. Chrissis, Konrad, and Shrum, “CMMI, Guía para la integración de procesos y la mejora de productos”, Pearson Educación, 2009 7. Hillel Glazer, Jeff Dalton, David Anderson, Mike Konrad, Sandy Shrum, “CMMI® or Ágile: Why Not Embrace Both!”, TECHNICAL NOTE CMU/SEI-2008-TN-003 8. Henrik Kniberg, “Scrum y XP desde las trincheras”, C4Media Inc, 2007 9. Jeff Sutherland, Carsten R. Jakobsen, Kent Johnson, “Scrum and CMMI Level 5: The Magic Potion for Code Warriors”, Ágile2007 Conference 10. Mike Phillips , Sandy Shrum, “Process Improvement for All: What to Expect from CMMI Version 1.3”, Software Engineering Institute,2010. 11. Andrea N. Alende, “La utilización de las Metodologías Ágiles en las empresas de desarrollo de software de Argentina”, Universidad CAECE Sede Mar del Plata, 2010. 12. Tom de Marco, “Software Engineering An idea whose time has come and gone”, IEEE Software, July August 2009 13. Actualmente en: http://alistair.cockburn.us/Methodology+per+project 14. Actualmente en: http://www.pmi.org/GetInvolved/Pages/Communities-of-Practice- Ágile.aspx 15. Kent Beck, “Test Driven Development By Example”. Addison Wesley, 2003 16. Actualmente en http://www.informit.com/articles/article.aspx?p=25913&seqNum=3 17. Actualmente en http://www.martinalaimo.com/es/2010/02/roles-ágiles/ 18. Actualmente en: http://www.mincyt.gov.ar/indicadores/banco_indicadores/publicaciones/bet_TIC_final.pdf 19. Mike Cohn, „Succeding with Ágile: Software Development Using Scrum‟, Addison- Wesley, 2010 20. Actualmente en:http://alistair.cockburn.us/Ágile+contracts