UNIOESTE Universidade Estadual do Oeste do Paraná CCET - CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Colegiado de Ciência da Computação Curso de Bacharelado em Ciência da Computação GERAÇÃO DE RELATÓRIOS Allysson Chagas Carapeços André da Silva Queiroz Lucas Renato Batistussi Cascavel - PR 2010
Allysson Chagas Carapeços André da Silva Queiroz Lucas Renato Batistussi GERAÇÃO DE RELATÓRIOS Trabalho da disciplina de Inteligência Artificial do curso de Bacharelado em Ciência da Computação. Centro de Ciências Exatas e Tecnológicas. Universidade Estadual do Oeste do Paraná - Campus de Cascavel. Professor: Claudia Brandelero Rizzi Cascavel - PR 2010
1 - O tema trabalhado através de exemplos práticos, incluindo tecnologias escolhidas, justificativas para essas escolhas, avanços, dificuldades, trabalhos futuros. 3 Para o desenvolvimento do trabalho foi utilizado o Netbeans e o Mozilla Firefox. A linguagem de programação utilizada foi o Java, em conjunto com a tecnologia Java Servlets e a API JavaFreeChart. A escolha destas ferramentas e tecnologias se devem ao domínio por parte do grupo. Havia a possibilidade do uso da Google Chart Tool [GOOGLE] porém por alguns problemas de limitação na quantidade de pixels na geração do gráfico e dependencia do servidor e serviços da Google. Uma das tecnologias que a plataforma Java oferece é a Java Servlets. Ela tem o objetivo de fornecer um método baseado em componentes, independente de plataforma para construir aplicações baseadas na Web, sem as limitações de desempenho de programas CGI. Basicamente Servlets oferecem uma maneira alternativa a CGI para estender as funcionalidades de um servidor Web, ou seja, a API de Servlet do Java oferece mecanismos adequados à adaptação qualquer servidor baseado em requisições e respostas, mas é em aplicações Web que Servlets têm sido mais utilizados [Ricarte 2002]. Ao contrário de mecanismos de extensão de servidor proprietário, como Netscape Server API e Apache, Servlets trabalha independente da plataforma. A base dos Servlets é uma classe na linguagem Java, que processa de forma dinâmica requisições e respostas, de forma a ampliar a gana de recursos do servidor. Uma Servlet, por exemplo, pode receber dados em um form HTML por meio de uma requisição HTTP, processar os dados, atualizar a base de dados de uma empresa, e gerar alguma resposta dinamicamente para o cliente que fez a requisição. A utilização de Servlets se deu por meio de parametros passados através da URL utilizando o método GET. Na figura 1 temos o resultado da da seguinte URL: /servlet/imagen? categorias=dikstra*a*buscaemprofundidade&tpo=pizzatransp&valx=2322*3232*2323&valy=600* 3232*3232&largura=800&altura=600&titulo=Grafico de Desempenho dos Algoritmos&posicaotit=topo&rotuloX=Numero de acessos&rotuloy=algoritmos&orient=horizontal&legenda=1&posicaoleg=base. Figura 1. Exemplo de gráfico utilizando JFreeChart. JFreeChart é uma biblioteca do Java que permite aos desenvolvedores uma maneira mais
fácil para exibir gráficos de qualidade profissional em suas aplicações. A biblioteca JFreeChart é uma API muito consistente e bem documentada, suportando uma grande quantidade de tipos de gráficos, dando suporte para muitos tipos de saída, incluindo componentes Swing, formatos de arquivos de gráficos de vetor (PDF, EPS e SVG) e arquivos de imagem (JPEG e PNG). Uma característica que chama a atenção, é o fato desta ser software livre, pois, a mesma é distribuída sob os termos da GNU Lesser General Public Licence (LGPL), que permite o uso em aplicações proprietárias [JFreeChart 2009]. A função da documentação de um software é descrever cada parte do código fonte, geralmente uma função, uma classe, um simples trecho ou módulo. Documentação também pode ser um conjunto de manuais gerais e técnicos, além de diagramas explicando o funcionamento de um software como um todo ou cada parte dele [Vasconcelos]. Toda a documentação da API do JFreeChart está disponível gratuitamente em seu site. Algumas das dificuldades encontradas no desenvolvimento do trabalho foi a complexidade na obtenção dos requisitos de comunicação entre as equipes. Como o projeto foi dividido em partes, alguns grupos chegaram a depender de até dois outros grupos para o desenvolvimento de seu trabalho. Mesmo com algumas aulas marcadas pela professora, alguns integrantes não presenciavam a reunião para solução dos problemas, largando suas responsabilidades sobre os outros integrantes da disciplina. Com o andamento do trabalho visualizamos alguns avanços e trabalhos que poderão ser realizados com o tempo. Primeiramente vamos buscar uma interação do sistema que gera relatórios, desenvolvido pelo grupo, com um banco de dados. Nesta integração o banco de dados irá conter os dados dos testes, informações do algoritmo usado e a data da realização do teste, com isso o sistema poderá gerar os gráficos sobre estes testes. Posteriormente iremos implementar o método POST, para que o usuário possa gerar relatórios sem a necessidade de URL como no método GET. 4 2 Soluções para conexão com os demais temas (apresentação visual dos resultados, documentação e relatórios). O programa desenvolvido pela equipe, se deve a utilização Servlets por meio e parâmetros passados através da URL utilizando o método GET. Como apresentamos relatórios necessitamos de informações do grupo de interface e gráficos, com isso a comunicação entre a interface e o nosso programa se deve através da geração da URL contendo todas as informações a respeito do teste realizado sobre os algoritmos. 3 Conclusões Implementamos o programa utilizando a plataforma Java, a tecnologia Java Servlets e a API JFreeChart e obtivemos algumas vantagens com o uso e desenvolvimento delas. Nossa solução em comparação com a ferramenta Google Chart Tool [GOOGLE] tem o diferencial de ser flexível conforme o ponto de vista e desejo do usuário, viabilizando modificações futuras, como a troca do título e do tipo do gráfico, de um modo fácil e ágil. Uma outra vantagem é a independência da disponibilidade do serviço de geração de gráficos do Google Chart e de seus respectivos servidores. A limitação que a Google Chart Tool apresenta também é um grande diferencial, pois ela não permite gráficos com número superior a 300000 pixels como mostrado na figura 2, onde foi solitado a criação de um gráfico com 900 pixels de largura e 400 pixels de altura, totalizando 360000 pixels. O problema pode ser visualizado através do link http://chart.apis.google.com/chart? cht=p3&chd=t:50,30,15,5&chs=900x400&chco=ff0000 8B7765 7B68EE 00FF00&chdl=50+Ubuntu 30+Slackware 15+Kurumin 5+Outros&chtt=Grafico+de+Distro mais+utilizada&chl=ubuntu Slackware Kurumin Outros.
5 Figura 2. Limitação do tamanho do gráfico utilizando Google Chart Tool. Foi muito interessante para todos integrantes, pois apesar de um dos integrantes já ter conhecimento prévio a respeito da ferramenta JFreeChart, o mesmo foi ampliado considerando as dificuldades de implementação. Para os outros integrantes que não conheciam a ferramenta, foi muito interessante pois podemos conhecer uma ferramenta muito ampla e flexível para geração de gráficos utilizando a plataforma Java.
6 Referências Caducruz (2007), "Gráficos com Cewolf e JFreeChart", http://cadocruz.wordpress.com/2007/07/25/graficos-com-cewolf-e-jfreechart/. GOOGLE, "The advantages of the Google Chart Tools", http://code.google.com/intl/pt- BR/apis/charttools/. JFreeChart (2009), "Welcome to JFreeChart!", http://www.jfree.org/jfreechart/index.html. Ricarte, I. L. M. (2002), "Introdução a Servelets", http://www.dca.fee.unicamp.br/cursos/poojava/servlets/intro.html. SUN, "Java Servlet Technology Overview", http://java.sun.com/products/servlet/overview.html. Vasconcelos, S., "Documentação de Software", http://cps.erp5.org/workspaces/project/erp5_brasil/documentacao_dos_pro/transparencias_so bre/downloadfile/file/projetodocumentacao1.pdf.