Programación Extrema ( XP )

jueves, 24 de abril de 2008

Las metodologías ágiles surgen como alternativa a procesos más rígidos y pesados como es por ejemplo la metodología en cascada. Una de los más conocidos métodos de agentes orientados a ingeniería de software es la programación extrema (XP).

Es decir en vez de seguir unos pasos estrictos se da preferencia a avanzar en el código ejecutable. La programación extrema está muy ligada o es parecida a los métodos evolutivos.

La programación XP tiene cuatro pilares fundamentales
La retroalimentación
La comunicación
La simplicidad
Y el valor.

Retroalimentación:
Tener siempre al cliente a nuestro servicio(que eso es un poco difícil) para que los malos entendidos y los requisitos que sean incorrectos se puedan solucionar cuanto antes.
Aunque esto último creemos que es muy difícil además de que la estrecha relación con el cliente derive a una gran confianza y que el cliente se aproveche para pedir más funcionalidades o para cambiarlas a su antojo.

Lo más importante en XP es realizar casos de prueba para comprobar que el proyecto funcione bien y que los cambios en un módulo no han destruido accidentalmente otras partes.
JUnit permiten ejecutar las dichas pruebas automáticamente.
Comunicación
Como dijimos antes debemos tener una buena comunicación con el cliente pero para que no haya problemas es muy recomendable el uso de “story card” que son como pequeñas actas que sirven de contrato.

Una de las peculiaridades de este método de programación es que se realiza por parejas en una misma máquina. Al principio suena un poco asfixiante tener que trabajar con otra persona tanto tiempo pero resulta muy productivo, se detectan más errores.

La simplicidad


Basarse en soluciones simples, tareas pequeñas y sencillas.
Se supone que se limita a pequeñas y medianas proyectos de alrededor de 10 programadores.

El valor
Se refiere a que los desarrolladores se sientan comprometidos y motivados.

Ingeniería de Software de Agentes

Cuando hablamos de ingeniería de software nos referimos a una serie de definiciones de métodos, herramientas y modelado de lenguajes para la construcción y el mantenimiento del sistema.
Cuando el sistema que se desea desarrollar es un sistema multiagente, estas metodologías generales nos limitan, ya que las técnicas de modelado de los agentes o la representación de los métodos de comunicación entre los agentes no quedan representados de forma intuitiva. Por ello son necesarias nuevas técnicas que nos permitan representar las características de nuestros agentes a la hora desarrollar las partes previas a la implementación del código.
La metodología Gaia, es una metodología para la ingeniería de software basada en agentes, la cual nos proporciona una serie de actividades para el análisis y diseño de nuestro sistema. Es un modelo basado en roles, donde después de especificar nuestros agentes, definimos características como responsabilidades, permisos, actividades o ciclos de vida de dichos agentes. Para esto, Gaia proporciona una serie de lenguajes de definición de agentes.
Otras fases de Gaia son los modelos de interacción, donde se especifican los tipos de agentes, servicios y la comunicación entre los agentes.
La mayoría de las metodologías para sistema multiagente podrían considerarse como fases sucesivas donde hay que seguir bastantes pasos antes de su implementación, por ejemplo, otra metodología para sistemas multiagente, MaSE, se divide en siete fases sucesivas donde existe un modelo intermedio entre cada fase.Las ventajas de estas metodologías es que podemos reproducir y plantear como va a ser nuestra ejecución, y el diseño no estará limitado por los detalles de una ejecución. Pero esto puede ser un problema cuando es necesario cambiar alguna parte del modelo, ya que tiene que ser revisado todo el proceso y esto conlleva retrasos en fechas de entrega, costes… Ahí es donde es muy importante haber definido de manera correcta los requisitos, algo que puede ser complicada, debido a la complejidad de interacciones de los agentes y los comportamientos dentro de un sistema multiagente.

¿Por qué necesitamos Metodologías Ágiles en el desarrollo de Sistemas MultiAgente?

miércoles, 23 de abril de 2008

La complejidad de la comunicación entre agentes, hace que los sistemas multiagente sean muy difíciles de construir. En la actualidad, la mayoria de las Metodologías de Ingeniería del Software orientadas a Agentes, orientan esta complejidad guiando a los desarrolladores a través de varios procesos engorrosos.Mientras que estas metodologías permiten obtener prototipos ejecutables, estos suelen obtenerse tarde y por un precio excesivo, es por esto que necesitamos métodos para soportar los cambios de requerimientos y obtener dichas respuestas a gran velocidad. Una de estas aproximaciones es la Programación extrema o Extreme Programing, una tecnología moderna sacada de las metodologías orientadas a objetos, para emplearla en el diseño a implementación de Sistemas Multiagente.

Metodologías Agiles y agentes

Con esta entrada, damos por comenzado el blog. En las sucesivas semanas haremos una pequeña introducción a las Metodologías ágiles orientadas al mundo de los agentes software.Es importante indicar que es un tema bastante novedoso y que es posible que no exista demasiada información en castellano.