Gestión del conocimiento en el desarrollo ágil de software con razonamiento basado en trazas

MSc Osmany González Ferro

Resumen: Este artículo es un trabajo preliminar para la extracción de conocimientos a partir de elementos de trazas de un sistema de gestión de procesos ágiles de desarrollo de software basado en un modelo de trazabilidad de requisitos centrado en la historia de usuario, mediante el empleo de una técnica de razonamiento basado en trazas que permite reutilizar la experiencia acumulada en proyectos de desarrollo anteriores y explicitar el conocimiento a través de diferentes equipos de desarrollo de software.

Palabras claves: Inteligencia artificial, razonamiento basado en casos, desarrollo ágil, gestión del conocimiento, trazabilidad de requisitos.

  1. Introducción

El aprendizaje basado en la experiencia es esencial para mejorar productos, procesos y tecnologías en áreas emergentes o establecidas de negocios o las ciencias. Este puede facilitarse mediante el aprendizaje organizacional basado en casos, lo que significa que la experiencia relevante se captura en forma de casos para ser reutilizado en un repositorio de experiencia corporativa.

El desarrollo de software es una actividad que hace un uso intensivo del conocimiento y el principal desafío está en administrarlo de manera adecuada. El manifiesto Ágil promueve a los individuos y su interacción sobre procesos y herramientas, de modo que se requiere en proyectos de desarrollo ágil de software, mayor atención al tema de la gestión del conocimiento.

1.1      Gestión del conocimiento.

La gestión del conocimiento es un proceso a través del cual las organizaciones logran descubrir, utilizar y mantener el conocimiento que poseen, con la idea de alinearlo con las estrategias de negocio para la obtención de ventajas competitivas. Debido a que debe contribuir a lograr los resultados comerciales es considerada una disciplina transversal que involucra procesos, personas y tecnologías en una integración constante que implica nuevos métodos de trabajo, preparación a los trabajadores para el cambio y tecnologías que apoyan estas actividades. Para llevar a cabo la gestión del conocimiento se necesita, entre otras cosas, identificar los individuos que poseen el conocimiento y las competencias que les permiten utilizarlo de la mejor manera. En este artículo se considera el modelo de Nonaka y Takeuchi, destacando que las personas juegan un rol importante y determinante en la generación de valor de las organizaciones, debiendo estas últimas crear las estructuras necesarias para la generación de ventajas competitivas. Es así, que la gestión de los recursos intangibles tiene como objetivo convertir el capital humano (habilidades, conocimientos, etc.) en capital estructural (conocimiento organizacional o lo que queda cuando los empleados se van a sus casas), reduciendo el riesgo de perder valioso conocimiento si la gente deja la organización. De esta manera, lo importante no es retener a las personas, sino que mantener y mejorar los sistemas de manera de poder continuar generando conocimiento.  [1]

.

1.2          Tipos de conocimiento

El conocimiento explícito es aquel que se transmite en un lenguaje sistemático y formal y puede ser articulado, codificado y almacenado en algún tipo de medio. Puede incluir términos gramaticales, expresiones matemáticas y especificaciones. Es aquel que puede transmitirse de manera inmediata a otras personas.


El conocimiento tácito es personal y específico de un contexto. Está incorporado a la experiencia individual y se relaciona con factores intangibles como la creencia personal, perspectivas y valores sistémicos. El conocimiento tácito es difícil de comunicar y compartir en una organización y por consiguiente convertirlo a palabras y otras formas de conocimiento explícito. Permanece en un nivel “inconsciente”, se encuentra desarticulado y lo implementamos y ejecutamos de una manera mecánica sin darnos cuenta de su contenido, es algo que sabemos pero que nos resulta difícil de explicar

1.3      Gestión del conocimiento en el desarrollo de software

La gestión del conocimiento simplifica el proceso de compartir, distribuir, crear, capturar y comprender el conocimiento de una empresa.

El conocimiento es una mezcla de experiencia, valores, información contextual y de expertos que brindan un marco de trabajo para evaluar e incorporar nuevas experiencias e información.  Este pasa a través de diferentes modos de conversión, permitiendo su refinado y difusión hacia los diferentes estratos de una organización.

Los motivos por los cuales las empresas deben gestionar el conocimiento en el desarrollo de software son:

•    Reducir el esfuerzo empleado en adquirir conocimientos en la ejecución de los proyectos.

•    Mejorar la reusabilidad (evitar la reinvención)

•    Mejorar la productividad general del equipo

1.4      Gestión del conocimiento en el desarrollo ágil de software

El desarrollo ágil de software emplea la comunicación directa entre clientes y desarrolladores para compartir el conocimiento. Esto reduce la pérdida de información debido a las largas cadenas de comunicación y asegura que solamente las preguntas que el desarrollador hace, son las que se responden. Transferir y compartir conocimiento en el equipo es no una tarea sencilla en los modelos tradicionales que se centran en un proceso riguroso con representaciones estructuradas y formalizadas. El desarrollo ágil se enfoca en un proceso menos formal. Cambia las representaciones lógicas por aproximaciones que sean suficientes para que el desarrollo prosiga, pero sólo se comparte el conocimiento tácito.

Dentro de las actividades de los procesos ágiles donde se promueve compartir información como son, la planificación de la liberación y las iteraciones, la programación en parejas, las reuniones diarias, las retrospectivas, etc. incluyen:

  • Conocimiento relacionado a las tareas: Conocimiento del dominio, convenciones de código, prácticas de diseño, conocimiento sobre la tecnología y herramientas y trucos de uso.
  • Conocimiento contextual: Es aquel donde los hechos se interpretan y se emplean, como experiencias pasadas que cumplen con un determinado patrón recurrente.
  • Recursos sociales: incluye el contacto personal y referencias

1.5      Limitaciones

Aunque el concepto de aprendizaje está embebido en varias prácticas de desarrollo ágil, ellas solamente están enfocadas en compartir conocimiento en un equipo, es decir, no es posible extenderla a múltiples equipos. Es por ello que organizaciones que tienen varios equipos de desarrollo de software enfrentan el problema de la gestión de conocimiento a nivel organizacional. Es por ello que se requiere de mecanismos mediante los cuales el conocimiento se haga explícito a través de todos los equipos de trabajo.

Algunas soluciones se han dado al respecto, pero todas basadas en explicitar la información y publicarla en un espacio común en la red, como wikis, blogs, redes sociales etc. Esta práctica obliga al equipo a destinar tiempo para convertir el conocimiento tácito inherente al proyecto en explícito para formalizarlo y poderlo publicar, lo que genera sobrecarga y trabajo extra para sus miembros.

2       Herramienta de gestión de proyectos ágiles.

Una forma adecuada de hacer explícito el conocimiento tácito dentro de los equipos de desarrollo ágil es mediante el empleo de herramientas de gestión del proceso. Los miembros del equipo hacen uso de dichas herramientas para gestionar su trabajo y a la vez, de manera inconsciente, van dejando un registro de trazas, documentos, acciones y relaciones que se convierte en una fuente de conocimiento a la espera de ser extraído.


El autor ha desarrollado una herramienta AgilePro se concibió para que el equipo de desarrollo pueda gestionar los artefactos del proyecto, obtener las gráficas y métricas que se necesita para accionar cuando algo no funciona bien dentro del equipo y su desempeño se ve afectado. AgilePro se diseñó lo más cercano posible al trabajo de un equipo de desarrollo ágil. Aunque herramientas como esta pudieran no considerarse adecuadas para sustituir los clásicos irradiadores de información de los métodos ágiles como las pizarras, las notas adhesivas, etc.; su formato web nos permite el acceso y uso por parte de cualquier miembro del equipo y recibir la misma información. Para lograr ese acercamiento, la historia constituye el eje fundamental de navegación dentro del sistema. A través de ella se puede buscar y recuperar información relacionada con un requisito del cliente, incluso obtener la conversación efectuada en el proceso de licitación. Esta conversación puede adjuntarse a la historia de usuario como un archivo de audio, video, documento de texto, hipertextos, o diseños y esquemas previamente digitalizados. [1]


Figura 1. Vista general del modelo de trazabilidad centrado en la historia de usuario

3       Razonamiento Basado en Casos (RBC)

Mientras que mucha de la inspiración para el estudio del RBC viene de la ciencia cognitiva de la investigación de la memoria humana (Schank, 1982), la metodología resultante muestra que es muy útil en un amplio espectro de aplicaciones.  [1]

A diferencia de los múltiples problemas que resuelven las metodologías de Inteligencia Artificial, el RBC se basa en la memoria, es decir, refleja el uso humano de la experiencia sobre problemas y sus soluciones como un punto de partida para la solución de nuevos problemas. Tomando como máxima que problemas similares tienen soluciones similares.

Resolver problemas mediante un RBC comprende obtener una descripción del problema, medir la similitud con algún problema almacenado en una base casos, extraer uno o más casos similares e intentar reusar la solución de uno de ellos, posiblemente después de adaptarlo tomando en cuenta las diferencias de las descripciones del problema. La solución propuesta por el sistema es evaluada. Siguiendo la revisión de la solución propuesta y dependiendo de la evaluación, el problema y su solución se retienen como un nuevo caso que el sistema ha aprendido para resolver un nuevo problema.

Al emplear experiencias pasadas en vez de un conjunto de reglas los RBC tienen algunas ventajas sobre los Razonamientos Basados en Reglas (RBR): Los RBC no producen una solución desde cero, sino que emplean casos previos, de modo que no se requiere un conocimiento total del dominio de la teoría para razonar. RBR comienza a trabajar con una pequeña base de conocimiento y aprenden y mejoran con cada problema que resuelven.

No obstante, a pesar de esas ventajas los RBC sufren de problemas de reingeniería lo que hacen dificultosa su evolución. Es decir, los casos almacenados son instantáneas de experiencias pasadas en una estructura o entorno dado, por lo que esos casos no están diseñados para evolucionar, tomar otras variables del contexto en cuenta y no solamente las restricciones inherentes de la estructura del caso.

El conocimiento se ha identificado actualmente como el cuarto factor de producción.

Por lo tanto, un flujo incontenible de información no estructurada ni personalizada puede ser contraproducente para la creación y el intercambio de conocimiento. (Fischer & Ye 2001; Jameson 2001)

Para apoyar de manera efectiva al desempeño de los equipos de desarrollo debemos movernos hacia una estrategia donde se proporcione información correcta en el momento adecuado (sensitiva al contexto), desarrollar mecanismos más flexibles y rápidos para el intercambio de información y desarrollar métodos de agregación y adaptación de la información con el contexto y las necesidades de los usuarios mediante el uso de RBC.

(Kluge, 1999).

4       Razonamiento Basado en Trazas

El logro de la RBC se debe en parte al hecho de que constituye una solución, al menos parcial, a la cuestión de la adquisición de conocimientos en los sistemas basados en el conocimiento.

De hecho, los sistemas RBC adquieren nuevos conocimientos mediante la acumulación de casos que representan episodios de resolución de problemas, y los memorizan de manera predefinida para que se puedan reutilizar en la solución de futuros problemas. Los casos por lo tanto constituyen el principal contenedor de conocimiento de un RBC.

En los artículos sobre razonamiento basado en reglas (RBR) se propone una variante extendida en términos de representación de conocimiento de los RBC denominada razonamiento basado en trazas (RBT)

Un RBT es básicamente un RBC, pero sus casos se construyen dinámicamente a partir de las trazas. Los casos no se almacenan en una base de casos, sino que se representan en el contexto de la actividad de la traza. El ciclo se basa en la noción de la interacción de la traza, la cual es almacenada en una actividad representada en un nivel de abstracción apropiado.

El concepto de traza se refiere a grabar algo que ha ocurrido en el pasado. Una traza es una huella que permanece luego que un fenómeno ocurre. En la ciencia de la computación, las trazas se encuentran en los archivos de registro, historial de navegación, versionado, etc. y se estudia con múltiples propósitos (personalización de interfaces, extracción de información, estudio de la interacción hombre-máquina, análisis, entre otros fines)

Una traza es un conjunto de elementos situados espacial y temporalmente que se inscriben en el ambiente durante una actividad. Se debe observar que una traza se inscribe intencionalmente o no (Settouti et al. 2009).

Aunque los artículos sobre RBT se refiere básicamente al empleo de trazas de interacción con un sistema informático, este artículo propone el empleo de RBT en trazas del proceso de desarrollo generadas a partir de un modelo de trazabilidad de requisitos centrada en la historia de usuario propuesta por el autor e implementada dentro del sistema AgilePro.

Figura 2.Metamodelo básico de trazabilidad centrada en la historia de usuario

Las historias de usuario constituyen el artefacto primario para metodologías de desarrollo de software como Scrum y Programación Extrema. Es una definición de requisito a muy alto nivel escrita por el cliente, que contiene suficiente información para que los programadores puedan determinar un estimado razonable de esfuerzo para implementarla. (Ambler, 2009)

AgilePro tiene almacenado en su base de datos todas las actividades, artefactos, relaciones y elementos de trazas relacionados con cada historia de usuario, de modo tal que es posible realizar una transformación a las trazas y almacenarlas en un sistema de gestión de bases de trazas (SGBT).

Los equipos de desarrollo de software pueden consultar esa base de conocimiento para buscar respuestas a problemas en los nuevos proyectos basados en experiencias anteriores como pudieran ser:

  • Requisitos que ya han sido desarrollados y su solución, incluso se puede extraer el código fuente. 
  • Solución a problemas presentados con una herramienta, entorno de desarrollo, componentes, etc.
  • Pistas para la solución de riesgos e impedimentos comunes en otros proyectos.
  • Casos de pruebas efectivos para un determinado tipo de requisito.
  • Estimación (plan/real) de requisitos de igual naturaleza. Esto facilita el proceso de estimación pues se tiene información para tomar decisiones sobre el esfuerzo real a emplear en la solución de un problema
  • Planificación de las iteraciones con un grado mayor de exactitud si se toma en cuenta la experiencia acumulada en proyectos de similar complejidad.

Conclusiones

Este trabajo ha presentado un enfoque que sugiere considerar el uso de trazas, construidas a partir de la interacción entre un usuario el sistema para la gestión de proyectos ágiles AgilePro. Mediante el empleo de RBT se puede extraer conocimiento que permita la generación y extracción de trazas dentro de un modelo de trazabilidad de requisitos. La trazabilidad es muy útil para el desarrollo de software aun cuando los promotores de los métodos ágiles plantean que más que ayudar entorpecen el avance del proyecto. (AMBLER, 2009)

Una forma sencilla de definir la trazabilidad en el proceso de desarrollo ágil de software lo constituye tomar como centro la historia de usuario, pues a partir de ella se generan todos los artefactos que permiten darle seguimiento al cumplimiento de los requisitos y expectativas del cliente.  .

Referencias

1 AMBLER, S. W. Agile Requirements Best Practices. Agile Modeling, 2009. Disponible en: http://www.agilemodeling.com/essays/agileRequirementsBestPractices.htm.

2 NONAKA, I.; TAKEUCHI, H. La Organización creadora de Conocimiento. Oxford University, 1995.

3 GONZÁLEZ, O. Un acercamiento a la trazabilidad en el desarrollo ágil de software. Revista Cubana de Ciencias Informáticas, Habana, v. 5, n. 2, 2011.

     4 Schank, R.C. 1982 Dynamic Memory: A Theory of Reminding and Learning in Computers and People. New York, NY: Cambridge University Press. Schank, R.C. 1986 Explanation Patterns:

     5 Watson, I. 1997 Applying Case-Based Reasoning: Techniques for Enterprise Systems. San Francisco, CA:Morgan Kaufmann.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

19 + 10 =