REQUERIMIENTOS FUNCIONALES Registrar Servicios: o Actor: Administrador. o Descripción: El administrador podrá registrar nuevos servicios en el sistema. Estos servicios se replicarán con el fin que dentro del sistema se conozca del nuevo servicio. Además el nuevo servicio creará un nuevo tipo de permiso para autorizar solo a ciertos agentes para que lo ejecuten. Consultar Servicios: o Actor: Administrador. o Descripción: El administrador podrá consultar todos los servicios que estén activos. Además de la descripción de cada uno, adicionalmente podrá eliminarlos. Actualizar Servicios: o Actor: Administrador. o Descripción: El actor puede modificar un servicio, en especial poner una nueva versión más actualizada. Los servicios se identificarán a partir del id del servicio y un número de versión con el fin que los clientes que no tengan la nueva versión aun puedan seguir ejecutando el servicio. Registrar Usuarios: o Actor: Administrador o Descripción: El administrador puede registrar a los usuarios en el sistema con el fin de proporcionarles un acceso a los agentes de éstos a los servicios. También se le asignarán permisos sobre el sistema, ya que pueden haber usuarios privilegiados. Eliminar Usuarios: o Actor: Administrador o Descripción: El administrador puede eliminar los usuarios del sistema. Estos ya no podrán mandar sus agentes al sistema, ni invocar servicios. Modificar Usuarios: o Actor: Administrador. o Descripción: El administrador puede modificar los datos de un usuario pero más significativo es modificarle los permisos para que así pueda acceder a más o a menos servicios dependiendo del caso. Consultar Usuarios: o Actor: Administrador. o Descripción: El administrador podrá consultar todos los usuarios del sistema. La importancia de este caso de uso radica en que se pueden ver los permisos que tiene cada uno. Solicitar Servicio: o Actor: Usuario. o Descripción: El usuario ingresará los datos de los servicios que quiera solicitar. La cifra tope de servicios está por confirmar. Una vez ha llenado todos los datos, informa al sistema que quiere enviar un agente para ejecutar todos sus servicios. Antes de irse el agente, la plataforma le pedirá que ingrese su login y password para que el agente viaje con ellos y le sirva para autenticarse. Una vez se va, el usuario esperará a que el sistema le informe si el agente pudo entrar o no. Si todo fue exitoso, se dará la opción que venga un agente liviano al dispositivo del cliente con las ultimas actualizaciones antes que este cierre la conexión. Solicitar Retorno: o Actor: Usuario. o Descripción: El usuario elegirá los servicios de los cuales quiere las respuestas. Una vez quiere enviar la solicitud, el sistema le pide que le ingrese el login y el password. Luego un agente es enviado al sistema para que llame de vuelta los servicios. Si la autorización es correcta (login y password), el agente busca las respuestas de los servicios solicitados para retornarlos. Si un servicio solicitado no esta listo, incluye esta observación en un reporte, donde además se mostrará el estado de los demás servicios y los errores que se presentaron. Si se presento un error, el sistema proveerá un mecanismo que permita cuando el usuario haga otra solicitud de servicios, reintentar ejecutar el servicio fallido. Se tendrá en cuenta, que tal vez el tamaño de las respuestas es muy grande, por lo que no se puede enviar todo de una sino por demanda. Ejecutar Servicio: o Actor: Agente. o Descripción: El agente llegara al sistema con una serie de servicios que fueron solicitados por el usuario. Una alternativa a seguir es que se creen dentro del sistema subagentes cada uno representando un servicio. Cada uno de estos subagentes pedirá la información de donde se encuentra el servicio que necesita ejecutar. Una vez llegue al destino, se autenticará allí, y si tiene permiso comenzara la ejecución de la tarea. Una vez el subagente termine su misión, se dirigirá a un servidor destinado a su permanencia (preferiblemente que lo almacene en disco en caso de fallos) para esperar a que el usuario pida de retorno la información que proceso. Actualizar Servicios: o Actor: Agente. o Descripción: Un agente especial de actualizaciones será enviado cada vez que el usuario se conecte a la plataforma y mande un agente para que ejecute servicios. Este agente de versiones se ira al dispositivo del usuario (PC de escritorio o celular) si la versión que este maneja no es la mas reciente con el fin de actualizarlo. REQUERIMIENTOS NO FUNCIONALES Buscar Servicio: un agente enviado por el usuario para ejecutar servicios creará subagentes, uno por servicio. Estos subagentes le solicitarán a la plataforma que les indique donde se puede ejecutar dicho servicio (esto puede estar en un directorio o ser un agente de información.) Almacenar Agente: un agente enviado por un usuario para ejecutar servicios creará subagentes, uno por servicio. Cuando un subagente termine su tarea, se almacenará en algún servidor destinado para esto, con el fin de no perder toda la información en caso de un fallo posterior a la ejecución del servicio. Bloquear Agente: un agente enviado por el usuario para ejecutar servicios creará subagentes, uno por servicio. Cuando un subagente termine una tarea y se haya almacenado, se bloqueara esperando a ser solicitado por el cliente. Mover Agente: un agente o subagente podrá moverse por voluntad propia (para ejecutar un servicio por ejemplo), o por algún evento externo (que sea solicitado por el cliente.) Clonar Agente: un agente se clonará para que su copia ejecute un subservicio. Otra opción es que el agente en vez de clonarse cree sus hijos que aunque tienen características del padre, poseen una lógica mas fuerte y pueden ser más robustos para así lograr una mejor ejecución de los servicios. Almacenar Costumbres (tentativo pero complejo): existirá un servidor que almacene las costumbres de los clientes a través de ver que servicios piden sus agentes y como los ejecuta. Esto en el sentido que se quiera una prestación de servicios mas personalizada.