UNIVERSIDADE FEDERAL DO PARANÁ JULIANO KUCZYNSKI RENATO CELSO MOREIRA FILHO WAGNER LUIZ CANCELA CARGA ÓTIMA - PDF
UNIVERSIDADE FEDERAL DO PARANÁ JULIANO KUCZYNSKI RENATO CELSO MOREIRA FILHO WAGNER LUIZ CANCELA CARGA ÓTIMA
Download "UNIVERSIDADE FEDERAL DO PARANÁ JULIANO KUCZYNSKI RENATO CELSO MOREIRA FILHO WAGNER LUIZ CANCELA CARGA ÓTIMA"
Rodrigo Mangueira Ramalho
1 UNIVERSIDADE FEDERAL DO PARANÁ JULIANO KUCZYNSKI RENATO CELSO MOREIRA FILHO WAGNER LUIZ CANCELA CARGA ÓTIMA CURITIBA 2014
2 JULIANO KUCZYNSKI RENATO CELSO MOREIRA FILHO WAGNER LUIZ CANCELA CARGA ÓTIMA Trabalho de Conclusão de Curso, apresentado à banca examinadora do Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas da Universidade Federal do Paraná, como requisito parcial à obtenção de grau de Tecnólogo em Análise e Desenvolvimento de Sistemas. Orientador: Prof. Dr. Roberto Tadeu Raittz Co-Orientadora: Profª Drª Jeroniza Nunes Marchaukoski CURITIBA
3 AGRADECIMENTOS A Equipe do projeto Carga Ótima agradece a nossas famílias pelo apoio, a todos os colegas de curso, assim como aos professores, que nos fizeram crescer como pessoas e profissionais, não só durante o desenvolvimento do TCC, mas por toda a jornada em que estivemos juntos. Aos mestres Roberto e Jeroniza, nosso profundo agradecimento pela companhia, orientações e pelo conhecimento construído em conjunto. Ao Waldo e MTM Sistemas, grande gratidão pelo tempo e vitais informações, que inclusive nos fizeram melhorar o tema deste trabalho. 3
4 RESUMO O Sistema Carga Ótima foi desenvolvido com os objetivos principais de otimizar o processo de alocação de cargas das transportadoras em seus veículos de entrega, consequentemente, reduzindo os custos operacionais das viagens e aumentando o lucro. O software busca registrar e manter os registros de viagens e respectivas cargas transportadas. Desta maneira, pode-se reduzir o índice de erros nas distribuições das cargas alocadas nos veículos, além de otimizar o tempo de planejamento e reduzir o percentual vazio dos veículos que realizam as viagens. Com o uso de Algoritmos Genéticos, a aplicação simplifica a tarefa de preencher virtualmente os veículos com as combinações mais adequadas de cargas. Estas, provenientes de dados de Notas Fiscais Eletrônicas importadas para o Sistema. A alocação dos carregamentos é tarefa que demanda muito tempo quando realizada manualmente e, mesmo assim, atingiria resultados menos satisfatórios se comparada ao sistema computacional proposto. Por fim, o software verifica as soluções de alocação dentro dos limites de volume e peso permitidos no Brasil. Palavras-chave: otimização, transporte, carga, transportadora, volume, peso, caminhão, algoritmo genético, palete. 4
5 ABSTRACT The Carga Ótima System was developed with the main goal of optimizing the processing of allocation of cargo carriers companies on their delivery vehicles, thus reducing the operating costs of travel and increasing profit goals. The software stands for registering and maintaining records of their trips and transported loads. Hence, one can reduce the error rate in the distribution of loads allocated to the vehicles, and optimize planning time and reduce the percentage of empty vehicles that perform the travel. With the use of Genetic Algorithms, the application simplifies the task of virtually complete vehicles with more suitable combinations of load. These, data from Electronic Invoices imported into the system. Task of allocation of loads that task is very time consuming when performed manually, and even then, would reach less than satisfactory results when compared to the computational system proposed. Finally, the software checks the allocation solutions within the limits of bulk and weight allowed in Brazil. Keywords: optimization, transportation, cargo, carrier, volume, weight, truck, genetic algorithm, pallet. 5
6 LISTA DE FIGURAS Figura 1 - Ranking das maiores transportadoras rodoviárias Figura 2 - Tipos de caminhões Figura 3 - Variados tipos e modelos de pallets Figura 4 - Pallets de madeira Figura 5 - Pallets e caixas de plástico Figura 6 - Pallet de plástico Figura 7 - Pallet de plástico, ecologicamente correto Figura 8 - Modelo cascata de desenvolvimento de projetos Figura 9 - Processos de desenvolvimento: Incremental x Iterativo (cascata) Figura 10 - Modelo incremental (1) Figura 11 - Modelo incremental (2) Figura 12 - WBS do projeto Carga Ótima Figura 13 - Diagrama de Gantt Figura 14 - Diagrama de Casos de Uso Figura 15 - Diagrama de Classes Figura 16 - Modelo conceitual do BD Figura 17 - Modelo lógico do BD Figura 18 - Testes do AG no MatLab Figura 19 - Edição dos parâmetros de Gerações e População Figura 20 - Cenário Atual Nacional x Alocação Carga Ótima Figura 21 - Tela de Login (protótipo) Figura 22 - Cadastro de usuário (protótipo) Figura 23 - Tipo de Palete Figura 24 - Modelo de Produto (protótipo) Figura 25 - Modelo de Veículo (protótipo) Figura 26 - Organizar Carga Figura 27 - Diagrama de Sequência - Importar Nota Fiscal Figura 28 - Diagrama de Sequência - Organizar Carga Figura 29 - Diagrama de Sequência - Organizar Paletes Figura 30 - Diagrama de Sequência - Otimizar Carga
7 LISTA DE TABELAS Tabela 1 - Comparativo entre sistemas para Transportadoras Tabela 2 - Quantidade de modelos de veículos de carga Tabela 3 - Macro-atividades Tabela 4 - Plano de Comunicação do Projeto Tabela 5 - Ferramentas utilizadas no projeto Tabela 6 - Tempo (microssegundos): Mutação x Elite Selecionada Tabela 7 - Resultados dos testes de Geração x População Tabela 8 - Matriz de Riscos do Projeto Tabela 9 - Classificação completa de Veículos de Carga
8 LISTA DE SIGLAS AG BD CRUD EAN EAP IA MF MVC NF-e PHP PMI RUP TADS TCC UFPR UML WBS - Algoritmo Genético - Banco de Dados - Create, Read, Update, Delete - European Article Number (código de barras) - Estrutura Analítica do Processo - Inteligência Artificial - Ministério da Fazenda - Model-view-controller (Modelo de visão-controlador) - Nota Fiscal Eletrônica - Acrônimo recursivo para PHP: Hypertext Preprocessor - Project Management Institute - Rational Unified Process - Tecnologia em Análise e Desenvolvimento de Sistemas - Trabalho de Conclusão de Curso - Universidade Federal do Paraná - Unified Modeling Language (Linguagem Unificada de Modelagem) - Work Breakdown Structure (Estrutura Analítica de Projetos) 8
9 SUMÁRIO AGRADECIMENTOS... 3 RESUMO... 4 ABSTRACT... 5 LISTA DE FIGURAS... 6 LISTA DE TABELAS... 7 LISTA DE SIGLAS INTRODUÇÃO Contextualização Justificativa Objetivos Principais Objetivos Específicos FUNDAMENTAÇÃO TEÓRICA O Transporte de Cargas no Brasil Empresas Transportadoras Softwares operacionais para Transportadoras Classificação dos Veículos de Carga por sua capacidade Tipos de caminhões Pallets / Paletes / Páletes Nota Fiscal Eletrônica Algoritmos Genéticos Metodologia: entrevista por pautas METODOLOGIA DE DESENVOLVIMENTO DO SOFTWARE Modelo de Engenharia de Software Modelo Incremental RUP (Rational Unified Process) Plano de Atividades WBS (Work Breakdown Structure) / EAP (Estrutura Analítica do Projeto) Responsabilidades Diagrama de Gantt e Cronograma de Atividades
10 3.5. Plano de riscos Plano de comunicação Contatos da equipe de projeto Reuniões e s Demais tipos de comunicação Ferramentas de trabalho Repositório e compartilhamento de arquivos Hardware Software e websites DESENVOLVIMENTO DO PROJETO Metodologia Documentação Banco de Dados do Sistema Modelo Conceitual Modelo lógico Modelo físico Implementação Biblioteca gago Testes dos Algoritmos Genéticos Mutações versus Elite selecionada Gerações versus População Resultados dos testes APRESENTAÇÃO DO SOFTWARE Instalação e configuração Acesso Cadastros, buscas e edições (CRUD) Uso de rotina do Sistema Importação de Nota Fiscal Organizar da carga Otimizar carga CONSIDERAÇÕES FINAIS REFERÊNCIAS APÊNDICES
11 Apêndice A Especificação dos Casos de Uso Apêndice B Diagramas de Sequência Apêndice C Modelo Físico do Banco de Dados Apêndice D Matriz de Riscos do Projeto ANEXOS
12 1. INTRODUÇÃO Atualmente, com a abertura das fronteiras entre os mercados, o gradativo crescimento da população mundial, bem como o crescente consumo per capita, aumenta também em paralelo à demanda - a necessidade de otimização dos transportes em geral. Desta forma, é ampliada a busca por agilidade e uso de métodos e ferramentas que auxiliem em toda a cadeia de transportes, desde o planejamento das cargas, até a entrega das mesmas, assim como a manutenção e análise dos dados de entrega pós-entrega. Todas as etapas do fluxo são importantes no processo como um todo, e a melhoria de cada uma delas faz com que as demais formem um ciclo virtuoso. Durante as definições iniciais deste trabalho, a equipe coletou informações e impressões passadas por um potencial cliente do ramo (o Sr. Waldomiro Dall'Agnol). Waldomiro, além de ter trabalhado em variadas empresas e nichos do ramo de transportes, é atualmente (em 2014) diretor técnico da MTM Sistemas, empresa que desenvolve softwares para transportadoras. Com vasta experiência na área de transportes e logística, Dall'Agnol cliente trouxe grandes contribuições a este trabalho acadêmico. Em posse das informações do Diretor da MTM Sistemas, definiu-se um novo rumo, diferente daquele primeiro imaginado: de início, a ideia seria desenvolver um sistema de otimização de rotas para transportadores. Porém, analisando vários softwares da área já consolidados no mercado, observou-se que quase todos possuem as mesmas características. Definiu-se, então, por criar um sistema com características diferenciadas, que também possuísse real utilidade à clientela, bem como com reais possibilidades de aceitação pelas transportadoras. Assim, o Sistema Carga Ótima atuará no planejamento dos carregamentos, a partir da interface de recebimento de Notas Fiscais Eletrônicas, passando pela manutenção e segurança dos dados, distribuindo de forma otimizada a cargas nos 12
13 veículos de transporte. Implicará em informações confiáveis, para análises posteriores e melhoria dos processos das empresas usuárias do software. O software dará aos usuários - através de Algoritmos - a alocação das respectivas mercadorias das Notas Fiscais selecionadas dentro dos veículos de carga, com o menor desperdício calculado. Este é o cerne do sistema, que transforma tarefas de alta complexidade manual e computacional em alguns cliques para os usuários. Reduz trabalho, além de torná-lo mais eficiente e diminuir os custos dos serviços oferecidos Contextualização O software Carga Ótima baseia-se no modal de transporte que, segundo DNIT (2014), é o mais representativo do Brasil: o transporte rodoviário. Este, por sua vez, "como possui, na maioria dos casos, preço de frete superior ao hidroviário e ferroviário, é adequado para o transporte de mercadorias de alto valor ou perecíveis, produtos acabados ou semi-acabados". A estrutura de muitas empresas transportadoras ainda acompanha o patamar de tecnologia empregado na malha viária brasileira, ou seja, ainda é tecnologicamente pobre e defasada. Deste modo, esta é uma oportunidade de negócio e de melhoria ainda pouco explorada, tanto pelos fornecedores tecnológicos, como pelos clientes destes serviços. Softwares, hardwares e serviços que auxiliem na melhoria do transporte rodoviário brasileiro têm um mercado nacional bastante promissor e com grande possibilidade de crescimento rápido. Esta é a visão compartilhada por BARROS (2012), que, no ano da publicação, já citava o crescimento do mercado de software brasileiro para 400% em dez anos. 13
14 1.2. Justificativa Visto que no Brasil é utilizado um dos modelos mais onerosos de locomoção para longas distâncias, o objeto deste trabalho (Sistema Carga Ótima) é ainda mais importante como ferramenta para redução de custos de seus clientes. O software acompanha a crescente demanda por aplicações que utilizem interfaces para importação de Nota Fiscal Eletrônica. A obrigatoriedade da NF-e "contribui (...) para o segmento de Tecnologia da Informação" (MOYSES, 2011). Portanto, as empresas que desenvolverem primeiro os sistemas com este tipo de integração, ficarão um passo à frente das respectivas concorrentes. "Além da conformidade com as exigências da Receita Federal, adotar a solução NF-e traz uma série de benefícios. O gerenciamento das informações passa a ser feito por meio de um portal de administração e a emissão do DANFE é controlada por meio de um painel de gerenciamento local. Isso proporciona enorme flexibilidade no envio de dados eletrônicos para agentes governamentais, fornecedores, clientes e outros parceiros de negócios envolvidos" (MOYSES, 2011). Um dos motivos principais que justificam o desenvolvimento do Sistema Carga Ótima é a necessidade de sistemas similares e a falta de concorrentes no mercado. Ou seja, o software tem grande possibilidade de ocupar um nicho de mercado ainda inexplorado. Em vasta consulta, a equipe deste trabalho não encontrou softwares similares à funcionalidade principal do sistema: um algoritmo robusto para a distribuição das cargas nos veículos da empresa. Segundo o portal INTERLOG (2012), "vários fatores têm contribuído para uma maior valorização e "protagonismo" do setor de carga fracionada no Brasil e no mundo", objeto de estudo deste trabalho. 14
15 1.3. Objetivos Principais Os objetivos principais do Sistema Carga Ótima são: - otimizar a distribuição de cargas nos veículos de transporte; - reduzir custos para os clientes que utilizem o sistema Objetivos Específicos Como objetivos específicos, o Sistema Carga Ótima busca e/ou fornece: - aproveitar oportunidades de implantação de sistemas de NF-e, inclusive para outros ramos de atividade; - um software voltado às especificidades do transporte rodoviário brasileiro; - explorar nichos de mercado do ramo de transportes nacional; - sedimentar-se em nichos específicos de mercado de transportadoras; - reduzir o tempo de planejamento das cargas e, consequentemente, de armazenamento de estoque; - reduzir o tempo entre a compra dos produtos e a sua viagem, diminuindo também as possibilidades de deterioração das cargas, aumentando, inclusive, a capacidade negocial das empresas clientes do software; - manutenção de dados confiáveis das operações das empresas contratantes; - fornecer informações relevantes, em tempo, para análises; - ser um sistema de uso simples e atrativo aos prospects, para fácil inserção no mercado; 15
16 - solução simples aos usuários do sistema, para problemas de alta complexidade (através de Algoritmos Genéticos); - possibilidade de parcerias comerciais para complemento de softwares de variados ramos. 16
17 2. FUNDAMENTAÇÃO TEÓRICA Este capítulo apresenta os assuntos importantes relacionados ao trabalho, além de trazer a conceituação geral utilizada no mesmo O Transporte de Cargas no Brasil O transporte de cargas brasileiro tem como principal limitante a malha viária nacional. Pela falta de ferrovias, além dos baixos investimentos em estruturas portuárias, sobra a opção mais cara, porém, mais viável atualmente: transporte pelo modo rodoviário. O parágrafo acima confirma a ótica de NOVAES (2007), em que: "(...) fica difícil utilizar todas as opções modais, por diversos motivos: as ferrovias não formam uma rede com boa cobertura no território nacional; o transporte marítimo também possui pouca amplitude; o transporte aéreo presta-se mais para transporte de passageiros, apesar de estar sendo procurado para transporte de carga internacional, com tendência ao crescimento, devido à globalização. Apesar disso, é o modal mais expressivo no território brasileiro". Compartilhando a visão de VARGAS (2008), o uso combinado dos variados tipos de modais barateia os custos de transporte. Contudo, pelos motivos já explicitados anteriormente, há vários fatores limitantes para aplicação desta combinação no Brasil, fato que implica na necessidade de outras maneiras de redução de valores e otimização de custos das viagens realizadas. Um deles é o uso de softwares que otimizem o modelo negocial das transportadoras rodoviárias. 17
18 2.2. Empresas Transportadoras Segundo dados do GUIA DO TRANSPORTADOR (2010), há transportadoras rodoviárias no Brasil com receita operacional acima de um bilhão de reais, fato que mostra o tamanho do ramo no país de dimensões continentais. Ainda assim, pode-se notar na Figura 1 - Ranking das maiores transportadoras rodoviárias 2010, do GUIA DO TRANSPORTADOR (2010) que algumas delas operam em déficit. Daí uma oportunidade de otimização dos serviços. Figura 1 - Ranking das maiores transportadoras rodoviárias Softwares operacionais para Transportadoras Ao pesquisar sobre os softwares atuais que as empresas brasileiras de transporte rodoviário utilizam, pode-se constatar que a grande maioria deles possui as mesmas características: cadastro de clientes, contas a pagar, contas a receber, importação de NF-e, rotas e, em alguns casos, acompanhamento de status. 18
19 NF-e Cadastros Otimização de carga Rotas Acompanhamento Controle Financeiro Esta análise foi realizada com base nos seguintes softwares: GerTrans (ZIBORDI SISTEMAS, 2014); Transportadora 5 Pro (RENASOFT, 2014); Software Transportadora (E-PRATICO, 2014); Controle de Transportadoras (BSOFT, 2014). Todas as informações dos mesmos foram verificadas nos respectivos sites das empresas desenvolvedoras. Tabela 1 - Comparativo entre sistemas para Transportadoras Empresa Software ZIBORDI Gertrans X X RENASOFT Transportadora 5 Pro X X X X X E-PRATICO Transportadora X X BSOFT Controle de Transportadoras X X X A Tabela 1 evidencia a oportunidade de inserção da Sistema Carga Ótima em um nicho bastante específico e promissor do mercado de transportes Classificação dos Veículos de Carga por sua capacidade Segundo o GUIA DO TRANSPORTADOR (2014), as capacidades de carga dos veículos rodoviários são as mais variadas, dependendo do tipo de veículo utilizado e dos eixos disponíveis. A Tabela 9 (em ANEXO), adaptada do Guia do Transportador (2014), mostra a classificação dos veículos de carga e respectivas capacidades. Nota-se que há inúmeros modelos, com variadas capacidades de carga. Estes mesmos modelos podem ter as capacidades alteradas se, por exemplo, utilizarem reboques (e por isso estas regras não serão abordadas neste trabalho). 19
20 A Tabela 2 - Quantidade de modelos de veículos de carga exibe o resumo do número de modelos de veículos de carga utilizados no Brasil. Tabela 2 - Quantidade de modelos de veículos de carga Veículo Quantidade de modelos Caminhão leve 13 Caminhão médio 13 Caminhão pesado 69 Caminhão semi-leve 13 Caminhão semi-pesado 37 Total geral Tipos de caminhões Ainda que este trabalho não utilize os tipos de caminhões, esta informação é importante para futuras melhorias no Sistema. Outro ponto que é de importante relevância para justificar a não utilização desta classificação, é o fato de um mesmo caminhão poder enquadrar-se em tipos diferentes, caso modifique sua carroceria e reboques. Estas características seriam muito onerosas a este trabalho. Esta alteração acabaria limitando o aprofundamento do tema na otimização de cargas por algoritmos genéticos, foco do trabalho. Ainda assim, não traz grandes alterações ao Sistema, pois o mesmo funciona de maneira bastante semelhante. Conforme COELHO (2010), "o CONTRAN (Conselho Nacional de Trânsito) limita o peso máximo por eixo que pode ser carregado pelos veículos. Este limite deve-se ao fato que quanto maior a força que os pneus aplicam sobre a camada de asfalto, maior será a degradação deste asfalto. Assim, os caminhões podem levar muito peso, desde que ele esteja distribuído por vários eixos (maior número de rodas para distribuir o peso da carga)". O CONTRAN classifica os caminhões da seguinte forma: 20
21 Veículo Urbano de Carga (VUC): O VUC é o caminhão de menor porte, mais apropriado para áreas urbanas. Esta característica de veículo deve respeitar as seguintes características: largura máxima de 2,2 metros; comprimento máximo de 6,3 metros e limite de emissão de poluentes. A capacidade do VUC é de 3 toneladas. Toco ou caminhão semi-pesado: caminhão que tem eixo simples na carroceria, ou seja, um eixo frontal e outro traseiro de rodagem simples. Sua capacidade é de até 6 toneladas, tem peso bruto máximo de 16 toneladas e comprimento máximo de 14 metros. Truck ou caminhão pesado: caminhão que tem o eixo duplo na carroceria, ou seja, dois eixos juntos. O objetivo é poder carregar carga maior e proporcionar melhor desempenho ao veículo. Um dos eixos traseiros deve necessariamente receber a força do motor. Sua capacidade é de 10 a 14 toneladas, possui peso bruto máximo de 23 toneladas e seu comprimento é também de 14 metros, como no caminhão toco. Carretas: Cavalo Mecânico ou caminhão extra-pesado: é o conjunto formado pela cabine, motor e rodas de tração do caminhão com eixo simples (apenas 2 rodas de tração). Pode-ser engatado em vários tipos de carretas e semireboques, para o transporte. Cavalo Mecânico Trucado ou LS: tem o mesmo conceito do cavalo mecânico, mas com o diferencial de ter eixo duplo em seu conjunto, para poder carregar mais peso. Assim o peso da carga do semi-reboque distribuise por mais rodas, e a pressão exercida por cada uma no chão é menor. Carreta 2 eixos: utiliza um cavalo mecânico e um semi-reboque com 2 eixos cada. Possui peso bruto máximo de 33 toneladas e comprimento máximo de 18,15 metros. Carreta 3 eixos: utiliza um cavalo mecânico simples (2 eixos) e um semireboque com 3 eixos. Possui peso bruto máximo de 41,5 toneladas e comprimento máximo de 18,15 metros. 21
22 Carreta cavalo trucado: utiliza um cavalo mecânico trucado e um semireboque também com 3 eixos. Possui peso bruto máximo de 45 toneladas e comprimento máximo também de 18,15 metros. Combinações de veículos: Bitrem ou treminhão: é uma combinação de veículos de carga composta por um total de sete eixos, que permite o transporte de um peso bruto total de 57 toneladas. Os semi-reboques dessa combinação podem ser tracionados por um cavalo-mecânico trucado. Rodotrem: é uma combinação de veículos de carga (dois semi-reboques) composta por um total de 9 eixos que permite o transporte de um peso bruto total de 74 toneladas. Os dois semi-reboques dessa combinação são interligados por um veículo intermediário denominado Dolly. Essa combinação só pode ser tracionada por um cavalo-mecânico trucado e necessita de um trajeto definido para obter Autorização Especial de Trânsito (AET). O bitrem é um conjunto que possui duas articulações (quinta-roda do caminhão e a quinta-roda do semi-reboque dianteiro) e o rodotrem é um conjunto que possui três articulações (quinta-roda do caminhão, engate dianteiro do dolly e quinta-roda do dolly). A Figura 2 - Tipos de caminhões abaixo, adaptada de COELHO (2010), mostra alguns tipos de veículos de carga, de acordo com a classificação do CONTRAN. Figura 2 - Tipos de caminhões 22
23 2.5. Pallets / Paletes / Páletes Segundo WIKIPEDIA (2014), "palete ou pálete (do inglês pallet, por sua vez oriundo do francês pallete) é um estrado de madeira, metal ou plástico que é utilizado para movimentação de cargas". A "função dos paletes é viabilizar a otimização do transporte de cargas através do uso de paleteiras e empilhadeiras" (WIKIPEDIA, 2014), trazendo vantagens como empilhamento maior de mercadorias, organização, redução de espaços ociosos, uniformização de estocagem, dentre outros. Também pode ocorrer o contrário como fator de desvantagem: espaços vazios dentro da unidade de palete, além do custo de cada unidade. Contudo, a lista de vantagens pesa mais que a de desvantagens e, por isto, a adoção do uso de paletes na logística sempre foi muito utilizada. Para Vecina e Reinhardt (1998), os "pallets revolucionaram os métodos e técnicas de armazenamento, modificando radicalmente a concepção de transporte e movimentação de material vigente até pouco tempo atrás. Esse sistema de armazenamento denomina-se também sistema de blocagem. Ele permitiu a melhor utilização do espaço vertical com a ajuda de prateleiras de aço chamadas portapallets, com a vantagem dos benefícios proporcionados pela movimentação das cargas unitárias". Pode-se também chamar esta ação de unitização, ou seja, transformar um grupo de itens em apenas um (palete). Outros equipamentos de armazenagem que utilizam a mesma ideia são: armações, estrados, engradados e containers. Há algumas padronizações nas dimensões e volumes dos pallets, principalmente entre empresas parceiras, porém, muitas Organizações utilizam os que mais se adequam às suas particularidades negociais. Deste modo, cabe à empresa escolher os seus paletes. As figuras a seguir (MANUTENÇÃO & SUPRIMENTOS, 2014) exemplificam o grande número de tipos de pallets, bem como dos materiais dos quais são fabricados. 23
24 Figura 3 - Variados tipos e modelos de pallets Figura 4 - Pallets de madeira Figura 5 - Pallets e caixas de plástico Figura 6 - Pallet de plástico 24
25 Figura 7 - Pallet de plástico, ecologicamente correto Variados ramos utilizam paletização em sua logística, como, por exemplo, construção civil, mercados e indústria farmacêutica. Cabe citar que neste trabalho, não serão abordadas características de compatibilidade entre pallets, tampouco entre suas respectivas cargas. Para este trabalho acadêmico, serão considerados volume e peso que cada pallet pode acomodar Nota Fiscal Eletrônica A Nota Fiscal Eletrônica foi implantada no Brasil no ano de 2007 e, até 2010 tinha seu uso facultativo. Segundo o portal IG (2010), "O plano da NF-e, criado em 2007, integra o Sistema Público de Escrituração Digital (Sped), que é parte do Programa de Aceleração do Crescimento (PAC)". A partir de 1º de dezembro de 2010, a emissão da NF-e tornou-se obrigatória, medida tomada pelo Ministério da Fazenda. "Estarão isentos os microempreendedores individuais e algumas empresas cuja área de atuação não estiver relacionada na lista emitida pela Secretaria da Fazenda" (IG, 2010) Algoritmos Genéticos Cada problema que tenha solução possível carece dos meios mais adequados para resolução mais eficiente. Da mesma maneira, isto ocorre para 25
26 problemas matemáticos e/ou computacionais. A Inteligência Artificial utiliza os Algoritmos Genéticos (dentre vários outros) para a solução de adversidades complexas ou que necessitem recursividade e grande número de iterações. Um Algoritmo Genético é um processo interativo que mantém uma população de estruturas que são soluções candidatas no domínio especificado. Durante cada incremento temporal (chamado de geração), a estrutura na população atual é qualificada por sua efetividade como solução dominante, e com base nestas qualificações, uma nova população de soluções candidatas é formada usando operadores genéticos específicos como reprodução (seleção), cruzamento (recombinação) e mutação'' (Grefenstette,1993). A definição de AG de Goldberg (1989) ainda introduz alguns conceitos "passo-a-passo", citando que os Algoritmos Genéticos "combinam a sobrevivência do mais apto em estrutura de string com uma troca estocástica estruturada de informações para formar um algoritmo de busca. Em toda geração um novo conjunto de criaturas artificiais (strings) é criado usando bits e partes do melhor das gerações anteriores. Uma nova parte é ocasionalmente inserida para melhor precisão. Enquanto estocásticos, os Algoritmos Genéticos não são uma busca aleatória simples. Eles exploram eficientemente informações históricas para encontrar novos pontos de busca com um esperado aumento de performance" Metodologia: entrevista por pautas Este projeto teve a concepção embasada em entrevista com o cliente, de modo que o mesmo explanasse à equipe o máximo possível de informações sobre o tema. Desta maneira, foi utilizada a entrevista por pautas. Segundo BRITTO e FERES (2013), "o tipo de entrevista por pautas apresenta certo grau de estruturação, já que se guia por uma relação de pontos de interesse que o entrevistador vai explorando ao longo de seu curso. As pautas devem ser ordenadas 26
27 e guardar certa relação entre si. O entrevistador faz poucas perguntas diretas e deixa o entrevistado falar livremente, à medida que reporta às pautas assinaladas". O conhecimento de negócio dos entrevistados, no mercado de TI, é muito valioso, pois normalmente os analistas entrevistadores devem aprender sobre o ramo pesquisado. Desta forma, as entrevistas servem como aprendizado. Por isto, foi escolhida a metodologia de entrevista por pautas. Houve uma entrevista estruturada por pautas para este projeto. Além desta, algumas conversas informais, a fim de solidificar as informações coletadas inicialmente. A entrevista oficial para coleta de informações foi realizada a 25 de março de 2014, com o Diretor Técnico da MTM Sistemas, Waldomiro Dall'Agnol. Na mesma, foram abordados os seguintes itens da pauta sobre a possibilidade de um Sistema de Informação para transportadoras: alocação e ordenação de cargas nos veículos; tipos de veículos de transporte, tipos de paletes; tolerância de espaços ociosos e peso de transporte; tipos de veículos de carga utilizados para os tipos (distâncias) de viagens; particularidades de empresas transportadoras; fluxo de entregas; tipos de cargas. A partir dos tópicos abordados na entrevista realizada, foi concebida a ideia completa do sistema, em conjunto com os professores orientadores. 27
28 3. METODOLOGIA DE DESENVOLVIMENTO DO SOFTWARE Este capítulo foi desenvolvido com o intuito de apresentar a metodologia utilizada, bem como o planejamento e o andamento do desenvolvimento do Sistema Carga Ótima. No desenvolvimento e condução do projeto, foi utilizado o modelo incremental de processos. Quanto às linguagens de programação para a construção do objeto deste trabalho, foram utilizadas PHP e MatLab Modelo de Engenharia de Software O desenvolvimento do Sistema Carga Ótima foi realizado com base em dois modelos de processo da Engenharia de Software: modelo cascata, para estrutura de fases do ciclo de vida do projeto e; desenvolvimento incremental, para o desenvolvimento do projeto. Estes conceitos baseiam-se em SOMMERVILLE (2011). Figura 8 - Modelo cascata de desenvolvimento de projetos A Figura 9 - Processos de desenvolvimento: Incremental x Iterativo (cascata) a seguir (AGILEWAY, 2009) mostra um comparativo visual de entregas em projetos de modelo cascata (iterativo) versus incremental (interativo). 28
29 Figura 9 - Processos de desenvolvimento: Incremental x Iterativo (cascata) É muito difícil que ocorra o desenvolvimento completo de um Sistema de Informação no modelo cascata, sem que haja atuação da equipe apenas em uma fase por vez. Isto agrava-se ainda mais quando a equipe é de pequeno porte (por exemplo, no caso de TCC's). Apesar deste motivo, não foi definido o uso da cascata (Figura 8 - Modelo cascata de desenvolvimento de projetos), mesmo sendo um processo de condução mais simples, por manter o processo bastante estático e de difícil gerenciamento, quando alterados os requisitos. O desenvolvimento da solução Carga Ótima foi concebido pela junção dos modelos incremental e interativo. Assim, variados itens do projeto são feitos em paralelo em entregas parciais, que permitem avaliar o trabalho gradualmente Modelo Incremental O modelo incremental de desenvolvimento de projetos permite que o time do processo possa realizar entregas em paralelo, onde as atividades podem ser intercaladas. Ideal a equipes pequenas, onde as tarefas podem ser divididas e, principalmente, permite retrabalhar o entendimento de requisitos. Por isto, também bastante adequado a trabalho onde as ideias e conceitos sofrem alterações durante o projeto. Além disto, como o fluxo de desenvolvimento necessita rápidos e 29
30 constantes feedbacks à orientação acadêmica, o modo incremental foi julgado como mais adequado à realização deste trabalho. A Figura 10 - Modelo incremental (1) (NOVAES, 2013) exibe o formato de desenvolvimento de projetos no modelo incremental. A Figura 11 - Modelo incremental (2) (OPINA DE TI, 2014) mostra o mesmo conceito, porém, contando com o importante detalhe do versionamento. Figura 10 - Modelo incremental (1) Figura 11 - Modelo incremental (2) RUP (Rational Unified Process) Neste projeto foram utilizados (não todos, porém,) alguns conceitos de RUP, julgados como interessantes para a abordagem desejada, como: utilização da notação UML para ilustrar os processos de ação; base nas quatro fases RUP de iniciação, elaboração, construção e transição. Segundo MARTINEZ (2014), "O Processo Unificado da Rational conhecido como RUP (Rational Unified Process), é um processo de engenharia de software criado para apoiar o desenvolvimento orientado a objetos, fornecendo uma forma sistemática para se obter vantagens no uso da UML. Foi criado pela Rational Software Corporation e adquirido em fevereiro de 2003 pela IBM". 30
31 3.2. Plano de Atividades Esta seção traz itens importantes para o projeto, principalmente sobre seu gerenciamento e condução, sempre embasados na estruturação também apresentada aqui. O escopo do projeto pode ser seguido pela EAP (Estrutura Analítica do Projeto). As atividades com respectivas responsabilidades e prazos são definidas no Diagrama de Gantt WBS (Work Breakdown Structure) / EAP (Estrutura Analítica do Projeto) A WBS (Estrutura Analítica do Projeto), de maneira geral, é uma representação gráfica do escopo do projeto. Segundo o PMI (2008), a EAP é "uma decomposição hierárquica orientada às entregas do trabalho a ser executado pela equipa de projeto, para atingir os objetivos do projeto e criar as entregas requisitadas". Cada produto das atividades realizadas pela equipe deverá enquadrar-se em algum item da WBS. Portanto, é muito importante até mesmo para que se saiba o que não necessita ser produto no decorrer do processo (contra-escopo). O projeto Carga Ótima conta com a sua WBS conforme Figura 12 - WBS do projeto Carga Ótima. 31
32 Figura 12 - WBS do projeto Carga Ótima Carga Ótima Planejamento Definição de prazos Orientação e equipe Levantamento e Análise de Requisitos Entrevistas Análise Especificações Desenvolvimento Desenvolvimento do BD Protótipos das telas Desenvolvimento do sistema Projeto do Algoritmo Genético Documentação Estruturação do TCC escrito Revisão bibliográfica Metodologia e desenvolvimento UML Apresentação do software Testes Plano de testes Testes gerais caixa preta Testes Algoritmo Genético Testes de integração Gerência do Projeto Plano do projeto Acompanhamento e condução Entrega Revisão Formatação da documentação Disponibilização do sistema Preparação da apresentação Apresentação (banca) 3.3. Responsabilidades Ao início do projeto, assim que definidos todos os integrantes do mesmo, também foram definidas as macro-atividades de cada stakeholder ativo, conforme Tabela 3. Como a equipe é reduzida, algumas atividades necessitaram ser desenvolvidas por mais de uma pessoa. Tabela 3 - Macro-atividades Atividade Juliano Renato Wagner Roberto Jeroniza Orientação x x Acompanhamento de atividades x x x Levantamento e análise de requisitos x x x Planejamento x x x Desenvolvimento do BD x Desenvolvimento do Sistema x x Documentação x Testes x x x Apresentação x x x É de vital importância ao projeto que as responsabilidades sejam definidas, a fim de evitar que haja "tarefas sem dono". Desta forma, todas as atividades estarão cobertas pela equipe de projeto. 32
33 3.4. Diagrama de Gantt e Cronograma de Atividades "O diagrama de GANTT é um instrumento que permite modelar a planificação de tarefas necessárias para a realização de um projeto. Trata-se de um instrumento inventado em 1917 por Henry L. GANTT" (KIOSKEA, 2014). Na prática, o diagrama funciona como um cronograma (de atividades estimadas), definido com base na WBS e atribuição de responsabilidades do projeto. Neste trabalho, foi utilizada a ferramenta Gantt Project para a montagem do gráfico, conforme Figura 13 - Diagrama de Gantt. Figura 13 - Diagrama de Gantt As atividades marcadas na cor laranja foram encerradas em atraso, impactando na entrega do projeto. Desta maneira, foi necessário realizar ação corretiva, conforme plano de riscos a seguir. 33
34 3.5. Plano de riscos Todo projeto está exposto a riscos. Eles possuem probabilidades de ocorrência e impactos (danos). À equipe de projeto cabe monitorar estes riscos (fazer a gestão), para que não venham a se concretizar. Segundo BORGE (2001), "risco significa estar exposto à possibilidade de um mau resultado. Gestão de riscos significa mover a probabilidade a seu favor, ou seja, aumentar a chance de um bom resultado". É importante que todos os riscos do projeto sejam mapeados e monitorados, fazendo com que não haja surpresas indesejáveis, reduzindo ou eliminando todo e qualquer impacto. Se mapeamento e monitoramento ocorrerem adequadamente, na iminência que o risco se concretize, devem ser tomadas ações preventivas, para que não ocorram problemas maiores durante a condução do processo como um todo. Se, ainda assim, algum risco (mapeado ou não) for concretizado, a equipe deverá realizar ação corretiva sobre o mesmo. Pode haver também riscos que sejam benéficos ao projeto. Se importantes para o processo, também devem ser mapeados e monitorados, bem como possuir plano de ação para possibilidade e iminência de ocorrência. A Tabela 8 - Matriz de Riscos do Projeto da seção de APÊNDICES mostra a matriz de riscos deste trabalho, onde os registros de maior criticidade são os mais perigosos ao projeto. Os itens mais críticos devem ser monitorados com prioridade. Probabilidade e impacto variam de 1 a 3 (respectivamente, dos menores para os maiores), enquanto a criticidade é a multiplicação dos mesmos (resultando em valores que variam de 1 a 9). O projeto da solução Carga Ótima teve ocorrência de um risco bastante impactante, porém, calculado, que foi o atraso na entrega final. Desta forma, foi necessário entrar com a ação corretiva de adiamento da entrega em um período letivo. Este atraso impactou em alguns outros itens, como continuidade do gerenciamento e do período de orientação, integração dos módulos desenvolvidos, bem como na documentação (diagramas, descrições e preparo da apresentação). 34
35 Desenvolvimento Orientação 3.6. Plano de comunicação A comunicação da equipe do projeto foi realizada, basicamente, das seguintes formas: reuniões presenciais, s, chat, vídeo conferência e telefone. O Plano de Comunicação define como comunicações oficiais as reuniões presenciais e os s, para formalização e alinhamento de informações Contatos da equipe de projeto A equipe do projeto é definida como os professores orientadores (Roberto e Jeroniza) e os estudantes (Juliano, Renato e Wagner). Os contatos oficiais e principais do projeto seguem a Tabela 4 abaixo. Tabela 4 - Plano de Comunicação do Projeto Grupo Papel Nome Comunicação com a equipe Orientador Roberto Tadeu Raittz Reunião; Co-orientadora Jeroniza Nunes Marchaukoski Reunião; Estudante formando Juliano Kuckynski Reunião; ; Chat; Telefone; acesso remoto Estudante formando Renato Celso Moreira Filho Reunião; ; Chat; Telefone; acesso remoto Estudante formando Wagner Luiz Cancela Reunião; ; Chat; Telefone; acesso remoto Foram definidos dois grupos distintos para composição da equipe do projeto: Grupo de Orientação (composto pelos professores orientadores); Grupo de 35
36 Desenvolvimento (composto pelos estudantes formandos). A fim de obter agilidade na comunicação de desenvolvimento, o respectivo grupo decidiu por comunicar-se por qualquer uma das formas estabelecidas no Plano de Comunicação. Já os contatos de Grupo Orientação versus Grupo Desenvolvimento foram estabelecidos das seguintes maneiras, a fim de maior formalização: reuniões, s e, esporadicamente, telefone Reuniões e s As reuniões do projeto são os principais meios de comunicação do mesmo. O segundo principal tipo de comunicação são os s. Estas duas vias de contato foram definidas como as formas oficiais e formais de comunicação da equipe. A equipe do projeto completa (todos os cinco integrantes) definiu como préagendadas reuniões às terças-feiras, desde o período de definição dos professores orientadores. O pré-requisito para as reuniões ocorrerem nas datas pré-agendadas foi a confirmação da data - via na semana anterior a cada encontro. Adicionalmente a estas reuniões, ficou livre o agendamento de outros encontros, sempre que julgado necessário por qualquer stakeholder do projeto Demais tipos de comunicação Excetuando as reuniões e mails, todos os demais meios de comunicação foram definidos como auxiliares ou não-oficiais. Contudo, estas formas secundárias de contato foram de vital importância à comunicação e andamento do projeto. Durante a execução das atividades, foram realizadas as seguintes formas de contatos entre a equipe: telefone: para conversas rápidas, alinhamento de informações, agendamento de reuniões; chat (webchat do gmail): comunicação instantânea usada para trocas rápidas de códigos, informações e conversas informais; 36
37 acesso remoto: utilizado para alinhamento de informações e minitreinamentos não-presenciais Ferramentas de trabalho Ao início do projeto, e à medida que constatou-se novas necessidades, foram definidos: repositório de arquivos e softwares utilizados. Recursos de hardware não foram definidos. Isto foi feito para que o desenvolvimento do Sistema fosse completo, com segurança da informação, evitando redundâncias e problemas de versionamento em geral Repositório e compartilhamento de arquivos Foi adotado o uso do repositório e compartilhamento de arquivos Dropbox, disponível pelo site Toda a documentação, códigos-fonte e materiais auxiliares foram centralizados no site. A ferramenta possibilita, além do uso por pastas do sistema operacional utilizado, a navegação via site. Fica à escolha do usuário. Também possui controle de usuários, convites para acesso, bem como controle de permissões de leitura e escrita de arquivos e afins. Todas estas funcionalidades atuam na segurança e confiabilidade dos dados, durante e depois do desenvolvimento do Sistema. 37
38 Hardware Recursos de hardware não foram definidos para o desenvolvimento do projeto, por não interferirem diretamente no foco do mesmo Software e websites Os softwares, frameworks e sistemas web definidos para o desenvolvimento do projeto foram definidos conforme a tabela a seguir. Tabela 5 - Ferramentas utilizadas no projeto Ferramenta Modalidade Finalidade / Observações Dropbox Web / Repositório e compartilhamento de Software arquivos Gmail Web Servidor de para. Comunicação BrModelo Software Diagramas CodeIgniter Desenvolvimento. Framework PHP Aptana Software Desenvolvimento Wamp Server Software Servidor para aplicaçãoes PHP e BD Skype Software Comunicação Aptana Software Desenvolvimento. Google Chrome Software Navegador de internet Pencil Software Prototipação Gantt Project Software Diagrama Gantt Dia Software Diagramas Star UML Software Diagramas Notepad++ Software Anotações MatLab Software Desenvolvimento, algoritmos Code Blocks Software Desenvolvimento, algoritmos Microsoft Office Pacote de Apresentações, fórmulas, tabelas, 38
39 Softwares documentação Internet Explorer, Web Navegadores web Mozilla Firefox, Google Chrome Pure Framework Desenvolvimento. Framework Visual Paradigm Software Diagramas WAMPServer Servidor Disponibilização de acesso ao sistema phpmyadmin Servidor Acesso ao Banco de Dados Navicat Premium Software Acesso ao Banco de Dados 39
40 4. DESENVOLVIMENTO DO PROJETO Este trabalho acadêmico teve seu embrião criado ao início do ano de 2014, quando os alunos integrantes da equipe organizaram-se para definir um tema para desenvolvimento. Nas conversas iniciais, em fevereiro de 2014, foram definidos temas variados para o TCC. Depois, definiu-se apenas por um, de acordo com proposta a alguns professores de afinidade no curso de TADS da UFPR. Entre os temas, constavam sistemas computacionais para: definir melhor rota de transporte; aplicação para montar casos de teste, baseada no código-fonte de projetos; agendamento online de consultas, voltado para salões de beleza e afins. Após contato com o professor Roberto Raittz, foi aceita por ele a orientação à equipe, sob as duas condições seguintes: tema do trabalho que envolvesse IA e que houvesse co-orientação. No caso, o próprio professor Roberto acertou a coorientação da professora Jeroniza Nunes Marchaukoski. A partir deste momento, estavam definidos: orientação, co-orientação, além do tema do projeto (pois apenas um tinha relação com IA). O tema, na época, foi de melhores rotas de transporte, com a ideia ainda não muito bem delimitada. Em um segundo momento, ainda em fevereiro de 2014, foi realizada entrevista com o sr. Waldomiro José Dall'Agnol, Diretor Técnico da Empresa de Softwares de Transporte MTM Sistemas. Ele foi definido como virtual cliente deste projeto, auxiliando a equipe com dúvidas sobre o mercado de transportes de carga, área em que tem vasta experiência. Após a entrevista com Waldomiro, foi definido pela equipe do projeto que a proposta inicial não seria tão importante quanto uma nova ideia que surgira: ao invés de um sistema de sugestão de rotas de transporte, o novo tema do trabalho fora alterado para alocação de cargas em veículos de transporte. A proposta fora aceita pela orientação do projeto e vista como de grande contribuição, além de ser nova no mercado. Em suma, seria um trabalho de tema mais interessante que a concepção inicial. 40
41 4.1. Metodologia O projeto foi conduzido pela metodologia incremental, que possibilita maior flexibilidade que o modelo cascata, principalmente pelo tamanho reduzido da equipe de projeto. A definição de tarefas e respectivos prazos estão definidos em tópico específico, exibidos no Diagrama de Gantt Documentação A documentação deste projeto foi embasada fundamentalmente em UML, com os produtos exibidos da seguinte forma: Diagrama de Casos de Uso (Figura 14 - Diagrama de Casos de Uso), Diagrama de Classes (Figura 15 - Diagrama de Classes) e Especificação dos Casos de Uso (ao final do trabalho, nos APÊNDICES). Figura 14 - Diagrama de Casos de Uso 41
42 O Diagrama de Casos de Uso mostra a conceituação geral do Sistema, assim como é aumentado o detalhamento no Diagrama de Classe e, por sua vez, ampliado nos Casos de Uso. Figura 15 - Diagrama de Classes 4.3. Banco de Dados do Sistema O Banco de Dados do Sistema Carga Ótima segue os próximos subitens (Modelo Conceitual, Modelo Lógico e Modelo Físico). Foi utilizada a linguagem MySQL para criação e manutenção do Banco. Foram utilizadas as ferramentas phpmyadmin e Navicat Premium para acesso à base de dados. Quanto aos diagramas dos modelos conceitual e lógico, foram criados com a ferramenta BrModelo. 42
43 Modelo Conceitual Figura 16 - Modelo conceitual do BD Modelo lógico Figura 17 - Modelo lógico do BD 43
44 Modelo físico O modelo físico do Banco de Dados do sistema encontra-se no APÊNDICE C (representado pelos scripts do BD). Considera-se como dicionário de dados o próprio modelo físico, uma vez que o mesmo possui todos os atributos necessários de cada tabela criada na base Implementação O sistema foi implementado em duas linguagens de programação: PHP e MatLab. O motivo de não utilizar-se apenas uma, foi pela necessidade de inserção do Algoritmo Genético de alocação de cargas, foco do trabalho. Como o AG necessita alta performance (visto que faz muitas iterações), o mesmo foi construído no software MatLab. O código MatLab compilado, por sua vez, gera um executável. Este código, com melhores tempos de resposta, é invocado no uso cotidiano do sistema, construído, por sua vez, em linguagem de programação PHP. Desta forma, foi construída também uma interface para que ambos os códigos consigam trafegar as informações do sistema como um todo. O front-end é o sistema PHP, onde a entrada de dados de NFe é feita por importações de arquivos xml. A segunda parte corresponde na invocação dos algoritmos genéticos, onde o código PHP chama execução do executável (de melhor performance) Biblioteca gago A Biblioteca gago (RAITTZ, 2014), desenvolvida pelo professor Roberto Raittz (orientador deste projeto) é item fundamental para o desenvolvimento do Sistema Carga Ótima. Está disponível no site do curso de Mestrado em Bioinformática da UFPR. 44
45 Ela trabalha com os parâmetros do Algoritmo Genético do sistema Carga Ótima: população inicial, tamanho da população, gerações, seleção e mutação. Após o sistema realizar a organização inicial dos dados, o mesmo passa à biblioteca gago os parâmetros necessários, para que esta devolva o melhor resultado, de acordo com as gerações e população parametrizadas. O melhor resultado das iterações, evidenciado pela variável "mret" da fitness, mostra que os valores daquela iteração devem ser utilizados. A bliblioteca pode ser utilizada para inúmeras motivações, bastando aos respectivos usuários que entendam seu funcionamento e passem os parâmetros adequados à mesma. O mesmo ocorreu para o presente projeto, onde a equipe conseguiu traduzir os valores de entrada do sistema para a entrada do AG, sabendo avaliar o resultado, ao final de sua execução Testes dos Algoritmos Genéticos Como o cerne do projeto Carga Ótima é a parte de Inteligência Artificial, utilizada através de Algoritmos Genéticos, foram realizados variados testes de performance e de adequação das variáveis dos algoritmos. Além dos dados principais necessários para a execução do código, que são os veículos e produtos a serem alocados, há também que se considerar configurações da biblioteca gago para a otimização de execução do code. Neste projeto, foram avaliados quatro parâmetros, distribuídos em duas baterias de testes, da seguinte maneira: percentual de mutações versus elite selecionada; número de gerações versus população. Na primeira fase dos testes, foram realizadas combinações apenas entre mutações e percentual de elite. O mesmo princípio foi utilizado nos testes de gerações versus população, onde apenas estes dois parâmetros foram variados. As 45
46 Elite análises foram sobre tempo de resposta e a variável "mret" (variável de retorno da fitness) que avalia o resultado da iteração Mutações versus Elite selecionada Na primeira parte dos testes, que considerou itens de menor importância (mutações e elite), foram observados os tempos de resposta. Para que nenhum outro fator interferisse nos resultados, foram importados sempre os mesmos dados de veículos e produtos. Da mesma forma, foram utilizados valores fixos: População com 1000 indivíduos e 500 gerações. Para cada uma das 9 (nove) combinações foram realizadas 3 (três) execuções de código e, destas, calculada a média em microssegundos. A Tabela 6 - Tempo (microssegundos): Mutação x Elite Selecionada mostra os resultados dos testes, para todas as médias de combinações de mutação (10%, 20% e 30%) e elite selecionada (1, 2 e 3): Tabela 6 - Tempo (microssegundos): Mutação x Elite Selecionada Média de Mutação Tempo 0,1 0,2 0, , , , , , , , , ,2364 Os testes foram realizados no código puro, desenvolvido em MatLab (Figura 18 - Testes do AG no MatLab). Nota-se que o tempo sempre foi bastante parecido para ambas as combinações, concluindo-se que Mutações e Elite não influenciam fortemente sobre o tempo de execução. 46
47 Figura 18 - Testes do AG no MatLab Gerações versus População Após os testes anteriores (Mutação e Elite), foram realizados - sob os mesmos princípios (variando apenas os parâmetros testados) testes no Algoritmo Genético com Gerações e Populações. Também mantendo-se fixas as importações e demais valores, foram modificadas apenas as variáveis testadas. No caso, Gerações e População. Combinações para os seguintes valores: 100, 200 e 500 gerações; população de 100, 200 e 5000 indivíduos. Por fim, foram utilizados valores extremos, de 1000 x 1000 e 10 x 10. Para esta análise, foram observados resultados de tempo aproximado. Como itens mais importantes, foram avaliados: sobra de veículos (peso e volume), além da sobra percentual de produtos. A variável "mret" avalia o resultado do Algoritmo Genético, sendo que quanto menor seu valor, melhor o resultado atingido. A figura seguinte (Figura 19) exibe um trecho de código no qual foram utilizados valores de 1000 gerações e 1000 indivíduos de população. 47
48 Figura 19 - Edição dos parâmetros de Gerações e População A tabela a seguir (Tabela 7) mostra os resultados dos testes de Geração e População realizados. O cenário de testes foi para 3 veículos de transporte, sempre com as mesmas capacidades e com 5 tipos de produtos a serem alocados. Tabela 7 - Resultados dos testes de Geração x População Parâmetros Veículo 1 Veículo 2 Veículo 3 Geração População Mret Sobra de veículos Mret Sobra de veículos Mret Sobra de veículos Tempo Sobra de produtos (% de sobra de 5 itens) Vol:35 Peso: Vol:193 Peso:70 37 Vol:37 Peso:0 ~ 0.9 s Vol: Vol:0 Peso:0 0 Vol:0 Peso:0 16 Peso:0 ~ 4.2 s Vol:0 Peso:0 4 Vol:9 Peso:0 9 Vol:9 Peso:0 ~ 8.4 s Vol: Vol:0 Peso:0 0 Vol:0 Peso:0 17 Peso:0 ~ 20.0 s Vol: Vol:0 Peso:0 0 Vol:0 Peso:0 16 Peso:0 ~ 8.3 s Vol:0 Peso:0 0 Vol:0 Peso:0 82 Vol:6 Peso:0 ~ 17.0 s Vol: Vol:0 Peso:0 12 Vol:0 Peso:0 17 Peso:0 ~ 41.0 s Vol: Vol:0 Peso:0 0 Vol:0 Peso:0 13 Peso:0 ~ 20.0 s Vol:0 Peso:0 0 Vol:0 Peso:0 14 Vol:14 Peso:0 ~ 42.0 s Vol:0 Peso:0 0 Vol:0 Peso:0 13 Vol:13 Peso:0 ~ 90 s (1m30s) Vol:0 Peso:0 0 Vol:0 Peso:0 13 Vol:13 Peso:0 ~ 420 s (7 min)
49 Conforme observa-se nos dados levantados, à medida que se aumenta população e gerações, inversamente se reduz sobra nos veículos. Contudo, o tempo de execução também aumenta, e, num certo ponto, não é recomendável o aumento destes valores. Isto ocorre, pois o tempo de execução não compensa os pequenos ganhos a partir de um limite, seja por crescimento de população, seja pelo crescimento do número de gerações Resultados dos testes Ao final dos testes, conclui-se que alterações em Mutação e Elite não são itens que necessitem intervenção. A mínima variação na resultante de tempo (Tabela 6) evidencia esta afirmação. Quanto aos resultados de Gerações e População, conclui-se que há faixas de variação que despendem tempo elevado de execução, enquanto o ganho da variável mret (que avalia o resultado) é mínimo. Para o que se pode chamar de "Calibragem do Algoritmo Genético", pode-se considerar alguns itens para a manutenção de bons resultados mret e de tempo (ver Tabela 7 - Resultados dos testes de Geração x População): - valores de População e Gerações entre 100 e 500 (variável mret e tempo ficam estáveis nesta faixa de valores); - os valores parametrizados independem (podem ser 100 e 500 ou 100 e 500, para População e Gerações, respectivamente); - valores muito baixos (Pop. = 10 ou Geração = 10) apresentam resultados insatisfatórios para a mret (alocação de produtos nos veículos); - valores muito altos (Pop. = 1000 e Geração = 1000) apresentam resultados satisfatórios quanto à mret, porém, muito altos para o tempo (cerca de 7 minutos); Com base nestes itens, conclui-se que não é recomendável utilizar valores altos para população e gerações, uma vez que o resultado mret mantém-se estável, porém, o tempo eleva-se muito. Inversamente, para calibragens de valores muito 49
50 baixos, apesar da rápida execução do código, os valores resultantes são insatisfatórios. Item de grande confidencialidade e escassas referências, o percentual médio de alocação de cargas rodoviárias no Brasil varia entre 60% a 65%. Estes números foram referenciados na entrevista com o cliente do projeto (Waldomiro Dall'Agnol), além de empresas de transporte. Segundo a GENERIX (2014), "em média, a taxa de preenchimento dos caminhões é inferior a 65%". Em posse desta informação, considerando um cenário bastante otimista do sistema rodoviário nacional atual (70%), frente a 90% de alocação do Sistema Carga Ótima (cenário pessimista), conclui-se que o Sistema oferece economia aproximada a 20% (Figura 20). Figura 20 - Cenário Atual Nacional x Alocação Carga Ótima 5 veículos 4 veículos Considera-se na figura acima que cada coluna seja um veículo/caminhão. No primeiro cenário, a distribuição de cargas brasileira, com alocação de produtos de até 70%; no segundo cenário, alocação conservadora de cargas do Sistema Carga Ótima (90%). O exemplo mostra que a cada cinco veículos, pode-se reduzir uma viagem, resultando em 20% de economia. As mesmas 35 unidades alocadas em 5 veículos do cenário inicial são alocadas em apenas 4 veículos da média conservadora Carga Ótima. Confirmando os reais benefícios da alocação realizada pelos Algoritmos Genéticos, recomenda-se, para o projeto Carga Ótima, calibrar o AG com valores de 50
51 Gerações e População que variem entre 100 e 500 para ambas. Uma combinação bastante satisfatória é de 200x500 (para Pop vs Ger ou Ger vs Pop). 51
52 5. APRESENTAÇÃO DO SOFTWARE O Sistema Carga Ótima é um software que consiste na distribuição de produtos em veículos de carga cadastrados pela empresa. O objetivo é que esta de distribuição seja otimizada ao máximo, para que ocorra o mínimo de desperdício, reduzindo os custos operacionais da contratante do software. O Sistema faz a utilização de dados de NF-e através de interface de importação dos arquivos xml (padrão). De modo geral, o uso do sistema se dá da seguinte maneira: cadastros básicos; entrada de dados pela tela de importação de notas fiscais XML (ou inserção via BD); montagem de carga (com diferentes NF-e); alocação dos produtos nos veículos (otimizar carga). A ideia inicial do sistema era que houvesse paletização das cargas (item anterior à alocação de produtos). Contudo, foi descartado no decorrer do projeto, para que houvesse maior foco no Algoritmo Genético. Por este motivo, há neste trabalho a bibliografia sobre o tema, e até mesmo algumas telas desenvolvidas sobre o assunto Instalação e configuração Para que o sistema possa ser utilizado, são necessários alguns prérequisitos para instalação do mesmo: - instalação de servidor para administração do MySQL e código PHP; - execução dos scripts iniciais da estrutura do banco de dados; - cadastros básicos do sistema (tipos de paletes, tipos de veículos, tipos de produtos). 52
53 5.2. Acesso O software possui controle de acesso, de modo a manter as informações seguras e acessíveis apenas para usuários cadastrados. Esta funcionalidade permite restrição a informações sigilosas, bem como a manutenção da confiabilidade do software. Para o login do sistema, é necessário utilizar webmail válido e respectiva senha Cadastros, buscas e edições (CRUD) Para que o sistema tenha seu uso diário sem restrições, é necessário que sejam pré-cadastrados os itens que serão indispensáveis ao processo de alocação de cargas. Estes itens são os cadastros CRUD do sistema, como usuário, tipo de veículo, tipo de produto, tipo de palete, etc. As figuras deste tópico mostram telas e esboços das telas citadas (fase prédesenvolvimento), projetados no software de prototipação Pencil. Além dos cadastros básicos (por exemplo, Figura 23, Figura 24 e Figura 25), também é necessário haver login do usuário. Figura 21 - Tela de Login (protótipo) 53
54 Figura 22 - Cadastro de usuário (protótipo) Figura 23 - Tipo de Palete Figura 24 - Modelo de Produto (protótipo) 54
55 Figura 25 - Modelo de Veículo (protótipo) 5.4. Uso de rotina do Sistema Assim como explicado ao início do capítulo, o uso normal do sistema (pressupondo todos os pré-cadastros básicos realizados) se dá por: importação de NF-e; montagem da carga; alocação nos veículos. Estes passos são esmiuçados a seguir Importação de Nota Fiscal O ambiente configurado para o software necessitará um servidor web para a aplicação PHP. O operador do sistema utilizará a funcionalidade para importar XML's das NF-e, fazendo com que as mesmas sejam cadastradas no Banco de Dados do software. 55
56 Esta ação é fundamental no uso do software, pois possui as informações principais para os demais passos de utilização do mesmo. A funcionalidade foi desenvolvida para importação web, o que facilita seu uso e torna o procedimento mais amigável aos usuários em geral Organizar da carga Todos os dados de NF-e disponíveis no sistema podem participar de cargas. Por exemplo: há sete notas disponíveis para envio no sistema, mas o operador seleciona quatro delas para montar uma carga. Esta carga terá um ID, que unifica as notas selecionadas. Figura 26 - Organizar Carga 56
57 Otimizar carga Este é o ponto principal do sistema, que distribui os produtos da carga nos veículos selecionados. Só ocorre para cargas já montadas. A funcionalidade foi desenvolvida para cálculos complexos via Algoritmos Genéticos. Funciona alocando os produtos das cargas dentro dos veículos selecionados, de maneira que os primeiros veículos de carga sejam preenchidos com as melhores soluções do algoritmo, até que o último fique com o restante da carga. Como importante ponto desta funcionalidade está a possibilidade de redução da necessidade de veículos para determinadas cargas O Algoritmo Genético de Alocação Otimizada das Cargas Aqui há uma descrição mais detalhada de como foi construído o AG que aloca os pallets das cargas nos veículos de transporte. Aqui pode-se acompanhar a evolução do mesmo durante seu desenvolvimento. O primeiro passo para a construção do algoritmo foi a definição do tratamento dado ao gene para transformá-lo em indicadores de distribuição, definindo o resultado que deveria ser avaliado pela fitness. Haja vista que a prioridade estava em encontrar o volume e o peso de cada produto, que deveria ser usado para preencher o veículo, optou-se por transformar o gene em um valor que representasse a porcentagem (%) da carga do veículo que cada produto utilizaria. O gene fora divido em quatro partes iguais e, cada uma delas, convertida para um número inteiro. Estes valores eram, portanto, transformados em porcentagem (%) e, através deles, calcular-se-ia quantas unidades de peso cada produto ocuparia do veículo. 57
58 Com o peso e a densidade, era calculado o volume utilizado por cada produto e, por fim, a função fitness avaliaria a diferença entra a soma dos volumes dos produtos e a capacidade volumétrica do veículo. Definido como seria tratado o gene, o modelo foi adaptado para atender casos reais. Para isto, foi necessário considerar vários veículos, limitar as unidades dos produtos ao disponível, para ser transportado e tratar as unidades dos produtos como indivisíveis, já que a solução do primeiro modelo fracionava os produtos, não abordava o problema da disponibilidade e alocava a carga para apenas um veículo. A solução até então desenvolvida consistia na entrada dos produtos de uma matriz com peso e densidade de cada produto. Passou então para uma matriz com o número de unidades disponíveis para transporte e valor correspondente de peso e volume para cada unidade do produto. Possibilitou, desta forma, avaliar se a quantidade de unidades utilizadas era superior ao disponível. Para evitar que as unidades fossem fracionadas, após o gene ser transformado em porcentagem de peso, estes valores eram utilizados para calcular as unidades correspondentes ao peso alocado. Por sua vez, as unidades eram arredondadas para números inteiros e multiplicadas pelos valores de peso por unidade e volume por unidade. Assim se obtia o total de peso e volume utilizado por cada produto no veículo, sem fracionar as unidades. A função fitness passou a avaliar a quantidade de produtos utilizados, punindo a utilização de valores superiores ao disponível e a não utilização de algum tipo de produto. Deste modo, possibilita uma distribuição mais harmônica dos produtos entre os veículos, além da diferença entre a soma dos volumes dos produtos e a capacidade volumétrica do veículo já calculada no modelo anterior. Para punir as soluções indesejadas, foram criados os fatores de multiplicação e soma. Como os resultados obtidos na alocação de apenas um veículo eram sempre próximos de 100%, optou-se por tratar o problema de vários veículos através de um laço. Assim, o próximo veículo recebia os produtos não alocados no veículo anterior, repassando para o próximo os produtos que não conseguiu alocar. 58
59 A solução final utiliza as unidades de produtos calculadas através do gene, conforme descrito anteriormente, para alocar os produtos em cada veículo. Também obtém o resultado da avaliação da fitness, somando a diferença de volume com a diferença de peso e com o fator de correção soma, e multiplicando o resultado pelo fator de correção multiplicação. O valor da diferença de volume é igual ao módulo da diferença entre o volume total dos produtos e capacidade volumétrica do veículo, multiplicado por 2 (dois) quando o volume dos produtos é superior a capacidade do veículo. O valor da diferença de peso é o módulo entre o peso total dos produtos e capacidade em peso do veículo. O fator de multiplicação inicia com valor igual a 1 (um) e o fator de soma com valor igual a 0 (zero), acrescendo 1 (um) quando algum produto não é utilizado e o número de unidades utilizadas for acima do disponível. Os valores utilizados são lidos de: um arquivo veiculos.txt contendo a capacidade máxima de peso e volume de cada veículo; de um arquivo produtos.txt com o número de unidades disponíveis de cada produto e peso e volume por unidade de produto; e de um arquivo parametros.txt, com as configurações de geração e população que serão utilizadas. 59
60 6. CONSIDERAÇÕES FINAIS Durante o desenvolvimento do projeto a equipe observou a importância de discutir os requisitos do projeto. Tanto que, a ideia inicial migrou para outra, ainda que do mesmo ramo de negócio, bastante diferente. Outro ponto importante analisado foi a necessidade de uma boa definição, tanto de escopo, como responsabilidades e prazos. No início do projeto, isto não estava muito bem delimitado, e o prazo para desenvolvimento acabou sendo encurtado por este motivo. O retrabalho é muito mais custoso que novas funcionalidades adicionadas ao projeto. Contato com novas tecnologias e necessidade de aprendizado das mesmas traz outros aprendizados adicionais. Contudo, pode acarretar em atrasos, visto que muitas vezes a equipe como um todo pode não conhecer os novos conhecimentos trazidos. O número de integrantes da equipe foi adequado na maior parte das situações, porém, em algumas delas faltou maior mão-de-obra. Exemplo: algumas pesquisas e atividades repetitivas poderiam ter sido encerradas com maior rapidez se houvesse mais estudantes no TCC. O TCC como um todo foi bastante importante à formação, pois foram exercitadas na prática algumas atividades até então pouco exercidas na graduação ou até mesmo desconhecidas da equipe. A orientação e co-orientação foram indispensáveis e agregaram muitos conhecimentos novos, ideias diferentes, além da possibilidade de trabalho com profissionais de maior experiência e capacidade apurada de análise. Quanto às tecnologias utilizadas, principalmente os conceitos de Inteligência Artificial e Algoritmos Genéticos, foram muito benéficos. Em geral são conhecimentos de baixa adesão pelos profissionais da área, e que agregaram nova visão a todos da equipe. O mesmo ocorreu para todas as novas experiências administradas, como condução do projeto completo, análises mais aprofundadas (de 60
61 softwares concorrentes, importância da ferramenta), bem como reuniões de time e coleta de informações do cliente. Quanto ao Sistema desenvolvido, implementações futuras: seguem algumas sugestões de - logs de ações dos usuários; - novo algoritmo para verificar veículos disponíveis; - módulo de relatórios, módulo de gráficos; - manutenção de status de todos os registros; - paletização das cargas organizadas (entre UC Organizar Carga e UC Otimizar Carga); - cadastro e organização do sistema para verificação de tipos de veículos de transporte; - Algoritmo Genético para organização espacial dos produtos ou paletes nos veículos. A equipe de projeto observou considerável ganho de tempo na execução do sistema, item facilitador no dia-a-dia dos operadores que utilizarão a solução. Os Algoritmos Genéticos empregados no trabalho, apesar de demandarem maior tempo de desenvolvimento que uma programação considerada normal ou mais simples, agregam alto valor à ferramenta. Também observou-se que a configuração das variáveis de população e gerações do projeto são muito importantes e influenciam fortemente no uso do software. É também interessante que se faça a bateria de testes no algoritmo de acordo com sua utilidade, visto que em certos intervalos de valores o código passa a perder eficiência, em relação ao tempo de execução. Quanto à relevância do trabalho, em vista do estudo de mercado, conclui-se que há um bom espaço para inserção do Sistema no ramo, principalmente por tratarse de tema que mostra redução de custos diretos às transportadoras e por não haver sistemas similares com este foco. Comparando a alocação de cargas da Solução, o Sistema, no exemplo apresentado, mostrou redução aproximada de 20% 61
62 nos custos (4 viagens de produtos alocados Carga Ótima, contra 5 do cenário atual otimista). De modo geral, o projeto foi muito proveitoso à equipe em todos os sentidos. Comunicação, técnicas de aprendizado, trabalho de equipe, resiliência e superação foram características mais marcantes do período. 62
63 REFERÊNCIAS AGILEWAY. Incremental vs Interativo. Disponível em <http://www.agileway.com.br/2009/08/18/incremental-vs-iterativo>. Acesso em 05/07/2014 BARROS, Fábio. Mercado de software nacional vai crescer 400% em 10 anos. Disponível em <http://convergenciadigital.uol.com.br/cgi/cgilua.exe/sys/start.htm?infoid=32006&sid= 5#.U7YWMPldWyo>. Acesso em: 30/06/2014 BORGE, Dan. The book of risk. Ed. John Wiley & Sons Inc BRITO Jr, Álvaro Francisco; FERES Jr, Nazir. A utilização técnica da entrevista em trabalhos técnicos. Evidência: olhares e pesquisa em saberes educacionais. 9. ed. Araxá, MG: UNIARAXÁ, BSOFT. Bsoft Sistemas. Disponível em < Acesso em: 05/07/2014 COELHO, Leandro C. Tipos de caminhões (tamanhos e capacidades). Disponível em < 28/11/2010 DNIT. Transporte Rodoviário do Brasil. Disponível em <http://www2.transportes.gov.br/bit/02-rodo/rodo.html>. Acesso em: 01/07/2014 ELDORADO. Eldorado Indústrias Plásticas LTDA. Disponível em <http://www.plasticoseldorado.com.br/ >. Acesso em: 05/07/2014 E-PRATICO. E-pratico Softwares de Negócios. Disponível em <http://www.epratico.com.br/software_transportadora.asp>. Acesso em: 05/07/2014 GENERIX. Otimizar a Carga dos Caminhões. Disponível em < Acesso em: 14/12/
64 GOLDBERG, D. Genetic algorithms in optimization, search and machine learning. Addison Wesley, GREFENSTETTE, J. A User s Guide to Genesis. Washington: Navy Center for Applied Research In Artificial Intelligence, GUIA DO TRANSPORTADOR. Ranking das maiores empresas de transporte rodoviário de cargas. Disponível em <http://www.guiadotrc.com.br/mercado/ranking_transportadoras2010.asp>. Acesso em: 30/07/2014 GUIA DO TRANSPORTADOR. Tipos de veículos e suas capacidades de carga. Disponível em <http://www.guiadotrc.com.br/guiadotransportador/veiculos_carga.asp>. Acesso em: 30/07/2014 IG. Nota fiscal eletrônica vira obrigatória no País a partir de hoje. Disponível em <http://economia.ig.com.br/nota-fiscal-eletronica-vira-obrigatoria-no-pais-a-partir-dehoje/n html>. Acesso em 04/07/2014 INTERLOG. Transporte rodoviário de cargas fracionadas no Brasil, um mercado altamente promissor. Disponível em <http://www.totalexpress.com.br/clipping_detalhes.php?id=249>. Acesso em: 28/06/2014 KIOSKEA. Introdução ao diagrama de Gantt. Disponível em < Acesso em: 06/07/2014 MANUTENÇÃO & SUPRIMENTOS. Tipos de Pallets para manuseio de cargas. Disponível em <http://www.manutencaoesuprimentos.com.br/conteudo/3912- diferentes-tipos-de-paletes >. Acesso em: 05/07/2014 MARTINEZ, Marina. RUP. Disponível em < Acesso em: 05/07/2014 MINISTÉRIO DA FAZENDA. Nota Fiscal Eletrônica. Disponível em,http://www.nfe.fazenda.gov.br/>. Acesso em: 04/07/
65 MOYSES, Juarez Santos. Nota Fiscal Eletrônica: obrigação ou tendência? Disponível em <http://www.senior.com.br/nota-fiscal-eletronica-obrigacao-outendencia/>. Acesso em: 02/07/2014 NEM PALLETS. Nem Pallets. Acesso em: 05/07/2014 Disponível em <http://nempallet.blogspot.com.br>. NOVAES, Antonio Galvão. Logística e gerenciamento da cadeia de distribuição: estratégia, operação e avaliação. 3. ed. Rio de Janeiro: Elsevier, NOVAES, Nathália M. R. Interativo e incremental, já ouviu falar? Disponível em < 15/07/2013 OPINA DE TI. Utilizas algún método de gestión de actividades para mejorar tu productividad personal? Disponível em < Acesso em 05/07/2014 PRESSMAN, Roger S. Software Engineering. 6. ed PROJECT MANAGEMENT INSTITUTE PMI. A Guide to the Project Management Body of Knowledge (PMBoK). 4. ed. PMI Standard ANSI, RAITTZ, Roberto Tadeu. Biblioteca de Algoritmos Genéticos gago. Disponível em < >. Acesso 14/12/2014 RENASOFT. Renasoft Sistemas Para Computadores. Disponível em <http://www.renasoft.com.br/softwares/transportadora-5-pro>. Acesso em: 05/07/2014 SECRETARIA DO ESTADO DE FAZENDA MG (SEFA-MG). Nota Fiscal Eletrônica. Disponível em <http://portalnfe.fazenda.mg.gov.br/respostas_iii.html>. Acesso em: 04/07/2014 SOMMERVILLE, Ian. Engenharia de Software. 9. ed. Pearson Education, VARGAS, Robson. A importância da gestão do transporte viário. Disponível em Acesso em 02/07/
66 VECINA, Gonzalo; REINHARDT, Wilson. Gestão de Recursos Materiais e de Medicamentos. 1. ed. São Paulo: Editora Fundação Petrópolis, WIKIPEDIA. Palete. Disponível em <http://pt.wikipedia.org/wiki/palete>. Acesso em: 05/07/2014 ZIBORDI. Zibordi Sistemas Softwares Personalizados. Disponível em <http://zibordisistemas.blogspot.com.br>. Acesso em: 05/07/2014 APÊNDICES Apêndice A Especificação dos Casos de Uso UC001 LOGIN Descrição: este caso de uso descreve o acesso do usuário ao sistema DV001.1 Tela de login do sistema DV001.2 Tela de login do sistema (continuação) 66
67 Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador acessar o sistema por navegador web Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 1. Logar o operador Ator primário: Operador Fluxo de eventos principal: 1. O sistema apresenta a tela DV O operador preenche o campo (R1) 3. O operador preenche o campo password 4. O operador clica no botão Entrar 5. O sistema valida as informações preenchidas (E1) 6. O sistema efetua o login do operador com sucesso 7. O sistema carrega a tela interna principal de menu Fluxos alternativos: Fluxos de exceção: E1: Usuário e/ou senha incorretos, ou em branco 1. O sistema apresenta mensagem de usuário e/ou senha incorretos 2. O operador clica em OK 67
68 3. O sistema limpa os campos de login e senha 4. O operador volta ao fluxo principal Regras de negócio: R1. Campo login só aceita endereço de 68
69 UC002 Manter Usuário Descrição: este caso de uso descreve o cadastro de usuários do sistema. DV002.1 Tela de Cadastro de Usuário (protótipo) Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador estiver logado (UC001) para fazer o cadastro Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 1. Efetuar o cadastro do usuário Ator primário: Operador Fluxo de eventos principal: 1. O operador preenche um válido (R1) (A1) 2. O operador preenche uma senha (R2) 3. O operador clica no botão Cadastrar (E1) 4. O sistema apresenta mensagem de cadastro realizado Fluxos alternativos: A1: Editar usuário 1. O operador clica em um usuário já cadastrado 2. O sistema preenche os dados do usuário nos respectivos campos 3. O operador edita a senha (R2) 4. O operador clica em cadastrar (E1) 5. O sistema apresenta mensagem de cadastro realizado Fluxos de exceção: 69
70 E1: inválido 1. O sistema apresenta mensagem alerta de endereço e/ou senha inválido(s) 2. O operador volta ao fluxo principal Regras de negócio: R1. O login deve ser com máscara de válida R2. Senha não pode ser espaço " " nem em branco 70
71 UC003 Manter Tipo de Produto Descrição: este caso de uso descreve o cadastro e manutenção de tipos de produtos no sistema. DV003.1 Tipos de produtos DV003.2 Tipos de produtos DV003.3 Tipos de produtos 71
72 Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador estiver logado (UC001) Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 1. Cadastrar ou editar o tipo de produto Ator primário: Operador Fluxo de eventos principal: 1. O operador preenche o nome do tipo de produto 2. O operador clica em Novo Cadastro (R1) (A1) 3. O sistema apresenta mensagem de cadastro realizado Fluxos alternativos: A1: 1. O operador clica em Editar, de um registro preexistente 2. O operador edita a descrição 3. O operador clica em Salvar (E1) (R1) 4. O sistema exibe mensagem de cadastro realizado Fluxos de exceção: E1: Descrição inválida 1. O sistema exibe mensagem de descrição inválida 2. O operador volta ao fluxo principal Regras de negócio: R1. O tipo de produto não pode ter valor em branco ou apenas espaço 72
73 UC004 Manter Produto Descrição: este caso de uso descreve o cadastro e manutenção de produtos no sistema. DV004.1 Tela de Cadastro de Produto Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador tiver efetuado o login (UC001) 2. Houver cadastro de tipo de produto (UC003) Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 1. Cadastrar um produto Ator primário: Operador Fluxo de eventos principal: 1. O operador preenche a descrição 2. O operador preenche o código EAN 3. O operador seleciona o tipo de produto 4. O operador preenche as dimensões (peso, largura, altura, comprimento) (R1) 5. O operador clica em Salvar 6. O sistema apresenta mensagem de cadastro realizado (E1) Fluxos alternativos: 73
74 Fluxos de exceção: E1: Campo(s) inválido(s) ou não preenchido(s) 1. O sistema exibe mensagem de campo não preenchido ou selecionado Regras de negócio: R1. Os campos de dimensões devem ser numéricos 74
75 UC005 Manter Tipo de Palete Descrição: este caso de uso descreve o cadastro de manutenção de tipos de paletes no sistema. CANCELADO (sugestão de implementação futura). DV005.1 Tipos de paletes DV005.2 Tipos de paletes Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador estiver logado (UC001) Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 75
76 1. Cadastrar o tipo de palete Ator primário: Operador Fluxo de eventos principal: 1. O operador clica em Novo Cadastro 2. O sistema apresenta a tela cadastral 3. O operador preenche a descrição 4. O operador preenche as dimensões (largura, altura, comprimento) 5. O operador clica em Salvar (E1) 6. O sistema apresenta mensagem de cadastro realizado Fluxos alternativos: Fluxos de exceção: E1. Campo(s) inválido(s) ou não preenchido(s) 1. O sistema apresenta mensagem de campo inválido 2. O operador volta ao fluxo principal Regras de negócio: R1. Os campos de dimensões devem ser numéricos 76
77 UC006 Manter Tipo de Veículo Descrição: este caso de uso descreve o cadastro e manutenção de tipos de veículos no sistema. DV006.1 Tipos de veículos DV006.2 Tipos de veículos DV006.3 Tipos de veículos 77
78 Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador estiver logado (UC001) Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 1. Cadastrar um tipo de veículo Ator primário: Operador Fluxo de eventos principal: 1. O operador clica em Novo Cadastro 2. O sistema apresenta a tela cadastral 3. O operador preenche a descrição 4. O operador preenche peso e volume máximos (R1) 5. O operador clica em salvar (E1) 6. O sistema apresenta mensagem de cadastro realizado Fluxos alternativos: Fluxos de exceção: E1: Campo inválido 1. O sistema apresenta mensagem de campo inválido 2. O operador volta ao fluxo principal Regras de negócio: R1. Os campos de peso e volume devem ser numéricos 78
79 UC007 Manter Veículo Descrição: este caso de uso descreve o cadastro e manutenção de veículos no sistema. DV007.1 Tela de Cadastro de Veículo DV007.2 Tela de Edição de Veículo Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador estiver logado (UC001) 2. Houver cadastro de tipo de veículo (UC006) Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 1. Cadastrar veículo Ator primário: Operador Fluxo de eventos principal: 1. O operador seleciona o tipo de veículo (A1) 79
80 2. O operador preenche a placa (R1) 3. O operador clica em Salvar (E1) 4. O sistema apresenta mensagem de cadastro realizado Fluxos alternativos: A1: Edição de cadastro 1. O operador clica em um registro de placa 2. O sistema apresenta tela de edição com os dados selecionados 3. O operador edita placa e tipo de veículo (R1) 4. O operador clica em salvar 5. O sistema exibe mensagem de cadastro realizado Fluxos de exceção: E1: Campo inválido 1. O sistema apresenta mensagem de campo inválido ou não informado 2. O operador volta ao fluxo principal Regras de negócio: R1. A placa deve ter pelo menos 7 caracteres 80
81 UC008 Importar Nota Fiscal Descrição: este caso de uso descreve a importação de Notas Fiscais eletrônicas para o sistema. DV008.1 Tela de Importação de Nota Fiscal Eletrônica Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador estiver logado (UC001) Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 1. Importar NF-e Ator primário: Operador Fluxo de eventos principal: 1. O operador clica no campo de diretório 2. O operador seleciona o arquivo xml desejado 3. O operador clica em importar (E1) (R1) 4. O sistema apresenta mensagem de arquivo importado Fluxos alternativos: Fluxos de exceção: E1: Arquivo inválido 1. O sistema apresenta mensagem de arquivo inválido 2. O operador volta ao fluxo principal Regras de negócio: 81
82 R1. O arquivo importado deve ter extensão XML 82
83 UC009 ORGANIZAR CARGA Descrição: este caso de uso monta uma carga com produtos das notas fiscais importadas. DV009.1 Tela de Organização de Cargas (protótipo) DV009.2 Tela de Organização de Cargas DV009.3 Tela de Organização de Cargas 83
84 Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador estiver logado (UC001) 2. Houver nota fiscal importada (UC008) Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 1. Criação de carga com dados de pelo menos uma nota fiscal Ator primário: Operador Fluxo de eventos principal: 1. O operador seleciona as checkboxes desejadas (referentes a NFe's) 2. O operador clica em Criar Carga (E1) 3. O sistema apresenta mensagem de Carga criada Fluxos alternativos: Fluxos de exceção: E1: NFe não selecionada 1. O sistema apresenta mensagem de nenhuma nota fiscal selecionada Regras de negócio: 84
85 UC010 PALETIZAR CARGA (Organizar Paletes) Descrição: este caso de uso serve para paletizar/unitizar as cargas montadas com as notas fiscais. CANCELADO (sugestão de implementação futura). DV010.1 Tela de paletização de carga (protótipo inicial) DV010.2 Tela de paletização de carga DV010.3 Tela de paletização de carga 85
86 Pré-condições: Este caso de uso pode iniciar somente se: 1. O operador estiver logado (UC001) 2. Houver cargas cadastradas (UC009) Pós-condições: Após o fim normal deste caso de uso, o sistema deve: 1. Paletizar a carga (distribuir em paletes) Ator primário: Operador Fluxo de eventos principal: 1. O operador seleciona uma carga 2. O operador clica em listar 3. O sistema apresenta a listagem de produtos referentes àquela carga 4. O operador seleciona o tipo de palete 5. O operador clica em armazenar 6. O sistema exibe mensagem de carga paletizada Fluxos alternativos: Fluxos de exceção: E1: Campo inválido 1. O sistema apresenta mensagem de campo inválido ou não informado 2. O operador volta ao fluxo principal 86