Un caso llevado a la práctica

miércoles, 21 de mayo de 2008

Estudiando el artículo aportado por Holger Knublauch llamado “Extreme Programming of MultiAgent Systems” que vamos consultando en este blog nos encontramos con un caso de programación extrema en un sistema multiagente, más en concreto en un proyecto de investigación alemán llamado . “Towards a Multi-Agent System for Pro-active Information Management in Anesthesia. In Proc. of the Agents-2000 Workshop on Autonomous Agents in Health Care” para optimizar la distribución de los datos clínicos de pacientes.


En un principio, el modelo fue construido por expertos del dominio clínico con la herramienta AGIL-Shell. La tarea siguiente era conseguir un modelo de proceso con un conjunto inicial de agentes y la comunicación de estos, para lo que los expertos y el desarrollador se reunieron durante tres días para definir los escenarios con AGIL-Shell.

Para la siguiente actividad lo que hicieron fue organizar un curso práctico para una serie de alumnos con un entrenador (el desarrollador del sistema) y una serie de expertos del dominio que aclaraban dudas y exponían necesidades del sistema a los alumnos. Ninguno de los alumnos tenían experiencia ni formación en XP ni en agentes, e incluso algunos se iniciaban en Java, por lo que también se proporciono un curso inicial de XP y de otras herramientas de desarrollo.

Experiencias sacadas de este proyecto fueron:

  • El trabajo se realizaba durante 40 horas a la semana, en un ambiente agradable que estimulaba la creatividad y la comunicación con actividades como por ejemplo una presentación entre los alumnos tomando un café.

  • Planificación. Al comienzo de cada día, el equipo conjuntamente seguía un enfoque de planificación para definir las características que deben llevarse a cabo.

  • Desarrolladores organizados de dos en dos, esto los hacía estar más motivados y concentrados y además de acelerar el ritmo de aprendizaje. Aunque no todas las parejas tuvieron experiencias positivas.

  • Pruebas. Durante el curso, los alumnos han aplicado las pruebas de 30 clases con 76 casos de prueba, por un total de 4909 líneas de código, mientras que el código de los 43 agentes ascienden a 5673 líneas (con exclusión de las clases ontología).

  • Derechos de propiedad colectiva. Esto permite a cualquier miembro del equipo modificar cualquier parte del código en cualquier momento. Apenas hubo solapamiento ya que cada pareja de desarrolladores programaban los paquetes de un solo agente. Sólo las clases de ontología se repartieron entre los agentes y, por tanto, fueron modificadas por diversos equipos. La coordinación de estos cambios se lograron de manera informal con una buena comunicación entre los desarrolladores.

  • Normas de codificación: definiendo una escala estándar de codificación.

  • Diseño simple: los estudiantes se centraron en la programación. El modelo inicial fue evolucionando ya que los mismos estudiantes identificaban funcionalidades útiles del sistema, pero el diseño global se mantuvo estable en general

  • Refactorización. Al ser pequeñas unidades de código en general fue muy fácil de mantener y refactorizar.

  • Integración continúa. Como mínimo, cada noche se integraba en el servidor CVS los agentes desarrollados Los agentes fueron subidos en el servidor CVS e integrado, como mínimo, cada noche. Los estudiantes solo podían subir al servidor agentes que habían superado todos los test de prueba, por lo que apenas hubo problemas de integración.

  • En el lugar del cliente. Los estudiantes valoraron positivamente la presencia de expertos en el dominio que les aportase conocimiento con regularidad por lo que se pudieron prevenir muchos errores.


    Al final, el proyecto dio lugar a 17 tipos de agentes que cubrían la tercera parte del modelo de proceso y resolvían tareas de notificación, filtrado o monitorización de pacientes.
    Otros 5 tipos de agente fueron identificados en la fase de codificación, en general, ofreciendo servicios a los agentes más generales.
    El agente de escenarios, sin embargo, sufrió cambios más significativos ya que incluye casi el doble de las actividades y los mensajes que el diseñado originalmente. Normalmente estas actividades se refieren a la transferencia de información entre los agentes ya que algunos de ellos no tienen acceso a recursos necesarios. Estas nuevas funcionalidades surgieron de la creatividad de los miembros del equipo durante la fase de ejecución.


Un enlace interesante: http://www.navegapolis.net/content/view/773/96


Muestra brevemente como trabajarían los desarrolladores siguiendo los principios de la metodología ágil XP. Son interesante, cortos y bastante claros.



0 Comments: