UNIVERSIDADE DO OESTE DE SANTA CATARINA ÁREA DE CIÊNCIAS EXATAS E DA TERRA - ACET CURSO DE ENGENHARIA DA COMPUTAÇÃO VAGNER LUCAS GOMES GEOLOGE – SOFTWARE DE LOGÍSTICA – PESQUISA, ESTUDO E DESENVOLVIMENTO DE UM SOFTWARE DE LOGÍSTICA PARA ROTEIRIZAÇÃO DE VEÍCULOS DE TRANSPORTE DE RAÇÃO, LATICÍNIOS, ANIMAIS PARA ABATE.® Joaçaba 2013 VAGNER LUCAS GOMES GEOLOGE – SOFTWARE DE LOGÍSTICA – PESQUISA, ESTUDO E DESENVOLVIMENTO DE UM SOFTWARE DE LOGÍSTICA PARA ROTEIRIZAÇÃO DE VEÍCULOS DE TRANSPORTE DE RAÇÃO, LATICÍNIOS, ANIMAIS PARA ABATE.® Relatório de projeto de pesquisa do Curso de Engenharia da Computação da Universidade do Oeste de Santa Catarina. Orientador: Prof. Ricardo Antonello, Me. Joaçaba 2013 ii Resumo Este trabalho surgiu da necessidade de um grande empresa do agro negócio (Brf Foods) que necessitava reorganizar todas sua logística de entregas de insumos agrícolas para seus produtores. Assim, o projeto inicial desenvolvido em Delphi tinha a funcionalidade de sugerir as fabricas quais produtores devem receber os insumos de quais fabricas determinado por um raio de ação usando um distancia em linha reta. Neste projeto o sistema desenvolvido inicialmente todo em Delphi foi reescrito e desenvolvido novamente em Java para web. Também surgiu a demanda de novas funcionalidades para o sistema que formam o modulo de carregamento de ração, modulo Sanidade e o modulo Frigorifico. O modulo de carregamento de ração tem funcionalidades, cadastros de veículos, de rotas de fabricas para produtos, agrupamentos de cargas para entregas, relatórios de históricos de entregas por veículos. O modulo de Sanidade é para a parte ambiental da empresa, de forma simples verificar lotes de alojamento de animais que estão em um raio de ação e possam estar contaminados. O modulo frigorifico tem rotas entre frigoríficos e propriedades, para coleta de animais para o abate. O sistema mostrou-se eficaz para auxiliar a empresa em decisões estratégicas, também para obter as quilometragens exatas de distancias entre fabricas e propriedades já que grande parte de mapas de interior não possui mapeamento, também reduz significativamente o tempo de fechamento de cargas já que o sistema sugere vários agrupamentos. Mediante a tudo isso obteve resultados de economia de tempo e serviços entre atividades de colaboradores da empresa. Assim o sistema se mostra de grande utilidade para realização das atividades dentro da empresa. Palavras-chave: Rotas. Entrega. Logística. iii ABSTRACT This work arose from the need for a large agribusiness company ( Brf Foods ) in the region that needed to reorganize all their logistics supplies of agricultural inputs for its producers. So the initial design was developed in Delphi functionality suggest the factories which producers must receive inputs from factories which determined by a radius of action using a distance in a straight line. In this design the whole system initially developed in Delphi was rewritten and redeveloped in Java for web. The demand for new features to the system that make up the module loading ration module and module Sanity Refrigerator also emerged. The module load feed has features, registration of vehicles, routes factories for products, groups of charges for deliveries, historical reports of deliveries by vehicles. The module for Environmental Health is part of the company, simply check lots of housing animals that are in a range and may be contaminated. The refrigerator module has routes between refrigerators and properties, to collect animals for slaughter. The system proved effective to assist the company in strategic decisions, also to get the exact mileage of distances between factories and properties since most maps do not have indoor mapping, also significantly reduces the time of closing charges since the system suggests multiple groupings. Through all this got results time and services among the company's employee’s economy activities. Thus the system is shown useful for performance of activities within the company. Keywords: Routes. Delivery. Logistics. iv LISTA DE ILUSTRAÇÕES Figura 1 - Tabela de linguagens de programação mais utilizadas .............................................. 7 Figura 2 - Modelo Conceitual................................................................................................... 25 Figura 3 - Diagrama de sequencia ............................................................................................ 26 Figura 4 - Diagrama de Classes de projeto ............................................................................... 27 Figura 5 - Diagrama de comunicação ....................................................................................... 28 Figura 6 - Modelo da Base de dados ....................................................................................... 29 Figura 7 - Tela de importação da Demanda ............................................................................. 31 Figura 8 - Tela para fechamento de cargas ............................................................................... 32 Figura 9 - Tela de Impressão de Cargas ................................................................................... 33 Figura 10 - Tela de vinculação de carga ................................................................................... 33 Figura 11 - Veículos que entregaram no Produtor ................................................................... 34 Figura 12 - Entregas realizadas pelo veículo com possível contaminação............................... 35 Figura 13 - Produtores em um Raio de 10 mil metro do produtor ........................................... 35 Figura 14 - Rotas para coleta de aves, suinos, etc .................................................................... 36 Figura 15 - Representação de um grafo não-orientado............................................................. 37 v LISTA DE TABELAS Tabela 01 – Custos do Sistema.............................................................12 LISTA DE SIGLAS CSS - Cascading Style Sheets HTML5 - Linguagem de Marcação de Hipertexto JSP – Java Servers Pages Java EE – Java Enterprise Edition XHTML - Xtensible Hypertext Markup Language SQL – Linguagem de Consulta Estruturada PDF - Portable Document Format RTF - Rich Text Format XML - eXtensible Markup Language XLS - Microsoft Excel file format CSV - comma-separated values HTML - HyperText Markup Language DOCX - default Word document format vii SUMÁRIO 1 INTRODUÇÃO ...................................................................................................... 3 1.1 APRESENTAÇÃO .............................................................................................. 3 1.2 DESCRIÇÃO DO PROBLEMA .................................................................................. 3 1.3 JUSTIFICATIVA ...................................................................................................... 4 1.4 OBJETIVO GERAL .................................................................................................. 4 1.5 OBJETIVOS ESPECÍFICOS...................................................................................... 4 1.6 CRONOGRAMA ................................................................................................. 5 2 FUNDAMENTAÇÃO TEÓRICA ......................................................................... 6 2.1 SOFTWARE ......................................................................................................... 6 2.1.1 NetBeans IDE ...................................................................................................... 6 2.1.2 Linguagem Java................................................................................................... 6 2.1.3 i-Report/Jasper Report ........................................................................................ 8 2.1.4 Hibernate ............................................................................................................. 9 2.1.5 MySQL ................................................................................................................ 9 2.1.6 HTML5.............................................................................................................. 10 2.1.7 Inteface Grafica – BootStrap ............................................................................. 10 2.2 METODOLOGIAS DE DESENVOLVIMENTO ......................................................... 11 2.2.1 UML (Unified Modeling Language) ................................................................. 11 2.2.2 SCRUM – Metodologia Ágil ............................................................................ 11 3 3.1 ANÁLISE E PROJETO DE SOFTWARE ........................................................ 13 RECURSOS UTILIZADOS ...................................................................................... 13 3.2 LEVANTAMENTO DE REQUISITOS ...................................................................... 13 3.2.1 Requisitos Funcionais e não funcionais ............................................................ 14 3.2.2 Requisitos Suplementares ................................................................................. 17 3.2.3 Casos de Uso ..................................................................................................... 18 3.3 FASE DE ELABORAÇÃO ............................................................................... 19 3.3.1 Expansão do Caso de Uso ................................................................................. 19 3.3.2 Estórias de Usuário............................................................................................ 21 3.3.3 Plano de Release................................................................................................ 22 3.3.4 Lista de Operações e Consultas do Sistema. ..................................................... 23 3.3.5 Modelo Conceitual ............................................................................................ 25 3.3.6 Diagrama de Sequencia ..................................................................................... 26 3.3.7 Diagrama de Classes de projeto ........................................................................ 27 3.3.8 Diagrama de Comunicação ............................................................................... 28 3.3.9 Base de Dados ................................................................................................... 29 4 DESENVOLVIMENTO DO SISTEMA ............................................................ 30 4.1 O SISTEMA ........................................................................................................... 30 4.1.1 Modulo Fechamento de Cargas e Rotas ............................................................ 30 4.1.2 4.1.3 4.2 Modulo Sanidade............................................................................................... 34 Modulo Frigorifico ............................................................................................ 36 ROTEIRIZAÇÃO ................................................................................................... 37 5 RESULTADOS E CONCLUSÕES ..................................................................... 39 6 CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS ............................. 41 REFERÊNCIAS .......................................................................................................... 42 2 1 1.1 INTRODUÇÃO APRESENTAÇÃO Este relatório apresenta os resultados obtidos durante a realização do Estágio Curricular Obrigatório na empresa GEOLGE softwares de Gestão, que é uma empresa voltada para softwares, iniciando em desenvolvimento de hardwares. O objetivo final do estágio será o desenvolvimento de um sistema de monitoramento de coleta de leite, onde este possibilitará a análise das coletas feitas pelo caminhão e a geração de relatórios, que auxiliem o entreposto a tomar decisões estratégicas quanto a coleta em tempo hábil, para manter um qualidade nos serviços e produtos. Um projeto piloto será realizado em 13 cidades do oeste catarinense descritas no item 4.2 deste trabalho. 1.2 DESCRIÇÃO DO PROBLEMA Após a união das empresas Perdigão e Sadia – BR FOODS – houve um problema de logística envolvendo as unidades de distribuição da empresa, principalmente no meio oeste Catarinense. Algumas entregas/coletas de polos mais distantes passaram a ser desnecessários, por exemplo, ao invés de um antigo polo da SADIA entregar uma carga de ração a um integrado que se localiza nas proximidades de uma fábrica da PERDIGÃO, o caminhão poderia sair direto de um antigo polo da PERDIGÃO, sendo assim, os gastos de transportes poderiam ser otimizados. Para facilitar o remanejo dessas rotas, é proposto o desenvolvimento de um software inteligente que indica qual a melhor rota com origem e destino para ser utilizada. Com o sistema, além da redução de custos, obtemos o benefício de economizar com combustível e diminuir a emissão de gases poluentes. Na entrega de ração para animais, algumas dificuldades serão encontradas ao analisar o processo de escolha de rotas. Cada produtor tem uma capacidade de armazenamento de ração diferente, para saber quando ele precisa de ração, existe um cálculo com um coeficiente, usando a capacidade de alojamento da granja, o tempo do animal (frango, porco, peru), aonde se obtém a produção, quanto de ração é consumida e a data prevista para fazer o carregamento dos animais. Também no processo de laticínio o caminhão tanque para transporte de leite sai vazio para voltar cheio, com essa ideia ele deve ir ao ponto mais distante para voltar o mais cheio 3 possível, ao ir mais longe vazio e ir carregando enquanto retorna, a economia de combustível pode ser consideravelmente visível. Hoje o custo de frete da empresa com entrega de rações aos seus integrados é gigantesco. Com o sistema proposto GeoLOGE, a empresa poderá ter uma significativa redução nesse valor, pois o software pretende informar/mostrar quais integrados de toda a rede (cerca e seis mil) ficam mais próximos de cada uma das oito fábricas de rações da Regional Santa Catarina. Após o projeto piloto na região meio oeste de Santa Catarina, pretende-se expandir para Rio Verde/GO e Marau/RS. Para realizarmos este estudos, e também fazer seu desenvolvimento teremos que adaptar ao caso alguns algoritmos, como o A*(A-star), Djkistra, caixeiro viajante. Desenvolvendo nossos próprios mapas através de imagens de satélites e utilizando grafos. 1.3 JUSTIFICATIVA Devido ao grande tempo que pode levar a análise de remanejamento de rotas feita de forma manual foi proposto a criação de um software que possa diminuir o tempo de análise dessas rotas. Também no mercado atual não existir nenhum software especifico para esta funcionalidade de ajustes de rotas e gerenciamento de entregas de insumos agrícolas a propriedades com alojamento para animais. 1.4 OBJETIVO GERAL Desenvolver um sistema que possibilite uma melhor analise, auxiliando colaboradores da empresa, reduzindo tempo de serviço e gerando economias. 1.5 OBJETIVOS ESPECÍFICOS Desenvolver um modulo para gerenciamento de entregas de rações; Desenvolver um metodologia para roteirização; Desenvolver relatórios que possam auxiliar em decisões estratégicas. 4 1.6 CRONOGRAMA Etapas Levantamento dos requisitos abr/13 mai/13 jun/13 jul/13 x x x x x x Análise de sistema Codificação ago/13 set/13 x x x x Testes Correções out/13 nov/13 dez/13 jan/14 x x X x fev/14 mar/14 x x x x X x x 5 2 FUNDAMENTAÇÃO TEÓRICA Neste item será descrito todas as tecnologias utilizadas para a realização deste projeto de estágio. Tanto para tecnologias de hardware que é desenvolvida em outro trabalho, como para de Software que é desenvolvido neste projeto. 2.1 SOFTWARE O Sistema é desenvolvido no ambiente de desenvolvimento NetBeans, utilizando linguagem Java para Web (JSP, HMTL5, Java Script, CSS3), para permitir desenvolver uma aplicação robusta com interface web, que se adequa as necessidades da empresa. 2.1.1 NetBeans IDE O netbeans é uma ferramenta de desenvolvimento open source, que permite desenvolver, compilar e instalar programas, pode-se fazer uso de várias linguagens, o netbeans é um produto livre, permitindo a sua utilização. Atualmente o netbeans é desenvolvido pela Oracle®. O NetBeans IDE é um ambiente de desenvolvimento - uma ferramenta para programadores, que permite escrever, compilar, depurar e instalar programas. O IDE é completamente escrito em Java, mas pode suportar qualquer linguagem de programação. Existe também um grande número de módulos para estender as funcionalidades do IDE NetBeans. O NetBeans IDE é um produto livre, sem restrições à sua forma de utilização. 2.1.2 Linguagem Java Desde 1995 quando o Java foi formalmente anunciado pela Sun, ele chamou atenção da comunidade de negócios por causa do enorme interesse na Web. O Java é utilizado para aplicativos corporativos de grande porte (DEITEL, 2010, p. 6). DEITEL vem afirmar que o com o Java pode ser possível criar aplicações seguras na Web e tão eficazes quanto as Desktop. No Java, um serviço web é implementado como uma classe. A classe que represente um serviço Web reside em um servidor – ela não é parte do aplicativo cliente. Disponibilizar um serviço Web para receber solicitações de cliente é conhecido como publicar um serviço Web (DEITEL, 2010, p. 1019). Atualmente a Sun pertence a Oracle que foi comprada em 2009 aonde o Java se fortaleceu mais ainda, podemos ver no gráfico que Java é uma das linguagens mais utilizadas no mundo. Figura 1 - Tabela de linguagens de programação mais utilizadas Fonte: TecMundo.com.br NETO (2009, p. 19) diz que “A linguagem Java é muito versátil, podendo ser utilizada para construir vários tipos de aplicativos, para diferentes meios e finalidades.” 2.1.2.1 Java Server Pages JSP é o padrão do Java EE para aplicações web, ideal para criar aplicações robustas na web, com grande capacidade de processamento no lado do servidor. NETO (2002, p. 3) 7 afirma que JSP pode ser usada para desenvolver aplicações web eficientes, escaláveis e seguras rapidamente. “As tecnologias Web do Java evoluem continuamente a fim de fornecer aos desenvolvedores níveis mais altos de abstração e melhor separação das camadas do aplicativo, o que torna aplicativos Web mais fáceis de manter e mais extensíveis.” Afirma DEITEL (2010, p. 950). Assim podemos manter funcionalidades no sistema que teríamos em um sistema Desktop, isso que nos permite o Java Web. Não podemos falar de JSPs sem mencionar o funcionamento de uma Servelet. “Servlets estendem a funcionalidade de um servidor, permitindo que ele gere conteúdo dinâmico. Servlets podem gerar XHTML, personalizados, ajudar a fornecer acesso seguro para um site Web, interagir com banco de dados sem nome de um cliente e manter informações de sessão únicas para cada cliente.” (DEITEL, 2010, p 951) Assim uma JSP é uma extensão de um tecnologia de servlet. Segundo DEITEL (2010, p. 851) “As JavaServes Pages permitem aos programadores de aplicativos Web criar conteúdo dinâmico reutilizando componentes predefinidos e interagindo com componentes que utilizam scripts do lado do servidor”. Em conformidade com a questão Temple et al. (2004, p. 11) diz “Assim, um JSP consiste de uma página HTML com alguns elementos especiais, que conferem o caráter dinâmico da página. Esses elementos podem tanto realizar um processamento por si, como podem recuperar o resultado do processamento realizado em um Servlet,” 2.1.3 i-Report/Jasper Report iReport é gratuito, designer de relatório de código aberto para JasperReports e Servidor JasperReports. Criar layouts muito sofisticados contendo gráficos, imagens, subrelatórios, tabelas cruzadas e muito mais. Permite acessar dados através de JDBC, TableModels, JavaBeans, XML, Hibernate, CSV e fontes personalizadas. Em seguida, publicar os relatórios em formato PDF, RTF, XML, XLS, CSV, HTML, XHTML, textos, DOCX ou OpenOffice. 8 2.1.4 Hibernate Hibernate permite que você desenvolva classes persistentes seguintes idiomas orientada a objetos naturais, incluindo herança, polimorfismo, associação, composição e o framework Java coleções. Persistência transparente: Hibernate não necessita de interfaces ou classes de base para classes persistentes e permite que qualquer estrutura de classes ou de dados a ser persistente. Além disso, o Hibernate permite construir procedimentos mais rápidos, uma vez que não apresenta o tempo de compilação de código-fonte ou geração de código de byte ou processamento. Alta Performance: Hibernate suporta a inicialização lenta, muitas estratégias de ir buscar, e bloqueio otimista com versionamento automático e estampagem tempo. Hibernate não necessita de tabelas especiais ou campos e gera grande parte do SQL em tempo de inicialização do sistema, em vez de tempo de execução. Hibernate consistentemente oferece desempenho superior em linha reta JDBC codificação. Confiabilidade e Escalabilidade: Hibernate é bem conhecido por sua excelente estabilidade e qualidade, comprovada pela aceitação e uso por dezenas de milhares de desenvolvedores Java. Hibernate foi projetado para trabalhar em um cluster de servidor de aplicativos e oferecer uma arquitetura altamente escalável. Hibernate escalas bem em qualquer ambiente: Use-o para conduzir a sua in-house Intranet que atende a centenas de usuários ou para aplicações de missão crítica que servem centenas de milhares. Instalações de consultas abrangentes: Incluindo suporte para Hibernate Query Language (HQL), Query Language Java Persistence (JPAQL), consultas de critérios, e "nativas" consultas SQL; tudo o que pode ser rolada e paginado para atender às suas necessidades de desempenho exatas. 2.1.5 MySQL O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface. É atualmente um dos bancos de dados mais populares, com mais de 10 milhões de instalações pelo mundo. 9 MySQL é a solução robusta para quase todo tipo de aplicação, combine a estabilidade do MySQL com seu baixo custo de propriedade e rapidamente você irá considerá-lo indispensável. O MySQL oferece o melhor cenário de todos SGBD, executa em muitas plataformas, oferece um baixo TCO (custo total de propriedade) e é muito estável. 2.1.6 HTML5 HTML e uma linguagem de marcação para produzir páginas Web, através do HTML o navegador processa imagens, texto, vídeo, sons, etc. “O HTML é baseado no conceito de Hipertexto. Hipertexto são conjuntos de elementos – ou nós – ligados por conexões. Estes elementos podem ser palavras, imagens, vídeos, áudio, documentos etc. Estes elementos conectados formam uma grande rede de informação. Eles não estão conectados linearmente como se fossem textos de um livro, onde um assunto é ligado ao outro seguidamente. A conexão feita em um hipertexto é algo imprevisto que permite a comunicação de dados, organizando conhecimentos e guardando informações relacionadas (FERREIRA, 2013 p. 7).” FERREIRA mostra que é possível desenvolver várias aplicações utilizando HTML, contudo a nova versão do HTML, o HTML5, anteriormente o HTML4, mudou muitos paradigmas que se tinham quanto ao mudo da internet. O HTML5 já fornece ferramentas que facilitam a manipulação de elementos como CSS1 e JavaScript2. Integrado com Java Web, podemos fazer sistemas que tenham funcionalidades importantes e com ótima segurança. 2.1.7 Inteface Grafica – BootStrap O BootStrap é uma camada de estilos (CSS) para ser usado em sites, ela é mantida pelo Twitter em um projeto open source, disponível para usar como quiser. “Bootstrap é uma estrutura elegante, intuitivo e poderoso front-end para o desenvolvimento web mais rápido e 1 Folhas de Estilos em cascata (Cascading Style Sheets). Usadas para mudanças visuais em paginas web 2 JavaScript é uma linguagem de programação intepretada pelo navegador, posibilita a execução de script do lado do cliente. 10 fácil, criado e mantido por Mark Otto e Jacob Thornton3.” (https://github.com/twbs/bootstrap, tradução nossa). Existem versões pagas do BootStrap, a versão adquirida para este trabalho foi a Ace – Responsive Admin Template, na versão comercial, que pode ser encontrada neste site wrapbootstrap.com. 2.2 METODOLOGIAS DE DESENVOLVIMENTO 2.2.1 UML (Unified Modeling Language) Conforme Wazlawick (2011), UML é uma maneira de pensar sobre problemas, através de modelos organizados em função de ideias do mundo real. Os modelos são úteis para Compreensão de problemas, Comunicação c/ qualquer pessoa envolvida em um projeto, clientes, especialistas de domínio, projetistas, analistas de sistemas, modelagem de empreendimentos, preparação de documentação, projeto de programas e bancos de dados. 2.2.2 SCRUM – Metodologia Ágil Conforme Wazlawick (2011), é uma maneira de pensar sobre problemas, através de modelos organizados em função de ideias do mundo real. Os modelos são úteis para Compreensão de problemas, Comunicação c/ qualquer pessoa envolvida em um projeto, clientes, especialistas de domínio, projetistas, analistas de sistemas, modelagem de empreendimentos, preparação de documentação, projeto de programas e bancos de dados. O Scrum é uma metodologia ágil para gestão de projetos de softwares, ideais para vários tipos de projetos principalmente os de pequeno porte, pois possui uma metodologia simples e rápida de ser implementada em uma equipe de trabalho. “O Scrum pode ser utilizado em vários contextos sem algum tipo de adaptação, um bom conhecimento das funções do movimento Ágil e de seus processos lhe permitirá saber como adaptar o Scrum para seu ambiente”, afirma PHAN, 2011 (p. 50). Assim usamos o Scrum juntamente com o UML para fazer a modelagem do sistema e a gerencia do projeto. 3 Bootstrap é um frameword poderoso de front-end para desenvolvimento web. Foi criado e é mantido por Mark Otto e Jacob Thornton. 11 Segundo PHAN, 2011 (p. 39) com as metodologias Ágeis começamos a valorizar: “Indivíduos e interações em vez de processos e ferramentas”; “Software funcional em vez de documentação extensiva”; “Colaboração com o cliente em vez de negociação de contrato”; “Resposta a mudanças em vez de seguimento de um plano”; 12 3 ANÁLISE E PROJETO DE SOFTWARE Abordaremos a seguir as fases de análise de requisitos e projeto de software que englobam os requisitos funcionais, não funcionais e suplementares, artefatos UML como casos de uso, estórias de usuário, operações e consultas de sistema além de vários outros diagramas necessários no desenvolvimento bem estruturado de um software deste porte. 3.1 RECURSOS UTILIZADOS O sistema foi desenvolvido utilizando a linguagem Java para Web, mencionada no item 2.1.2 deste trabalho, hospedado em um servidor Apache Tomcat4 na empresa KingHost® que possui servidores Linux que podem rodas aplicações Java Web. Para o desenvolvimento do sistema teve gastos com servidores e interfaces gráficas que estão descritas na tabela abaixo Tabela 01 – Custos para desenvolvimento do Sistema Descrição Valor Servidor R$ 308,00 (7 meses) Ace – Responsive Admin R$ 122,00 (U$ 50,00) Template – versão comercial Total 3.2 R$ 430,00 LEVANTAMENTO DE REQUISITOS Os requisitos especificam ações que um sistema deve ou não ser capaz de executar. O sistema proposto nesse trabalho tem os requisitos funcionais, não funcionais e suplementares descritos abaixo. 4 Os servidores Apache Tomcat, são servidores para aplicações Java Web que utilizam o Java EE desenvolvido pela Apache Software Foundation. 13 3.2.1 Requisitos Funcionais e não funcionais Os requisitos funcionais especificam ações que um sistema deve ser capaz de executar. O sistema proposto nesse trabalho terá os seguinte requisitos. F1 Manter registro de veículos Oculto ( ) Descrição: O sistema deve registrar todos os veículos Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: Placa Grupo de animal Especificação de veículos pertencente, categoria de ração, capacidade, tipo de veículo. Fonte: o autor F2 Manter registro de todos os tipos de Veiculo Oculto ( ) Descrição: O sistema deve registrar todos os tipos de veículos Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: Codigo, descrição e Especificação de tipos de veículos capacidade. Fonte: o autor F3 Manter registro de todos os produtores Oculto ( ) Descrição: O sistema deve registrar todos os produtores Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: Código, Nome, Sistema Especificação de produtores Produtos, Área, Caminhão, Capacidade, Distancia Fabrica, Latitude Longitude, Município, Silo 1, Silo 2, Altitude Fonte: o autor F4 Manter registro de todos as categorias animais Oculto ( ) Descrição: O sistema deve registrar todos as categorias animais 14 Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: Código e Descrição Especificação de categorias animais Fonte: o autor F5 Manter registro de todos os grupos de ração Oculto ( ) Descrição: O sistema deve registrar todos os grupos de ração Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: Código e nome do Especificação de grupos de ração grupo Fonte: o autor F6 Manter registro de todas as Rações Oculto ( ) Descrição: O sistema deve registrar todas as rações Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: Código, Id Ração, Especificação de rações Nome, Categoria Animal, Grupo de ração Fonte: o autor F7 Manter registro de todas as demandas Oculto ( ) Descrição: O sistema deve registrar todas as demandas Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: Código, código Especificação de demandas produtor, data, distancia, item, linha, município, pedido, nome produtor, quantidade carga, status, tonelada, Ração Fonte: o autor F8 Manter registro de todas as cargas Oculto ( ) Descrição: O sistema deve registrar todas as cargas Requisitos Não-Funcionais Nome Restrição Categoria 15 NF 1.1 Registro de informações O registro será composto por: Código, data, distancia, de cargas item, linha, município, nome integrado, pedido, Especificação quantidade de carga, ração, demanda, veiculo, ticket Fonte: o autor F9 Manter registro de todos os tickets Oculto (X) Descrição: O sistema deve registrar todos os tickets Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: código, data, número do Especificação de tickets ticket, veiculo, capacidade. Fonte: o autor F10 Manter registro de todos os Fabricas Oculto ( ) Descrição: O sistema deve registrar todas as fabricas Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: código, nome, latitude, Especificação de fabricas longitude, tipo, capacidade Fonte: o autor F11 Manter registro de todos os Logins Oculto ( ) Descrição: O sistema deve registrar todas as login Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: código, nome, senha, Especificação de login nível. Fonte: o autor F12 Manter registro de todas as Distancias Oculto (X) Descrição: O sistema deve registrar todas as distancias Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: código, distancia, nome Especificação de distancias Fonte: o autor 16 F13 Manter registro de todas as Trilhas Oculto (X) Descrição: O sistema deve registrar todas as Trilhas Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: Código, azimute, Especificação de trilhas latitude Inicial, Longitude Inicial, Latitude Final, Longitude Final, nome, peso, estilo, distancia, cor, adjacente. Fonte: o autor F14 Manter registro de todas as adjacentes Oculto (X) Descrição: O sistema deve registrar todas as adjacentes Requisitos Não-Funcionais Nome Restrição Categoria NF 1.1 Registro de informações O registro será composto por: Código, distancia, Especificação de adjacentes nome, azimute, cor, estilo, latitude, longitude, peso, trilha. Fonte: o autor 3.2.2 Requisitos Suplementares Segundo Wazlawick (2004), os requisitos suplementares são restrições colocadas sobre como o sistema deve realizar os requisitos funcionais. Nome Restrição Categoria S1 Tipo de As interfaces do sistema devem ser implementadas como Interface interface formulários acessíveis via web. S2 A camada de persistência deve ser implementada de forma que Persistência Armazenamento diferentes tecnologias de banco de dados possam vir a ser utilizadas de dados no futuro S3 Tolerância a Não permitir a exclusão de informações do sistema. Apenas que Confiabilidade falhas ocorra a ativação ou inativação de produtores e veículos. S4 Acesso, O sistema deve prover um meio rápido de geração de relatórios, Desempenho consulta e consultas e registros, não sendo tolerados mais de 20 segundo de registro. espera para a geração de qualquer relatório no sistema e mais de 5 segundos de espera para registro ou consulta, levando em consideração a velocidade da internet. 17 S5 Tecnologia O sistema deverá ser produzido em linguagem que permita a Implementação de construção separação em camadas e os aspectos de orientação a objetos S6 Tecnologia O sistema deve ser mantido em um servidor, que fica em atividade de hospedagem garantida em 99,6 % do tempo do dia, não podendo baixar essa porcentagem. Fonte: o autor 3.2.3 Casos de Uso As grandes ações de negócio da empresa são também chamadas de casos de uso. Eles devem descobrir as principais atividades das empresas ligadas ao sistema que será implantado, cada caso de uso será relacionado a um conjunto de requisitos funcionais do sistema. Segundo Wazlawick (2011, p. 36), cada caso de uso tem por objetivo levantar informações sobre como o sistema interage como possíveis usuários e quais consultas e operações da informação são necessárias para que processos completos de interação sejam verdadeiramente executados. Nome Importar Atores Usuário demanda Descrição A demanda é gerada no sistema SAP-R3 aonde exporta toda uma demanda de cargas para um dia, após é importada para o sistema Geologe. Gerar Carga Usuário O usuário vai digitar apenas a quantidade de carga par o caminhão, total ou parcial, em algum casso que necessite metade da carga. Gerar Ticket Usuário Gerar um relatório com os ticket e os tipos de veículos que poderão levar aquela carga. Vincular Veiculo Usuário O usuário vai digitar a placa do veículo para qual ticket aquele veículo vai ser vinculado, ou seja, qual veículo vai entregar em qual produtor. Raio de Ação de Usuário Visualizar em um mapa um raio de ação entre produtores produtores escolhe o produtor e digita o raio, um relatório com todos os produtores neste raio é gerado. 18 Raio de Ação a Usuário Visualiza em um mapa um raio de ação entre partir de fabricas fabricas e produtores com todas os produtores neste raio de ação da fábrica, um relatório é gerado com todos os produtores. Agrupar cargas Sistema O sistema agrupa cargas que possam ser geradas com proximidades, cidade e comunidades de interior, para facilitar a geração das cargas. Distancias de Sistema Todas as menores melhores distância entre fabricas - produtores até as fabricas levando em considerações Produtores algumas restrições de rotas. Histórico de Sistema Relatório com entregar realizadas por veículo. cargas por veiculo Fonte: o autor 3.3 FASE DE ELABORAÇÃO 3.3.1 Expansão do Caso de Uso Um caso de uso expandido descreve detalhadamente o que ocorre, quando se está expandindo um caso de uso é preciso proceder a um exame detalhado do processo de negócio. 3.3.1.1 Importar demanda NOME: UC1 – Importar demanda ATOR: Usuário FLUXO PRINCIPAL PASSO DESCRIÇÃO 1 O usuário escolhe um demanda exportada do Sistema SAP R3 2 O sistema importa a demanda para aquela data. 3 O sistema identifica cada item da demanda e classificados 19 3.3.1.2 Gerar Carga NOME: UC1 – Gerar Carga ATOR: Usuario FLUXO PRINCIPAL PASSO DESCRIÇÃO 1 O usuário escolhe uma categoria animal, tipo de ração e tipo de veículo, e seleciona um veículo. 2 O usuário degita a quantidade da carga para ser carregada. 3 O sistema identifica o veículo, se ele é valido para aquela categoria, se a capacidade para a quantia de carga é válida. 4 O sistema atualiza a capacidade do veiculo 5 O sistema cria um ticket FLUXOS ALTERNATIVOS 2a – Veículo não cadastrado 2a.1 – O Administrador informa a placa, e capacidade do veículo, tipo, tipo de ração e categoria animal. 2a.2 – O Sistema registra o novo veículo. 3a – Demanda não importada 3a.1 – Realizar o processo do UC1 Fonte: o autor 3.3.1.3 Gerar Ticket NOME: UC3 – Gerar Carga ATOR: Usuario FLUXO PRINCIPAL PASSO DESCRIÇÃO 1 Ao incluir uma carga o sistema gera um ticket 20 2 Os tickets são impressos selecionando uma categoria anima, um tipo de veículo e um tipo de ração 3 É gerado um arquivo PDF para impressão FLUXOS ALTERNATIVOS 2a – Carga não gerada 2a.1 – Deve ser feito o processo do UC1. Fonte: o autor 3.3.2 Estórias de Usuário As Estórias de usuário são identificadas juntamente com o usuário, o que ele quer que aconteça cada ação do sistema, ela é um atividade do SCRUM. Titulo CRUD Veiculo Prioridade Média Prioridade Média Prioridade Alta Prioridade baixa Inserir, Consultar, Alterar veículos Fonte: o autor Titulo CRUD tipo de veiculo Inserir, Consultar, Alterar tipo de veiculo Fonte: o autor Titulo CRUD Ração Inserir, Consultar, alterar ração Fonte: o autor Titulo CRUD Categoria Animal Inserir, Consultar, alterar categoria animal Fonte: o autor 21 Gerar Carga Titulo Prioridade Alta Incluir uma carga em um veiculo, que esteja apto a carregar aquele tipo de ração para o produtor Fonte: o autor Gerar ticket Titulo Prioridade Alta Imprimir os tickets gerados em PDF para que possam ser entregues aos caminhoneiros Fonte: o autor Raio de Ação Unidades/produtor Titulo Prioridade Alta Digitar um valor para o raio e traçar um círculo ao redor do produtor/unidade identificando todos os outros produtores dentro deste raio de ação. Fonte: o autor Pesquisa Por Raio Titulo Prioridade Alta Selecionar unidades e Categorias animais para saber a distância de cada unidade ao produtor em linha reta, e identificar os produtores que ficam dentro do raio de ação de duas ou mais unidades. Fonte: o autor 3.3.3 Plano de Release O plano de release demostra todas as sprints deste projeto cada uma representa um momento de desenvolvimento do sistema, cada Sprint possui um ciclo individual mas de processo igual durante sua execução, que pode durar de duas semanas a um mês. Ao final de cada Sprint é feita uma reunião para que se possa ter o feedback do que foi desenvolvido. Existem também reuniões diária para ver o que foi desenvolvido, essas reuniões diária duram no máximo 5 minutos e são feitas no final do dia e em pé para que não se prolonguem. As Sprints definidas neste projeto são as seguintes: Plano de Release Sprint # 1 Objetivos Conceitos Registrar Informações Básica no sistema Veículo, produtor, ração, demanda, unidade 22 Sprint # 2 Objetivo Conceitos Registrar Carga, Gerar Ticket Veículo, Produtor, demanda, rações Sprint # 3 Objetivo Conceitos Gerar Relatório de Cargas Ticket Veículo, Produtor, demanda, rações Sprint # 4 Objetivo Conceitos Sobreposição por raio Unidade, Produtor Sprint # 5 Objetivo Conceito Gerar relatório de contaminação Produtor, Carga, Veiculo, Ração Sprint # Objetivo Conceito Indicar Rota Trilhas, Adjacentes, produtor 3.3.4 Lista de Operações e Consultas do Sistema. Neste passo, encontrasse uma lista de consultas e operações do sistema. Lista de Consultas do Sistema listarProdutores() listarCarga() listarVeiculos() Listarickets() ListarUnidades() ListarRacoes() ListarDemanda() listarTickets() Lista de Operações Do Sistema cadastraProdutor(nome, código, latitude, longitude, silo1, silo2, município, area, sistema) registrarCarga(volume, veiculo, produtor) 23 cadastrarVeiculo(Placa, capacidade, tipo ração, categoria animal) gerarTicket(Carga) raioDeAcao(produto, unidade, latitude, longitude, raio) cadastraRacao(nome, grupo de ração, categoria) cadastraCategoria(nome) cadastraGrupo(descrição) cadastraTipoVeiculo(descrição, capacidade) 24 3.3.5 Modelo Conceitual A figura 2 apresenta o modelo conceitual do projeto aonde estão descritos os atributos de cada entidade do modelo logico do sistema. Figura 2 - Modelo Conceitual Fonte: o autor 25 3.3.6 Diagrama de Sequencia O diagrama de sequencia tem o intuido de facilitar a identificação das operações do sistema. No diagrama abaixo observamos o processo de gerar a carga, desde o momento de importar a demanda, ate gerar a carga. Figura 3 - Diagrama de sequencia Fonte: o autor 26 3.3.7 Diagrama de Classes de projeto O diagrama de classes de projetos, esse diagrama define as estruturas das classes utilizadas pelo sistema, talvez o diagrama mais importante, pois serve de base para todos os outros diagramas. Figura 4 - Diagrama de Classes de projeto Fonte: o autor 27 3.3.8 Diagrama de Comunicação O Diagrama de comunicação apresenta os objetos e suas ligações, mostrando a implementação e descrevendo as variáveis locais utilizadas. Figura 5 - Diagrama de comunicação Fonte: o autor 28 3.3.9 Base de Dados O banco de dados será armazenado em uma base de dados MySql5 oferecida pelo própria empresa de servidor KingHost® sem acréscimo de custos. Figura 6 - Modelo da Base de dados Fonte: o Autor 5 MySql é um sistema de gerenciamento de banco de dados que utiliza a linguagem SQL, é um dos bancos de dados mais usados no mundo. 29 4 DESENVOLVIMENTO DO SISTEMA Para apresentar a necessidade do sistema, reuniões com funcionários da empresa que atuam no departamento de transporte extensionista, foram realizadas, deste modo foram definidos os requisitos do sistema e suas características. Durante todo desenvolvimento do trabalho o NetBeans IDE 7.4 e um servidor Tomcat foram utilizados para o desenvolvimento do software e também para realizar testes. Diferentes framework foram utilizados no desenvolvimento para agilizar e facilitar. Existem muitos pós e contras no uso de frameworks, mas acabamos optando por utilizar alguns como Hibernate, Jasper Report, Apache POI. 4.1 O SISTEMA Em reuniões realizadas com a BRF® avaliou as necessidades operacionais, assim foram desenvolvidos os seguintes módulos que serão descritos nos próximos itens. 4.1.1 Modulo Fechamento de Cargas e Rotas O Modulo de Fechamento de cargas é o mais complexo entre todos os módulos, pois existem vários fatorem que envolvem esta funcionalidade e também a sua grande importância no processo de entrega de ração e expedição da empresa. O processo consiste na seguinte logica de excussão dentro da empresa, aonde existe uma demanda de pedidos de entregas de ração, que são feitas pelos produtores com antecedência, essa demanda é impressa e então acontece separação das entregas de ração por grupos INICIAL, INTERMEDIARIO e FINAL. O grupo INICIAL são animais que são recém-nascido, INTERMDIARIO são animais em faze de desenvolvimento e FINAL animais que estão prontos para o abate ou produção de matrizes. Também existem várias categorias animais como Frango de Corte, Peru, SVT (Sistema vertical de Terminação), SPL (Sistema produtor de Leitão), SPO (Sistema Produtor de Ovos) entre outros. Assim os veículos possuem categorias de animais que são fixas, e categorias de rações que podem ser alteradas, mas em determinas situações que consistem em que grupos 30 de rações possuem medicamentos que podem contaminar outros grupos de rações, alguns veículos podem fazer essa transição efetuando um limpeza. Então cada pedido da demanda é agrupado em uma carga, como por exemplo: Um veículo com capacidade de 18 mil quilos, fará entrega para o produtor A que receberá 8000 kg de ração inicial para porco, 10 mil quilos para o produtor B que possui a mesma ração; Um veículo não deve carregar rações diferentes em uma mesma carga. Varia situações ainda podem ocorrer em uma entrega como por exemplo dois veículos realizarem uma mesma entrega em um produtor Esse agrupamento de cargas é feita de forma manual, o sistema auxilia essa formação de carga, localizando produtores que estão próximos, para que o operador identifique esses produtores próximos (vizinhos), e agrupe de uma forma mais eficiente essas cargas, assim consegue-se algumas economias no processo. A demanda que é gerada pelo sistema de gestão da empresa em questão e é importada para o sistema Geologe, aonde utilizamos as bibliotecas do Apache Poi para fazer a importação desses dados para o mesmo. Figura 7 - Tela de importação da Demanda Fonte: o Autor Assim a importação é feita de forma simples pelo usuário do sistema. Após a importação da demanda é feita então o fechamento de cargas aonde o usuário deve escolher um grupo de ração, um categoria animal e um veículo disponível para estas cargas, assim incluir a carga no veículo, desta forma a carga será grifada de vermelho acusando que já foi fechada, então a página é recarregada no estado em que estava anteriormente para que o processo possa ocorrer com agilidade, a imagem abaixo demonstra a tela desse processo 31 Figura 8 - Tela para fechamento de cargas Fonte: o Autor Durante o processo de criação das cargas não é preciso saber qual veículo (placa) irá fazer a carga, pois as cargas são entregues aleatoriamente para os caminhões, assim existe uma tela para fazer a vinculação de um veículo com uma carga. Toda carga gerada vai possuir um número de “Ticket” e um “Item”, o número do ticket é gerado aleatoriamente pelo sistema Geologe e será utilizado para o fazer a vinculação com o caminhão e o item é utilizado para a emissão da nota que é um número gerado pelo sistema de gestão da empresa. Os veículos também são marcados com cheio quando sua capacidade chega ao máximo, assim não podem ser mais utilizados, porem existe uma função para zerar a capacidade destes veículos para que em caso de necessidade possam ser criadas outras cargas com esses veículos. Ainda é feita a impressão das cargas, aonde vários os tickets geram uma carga inteira, esses ticket já vem pronto para ser entregue ao motorista junto com a ordem de carregamento para efetuar a carga, no momento em que é entregue o ticket, e feita a vinculação do veículo à carga, a imagem a seguir demonstra esse processo. 32 Figura 9 - Tela de Impressão de Cargas Fonte: o Autor Figura 10 - Tela de vinculação de carga Fonte: o Autor Após a vinculação da carga podem ser tiradas várias consultas para o gerenciamento, com consumo médio de ração, entregas por produtor, entregas por veículo, consulta de demandas, entre outros. Os dados recebido por este modulo são utilizados no modulo de sanidade apresentado no item a seguir. 33 4.1.2 Modulo Sanidade O modulo sanidade é mais simples, este consiste em criar raios de ação de uma fábrica de ração localizando todos os produtor ao redor desta fabrica, ou o raio de um produtor localizando todos os produtores ao seu redor. Este modulo também identifica produtores que receberão insumo de veículos que sofrera troca de categoria animal na ração, assim pode-se identificar o produtor que pode estar contaminado, localizar o veículo, e as entregas que esse veículo fez, então aplicar um raio de ação X quilômetros nesta propriedade (o raio é definido conforme a contaminação) e identificar as propriedades que possam ser contaminadas. A tela abaixo mostra uma consulta que acusa um produtor com uma entrega irregular: Figura 11 - Veículos que entregaram no Produtor Fonte: o Autor 34 Figura 12 - Entregas realizadas pelo veículo com possível contaminação Fonte: O autor Foi identificado que o produtor pode estar com contaminação, então eu posso buscar um raio de ação neste produtor e identificar seus vizinhos, que também correm risco de contaminação, a imagem abaixo mostra a consulta. Figura 13 - Produtores em um Raio de 10 mil metro do produtor Fonte: o Autor 35 A equação para o cálculo de distância é a seguinte: Equação 1 - Calculo de Distancia a (cos( (90 latitudeIn icial ) 180) cos((90 latitudeIn icial ) ) 180 b sin((90 latitudeFi nal ) ) sin((90 latitudeIn icial ) ) 180 180 c cos((longitudeI ncial longitudeF inal ) ) 180 dist 6731 arccos(( a b) c) Fonte: o Autor Esta fórmula leva em consideração a terra sendo um esfera perfeita com o raio de 6371 Metros. Para que esse modulo tenha utilidade é preciso que o modulo de carregamento de ração seja atualizado corretamente. 4.1.3 Modulo Frigorifico O modulo frigorifico é o mais simples deles, ele cria rotas de veículos que coletam animais nas propriedades e levam para o frigorífico para abate, isto apenas é utilizado para um controle de coletas e também de distância percorridas por veículos. Figura 14 - Rotas para coleta de aves, suinos, etc Fonte: o autor 36 4.2 ROTEIRIZAÇÃO Os mapas da região oeste de Santa Catarina foram todos desenhado para o desenhados em cima de imagens satélites par serem usadas no algoritmo, existem três categoria de trilhas, ou seguimentos de mapas, principal, secundaria e terciaria cada seguimento tem um ponto inicial e um ponto final, que são pontos de georeferenciamento e um valor de distância, cada categoria tem definições de que tipos de veículos podem percorrer nela, e velocidade média na estrada. Então é criada uma matriz de trilhas que são adjacentes a outras trilhas, assim temos todos as trilhas ligadas, temos uma lista de adjacente que formam grafos não-direcionados que segundo PREISS (p. 478). “Um grafo é um conjunto de pontos de linha que conectam vários pontos.” Um grado não-orientado pode ser representado pela figura abaixo: Figura 15 - Representação de um grafo não-orientado Fonte: O autor A matriz de adjacentes para o grafo da figura 18: Equação 2 - Matriz de Adjacentes 39 a 41 59 26 26 39 41 59 Existem diversos algoritmos de roteamento, como por exemplo o de Dijkstra, A* (AStar), Bellman-Ford, busca em largura e busca em profundidade. A equação geral é simples: 37 Equação 3 - Chave para determinar o caminho F G H Aonde segundo LESTER (2004) “G = é o custo do movimento para se mover do ponto de início até o quadrado determinado na malha seguindo o caminho criado para chegar lá. H = é o custo estimado do movimento para mover daquele quadrado determinado até o destino final, ponto B. Isto é frequentemente referido como a heurística, o que pode ser um pouco confuso. A razão pela qual recebe este nome é porque isto é uma adivinhação. Nós não sabemos realmente a distância real entre os pontos até que encontremos o caminho, isto porque podemos ter todos os tipos de coisas no caminho (paredes, água, etc.).” O H é aonde acontece tudo, ele pode ser calculado de várias maneiras, uma delas é o método de Manhattam aonde se conta o número total de nós movidos horizontalmente e verticalmente para chegar ao no de destino. As heurísticas que podem ser adicionadas ao algoritmo são de estradas que podem rodar veículos de quais tipos, ir por um caminho e voltar por outro, pontes, pequenas serras que quando o clima não permitir a passagem de veículos podem ser ignorados. As rotas são criadas incialmente em fora do sistema, pois não foi encontrado um melhor desempenho trabalhando junto com o servidor. Então o as rotas são geradas fora do sistemas, após isso elas são apenas exibidas em camadas no sistema Geologe. 38 5 RESULTADOS E CONCLUSÕES Desde a primeira versão do sistema Geologe alcançou alguns resultados significativos na empresa em questão neste trabalho. Os resultados foram apresentado em reuniões com diretores de transportes das unidades da BRF em Videira-SC. Dentre várias categorias animais que a empresa possui, o software foi utilizado apenas para o remanejo de rotas para Frango na unidade de Herval d’Oeste e os resultados com tempo de serviço e economia foram os seguintes. Utilizando Geologe Dias Pessoas 4 1 Previsão sem o uso do 60 4 sistema Em dias de trabalho isso representa uma economia de 93 % de tempo de serviço com apenas 25 % do quadro de funcionários necessários caso não se utilizasse o sistema. Também se obtiveram resultado econômicos no custo dos fretes com o remanejo das rotas, muitas das rotas ficaram em unidades aonde a distância é menor que a distância antiga, por exemplo: um veículo que pertencia a unidade de Concórdia fazia entrega em Catanduvas, então o sistema identifica o produtor e sugere que essa entrega passe a ser de responsabilidade da unidade de Catanduvas. Os valores em R$ das economias realizadas para Frango não foram autorizadas a serem divulgadas mas podemos fazer alguns cálculos simples para estimar esses ganhos. São aproximadamente 1000 produtores para categoria frango Com uma média de 75 km da unidade ao produtor (ida e volta) Com o remanejo das rotas foram diminuídos de 4 à 8 km em média (alguns produtores tem valores mais significativos). São 8000 km que deixar de ser rodados em média. Representam uma economia de 6 a 10 % com fretes. Caminhões rodam menos Economia de Combustível Diminui índices de poluição 39 O Modulo de carregamento de ração pode agilizar em o processo de escolha de carregamentos, em processos internos da empresa, os testes realizados com segunda versão ainda serão realizados. O modulo de sanidade aumenta a vigilância quanto aos riscos de contaminação, com uma agilidade maior para o sanitarista verificar quais são os produtores naquele raio de ação, e quais tem risco de contaminação, sem precisar fazer cálculos manuais durante sua análise. 40 6 CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS O trabalho mostra que tecnologias de baixo custo podem trazer resultados importantes para a indústria agropecuária, assim a tecnologia mostra que pode estar presente para auxiliar qualquer processo do ser humano. O sistema agilizou o processo de análise das rotas que reduziu custos tempo de serviços e quilometragem rodada de veículos. Também pode melhorar e auxiliar o processo de criação de cargas, tendo um controle maior de qual veículo entregou em qual produtor, podendo conter riscos de contaminação, tendo relatórios de quantidade média de ração consumida, por produtor, por período, e vários outros relatórios que podem ser personalizáveis. Para trabalhos futuros, pode-se melhorar algoritmos de roteamento, pois ainda precisam de uma análise muito especifica e está rodando fora do servidor, assim desenvolvendo, analisando padrões e definindo melhor as heurísticas o sistema pode auxiliar efetivamente em uma resposta para a logística. Com os módulos do sistema desenvolvido durante o projeto obtivesse uma grande experiência tanto no desenvolvimento de sistemas, projetos de software e analises de necessidades de mercado. 41 REFERÊNCIAS Bootstrap, Disponível em: < http://getbootstrap.com/2.3.2/> acesso em 11 de nov. 2013 DEITEL, P. DEITEL, H. Java: Como Programar. São Paulo. 8ª ed. Ed. Person. 1144 p. FERREIRA, E. EIS. D. HTML5, Curso W3C Escritório Brasil. Disponível em <http://www.w3c.br/pub/Cursos/CursoHTML5/html5-web.pdf> Acesso em: 10 de nov. 2013. GUOCHANG X. GPS, Theory Algorithms and Applications. Potsdam, Alemanha. 2ª ed. Ed. Springer. 340 p. LESTER, P. A* Pathfinding para Iniciantes. Disponível em: <http://www.policyalmanac.org/games/aStarTutorial_port.htm> Acesso em 12 de dez. 2013. NetBeans IDE. Disponível em: < https://netbeans.org/index_pt_PT.html> Acesso em 07 de nov. 2013. NETO, R.H. Curso de JSP: UFSC. Florianópolis, Santa Catarina. 1ª ed., 2002. 66 p. NETO, O. M. Entendendo e Dominando o Java. São Paulo. 3ª ed. Ed. Digerati Book, 2009. 414 p. PREISS, Bruno R. Estrutura de dados e algoritmos: Padrões de projeto orientados a objeto com java ; Tradução de Elizabeth Ferreira – Rio de Janeiro. 8ª ed. Editora Campus. 560 p. PHAM, Andrew. Scrum em ação: gerenciamento e desenvolvimento Ágil de projetos de software. São Paulo. Editora Novatec, 2013. 287 p. RUSSEL and NORVIG, Artificial Intelligence: A modern approach, Prentice Hall, 2010 TEMPLE, A. MELLO, R. F de. CALEGARI, D. T. SCHIEZARO, M. JSP, Servlts e J2EE. São Paulo. 2004, p 267. WASLAWICK, Raul. S. Análise e Projeto de sistemas de Informação Orientados a Objetos. 2. ed. Rio de Janeiro: Elsevier, 2011. ___________, Raul. S. Análise e Projeto de Sistemas de Informação Orientado a Objetos. 1. ed. Rio de Janeiro: Elseiver, 2004.