Universidade Federal do Espírito Santo Inteligência Artificial Profinder Grupo: Carlos Frederico S. da F. Mendes Diego Barcelos Rodrigues Diego Rocha Tristão João Olavo Baião de Vasconcelos Vitória 2007/02 Profinder Relatório Final apresentado como requisito para a conclusão da Disciplina Inteligência Artificial, ministrada aos alunos dos cursos de Ciência e Engenharia da Computação e do Mestrado em Informática da UFES, por Prof. Dr. Giancarlo Guizzardi e Profa. Dra. Renata Silva Souza Guizzardi. Sistemas Multiagentes Análise e Projeto usando ARKnowD Sumário 1 Descrição do problema....................................................................................................4 2 Metodologia Tropos........................................................................................................5 2.1 Requisitos iniciais........................................................................................................5 2.2 Requisitos finais..........................................................................................................6 2.3 Projeto arquitetural......................................................................................................7 3 AORML – Projeto detalhado...........................................................................................9 3.1 Diagrama de agentes....................................................................................................9 3.2 Detalhes da tarefa “Procurar por vagas”..................................................................10 3.3 Detalhes da tarefa “Encontrar candidatos”.................................................................15 4 Avaliação da experiência...............................................................................................22 4.1 Uso da metodologia ARKnowD (Tropos + AORML)..............................................22 4.2 Uso das ferramentas de modelagem..........................................................................23 Índice de ilustrações Figura 1: Requisitos iniciais: diagrama de dependência estratégica.......................................5 Figura 2: Requisitos iniciais: diagrama de razão estratégica..................................................5 Figura 3: Requisitos finais: diagrama de dependência estratégica.........................................6 Figura 4: Requisitos finais: diagrama de razão estratégica.....................................................6 Figura 5: Projeto arquitetural: diagrama de dependência estratégica.....................................7 Figura 6: Projeto arquitetural: diagrama de razão estratégica.................................................8 Figura 7: Diagrama de agentes................................................................................................9 Figura 8: Diagrama ISD para o caso "Procurar por vagas"...................................................10 Figura 9: Diagrama ISD para o caso "Procurar por vagas": nenhuma vaga encontrada.......11 Figura 10: Diagrama ISD para o caso "Procurar por vagas": nenhuma vaga compatível encontrada.............................................................................................................................12 Figura 11: Diagrama IFD para o caso "Procurar por vagas": Profissional e Agente de emprego.................................................................................................................................12 Figura 12: Diagrama IFD para o caso "Procurar por vagas": Agente de emprego e Agente RH.........................................................................................................................................13 Figura 13: Diagrama IPD para o caso "Procurar por vagas".................................................13 Figura 14: Diagrama ISD para o caso "Encontrar candidatos".............................................16 Figura 15: Diagrama ISD para o caso "Encontrar candidatos": nenhum currículo encontrado ...............................................................................................................................................17 Figura 16: Diagrama ISD para o caso "Encontrar candidatos": nenhum currículo compatível encontrado.............................................................................................................................18 Figura 17: Diagrama IFD para o caso "Encontrar candidatos": Empresa e Agente RH.......19 Figura 18: Diagrama IFD para o caso "Encontrar candidatos": Agente RH e Agente de emprego.................................................................................................................................19 Figura 19: Diagrama IPD para o caso "Encontrar candidatos".............................................20 1 Descrição do problema Estamos propondo um sistema para facilitar a vida dos profissionais na busca por emprego, e das empresas em busca de profissionais competentes para assumir uma determinada vaga. Hoje em dia, quando um profissional procura por um emprego, ele busca em classificados, agências de emprego ou em sites de empresas, tentando encontrar algo que lhe seja interessante e que ele seja capaz de realizar, de acordo com o seu currículo e com os requisitos da vaga. Ao encontrar uma vaga compatível com suas capacidades, o profissional envia (e.g., via email) seu currículo para a empresa, indicando em qual vaga está interessado. Acontece também das pessoas disponibilizarem seus currículos em algum local onde as empresas possam consultar (agências de emprego, por exemplo) e entrar em contato caso se interessem. Já as empresas, quando na busca de um profissional para ocupar uma vaga de emprego em aberto, podem disponibilizar as vagas com seus requisitos em agências de emprego, sites ou algum outro local de acesso público, ou podem optar por não disponibilizá-las, mas ir atrás de currículos que satisfazem os requisitos necessários, convidando quem as interessar para uma entrevista. Nossa proposta é automatizar essas tarefas, desde a publicação de currículos ou vagas de emprego, até a avaliação de currículos e convocação para entrevista. Dessa maneira, as empresas somente terão que entrevistar os melhores candidatos às vagas, poupando tempo e dinheiro e sem necessitar de intermediação de uma agência de empregos. Os profissionais, por sua vez, terão um novo canal de comunicação com o mercado de trabalho, também poupando o tempo de buscar por um emprego ideal. Apresentamos neste relatório o Profinder, um sistema inteligente orientado a agentes que irá buscar pela Internet páginas que disponibilizam currículos (páginas de profissionais) ou vagas de emprego (páginas de empresas). Cada profissional terá o seu agente de emprego, que buscará por vagas de emprego compatíveis com suas habilidades e disponibilizará o currículo do profissional para os agentes RH. Estes são os agentes que o Profinder disponibilizará para as empresas, que buscarão por profissionais que se adeqüem aos cargos em aberto e disponibilizarão as vagas de emprego existentes para que os agentes de emprego possam acessá-las. A análise deste sistema será apresentada utilizando duas metodologias: a Tropos e a AORML, que utilizadas em conjunto formam a metodologia ARKnowD. 2 Metodologia Tropos 2.1 Requisitos iniciais O diagrama de dependência estratégica da fase de requisitos iniciais mostra que as únicas dependências entre o profissional e a empresa são o currículo do profissional e as vagas de emprego da empresa. Pode ser observado também os objetivos de cada um. Alguns objetivos não são mensuráveis (soft goals), como trabalhar pouco e encontrar melhor candidato para a vaga. A empresa e o profissional podem optar também por não tornar público os seus dados – o profissional pode não querer ser incomodado a qualquer momento, com empresas lhe oferecendo emprego, e a empresa, por alguma razão estratégica, pode não querer apresentar as vagas de emprego existentes. Figura 1: Requisitos iniciais: diagrama de dependência estratégica No diagrama de razão estratégica, vê-se as tarefas executadas por um profissional quando deseja encontrar uma vaga de emprego, como comparar o seu currículo com os requisitos das vagas e enviar um email para a empresa caso se interesse por algum cargo. Observa-se também as formas que uma empresa utiliza para disponibilizar as vagas de emprego, como colocá-las em seu site corporativo ou cadastrá-las em uma agência de emprego. Figura 2: Requisitos iniciais: diagrama de razão estratégica 2.2 Requisitos finais Na fase de requisitos finais da metodologia Tropos, o sistema Profinder é inserido como um agente, e se responsabiliza em atingir os objetivos das empresas e dos profissionais. Figura 3: Requisitos finais: diagrama de dependência estratégica No diagrama de razão estratégica dos requisitos finais, observa-se o porquê do objetivo Não disponibilizar curriculo ser designado para o Profinder: o profissional não deseja receber ofertas de emprego, e do mesmo modo que é do Profinder a responsabilidade de disponibilizar o currículo, também é deste a responsabilidade de não divulgá-lo. Figura 4: Requisitos finais: diagrama de razão estratégica 2.3 Projeto arquitetural É na fase de projeto arquitetural que são inseridos os agentes existentes no sistema: o agente de emprego, responsável por atingir os objetivos dos profissionais, e o agente RH, responsável pelos objetivos das empresas. Os objetivos que antes eram de responsabilidade de um único agente (Profinder), agora foram realocados para seus respectivos responsáveis. Figura 5: Projeto arquitetural: diagrama de dependência estratégica O diagrama de razão estratégica do projeto arquitetural mostra as tarefas sendo alocadas para o agente responsável. Por exemplo, o agente de emprego disponibiliza o currículo do profissional e o agente RH avisa o profissional sobre o interesse da empresa por ele. Foram adicionadas as tarefas Encontrar candidatos e Procurar por vagas para encapsular as tarefas responsáveis por atingirem, respectivamente, os objetivos Encontrar candidatos para vagas e Encontrar vagas de emprego. Observa-se também que o objetivo Encontrar melhor vaga para profissional não é um soft goal, visto que tal qualidade será mensurável a partir de cálculos executados na tarefa Confrontar curriculo com vaga. Figura 6: Projeto arquitetural: diagrama de razão estratégica 3 AORML – Projeto detalhado 3.1 Diagrama de agentes O diagrama de agentes foi obtido observando a Figura 5, a princípio a partir de um processo de transformação mecânico apresentado durante o curso, e depois refinando o modelo obtido, renomeando, adicionando e removendo algumas relações. Este diagrama foi mudado após a etapa do IPD, a ser vista mais adiante. Foram acrescentadas crenças aos agentes artificiais, como a lista de vagas encontradas para o agente artificial e a lista de candidatos sugeridos para o agente RH. Figura 7: Diagrama de agentes 3.2 Detalhes da tarefa “Procurar por vagas” A tarefa “Procurar por vagas”, observada na Figura 6, é decomposta em tarefas que buscam as vagas de emprego com os agentes RH e comparam os requisitos das vagas encontradas com o currículo do profissional agenciado. Dessa comparação, é obtida uma lista com as vagas que se encaixam com o currículo, enviando-a para o profissional. Também é enviado para as empresas responsáveis por cada vaga o currículo e a vaga que está sendo pleiteada. ISD Foram três casos utilizados para mostrar o fluxo das mensagens trocadas. Na figura abaixo, o profissional requisita ao seu agente de emprego que procure vagas de emprego compatíveis com seu currículo, dando um prazo de 5 dias para o retorno dos resultados. É criado então um compromisso entre o dois, com o agente de emprego devendo retornar a lista das vagas compatíveis encontradas, ou uma mensagem informando que nenhuma compatível foi encontrada. Após o término do prazo de busca por vagas, o agente de emprego realiza uma ação de verificação da compatibilidade das vagas encontradas com o currículo do agenciado, retornando para este o resultado e encaminhando o currículo para as empresas cujas vagas foram consideradas compatíveis com o profissional. Figura 8: Diagrama ISD para o caso "Procurar por vagas" Neste outro caso apresentado na Figura 9, nenhuma vaga foi encontrada (os agentes RH encontrados não retornaram nada), enviando então para o profissional uma mensagem indicando que nada foi encontrado. Figura 9: Diagrama ISD para o caso "Procurar por vagas": nenhuma vaga encontrada Neste último caso, foram encontradas algumas vagas de emprego, mas ao analisar a compatibilidade das vagas com o currículo do profissional, verificou-se que nenhuma era interessante para ele. Assim, a mensagem indicando que nenhuma vaga foi encontrada é retornada para o profissional. Figura 10: Diagrama ISD para o caso "Procurar por vagas": nenhuma vaga compatível encontrada IFD O diagrama IFD mostra uma generalização das mensagens trocadas nos diagramas ISD apresentados anteriormente. Na figura a seguir, vemos quais são as mensagens trocadas entre os agentes Profissional e Agente de emprego. Figura 11: Diagrama IFD para o caso "Procurar por vagas": Profissional e Agente de emprego Nesta outra, vemos as mensagens trocadas entre o Agente de emprego e o Agente RH. Figura 12: Diagrama IFD para o caso "Procurar por vagas": Agente de emprego e Agente RH IPD No diagrama IPD, podemos observar as decisões que são tomadas de acordo com certas condições. Como exemplo, vemos que a decisão do agente de emprego enviar uma mensagem para o profissional para avisá-lo sobre a existência ou não de vagas de emprego depende do resultado da análise das vagas encontradas: caso não seja encontrada nenhuma vaga compatível, o aviso que vagas não foram encontradas é enviado; caso contrário, as vagas encontradas são enviadas e o currículo do profissional é encaminhado para as empresas que disponibilizaram as vagas. Figura 13: Diagrama IPD para o caso "Procurar por vagas" Todas as condições e as ações executadas podem ser vistas nas tabelas seguintes: - R1 ON Event RECEIVE FindJob(?Timeout) FROM ?Profissional DO Action SEND Há vagas de emprego() TO ?Ag. RH - R2 ON Event RECEIVE SendVagas(?Vagas) FROM ?Ag. RH DO Action STORE ?Vagas IN ?Lista de vagas - R3 ON Event PERCEIVE Timeout IF Condition AnalisarVagas(?curriculo, ?Lista de vagas) <> NULL THEN Action Action SEND ListOfJobs(?Vagas sugeridas) TO ?Profissional SEND EnviarCurriculo(?curriculo, ?Vaga) TO ?Ag. RH ELSE Action SEND VagaNaoEncontr() TO ?Profissional 3.3 Detalhes da tarefa “Encontrar candidatos” A tarefa “Encontrar candidatos”, observada na Figura 6, é decomposta em tarefas que buscam currículos com os agentes de emprego e comparam os currículos encontrados com os requisitos das vagas. Dessa comparação, é obtida uma lista com os currículos que se encaixam com os requisitos das vagas, e esses candidatos são enviados para as empresas. Também é enviado para os profissionais uma mensagem indicando que a empresa está interessada em seus serviços. ISD Nesta tarefa, também foram três casos utilizados para mostrar o fluxo das mensagens trocadas. Na figura abaixo, a empresa requisita ao seu agente RH que procure currículos compatíveis com as vagas de emprego da primeira, dando um prazo de 5 dias para o retorno dos resultados. É criado então um compromisso entre o dois, com o agente RH devendo retornar a lista dos candidatos encontrados compatíveis com alguma vaga, ou uma mensagem informando que nenhum compatível foi encontrado. Após o término do prazo de busca por vagas, o agente RH realiza uma ação de verificação da compatibilidade das vagas com os currículos encontrados, retornando para a empresa o resultado, e encaminhando para os profissionais aprovados uma mensagem convidando-os para uma entrevista de emprego. Figura 14: Diagrama ISD para o caso "Encontrar candidatos" Neste outro caso, nenhum currículo foi encontrado (os agentes de emprego encontrados não retornaram nada), enviando então para a empresa uma mensagem indicando que nada foi encontrado. Figura 15: Diagrama ISD para o caso "Encontrar candidatos": nenhum currículo encontrado Neste último caso, foram encontrados alguns currículos, mas ao analisar a compatibilidade das vagas com os currículos, verificou-se que nenhum era interessante. Assim, a mensagem indicando que nenhum currículo foi encontrado é retornada para a empresa. Figura 16: Diagrama ISD para o caso "Encontrar candidatos": nenhum currículo compatível encontrado IFD No diagrama IFD a seguir, vemos quais são as mensagens trocadas entre os agentes Empresa e Agente RH. Figura 17: Diagrama IFD para o caso "Encontrar candidatos": Empresa e Agente RH Neste diagrama IFD abaixo, as mensagens trocadas entre o agentes RH e o agente de emprego são mostradas. Figura 18: Diagrama IFD para o caso "Encontrar candidatos": Agente RH e Agente de emprego IPD O diagrama IPD da tarefa “Encontrar candidatos” pode ser visto na Figura 19. Vemos que a decisão do agente RH enviar uma mensagem para a empresa para avisá-la sobre a existência ou não de currículos compatíveis com as vagas de emprego disponibilizadas depende do resultado da análise dos currículos encontrados: caso não seja encontrado nenhum currículo compatível, o aviso que currículos não foram encontrados é enviado; caso contrário, os currículos são enviados, informando a que vagas eles estão destinados, e uma mensagem é encaminhada para os profissionais selecionados informando-os do interesse da empresa pelos seus serviços. Figura 19: Diagrama IPD para o caso "Encontrar candidatos" Todas as condições e as ações executadas podem ser vistas nas tabelas seguintes: - R1 ON Event RECEIVE FindCand(?Timeout) FROM ?Empresa DO Action SEND Quer enviar curriculo() TO ?Ag. de emprego - R2 ON Event RECEIVE SendCurriculo(?curriculo) FROM ?Ag. de emprego DO Action STORE ?curriculo IN ?Lista_Curriculos ON Event PERCEIVE Timeout IF Condition AnalisarCurriculos(?Lista curriculos, ?Vagas) <> NULL - R3 THEN Action Action SEND ListOfCand(?Candidatos sugeridos) TO ?Empresa SEND Convidar entrevista(?vaga) TO ?Ag. de emprego ELSE SEND CandNaoEncontr() TO ?Empresa Action 4 Avaliação da experiência 4.1 Uso da metodologia ARKnowD (Tropos + AORML) A mudança de paradigma de análise de sistema de orientado a objeto para orientado a agente foi bem assimilada pelo grupo. Ficou clara a distinção entre os dois paradigmas durante a modelagem do sistema, como a expressividade que cada um tem. A dependência entre agentes é uma característica marcante da metologia Tropos, enquanto que a cardinalidade e a troca de mensagens caracteriza a AORML, formando juntas uma metodologia nova que se utiliza do melhor das outras duas. Foram duas grandes dificuldades encontradas: o uso das ferramentas e a falta de uma especificação mais completa da linguagem. Baseamos-nos praticamente nos exemplos mostrados nos slides apresentados em aula e disponibilizados no site da disciplina, e lendo-os – e consultando a professora – entendemos a sintaxe e conhecemos os componentes da linguagem. Entretanto, como os exemplos não mostravam todas as possibilidades de combinação dos componentes (nem todos os componentes), podemos ter cometido erros sintáticos ou semânticos. Quanto ao uso das ferramentas, comentaremos em 4.2. De uma maneira geral, a modelagem com Tropos é interessante, porém algumas definições são um pouco abstratas para um iniciante, sendo complicado decidir o modelo do sistema e surgindo diversas dúvidas, como “Vou modelar isso como um único plano ou vou decompô-lo em vários outros”?, “Esse softgoal é realmente necessário?” e “Isso é uma dependência de objetivo ou de recurso?”. Entretanto, durante o desenvolvimento do trabalho, fomos assimilando esses conceitos e tais dúvidas foram sendo esclarecidas. Com relação a AORML, consideramos a migração de um projeto arquitetural para o diagrama de agentes muito simples e de maneira praticamente mecânica. Já em relação aos diagramas de interação, tivemos muita dificuldade em modelá-los, principalmente pela ausência de uma especificação completa da linguagem, com a sintaxe e todos os elementos léxicos existentes. A idéia de mostrar as trocas de mensagens entre os agentes é muito interessante, permitindo uma análise geral da comunicação entre eles, bem como quais recursos são necessários e quais mensagens são trocadas quando o fluxo normal da comunicação é quebrado. As etapas seguidas para construir cada diagrama foi considerada muito boa, pois permite a modelagem de casos específicos a fim de observarmos todos os caminhos possíveis na comunicação, e nos preparando para modelar um caso “genérico” de troca de mensagens (diagrama IFD). Consideramos como vantagem da ARKnowD o fato de os mesmos elementos léxicos estarem presentes em todas as fases do Tropos, e algo semelhante também ocorre nos diagramas de interação do AORML (exceção feita a alguns elementos do IPD). 4.2 Uso das ferramentas de modelagem A) TAOM4E A ferramenta TAOM4E facilita bastante a modelagem Tropos. A verificação sintática que ela apresenta funcionou perfeitamente, evitando que erros de modelagem ocorressem. Entretanto, ressaltamos a grande quantidade de bug que encontramos e que nos fez perder muitas horas de trabalho. Atividades como copiar e colar e gerar as figuras nos trouxeram muitas dores de cabeça. Ao colar um comentário dentro da bolha de um agente, ele era colado em uma área bem distante do agente, não ficando visível, e, por estar distante mas dentro da bolha, esta ficava enorme, sendo uma dificuldade imensa encontrá-lo. Gerar figuras no formato PNG travavam quase sempre o Eclipse, e aconteceu do arquivo tropos não abrir mais após isso, tendo que refazê-lo. Gerando figuras no formato BMP, isso não acontecia. As operações de desfazer e refazer ações também não funcionavam sempre, aparecendo mensagens de exceção. Renomear os elementos também era uma dificuldade. Não era permitido apagar o nome todo dos elementos (agente1, por exemplo) para pode escrever o nome desejado. Era necessário escrever primeiro, para só depois apagar o nome antigo. A falta de um atalho de teclado para renomear também foi notada (e.g., a tecla F2). A exceção dos problemas citados, consideramos uma excelente ferramenta, com um visual muito bom. A modelagem foi feita em um ambiente com as seguintes ferramentas: Sistema operacional: Ubuntu 7.10 Eclipse: 3.2.2 TAOM4E: 0.5.0 JDK: 6 EMF: 2.1.1 GEF: 3.1.1 B) MS Visio com Template AORML A experiência de criar modelos AORML no Visio não foi agradável. A ferramenta não apresentou nenhum bug, mas a sua usabilidade para construir tais modelos é sofrível. Ocorreu um grande desânimo nesta etapa por não existir uma ferramenta especialista na sintaxe da linguagem, pois o Visio não proporciona uma forma de integrar facilmente os elementos léxicos, nem faz verificação sintática, e consideramos inviável a modelagem no Visio de um projeto mais complexo, visto a dificuldade de utilizar o AORML neste programa e o tempo que será perdido utilizando-a. Consideramos que dispersão dessa metodologia tem um gargalo muito grande, que é a falta de uma ferramenta especialista. Poderiam ser desenvolvidos templates para ferramentas de modelagens livres e multiplataformas, com a modelagem não ficando restrita a somente um sistema operacional nem a uma ferramenta paga. Tal fato levou os alunos a piratearem o software para que pudessem fazer este trabalho, prática criminosa e mal vista por nós mesmos, visto que somos desenvolvedores de softwares e os temos como sustento. A ferramenta Dia é sugerida como uma outra opção para modelagem AORML.