Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Departamento de Ciências da Computação Laboratório de Engenharia de Software Relatório Técnico: Descrição do algoritmo para pesquisa automática dos egressos do curso de Ciência da Computação Dimas Cassimiro dimascnf@gmail.com José Martins da Nobrega Filho martins.ufcg@gmail.com Rafael Figueiredo raffccc@gmail.com Alexandre Sales Vasconcelos alexandresv@lcc.ufcg.edu.br Alexandre Teixeira Nunes alexandretn@lcc.ufcg.edu.br Gustavo Ramos de Sousa gustavors@lcc.ufcg.edu.br Orientadora Francilene Procópio Garcia garcia@dsc.ufcg.edu.br Campina Grande-PB, 10 de Maio de 2009
Sumário Introdução... 3 Estrutura do Algoritmo... 3 Fluxo de execução do algoritmo... 4 Validação dos dados encontrados... 5 Atividades Dessa Iteração... 6 Conclusão... 6 Referências... 6 2
Introdução O sistema desenvolvido na disciplina Laboratório de Engenharia de Software da Universidade Federal de Campina Grande propõe, em primeira instância, uma solução para automatizar a busca pelos egressos do curso de Ciência de Computação desde a data de sua criação. Além dessa funcionalidade o sistema também provê uma forma de visualizar a distribuição geográfica dos egressos e uma rede social montada com os mesmos. Durante discussões sobre o motor de busca desse projeto foi definido um algoritmo em alto nível para realização dessa tarefa sendo o foco desse documento o esclarecimento dos passos dessa solução. Estrutura do Algoritmo A solução é baseada na construção de Crawlers [1] para obtenção de informações contidas em sistemas web como o Lattes [2]. Essa pesquisa é inicialmente baseada nos nomes dos egressos fornecidos pela coordenação do curso mas após a verificação dessas informações serão utilizados fontes menos confiáveis para manter contato com os egressos e disseminar a notícia da construção desse sistema. A implementação dessa funcionalidade é realizada por um conjunto de scripts que, através de um cliente http da apache, comunica-se com os sistemas web obtendo as páginas que contém os dados coletados pelo script. Os dados obtidos são diretamente salvos no banco de dados exceto o endereço que será confirmado e completado através do sistema de Correios [3] para depois ser persistido. A figura 1 mostra a arquitetura do sistema juntamente com o que foi dito até agora. Figura 1: Arquitetura do sistema de egressos e graduandos onde é possível visualizar o componente de pesquisa na parte verde da imagem. 3
Fluxo de execução do algoritmo O algoritmo proposto utiliza o Lattes mantido pelo CNPq e os sistemas de rede social LinkedIn [4] e Orkut [5] para obtenção dos dados e comunicação com o usuário. As buscas no sistema do CNPq e no LinkedIn serão executadas em paralelo pois tem o objetivo de encontrar dados de alta qualidade para que possam ser usados em outros sistemas como Orkut cujos dados não são totalmente confiáveis. Essa primeira buscas coletará informações sobre o endereço profissional, ano de conclusão, curso que foi concluído, sexo, links para páginas pessoais e telefones para contato sendo esses dados utilizados para filtrar os resultados da pesquisa realizada no Orkut. A segunda etapa tem o objetivo de encontrar os perfis dos egressos no Orkut para que possamos se comunicar com o mesmo através de mensagens visto que não possuímos seu email. O Orkut foi escolhido por ser a maior rede social ativa no Brasil com uma faixa etária variando de crianças a adultos [6], além de existir a possibilidade de criação de comunidades que poderá ser útil na comunicação com os egressos. Quando essas duas buscas terminarem a base de dados estará em um estado similar a figura 2 e será iniciada a etapa de validação dos dados, descrita no tópico seguinte, cujo objetivo é identificar novas formas de filtrar os dados e analisar a viabilidade do projeto. Figura 2: Árvore de possibilidades que será criada após a execução dos crawlers. A imagem é um exemplo de dados coletados ao se pesquisar pelo nome José Martins da Nobrega Filho 4
Esse processo de pesquisa será definido em quatro ações que serão executadas antes de obter o resultado final. Primeiro será aberta uma conexão com o sistema de busca e realizada uma pesquisa para cada egresso da universidade, após essa fase a lista de resultado de cada ex-aluno será salvo num banco de dados indexado pelo nome do egresso. A terceira ação consiste num parser desses htmls persistidos para obtenção dos dados relevantes e a última ação é responsável por salvar esses resultados num banco de dados onde cada resultado consiste numa árvore de possibilidades que foi mostrada na figura anterior. Para ficar mais claro a figura 3 mostra esse processo. Figura 3: Descrição do processo de pesquisa dos egressos Validação dos dados encontrados Essa etapa tem o objetivo de obter valores estatísticos que expressam a quantidade de falhas encontradas nos dados capturados e a dificuldade de tornar esses resultados mais precisos. Com essa etapa concluída será possível identificar se os dados obtidos serão suficientes, se existem meios de coleta para remover falhas ou completar os dados e identificar se o projeto é viável para o escopo da disciplina. As tarefas de validação e conseqüentemente os valores que serão encontrados vão depender do tipo de informação que podemos obter com a coordenação do curso sendo algumas possibilidades citadas a seguir. 5
Verificar se existem mais pessoas se formando por ano que o descrito pela coordenação. Verificar qual a profundidade média das árvores de possibilidades. Verificar quantas pessoas possui perfil no Orkut. Verificar o grau de dificuldade de achar os egressos mais antigos. Atividades Dessa Iteração. Nessa segunda iteração compreendida entre os dias 07/05/2009 e 21/05/2009 estão alocadas atividades voltadas para implementação das buscas no LinkedIn, Lattes e Orkut sendo esperado que na próxima iteração seja realizada a validação dos dados e a acomodação do código ao projeto principal visto que estamos trabalhando em um breach do repositório. É possível também que no final da iteração esse algoritmo seja descartado devido a dificuldades encontradas durante a implementação como iteração com javascript ou existência de muitos resultados associados a um egresso. Nesse caso esperamos estudar novas formas de pesquisa ainda nessa iteração. Conclusão O processo de pesquisa por egresso é baseada nas fontes do LinkedIn, Lattes e Orkut, sendo esse último utilizado para se comunicar com o egresso. Apesar de existir alguns riscos na implementação desse algoritmo, é esperando que ao término dessa iteração tenhamos essa pesquisa implementado para que na próxima iteração os dados sejam validados. Referências [1] http://www.google.com.br/search?hl=pt-br&q=define%3acrawler&btng=pesquisa+google&meta=&aq=f&oq= [2] http://lattes.cnpq.br/ [3] http://www.correios.com.br/ [4] http://www.linkedin.com/ [5] http://www.orkut.com.br/ [6] http://www1.folha.uol.com.br/folha/informatica/ult124u414183.shtml 6