Desenvolvimento Orientado a Agentes
O que é um procedimento/função? Um procedimento é uma abstração de um comando e é caracterizado por: realizar operações que modificam o estado do sistema; Uma função é uma abstração e uma expressão e é caracterizada por: Realizar alguma operações sobre ‘valores’ e devolver um ‘resultado’ Ambos são metáforas de modelagem
O que significa dizer que um sistema é estruturado O que significa dizer que um sistema é estruturado? Como reconhecemos um sistema estruturado? Utiliza como metáfora de modelagem procedimentos e funções Utiliza metodologia de desenvolvimento estruturadas
O que é um objeto? É uma entidade de abstração caracterizada por: Encapsulamento/information hidding; Capacidade de relacionamentos com outros objetos de herança/agregação Comunica-se através do envio de mensagens É uma junção das abstrações de comando, expressão e declaração
O que significa dizer que um sistema é orientado a objetos O que significa dizer que um sistema é orientado a objetos? Como reconhecemos um sistema orientado a objetos? Utiliza objetos como metáfora de modelagem Utiliza metodologia de desenvolvimento orientada à objetos; Utiliza ferramentas implementação orientadas à objetos
Um sistema concebido de forma orientada a objetos pode ser também concebido de forma estruturada?
O que é um agente? É uma entidade de abstração caracterizada por: Autonomia; Capacidade social (interação com outros agentes); Reatividade; Pro-atividade; Mobilidade; Racionalidade (busca sempre atingir seus objetivos); Regras de ‘consistência’
O que significa dizer que um sistema é “orientado a agentes” O que significa dizer que um sistema é “orientado a agentes”? Como reconhecemos um sistema “orientado a agentes”? Utiliza o agente como metáfora de modelagem Utiliza metodologia de desenvolvimento orientada à agentes
Caracterização de um sistema Linguagem de Implementação? Abstração utilizada na modelagem? Metodologia de desenvolvimento?
POO X POA
Desenvolvimento orientado a objetos Busca: Definição das entidades que serão representadas no sistema; Definição das funcionalidades que estão associadas a cada entidade; Definição dos objetos e relacionamentos de agregação e herança; Definição de atributos e métodos.
Desenvolvimento orientado a agentes Busca: Definição das entidades que serão representadas no sistema (domínio); Definição das percepções e ações que cada agente pode realizar; Definição de crenças e objetivos. Definição dos relacionamentos de comunicação entre os agentes (estabelecer protocolos);
Sendo assim, temos... Metáfora para modelagem Objeto Agente Desenvolvimento OO Desenvolvimento OA Sistema “Multiobjetos” Sistema “Multiagentes”
Armadilhas no Desenvolvimento Orientado a Agentes Pouco esforço dedicado ao entendimento de como desenvolver sistemas baseados em agentes Tecnologia imatura e ainda não testada suficientemente Desenvolvedores tendem a cair nas mesmas “armadilhas”
Armadilhas Achar que os agentes resolvem tudo Não saber para que agentes Querer construir soluções gerais para problemas específicos Confundir protótipos com sistemas
Armadilhas Confundir “palavras badaladas” com conceitos Esquecer que está desenvolvendo software Não pesquisar a tecnologia relacionada
Armadilhas Não explorar concorrência Ignorar os padrões ‘de fato’ Decidir criar sua própria arquitetura de agentes Pensar que sua arquitetura é genérica
Armadilhas Utilizar muita IA Não utilizar IA Utilizar agentes para tudo Utilizar agentes demais Utilizar poucos agentes
Uma metodologia para Análise Orientada a Agentes Sistema de segurança protocolos responsabilidades permissões de sobrevivência Papel
Modelagem dos Papéis Os papéis identificam as principais funções do sistema Na fase de projeto, cada papel será associado a um ou mais agentes Exemplo: Num escritório, alguns papéis seriam: Secretária CofeeFiller (Preenchedor de café)
Papéis (Roles) São caracterizados por três tipos de atributos: Permissões informações ou conhecimento disponível ao agente Protocolos ações que o agente é capaz de executar Responsabilidades o que o agente deve fazer e manter como invariante
Exemplo: CoffeeFiller Permissões leitura coffeeMaker (nome do coffee maker) coffeeStatus (full or empty) escrita coffeeStock (nível da garrafa de café)
Exemplo: CoffeeFiller Protocolos Fill InformWorkers CheckStock AwaitEmpty
Exemplo: CoffeeFiller Responsabilidades de sobrevivência (liveness) sempre que o café acabar, preencha sempre que preencher informe os empregados CofeeFiller=(Fill.InformWorkers.CheckStock.AwaitEmpty) de segurança (safety) coffeeStock 0
Expressões de Sobrevivêmcia Define o ciclo de vida de um papel São essencialmente expressões regulares x.y x seguido de y x|y x ou y ocorre x* x ocorre 0 ou mais vezes x+ x ocorre 1 ou mais vezes x x ocorre infinitamente [x] x é opcional x||y x e y se sobrepõem
Esquema do Papel ROLE SCHEMA: CoffeeFiller PROTOCOLS: Fill, InformWorkers, CheckStock, AwaitEmpty PERMISSIONS: reads coffeeMaker //name of the coffee maker coffeeStatus //full or empty changes coffeeStock // stock level of coffee RESPONSABILITIES LIVENESS: CofeeFiller=(Fill.InformWorkers.CheckStock.AwaitEmpty) SAFETY: coffeeStock 0 DESCRIPTION: This role involves ensuring that coffee is kept filled, and informing the workers when fresh coffee has been brewed.
Processo de Análise Identificar os papéis do sistema Para cada papel, identificar e documentar os protocolos Elaborar o modelo de cada papel
Como implementar? Utilizando linguagens OO convencionais + Bibliotecas adicionais Para comunicação: JATLite (KQML), FIPA; Para raciocínio Motores de inferência lógica: JEOPS, ABE, JESS, CLIPS Motores de inferência bayesiana: Hugin, MSBN; Redes neurais; Para mobilidade: Aglets, Telescript, etc. Utilizar ambientes de desenvolvimento Agent Builder Utilizar linguagens orientadas a agentes: Agents0, Jackal, etc.
FIM