Universidad Nacional del Centro de la Provincia de Buenos Aires Facultad de Ciencias exactas TRABAJO FINAL DE LA CARRERA DE INGENIERÌA DE SISTEMAS Un enfoque basado en Planning para la Gestión de Proyectos en Scrum Alejo Scornaienqui José Ignacio Durand Director: Dr. Luis Berdún Co Director: Dr. Álvaro Soria Tandil, Año 2016 Dedicatoria A nuestros padres, novias, familiares y amigos. Agradecimientos A los Dres. Álvaro Soria y Luis Berdún, por sus correcciones, sugerencias y dedicación. A aquellos que colaboraron con ideas. ¡Muchas gracias! 1 Índice general Introducción .............................................................................................................................. 4 1.1. Motivación ................................................................................................................. 4 1.2. Propuesta .................................................................................................................. 5 1.3. Organización del trabajo............................................................................................ 7 Marco teórico ............................................................................................................................ 9 2.1. Conocimiento en la organización .................................................................................. 9 2.1.1. Gestión del conocimiento (Knowledge Management) .......................................... 10 2.1.2. Amnesia Organizacional ....................................................................................... 12 2.1.3. Memoria Organizacional ....................................................................................... 13 2.2. Administración de proyectos ....................................................................................... 16 2.2.1. ¿Qué es un proyecto? .......................................................................................... 16 2.2.2. Organización basada en proyectos ...................................................................... 17 2.2.3. Gestión de proyectos ............................................................................................ 19 2.2.4. Planeamiento de proyectos .................................................................................. 20 2.3. Métodos Ágiles ............................................................................................................ 22 2.3.1. Manifiesto de Desarrollo Ágil de Software ............................................................ 22 2.3.2. Scrum .................................................................................................................... 25 2.4. Beneficios del uso de las metodologías ágiles............................................................ 27 Propuesta ............................................................................................................................... 29 3.1 Una herramienta para la administración inteligente de proyectos. .............................. 29 2 3.2. Ejemplo conductor ....................................................................................................... 33 3.2.1. Perfiles de usuario ................................................................................................ 33 3.2.2. Etapa 1 - Definición del proyecto .......................................................................... 34 3.2.3. Etapa 2 - Planificación de un sprint ...................................................................... 39 3.2.4. Etapa 3 - Sprint Retrospective .............................................................................. 41 3.2.5. Conclusión ............................................................................................................ 43 Diseño e implementación ....................................................................................................... 44 4.2.1. Definición del Proyecto ......................................................................................... 51 4.2.2. Planificación del Sprint .......................................................................................... 53 4.2.3. Sprint Retrospective .............................................................................................. 55 Resultados Experimentales ................................................................................................... 61 5.1. Criterio de calificación del algoritmo y generación del conocimiento. ......................... 62 5.2. Casos de estudio ......................................................................................................... 64 5.2.1. Caso de estudio 1: Metodología “cascada” vs. Metodología ágil “scrum” ............ 64 5.2.2. Caso de estudio 2: Capacidad de aprendizaje ..................................................... 71 5.2.3. Caso de estudio 3: Capacidad de recuperación ................................................... 76 Conclusiones .......................................................................................................................... 81 6.1. Contribuciones ............................................................................................................. 81 6.2. Limitaciones y trabajos futuros .................................................................................... 83 ANEXO I ................................................................................................................................. 84 Bibliografía ............................................................................................................................. 87 3 Capítulo 1 Introducción 1.1. Motivación Las Metodologías Ágiles se han instalado exitosamente en los últimos años en el ámbito de desarrollo de proyectos de software. Esta perspectiva está mostrando su efectividad en proyectos con requisitos muy cambiantes y cuando se exige reducir drásticamente los tiempos de desarrollo, sin perder de vista una alta calidad [Nasir2006]. El uso de estas metodologías beneficia la cooperación y el aprendizaje mutuo. Consideran la comunicación interpersonal como un pilar, lo que se refleja como "Individuos e interacciones sobre procesos y herramientas" en el manifiesto ágil. Las empresas que utilizan el diseño ágil en sus prácticas de trabajo, realizan reuniones de grupo para tener un constante intercambio de información entre los desarrolladores. Estas prácticas ayudan a la transferencia de conocimiento. Debido a que estos métodos ágiles se ejecutan para un único proyecto, muchas veces se desaprovecha todo el conocimiento aprendido en los proyectos anteriores. En este sentido, uno de los puntos clave es el conocimiento y la experiencia que el administrador del proyecto va adquiriendo a medida que se suceden los proyectos, lo cual pasa a ser de mucha utilidad al momento de realizar uno nuevo. Normalmente, esta experiencia es sólo adquirida por el administrador y cuando éste deja la organización se la lleva consigo. Esta fuga de conocimiento se conoce como Amnesia Organizacional (AO). Debido a lo mencionado anteriormente, surge la inquietud de cómo lograr la persistencia de dicho conocimiento. En este sentido, la gestión del conocimiento es el proceso que continuamente asegura el desarrollo y la aplicación de todo tipo de conocimientos y recursos pertinentes de una empresa, con objeto de mejorar su capacidad de resolución de problemas y, 4 de esta manera, contribuir a la sostenibilidad de sus ventajas competitivas [Andreu & Sieber 1999]. En el contexto de desarrollo de proyectos de software, los ejecutivos de hoy en día consideran que la solución a la mayoría de estos problemas involucra la obtención de una mejor gestión de los recursos existentes en la organización. Como parte del intento de lograr una solución interna, los ejecutivos están atentos a la forma en que las actividades empresariales se gestionan. En este sentido, la gestión de proyectos es una de las técnicas involucradas [Kerzner, 2009]. A partir de esto surge la idea de incorporar a las herramientas soporte inteligente para asistir en el planeamiento y ejecución de proyectos. La idea detrás de estas aproximaciones es preservar conocimiento sobre las tareas, registrar las razones de decisiones tomadas y recolectar información relevante a los problemas nuevos. 1.2. Propuesta Actualmente, las herramientas de planificación de proyectos tienen éxito en mostrar información básica del plan, pero no ofrecen soporte en cuanto a la captura de conocimiento y la asistencia en dicha planificación. En este contexto, se presenta el desarrollo de una herramienta con la funcionalidad necesaria para la gestión de los proyectos y optimización de los recursos para lograr un desempeño eficiente a lo largo del ciclo de vida del mismo. La Figura 1 muestra un esquema conceptual de la solución propuesta. 5 Figura 1: Esquema conceptual del enfoque El administrador del proyecto interactúa con la herramienta de gestión de proyectos durante la etapa de planeamiento. Esta interacción se llevará a cabo utilizando la herramienta Virtual Scrum [Virtual Scrum 2013], la cual provee un entorno virtual que ofrece a los integrantes de un equipo de trabajo la posibilidad de llevar a cabo una reunión, aun encontrándose en distintas estaciones de trabajo, de modo que compartan ideas y opiniones como si estuvieran ubicados en el mismo lugar físico. La metodología de software soportada por la herramienta de gestión es Scrum. La aplicación posibilita al administrador del proyecto de realizar el planeamiento de diferentes sprints de manera iterativa, seleccionando, en cada iteración, el Sprint Backlog correspondiente. En primera instancia, la aplicación accede a la información contenida en la memoria organizacional, para luego proveer la misma al módulo optimizador, el cual retorna un posible plan de sprint. Para realizar esto, se sigue el enfoque provisto por el Algoritmo de Planning KMUCPop [Berdun 2009], el cual provee un agente inteligente que procesa información histórica sobre recursos, tareas y asignaciones y realiza, en base a ella, cálculos para decidir las mejores asignaciones posibles entre recursos y tareas. 6 Como paso siguiente, se retoma la interacción entre el administrador del proyecto y la aplicación. Esta última muestra el plan de sprint generado por el módulo optimizador. El administrador, puede optar por aceptarlo o no, teniendo la posibilidad de cambiar las restricciones previamente elegidas. En caso de que el plan de sprint sea aceptado, toda la información pertinente se almacena en la memoria organizacional, la cual es retroalimentada a medida que el algoritmo es ejecutado. Como conclusión, observando la figura se pueden identificar dos componentes principales, la herramienta de gestión de proyectos y el módulo optimizador. La solución propuesta integra estos dos componentes. Como resultado de esta integración, el ambiente Virtual Scrum se vea enriquecido por las funcionalidades provistas por el Algoritmo de Planning. Permite al administrador del proyecto realizar planificaciones eficientes y aprovechar al máximo las habilidades de cada recurso, ya que el plan de trabajo resultante reflejará las decisiones tomadas por el administrador en proyectos anteriores. 1.3. Organización del trabajo En esta sección se detalla la estructura general del presente trabajo, brindando una breve descripción de los temas que se abordan en cada capítulo. El capítulo 2, titulado Marco Teórico, presenta los fundamentos teóricos utilizados en esta tesis. Se presentan las principales definiciones y enfoques en el área de la Gestión del Conocimiento y cómo se relacionan con este trabajo. También se distingue a uno de los problemas del área, la Amnesia Organizacional, y cómo este problema afecta a las Organizaciones Basadas en Proyectos. Además, se presentan el marco teórico sobre la Memoria Organizacional y los diferentes modelos de Memoria Organizacional presentados en la literatura y cómo estos modelos contribuyen en el Aprendizaje Organizacional. A su vez se introduce a la Administración de Proyectos, donde se detallan aspectos como la Gestión y el Planeamiento de Proyectos. Por otro lado se presentan las Metodologías Agiles y se hace fuerte hincapié en la utilización de la Metodología Scrum, y se detallan las 7 ventajas de utilizar este tipo de metodologías por sobre el uso de las metodologías tradicionales. El capítulo 3 introduce la propuesta de este trabajo. En este se expone la solución planteada mediante la combinación de una Memoria Organizacional y un algoritmo que automatiza la planificación de un proyecto, utilizando una herramienta de administración de proyectos, Virtual Scrum, que sigue la metodología ágil Scrum y que fue desarrollada por los alumnos de la Facultad de Ciencias Exactas. El capítulo 4 expone las adaptaciones que se realizaron a los enfoques previamente mencionados y cómo se realizó la integración de los mismos sobre una herramienta de administración de proyectos real mostrando los aspectos referidos a la implementación. A su vez se presenta una demostración de la utilización de la herramienta ejemplificando cada uno de los aspectos de implementación descriptos en el capítulo. El capítulo 5 presenta las evaluaciones experimentales que se le realizaron a la herramienta, dejando claro a través de análisis y comparaciones los beneficios de su utilización. El capítulo 6 presenta las conclusiones obtenidas a partir de la incorporación de la nueva funcionalidad de planificación de proyectos a la herramienta Virtual Scrum y las ventajas que esto implica. También se presentan cuáles serán los trabajos futuros que podrían desarrollarse a partir de este. 8 Capítulo 2 Marco teórico En el siguiente capítulo se introducen los principales conceptos abordados por el trabajo. Teniendo esto en cuenta, el capítulo describe estado del arte de la Gestión del Conocimiento y su importancia para las organizaciones, como así también las problemáticas surgidas a partir de las fallas en los mecanismos de su captura. A su vez nos referiremos a la administración de proyectos, centrándonos fundamentalmente en las Organizaciones Basada en Proyectos, para las cuales está diseñada la herramienta propuesta. Este capítulo está organizado de la siguiente manera: la sección 2.1 introduce los conceptos fundamentales en lo referido al conocimiento, donde se destacaran aspectos sobre su gestión, los problemas que se afrontan con la pérdida de conocimiento y como el modelo de Memoria Organizacional contribuye en el aprendizaje organizacional; la sección 2.2 presenta los conceptos de gestión, administración y planificación de proyectos; la sección 2.3 describe las características de las Metodologías Agiles en general, para luego enfocarse en Scrum. Por último en la sección 2.4 se presentan las ventajas de utilizar las metodologías ágiles por sobre los modelos tradicionales. 2.1. Conocimiento en la organización En general el conocimiento siempre ha sido importante para las personas y en especial para las organizaciones en donde la especialización se está volviendo más importante cada día. El conocimiento organizacional no es fácil de administrar (Stein y Zwass, 1995). El mismo tiene muchas propiedades, y debido a que la mayoría de éstas están embebidas en la cabeza de la gente, lo hacen diferente de cualquier activo de la organización. En un plano organizacional, el 9 conocimiento se encuentra tanto dentro de documentos o almacenes de datos, como así también en rutinas organizativas, procesos, prácticas, y normas. Específicamente, (Drucker, 1993) propone que el conocimiento debe ser considerado como medio necesario para la producción en las organizaciones. Además, (Bock, Zmud, Kim y Lee, 2005) proponen que el conocimiento constituye el fundamento de la ventaja competitiva de las empresas y es el componente clave de valor de las mismas. A medidas que las organizaciones van abandonando el modelo de organizaciones basadas en recursos para transformarse en organizaciones basadas en conocimiento (Spender a, 1996) (Spender y Grant, 1996) (Tsoukas, 1996), el conocimiento como recurso “intangible” pasa a tomar mayor importancia dentro de la organización. Esta premisa que el “conocimiento es poder” (Drucker, 1993), proviene del simple hecho de que la acción se considera una consecuencia del conocimiento. Por lo tanto es el conocimiento lo que posibilita la acción de los individuos dentro de la organización. Siguiendo esta línea de razonamiento, se considera que todas las acciones que realiza un usuario o empleado en la organización poseen razones subyacentes, las cuales están usualmente basadas en un proceso de razonamiento basado en el conocimiento (Moore, 1985). Por otro lado, (Alavi y Leidner, 2001) destacan que los conceptos de captura y comunicación del conocimiento organizacional no son conceptos nuevos por sí mismos, y han sido llevados a cabo a través de la capacitación del personal, programas de desarrollo del personal y acceso a la documentación de la organización, como manuales y reportes. 2.1.1. Gestión del conocimiento (Knowledge Management) Actualmente, el conocimiento es generalmente percibido como un recurso estratégico clave que poseen las organizaciones, y la gestión del conocimiento se considera crítica para el éxito organizacional (Ipe, 2003). 10 La premisa básica que toma la Gestión del Conocimiento es que las organizaciones (y sobre todo las organizaciones que basan su ventaja competitiva en el conocimiento de sus integrantes) que administren mejor su conocimiento, serán capaces de hacer frente, de manera más exitosa, a los cambios de los nuevos entornos de negocios. Para (Awad y Ghaziri, 2004) la Gestión del Conocimiento es un modelo de negocios nuevo y emergente que tiene al conocimiento como foco de marco de trabajo organizacional. Claramente esta definición ve a la GC como una “nueva” forma de hacer negocios, en donde el nuevo factor de competencia es el conocimiento organizacional. Otra definición toma a la Gestión del Conocimiento como “la captura, organización y almacenamiento del conocimiento y experiencias de trabajadores individuales dentro de la organización, y el proceso de hacer disponible esta información para otros en la organización” (Rosenberg, 2002). Otra definición parecida en cuanto al fin de GC es la de (Alavi y Leidner, 2001) en la que “La Gestión del Conocimiento es un proceso especificado sistemática y organizacionalmente para adquirir, organizar y comunicar el conocimiento de los empleados, para que otros empleados puedan hacer uso de él para ser más eficientes y productivos en sus trabajos”. Bellinger (Bellinger, 2002) se refiere a la GC como “la captura, retención, reutilización de las bases para impartir entendimiento a cómo las piezas encajan y cómo se transportan significativamente a alguna otra persona”. Esta interpretación de la Gestión del Conocimiento da mucha importancia al aspecto tácito del conocimiento y de su transferencia y posterior interpretación. En resumen, la gestión del conocimiento se ha convertido en esencial para la ventaja competitiva organizacional. En consecuencia, la capacidad de las organizaciones para almacenar, transferir y expandir el conocimiento en las organizaciones afectará significativamente la creación de conocimiento y la ventaja competitiva de la organización. Sin embargo, el rendimiento y el crecimiento del conocimiento requieren de la integración y el intercambio del mismo. Esto depende de mecanismos de gestión del conocimiento que mejora la calidad de las decisiones. 11 Numerosas organizaciones han dedicado cada vez más atención a la forma en que la gestión del conocimiento puede permitir incrementar su rentabilidad y velocidad de crecimiento de los beneficios. Esto lleva al estudio de en un área particular de la gestión del conocimiento, la memoria organizacional. 2.1.2. Amnesia Organizacional La capacidad de las organizaciones para aprender y explotar el conocimiento en virtud de obtener una ventaja competitiva es un factor crítico de éxito en la economía del conocimiento (K-economía) (Lietaer, 2002). Sin embargo, a pesar de la importancia que se le da al conocimiento, las organizaciones son muy vulnerables a los malos resultados debido a la amnesia organizacional (Conklin, 2001). Esta es uno de los problemas que intenta solucionar la Gestión del Conocimiento, para lo cual la Memoria Organizacional juega un papel muy importante. La Amnesia Organizacional (AO) se produce cuando alguna persona, que posee algún conocimiento específico y único dentro de la organización, abandona la misma (Kransdorff, 1998) (Kransdorff, A, 2006). Esa persona se lleva consigo el conocimiento tácito que posee, y que posiblemente lo adquirió durante su transcurso por la organización, y no deja ningún documento o artefacto que sirva de reemplazo a su experiencia, dejando así a la organización con un faltante de conocimiento en el área de experiencia de esta persona. Este problema no sólo se presenta ante la pérdida de una persona, también se produce cuando los procesos de captura y retención de conocimientos de la organización fallan (Kransdorff, 1998), lo cual presenta otro desafío a la gestión del conocimiento organizacional, desarrollar mejores métodos y técnicas de captura, codificación y retención de conocimiento. La Amnesia Organizacional también está ligada al concepto de aprendizaje organizacional, ya que las organizaciones pueden adaptarse a los cambios del entorno en el cual se encuentren inmersas al mismo ritmo que puedan aprender. Por lo cual algunos autores (Azuan, 2002) identifican a la Amnesia Organizacional como una de las barreras que se presentan al Aprendizaje Organizacional. En este sentido la Amnesia Organizacional es una frase utilizada 12 para describir una situación en la cual el negocio, y otros tipos de organizaciones cooperativas, pierden la memoria de cómo realizar las cosas (Azuan, 2002). La literatura de gestión del conocimiento sostiene que el aprendizaje individual no es suficiente para generar conocimiento útil para la empresa. Las lecciones aprendidas en última instancia, deben ser difundidas dentro de la organización con el fin de facilitar la adaptación de la misma (Pedler, 1989), (Redding, 1997), (Hong, 1999), (Farr, 2000). 2.1.3. Memoria Organizacional El conocimiento explícito posee características deseables para su administración y es por esta razón que se busca codificar el conocimiento tácito en repositorios, como una Memoria Organizacional (MO), para la posterior adaptación y reutilización (Goodman y Darr, 1998). Dentro de las ventajas que se le reconocen a la MO en la literatura se puede citar por ejemplo que la MO puede ser utilizada como fuente de ventaja competitiva (Wexler, 2001), (Wexler, M, 2002); (Croasdell, 2001) puede reducir costos en las transacciones de la organización (Croasdell, 2001), permite a las organizaciones beneficiarse de su historial de información y del aprendizaje independientemente de los naturaleza transitoria de sus miembros (Bretón, 2001). La Memoria Organizacional (Hedberg, 1981) o Memoria Corporativa (Euzenat, 1966) , dependiendo del contexto, son modelos que típicamente se concentran en el tipo de información o conocimiento a ser administrado, y en los procesos para la captura, retención, posterior acceso y uso de tales conocimientos. En este sentido la MO, haciendo un paralelismo con la memoria de las personas, se centra en determinar cuáles son los tipos de información que son relevantes a la organización. También involucra a los procesos de captura de estas informaciones o conocimiento, los medios necesarios para su efectiva retención, y los mecanismos que aseguren su recuperación para poder hacer uso en situaciones futuras. Por lo tanto, la memoria organizacional no es sólo un mecanismo para acumular y preservar conocimiento, sino que también para su intercambio. A medida que el conocimiento se hace explícito y es administrado, aumenta la inteligencia organizacional, llegando a ser una base 13 para la comunicación y el aprendizaje. Este puede ser compartido entre los individuos que trabajan solos, equipos que necesitan una memoria del proyecto, y por la organización en su conjunto para la coordinación y la comunicación entre los equipos. Además, la Memoria Organizacional establece las estructuras cognitivas del procesamiento de la información y la teoría de acción de toda la organización (Hedberg, 1981) . En esta definición se presenta a la MO no sólo como un repositorio de experiencias organizacionales sino también determina las formas en las que se debe organizar la información, para poder entenderla y recordarla de forma efectiva. También ayuda en el proceso de toma de decisiones al proveer un marco de trabajo en el cual se determinarán los cursos de acción (Jackson y Klobas, 2008). En su utilización de los procesos de Gestión del Conocimiento, la Memoria Organizacional ha tenido significativos aportes en esta área. La Memoria Organizacional ha sido propuesta como un medio para dar soporte a la retención de conocimiento y la promoción del proceso de gestión de conocimiento efectivo (Bannon, y Kuutti, 1996). Según (Stein y Zwass, 1995), la Memoria Organizacional es un medio efectivo por el cual el conocimiento obtenido en el pasado puede ser aplicado en las actividades actuales. En este sentido, la Memoria Organizacional tiene como finalidad reutilizar las experiencias que ocurrieron en la organización (Ackerman y Hadverson, 2000). Desde estas perspectivas la MO es considerada tanto un repositorio de experiencias organizacionales en el cual se almacena el conocimiento de los individuos de la organización, y que tiene como finalidad la utilización de este conocimiento en situaciones futuras, como un medio para gestionar el conocimiento organizacional, estableciendo los medios y condiciones necesarias para adquirir, retener, recuperar y proteger el conocimiento de la organización. Por otro lado, otros autores sostienen que la Memoria Organizacional es tanto una construcción individual como organizacional (Walsh y Ungson, 1991). En este enfoque de Memoria Organizacional, los principales aspectos son la Adquisición, Retención y Recuperación de los artefactos que formarán parte de la Memoria Organizacional. (Walsh y Ungson, 1991) hacen una importante distinción entre los contenidos de la Memoria 14 Organizacional, es decir lo que es recordado, y como es recordado. La parte de la Memoria Organizacional que determina cómo los contenidos son recordados puede incluir a los individuos, la cultura organizacional, los mecanismos de transformación organizacionales, la estructura organizacional, los factores ecológicos organizacionales y demás fuentes externas (Walsh y Ungson, 1991). Además estos autores proponen que la organización puede existir independientemente de individuos particulares ya que es la interpretación compartida de la información la que asegura la preservación del conocimiento organizacional, dando lugar a la aparición del sistema de interpretación organizacional; el cual en cierta forma transciende el nivel individual. Otro enfoque de Memoria Organizacional es el presentado por (Guerrero y Pino, 2001), en el cual se la considera como la agregación de memoria de todos los empleados de la organización. En este enfoque es necesario prestarle especial importancia a la transferencia de conocimiento tácito entre los miembros de la organización, ya que todo el potencial de activos intangibles reside en las personas y la única memoria existente es la memoria “colectiva” de la organización. Si bien esta visión de la Memoria Organizacional toma a las personas como fuentes de ventaja competitiva, deja a la organización en una posición en la cual se le dificulta la protección y reutilización es estos activos estratégicos (Teece, 2000). El concepto de MO ha evolucionado con el tiempo. Los primeros modelos consideraban a la MO como un conjunto de documentos y piezas de información provenientes desde el historial de la organización los cuales residían en un espacio de almacenamiento común y que podían ser utilizados en decisiones presentes (Stein y Zwass, 1995); (Lehner, 1998). Un segundo modelo extiende el modelo previo incorporando procesos de generación de información como parte de la MO, ya que estos proveen el contexto dentro del cual la información es generada (Lehner y Maier, 2000); (Guerrero y Pino, 2001). Por lo tanto, las experiencias, las conversaciones, las decisiones, etc. son el soporte de los artefactos de información que forman parte de la MO. Cualquiera sea el concepto de Memoria Organizacional que se adopte, es importante contar con un Sistemas de Memoria Organizacional que nos provea los servicios necesarios para su utilización. Estos sistemas proveen servicios que posibilitan a la organización localizar expertos dentro de la misma (Maybury, 2001); (Yimam-Seid y Kobs, 15 2003); registrar, recuperar y promover problemas con sus soluciones (también llamadas “lecciones aprendidas”) (Weber, 2001); (Ackerman y Hadverson, 2000); buscar y extraer conocimiento desde diferentes fuentes de conocimiento explícito dentro de la organización (Anand, 1998). En resumen, la MO describe el conocimiento almacenado que se puede utilizar para la toma de decisiones presentes (Walsh y Ungson, 1991) y es una herramienta de gestión del conocimiento que debe apoyar el aprendizaje organizacional (van Heijst, G., van der Spek, R. & Kruizinga, 1997). Es un poderoso mecanismo para la gestión y creación de conocimiento en la era de la tecnología de la información (Cross, R., & L. Baird, 2000) (van Heijst, G., van der Spek, R. & Kruizinga, 1997), (Walsh y Ungson, 1991). Cuando se utiliza con eficacia, la memoria organizacional ayuda a las empresas a evitar los errores pasados, asegurar el uso continuo de las mejores prácticas, y aprovechar la sabiduría colectiva de los empleados pasados y presentes. 2.2. Administración de proyectos La administración de proyectos es el proceso de combinar sistemas, técnicas y personas para completar un proyecto dentro de las metas establecidas de tiempo, presupuesto y calidad.” (Baker, 1999). La administración del proyecto es un tópico fundamental en el desarrollo del mismo. 2.2.1. ¿Qué es un proyecto? Según el Project Management Institute un proyecto es un esfuerzo temporal emprendido para crear un producto, servicio o resultado. La naturaleza temporal de los proyectos indica un principio y un fin. El fin se alcanza cuando los objetivos del proyecto se han completado o cuando el proyecto es cancelado, ya que sus objetivos no pueden ser cumplidos, o cuando la necesidad del mismo ya no existe. En (Wysocki, 2003) se realiza una definición de proyecto más detallada y puntual: se lo define como una secuencia de actividades únicas, complejas y conectadas que tienen un 16 objetivo o propósito, y deben ser completadas en un tiempo específico, dentro de un presupuesto y de acuerdo a una especificación. Como podemos apreciar en ambas definiciones se habla de objetivos a realizar, tareas involucradas y un intervalo de tiempo. En este contexto se puede afirmar que un trabajo repetitivo no es un proyecto, sino que es realizar una tarea simple una y otra vez, de aquí la distinción que las actividades deben ser “únicas”. Como se mencionó, un trabajo repetitivo no es un proyecto, aunque el límite entre ambos puede llegar a ser confuso. Cualquiera sea la definición que se utilice, es posible listar un conjunto de elementos que resumen las características claves que distinguen a un proyecto (Hughes y Cotterell, 1999), (Wysocki, 2003): • Se involucran tareas no rutinarias. • Se requiere planeamiento. • Se deben cumplir objetivos específicos. • El trabajo es llevado a cabo en varias fases; existe un orden. • El trabajo involucra varias especialidades. • Los recursos disponibles para ser usados en el proyecto se encuentran restringidos. 2.2.2. Organización basada en proyectos La estructura de las Organizaciones Basadas en Proyectos (OBP) se ha aplicado en un gran rango de industrias, como la construcción (Gann y Salter, 1998), las Tecnologías de la Información (TI) (Boh, 2007), las comunicaciones (Kodama, M, 1999), las automotrices (Clark y Fujimoto, 1991), los medios de comunicación (Windeler y Sydow, 2001), (DeFillippi y Arthur, 1998), las consultorías y los servicios profesionales (Alvesson, 1995). Esta concepción de organización se ha propuesto como una forma ideal para la gestión de la creciente complejidad de los productos, los mercados en rápida evolución, la innovación, y la incertidumbre tecnológica. OBP se refiere a una variedad de formas de organización que implican la creación de sistemas temporales para el desempeño de las tareas del proyecto (DeFillippi y Arthur, 1998) 17 identifican las empresas basadas en proyectos como organizaciones de producción de único propósito, que contienen todas las funciones de apoyo a la producción dentro de un marco temporal de la organización del proyecto. Las definiciones de las Organizaciones Basadas en Proyectos varían, pero todas coinciden en que los proyectos poseen recursos internos y externos, al igual que funciones individuales como desarrollo, producción y ventas, y las organizaciones ya establecidas están estructuradas para ejecutar su negocio como proyectos individuales (Hobday, 2000). La misión de las organizaciones basadas en proyectos es generar resultados en respuesta a las demandas específicas de los clientes, estructurando proyectos alrededor de un grupo de especialistas, miembros de la organización, y ejecutando proyectos dentro de un tiempo y presupuesto limitado. La empresa u organización entera puede ser pensada como un conglomerado de organizaciones basadas en proyectos en la cual las rutinas son realizadas por las diferentes organizaciones (Kodama, 2006). Administrar o gestionar el conocimiento para mejorar la ventaja competitiva de las organizaciones, y en especial las Organizaciones Basadas en Proyectos, ha recibido una excepcional atención en años recientes (Nonaka y Takeuchi, 1995), (Davenport y Prusa, 1998) (Wiig, 1997) (Blacker, 1995) (Lubit, 2001). Las organizaciones que llevan a cabo sus negocios en base a proyectos están comenzando a incorporar técnicas provenientes del área de la Gestión del Conocimiento para mejorar la comunicación y reutilización de conocimiento entre los miembros de la organización (DeFillippi, 2001) (Prencipe y Tell, 2001). Las Organizaciones Basadas en Proyectos tienen requerimientos laborales diferentes, ya que los requerimientos de los proyectos varían de un proyecto al siguiente en cuanto al personal, los materiales y la información, y estas limitaciones dificultan maximizar el flujo de conocimiento capturado y el aprendizaje de un proyecto al siguiente (DeFillippi y Arthur, 1998) (Turner y Müller, 2003). La incorporación de técnicas de Gestión del Conocimiento para hacer frente a estas dificultades han sido identificadas como una fuente de ventaja competitiva en las Organizaciones Basadas en Proyectos (Bresnen, 2003). 18 2.2.3. Gestión de proyectos La gestión de proyectos es la planificación, organización, dirección y control de los recursos de la empresa para un objetivo relativamente a corto plazo que se ha establecido para completar las metas y objetivos específicos. Esta brinda conocimiento, habilidades, herramientas y técnicas a los administradores para ayudarlos a planear y ejecutar proyectos en tiempo y dentro del presupuesto acordado (PMI, 2004). La administración del proyecto es un tópico fundamental en el desarrollo del mismo. Años atrás se tenían muchos conceptos erróneos sobre la administración de proyectos, por ejemplo, que su aplicación implica mayor cantidad de personas, que incrementa los costos, disminuye la rentabilidad, genera más problemas de los que resuelve, por citar algunos ejemplos. En la actualidad ya no se cometen estos errores conceptuales y se reconocen todas las virtudes que aporta durante la ejecución del proyecto (Kerzner, 2001). Recursos y actividades son los actores clave en cualquier organización para la realización de un proyecto. El propósito de la gestión de proyectos es primero encontrar las actividades necesarias para llevar a cabo el proyecto hasta su fin y en segundo lugar el de asignar recursos a estas actividades de una manera óptima y planificada. Figura 2.A: Secuencia de procesos seguida por la mayoría de los proyectos. Como se muestra en la Figura 2.A, la gestión de proyectos involucra 5 grupos de procesos llamados • Inicio • Planeamiento y Diseño 19 • Ejecución • Monitoreo y control • Finalización El proceso Inicio determina la naturaleza y el alcance del proyecto. En la etapa de planeamiento el proyecto de planea con un nivel de detalle más apropiado. El principal propósito de esta etapa es estimar el tiempo, costo, y recursos adecuadamente para estimar el esfuerzo necesario y poder así calcular los riesgos durante la ejecución. En el proceso de Ejecución es donde se ejecuta el trabajo. Este está estrechamente relacionada con el proceso de Monitoreo y Control, ya que su objetivo es asegurar que el proyecto sea realizado de acuerdo a lo planeado. La etapa de Finalización incluye la aceptación formal del proyecto, como así también la evaluación del mismo. 2.2.4. Planeamiento de proyectos El Planeamiento de Proyectos es una de las principales tareas de la Administración de Proyectos. Los planes de proyectos están compuestos principalmente por dos estructuras llamadas Work Breakdown Structure (WBS) y Network Diagram (ND). WBS es un conjunto de elementos organizados jerárquicamente los cuales son necesarios para realizar la entrega de los bienes o servicios requeridos (Tausworthe, 1980). El WBS define las actividades en un orden de detalle jerárquico, las entradas, las salidas, los cronogramas y las asignaciones de responsabilidades necesarias para poder completar un trabajo. El Network Diagram o Diagrama de Red define las precedencias entre actividades y su duración. Esta estructura le permite a un administrador calcular la duración y costo de un proyecto y por este motivo es tan importante. Las técnicas clásicas de Critical Path Method (CMP) o Método del Camino Crítico y Program Evaluation and Review Technique (PERT) o Técnica de Evaluación y Revisión del Programa, trabajan sobre esta estructura para determinar tanto la secuencia de tereas que afecta a la ejecución del proyecto como el análisis de 20 sensibilidad de las tareas y su impacto en la ejecución del proyecto. CMP es una técnica (o método) determinista utilizada para estimar el tiempo de cada actividad, mientras que PERT permite la incorporación del azar al tiempo de completar una actividad. Aunque CMP tiene la ventaja de ser fácil de entender y utilizar, éste no considera las variaciones de tiempo que pueden tener un gran impacto en el tiempo total de finalización de proyectos complejos, de la forma que lo hace PERT. Generalmente la calidad de los resultados de los proyectos depende, en gran medida, de la calidad del plan de proyectos utilizado (Armstrong, 1982), y esto último es de especial importancia para las Organizaciones Basadas en Proyectos (OBP) ya que los proyectos son una parte importante de sus operaciones diarias. El Project Management Body of Knowledge (PMBoK) promueve fuertemente destacar la importancia del planeamiento de proyectos (PMI, 2004). La actividad de Planeamiento de Proyectos involucra varias actividades basadas en conocimiento que tienen impacto profundo en los resultados del plan. Para ayudar a las personas que realizan planes de proyectos, diferentes herramientas han sido creadas que los asisten o los ayudan a que sus trabajos sean más fáciles o menos propensos a errores. Se ha reconocido que la utilización de este tipo de herramientas en la administración de proyectos tiene un impacto significativo en los resultados de un proyecto sin incrementar la cantidad de recursos necesario para el proyecto (Kerzner, 2001). Si bien la asistencia y el entrenamiento pueden ayudar a los administradores a crear planes de proyectos exitosos, la innovación es una habilidad que los ayuda a resolver nuevos y desafiantes problemas. La innovación es importante en el planeamiento de proyectos porque soluciones efectivas y eficientes deben ser encontradas para nuevos proyectos. Si una organización quiere reutilizar las soluciones que aplica en previos planes de proyectos, necesita incorporar procedimientos y técnicas que le permitan codificar, almacenar, recuperar y adaptar estas soluciones a situaciones futuras. (Basadur y Gelade, 2006) han reconocido la importancia de la gestión del conocimiento en los procesos creativos como el Planeamiento de Proyectos. 21 A la hora de decidir cómo resolver una tarea, los administradores deben tomar decisiones basándose en su conocimiento previo y en la experiencia que acumularon durante sus años como administradores. Estas decisiones están presentes en los planes que generan y el resultado de estos planes parcialmente depende de estas decisiones. Si queremos reutilizar este conocimiento, como parte de nuestra estrategia de gestión del conocimiento, necesitamos describir cuales son las razones o procesos de razonamiento detrás de las decisiones que han aplicado (por ejemplo, cual es el conocimiento tácito que llevó a esas decisiones). Esta estrategia de codificación tenderá a mejorar los mecanismos de intercambio de conocimiento en la organización. Los mecanismos de intercambio de conocimiento (Knowledge Sharing Mechanisms) son los medios por los cuales los individuos de la organización tienen acceso al conocimiento e información de otros proyectos (Boh, 2007). 2.3. Métodos Ágiles Los Métodos Ágiles surgen como una propuesta a los desafíos modernos del desarrollo de software, donde no es posible aplicar los estrictos métodos clásicos basados en el riguroso seguimiento de los procesos. De esto surge una serie de propuestas “livianas” que se resumen como los Métodos Ágiles (MA). 2.3.1. Manifiesto de Desarrollo Ágil de Software El "Movimiento Agile" en la industria del software vio la luz el día en que el Manifiesto de Desarrollo Ágil de Software fue publicado en 2001 (Beck et. al, 2001); (Cockburn, 2002). Según el manifiesto se valora: Al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas. La gente es el principal factor de éxito de un proyecto de software. Es más importante construir un buen equipo que construir el entorno. Muchas veces se comete el error de construir primero el entorno y esperar que el equipo se adapte automáticamente. Es mejor crear el equipo y que éste configure su propio entorno de desarrollo en base a sus necesidades. 22 Desarrollar software que funciona por sobre conseguir una buena documentación. La regla a seguir es no producir documentos a menos que sean necesarios de forma inmediata para tomar una decisión importante. Estos documentos deben ser cortos y centrarse en lo fundamental. La colaboración con el cliente por sobre la negociación de un contrato. Se propone que exista una interacción constante entre el cliente y el equipo de desarrollo. Esta colaboración entre ambos será la que marque la marcha del proyecto y asegure su éxito. Responder a los cambios por sobre seguir estrictamente un plan. La habilidad de responder a los cambios que puedan surgir a los largo del proyecto (cambios en los requisitos, en la tecnología, en el equipo, etc.) determina también el éxito o fracaso del mismo. Por lo tanto, la planificación no debe ser estricta sino flexible y abierta. Los valores anteriores inspiran los doce principios del manifiesto. Son características que diferencian un proceso ágil de uno tradicional. Los doce primeros principios son generales y resumen gran parte del espíritu ágil. El resto tienen que ver con el proceso a seguir y con el equipo de desarrollo, en cuanto a metas a seguir y organización del mismo. Los principios son: • La prioridad es satisfacer al cliente mediante tempranas y continuas entregas de software que le aporten un valor. • Dar la bienvenida a los cambios. Se capturan los cambios para que el cliente tenga una ventaja competitiva. • Entregar frecuentemente software que funcione desde un par de semanas a un par de meses, con el menor intervalo de tiempo posible de entregas. • La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto. • Construir el proyecto en torno a individuos motivados. Darles el entorno y el apoyo que necesitan y confiar en ellos para conseguir finalizar el trabajo. • El diálogo cara a cara es el método más eficiente y efectivo para comunicar información dentro de un equipo de desarrollo. 23 • El software que funciona es la medida principal de progreso. • Los procesos ágiles promueven un desarrollo sostenible. Los promotores, desarrolladores y usuarios deberían ser capaces de mantener una paz constante. • La atención continua a la calidad técnica y al buen diseño mejora la agilidad. • La simplicidad es esencial. • Las mejores arquitecturas, requerimientos y diseños surgen de los equipos organizados por sí mismos. • En intervalos regulares, el equipo reflexiona respecto a cómo llegar a ser más efectivo, y según esto ajusta su comportamiento. El objetivo de la creación de los métodos agiles fue esbozar los valores y principios que deberían permitir a los equipos desarrollar software rápidamente y respondiendo a los cambios que puedan surgir a lo largo del proyecto. Se pretendía ofrecer una alternativa a los procesos de desarrollo de software tradicionales, caracterizados por ser rígidos y dirigidos por la documentación que se genera en cada una de las actividades desarrolladas. Las características de los proyectos para los cuales las metodologías ágiles han sido especialmente pensadas se ajustan a un amplio rango de proyectos industriales de desarrollo de software; aquellos en los cuales los equipos de desarrollo son pequeños, con plazos reducidos, requerimientos volátiles, y basados en nuevas tecnologías. En este contexto, los Métodos Ágiles (MA) dan lugar a la creatividad y a la sensibilidad a los cambios de condiciones. Algunos de estos son más bien una colección de técnicas y actividades más que un proceso totalmente definido con roles, responsabilidades, productos y demás ítems. Los MA toman en cuenta que el desarrollo de software es una actividad humana y por ese motivo, enfatizan al individuo sobre el proceso. 24 El objetivo de los MA es la entrega continua de software funcional y completamente testeado, mediante pequeñas y periódicas entregas (releases). Para lograrlo, estas metodologías ponen el acento en la comunicación, con reuniones diarias cara a cara. Proponen mantener el nivel de desimantación en el mínimo necesario así como también, una cooperación estrecha y continua entre el cliente y el desarrollador, en lugar de simplemente negociar los términos y productos del proyecto. Los MA responden rápidamente a los cambios en el ambiente, teniendo como principio básico que los requerimientos del cliente sobre el proyecto y su entendimiento del mismo cambian casi constantemente. Para adaptarse a estos cambios, los MA proponen iteraciones rápidas y cortas, con planificación continua, en lugar de trabajar con un gran plan al comienzo del proyecto. Su estrategia se basa en el desarrollo evolutivo y un ciclo de vida dirigido por riesgos y el testing, enfatizando en la volatilidad de los requerimientos. De entre todos los métodos de desarrollo ágil, el más reconocido y utilizado es Scrum, aunque también son muy utilizados Extreme Programming (programación extrema) y Lean Programming (programación ligera). 2.3.2. Scrum Esta metodología fue desarrollada por Ken Schwaber, Jeff Sutherland y Mike Beedle (Schwaber, Sutherland & Beedle, 2000). Define un marco para la gestión de proyectos, que se ha utilizado con éxito durante los últimos años. Está especialmente indicada para proyectos con un rápido cambio en los requerimientos. Sus principales características se pueden resumir en dos. En primer lugar, el desarrollo de software se realiza en mediante iteraciones, denominadas Sprints, con una duración de 30 días. El resultado de cada sprint es un incremento ejecutable que se muestra al cliente. La segunda característica importante son las reuniones a lo largo del proyecto, entre ellas se destacan las reuniones diarias de 15 minutos del equipo de desarrollo para coordinación e integración. En la Figura 2.B, se puede observar el ciclo de vida de la metodología de desarrollo de Software Scrum. 25 Figura 2.B: Ciclo de vida de un proceso con la metodología Scrum. Scrum es una metodología de desarrollo muy simple, que requiere trabajo duro, porque la gestión no se basa en el seguimiento de un plan, sino en la adaptación continua a las circunstancias de la evolución del proyecto. El desarrollo se inicia desde la visión general de producto, en la cual se consigue un análisis a alto nivel del alcance general del sistema. Luego, se plantean cuáles son los requerimientos que se solicitaron para el sistema, ordenándose en lista es conocida como el Product Backlog, dando detalle solo a las funcionalidades que, por ser las de mayor prioridad para el negocio, se van a desarrollar en primer lugar, y pueden llevarse a cabo en un periodo de tiempo breve (entre 15 y 60 días). Cada ciclo de desarrollo es conocido como Sprint y la lista de requerimientos que se van a desarrollar durante los mismos es conocida como Sprint Backlog. Cada uno de los Sprints es una iteración que produce un incremento terminado y operativo del producto. Estas iteraciones son la base del desarrollo ágil, y Scrum gestiona su evolución a través de reuniones breves de seguimiento llamadas Daily Meeting en las que todo el equipo revisa el trabajo realizado desde la reunión anterior y el previsto hasta la reunión siguiente. Finalizado el Sprint, el equipo presenta sus resultados a los Stakeholders. Esta presentación es la que permite inspeccionar el desarrollo de la funcionalidad y realizar distintos ajustes en el proyecto. Asimismo, una reunión de revisión, denominada Sprint Review Meeting, es llevada a cabo por el equipo desarrollo ante el Product Owner. En esta reunión se presenta el trabajo realizado 26 y se priorizan los requerimientos para el siguiente Sprint. El Scrum Master en esta reunión se encarga de fortalecer y alentar al equipo a seguir adelante y observar qué elementos del proceso pueden ser mejorados para lograr mayor eficiencia y comodidad en el trabajo diario. 2.4. Beneficios del uso de las metodologías ágiles. Resumiendo lo mencionado en la sección anterior, el uso de las metodologías ágiles proveen ciertas ventajas por sobre los modelos tradicionales, entre las que se pueden mencionar, como más relevantes: Entregas constantes Cuando se lidia con proyectos múltiples y no se aplican metodologías ágil, lo normal es esperar a que se complete un proceso antes de arrancar con el segundo. Para poder lidiar con este tipo de operación de proyectos se estila buscar el cómo finalizar entregas lo más pronto posibles lo cual significa un inmenso riesgo de recorte de funcionalidades o calidad. El desarrollo con metodología ágil refuerza las entregas múltiples lo cual contra el cliente es un indicador operante y de cierto modo representaría un capital en trabajo. Como tal se refuerza más bien la lista de funcionalidades del acuerdo de entrega y en el promedio implica un enfoque en desarrollar la funcionalidad que se considere más vital para el proyecto desde el simple inicio. El desarrollo ágil aumenta la productividad La producción de software que trabaja alrededor de las necesidades de negocio implica ingresar conocimiento multidisciplinario en etapas simultáneas. La metodología ágil sirve para enfocar la atención de los partidos por disciplina en el espacio que se les necesita e inmediatamente liberar el talento para que puedan moverse entre zonas de trabajo. Aplicar un sistema de tarea discretas contra las personas que las ejecutan simplifica la distribución de entrega de información y consecuentemente del mismo sentido de capacidad de 27 control del mismo empleado lo cual resulta en un deseo inherente de procesar las tareas lo más simple y rápidamente posible. Simplifica el manejo de la sobrecarga de procesos Los equipos que trabajan sobre normas y regulaciones han de validar su trabajo constantemente lo cual representa un doble sentido de trabajo. Las metodologías por iteración simplifican el proceso de entrega versus validación lo cual además permite adoptar cambios sobre la marcha del alcance del proyecto. Mejor perfil de productividad Los equipos ágiles son más productivos que aquellos que utilizan métodos tradicionales a lo largo de todo el ciclo de desarrollo. Si no se aplica un sistema ágil se presenta un patrón de desarrollo tipo “palo de hockey” donde la mayoría del trabajo sucede en las primeras etapas y ya que anden los equipos se van haciendo ajustes sobre el trabajo anterior. La realidad es que casi nunca suele suceder que las piezas en equipo terminan trabajando juntos de manera coherente. Los equipos ágiles que mantienen un nivel de revisión por unidades discretas de entrega de trabajo con cada iteración permiten realizar pruebas de rendimiento y sistemas desde el principio. De este modo, defectos críticos como problemas de integración se descubren antes, la calidad general del producto es mayor y el equipo funciona de manera más productiva durante todo el ciclo de desarrollo. Una mejor gestión del riesgo No siempre se logra cumplir con las metas de lanzamiento cuando se trabaja con software, mientras más lejanas sean las entregas contra cliente o equipo más se maximiza el riesgo de potencial desviación de la entrega contra la definición del proyecto inicial. Las metodologías ágil permiten repasar en ciclos continuos progreso in media res de entregables y productos semi-cerrados. Cuando fallan las entregas la metodología ágil permite ajustar el ciclo de trabajo para enfocar el talento en zonas de mayor o menor riesgo a justificación de defender un proyecto en su totalidad. 28 Capítulo 3 Propuesta Las herramientas de gestión de proyectos actuales carecen de funcionalidad que provea a los usuarios, una planificación eficiente para sus proyectos. En este contexto, se presenta la herramienta “Intelligent Virtual Scrum” (IVS). IVS es una herramienta de administración de proyectos, adaptada a la metodología ágil de desarrollo de software Scrum. IVS ofrece asistencia al Scrum Master a lo largo de las distintas etapas del ciclo de vida del proyecto: la definición del proyecto, la planificación de un sprint y la Sprint Retrospective. La figura 3.A muestra un esquema conceptual de IVS. 3.1 Una herramienta para la administración inteligente de proyectos. Figura 3.A: Esquema conceptual de IVS. El primer paso del enfoque consiste en la definición del proyecto. En este punto, el Scrum Master debe proveer a IVS toda la información del proyecto. Esta información consiste de las personas disponibles para el mismo, el Product Backlog , las restricciones y preferencias 29 sobre el proyecto. El primer paso de la definición consiste en la selección de las personas, denominadas recursos, que serán las encargas de llevar a cabo las tareas. Cada recurso posee ciertas habilidades y un nivel de experiencia en cada una de ellas. Una vez decididos los recursos que participarán del proyecto, el siguiente paso es la definición del Product Backlog. El Product Backlog consiste en el conjunto de todas las User Stories del proyecto. Estas User Stories involucran las tareas que deben realizarse, el tiempo estimado de resolución de cada una y el tiempo máximo que puede usar un recurso para la resolución de la misma. Así mismo, para que una tarea pueda ser resuelta, es necesario que los recursos asignados posean ciertos conocimientos puntuales. Estos conocimientos deben ser especificados por el Scrum Master al momento de detallar la tarea. Dado que pueden existir varios recursos que posean los conocimientos requeridos, el Scrum Master puede desear o no que un recurso específico sea el encargado de resolver una determinada tarea. En este contexto, IVS permite al Scrum Master la especificación de restricciones y preferencias. Muchas veces estas especificaciones dependen del conocimiento de la organización, o de lo deseado por el administrador del proyecto en el momento de armar el plan. Por ejemplo, en un proyecto el administrador puede desear que un recurso desarrolle (o no) una determinada tarea. El almacenamiento de la información definida en la etapa de “Definición del proyecto” se llevó a cabo a partir del enfoque planteado en (Villaverde, 2009). Allí se define el modelo de una Memoria Organizacional (MO) basada en Perfiles de Usuario, asociados a cada miembro de la organización que participa en un proyecto. Estos perfiles están compuestos por un conjunto de características propias de cada usuario. Estas características permiten obtener patrones de comportamientos de cada uno durante el ciclo de vida del proyecto. La función principal de la MO consiste en el almacenamiento de los perfiles de usuario junto con toda la información relacionada a los proyectos sobre los que se ha trabajado. Una vez definido el proyecto, el siguiente paso del enfoque consiste en la planificación de un Sprint. Para iniciar esta planificación, el Scrum Master debe seleccionar del Product Backlog un conjunto acotado de User Stories. Este conjunto define el Sprint Backlog. En este 30 punto, IVS obtiene datos históricos desde la MO, provenientes de sprints y/o proyectos anteriores, y los utiliza para ofrecer asistencia al Scrum Master en la asignación de los recursos a las tareas. Estos datos contienen información sobre como fue el desempeño de los recursos en esos proyectos anteriores. Este desempeño es medido por las calificaciones obtenidas en base a los criterios que el administrador consideró relevantes. Estos criterios pueden incluir, por ejemplo, el tiempo que tardó el recurso en realizar la tarea, requerimientos de la misma, habilidades del recurso y su integración con otros recursos. Contando con los datos históricos y las tareas incluidas en el Sprint Backlog, IVS se basa en un Algoritmo de Planning (AP) para realizar la planificación. El algoritmo de planning utilizado en este trabajo es KMUCPop (Berdún, 2009). KMUCPop es un algoritmo que ve a los problemas de planificación de proyectos como problemas de planning con preferencias. Un problema de planning plantea un problema de planificación como un conjunto de estados y acciones. Una solución a un problema de planning dado es una secuencia de acciones, que al ser ejecutadas desde un estado inicial, permiten alcanzar el estado final. El agregado de preferencias y restricciones en el armado de la solución es lo que potencia una solución sobre otra posible. En base a la definición anterior, para resolver el problema de planificación de proyectos, nuestro enfoque transforma la información del proyecto en un conjunto de estados y acciones de planning. El estado inicial está conformado por el Sprint Backlog, recursos a utilizar, preferencias y restricciones definidas por el Scrum Master y los datos históricos obtenidos de la MO. Las User Stories conforman las acciones disponibles para el problema de planning. De esta forma los recursos requeridos por las User Stories conformaran las precondiciones de las acciones del problema de planning, y de manera similar los resultados obtenidos en las postcondiciones. Por último, el estado final que se desea alcanzar, es un estado del proyecto en el cual todas las User Stories definidas hayan sido tratadas. Esto último significa que estas User Stories podrían ser asignadas a recursos o postergadas para futuros sprints, en caso de que no sea posible una asignación. Cuando se solicita la planificación de un sprint, AP intentará alcanzar el estado final encontrando una asignación de recursos para cada User Story. Se puede decir que AP tratará 31 de ejecutar todas las acciones disponibles cumpliendo, para cada una de ellas, con sus precondiciones iniciales. AP tratará de realizar estas asignaciones de manera tal de maximizar la eficiencia de resolución del sprint. Para esto buscará en los datos históricos como ha sido calificada una asignación previa similar a la que se está evaluando. El objetivo es encontrar la asignación más adecuada para una tarea, en función de la conveniencia del sprint. Por lo tanto, debido a que el estado inicial está compuesto por datos históricos y preferencias del usuario, AP obtendrá un plan de trabajo eficiente y que refleja las decisiones tomadas por el administrador y en la organización en sprints y proyectos anteriores. Una vez que AP logra armar una planificación de un Sprint, se muestra al Scrum Master la solución alcanzada. Esta solución mostrará la asignación de recursos sugerida para cada User Story, conformando el Sprint Backlog propuesto. En este punto, el Scrum Master analiza la propuesta y puede tomar diferentes cursos de acción. Puede optar por rechazar la propuesta; modificar el Sprint Backlog original y realizar una nueva planificación; o directamente aceptar la propuesta. En caso de rechazar la propuesta, el Scrum Master puede, o no, realizar una nueva definición del Sprint Backlog, para luego solicitar una nueva planificación. En caso de solicitar una nueva planificación incorporando nuevas restricciones, pero sobre el Sprint Backlog propuesto, se repite el proceso de planificación de manera que el administrador solo lo acepte cuando se encuentra satisfecho con el resultado. Una vez aceptada la sugerencia, el Sprint Backlog Propuesto se encuentra listo en la herramienta y se da inicio la ejecución real del proyecto dentro de la misma. La última etapa de este enfoque, denominada Sprint Retrospective se inicia en el momento de la finalización de la ejecución del proyecto. En esta etapa, el Scrum Master debe realizar la calificación de los recursos. Como se mencionó anteriormente, esta calificación será utilizada en futuras planificaciones por AP, para realizar asignaciones cada vez más eficientes. Junto con las calificaciones, el Scrum Master puede tomar otras decisiones que afecten futuras planificaciones. Por ejemplo, si un recurso tuvo un desempeño destacado, puede optar por incrementar el nivel que posee el mismo en cada una de sus habilidades, actualizando de esta manera la información de la organización. 32 Es importante notar que IVS sigue un proceso iterativo. Durante este proceso se almacena constantemente la información generada producto de la interacción de IVS con el Scrum Master. Esta información surge principalmente del análisis de las preferencias del Scrum Master así como de la evaluación de los desempeños de los recursos. El volumen creciente de información almacenada en la MO permitirá a IVS ofrecer planificaciones cada vez más certeras, convirtiéndose en una herramienta de gestión de proyectos que satisface las necesidades de planificación actual de la organización y del Scrum Master. 3.2. Ejemplo conductor Para facilitar la explicación de cada uno de los pasos del enfoque, en las siguientes secciones utilizaremos un ejemplo conductor, que consiste en planificar un proyecto para el desarrollo de una sala de Virtual Scrum, perteneciente a la Universidad 3D. Este ejemplo servirá para mostrar como interactúa un Scrum Master con IVS durante las diferentes etapas del planeamiento. 3.2.1. Perfiles de usuario Como se mencionó al comienzo de este capítulo, el almacenamiento de la información del proyecto se basa en el enfoque planteado en (Villaverde, 2009). Este enfoque tiene como objetivo codificar almacenar en la MO Perfiles de Usuarios. Estos perfiles son construidos a partir de la información que se recolecta producto de la interacción del Scrum Master con la herramienta durante las distintas etapas del ciclo de vida del proyecto. En cada etapa, la interacción se produce de diferentes maneras, realizando diferentes acciones. La tabla 3.1 muestra las diferentes acciones que puede realizar el usuario en cada etapa. ETAPA ACCIONES Definición de Product Backlog Definición del proyecto Definición de recursos Definición de roles Definición de preferencias y restricciones Planificación del sprint Sprint Retrospective Definición de Sprint Backlog Incorporación de preferencias y restricciones Calificación de asignaciones Revalorizar aptitudes técnicas de los recursos Tabla 3.1.: Interacción del Scrum Master con la herramienta durante las diferentes etapas. 33 Durante cada etapa, la herramienta se enfoca en capturar las acciones realizadas por los usuarios, las cuales serán utilizadas para generar conocimiento y almacenarlo en la MO. Este conocimiento servirá como entrada para AP y será utilizado con el fin de conseguir un plan de trabajo resultante que refleje las preferencias del Scrum Master. 3.2.2. Etapa 1 - Definición del proyecto En esta etapa el Scrum Master debe proveer a IVS toda la información relacionada al proyecto sobre el que desea trabajar. Esta información consiste principalmente en la definición de los recursos disponibles, del Product Backlog y las restricciones y preferencias del Scrum Master. El primer paso de la definición del proyecto, consiste en la selección de los recursos que podrán ser utilizados para la resolución del mismo. Esta selección se realiza sobre un conjunto de recursos previamente definidos. La tabla 3.2 muestra cada recurso utilizado para este ejemplo junto con las habilidades que posee cada uno y sus respectivos niveles de experiencia. RECURSO Ana Roberto Rodrigo Julio Aníbal Martin HABILIDAD NIVEL DE EXPERIENCIA Programación SQL 4 Programación C# 4 Programación SQL 7 Programación C# 7 Programación SQL 10 Programación C# 10 Creatividad 4 Modelado 3D Creatividad 4 7 Modelado 3D 7 Creatividad 10 Modelado 3D 10 Tabla 3.2.: Recursos involucrados con sus respectivos conocimientos. En función de las habilidades que posee cada recurso y su nivel de experiencia, IVS es capaz de determinar los roles que cada recurso puede ejercer. Para llevar a cabo esta tarea, IVS requiere que previamente estén definidos estos roles en la MO. La definición de un rol, consiste en un conjunto de habilidades y los niveles de experiencia necesarios para poder desempeñar dicho rol. Para el ejemplo conductor se utilizó la siguiente definición de roles. 34 ROL HABILIDAD REQUERIDA Programador junior Programador semi-senior Programador senior Diseñador gráfico junior Diseñador gráfico semi-senior Diseñador gráfico senior NIVEL MINIMO NIVEL MAXIMO Programación C# 1 4 Programación SQL 1 4 Programación C# 4 7 Programación SQL 4 7 Programación C# 7 10 Programación SQL 7 10 Creatividad 1 4 Modelado 3D 1 4 Creatividad 4 7 Modelado 3D 4 7 Creatividad 7 10 Modelado 3D 7 10 Tabla 3.3: Roles y niveles de experiencia requeridos de cada uno IVS se encarga de definir los roles que puede ejercer cada recurso utilizando el siguiente criterio: “Si un recurso posee las habilidades requeridas para satisfacer un determinado rol, y en cada una posee una calificación superior al nivel mínimo requerido por ella, entonces ese recurso puede ejercer el rol en cuestión.” Bajo el criterio anterior, para el ejemplo conductor quedan definidos los distintos roles que puede ejercer cada recurso, como se muestra en la tabla 3.4. RECURSO ROLES QUE PUEDE EJERCER Ana Programador junior Roberto Programador semi-senior / Programador junior Rodrigo Programador senior / Programador semi-senior / Programador junior Julio Diseñador gráfico junior Aníbal Diseñador gráfico semi-senior / Diseñador gráfico junior Martin Diseñador gráfico senior / Diseñador gráfico semi-senior / Diseñador gráfico junior Tabla 3.4 Roles que puede ejercer cada recurso El segundo paso durante esta etapa consiste en la definición del Product Backlog, que se trata como un documento de alto nivel para todo el proyecto. Es la definición de todas las funcionalidades requeridas, las cuales son priorizadas según el criterio del Scrum Master. Esta definición puede incluir información tal como tiempo estimado de resolución, tiempo límite y dependencias de otra User Story. Siguiendo la definición de las metodologías ágiles, cada User Story es dividida en diferentes tareas de menor complejidad. El Scrum Master es el encargado de definir cada una de las 35 tareas que componen una User Story. La tabla 3.5 muestra el Product Backlog utilizado para el ejemplo conductor. USER STORY TAREA Diseñar estructura de base de datos Soporte de persistencia Implementar altas bajas y modificaciones (ABM) Diseñar interfaz de login Desarrollo de login Implementar funcionalidad para inicio de sesión Crear imágenes e interfaz Visualización de panel de planning poker Implementar script para eventos del mouse Implementar lógica de panel Implementar soporte para multijugador Implementar animaciones del avatar Implementación de avatar Agregar control de movimiento Crear modelo 3D del avatar Crear modelo 3D de la sala Implementar sala de juego 3D Implementar soporte multijugador Tabla 3.5: Product Backlog. Durante la definición de una tarea, IVS requiere que el Scrum Master defina los roles necesarios para lograr la resolución de la misma. Puede ocurrir que determinadas tareas requieran la utilización de más de un recurso con el mismo rol. Por esto, es necesario especificar, para cada rol, que cantidad se necesita. La tabla 3.6 muestra cada una de las tareas previamente definidas junto con el rol requerido para la resolución de la misma y la cantidad de recursos necesarios. TAREA ROL REQUERIDO CANTIDAD Diseñar estructura de base de datos Programador senior 1 Implementar altas bajas y modificaciones (ABM) Programador semi-senior 1 Diseñar interfaz de login Diseñador gráfico junior 1 Implementar funcionalidad para inicio de sesión Programador junior 1 Crear imágenes e interfaz Diseñador gráfico junior 1 Implementar script para eventos del mouse Programador junior 1 Implementar lógica de panel Programador semi-senior 1 Implementar soporte para multijugador Programador senior 1 Programador semi-senior 1 Diseñador gráfico senior 1 Diseñador gráfico semi-senior 1 Programador semi-senior 1 Crear modelo 3D del avatar Diseñador gráfico senior 1 Crear modelo 3D de la sala Diseñador gráfico junior 1 Implementar soporte multijugador Programador senior 1 Implementar animaciones del avatar Agregar control de movimiento Tabla 3.6: Tareas y roles requeridos para su resolución. 36 El último paso de esta etapa consiste en definir preferencias o restricciones de asignaciones en caso de ser requeridas. El Scrum Master puede definir que para realizar la resolución de determinada tarea no se utilice a cierto recurso, o caso contrario, que se utilice a un recurso en particular. La tabla 3.7 muestra las restricciones de asignación de recursos utilizadas para el ejemplo. En este caso, los recursos Rodrigo y Roberto, no podrán ser asignados a la tarea “Implementar funcionalidad para inicio de sesión”. TAREA RESTRICCION DE ASIGNACION Implementar funcionalidad para inicio de sesión Rodrigo Implementar funcionalidad para inicio de sesión Roberto Tabla 3.7: Restricciones de asignación Para demostrar que AP respeta las restricciones impuestas por el Scrum Master, se optó por elegir una tarea que pueda ser asignada a más de un recurso. Observando la tabla 3.6 se puede apreciar que la tarea “Implementar funcionalidad para inicio de sesión” requiere de un recurso que pueda cumplir el rol de “Programador junior”. En este proyecto, se cuenta con tres recursos capacitados para cumplir el mencionado rol, Ana, Roberto y Rodrigo. Dado que el Scrum Master podría considerar que esta tarea debería ser realizada por un programador junior y no por un programador de más capacidad, IVS brinda la posibilidad de crear estas restricciones de asignaciones. El Sprint Backlog propuesto por IVS, deberá retornar como asignación para la tarea en cuestión, al recurso denominado Ana. De la misma manera que el Scrum Master puede definir restricciones de asignaciones, también puede definir preferencias. El Scrum Master podría considerar que cierta tarea que requiere, como mínimo, de un programador semi-senior, debería ser asignada a un programador senior, ya que la considera por demás importante. Para obligar a AP a realizar esta asignación, el Scrum Master puede definir la siguiente preferencia. TAREA ROL REQUERIDO Implementar animaciones del avatar PREFERENCIA DE ASIGNACION Programador semi-senior Rodrigo Tabla 3.8: Preferencias de asignación 37 Observando la tabla 3.4 de esta sección, se puede apreciar que Rodrigo es un programador senior. AP deberá tener en cuenta esta preferencia de asignación para imponer a este recurso por sobre la asignación de un programador semi-senior, que sería, en principio, la asignación más lógica para la tarea involucrada. Otro tipo de restricciones que permite definir IVS, son las dependencias entre tareas. Estas dependencias permitirán al Scrum Master definir, por ejemplo, que una tarea no puede comenzar si otra no ha sido finalizada. IVS ofrece cuatro posibles formas de dependencias con que se pueden relacionar las tareas: Finish to Start: Indica que para poder comenzar a realizar una tarea, es necesario que la tarea de la cual depende, haya finalizado. Start to Start: Indica que para poder comenzar a realizar una tarea, es necesario que la tarea de la cual depende, haya comenzado. Start to Finish: Indica que para poder finalizar una tarea, es necesario que la tarea de la cual depende, haya comenzado. Finish to Finish: Indica que para poder finalizar una tarea, es necesario que la tarea de la cual depende, haya finalizado. Durante esta etapa se han enumerado diversas acciones que el Scrum Master puede realizar. Estas acciones permiten comenzar a definir el Perfil de Usuario del mismo. Siguiendo el ejemplo conductor, se puede apreciar que el Scrum Master tiene una preferencia de asignación para la tarea “Implementar animaciones del avatar”. Esta tarea requiere como rol, un “Programador semi-senior”. Sin embargo, el Scrum Master, optó por asignar a un recurso con un rol de “Programador senior”. Si esta conducta se repitiera durante sucesivas planificaciones, el algoritmo podría determinar que el Scrum Master prefiere utilizar recursos de mayor experiencia que la requerida para determinado tipo de tarea. Como conclusión, IVS ofrece variadas opciones para la definición de un proyecto. Es responsabilidad del Scrum Master manipular estas opciones de forma coherente para obtener resultados factibles. El algoritmo será incapaz de encontrar soluciones cuando se definan, por 38 ejemplo, restricciones contradictorias o preferencias imposibles de cumplir. Habiendo realizado una definición completa del proyecto, se procede a la etapa de “Planificación de un sprint”. 3.2.3. Etapa 2 - Planificación de un sprint El primer paso de esta etapa consiste en la definición del Sprint Backlog. El Sprint Backlog es simplemente un subconjunto de las User Stories definidas en el Product Backlog. El Scrum Master es el encargado de seleccionar este subconjunto en base a las prioridades de resolución de cada tarea o en base a criterios del negocio. Para el ejemplo conductor se definieron dos sprints y se repartieron las User Stories entre ellos como se muestra en la tabla 3.9. SPRINT 1 USER STORY Soporte de persistencia Desarrollo de login Visualización de panel de planning poker 2 Implementación de avatar Implementar sala de juego 3D Tabla 3.9: Sprint Backlogs. Cuando el Scrum Master solicita la planificación de un sprint, AP obtiene de la MO datos históricos de desempeños de los recursos. Estos datos pueden provenir tanto de sprints como de proyectos anteriores. Esta información histórica es de vital importancia para que AP pueda realizar asignaciones cada vez más eficientes. Como ejemplo, si se requiere que una tarea sea asignada a un programador senior, AP tratará de asignar, priorizando los programadores senior disponibles, al recurso que haya tenido un mejor desempeño histórico. Una vez que AP logra armar una planificación de un Sprint, retorna al Scrum Master el Sprint Backlog propuesto. Este último consiste en una sugerencia de asignaciones de recursos a las tareas recibidas en el Sprint Backlog original. Se presenta el Sprint Backlog propuesto al Scrum Master indicando cada tarea del Sprint Backlog junto con el recurso que fue asignado para su resolución. Puede suceder que debido a ciertos factores algunas tareas no tengan una asignación definida. Por ejemplo, la duración definida para los sprints, podría no ser 39 suficiente para lograr la resolución de todas las User Stories que involucran. En este caso, la propuesta al Scrum Master, sugeriría posponer las User Stories para futuros sprints. La tabla 3.10 muestra los recursos asignados luego de solicitar las planificaciones de los sprints definidos en la etapa anterior. TAREA RECURSO ASIGNADO ROL SPRINT BACKLOG PROPUESTO PARA EL SPRINT 1 Diseñar estructura de base de datos Rodrigo Programador senior Implementar altas bajas y modificaciones Rodrigo Programador senior Diseñar interfaz de login Implementar funcionalidad para inicio de sesión Martin Diseñador gráfico senior Ana Programador junior SPRINT BACKLOG PROPUESTO PARA EL SPRINT 2 Crear imágenes e interfaz Julio Diseñador gráfico junior Implementar script para eventos del mouse Ana Programador junior Implementar lógica de panel Roberto Programador semi-senior Implementar soporte para multijugador Rodrigo Programador senior Rodrigo Programador senior Martin Diseñador gráfico senior Rodrigo Aníbal Programador senior Diseñador gráfico semisenior Crear modelo 3D del avatar Martin Diseñador gráfico senior Crear modelo 3D de la sala Julio Diseñador gráfico junior Implementar soporte multijugador Rodrigo Programador senior Implementar animaciones del avatar Agregar control de movimiento Tabla 3.10: Sprint Backlogs propuestos Como se puede apreciar en la tabla 3.10, las tareas del sprint 1 fueron asignadas a recursos de mayor experiencia. Esto ocurre debido a que AP siempre intenta asignar el mejor recurso disponible para la realización de una tarea. Como contrapartida, dado que en la etapa de definición del proyecto se definieron restricciones de asignación para la tarea “Implementar funcionalidad para inicio de sesión”, la misma fue asignada a un recurso de menor experiencia. En la figura 3.B. se puede apreciar como IVS ofrece el Sprint Backlog propuesto al Scrum Master. En este punto, IVS permite tres cursos de acción, rechazar la propuesta, planificar nuevamente el sprint incorporando nuevas restricciones o aceptar el plan propuesto. Cada una de estas opciones tendrá una respuesta diferente por parte de la herramienta. El rechazo de la propuesta no tendrá ningún efecto sobre el proyecto. Éste volverá al mismo estado en el que 40 se encontraba antes de la ejecución del Algoritmo de Planning. La re-planificación incorporará las nuevas restricciones definidas por el Scrum Master y ejecutará nuevamente el Algoritmo de Planning. Como resultado se obtendría un plan más acorde a las necesidades del usuario. Por último la aceptación del plan ocasionará que se avance a la siguiente etapa, en donde el administrador evaluará las asignaciones de recursos. Figura 3.B: IVS - Sprint Backlog Propuesto. Los diferentes cursos de acción que puede tomar el Scrum Master cuando IVS le sugiere un plan, son utilizados para incrementar el conocimiento sobre su perfil. Siguiendo el ejemplo conductor, el algoritmo podría determinar una preferencia del Scrum Master por las asignaciones de recursos de mayor experiencia a tareas que requieren una menor. 3.2.4. Etapa 3 - Sprint Retrospective La Sprint Retrospective es un mecanismo importante que permite al equipo evolucionar y mejorar a través del ciclo de vida de un proyecto. Es durante esta etapa donde se identifica que cosas se realizaron correctamente y cuales se podrían mejorar. IVS ofrece al Scrum Master la posibilidad de calificar el desempeño de los recursos en las tareas planificadas. Esta calificación resulta importante para las futuras planificaciones de sprints, ya que AP tiene en cuenta la información histórica de los proyectos a la hora de realizar 41 nuevas asignaciones. Esto permitirá a IVS ofrecer planificaciones cada vez más eficientes, convirtiéndose en una herramienta de gestión de proyectos que satisface las necesidades actuales de planificación. Siguiendo el ejemplo conductor, se realiza una posible calificación para el Sprint Backlog propuesto, tal como se muestra en la tabla 3.11. TAREA RECURSO ASIGNADO CALIFICACION SPRINT BACKLOG PROPUESTO PARA EL SPRINT 1 Diseñar estructura de base de datos Rodrigo 9 Implementar altas bajas y modificaciones (ABM) Rodrigo 9 Diseñar interfaz de login Martin 8 Ana 4 Implementar funcionalidad para inicio de sesión Tabla 3.11: Calificación de asignaciones Esta última etapa resulta una de las más importantes para la generación del perfil de usuario. Es aquí donde el perfil de usuario se refina para determinar con mayor precisión las preferencias de asignaciones que posee el Scrum Master. Esto puede determinarse en base a las calificaciones de desempeño de cada recurso. Siguiendo el ejemplo conductor, podría ocurrir que a lo largo de sucesivas planificaciones el Scrum Master continúe calificando al recurso Rodrigo con notas altas y al recurso Ana con calificaciones bajas. Bajo este comportamiento, AP podría determinar, en una futura planificación, una preferencia por parte del Scrum Master para la asignación de Rodrigo por sobre el recurso Ana. Con la calificación del desempeño de los recursos se puede dar por finalizado un Sprint, durante el cual se fue almacenando constantemente la información generada producto de la interacción con el Scrum Master. Esta información almacenada brindará a IVS un aprendizaje constante durante la gestión de los proyectos. 42 3.2.5. Conclusión IVS es una herramienta que facilita la gestión de proyectos que trabajan bajo la metodología ágil Scrum. Provee un mecanismo automatizado de gestión de recursos. Además brinda una constante asistencia al usuario a lo largo de las diferentes etapas de planeamiento de un proyecto. Esta asistencia es posible gracias a un constante aprendizaje de IVS a partir del uso de Perfiles de Usuarios, propuesto por el enfoque de (Villaverde,2009). Como se mencionó en el capítulo 2, la Amnesia Organizacional está ligada al concepto de aprendizaje organizacional. Es por esto que se planteó un enfoque que permitiera obtener una herramienta capaz de aprender de las interacciones con el usuario. . Gracias a la integración de los enfoques de (Berdún, 2009) y (Villaverde, 2009) en la herramienta de administración de proyectos IVS este trabajo presenta una solución al problema de la Amnesia Organizacional, en el cual el conocimiento es almacenado y reutilizado para futuros proyectos. 43 Capítulo 4 Diseño e implementación La arquitectura final de IVS se diseñó en base a la necesidad de crear una herramienta de gestión de proyectos que ofreciera, además, funcionalidad para la planificación eficiente de los mismos. En base a esto, se detectó la necesidad de utilizar un algoritmo de planificación que pudiera realizar esta tarea. Como se mencionó en el capítulo 3, el algoritmo requiere de un repositorio que se encargue de almacenar los datos históricos del proyecto de manera que puedan ser reutilizados de forma efectiva. Se identificaron tres herramientas principales, una herramienta de gestión de proyectos, una memoria organizacional y un algoritmo de planeamiento de proyectos. Cada una de estas provee funcionalidades totalmente independientes entre sí. Para lograr construir una herramienta que provea conjuntamente estas funcionalidades es necesario que cada componente exponga las suyas de manera que puedan ser accedidas por las demás. Es aquí donde surge el concepto de servicios, donde estas funcionalidades son expuestas mediante el uso de interfaces. En base a estas necesidades se optó por utilizar una arquitectura orientada a servicios (SOA). SOA es un estilo arquitectónico que se base en la independencia de las plataformas e infraestructuras tecnológicas, lo que le permite integrarse con sistemas y aplicaciones diferentes de forma sencilla. Gracias a esta independencia, SOA es un estilo flexible que permite la reutilización de las tecnologías existentes. Dado que los componentes deben interactuar entre sí y la naturaleza de cada uno es diferente, surge la necesidad de crear un componente adicional que permitiera integrar todas las herramientas, para que puedan trabajar conjuntamente y utilizando un canal común de comunicación. Este modo de integración permite obtener una arquitectura flexible, que permite el reemplazo o la adición de componentes sin afectar la estructura existente del sistema. Para 44 lograr esta flexibilidad en la arquitectura, es necesario que la comunicación entre el componente integrador y el resto de las herramientas se realice de manera transparente e independiente de la tecnología de cada una. El aislamiento de los componentes fue posible gracias a la implementación del patrón de integración MessageBus, que permite desacoplar los componentes que forman una aplicación. MessageBus es una combinación de un modelo de datos común, un conjunto de comandos comunes y una infraestructura de mensajería que permite a los diferentes sistemas comunicarse a través de un conjunto compartido de interfaces. La comunicación entre aplicaciones se logra mediante un bus en común. Los mensajes son enviados a través de dicho bus, y cada aplicación recibirá el que le corresponda. En la figura 4.A. se puede apreciar el concepto del patrón MessageBus. Figura 4.A. IVS. Patrón de integración MessageBus. 4.1. Arquitectura del sistema En la figura 4.B se muestra la arquitectura de IVS, con las herramientas utilizadas para cumplir los roles de los componentes mencionados anteriormente. Se utilizó una extensión de Virtual Scrum (*) como herramienta de gestión de proyectos, KMUCPop como algoritmo de planificación y una memoria organizacional basada en el enfoque [Villaverde, 2009]. Se eligió SmartFox Server como componente integrador cumpliendo el rol de MessageBus mencionado anteriormente. (*) El detalle de la extensión de funcionalidad realizada a Virtual Scrum se muestra en el Anexo I. 45 Figura 4.B. IVS. Arquitectura del sistema. Para poder integrar cada herramienta a la arquitectura, es necesario que cada una de ellas implemente la interfaz definida por el componente integrador SmartFox Server (SFS). Para esto fue necesario incorporar en cada herramienta un componente denominado, de ahora en adelante, SmartFox Integrator (SFI). La responsabilidad principal de este último consiste en el intercambio de mensajes con SmartFox Server. SFI es capaz de interpretar los mensajes provenientes de SFS y traducirlos de manera que puedan ser interpretados por la herramienta en la cual fue incorporado. De la misma manera, SFI es capaz de traducir la información proveniente de la herramienta de modo que pueda ser interpretada por SFS. El componente SFI es único para cada herramienta y su implementación dependerá de la naturaleza de cada una de ellas. Virtual Scrum (VS) es el componente encargado de mantener la interacción con los usuarios. Tiene como responsabilidad principal brindar al usuario una interfaz amigable para la administración de proyectos, siguiendo los conceptos de la metodología ágil Scrum. Se encarga, de proveer funcionalidad básica como la creación de proyectos, tareas y recursos. Además provee funcionalidad relacionada con la planificación de proyectos. VS permite a los usuarios trabajar sobre las diferentes etapas del ciclo de vida del proyecto: la definición del proyecto, la planificación de un sprint y la Sprint Retrospective. El Algoritmo de planeamiento de proyectos es el componente encargado de ofrecer asistencia al administrador, estableciendo las asignaciones de recursos requeridas y creación 46 de dependencias necesarias para constituir un plan de trabajo final. Este componente es capaz de analizar los datos existentes en la memoria organizacional para realizar las planificaciones. La Memoria Organizacional funciona como repositorio de la arquitectura. Tiene como responsabilidades principales persistir los eventos del administrador y almacenar el conocimiento organizacional de manera que pueda ser utilizado de forma efectiva. Toda la información almacenada en la MO debe estar disponible para ser accedida por el resto de los componentes. Para esto fue necesaria la creación de una capa de servicios que brinda una forma bien definida de acceso a la información. Esta capa resulta un elemento clave para el sistema, ya que todo el intercambio de información pasará a través de ella. El componente SmartFoxServer tiene como objetivo funcionar como integrador de las herramientas y hacerlo de modo que las mismas trabajen de manera totalmente independiente entre sí. En la arquitectura de IVS, SmartFox Server cumple el rol de MessageBus, permitiendo al resto de los componentes comunicarse adecuadamente. El diseño flexible de la arquitectura de IVS, permite que cualquiera de los componentes, puedan ser reemplazados por otro componente de similares características. Para esto, sólo es necesario que el nuevo componente que quiera incluirse implemente la interfaz definida por SmartFox Server, mediante la creación del componente SmartFox Integrator. Este elemento adicional funcionará como nexo de comunicación entre el componente donde se incluya y SmartFox Server. La elección de SmartFox Server como componente integrador se debe a que está diseñado con una arquitectura escalable y de alto rendimiento que puede soportar el acceso en paralelo de miles de clientes. SFS está orientado hacia plataformas multiusuarios y comunidades virtuales. Estas características convierten a SFS en un buen aliado del componente Virtual Scrum, el cual permite a cientos de usuarios trabajar al mismo tiempo en un ambiente virtual. 47 Figura 4.C. Diagrama de clases de IVS. En la Figura 4.C se puede observar el diagrama de clases del enfoque propuesto. En este se puede apreciar la integración del algoritmo de planificación, la memoria organizacional y Virtual Scrum a traves del componente integrador SmartFox Server. Como se puede observar el diagrama no entra en detalle en la implementación de los componentes integrados, sino que solo se muestra la interfaz por la que se accede a la funcionalidad brindada por los mismos. La clase WindowController es la encargada de administrar los eventos generados por el usuario de Virtual Scrum. Dependiendo del tipo de acción elegida por el usuario, invocará al método correspondiente de la clase ProjectController. La clase ProjectController se encarga de armar el objeto que será enviado por la clase SmartFoxIntegratorVS hacia el componente SmartFoxServer. 48 El componente SmartFox Server se encarga de recibir y reenviar los mensajes provenientes del resto de los componentes hacia el destino correspondiente. Utiliza para este procedimiento la clase IVSExtension, que hereda el comportamiento de la clase SFSExtension propia de SmartFox. El componente KMUCPop centra su funcionalidad en la clase PlanningService, la cual provee un método para realizar la ejecución del planning y otros métodos para realizar aceptar o rechazar el plan propuesto, según se especificó anteriormente. El último componente de la arquitectura, [Villaverde,2009] es el encargado de mantener actualizado el repositorio. Para esto utiliza la clase MOService, la cual provee todos los métodos de acceso a la información necesarios durante el ciclo de vida del proyecto. El desacople de los componentes se logra gracias al uso de los SFI incluidos en cada uno. Como se mencionó anteriormente, la implementación de cada SFI dependerá de la naturaleza del componente en el que se está incluyendo. Para clarificar el funcionamiento de los SFI se muestran los siguientes diagramas de secuencias. Estos diagramas ejemplifican la comunicación que se lleva a cabo entre todos los componentes cuando el usuario realiza la creación de un proyecto. Figura 4.D.a. Diagrama de secuencia. Envío de un mensaje 49 Figura 4.D.b. Diagrama de secuencia. Recepción de un mensaje. En la figura 4.D.a se puede apreciar que, en el momento que el usuario inicia la creación de un proyecto, la clase ProjectController se encarga crear el objeto que será enviado a la clase SmartFoxIntegratorVS. Esta última, es la clase encargada de empaquetar el objeto recibido de manera que pueda ser interpretado por la clase IVSExtension incluida en el componente SmartFoxServer. En la figura 4.D.b se muestra la interacción entre los componentes cuando SmartFoxServer recibe el paquete creado por SmartFoxIntegratorVS. La primera tarea que realiza SmartFoxServer es identificar el destino que tiene el paquete recibido. Para esto utiliza la clase IVSExtension, que se encarga, además, de reenviar el paquete hacia el destino correspondiente, en este caso SmartFoxIntegratorMO. Este último es el encargado de desempaquetar el paquete recibido y reenviarlo hacia la clase MOService en forma de mensaje que ella pueda interpretar. El último paso consiste en el salvado de la información recibida en el paquete, tarea realizada por la clase MOService. 50 4.2. Ejemplo conductor Para clarificar como se produce la interacción entre los distintos componentes de la arquitectura, se mostrarán diagramas de secuencia siguiendo el ejemplo conductor utilizado en el capítulo anterior. La explicación se llevará a cabo en base a las tres etapas principales del ciclo de vida de un proyecto: Definición del Proyecto, planificación de un sprint y Sprint Retrospective. Al igual que en el capítulo 3, se mostrarán ejemplos que ayudarán a entender como los componentes se comunican entre sí, y que tipos de mensajes envían. Estos ejemplos, serán descriptos en base a diagramas de secuencia simplificados, mostrando las partes del sistema involucradas, las invocaciones entre ellos, y el orden de las mismas. Para simplificar los diagramas no se incluyen los mensajes que ocurren entre los componentes integradores, etapa que fue explicada anteriormente. Al finalizar la sección, el lector tendrá un panorama claro del resultado final de la integración de las diferentes aplicaciones. El objetivo es detallar el rol que el componente integrador cumple dentro de la arquitectura, y demostrar la independencia de las aplicaciones entre sí. 4.2.1. Definición del Proyecto Como se mencionó en el capítulo 3, en esta esta etapa el Scrum Master se encarga de proveer información sobre el proyecto, User Stories y sus requerimientos, recursos y sus habilidades. Para ello, el Scrum Master hace uso de Virtual Scrum y las funcionalidades que éste provee. El componente Virtual Scrum recolecta la información provista por el Scrum Master, y se la envía al componente integrador SmartFox en forma de peticiones. Este último, procesa estas peticiones, redirigiéndolas al componente correspondiente. 51 Figura 4.E Diagrama de secuencia para la definición de un nuevo proyecto. En el diagrama de la figura 4.E, se puede apreciar que el Scrum Master hace uso de la funcionalidad de Virtual Scrum para crear un nuevo proyecto. VS recibe el pedido del Scrum Master, procesa el mensaje de manera que pueda ser interpretado por SmartFox Server y se lo reenvía. SmartFox Server se encarga de identificar el tipo de solicitud e identifica a que componente debe reenviarla. En este caso, el destinatario es el componente MO. Este último es quien realmente se encarga de procesar la petición del Scrum Master. Suponiendo que no hay ningún tipo de problema en la información provista por el Scrum Master, la MO almacena el nuevo proyecto. La interacción entre los componentes es similar ante cada petición del usuario durante esta etapa. De la misma manera que el Scrum Master realiza la definición del proyecto, define también los recursos involucrados, crea las tareas involucradas en el proyecto y define sus preferencias y restricciones. Como se puede apreciar, el componente del Algoritmo de Planeamiento no tiene participación en este tipo de transacciones. Esto se debe a que es solo flujo de información que es almacenada en la MO. La comunicación entre VS y MO es totalmente transparente gracias a una integración desacoplada, facilitada por el componente SmartFox Server. 52 4.2.2. Planificación del Sprint En esta sección se explican las interacciones de los componentes de la arquitectura en el escenario de la planificación de un sprint. Como se mencionó en el capítulo 3, en este escenario el Scrum Master tiene diferentes cursos de acción posibles. Si el plan otorgado por el algoritmo no satisface las necesidades de la organización, el Scrum Master puede acomodar las características del plan para planear nuevamente. Una vez que el plan es aceptado, la información es almacenada, actualizando las características del perfil del Scrum Master, como así también información pertinente al proyecto, tareas y los recursos junto a sus habilidades. La planificación de un Sprint Backlog envuelve a todos los componentes de la arquitectura. En la figura 4.F, se presenta un diagrama de secuencia que ilustra este escenario. Se muestran las invocaciones más pertinentes entre las distintas partes del sistema. Ejecución de Planning 53 Figura 4.F: Diagrama de secuencia para la planificación de un Sprint. El Scrum Master solicita la planificación del Sprint. Para ello, provee al Virtual Scrum un listado de User Stories, que representan el Sprint Backlog. Opcionalmente, como se mencionó en el capítulo 3, el Scrum Master puede ingresar restricciones y preferencias. Cuando esta solicitud es recibida por AP, comienza la ejecución de diferentes procesos, como la validación de datos, la recolección de datos históricos, procesamiento de requisitos y preferencias. Como el diagrama muestra, la recolección de datos se logra, por medio de SmartFox server, invocando a MO. Finalmente, la ejecución del algoritmo comienza. Una vez que el algoritmo encuentra una posible solución, envía el Sprint Backlog propuesto al Scrum Master. En este punto, el Scrum Master puede tomar tres cursos de acción. En este caso se muestra la secuencia de acciones para el escenario donde el plan propuesto satisface al Scrum Master, y este decide aceptar el plan propuesto. Llegado este punto, el Scrum Master solicita al VS que 54 el plan sea guardado en el repositorio. VS envía la petición de salvar plan, una vez más, por medio de SmartFox server. El componente integrador le envía el mensaje a MO, la cual persistirá la información en su repositorio de datos. El diagrama de la figura 4.F muestra una secuencia de llamados, la cual involucra a varios componentes. Estos llamados se realizan utilizando como intermediario al SmartFox Server. El uso de este intermediario para controlar todos los mensajes provenientes de los componentes hace que el acople entre ellos sea mínimo. Ningún componente del sistema depende de los demás para llevar a cabo una comunicación. Esta forma de comunicación permite que los componentes puedan ser de diferente naturaleza y que cada uno esté completamente aislado de la naturaleza del componente con el que se comunica. 4.2.3. Sprint Retrospective Fig. 4.G. Diagrama de secuencia para la etapa Sprint Retrospective. Luego de finalizado un sprint, el Scrum Master, por medio de VS, realiza la calificación del desempeño de los recursos. VS envía la información ingresada por el Scrum Master hacia SmartFox Server, quien entiende que esta información debe reenviarla hacia el componente MO, invocando al servicio “Qualify Resource”. MO recibe esta solicitud y actualiza la información del repositorio. 55 4.3. Herramienta en acción En esta sección se muestran imágenes de la solución final resultante de la integración de herramientas previamente mencionadas. Virtual Scrum es un ambiente 3D que consiste de una sala en la que múltiples usuarios pueden interactuar con paneles ubicados en las paredes de la misma. Esta sala puede apreciarse en la figura 4.J. Cada panel muestra información relativa al proyecto sobre el que se está trabajando y, algunos de ellos, da la posibilidad al usuario de modificar ciertos datos. Existe un panel que muestra el estado actual de las tareas de cada user story (figura 4.L.) del product backlog (figura 4.K) y permite al usuario modificar dicho estado cuando, por ejemplo, se ha finalizado con una tarea. Existen otros paneles entre los que se puede apreciar información tal como un gráfico de burndown o listado de user stories. Para poder realizar el armado y planificación de un sprint es necesaria la manipulación de mucha información. Esta incluye el manejo del product backlog para seleccionar las tareas que formarán parte del sprint backlog, elegir que recursos estarán disponibles para el sprint sobre el que se realizará la planificación, etc. Por este motivo, se optó por el uso de ventanas en 2D que brindan a los usuarios una mejor usabilidad del sistema. Figura 4.J: Vista de la sala principal de Virtual Scrum. 56 Figura 4.K: Panel de Product Backlog. Figura 4.L: Panel que muestra el estado actual de cada tarea. Mediante una de las ventanas, mostrada en la figura 4.M, el usuario puede manipular toda la información relevante al proyecto y/o sprint que desea planificar. Se brinda la posibilidad de gestionar tareas, recursos, roles y sprints, así como las habilidades de cada recurso y las habilidades requeridas en cada rol, lo que permitirá al algoritmo de planeamiento, determinar si un recurso es apto o no para ejercer determinado rol requerido para la realización de una determinada tarea. Esto último resulta una pieza clave en la planificación de un proyecto, ya que el algoritmo siempre trata de asignar, a una tarea, el recurso libre más capacitado para la resolución de la misma. 57 Figura 4.M: Ventana de gestión de proyectos. En la figura 4.N. se puede apreciar la ventana por la cual el usuario puede armar el sprint antes de planificarlo. Para brindar una mayor usabilidad se optó por mostrar, en una lista, todas las user stories que forman parte del product backlog, y en otra, todas las que forman parte del sprint backlog. De esta manera, el usuario con sólo presionar un botón puede remover una user story del sprint backlog para que vuelva a formar parte del product backlog o viceversa. Figura 4.N: Ventana de armado de sprint backlog para planificación del sprint. La última ventana relevante de Virtual Scrum, se muestra en las figuras 4.O. Esta ventana es la que muestra la información devuelta por el algoritmo de planeamiento luego de que el usuario solicite la planificación de un determinado sprint. En la ventana mencionada se muestra 58 información tal como las user stories propias del sprint planeado con las tareas que involucra cada una, así como, el/los recurso/s al cual el algoritmo encontró más apto para resolver el sprint de forma eficiente. Dado que cada recurso puede ejercer diferentes roles de acuerdo a sus habilidades, en la ventana se muestra también que rol debería ejercer el recurso asignado para resolver las tareas eficientemente. Se muestra además, la duración estimada de la tarea (indicada por el Scrum Master) así como la duración que el algoritmo calcula que tardará el recurso asignado, en resolver la tarea en cuestión, basándose en las habilidades requeridas para la resolución y en las habilidades propias del recurso. Además se brinda al usuario la posibilidad de posponer user stories para un próximo sprint y entonces replanear el sprint nuevamente. Figura 4.O: Ventanas de resultado del sprint planeado. 59 4.4. Conclusión Los diagramas de secuencia ilustran un conjunto de aplicaciones heterogéneas que se comunican por medio de un canal común. Esta comunicación es totalmente transparente ya que ningún componente debe conocer detalles de implementación del otro. El componente integrador se comporta como un canal de comunicación común para todas las partes del sistema. La combinación del estilo arquitectónico elegido más la utilización de SmartFox Server como componente integrador, permite que nuevos componentes sean fácilmente integrados a la arquitectura de IVS, sin afectar a las aplicaciones presentes en la arquitectura. Además, los componentes de la arquitectura son independientes entre sí: cualquier cambio en alguno de ellos, no afectará al resto, mientras su componente integrador respete las interfaces definidas por SmartFox. 60 Capítulo 5 Resultados Experimentales Al principio de este trabajo, se mencionó que la gestión de un proyecto puede ser llevada a cabo siguiendo diferentes metodologías de trabajo. En este capítulo se explican los procedimientos utilizados para probar experimentalmente el desempeño que posee la combinación de metodologías ágiles junto con las técnicas de Memoria Organizacional y de Planning sobre una herramienta de administración de proyectos real, y se muestran los beneficios obtenidos al aplicar dicha combinación por sobre una gestión de proyectos siguiendo la metodología clásica tipo “cascada”. Se presenta, además, el marco de trabajo propuesto para simular el ambiente de trabajo y cuáles son las suposiciones tenidas en cuenta para generar un entorno controlado de experimentación. Como último experimento, se invierten los criterios de calificación utilizados por el algoritmo. Con esta prueba, se explica el concepto de capacidad de recuperación, que muestra la adaptación del algoritmo frente a un cambio en el criterio de calificación. A lo largo del presente capítulo se podrán observar los resultados obtenidos luego de diversas ejecuciones del algoritmo de planeamiento utilizando las diferentes configuraciones de proyectos, pero manteniendo siempre, para cada uno de ellos, los mismos datos de entrada, lo que permitirá realizar comparaciones claras entre ellos. Al final de este capítulo, se pondrá a prueba la capacidad de aprendizaje de la herramienta. Particularmente, se evidenciará que en un ambiente ágil Scrum, la curva de aprendizaje es más rápida con respecto a la metodología cascada. Se compararán los resultados obtenidos de estos dos enfoques, utilizando gráficas que permitan visualizar el comportamiento de la herramienta con respecto a los parámetros de entrada utilizados, lo que permitirá, además, comprobar experimentalmente la validez de los resultados obtenidos. 61 5.1. Criterio conocimiento. de calificación del algoritmo y generación del Como se mencionó en el capítulo 3, la herramienta va adquiriendo los conocimientos sobre los recursos a medida que ocurren las diversas ejecuciones de cada sprint. En este contexto, entre los conocimientos más importantes que puede adquirir la herramienta, se debe mencionar el desempeño que tuvo un recurso al realizar una determinada tarea. En un ambiente de trabajo real, este desempeño será evaluado por el encargado de la gestión del proyecto. En nuestro caso particular, la evaluación del desempeño de un recurso será generada automáticamente por la herramienta teniendo en cuenta ciertos aspectos como el nivel de las habilidades del recurso asignado y el rol requerido para la realización de una tarea. Esta simulación permitirá evaluar el desempeño de la herramienta desde el punto de vista de la capacidad de aprendizaje y la capacidad de recuperación ante los posibles cambios en el desempeño de los recursos. Entre los diferentes escenarios que puede encontrarse el gestor de un proyecto, puede ocurrir que haya recursos muy capacitados que no cumplan satisfactoriamente con el requerimiento al cual fue asignado, por lo que la herramienta debe aprender a no volver a cometer los mismos errores. Como escenario opuesto, puede ocurrir también que un recurso con poca experiencia resuelva una tarea apropiadamente causando que la herramienta tenga que aprender de situaciones satisfactorias. La meta que se tiene al plantear estos escenarios opuestos, es comprobar que la herramienta está preparada para soportar cambios repentinos en el desempeño de los recursos y aprender de cada una de las posibles situaciones. En un ambiente real de ejecución de la herramienta, el Scrum Master calificará a los recursos de acuerdo a diversos factores. Dichos factores, pueden ser el tiempo que le llevo al recurso finalizar cierta tarea, o la calidad de las soluciones que utilizo. Al mismo tiempo, diferentes Scrum Masters pueden basarse en diferentes características para calificar a un recurso. Para simular el proceso de calificación, se estableció que los recursos que, lógicamente, serían los óptimos para cumplir con una tarea, serán calificados negativamente, mientras que los recursos asignados más alejados del requerimiento de la tarea serán calificados positivamente. Por ejemplo, si una tarea solicita un recurso con un alto nivel de 62 habilidad y en la misma se le asigna un recurso junior, este último obtendrá una buena calificación. La tabla 5.1 muestra el puntaje de calificación de un recurso con cierto nivel de seniority cuando es asignado a una tarea con requerimientos de un determinado nivel. Tarea/Recursos Senior Semi-Senior Junior Alta 1 4 10 Media 4 1 10 10 4 1 Baja Tabla 5.1: Criterio de evaluación utilizado para la generación del conocimiento. La semántica de la tabla se explica a continuación: Si una tarea tiene como requerimiento que sea realizada por un programador de altos conocimientos, y se le asigna un recurso Senior, el puntaje será de 1. Este es el caso del casillero [Tarea=ALTA, Recurso=SENIOR]. La semántica explicada anteriormente, es análoga para el resto de los casilleros. El mínimo puntaje es 1, y el máximo es 10. La intención del criterio de calificación, es que el algoritmo aprenda que es mejor asignar recursos de bajos conocimientos a tareas complejas, y viceversa. Con las sucesivas ejecuciones, el algoritmo ira “aprendiendo” que, por ejemplo, un recurso Junior es mejor que un recurso Senior frente a tareas de alta complejidad. Lo opuesto sucederá si la tarea es de baja complejidad, y el Senior será ponderado por sobre el Junior. Entre las suposiciones utilizadas para la definición del criterio de evaluación se plantea que una de las razones por una baja calificación es que el recurso no cumplió con el requerimiento en el tiempo que fue estimado, por ello se aumenta o disminuye el tiempo real en que la tarea fue realizada según la calificación que recibieron los recursos en la misma. Finalmente, para evaluar la calidad de un conjunto de asignaciones para un proyecto/sprint, se calcularán diferentes métricas del mismo. Se obtendrá el promedio de las calificaciones de 63 los recursos asignados y el tiempo total del proyecto/sprint, lo que permitirá observar el comportamiento del algoritmo a medida que se va incrementando el contenido de la Memoria Organizacional. 5.2. Casos de estudio A fin de medir el beneficio que tendría la utilización de una metodología ágil dentro de una organización, se define un caso de estudio que compara los resultados de aplicar el algoritmo de planeamiento a dos proyectos idénticos en cuanto a recursos, tareas y requerimientos, pero planificando uno de ellos bajo el modelo tradicional de cascada y el otro mediante la metodología ágil “Scrum”. Las métricas utilizadas para evaluar los resultados obtenidos es el promedio de las calificaciones de las tareas y duración total del proyecto. También se analizan resultados parciales en el caso del análisis de un proyecto Scrum, mostrando los tiempos y puntajes por sprint. Las métricas para cada tipo de configuración de proyecto, son comparadas mediante el uso de gráficos y tablas, con el objetivo de mostrar la evolución del aprendizaje del algoritmo. 5.2.1. Caso de estudio 1: Metodología “cascada” vs. Metodología ágil “Scrum” En esta sección, se compararán las ejecuciones del algoritmo sobre una configuración tipo “cascada”, con las ejecuciones utilizando la configuración “Scrum”. La principal diferencia entre estos 2 tipos de configuraciones, es la forma en que Scrum divide al proyecto en Sprints. Como se explicó en el capítulo 1, la metodología Scrum se basa en iteraciones denominadas “sprints”, y en cada una de ellas se llevan a cabo un cierto número de tareas. A diferencia de Scrum, una metodología “cascada”, se caracteriza por una ejecución ininterrumpida del plan de un proyecto, realizando tarea tras tarea. Los datos obtenidos de este caso de estudio, demuestran que el algoritmo realiza una mejor planificación en un ambiente Scrum. Esto se debe a que cada ejecución del algoritmo, contemplara el conocimiento generado en las ejecuciones anteriores. En cambio, en “cascada”, se planifica el proyecto en una sola ejecución del algoritmo. 64 5.2.1.A. Configuración del experimento Para este caso de estudio se utilizaron dos proyectos idénticos, pero se planificaron de diferentes maneras. En uno de ellos, al que mencionaremos de ahora en más como “proyecto cascada”, se realizó la planificación de todas las tareas en un único sprint y en el otro proyecto se realizó la planificación de las mismas tareas, pero divididas en tres sprints, cada uno de los cuales contendrá algunas de las tareas planificadas en el primer proyecto “cascada”. A este segundo proyecto lo denominaremos “proyecto ágil”. La tabla 5.2 muestra las tareas involucradas en cada uno de los proyectos, junto con los requerimientos de habilidades en cada una de ellas, así como también los recursos disponibles para ser asignados para su resolución. Se incluye también el sprint al que fueron asignadas para la ejecución del algoritmo utilizando la metodología ágil. User Story Tarea Requerimientos Soporte de persistencia Diseñar estructura de base de datos Implementar altas bajas y modificaciones Desarrollo de login Diseñar interfaz de login Implementar funcionalidad para inicio de sesión Visualización de panel de planning poker en entorno 3D Crear imágenes e interfaz Implementar script para eventos del mouse Implementar lógica de panel Implementar soporte para multijugador Implementación de avatar Implementar animaciones del avatar Agregar control de movimiento Crear modelo 3D del avatar Implementar sala de juego 3D Crear modelo 3D de la sala Implementar soporte multijugador # Sprint 1 Programador senior Programador semi-senior 1 Diseñador gráfico junior Programador junior 2 Diseñador gráfico junior Programador junior Programador semi-senior Programador senior 2 Programador semi-senior, Diseñador gráfico senior Programador semi-senior, Diseñador gráfico semi-senior Diseñador gráfico senior 3 Diseñador gráfico junior Programador senior Tabla 5.2: Tareas involucradas en cada uno de los proyectos. En la tabla 5.3 se pueden apreciar los recursos disponibles y los roles que cada uno de ellos puede desempeñar. 65 Recurso Rodrigo Roberto Ana Martin Aníbal Julio Roles que puede ejercer Programador junior, Programador semi-senior, Programador senior Programador junior, Programador semi-senior Programador junior Diseñador gráfico junior, Diseñador gráfico semi-senior, Diseñador gráfico senior Diseñador gráfico junior, Diseñador gráfico semi-senior Diseñador gráfico junior Tabla 5.3: Recursos disponibles para su asignación a tareas, con los roles que pueden ejercer. 5.2.1.B. RESULTADOS Y ANALISIS DEL CASO DE ESTUDIO Las siguientes evaluaciones corresponden a las sucesivas ejecuciones del algoritmo de planning, comenzando en un estado en el cual la memoria organizacional se encuentra sin ningún tipo de conocimiento. El contenido de la misma se irá incrementando a medida que se ejecuten nuevos sprints, como así también lo hará la calidad de cada una de las asignaciones. Ejecución Proyecto cascada En la tabla 5.4 se muestra el resultado de la primera ejecución del algoritmo de planning, efectuada sobre el “proyecto cascada”. Este caso no cuenta con conocimiento previo en la memoria organizacional, como así tampoco ningún tipo de preferencia entre recursos, por lo tanto se asignó el primer recurso disponible que el algoritmo de planning encontró apto para satisfacer el requerimiento de la tarea. Tarea Requerimiento Recurso Rol ejercido Puntaje Agregar control de movimiento Diseñador gráfico semi senior Rodrigo Senior 4 Agregar control de movimiento Programador semi senior Roberto Semi-senior 1 Crear imágenes e interfaz Diseñador gráfico junior Martin Senior Crear modelo 3D de la sala Diseñador gráfico junior Anibal Semi-senior 4 Crear modelo 3D del avatar Diseñador gráfico senior Martin Senior 1 Diseñar estructura de base de datos Programador senior Rodrigo Senior 1 Diseñar interfaz de login Diseñador gráfico junior Martin Senior 10 66 10 Implementar animaciones del avatar Diseñador gráfico senior Martin Senior 1 Implementar animaciones del avatar Programador semi senior Rodrigo Senior 4 Implementar altas bajas y modificaciones (ABM) Programador semi senior Rodrigo Senior 4 Implementar funcionalidad para inicio de sesión Programador junior Rodrigo Senior 10 Implementar lógica de panel Programador semi senior Rodrigo Senior 4 Implementar script para eventos del mouse Programador junior Rodrigo Senior 10 Implementar soporte multijugador Programador senior Rodrigo Senior 1 Implementar soporte para multijugador Programador senior Roberto Semi-senior 4 Tabla 5.4: Proyecto cascada. Asignaciones realizadas por el algoritmo junto con las calificaciones obtenidas por cada uno de los recursos. Los puntajes asignados en la tabla 5.4, provienen de la figura 5.1. Por ejemplo, la primera fila de la tabla, corresponde a una tarea que requiere un recurso semi-senior. El algoritmo asignó un recurso desempeñando el rol de Senior. De acuerdo a la tabla 5.1, el puntaje es 4. Evaluación total del proyecto: ∑ SCORE / cantidad de tareas planificadas = 4.6 Tiempo total en horas hombre: 202 horas. Ejecución Proyecto ágil En la figura 5.5 se muestra el resultado de la ejecución del algoritmo de planning, efectuada sobre el “proyecto ágil”. Este caso tampoco cuenta con conocimiento previo en la memoria organizacional, como así tampoco ningún tipo de preferencia entre recursos, por lo tanto, se asignó el primer recurso disponible que el algoritmo de planning encontró apto para satisfacer el requerimiento de la tarea. Como se mencionó anteriormente, este proyecto cuenta con las mismas tareas que el de la ejecución anterior, pero divididas en tres sprints, por lo que se presentan las asignaciones divididas en ellos. El resultado que se espera obtener en esta ejecución, es que las asignaciones del primer sprint sean idénticas a las realizadas por el algoritmo en la ejecución anterior, y que las 67 asignaciones de sprints posteriores sean mejor calificadas dado que se conserva el conocimiento generado en cada una de las planificaciones de los sprints Tarea Requerimiento Recurso Rol ejercido Score Sprint Diseñar estructura de base de datos Programador senior Rodrigo Programador senior 1 1 Diseñar interfaz de login Diseñador gráfico junior Martin Diseñador Gráfico Senior 10 1 Implementar altas bajas y modificaciones (ABM) Programador semi senior Rodrigo Programador senior 4 1 Implementar funcionalidad para inicio de sesión Programador junior Rodrigo Programador senior 10 1 Agregar control de movimiento Programador semi senior Rodrigo Programador Senior 4 2 Agregar control de movimiento Diseñador gráfico semi senior Martin Diseniador Gráfico Senior 4 2 Crear imágenes e interfaz Diseñador gráfico junior Martin Diseniador Gráfico Senior 10 2 Crear modelo 3D del avatar Diseñador gráfico senior Aníbal Diseniador Gráfico Semi Senior 4 2 Implementar animaciones del avatar Programador semi senior Rodrigo Programador Senior 4 2 Implementar animaciones del avatar Diseñador gráfico senior Martin Diseniador Gráfico Senior 1 2 Implementar lógica de panel Programador semi senior Rodrigo Programador Senior 4 2 Implementar script para eventos del mouse Programador junior Rodrigo Programador Senior 10 2 Implementar soporte para multijugador Programador senior Roberto Programador Semi Senior 4 2 Crear modelo 3D de la sala Diseñador gráfico junior Martin Diseniador Gráfico Senior 10 3 Implementar soporte multijugador Programador senior Roberto Programador Semi Senior 4 3 Tabla 5.5: Proyecto ágil. Asignaciones realizadas por el algoritmo junto con las calificaciones obtenidas por cada uno de los recursos. 68 Los puntajes asignados en la tabla 5.5, provienen de la figura 5.1. Por ejemplo, la primera fila de la tabla, corresponde a una tarea que requiere un recurso senior. El algoritmo asignó un recurso desempeñando el rol de Senior. De acuerdo a la tabla 5.1, el puntaje es 1. Evaluación total del proyecto: ∑ SCORE / cantidad de tareas planificadas = 5.6 Tiempo total en horas hombre: 188 horas. Comparación de las ejecuciones Como se puede apreciar en base a los resultados obtenidos, la planificación realizada por el algoritmo mejoró notablemente, tanto en score promedio como en duración de las tareas a realizar, cuando se planificó el proyecto ágil. Esto se debe a que, entre cada ejecución de un sprint, se tiene en cuenta la información generada en cada uno de los sprints planificados previamente, la cual es almacenada en la memoria organizacional. Analizando las asignaciones efectuadas por el algoritmo en la ejecución del sprint número uno del proyecto ágil, se puede apreciar que son idénticas a las generadas en el proyecto cascada. Esto se debe a que al inicio de la ejecución del proyecto ágil no se cuenta con información previa almacenada en la memoria organizacional, como se mencionó anteriormente. Al realizar la planificación del sprint número dos del proyecto ágil, se puede apreciar que dos tareas fueron asignadas a diferentes recursos respecto de la ejecución del proyecto cascada, lo que generó un incremento en el score obtenido, así como también en el tiempo que llevó realizar las mismas. Luego se realizó la planificación del sprint número tres en la que el algoritmo, analizando la información almacenada en la memoria organizacional, comprendió que se podía realizar mejores asignaciones para dos de las tareas involucradas en el sprint. Estas asignaciones, al igual que ocurrió con el sprint anterior, permitió mejorar el score promedio del mismo y el tiempo de realización de las tareas. A continuación, se presentan las tareas en las que se obtuvo una mejor calificación en la ejecución del proyecto ágil, respecto del proyecto cascada. 69 TAREA Agregar control de movimiento REQUERIMIENTO Programador semi senior Recurso asignado proyecto cascada: Score obtenido: Roberto (Programador semi-senior) 1 Recurso asignado proyecto ágil: Score obtenido: Rodrigo 4 (Programador senior) En cuanto al tiempo de realización de la tarea, se obtienen los siguientes valores: Tiempo realización en horas hombre (proyecto cascada) = 19 hs. Tiempo realización en horas hombre (proyecto ágil) = 15 hs. En este caso se ve una mejora de 4hs en la metodología Ágil con respecto a Cascada. En el caso Cascada, al no contar con información histórica, el algoritmo asigno el recurso que encajaba perfectamente. Luego, en la ejecución Scrum, el algoritmo ya contaba con el puntaje de la asignación Cascada, e intento mejorarla. TAREA Crear modelo 3D del avatar REQUERIMIENTO Diseñador gráfico senior Recurso asignado proyecto cascada: Score obtenido: Julio (Diseñador gráfico senior) 1 Recurso asignado proyecto ágil: Score obtenido: Martin (Diseñador gráfico semi-senior) 4 Tiempo realización en horas hombre (proyecto cascada): 24 hs. Tiempo realización en horas hombre (proyecto ágil): 22 hs. En este caso, la mejora en cuanto al puntaje es igual que el caso anterior. Sin embargo, la mejora del tiempo no es tan notoria. Esto se debe a que se asignó un recurso Semi Senior, y en el caso anterior, un recurso Senior. TAREA REQUERIMIENTO Crear modelo 3D de la sala Diseñador gráfico junior Recurso asignado proyecto cascada: Score obtenido: Martin (Diseñador gráfico semi-senior) 4 Recurso asignado proyecto ágil: Score obtenido: Julio (Diseñador gráfico senior) 10 70 Tiempo realización en horas hombre (proyecto cascada) = 12 hs. Tiempo realización en horas hombre (proyecto ágil) = 6 hs. Una vez más, se puede ver una mejoría notable en los tiempos. Esto se debe a que la tarea requería un recurso de pocos conocimientos, y en la ejecución para Scrum se asignó un recurso Senior. TAREA Implementar soporte para multijugador REQUERIMIENTO Programador senior Recurso asignado proyecto cascada: Score obtenido: Rodrigo (Programador senior) 1 Recurso asignado proyecto ágil: Score obtenido: Roberto (Programador semi-senior) 4 Tiempo realización en horas hombre (proyecto cascada): 24 hs. Tiempo realización en horas hombre (proyecto ágil): 22 hs. La ventaja del enfoque Scrum por sobre el Cascada, es la granularidad temporal. En Scrum, la ejecución del proyecto esta divididas en unidades temporales denominadas sprints. Esto permite contar con información en la MO al momento de comenzar cada sprint. En el caso del sprint 1, como se mencionó anteriormente, no se cuenta con información en la MO. Es por ello que las asignaciones del enfoque Cascada coinciden para las tareas del Sprint 1 en el enfoque Scrum. 5.2.2. Caso de estudio 2: Capacidad de aprendizaje Cuando se realiza la planificación de un proyecto, la herramienta guarda información sobre las tareas involucradas. Dicha información será utilizada en las posteriores ejecuciones, lo que permitirá lograr mejores asignaciones y un consecuente incremento en el promedio de calificaciones del proyecto. Para comprobar que la herramienta cumple con esta característica, se creó un caso de estudio que involucra cinco proyectos, con exactamente las mismas tareas y requerimientos. El 71 algoritmo fue ejecutado una vez para cada uno de ellos. Se utilizaron las mismas tareas, requerimientos y recursos del caso de estudio 1, del proyecto Cascada. La MO no contaba con información previamente almacenada, por lo que la primera vez que se ejecutó el algoritmo, no se tenía información sobre el desempeño de los recursos, situación que fue cambiando con la ejecución de los diferentes proyectos. Por lo tanto, los puntajes promedio por tarea y score final del Proyecto 1, coinciden con los puntajes del caso 1, del proyecto cascada. En el caso de estudio 1, cuando se analizó el enfoque Scrum, se demostró que el algoritmo aprendía sobre los recursos. Dicho aprendizaje, iba mejorando entre las sucesivas ejecuciones, sprint a sprint. Para este caso de prueba, para que el experimento no se vea influenciado por conocimiento intermedio, se decidió usar un enfoque Cascada, con el fin de demostrar que el algoritmo aprende en un ambiente de múltiples proyectos. En la tabla 5.6 se pueden observar los diferentes proyectos, con sus respectivas tareas y el puntaje promedio obtenido por los recursos que fueron asignados a cada una de ellas. Score por Tarea Proyecto 1 Proyecto 2 Agregar control de movimiento 2.5 4 7 7 7 Crear imágenes e interfaz 10 10 10 10 10 Crear modelo 3D de la sala 4 10 10 10 10 Crear modelo 3D del avatar 1 4 4 4 4 Diseñar estructura de base de datos 1 1 1 4 1 Diseñar interfaz de login 10 10 10 10 10 Implementar animaciones del avatar 2.5 2.5 4 7 7 72 Proyecto 3 Proyecto 4 Proyecto 5 Implementar altas bajas y modificaciones (ABM) 4 4 4 4 10 Implementar funcionalidad para inicio de session 10 10 10 10 10 4 1 1 10 10 10 10 10 10 10 Implementar soporte multijugador 1 4 4 4 4 Implementar soporte para multijugador 4 4 4 4 4 4.92 5.73 6.07 7.23 7.46 Implementar lógica de panel Implementar script para eventos del mouse Score promedio del Sprint Tabla 5.6: Puntaje obtenido en cada asignación de las tareas involucradas en los diferentes proyectos. Los puntajes de la tabla 5.6 se calculan en base a la tabla 5.1. En la tabla 5.1, solo se pueden tener valores 1, 4 o 10. Sin embargo, en la tabla se pueden ver valores decimales, por ejemplo, para la tarea “Agregar control de movimiento”. Esto se debe a que, para este análisis, se usa el promedio por tarea. Dicha tarea requería 2 recursos, y el algoritmo asignó a cada uno 7 y 4 puntos respectivamente. El promedio entre ambas da 5.5 pts. La tabla 5.6 en la última fila muestra para cada sprint, el Score promedio, que se calcula en función de los puntajes de cada tarea. El valor del score promedio va en aumento si comparamos los sprints desde el primero hasta el último. Análogamente, también se ve un incremento en el puntaje promedio para cada tarea. Por ejemplo, si tomamos como referencia la tarea “Implementar soporte para multijugador”, en el Sprint 1 tuvo un puntaje de 4, pero en el Sprint 4 ya alcanzó su máximo. El incremento del score de las tareas y del score promedio a lo largo de los sprints, evidencia que el algoritmo va adquiriendo conocimiento sobre los recursos. El conocimiento es usado por el algoritmo para tratar de mejorar las asignaciones de las tareas, y minimizar los tiempos del sprint. Al mismo tiempo, el algoritmo se retroalimenta con el conocimiento generado ejecución a ejecución. 73 Como nota complementaria del análisis, si se observa la tabla 5.6 se puede apreciar que la tarea “implementar lógica de panel” tuvo una puntuación menor en la segunda y tercera ejecución del proyecto respecto de la primera, para luego llegar a la puntuación máxima alcanzada en las últimas dos planificaciones del proyecto. Este comportamiento contrario al análisis que se viene desarrollando tiene una explicación racional. Dado que el algoritmo intenta encontrar siempre la mejor planificación posible para cada proyecto en base al contenido de la memoria organizacional, puede suceder que para mejorar la puntuación general del proyecto mejorando algunas asignaciones, sea necesario que otras tareas, que previamente tenían mejores puntuaciones, sean asignadas a recursos menormente calificados. En otras palabras, se asigna de una peor manera un recurso, para que el asignado anteriormente esté disponible para realizar otras tareas que implicarán un incremento mayor en el puntaje promedio del proyecto. La figura 5.7 muestra cómo se va incrementando el puntaje promedio obtenido por cada uno de estos proyectos idénticos, hasta lograr obtener una estabilidad que indica que se ha alcanzado un nivel óptimo en cuanto a las asignaciones efectuadas por el algoritmo. Figura 5.7: Puntaje promedio obtenido por cada proyecto. 74 Se realiza un análisis similar teniendo en cuenta los tiempos necesarios para llevar a cabo cada tarea, mostrando el tiempo total del proyecto para cada ejecución del algoritmo. Como era de esperarse, hay una relación inversamente proporcional entre el puntaje obtenido por cada una de las tareas y el tiempo total del proyecto, a mayor puntuación obtenida, menor será el tiempo de ejecución de la tarea. Las siguientes dos figuras, 5.8 y 5.9, muestran los tiempos para cada Sprint, y la curva de duración que muestra esta relación inversamente proporcional. Tiempo por Tarea (horas) Proyecto 1 Proyecto 2 Proyecto 3 Proyecto 4 Proyecto 5 16.15 20 20 16.15 16.15 Crear imágenes e interfaz 6.4 6.4 6.4 6.4 6.4 Crear modelo 3D de la sala 6.4 6.4 6.4 6.4 6.4 Crear modelo 3D del avatar 16 16 16 16 16 Diseñar estructura de base de datos 16 16 16 16 16 Diseñar interfaz de login 6.4 6.4 6.4 6.4 6.4 Implementar animaciones del avatar 19 16 16 16 16 Implementar altas bajas y modificaciones 16 16 16 16 16 Implementar funcionalidad para inicio de sesión 6.4 6.4 6.4 6.4 6.4 Implementar lógica de panel 16 16 16 16 16 Implementar script para eventos del mouse 6.4 6.4 6.4 6.4 6.4 Implementar soporte multijugador 24 22 22 16 16 Implementar soporte para multijugador 22 22 16 16 16 Tiempo Total del proyecto 177.15 176 170 160.15 160.15 Agregar control de movimiento Figura 5.8: Tiempo de ejecución de cada tarea y tiempo total del proyecto. 75 Figura 5.9: Tiempo promedio de ejecución de cada proyecto. Comparando los gráficos presentados en las figuras 5.7 y 5.9, puede apreciarse lo mencionado anteriormente, la relación inversamente proporcional entre el tiempo de ejecución de cada proyecto y el puntaje promedio obtenido en cada uno de ellos. 5.2.3. Caso de estudio 3: Capacidad de recuperación En un ambiente de desarrollo de software, sin importar la metodología que se aplique, las situaciones y condiciones cambian constantemente. La calidad de ejecución de los proyectos, puede verse afectada por múltiples factores, así sean internos o externos. Por ejemplo, las tareas pueden verse afectadas por el bajo desempeño de cierto número de desarrolladores, los clientes pueden cambiar los requisitos a último momento, o algún servicio del cual se dependencia tiene errores que impiden el desarrollo de nuestro proyecto. 76 Frente a estos factores, el algoritmo irá almacenando la información que le sea provista, y en función de ella deberá realizar las futuras asignaciones. Particularmente, estamos interesados en el caso de que un cierto recurso, que en sus últimas asignaciones había tenido un buen puntaje, empieza a tener performances negativas o viceversa, un recurso que empezó teniendo actuaciones pobres, empezó a esforzarse y mejorar. Sea cual sea el caso, el algoritmo tiene que ser capaz de adaptar sus decisiones para dejar de elegir el desarrollador que empezó a fallar en sus actividades, y elegir al que comenzó a mejorar. Esta capacidad del algoritmo de adaptarse a los cambios de los recursos, la denominamos capacidad de recuperación. Representa la capacidad del algoritmo de manipular la memoria organizacional, de tal forma de adaptarse a los cambios descriptos anteriormente, y aun así mantener las asignaciones lo más optimas posibles. En esta sección, se desarrollará un experimento donde se simula una situación de cambio en las aptitudes de los recursos. Para ello, se invertirán los criterios de calificación, asignando de forma opuesta. Los resultados serán mostrados de la misma manera que en los capítulos anteriores. 5.2.3.1 Configuración del proyecto Para la implementación del caso de estudio se toma como punto de partida el estado del caso de estudio 2. En ese caso, se planificó 5 veces el mismo proyecto, evidenciando una mejora entre cada ejecución. Para comenzar este caso de estudio, la MO conseguida en el caso 2 será reutilizada. El criterio de calificación del caso 2 será alterado, para calificar de manera inversa, simulando un cambio de las performances de los recursos. Por lo tanto, se inicia este caso de prueba con una MO que ya contiene información sobre los recursos. El resultado que se espera obtener con este caso de estudio es que, en el primer proyecto que utilice este nuevo criterio de calificación, el puntaje promedio obtenido por el mismo baje notablemente respecto del último proyecto planificado con el criterio de calificación utilizado en el caso 2. 77 El nuevo criterio de calificación, a diferencia del usado anteriormente, califica las diferentes asignaciones de manera opuesta. Por este motivo los recursos que obtenían un 10 en sus calificaciones para un determinado requerimiento ahora serán calificados con un 1. Por el contrario, los recursos que anteriormente mostraban un desempeño de 1 y 4 presentaran calificaciones de 10 y 8 respectivamente. Tarea/Recurso Senior Semi-Senior Junior Alto 10 8 1 Media 8 10 1 Baja 1 8 10 Tabla 5.9: Nuevo criterio de evaluación para demostrar la capacidad de recuperación La tabla 5.9 presenta un criterio de calificación opuesto al de la tabla 5.1. La semántica de la tabla es la misma. A continuación se presenta la tabla 5.10, mostrando las sucesivas ejecuciones del algoritmo a lo largo de todos los proyectos con el nuevo criterio de calificación. La última fila de la tabla brinda la información más pertinente para este experimento, que es el puntaje promedio por sprint, el cual aumenta ejecución tras ejecución. Proyectos Score por Tarea 6 7 8 9 10 11 Agregar control de movimiento 4.5 8 8 8 8 8 8 8 8 8 8 8 Crear imágenes e interfaz 1 1 1 1 1 1 1 1 1 1 1 1 Crear modelo 3D de la sala 1 1 1 1 1 1 1 1 1 1 1 1 Crear modelo 3D del avatar 8 8 8 8 8 8 8 8 8 8 8 8 78 12 13 14 15 16 17 Diseñar estructura de base de datos 10 8 10 10 10 10 10 10 8 10 10 10 Diseñar interfaz de login 1 1 1 1 1 1 1 1 1 1 1 1 Implementar animaciones del avatar 4.5 4.5 8 8 8 8 8 10 8 10 10 10 1 8 8 8 8 8 8 10 10 10 10 10 1 1 1 1 1 1 1 1 1 1 1 1 Implementar lógica de panel 1 1 8 8 8 8 8 8 8 8 10 10 Implementar script para eventos del mouse 1 1 1 1 1 1 1 1 8 8 8 10 Implementar soporte multijugador 8 8 8 8 8 8 8 8 8 8 8 10 Implementar soporte para multijugador 8 8 8 8 8 8 8 8 8 8 8 8 3.84 4.5 5.46 5.46 5.46 5.46 5.46 5.76 6 6.31 6.46 6.76 Implementar altas bajas y modificaciones (ABM) Implementar funcionalidad para inicio de sesión Score Promedio del Sprint Figura 5.10: Nuevo criterio de evaluación para demostrar la capacidad de recuperación Como era de esperarse, y como se ha visto a lo largo de todo este capítulo, el puntaje promedio de cada tarea y el score promedio de cada proyecto va en aumento con las sucesivas ejecuciones del algoritmo En la planificación del proyecto número seis, ocurre un abrupto descenso en el promedio de las calificaciones. Esto es debido a que el conocimiento en la memoria organizacional es obsoleto, ya que no representa la realidad de la organización, sino lo contrario. A partir de la planificación del proyecto número siete, se puede ver como la herramienta empieza a realizar nuevamente el trabajo de almacenar conocimiento en la MO y a utilizar el mismo para aumentar la calidad de los resultados. Por otra parte, el mecanismo de 79 envejecimiento presente en la MO posibilita "olvidar" paulatinamente parte el conocimiento de mayor antigüedad, permitiendo conservar la experiencia más reciente y representativa de la realidad. En la Figura 5.11 se puede contemplar el desempeño del algoritmo a través de los distintos proyectos. La línea vertical que divide el gráfico entre los proyectos cinco y seis representa el cambio en el criterio de calificación de las asignaciones. Figura 5.11: Score promedio por proyecto. Capacidad de recuperación. Finalmente, luego de sucesivos Sprints la herramienta muestra como es capaz de recuperarse ante un cambio dramático en la calidad de los recursos, obteniendo resultados finales muy similares a los capturados en la anterior evaluación. Como conclusión, luego de las sucesivas planificaciones de los proyectos, la herramienta muestra como es capaz de recuperarse ante un cambio drástico en la calidad de los recursos, obteniendo resultados finales muy similares a los capturados en la anterior evaluación. Cabe destacar, que la curva del score promedio a partir del sprint número 6, crece más lentamente que entre los sprints 1 y 5. Esto se debe a que la memoria organizacional estaba totalmente vacía entre los sprints 1 y 5, mientras que a partir del sprint 6, el algoritmo tuvo que asignar recursos teniendo en cuenta el conocimiento previamente generado en las ejecuciones anteriores. 80 Capítulo 6 Conclusiones En este trabajo se desarrolló una herramienta con soporte inteligente que permite una asistencia a miembros de un equipo en la planificación de actividades y asignación a responsables en el contexto de un proceso iterativo e incremental. Como punto de partida, se seleccionó Virtual Scrum, una herramienta de administración de proyectos desarrollada por los estudiantes de la Facultad de Ciencias Exactas de la UNICEN. A la misma, se le incorporó asistencia inteligente, implementando en ella los enfoques propuestos en (Villaverde, 2009) y (Berdún, 2009).El primero enfoque aporta la capacidad de capturar, retener y recuperar la información relevante a la organización en relación a la administración de proyectos a través de una Memoria Organizacional (MO) basada en perfiles de usuario. El otro enfoque presenta un algoritmo de planning para automatizar el planeamiento basándose en el conocimiento organizacional adquirido por el enfoque anterior. El desarrollo y la integración de estos enfoques permitieron enriquecer la herramienta con capacidades de asistencia personalizada para el equipo de desarrollo teniendo como base de conocimiento para tal fin de la Memoria organizacional. Con lo cual, la asistencia al usuario se determina de acuerdo al conocimiento logrado a través de la captura y almacenamiento de las decisiones previas del equipo. De esta forma, se aumenta el conocimiento organizacional y se reduce el impacto que pueda producir la amnesia organizacional. 6.1. Contribuciones A lo largo de esta tesis se presentó una herramienta que asiste al administrador de proyectos en la construcción de un plan de trabajo utilizando el conocimiento adquirido por la organización. Esta herramienta cuenta con un algoritmo de planificación adaptado para utilizar el conocimiento de la organización y del equipo de desarrollo para realizar el armado del plan de trabajo. A su vez cuenta con una memoria organizacional que permite la captura y almacenamiento del conocimiento generado en la organización. En este sentido, el resultado 81 obtenido no sólo permite alcanzar los objetivos planteados, sino que lo hace acorde a lo registrado en la memoria organizacional. La contribución principal de este trabajo es una herramienta que permite armar el plan de trabajo de un proyecto acorde al conocimiento de la organización y del administrador. Esta herramienta hace uso de la memoria organizacional en beneficio del proyecto actual en ejecución, disminuyendo de esta forma la dependencia del conocimiento del administrador. Esto permite que, ante un nuevo proyecto, el administrador disponga de una herramienta que le permite aprovechar cada una de las experiencias ganadas durante los proyectos anteriores, sin la necesidad de que éste haya sido partícipe en los mismos. Por otra parte, se contribuye en la disminución del efecto que produce la amnesia organizacional mediante la incorporación de un mecanismo de captura de conocimiento que actúa de manera no intrusiva recolectando la información generada a partir de la interacción entre el usuario y la herramienta. A partir de la información adquirida se extrae el conocimiento mediante la utilización de algoritmos de Machine Learning, que luego será utilizada a la hora de planificar un proyecto. Asimismo, otro aspecto también importante es la incorporación del modelo de integración, el cual introduce gran flexibilidad a la hora de incorporar tanto el algoritmo de planificación, como la memoria organizacional y Virtual Scrum en una sola herramienta. Este permitirá que trabajos futuros tengan gran libertad a la hora de reemplazar o extender los principales componentes que conforman la herramienta desarrollada. Por otro lado, la integración del enfoque propuesto sobre una herramienta de administración de proyectos desarrollada íntegramente por los alumnos de la Facultad de Ciencias Exactas, contribuye en gran medida al crecimiento de un ambicioso proyecto ideado por los docentes de la Facultad y que tiene como objetivo principal la capacitación de los alumnos en aspectos claves del mercado laboral como son el trabajo en equipo y el desarrollo de grandes herramientas que involucran cientos de personas trabajando durante varios años y continuando, cada año, el trabajo desarrollado por los alumnos involucrados en años anteriores. En lo personal, es gratificante aportar un granito de arena en este proyecto que 82 permitirá a los alumnos, en algunos años, realizar prácticas virtuales que los capacitarán en la administración de proyectos y en el uso de metodologías ágiles. 6.2. Limitaciones y trabajos futuros Actualmente la herramienta sólo captura conocimiento en base a las habilidades del recurso, los requerimientos de las tareas y las calificaciones obtenidas, sin tener en cuenta aspectos como el trabajo en equipo, es decir que el desempeño de un recurso para las mismas tareas puede variar dependiendo el grupo trabajo en el que se encuentra. Por otro lado tampoco se tienen en cuenta otros aspectos externos como por ejemplo el equipamiento con el que cuenta cada recurso para realizar su trabajo. La incorporación de un mecanismo de captura de conocimiento más complejo, que tenga en cuenta los aspectos mencionados anteriormente, incrementaría aún más la potencia de la herramienta a la hora de planificar automáticamente. A la hora de planificar un proyecto la herramienta posee actualmente una restricción en cuanto al tiempo, donde la duración de un Sprint no puede superar una cota establecida por el administrador. Sin embargo no cuenta con una restricción que limite el presupuesto a utilizar, la cual es una de las características principales a tener en cuenta a la hora de planificar un proyecto. Incorporar restricciones que tengan en cuenta el costo del proyecto ayudará a ajustar aún más el plan de proyecto a las limitaciones o necesidades de la organización. En la actualidad la herramienta permite la captura de conocimiento a través de su utilización. Por este motivo el conocimiento disponible para realizar la planificación automática de los primeros Sprints resulta muy escaso, y en primera instancia nulo. Dado que una organización que empieza a utilizar Intelligent Virtual Scrum podría tener conocimiento previo sería muy conveniente brindar la posibilidad de importarlo manualmente, ya que este conocimiento previo permitirá obtener resultados acorde a la realidad de la organización, y así se evitarán los bajos resultados que se obtienen cuando no se cuenta con experiencias previas almacenadas en la MO. 83 ANEXO I Virtual Scrum es una plataforma 3D de código abierto, desarrollada por la UNICEN. Actualmente se encuentra en desarrollo, y año a año sigue siendo modificada y mejorada. El propósito de esta herramienta es facilitar la administración del ciclo de vida de un proyecto, permitiendo a los usuarios que interactúen entre sí en un ambiente distribuido. Virtual Scrum, como su nombre indica, se basa en la metodología ágil de desarrollo de software Scrum. Entre sus funcionalidades principales, se pueden destacar, en lo que respecta a la metodología Scrum, la administración de proyectos, tareas y recursos. Además, brinda a los usuarios canales de comunicación, como un chat integrado, y conexión al mundo de las redes sociales. La conectividad con el mundo de las redes sociales, y las grandes posibilidades que presenta su característica de código abierto, hacen de Virtual Scrum una opción atractiva a la hora de elegir una herramienta para metodologías Scrum. En el capítulo de 3 de esta tesis, se identificaron tres partes esenciales: la necesidad de una herramienta de gestión de proyectos, un repositorio de almacenamiento acorde y un componente de planeamiento que pueda consumir este repositorio. Virtual Scrum aplicaba perfectamente ante estas necesidades, ya que puede ser modificado a conveniencia para poder interactuar con el repositorio y el algoritmo de planning. Esto permitió modificarlo de forma tal de poner cumplir con las necesidades de cada una de las partes identificadas. Para que Virtual Scrum logre esta interacción, fue necesario el agregado de las siguientes funcionalidades: - Interfaz para que desde Virtual Scrum, el usuario pueda seleccionar un conjunto de tareas a planificar (etapa de definición del proyecto). - Interfaz para que desde Virtual Scrum, el usuario pueda interactuar con el algoritmo de planeamiento y sus resultados (etapa de planificación del sprint). - Interfaz para que desde Virtual Scrum, el usuario pueda calificar a un recurso (etapa de Sprint Retrospective). El funcionamiento de cada una de estas etapas fue descrito en el capítulo 4. 84 Para que el usuario pueda realizar la planificación de un sprint, es necesario que cuente con el listado de sprint disponibles para planear, y el listado de tareas existentes en el backlog. De esta manera, el usuario podrá elegir que sprint desea planear, y que tareas quiere incluir. Virtual Scrum logra esto desde el menú Planeamiento. La figura 7.A muestra la interfaz mencionada. Figura 7.A. Ventana de armado de sprint backlog y planificación. Una vez que el algoritmo finaliza el planeamiento para un conjunto dado de tareas, el usuario debe ser capaz de analizar los resultados arrojados por el algoritmo. Como se mencionó en el capítulo 3, los resultados pueden satisfacerlo o no, lo que implica que el ciclo de planeamiento puede tomar 2 cursos: aceptar el plan o realizar un nuevo planning. Si el usuario elige esta última opción, se le debe proveer una interfaz para que pueda realizar modificaciones acorde a sus necesidades. La figura 7.B ilustra esta funcionalidad. Figura 7.B. Ventana de resultados de planificación. 85 Una vez que el usuario ha aceptado un plan para un sprint determinado, es necesario que se califiquen los recursos que están involucrados en la ejecución de dicho sprint. En el capítulo 3, esta actividad fue denominada como Sprint Retrospective. Es un paso muy importante en el ciclo de vida de un proyecto, ya que las calificaciones son esenciales para que el componente de planning tome sus decisiones. El usuario puede calificar a los recursos desde el menú Calificar. La figura 7.C ilustra esta funcionalidad. Figura 7.C. Ventana de calificación de asignaciones. 86 Bibliografía Ackerman y Hadverson. 2000. Ackerman, M. S. y Hadverson, C. A. Reexamining Organiza-tional Memory. Communications of the ACM, 43(1):58–64. 2000. Alavi y Leidner. 2001. Alavi, M. y Leidner, D. E. Review: Knowledge Management and Knowledge Management Systems: Conceptual Foundations and Research Issues. MIS Quarterly, 25(1):107–136. 2001. Alvesson. 1995. Alvesson, M. Management of knowledge-intensive companies. Walter de Gruyter, de Gruyter. 1995. Anand. 1998. Anand, V., Manz, C. C., y Glick, W. H. An Organizational Memory Approach to Information Management. The Academy of Management Review, 23(4):796–809. 1998. Armstrong. 1982. Armstrong, J. S. The Value of Formal Planning for Strategic Decisions: Review of Empirical Research. Strategic Management Journal, 3(3):197–211. 1982. Awad y Ghaziri. 2004. Awad, E. M. y Ghaziri, H. M. Knowledge Management. Prentice Hall, Upper Saddle River, New Jersey 07458, 1st edition. 2004. Azuan. 2002. Azuan, H. N. Organizational Amnesia: The Barrier to Organizational Learning. En OKLC. 2002. Baker. 1999. Baker. Administre sus proyectos. Ed. Pearson Educación. ISBN 970-17-02-808. 1999. Bannon, y Kuutti. 1996. Bannon, L. J. y Kuutti, K. Shifting Perspectives on Organizational Memory: From Storage to Active Remembering. En HICSS ’96: Proceedings of the 29th Hawaii In-ternational Conference on System Sciences (HICSS) Volume 3: Col. 1996. Basadur y Gelade. 2006. Basadur, M. y Gelade, G. A. The Role of Knowledge Management in the Innovation Process. Creativity and Innovation Management, 15(1):45–62. 2006. Beck et. al. 2001. Beck, Kent et. al. THE AGILE MANIFESTO. 2001. 87 Bellinger. 2002. Knowledge Management - Emerging Perspectives. Systems Thinking. 2002. Berdún. 2009. Berdun, Luis. Un algoritmo de planning para el planeamiento de proyectosTesis Doctora-do – Facultad de ciencias Exactas Universidad Nacional del Centro. 2009. Blacker. 1995. Blacker, F. Knowledge, Knowledge Work and Organizations: And overview and Interpretation. Organization Studies, 16:1021–1046. 1995. Bock, Zmud, Kim y Lee. 2005. Bock, G. W., Zmud, R. W., Kim, Y. G., dan Lee, J. N. Behavioral Intention Formation in Knowledge sharing: Examining the Roles of Extrinsic Motivators, Social- Psychological Forces, and Organizational Climate. MIS Quar. 2005. Boh. 2007. Boh, W. F. Mechanisms for sharing knowledge in project-based organizations. Information and Organization, 17(1):27–58. 2007. Bresnen. 2003. Bresnen, M., Edelman, L., Newell, S., HarryScarbrough, y JackySwan. Social practices and the management of knowledge in project environments. International Journal of Pro-ject Management, páginas 157–166. 2003. Bretón. 2001. Berthon, P., Pitt, L., y Ewing, M. Corollaries of the collective: The influence of organizacional culture and memory development on perceived decision-making context. Journal of the Academy of Marketing Science, 29(2):135–150. 2001. Clark y Fujimoto. 1991. Clark, K. B. y Fujimoto, T. Product Development Performance: Strat-egy, Organization, and Management in the World Auto Industry. Harvard Business School Press. 1991. Cockburn. 2002. Cockburn, Alistair. Agile Software Development Joins The “Would-Be” Crowd. Cutter IT Journal 15(1):TBD_PAGES. 2002. Cohn. 2006. Mike Cohn. Agile Estimating and Planning. 2006. Conklin. 2001. Conklin J. "Designing organizational memory", GDSS' working papers, available at: www.gdss.com/wp/DOM.HTM. 2001. 88 Croasdell. 2001. Croasdell, D. T. It’s Role in Organizational Memory and Learning. Information Systems Management, 18(1):1–4. 2001. Cross, R., & L. Baird. 2000. Cross, R., & L. Baird. Technology is not enough: improving performance by building organizational memory. Sloan Management Review, 41(3), 69-78. 2000. Davenport y Prusa. 1998. Davenport, T. H. y Prusak, L. Working Knowledge: How Organiza-tions Manage What TheyKnow. Harvard University Press., Cambridge, MA. 1998. DeFillippi. 2001. DeFillippi, R. J. Project-Based Learning, Reflective Practices and Learning. Management Learning, 32(1):5–10. 2001. DeFillippi y Arthur. 1998. DeFillippi, R. J. y Arthur, M. B. Paradox in project-based enterprise: the case of film making. California Management Review, 40(2):125–138. 1998. Drabble. 1995. Drabble, B. Artificial Intelligence for Project Planning. In Proceedings of the Colloqui-um on Future Developments in Project Management Systems, pp. 311-315. 1995. Drucker. 1993. Drucker, P. F. Post-Capitalist Society. HarperCollins Publishers, New York, NY, USA. 1993. Earl. 2001. Michael Earl. Knowledge Management Strategies: Toward a Taxonomy. 2001. Euzenat. 1966. Euzenat, J. Corporate memory through cooperative creation of knowledge basesand hyperdocuments.En Actes 10th knowledge acquisition workshop, páginas 1–18. 1966. Farr. 2000. Farr, K. "Organizational learning and knowledge managers", Work Study, Vol 49 No. 1, pp. 14-17. 2000. Gann y Salter. 1998. Gann, D. M. y Salter, A. Learning and Innovation Management in Project-Based, Service-Enhanced Firms. International Journal of Innovation Management, 2(4):431–454. 1998. 89 Goodman y Darr. 1998. Goodman, P. S. y Darr, E. D. Computer-Aided Systems and Commu-nities: Mechanisms for Organizational Learning in Distributed Environments. MIS Quarterly, 22(4):417–440. 1998. Guerrero y Pino. 2001. Guerrero, L. A. y Pino, J. A. Undertanding Organizational Memory. En 21st Internacional Conference of the Chilean Computer Science Society, páginas 124–132, Punta Arenas, Chile.IEEE Computer Society. 2001. Hedberg. 1981. Hedberg, B. How Organizations Learn and Unlearn. En Nystrom, P. y Starbuck, W.,editores, Handbook of Organizational Design, páginas 3–27. Oxford University Press, New York. 1981. Hobday. 2000. Hobday, M. The project-based organisation: an ideal form for managing com-plex products and systems? Research Policy, 29(7-8):871–893. 2000. Hong. 1999. Hong, J. "Structuring for organizational learning", The Leaving Organization, Vol. 6 No. 4, pp. 173435. 1999. Hughes y Cotterell. 1999. Hughes B. and Cotterell M. Software Project Management. McGraw Hill, Second Edition edition, ISBN 007 709505 7, 1999. 1999. Ipe. 2003. Ipe, M. “Knowledge sharing on organizations: A conceptual framework”, Human Resource Development Review Vol. 2, No. 4, pp. 337-359. 2003. Ireland. 2006. Lewis R. Ireland. Project Management: Strategic Design and Implementation. 2006. Jackson y Klobas. 2008. Jackson, P. y Klobas, J. Transactive memory systems in organiza-tions: Implications for knowledge directories. Decision Support Systems, 44(2):409– 424. 2008. Ke, Muñoz-Avila. 2004. Xu Ke and Héctor Muñoz-Avila. CaBMA: Case-Based Project Management Assistant. In Pro-ceedings of the Nineteenth National Conference on Artificial Intelligence, Sixteenth Conference on Innovative Applications of Artificial Intelligence. 2004. 90 Kerzner. 2001. Kerzner, H. Strategic Planning for Project Management Using a Project Management Maturity Model. John Wiley & Sons., ISBN 0-471-40039-4, 2001. 2001. Kerzner, R. 2009. Harold R. Kerzner. Project Management: A Systems Approach to Planning, Scheduling, and Controlling 10th Ed. 2009. Kodama. 2006. Kodama, M. Project-based Organization in the Knowledge-based Society: Innovation by Strategic Communities (Technology Management). Imperial College Press, London, UK, UK. 2006. Kodama, M. 1999. Kodama, M. Strategic business applications and new virtual knowledgebased businesses through community-based information networks. Information Management & Computer Security, 7(4):186–199. 1999. Kransdorff. 1998. Kransdorff, A. Corporate Amnesia: Keeping Know-How in the Company. Butterworth-Heinemann. 1998. Kransdorff, A. 2006. Kransdorff, A. Corporate DNA: Using Organizational Memory to Improve Poor Decisionmaking. Gower Publishing Limited, London. 2006. Lehner. 1998. Lehner, F., Maier, R. K., y Klosa, O. Organisational Memory Systems – Applica-tion of AdvancedDatabase & Network Technologies. En Proceedings of the 2nd Int. Conf. on Practical Aspectsof Knowledge Management (KAKM98), Basel, Switzer. 1998. Lehner y Maier. 2000. Lehner, F. y Maier, R. K. How Can Organizational Memory Theories Con-tribute toOrganizational Memory Systems? Information Systems Frontiers, 2(3-4):277–298. 2000. Liebowitz. 2001. Liebowitz, J. Knowledge Management and its Link to Artificial Intelligence. Expert Systems with Applications. 2001. Lietaer. 2002. Lietaer, B. The Future of Money, Century, London. 2002. Lubit. 2001. Lubit, R. Tacit knowledge and knowledge management: The keys to sustainable competitive advantage. Organizational Dynamics, 29(3):164–178. 2001. 91 Maybury. 2001. Maybury, M., D’Amore, R., y House, D. Expert Finding for Collaborative Virtual Environments. Communications of the ACM, 44(12):55–56. 2001. Moore. 1985. Moore, R. C. A Formal Theory of Knowledge and Action. En Hobbs, J. R. y Moore, R. C., editores, Formal Theories of the Commonsense World, páginas 319–358. Ablex, Norwood, NJ. 1985. Nasir. 2006. Mehwish Nasir. A Survey of Software Estimation Techniques and Project Planning Practices. 2006. Nonaka y Takeuchi. 1995. Nonaka, I. y Takeuchi, H. The Knowledge Creating Company: How Japanese CompaniesCreate the Dynamics of Innovation. Oxford University Press, Oxford, UK. 1995. Parthasarathy. 2007. M. A. Parthasarathy. Practical Software Estimation: Function Point Methods for Insourced and Outsourced Projects. 2007. Pedler, M. et al, Dodgson. 1989. Pedler, M. et al, Dodgson 1989, "Towards the learning company", Managment Education and Development, Vol 20 No. 1 pp. 1-8. 1989. PIM. 2010. Project Management Institute. A Guide to the Project Management Body of Knowledge 4th edition. 2010. PMI. 2004. PMI. A Guide To The Project Management Body Of Knowledge (PMBOK Guides). Project Management Institute, third edition. 2004. Prencipe y Tell. 2001. Prencipe, A. y Tell, F. Inter-project learning: processes and outcomes of knowledge codification in project-based firms. Research Policy, 30(9):1373–1394. 2001. Redding. 1997. Redding, J. "Hardwiring the learning organization". TmMing and Development. Vol. 51 No. 8, pp. 61-7. 1997. Rosenberg. 2002. Rosenberg, M. J. E-Learning: Strategies for Delivering Knowledge in the Digital Age. McGraw-Hill Professional. 2002. 92 Schwaber, Sutherland & Beedle. 2000. Ken Schwaber, Jeff Sutherland and Mike Beedle. SCRUM: An extension pattern language for hyperproductive software development. 2000. Spender a. 1996. Spender, J.-C. Making Knowledge the Basis of a Dynamic Theory of the Firm. Strategic Management Journal, 17(Winter Special Issue):45–62. 1996. Spender y Grant. 1996. Spender, J.-C. y Grant, R. M. Knowledge and the Firm: Overview. Strategic Management Journal, 17(Special Issue):5–10. 1996. Srivastava. 2000. Srivastava,B. Planning the project management way: Efficient planning by effective integration of causal and resource reasoning in RealPlan. 2000. Stein y Zwass. 1995. Stein, E. y Zwass, V. Actualizing Organizational Memory with Information Systems. Information Systems Research, 6(2):85–117. 1995. Tausworthe. 1980. Tausworthe, R. C. The work breakdown structure in software project man-agement. Journal of Systems and Software, 1:181–186. 1980. Teece. 2000. Teece, D. J. Strategies for Managing Knowledge Assets: the Role of Firm Struc-ture and Industrial Context. Long Range Planning, 33(1):35–54. 2000. Tsoukas. 1996. Tsoukas, H. The firm as a distributed knowledge system: A constructionist approach. Strategic Managment Journal, 1996 (Special Winter Issue), 11-25. 1996. Turner y Müller. 2003. Turner, J. R. y Müller, R. On the Nature of the Project as a Temporary Organization. International Journal of Project Management, 21(1):1–8. 2003. van Heijst, G., van der Spek, R. & Kruizinga. 1997. van Heijst, G., van der Spek, R. & Kruizinga, E. Corporate Memories as a tool for knowledge management, Journal of expert systems and their applications (in press). 1997. Villaverde. 2009. Villaverde, Jorge. Codificación de la Memoria Organizacional con Perfiles de Usuarios- Tesis Doctorado – Facultad de ciencias Exactas Universidad Nacional del Centro. 2009. 93 Walsh y Ungson. 1991. Walsh, J. y Ungson, G. Organizational Memory. Academy of Management Review, 16(1):57–91. 1991. Weber. 2001. Weber, R., Aha, D. W., y Becerra-Fernandez, I. Intelligent Lessons Learned Sys-tems. Expert Systems with Applications, 20(1):17–34. 2001. Weld et. al. 1995. Weld, D. S., Marks, J. and Bobrow, D. G. The Role of Intelligent Systems in the National Information Infrastructure.. AI Magazine. (16:3), 45-64, 1995. 1995. Wexler. 2001. Wexler, M. N. The who, what and why of knowledge mapping. Journal of Knowledge Management, 5(3):249–264. 2001. Wexler, M. 2002. Wexler, M. N. Organizational memory and intellectual capital. Journal of Intellec-tual Capital, 3(4):393–414. 2002. Wiig. 1997. Wiig, K. M. Knowledge Management: An Introduction and Perspective. Journal of Knowledge Management, 1(1):6–14. 1997. Windeler y Sydow. 2001. Windeler, A. y Sydow, J. Project networks and changing industry practices – collaborative content production in the German television market. Organizational Sci-ence, 22(6):1035–1060. 2001. Wysocki. 2003. Wysocki R. . Effective Project Management. Wiley Publishing, Third Edition edition, ISBN 0-471-43221-0, 2003. 2003. Yimam-Seid y Kobs. 2003. Yimam-Seid, D. y Kobsa, A. Expert-Finding Systems for Organizations: Problem and Domain Analysis and the DEMOIR Approach. Journal of Organizational Computing and Electronic Commerce, 13(1):1–24. 2003. 94