Sistemas multiagentes também precisam ser pensados, planejados, projetados e modelados para um desenvolvimento com ótima qualidade em tempo estimado. Estes tem atraído a considerável atenção da indústria de software.
As aplicações industriais de software vêm crescendo no tamanho e complexidade, onde o projeto e construção tem se tornado uma tarefa de gerenciamento mais difícil. Assim, pesquisadores buscam novos paradigmas para aumento da habilidade para modelagem, projeto e construção de sistemas complexos.
Ao longo do tempo, a Engenharia de Software (ES) tem utilizado de vários paradigmas para o desenvolvimento de software como programação estruturada, declarativa, imperativa, orientada a objetos, orientada a componentes e etc., para um melhor gerenciamento de software e permitir a construção de aplicações mais complexas. Um dos paradigmas, quem tem ganhado a atenção da indústria de software, e tem tido um desenvolvimento promissor é o paradigma de orientação a agentes; vale ressaltar que é um tópico de ativa pesquisa na comunidade científica e que ainda não foi solidificado para o mercado, mas que já existem técnicas, metodologias, ferramentas e etc. validadas e disponíveis para uso.
A Engenharia de Software Orientada a Agentes (ESOA) trata do uso do paradigma de agentes para desenvolvimento de software para solução de sistemas complexos. Estes sistemas complexos são descritos como sistemas que geralmente operam em ambientes abertos (ex. uma rede de computadores), não previsíveis e de mudanças rápidas; onde estes sistemas devem ser capazes de decidir o que fazer em qualquer situação para alcançar objetivos. Esta não descarta o uso de técnicas da ES já validadas como gerenciamento de projeto de software, ciclos de vida de projeto, métodos e processos ágeis e etc.. Além disso, pode haver projetos de software onde o paradigma de agentes pode ser mesclado com o paradigma de objetos, quando na existência de estruturas de software que são mais simples de se resolver e o paradigma de objetos é o suficiente para isto; neste caso, modelagens convencionais aplicados à orientação a objetos são bem-vindos.
Motivação
O paradigma de objetos, mesmo sendo popular, sofreu extensões para, com menor esforço, realizar propriedades de um software de qualidade como suporte a sistemas distribuídos (SUN, 2005), características transversais (KICZALES et al., 1997) e sistemas de tempo real (BIHARI et al., 1989).
Os agentes são evoluções naturais de objetos. Possuem memória e comportamento, mas não entidades passivas como objetos. Os objetos encapsulam o seu estado e comportamento, mas não podem ativar o seu comportamento tendo que depender de outros objetos. Já os agentes são autônomos em seu conhecimento desde a sua criação até na interação com o ambiente adquirindo experiência. Assim, os agentes são entidades continuamente ativas pela sua observação no ambiente, atualização de estado interno e seleção e execução de ações. Já um objeto é estrutura passiva na maioria do tempo, sendo ativado quando um dos seus métodos é invocado por outro objeto.
O uso da abordagem de agentes é baseado nos seguintes argumentos (JENNINGS E WOOLDRIDGE, 2001) (ODELL, 2000):
- O conceito de sistemas de agentes é adequado para construir soluções de software para sistemas complexos;
- Representam um verdadeiro avanço sobre o estado da arte na engenharia de sistemas complexos;
- Maneira efetiva de decomposição do espaço do problema;
- A abstração de agentes são um meio natural de modelar sistemas complexos;
- Organizam entidades colaborativas de maneira concorrente;
- Estrutura arquitetural dinâmica;
Desenvolvimento de Sistemas Multiagentes
Segundo WOOLDRIDGE (2002) um agente é um sistema computacional encapsulado que esta situado em um ambiente, a fim de alcançar seus objetivos de projeto. A Figura 1 ilustra a arquitetura genérica de um agente; como pode ser observado o agente possui sensores para coleta de dados do ambiente, atuadores para agir no ambiente e o quadrado com ponto de interrogação diz respeito a sua arquitetura interna, base de conhecimento e etc.
De acordo com uma pesquisa de CASTRO et al. (2006), as seguintes propriedades de agentes devem ser consideradas no seu desenvolvimento:
- Autonomia: agir independente de ação humana ou outros objetos;
- Deliberatividade: tomar decisões por informações vindo do ambiente ou de suas experiências;
- Reatividade: reagir a estímulos externos;
- Organização: grupo de agentes que trabalham para atingir um objetivo em comum;
- Socialização: interação com agentes e sistemas multiagente.
Entre as características de sistemas multiagente são as distribuições de dados e controle dos mesmos, encapsulamento de sistemas legados em agentes e construção de sistemas abertos, ou seja, que no tempo de projeto não existe uma total definição de todos os componentes que interagem com este sistema.
Aplicabilidade
Sistemas multiagente podem ser aplicados em diversas áreas, inclusive é uma tecnologia que deixa de ser exclusivamente acadêmica e está passando a ser usada no mundo real. Entre as áreas de aplicação de sistemas multiagente está (WOOLDRIDGE, 2002):
- Aplicações industriais: como sistemas de telecomunicações, de tráfego aéreo e de transporte;
- Aplicações comerciais: presente em sistemas de comércio eletrônico e gerenciamento de informação;
- Aplicações médicas: para monitoramento de pacientes e plano de saúde.
Metodologias de Desenvolvimento
Existem várias metodologias disponíveis. Algumas são baseadas em técnicas aplicadas a desenvolvimento orientado a objetos e outras, baseadas em Engenharia do Conhecimento. Vale salientar que todo o sistema de software projetado deve ser abstraído sob a ótica do paradigma de agentes. As abstrações apresentadas aqui são a descritas por GIRARDI (2004), segundo as metodologias existentes e como elas tratam o projeto de desenvolvimento de software multiagente; o sistema de software multiagente é tratado como uma organização formada por vários funcionários, que desempenham papéis para executar ações para solução dos serviços e ou produtos oferecidos por esta organização. Vale salientar que assim, como as metodologias tradicionais aplicadas a sistemas orientados a objetos, a ESOA também produz artefatos.
Entre as metodologias orientadas a agentes estão: Tropos, MAS-CommonKADS, Gaia, Prometheus, PASSI, ADELFE, MESSAGE, INGENIAS, dentre outras. Existem livros disponíveis no mercado que podem ser adquiridos nos sites da Biblioteca ACM, editora Elsevier e AMAZON. Quanto à metodologia Tropos podem ser obtidas informações no site www.troposproject.org.
Conhecimento dos Requisitos de Software
Nesta etapa são definidos os Modelos de Objetivos, Modelo de papéis e Modelo de Interações. No Modelo de Objetivos é considerado o objetivo geral do sistema. Logo, este objetivo geral é refinado em objetivos específicos repartindo o problema em subproblemas melhorando o processo de resolução.
No Modelo de Papéis são identificados às responsabilidades dos papéis para solução dos objetivos específicos. Os papéis podem ser externos ou internos ao sistema, onde os papéis são funções que os agentes exercem dentro do sistema ou de entidades externas ao sistema. Para estes papéis são definidos atividades que podem ser compartilhadas por vários papéis. Por último são identificados os recursos que serão utilizados por estes papéis. E no Modelo de Interação são definidos as interações entre os papéis internos ou externos e entidades externas.
Projeto Arquitetural e Detalhado
De acordo com o modelo de requisitos elaborado, é projetado o software de acordo com o paradigma de desenvolvimento utilizado. A fase de projeto geralmente é estruturada em: Projeto Arquitetural, onde são definidos os componentes do sistema e sua forma de cooperação; Projeto Detalhado, onde se define o comportamento e os atributos de dados de cada componente.
No Projeto Arquitetural são elaborados o Modelo de Agentes, Modelo de Interações, Modelo de Arquitetura de Sistema Multiagente. O Modelo de Agentes se identifica os agentes e quais os seus papéis no sistema. Para cada agente existe um papel ou vários papéis, inclusive, um papel pode ser desempenhado por um ou vários agentes. O Modelo de Interações é feito para definir como os agentes interagem entre si; é feito um mapeamento das interações dos papéis para as interações dos agentes. Na Modelagem de Arquitetura, é definida a solução computacional para o problema do especificado na análise de requisitos; assim, são especificados os mecanismos de cooperação e coordenação entre agentes; nesta modelagem podem ser aplicados reuso de arquiteturas de agentes e padrões de projeto orientado a agentes.
No Projeto Detalhado é feito o Modelo Detalhado de Agentes, onde as arquiteturas internas dos agentes são definidas, analisando o seus comportamentos e mecanismos de percepção e ação, estruturando em arquitetura deliberativa ou reativa.
Ferramentas para Implementação
Existem várias ferramentas para implementação disponíveis na web e algumas são gratuitas. Cada uma delas possui maneiras próprias para desenvolvimento dos agentes. Algumas ferramentas seguem um modelo de arquitetura de agentes específico. Será descritos algumas das ferramentas mais conhecidas disponíveis.
A plataforma FIPA-OS é baseada em componentes e com suporte a maioria das especificações da FIPA (Foundation for Intelligent Physical Agents), uma fundação que fomenta a cultura do desenvolvimento de sistemas baseados em agentes. Esta ferramenta pode ser adquirida no site Emorphia.
O JADE (Java Agent Development Framework) é um framework implementado em Java que, através de um middleware, facilita o desenvolvimento de agentes baseado nos padrões FIPA. É uma ferramenta que pode ser adquirida no site Jade.
O Aglets é uma ferramenta que facilita o desenvolvimento de aplicações baseadas em agentes móveis; desenvolvida pelo laboratório de pesquisas da IBM. Disponível no site Aglets.
O JACK é um ambiente de desenvolvimento orientado a agentes que estende a tecnologia Java para suporte a modelo de agentes de arquitetura BDI. Disponível no site aosgrp.com. É necessário licença para adquirir o software.
Ferramentas Case
Quanto a ferramentas CASE a única ferramenta que foi possível achar através de pesquisas foi ferramentas de suporte a metodologia Tropos, disponíveis no site da mesma. Isto não quer dizer que as outras metodologias aqui citadas não disponham de ferramentas, contudo existem livros disponíveis à venda no mercado sobre as outras metodologias onde, provavelmente, se podem adquirir informações sobre como obter ferramentas de suporte.
Conclusão
Como pode ter sido observado neste artigo existem avanços sendo realizados para que o paradigma de orientação a agentes se torne uma tendência popular. Isto não implica que sistemas orientados a objetos deixem de existir, pois os sistemas multiagentes são construídos para resolver problemas de sistemas complexos. Como toda tecnologia nova, esta vem sendo validada no ambiente acadêmico e científico por algum tempo, mas ainda há muito a ser feito, pois é necessário avaliar sua coexistência com outros paradigmas de software, amadurecimento das metodologias, melhoramento no projeto de sistemas abertos e escalabilidade, já que todo sistema de software tende a evolui. Apesar destes desafios que precisam ser solucionados pôde ser observado, ao longo deste artigo e pelas citações bibliográficas que, as ferramentas e metodologias disponíveis asseguram a construção com sucesso e segura de um sistema de software orientado a agentes. Espero que tenham gostado deste artigo e até o próximo.
Referências
- BIHARI, T., GOPINATH, P. e SCHWAN, K. (1989) “Object-Oriented Design of Real-Time Software”, In: Proceedings of the 10th Real-Time Systems Symposium, Santa Monica, California, IEEE Comp. Soc. Press, p. 194 - 201.
- CASTRO, J. F. B. DE; ALENCAR, F. M. R.; SILVA, C. T. L. L. DA. Engenharia de Software Orientada a Agentes. Atualizações em Informática, n. 2006, p. 38, 2006.
- GIRARDI, R. Engenharia de Software Baseada em Agentes. IV Congresso Brasileiro de Computação, n. 4, p. 25, 2004.
- JENNINGS, N. e WOOLDRIDGE, M. (2001) “Agent-Oriented Software Engineering”, In: Handbook of Agent Technology, Edited by Bradshaw, J., AAAI/MIT Press.
- KICZALES, G., LAMPING, J., MENDHEKAR, A., MAEDA, C., LOPES, C., LOINGTIER, J. e IRWIN, J. (1997) “Aspect-Oriented Programming”, In: Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP’97), Edited by Aksit, M. and Matsuoka, S., Lecture Notes in Computer Science, Vol. 1241, Jyväskylä, Finland, Springer-Verlag, p. 220 - 242.
- ODELL, J. (2000) “Agent Technology”, Green paper produced by the OMG Agent Working Group.
- RUSSELL, S.; NORVIG, P. Artificial Intelligence: A modern approach. 2. ed. New Jersey: Pearson Education, 2004.
- SUN (2005) “Java Remote Method Invocation (Java RMI)”. Disponível em: http://java.sun.com/products/jdk/rmi/.
- WOOLDRIDGE, M. (2002) “An Introduction to Multiagent Systems”, John Wiley and Sons, Ltd., England, p. 15 - 103.