Desenvolvimento de Software para Auxiliar no Gerenciamento de Pequenas Propriedades Leiteiras na Região da Cantuquiriguaçu Leandro Pinheiro¹, Regiane Orlovski² Faculdade Guairacá Rua XV de Novembro, nº7050 – Centro - Guarapuava - PR. ¹[email protected], ²[email protected] Abstract. This work want to develop a software that manages the production process of small dairy farm, in this process was used JAVA programming language with the OpenSwing framework for the management of the data base was used SGBD MYSQL. The studywas developed in the Cantuquiriguaçu region, which consists in an association of twenty cities located in the middle MidWest of Paraná, where milk production is an important economic activity, the result of this work was a software able to manage the productive sector of these farms. Resumo. Este trabalho tem o objetivo de elaborar um software que gerencia o processo produtivo de pequenas propriedades leiteiras. Neste desenvolvimento foi utilizado a linguagem de programação JAVA junto com o framework OpenSwing, para o gerenciamento do banco de dados foi utilizado o SGBD MYSQL. O estudo do foi desenvolvido junto à região da Cantuquiriguaçu, que consiste em uma associação composta por 20 municípios localizada no Médio Centro Oeste do Paraná, onde a produção leiteira tem importante papel econômico, a resultante deste foi um software capaz de gerenciar o setor produtivo dessas propriedades. 1. Introdução A necessidade do acompanhamento das constantes inovações tecnológicas em todos os setores da economia nacional faz com que cada vez mais os pequenos produtores leiteiros necessitem de ferramentas que auxiliem no gerenciamento de sua propriedade, melhorando o controle de custos e, consequentemente, aumentando os lucros. Um software de gerenciamento permite ao produtor ter o controle sobre o processo produtivo de sua propriedade e, dessa forma, saber onde estão as maiores perdas, podendo assim minimizá-las, aumentando sua produtividade e tornando-se mais competitivo. O processo de produção leiteiro possui diversas variáveis e muitas delas dependem da posição geográfica da propriedade, fazendo-se necessária uma ferramenta gerencial desenvolvida especificamente para cada região através de um estudo preliminar sobre as necessidades da região que será atendida pelo software. Este estudo deve seguir padrões de projeto de software para que, ao final, possa expressar a real necessidade administrativa das pequenas propriedades em que será implantado. Este trabalho tem o objetivo de desenvolver um software para auxiliar a pequenos produtores leiteiros no gerenciamento de suas propriedades, através de análise de custos de produção para assim diminuir percas. 2. Desenvolvimento 2.1 Fundamentação Teórica Devido à evolução tecnologia em que vivemos diversos segmentos de mercado estão investindo em tecnologias, que auxiliam no gerenciamento de custos e na tomada de decisões. No setor agropecuário isso não é diferente, sendo necessário ao produtor investir nessas tecnologias para melhorar o gerenciamento dos processos produtivos existentes na propriedade. “Com a evolução da tecnologia e a busca por adquirir produtos de melhores qualidades, o produtor rural necessita desenvolver cada vez mais técnicas na produção e também no gerenciamento financeiro de sua propriedade”. Segala & Silva (2007). Segundo Oliveira (2012), a produção leiteira na região da Cantuquiriguaçu vem aumentando significativamente nos últimos anos, o que aumenta a dificuldade na gestão das pequenas propriedades, sendo importante um software que possa auxiliar esses produtores neste processo. Este crescimento pode ser visualizado no gráfico1 que representa os rendimentos financeiros da produção leiteira de 10 dos 20 municípios estudados entre os anos de 2004 a 2011, embasado em dados contidos no Anexo A. Gráfico 1: Produção Anual. Fonte: Oliveira (2012) Segundo Marion & Segatti (2006), um sistema de gestão de pequenas propriedades leiteiras é importante, pois estas fazem parte significativa do cenário econômico do país, o processo de desenvolvimento deste software deve utilizar - se além da análise de requisitos a integração de produtores, profissionais agropecuários (agrônomos, veterinários, por exemplo) e profissionais de tecnologia, facilitando a adequação do software às necessidades das propriedades atendidas. Para Oliveira (2012), no âmbito regional essas propriedades têm sua importância aumentada, pois elas movimentam o comércio local devido ao fato de recebem mensalmente pela produção o que não ocorre em muitas outras culturas agropecuárias da região. Ainda segundo Oliveira (2012), outro ponto considerável na viabilidade da elaboração do projeto é o fato de que a produção leiteira no ano de 2010 foi a segunda maior entre 10 dos 20 municípios estudados, perdendo apenas para o cultivo da soja, representando 12,6% de toda a produção agrícola da região, que corresponde a um total de R$ 112.070.800,00, valor este em sua maioria dissolvido mensalmente no comércio local, impulsionando o desenvolvimento dessas cidades. O gráfico 2 demonstra o percentual produtivo que as principais culturas agrícolas representam na região, reforçando as informações citadas acima, este tem por base dados contidos no Anexo B. Gráfico 2: Produção por cultura no ano de 2010. Fonte: Oliveira (2012) Para Oliveira (2012) um software desta natureza auxilia o controle de custos do processo produtivo, controle este necessário pelo fato de que a grande maioria das propriedades da região em estudo tem base na agricultura familiar e não dá a importância devida a processos de gestão, muitas vezes por serem complexos e demorados, outras vezes pela falta de conhecimento sobre o assunto e em outras situações a falta de condições financeiras para contratar equipe especializada, o que acaba inviabilizando o processo de gestão. Para Arêdes et al. (2006), o acompanhamento adequado dos custos da produção leiteira causa uma diminuição no custo médio da produção, aumentando assim a lucratividade da atividade produtiva. Segundo Oliveira (2012), este software tem importante papel no gerenciamento dos custos da produção, podendo assim o produtor separar o que são custos do processo produtivo do que são custos pessoais, é comum nessas propriedades não haver essa separação. Para Santos et al. (2002), citado por Marion & Segatti (2006), a propriedade deve ser divida em três grupos, Centros de Produção, Centros Auxiliares à Produção e Centros Administrativos. Esta divisão para Marion & Segatti (2006), proporciona maior controle sobre os custos da propriedade, podendo-se separar custos pessoais dos custos de produção. Outra função do software desenvolvido é o dimensionamento do rebanho, tarefa essa que auxiliará ao produtor projetar investimentos na propriedade, com base no rebanho futuro e nas expectativas de renda. Para Lopes et al. (2006) o dimensionamento do rebanho é importante para as projeções da propriedade, e através desse pode-se planejar investimentos, manutenção e ampliação de equipamentos e instalações bem como mão de obra. Ainda segundo Lopes et al. (2006), dimensionamento do rebanho consiste basicamente em classificar os animais em categorias, para um melhor aproveitamento da capacidade produtiva da propriedade, essas categorias podem ser dividas por idade. Para o desenvolvimento do software proposto neste trabalho foi utilizado OO (Orientação a Objetos), pela agilidade no desenvolvimento e facilidade na manutenção do software. Segundo Ricarte (2001), dentre as vantagens existentes na orientação a objetos frente a outros paradigmas de programação, destacam-se o conceito de herança e o polimorfismo. Ainda segundo Ricarte (2001), a organização do código de um software de médio a grande porte deve ser feita separando as classes, na linguagem JAVA. Esta ação pode ser realizada através de pacotes, pois o código-base de JAVA está assim organizado, devendo tomá-lo como referência. Para Gavidia (1997), a linguagem JAVA oferece diversas funcionalidades com relação à segurança, também se torna altamente produtiva devido à OO. A linguagem é bastante simples, e softwares desenvolvidos em JAVA, independem de Sistemas Operacionais. O uso de frameworks é comum entre desenvolvedores, pois estes trazem um importante ganho de produtividade, neste trabalho foi utilizado um framework visual para a linguagem JAVA, o OpenSwing. As IDE’s (Integrated Development Environment ou Ambiente Integrado de Desenvolvimento), agilizam o processo de desenvolvimento, um exemplo dessas é o Netbeans também utilizado neste trabalho, essas IDE’s para desenvolvimento JAVA, na sua maioria utilizam os componentes gráficos Swing Toolkit, fato este que fez com que o framework OpenSwing fosse escolhido devido ao ganho de produtividade em relação ao Swing. Para Mouta (2010), o OpenSwing possui uma suíte de componentes gráficos avançados, suporte para aplicações em 2 ou 3 camadas e aplicações stand-alone. Outro ponto importante citado por Mouta (2010), é o fato de os componentes do OpenSwing seguirem especificações JAVA Beans, tornando possível utilizar o mesmo em IDE´s disponíveis para JAVA, o framework citado permite ainda criação de aplicações SDI (Single Document Interface), ou MDI (Multiple Document Interface), os componentes do OpenSwing são desacoplados uns dos outros, tornando fácil a edição dos mesmos de forma independente, os componentes do OpenSwing são baseados padrão MVC (Model, View, Controller). Para o armazenamento dos dados foi escolhido o Sistema Gerenciador de Banco de Dados (SGBD) MYSQL, este se trata de um software livre, com uma documentação oficial de qualidade e disponível no idioma português, além de sites, blogs e fóruns de discussão, com conteúdo sobre o mesmo, facilitando o aprendizado no uso da ferramenta. Para Caldeira (2006), o MYSQL como SGBD torna-se umas das melhores opções devido à possibilidade de ser usado em diversos sistemas operacionais, possuir suporte a diversas linguagens, ser uma das principais distribuições gratuitas, possui uma comunidade ativa, documentação extensa e completa no idioma português, com um baixo custo de implementação sem deixar de lado o desempenho. O modelo de desenvolvimento do Sistema Gerenciador de Pequenas Propriedades Leiteiras (SGL) seguiu o Modelo Incremental, pois esse segundo Barbosa (2006) determina que o processo de desenvolvimento deva ser divido em partes (módulos) e conforme esses vão sendo concluídos são entregues ao cliente, tendo assim um contato com o software que está sendo desenvolvido. Este modelo de desenvolvimento pode ser mais bem entendido, com o auxilio da figura 1. Figura 1 - Modelo incremental Fonte: Barbosa (2006) Quanto a teste de softwares, Koscianski & Soares (2010), salientam que o objetivo deste é identificar defeitos, esta atividade de teste se bem planejada pode ser um indicador de qualidade do software. Ainda segundo Koscianski & Soares (2010), uma das principais dificuldades em elaborar testes efetivos é alocar recursos para os mesmos, sendo assim o melhor teste é o que encontra o máximo de defeitos. Para Bartié (2002), a elaboração de testes e importante para garantir a qualidade de software, este processo deve ser planejado com base na documentação do software, buscando encontrar objetivos, incluindo pessoas com visões diferentes de um mesmo problema, Bartié (2002), ainda destaca que muitas vezes a simples verificação do código pode encontrar diversos defeitos no software. Segundo Bartié (2002), testes de verificação são testes que tem seu foco direcionado para a documentação do software, enquanto que testes de validação tem a finalidade de verificar o software ou módulo pronto. Para Koscianski & Soares (2010), os testes de verificação podem ser divididos basicamente em teste caixa-preta e teste caixa-branca, onde o teste caixa preta consiste em testar o software sem conhecer a construção interna do mesmo, este teste geralmente é feito pelo usuário, quanto ao teste caixa branca este é o oposto do citado acima, ou seja, a pessoa responsável pelo teste tem acesso a estrutura interna do software, este teste geralmente produz melhores efeitos. 2.2 Etapas do Desenvolvimento do Trabalho A etapa de desenvolvimento do software proposto SGL, iniciou-se pela coleta de requisitos junto a alguns produtores, técnicos agropecuários e veterinários, estes por sua vez foram indagados através de entrevista direta sobre o processo de gestão das propriedades, as questões dessas entrevistas podem ser encontradas no Apêndice A. Nestas entrevistas, procurou-se questionar os entrevistados sobre quais os pontos importantes do processo de produção, quais as dificuldades na gestão da propriedade, o que seria relevante para a gestão adequada dos custos da produção. Foi questionado também se existem e quais são os projetos de gestão na propriedade e quais as opiniões destes sobre tecnologia aplicada a sua propriedade, devido à quantidade de informações coletadas tornarem o desenvolvimento do software um processo extenso, fato este que inviabilizaria o mesmo, devido ao tempo existente para tal estes dados foram filtrados visando o gerenciamento e controle do processo produtivo da propriedade. A partir da entrevista ficou evidente o desenvolvimento voltado para gerenciar, raças das matrizes, sêmen em estoque, inseminações, temperatura diária, volume pluviométrico diário, matrizes, gestação, produção, alimentação, descartes de matrizes, além de um registro de clientes, veterinários e fornecedores. Estes dados foram escolhidos por apresentarem importância significativa no processo produtivo das propriedades, exceto pelos registros de clientes, veterinários e fornecedores, estes foram incluídos por se tratarem de dados úteis para consultas dos produtores. Através dos dados resultantes da filtragem citada foi elaborada a modelagem do banco de dados, esta é importante para o processo de desenvolvimento de software por representar de forma visual de fácil entendimento as tabelas e os relacionamentos existentes no banco de dados, esta modelagem foi elaborada com o auxílio do software MYSQL Workbench na sua versão 5.2 CE (Community Edition), deu-se a escolha por essa versão por ser gratuita e ser desenvolvido especificamente para o SGBD escolhido. A modelagem do banco de dados como pode ser visto no Apêndice B, possui 20 tabelas, que armazenam os dados inseridos pelo usuário. As que se referem aos clientes, veterinários e fornecedores são apenas para registro de contatos dos mesmos, estas não possuem relacionamentos com nenhuma outra, já as tabelas temperatura e pluviômetro, armazenam as temperaturas diárias e o volume pluviométrico diário respectivamente, estes dados são usados para comparar a produtividade em função dos mesmos, também não possuem relacionamentos. Quanto ao restante das tabelas todas possuem relacionamentos entre si, estes relacionamentos têm como base a tabela matrizes, por se tratar do item mais importante do processo produtivo, esta possui diversos status que demonstram os estados em que a matriz se encontra, dividem-se em: status_atividade (Ativa (A), Descartada (D)), status_idade (Adulta (A), Jovem (J)), status_gestacao (Prenha (P), Vazia (V)) e status_lactacao (Lactante (L), Seca (S)), estes status podem ser alterados em algumas situações pelo usuário e em outras pelo próprio software geralmente através de Triggers criadas no banco de dados. As tabelas alimentacao alimentacao_has_alimentos, alimentos, alimentos_has_nutrientes, nutrientes e tratos fazem parte do controle de alimentação, através deste é possível saber o custo de alimentação, facilitando o controle de custo benefício dos animais individualmente, pois esses dados podem ser comparados com a produção, a tabela tratos possui três Triggers que podem ser visualizadas em detalhes no Apêndice C. Já as tabelas descartes, destino_descartes e motivo_descartes gerenciam os descartes de matrizes, a tabela descartes possui três Triggers que tem a função de alterar o status_atividade da matriz descartada, estas podem ser visualizadas em detalhes no Apêndice C. A tabela lactacao controla a produção diária das matrizes, facilitando o controle produtivo dos animais individualmente. Quanto a tabela gestacao, esta gerencia as gestações das matrizes, possui também três Triggers que atualizam o status_gestacao das matrizes, estas Triggers estão detalhadas no Apêndice C. A tabela raças tem a função de armazenar dados inseridos pelo usuário com relação às raças das matrizes e dos semens. Quanto à tabela inseminação, gerencia as inseminações das matrizes, esta tabela possui duas Triggers que além de controlar o estoque de semens também gerenciam as gestações, estas Triggers são detalhadas no Apêndice C. Por fim à tabela semen esta controla o estoque e a raça dos semens. Com o término da modelagem do banco de dados foi iniciado o desenvolvimento do Diagrama de Casos de Uso, esta tarefa teve o auxílio do software ASTAH Community, ferramenta esta que fornece uma interface visual para o desenvolvimento de diagramas UML (Unified Modeling Linguaje). O Diagrama de Casos de Uso foi desenvolvido com base na modelagem do banco de dados, este diagrama tem por finalidade documentar todos os procedimentos existentes no SGL. O SGL possui diversos casos de uso, eles estão representados neste documento de forma gráfica e textual, estes foram divididos em grupos para facilitar seu entendimento. O caso de uso Manter demonstra seu funcionamento graficamente, ele possui outros quatro casos de uso relacionados a ele, Alterar, Consultar, Excluir, Incluir. Este caso de uso foi elaborado com a finalidade demonstrar o funcionamento de um cadastro simples, dessa forma como diversos cadastros utilizam esse mesmo formato de caso de uso, estes podem ser representados textualmente indicando-se quais tabelas do banco de dados utilizam-se deste, simplificando o diagrama sem deixar de ser explicativo. Os casos de uso restantes são demonstrados unicamente de forma gráfica, todos estes graficamente ou textualmente podem ser visualizados e entendidos no Apêndice D. Os diagramas a seguir sofrem grande influência do framework utilizado para o desenvolvimento do SGL. O OpenSwing como diversos outros frameworks possui um padrão de desenvolvimento, este padrão adota métodos obrigatórios o que torna a maioria das classes idênticas, a diferença significativa entre classes fica por conta das classes contidas no Pacote VO, este padrão imposto pelo OpenSwing fez com que a sequência de alguns casos de uso fossem iguais, ocasionando a padronização de alguns diagramas como é o caso do diagrama de sequência e de classes. Ainda com auxílio do software ASTAH Community foi elaborado o diagrama de classes, este foi desenvolvido com base nos dois diagramas citados acima, tal diagrama consiste em documentar as classes do software, e nestas todos os métodos e atributos das mesmas, como citado acima este diagrama foi afetado diretamente pelo framework OpenSwing e também pelo paradigma de desenvolvimento MVC, que foram utilizados para auxiliar no desenvolvimento do SGL, fato este que ocasionou a padronização de diversas classes, este diagrama pode ser melhor entendido no Apêndice E. Para finalizar os diagramas UML, foi elaborado o diagrama de sequência que consiste em documentar a sequência exata que cada caso de uso irá executar para a conclusão das tarefas solicitadas, este também teve seu desenvolvimento auxiliado pelo software ASTAH Community, a escolha do framework OpenSwing e do paradigma de desenvolvimento MVC também afetaram este diagrama, pois este representa a sequência em que os dados percorrem pelo software durante um procedimento solicitado pelo usuário. O diagrama de sequência foi divido em quatro partes para facilitar seu entendimento, isso foi possível graças a padronização dos métodos imposta pelo OpenSwing, consistem em alteração de dados, consulta de dados, exclusão de dados, inserção de dados, estes diagramas podem ser visualizados no Apêndice F. Com o término da documentação do software, foi iniciado o desenvolvimento do SGL. Este processo foi o que exigiu maior tempo para a execução, a utilização do OpenSwing representa um ganho considerável na programação de softwares na linguagem JAVA, porém a falta de material didático no idioma português sobre o mesmo torna o aprendizado demorado, o que dificultou o desenvolvimento do SGL. A partir da escolha do framework utilizado, foi escolhida a IDE, para o desenvolvimento do SGL optou-se pela IDE conhecida por NetBeans em sua versão 6.8, devido ao OpenSwing possuir toda sua documentação e exemplos desenvolvidos nesta IDE e versão, além de que em testes com versões atualizadas da IDE alguns bugs foram encontrados. Em seguida foi criado o banco de dados com base na modelagem do mesmo. Este banco foi gerado através da utilização da ferramenta MYSQL Workbench, pois a mesma possui um assistente que gera todas as tabelas no banco de dados, juntamente com Triggers e relacionamentos, isso através do diagrama elaborado no mesmo software o que acelera e simplifica esse processo. O passo seguinte foi criar um novo projeto JAVA no Netbeans e então configurar a IDE para utilização do MYSQL e do OpenSwing, através da instalação das bibliotecas do SGBD e framework citados. Depois do projeto devidamente criado com as bibliotecas adicionadas, teve início o processo de desenvolvimento. Primeiramente foram definidos e criados os pacotes para organização do software, VO, Controller, Frame, sgl, recursos e Relatorios, estes pacotes foram criados unicamente para melhor organizar as classes do software e serão explicados individualmente a seguir. O pacote VO, contém as classes que fazem referência ao banco de dados. Cada atributo das classes contidas neste pacote possui seu equivalente no banco de dados. Todas as classes contidas no pacote VO estendem da classe ValueObjectImpl do OpenSwing. Já o pacote Controller possui as classes que controlam todo o software desenvolvido com o OpenSwing, estas classes controlam o acesso ao banco de dados, elas utilizam-se de objetos enviados pela interface e através de métodos padrões do OpenSwing fazem a manipulação desses dados no banco de dados, retornando à interface os dados resultantes da operação solicitada. As classes deste pacote podem estender de duas classes do OpenSwing, estas são FormController e GridController, a FormController possui diversos métodos que gerenciam o componente Form do OpenSwing, já a GridController gerencia o componente GridControl, as classes que estendem GridController devem também implementar a Interface GridDataLocator. As classes do pacote Controller podem utilizar diversos métodos existentes nas classes FormController, GridController e GridDataLocator, dentre estes os principais são: loadData responsável por localizar e retornar para a interface dados provenientes do banco de dados; insertRecords e insertRecord estes sendo responsáveis por inserir os dados contidos nos objetos passados pela interface, a diferença entre esses métodos se dá pelo fato de que o primeiro pode inserir diversos registros ao mesmo tempo, sendo utilizado pelo componente GridControl, já o segundo insere um objeto a cada execução este e utilizado pelo FormControl; deleteRecord e deleteRecords, são responsáveis por excluir os dados contidos no objeto passado pela interface, estes métodos podem seguir a mesma analogia dos métodos citados acima, ou seja o que possui nome no plural é utilizado pelo GridControl e o outro usado pelo Form, este funcionam da mesma forma dos citados acima; updateRecord e updateRecords, usados para atualizar os dados no banco de dados, tem seu funcionamento semelhante aos demais. Com relação ao pacote Frame, este possui as telas do SGL, estas classes devem estender de InternalFrame que também é uma classe do OpenSwing e possui métodos para a criação de telas, as classes contidas nesse pacote tem a maior parte de seu desenvolvimento como sendo visual com pouca codificação, pois o framework utilizado fornece um coleção de componentes visuais que podem ser adicionados ao projeto apenas clicando sobre os mesmos e arrastando para a área da tela do software. Neste pacote a configuração dos componentes pode ser feita também em sua maioria de forma visual aumentando significativamente a produtividade. Com relação ao pacote sgl, este possui apenas duas classes sendo estas Menu e ClienteFachada, onde a classe Menu configura diversos parâmetros do software desenvolvido, como por exemplo método de autenticação de usuários, menus, conexão com o banco de dados, configurações da tela principal do software além de configurar os Domains que são listas de dados que podem ser utilizadas pelos componentes ComboColumn e ComboBoxControl do OpenSwing, a classe Menu deve implementar MDIController, LoginController esta última somente caso o controle de usuário for utilizado. Já a classe ClienteFachada implementa ClientFacade do OpenSwing, a ClienteFachada tem por finalidade direcionar as chamadas dos menus, ou seja, quando um menu é clicado ele irá executar um método desta classe e esta irá chamar a tela devida. O pacote recursos possui arquivos XML (eXtensible Markup Language), estes arquivos são utilizados pelo sistema de internacionalização do OpenSwing, que consiste em criar um arquivo com todas as traduções dos componentes do software desenvolvido e mensagens de erros, podendo assim, alterar o idioma completo do software em tempo real. Este sistema de internacionalização e um importante recurso do OpenSwing. Por fim, o pacote Relatórios, que possui as classes referentes aos relatórios do sistema, estas se dividem em arquivos de classes JAVA que fazem a chamada dos relatórios, onde cada relatório possui uma classe, estes relatórios foram desenvolvidos utilizando – se da ferramenta IReports, pois essa oferece uma interface visual para o desenvolvimento dos mesmos, o que torna mais rápido e produtivo o processo, além de proporcionar em tempo real o resultado das consultas feitas ao banco de dados podendo assim verificar se o resultado está como previsto. Estes relatórios estão divididos em relatórios textuais que neste caso são chamados de relatórios e também relatórios com imagens que são chamados de gráficos. O Relatório de Produção Média por Matrizes demonstra a produção média por matrizes, podendo-se com base nestes dados analisar o desempenho do rebanho individualmente. Quanto ao Relatório de Custos de Alimentação por Matrizes fornece dados com relação aos custos da alimentação fornecida para cada matriz individualmente, estes dados cruzados com os dados do relatório anterior auxiliam na análise de custo beneficio de cada matriz. O Relatório de Custos de Inseminação por Matrizes demonstra os gastos com inseminação, estes dados são demonstrados de forma individual. Já o Relatório de Gestação por Matrizes demonstra os dados de gestações de cada matriz podendo com esta base, analisar a capacidade reprodutiva de individualmente. Com relação ao Relatório de Produção por data com Temperatura, faz um demonstrativo da produtividade com base em faixas de temperaturas, para que seja possível avaliar a produtividade das matrizes com relação a mudanças climáticas. Quanto ao Relatório de Matrizes por Pluviômetro este proporciona a visualização da produção com base no volume pluviométrico na propriedade. O Relatório de Matrizes por Status demonstra as matrizes e seus status para assim fazer planejamento de investimentos com base nas projeções de crescimento do rebanho. Já o Relatório de Matrizes por Origem fornece dados com relação à origem das matrizes existentes no rebanho, com base nisso é possível saber se o rebanho está reproduzindo adequadamente. Quanto aos gráficos, estes foram desenvolvidos com o intuito de facilitar a visualização dos dados. Foram pensados de forma que mostrem dados importantes ao produtor, já que a representação gráfica facilita o entendimento e visualização de informações; Gráfico de Produção Media por Raças, demonstra a média de produção das matrizes ordenadas por raças. Este gráfico torna fácil ao produtor identificar quais as raças tem um maior desempenho produtivo. Gráfico de Custos de Alimentação Media por Raças, fornece dados referentes ao consumo de alimentos médio de cada raça, os dados deste gráfico cruzado com o gráfico anterior tornam possível ao produtor verificar o custo-benefício de cada raça, podendo este então avaliar qual dessas melhor se adapta ao seu processo produtivo. Gráfico de Matrizes por Status demonstra graficamente o dimensionamento do rebanho por status, podendo assim identificar de forma rápida problemas como, por exemplo, a quantidade de matrizes lactantes baixa, dessa forma o produtor terá a possibilidade de buscar soluções para o problema. Gráfico de Descartes por Motivo com base neste será possível ao produtor identificar quais os principais motivos pelo qual suas matrizes são descartadas, dessa forma, havendo algum problema este será identificado rapidamente. Com relação ao SGL este possui a seguinte estrutura, uma tela principal que se inicia maximizada, esta possui uma barra de menus contendo os seguintes itens, Cadastros, Operacional, Relatórios, Gráficos, Utilitários, Janela, Ajuda, onde cada item de menu possui alguns sub-menus com a finalidade de exibir ao usuário as telas do SGL, estes sub-menus serão explicados a seguir. Quanto ao menu Cadastros este possui diversos itens, a finalidade destes itens é direcionar o usuário as telas dos principais cadastros do SGL, estes itens são, Matrizes, Raças, Sêmen, Destino de Descartes, Motivo de Descartes, Clientes, Fornecedores, Veterinários, Nutrientes, Alimentos, Alimentação. O cadastro de Matrizes e feito através de uma tela composta por diversas abas, em cada uma dessas abas é exibido os dados das matrizes resultantes das restrições impostas nas consultas SQL de cada aba, um exemplo é a aba Matrizes Ativas que exibe somente as matrizes que não foram descartadas, esta divisão por abas facilita a visualização das matrizes por categorias, a inserção de novas matrizes é feita pela aba Todas as Matrizes. Cada aba apresenta dados pertinentes ao tipo de informação que o usuário esteja procurando ao acessar a mesma, em algumas dessas abas ainda e possível alterar alguns dados, como por exemplo, a aba Matrizes Lactantes onde é possível alterar o status_lactacao das Matrizes. O cadastro de Raças consiste em uma tela simples, onde são inseridos o nome e algumas observações sobre raças de matrizes e de semens, este serve para separar o rebanho por raças e com base nisso verificar quais se adaptam melhor a propriedade. Quanto ao cadastro de sêmen, este tem a função de controlar o estoque de sêmen da propriedade, facilitando o gerenciamento da evolução do rebanho. Já os cadastros de Destino de Descartes e Motivo de Descartes são bastante semelhantes, onde um tem a finalidade de informar o destino das matrizes descartadas e o outro informa o motivo pelo qual o descarte ocorreu. Com relação aos cadastros de Clientes, Fornecedores e Veterinários tem por finalidade apenas cadastrar os dados simplesmente para consulta do proprietário, nesta versão do software estes dados não influenciam outros cadastros. Estes cadastros consistem em uma tela de consulta onde podem ser visualizados os dados registrados no banco de dados, além de uma tabela de detalhe onde podem ser inseridos e alterados dados novos. O cadastro de Nutrientes consiste em um cadastro simples onde são registrados diversos nutrientes que estarão contidos nos alimentos que serão fornecidos para as matrizes. Quanto ao cadastro de Alimentos este tem por finalidade controlar o estoque dos mesmos. Além de possuir um controle de nutrientes, com base nesta informação, é possível identificar como cada alimento ou nutriente influencia na produção. Já o cadastro de Alimentações foi desenvolvido para auxiliar o processo de inserção dos dados alimentares das matrizes, devido ao fato de que geralmente não se oferece apenas um tipo de alimento. A cada refeição proporcionada à matriz, o processo de inserção desses dados iria se tornar trabalhoso, dessa forma, foi elaborado este cadastro, que funciona da seguinte maneira: cadastra-se uma alimentação que será composta de um ou mais alimentos e então através de um formulário detalhado devem ser inseridos todos os alimentos que compõe a alimentação, bem como suas quantidades. Com relação ao menu Operacional, este possui alguns sub-menus que tem por finalidade o controle dos dados referentes a produção, está divido em Temperatura, Pluviômetro, Lactações, Inseminações e Gestações. Os sub-menus Temperatura e Pluviômetro, tem por finalidade o controle da temperatura e volume pluviométrico respectivamente, estes dados podem ser cruzados com a produção e assim diagnosticar problemas e pensar soluções referente a essas duas variáveis da produção leiteira. Quanto ao sub-menu Lactações, registra a produtividade leiteira das matrizes individualmente, se divide em duas telas, uma onde é possível consultar os dados registrados além de inserir dados novos. Como em algumas propriedades a quantidade de matrizes ordenhadas é significativa a inserção de dados produtivos das matrizes uma a uma, se torna uma tarefa demorada. Com base nesta situação, foi elaborada uma tela secundária que carrega todas as matrizes que estão lactantes. Feito isso, o usuário precisa apenas selecionar uma vez a data e o período e apenas a quantidade de leite produzido em litros é que deve ser inserida individualmente. Já o sub-menu Inseminações é utilizado para gerenciar as inseminações que serão efetuadas, além da possibilidade do acompanhamento de custos por matriz. O sub-menu Gestações gerencia todas as gestações existentes. Com base nesta informação, é possível saber as previsões de partos e desta forma proporcionar um acompanhamento adequado às matrizes, aumentando o sucesso das gestações. Com relação às menus Relatórios e Gráficos os mesmos também são compostos por sub-menus, onde cada sub-menu se refere a um relatório ou gráfico do SGL, estes já foram descritos acima. Já o menu Utilitários possui apenas o sub-menu de backup que tem por finalidade exibir a tela que gera ou restaura uma cópia de segurança do SGL. No que se refere o menu Janela, trata-se de um menu padrão do OpenSwing, é utilizado para gerenciar as janelas do software, seus sub-menus possuem nomes bastante sugestivos não se fazendo necessário explicação detalhada dos mesmos. Quanto ao menu de ajuda, se configura também de um menu padrão do OpenSwing e apenas exibe a tela de informações básicas do SGL. Após o processo de desenvolvimento dos módulos foram elaborados testes em cada módulo, estes foram elaborados de duas formas, primeiro foi elaborado pelo desenvolvedor, o teste conhecido como caixa-branca, assim que os erros encontrados neste teste foram corrigidos o módulo desenvolvido foi testado pelo usuário, que relatou os erros encontrados e acabaram por ser corrigidos. Somente após as correções o módulo foi considerado finalizado. 3. Resultados Com a finalização deste trabalho obteve-se um software capaz de gerenciar o processo produtivo de uma pequena propriedade leiteira, focando o gerenciamento do rebanho e sua produtividade, algumas variáveis foram utilizadas para um possível diagnóstico da produção como temperaturas e nível pluviométrico, o SGL atende a algumas necessidades básicas dos pequenos produtores rurais, o que auxiliará essas propriedades no controle de alguns custos e no aumento da produtividade. Também foi obtido um documento de requisitos amplo e que atende de forma adequada à maioria das necessidades das pequenas propriedades estudadas. Este estudo obteve ainda um diagnóstico das propriedades da região, onde foi constatado deficiências no gerenciamento e planejamento dessas. Foi diagnosticada também a dificuldade de uma pequena empresa de software para aplicar processos de engenharia de software e qualidade de software, devido a quantidade limitada de pessoas envolvidas no processo. 4. Considerações Finais Este trabalho poderá ser utilizado por propriedades leiteiras que tenham interesse em ter um controle e monitoramento do processo produtivo. Além do software desenvolvido, este trabalho teve importância por identificar alguns problemas relacionados à gestão das propriedades na região estudada, percebeuse neste estudo a dificuldade dos produtores em gerenciar sua produção, devido a alguns fatores como a falta de conhecimento de processos de gestão, equipes técnicas fornecidas por órgãos públicos (Prefeituras) em quantidades inferiores ao necessário, custo para contratação de empresas especializadas no processo de gestão das propriedades, elevado para os padrões da maioria dos produtores entre outras situações. Foi constatado também que o processo de gestão de uma propriedade leiteira para ser completo e eficiente torna-se complexo e trabalhoso, por possuir muitas variáveis, que devem ser consideradas. Este processo necessita de um software que se utilize de todos os parâmetros envolvidos na produção o que torna o desenvolvimento do mesmo trabalhoso e demorado. Esta quantidade grande de parâmetros envolvidos no processo causa empecilho também para a implantação e utilização de um software altamente adequado à gestão da propriedade, devido à maioria das propriedades da região em estudo, possuir sua base na agricultura familiar, estas não dispõem de tempo hábil para alimentar um software com todas essas variáveis, fato este que inviabilizaria a utilização do mesmo. O estudo mostrou que um software que gerencie adequadamente as propriedades rurais auxiliando na tomada de decisão das mesmas, deverá possuir um alto nível de automatização diminuindo assim o trabalho de alimentação do sistema. A automatização deve levar em consideração a situação financeira dessas propriedades, procurando por soluções alternativas e baratas para então obter o real controle do processo produtivo dessas propriedades. Algumas tecnologias simples e baratas já existem e com base nelas se deve desenvolver um software que atenda a todas as necessidades das propriedades. Com base nisso, o processo de desenvolvimento do SGL não se encontra concluído plenamente para atender a todas as necessidades das pequenas propriedades leiteiras, o que torna necessário a continuação do mesmo em um projeto futuro. 5. REFERÊNCIAS: Arêdes, A.; Silveira, S. de F. R; Lima, A. A. T. de F. de C.; Arêdes, A. F; Pires, S. V. Análise de custos na pecuária leiteira: um estudo de caso das propriedades assistidas pelo programa de desenvolvimento da pecuária leiteira da região de Viçosa. 2006. Artigo Universidade Federal de Viçosa. (disponível em: (http://www.custoseagronegocioonline.com.br/numero1v2/Analise%20de%20custos. pdf acesso em 23/04/2012). Barbosa, A. L. Analise comparativa de metodologias para o gerenciamento de projetos de desenvolvimento de software. 2006. Universidade Estadual de Campinas – Faculdade de Engenharia Elétrica e de Computação. (disponível em: (http://www.bibliotecadigital.unicamp.br/document/?down=vtls000392877 acesso em 15/04/2012). Bartié, A. Garantia da qualidade de software: adquirindo maturidade organizacional – 13ª reimpressão – Rio de Janeiro: Elsevier, 2002. Caldeira, B. P. Alta disponibilidade – replicação de dados via MYSQL, com ênfase em identificação e recuperação de falhas. 2006. Departamento de Ciência da Computação Universidade Federal de Lavras. (disponível em: www.ginux.ufla.br/files/mono-BrunoCaldeira.pdf acesso em 15/11/2011). Gavidia, J. J. Z. Programação funcional usando JAVA. 1997. Universidade Federal do Rio Grande do Sul – Instituto de Informática. (disponível em: (http://www.lume.ufrgs.br/handle/10183/20923 acesso em 15/04/2012). Koscianski, A.; Soares, M. dos S. Qualidade de software: aprenda as metodologias e técnicas mais modernas para o desenvolvimento de software. 2ª ed. – São Paulo: Novatec Editora, 2007. Lopes, M. A.; Vieira, P. de F.; Castro Neto, P. C.; Malheiros, E. B. Desenvolvimento de um Sistema Computacional para Dimensionamento e Evolução de Rebanhos Bovinos. Rev. Bras. Zootec. [online]. 2000, vol.29, n.5 [citado 2012-05-31], pp. 1511-1519. (disponível em: (http://www.scielo.br/pdf/rbz/v29n5/5676.pdf acesso em 15/04/2012). Marion, J. C.; Segatti, S. Sistema de gestão de custos nas pequenas propriedades leiteiras. 2006. Artigo - Faculdade de Economia e Administração da Universidade de São Paulo e Pontífice Universidade Católica de São Paulo. (disponível em: (http://www.custoseagronegocioonline.com.br/numero1v3/Custos%20do%20leite.pd f acesso em 10 /09 /2011). Mouta, A. E. B. Dominando o OpenSwing. – 1ª. ed. – Rio de Janeiro : Editora Ciência Moderna Ltda., 2010. Oliveira, E. G. Deral (Departamento de Economia Rural)/Seab (Secretaria da Agricultura e do Abastecimento do Paraná) – Núcleo de Laranjeiras do Sul - Paraná. 2012. Ricarte, I. L. M. Programação orientada a objetos: uma abordagem com JAVA. 2001. Departamento de Engenharia de Computação e Automação Industrial - Faculdade de Engenharia Elétrica e de Computação Universidade Estadual de Campinas. (disponível em: (http:// www.dca.fee.unicamp.br/cursos/PooJava/Aulas/poojava.pdf acesso em 10 /09 /2011). Segala, C. Z. S.; Silva, I. T. da S. Apuração dos custos na produção de leite em uma propriedade rural do município de Irani-SC. 2007. Artigo - Universidade do Contestado (disponível em:(http://www.custoseagronegocioonline.com.br/numero1v3/Custos%20do%20leit e.pdf acesso em 10 /09 /2011). Apêndice A Questionários Questionário destinado a produtores e equipe técnica. 1. São utilizadas ferramentas tecnologias para o gerenciamento da propriedade? Caso sim quais? 2. Quais os pontos mais importantes da propriedade? 3. Quem é responsável pela administração da propriedade? 4. Existe alguma empresa terceirizada que auxilia na administração? Justifique? 5. Existe na propriedade algum controle do rebanho? 6. Existe controle quanto à alimentação fornecida ao rebanho? 7. Quais os pontos que um software para gestão de pequenas propriedades deve atender? (destinada somente a equipe técnica). 8. Quais as principais dificuldades em auxiliar essas propriedades? (destinada somente a equipe técnica). Questionário destinado ao Deral/Seab. 1. O que inviabiliza a gestão de custos das pequenas propriedades leiteiras? 2. As propriedades leiteiras fazem a gestão adequada das mesmas? 3. Quais as principais dificuldades em auxiliar essas propriedades? 4. Essas propriedades possuem condições financeiras para pagar empresas de gestão? 5. A grande maioria das propriedades leiteiras da região tem base na agricultura familiar? 6. Os produtores em sua maioria possuem um controle do que são custos de produção e custos pessoais? 7. Os produtores em sua maioria utilizam – se de ferramentas tecnologias para auxiliar na gestão do processo produtivo? Apêndice B Diagrama do Banco de Dados Apêndice C Triggers Tabela de Inseminação CREATE TRIGGER insere_inseminacao AFTER INSERT ON inseminacao -- atualiza o estoque de sêmen na inserção de uma nova inseminação CREATE TRIGGER atualiza_inseminacao AFTER UPDATE ON inseminacao -- gerencia a troca de sêmen na atualização da tabela inseminacao -- gerencia a inserção de 9 meses na previsão de parto da gestação, com base na data de constatação -- insere nova gestacao caso ainda nao exixta CREATE TRIGGER exclui_inseminacao AFTER DELETE ON inseminacao -- excluindo a inseminação, gerenciando o estoque de sêmen Tabela de Descartes CREATE TRIGGER cria_descartes AFTER INSERT ON descartes -- atualiza o status da matriz assim que e inserido um descarte CREATE TRIGGER atualiza_descartes AFTER UPDATE ON descartes -- atualizar o status das matrizes quando e atualizado o descartes CREATE TRIGGER exclui_descartes AFTER DELETE ON descartes -- criando trigger para atualizar o status da matriz assim que exclui o descarte Tabela de Tratos CREATE TRIGGER insere_trato AFTER INSERT ON trato -- atualiza o estoque de alimentos na inserção de um novo trato CREATE TRIGGER atualiza_trato AFTER UPDATE ON trato -- gerencia a troca de alimentos na atualização da tabela trato CREATE TRIGGER exclui_trato AFTER DELETE ON trato -- excluindo a trato, gerenciando o estoque de alimentos Apêndice D Diagrama de Casos de Uso Alimentação Alimentos Descartes Gestação Inseminação Lactação Manter. Este e usado pelas seguintes tabelas: temperatura, pluviometro, clientes, fornecedores, veterinários, motivo_descarte, destino_descarte, nutrientes e racas Matrizes Sêmen Trato Apêndice E Diagrama de Classes Pacote Controller Pacote VO Todos os atributos das classes contidas nesse pacote possuem um método get e set. Apêndice F Diagrama de Sequência Anexo A Rendimento da produção leiteira em 10 dos 20 municípios estudados, período de 2004 a 2011 Anexo B Rendimento de todas as culturas agrícolas de 10 dos 20 municípios estudados, ano de 2010