12 1 INTRODUÇÃO A agricultura representa o norte da economia brasileira. Este setor responde por mais de um terço do Produto Interno Bruto (PIB) nacional, o que lhe garante uma posição de vanguarda no desenvolvimento do país. Espera-se que o Brasil se torne a grande potência exportadora do novo milênio, como tem sido os Estados Unidos nos últimos cem anos e buscar essa meta será, sem sombra de dúvidas, o grande desafio de todos aqueles que estão envolvidos com esse segmento da economia – agricultores, universitários, pesquisadores e, especialmente, a classe política e a própria sociedade brasileira (SILVA, 2010). Neste cenário, a gestão da informação assume de forma crescente um papel fundamental no seio das organizações empresariais, permitindo o seu emprego melhorar a eficiência da utilização dos recursos e atingir níveis de desempenho mais elevados. A aplicação de sistemas de informações, cobrindo as diversas áreas da produção agrícola (preparo do solo, plantio, operações de campo como aplicação de defensivos e fertilizantes, estoque de insumos e materiais), faz com que a gestão se torne mais flexível e proativa, sendo promotora da obtenção de vantagens competitivas permitindo, quando bem utilizada, obter ganhos de eficiência inquestionáveis. Por outro lado, as Tecnologias de Informação e Comunicação (TIC), enquanto instrumentos de suporte ao processo de gestão da informação favorecem a adoção e utilização de tecnologias de precisão, como os Sistemas de Posicionamento Global (GPS), os Sistemas de Informação Geográfica (SIG) e as redes de sensores sem fios. Favorece também, à adoção da agricultura de precisão, que permite reduzir os custos, aumentar a produção, ajustar os “inputs” às necessidades do solo e das culturas, aumentar os rendimentos e reduzir os impactos ambientais, no que se convencionou denominar de agricultura de precisão (AJAP, 2007). De fato, na atividade agrícola em particular, a importância que o recurso informação tem vindo a ganhar deve-se, essencialmente, à complexidade de uma atividade onde a incerteza associada à variabilidade climática, à variabilidade das características espaciais e à diversidade das plantas e animais utilizados, é proporcionalmente maior do que outros ramos de atividade. Esta complexidade é ainda acrescida por uma forte regulamentação subjacente ao enquadramento político e legal induzido pelo forte apelo ambiental a que é submetido este setor (idem). A Fazenda Seis Irmãos, localizada no município de Riachão-MA, como o próprio nome já informa, é formada por seis irmãos e suas famílias que vieram, a 28 anos, do estado 13 do Rio Grande do Sul em busca de novas oportunidades. A principal motivação foi o preço baixo e quantidade de terras a disposição na região sul do maranhão. Atualmente, a fazenda possui 6.500 hectares e uma produção de aproximadamente 22 mil toneladas de grãos de soja e milho. Nas últimas décadas devido ao crescimento do agronegócio na região, e da própria Fazenda Seis Irmãos, o modelo tradicional de administração, através das anotações em papel, não suportou o grande volume de informações que deveriam ser geridas, passando a utilizar a tecnologia de informação para apoiar as decisões. Inicialmente foram adotadas planilhas eletrônicas para o controle de todos os processos produtivos e administrativos. Em um segundo momento, no ano de 2006, as planilhas eletrônicas já não conseguiam suprir a complexidade que o negócio exigia, surgindo à necessidade da utilização de softwares específicos para tal. Buscaram-se no mercado diversos softwares para a gestão, que resultassem em um bom custo-benefício, dos quais dois foram testados, mas sem os resultados esperados. Diante destas considerações, teve-se como objetivo desenvolver um protótipo de um Sistema de Informações Web que possibilite a gestão e controle dos processos agrícolas na Fazenda Seis Irmãos, localizada em Riachão-MA. Esta monografia está organizada da seguinte forma: O capítulo 2 trata das características e complexidades da produção agrícola e aborda o planejamento, organização e controle dos processos de produção bem como a situação do mercado de software no agronegócio. O capítulo 3 apresenta uma visão sobre o processo de desenvolvimento de software, o modelo de desenvolvimento ágil e o método Feature Driven Development (FDD) utilizados neste trabalho para o desenvolvimento do software para a gestão da produção agrícola. No capítulo 4 estão descritas as principais tecnologias utilizadas para a implementação como o Framework .NET, a linguagem de programação CSharp (C#) e o framework ASP.NET AJAX Control Toolkit. O capítulo 5 apresenta os materiais e métodos utilizados. O capítulo 6 demostra como o software foi implementado 1 e as suas principais características, assim como algumas considerações acerca da necessidade de seu desenvolvimento. E por fim, no capítulo 7 são apresentadas as conclusões da monografia. 1 O termo implementar e implantar possui significados distintos nas áreas de sistemas de informação e agricultura. Na agricultura "implantar" marca o início (a execução) de uma ação, enquanto "implementar" expressa a continuidade (o prosseguimento). Diz-se que um projeto foi implementado quando já está em funcionamento por mais de um ciclo do processo em que está inserido(uma, safra, por exemplo). Em sistemas de informação a implementação vem primeiro (codificação do software) e em seguida a sua implantação (fase de produção, ou utilização do software pelo cliente). 14 2 GESTÃO DA PRODUÇÃO AGRÍCOLA Desde que o ambiente rural passou a ser investigado com maior interesse, o tradicional setor primário (agricultura – pecuária – extrativismo) tem se transformado em agronegócio (diversificado – moderno – complexo). As propriedades rurais agora são entendidas como organizações agroindustriais. A conotação profissional dada ao termo agronegócio é responsável por uma mudança de paradigma sem precedentes no meio rural e admite a existência de uma série de novas modalidades de empreendimentos. Esta maior complexidade tem exigido a configuração de uma visão sistêmica sobre gestão no agronegócio, que dizem respeito principalmente às suas características de produção (CALLADO, 2009). 2.1 Características da Produção na Agricultura Ao contrário do setor urbano (indústria e comércio), a agricultura sofre a interferência de uma série de fatores que são próprios do setor rural. Assim, a tarefa de produzir alimentos não é uma atividade de fácil execução em qualquer parte do mundo. O setor está sob influência direta de condições que apresentam riscos e incertezas inerentes à atividade agrícola devido às condições do ambiente onde a atividade está inserida. A análise e o conhecimento desse cenário são de suma importância para que o empresário rural possa definir com segurança as estratégias para sua empresa, visando ao uso racional de todos os fatores de produção disponíveis (SILVA, 2010). Mário Otávio Batalha (2007a), coordenador do Grupo de Estudos e Pesquisas Agroindustriais (GEPAI), cita as variações climáticas, à sazonalidade da produção, à perecibilidade2 dos produtos, ao ciclo biológico dos animais e vegetais e ao desempenho natural alcançado no empreendimento como principais dificuldades encontradas na produção. Além destas particularidades, observa-se que a comercialização dos produtos é bastante específica em razão de os preços dos produtos agrícolas, em geral, oscilarem muito em função de pequenas variações na oferta. Todos estes fatores são muitos importantes e praticamente não fazem parte da gestão de outros tipos de empreendimentos. 2 De acordo com o dicionário Houaiss da Língua Portuguesa significa a qualidade ou característica do que é perecível. 15 As variáveis que influenciam sobre a atuação da empresa rural devem ser seriamente analisadas no momento da realização do planejamento agrícola e sua execução. Roni Antônio Garcia da Silva (2010) classifica essas variáveis em incontroláveis e controláveis: Variáveis Incontroláveis a) Do ambiente externo ou macro ambiente i) Legislação; ii) Movimentos demográficos; iii) Movimentos sociais; iv) Desenvolvimento tecnológico; v) Clima (temperatura, umidade relativa, chuvas, secas, geadas etc.); vi) Religião (proibições, dogmas, preconceitos etc.); vii) Questões sobre ecologia (levantadas, por exemplo, por Organizações Não Governamentais – ONGs) e regionalismos. b) Do ambiente operacional i) Fornecedores (de capital, mão-de-obra, insumos etc.); ii) Concorrentes (diretos e indiretos); iii) Clientes; iv) Sindicatos; v) Intermediários (transportadoras, seguradoras, bancos etc.); vi) Grupos regulamentadores (associações etc.) Variáveis Controláveis a) Objetivos empresariais; b) Estrutura da empresa; c) Tecnologia adotada; d) Tarefas a executar; e) Pessoal. Observa-se que as principais dificuldades na produção citadas por Mário Otávio Batalha são classificadas como variáveis incontroláveis e que no planejamento e controle das operações agrícolas todas as ações tomadas visam atingir somente as variáveis controláveis. Portanto, busca-se através de um sistema de informações, quando aplicado, facilitar e otimizar este planejamento e controle. 16 2.2 Planejamento, Organização e Controle das Operações Agrícolas Segundo Mário Otávio Batalha (2007a), Planejamento e Controle da Produção (PCP) é um sistema de informações que se estrutura para obter dados, processá-los e avaliá-los. O planejamento trata de problemas não estruturados de longo prazo, e que dão margem às grandes decisões da empresa, ou seja, as decisões de caráter estratégico, como por exemplo, redução de custos, incorporação de novas tecnologias, aquisição de terras. Já o controle trata dos problemas semiestruturados e estruturados. Os problemas semiestruturados são considerados de médio prazo, e dão margem às decisões de caráter tático, como a quantidade de mão-de-obra necessária para a produção, quantidade mínima em estoque de insumos e produtos e quantidade de máquinas necessárias. Já os problemas estruturados dão origem às decisões de caráter operacional, para aplicação no curto prazo, como a programação do uso de recursos produtivos, detalhando onde, como e quando cada recurso será ou foi utilizado. O planejamento empresarial rural deve ser elaborado levando em conta sempre o conceito de unidade de produção, ou seja, uma área de terra onde se realiza a produção seja ela, uma estância, sítio, chácara, granja, fazenda, ou até mesmo uma simples gleba, e sempre deve buscar aliar os recursos internos e externos de modo a atingir um ponto de equilíbrio entre os dois. O planejamento atua nos três níveis administrativos: Estratégico, gerencial e operacional. No nível estratégico, busca determinar os objetivos da empresa, como por exemplo, aumentar a produtividade de soja de 2.500 kg.ha-1 para 3.000 kg.ha-1. Busca também fazer uma análise interna da empresa e do ambiente, assim como a geração, avaliação e seleção das alternativas estratégicas. O planejamento gerencial tem como responsabilidade fazer o “meio de campo” entre os níveis estratégico e operacional, como gerar a relação custo benefício sobre as decisões estratégicas e impactos no ambiente operacional. No nível operacional o planejamento é totalmente voltado para a empresa em si e se refere a como conduzir cada exploração, como por exemplo, as datas previstas para aplicações de fertilizantes corretivos, quem irá aplica-los, com que máquinas e implementos e a dose do produto (SILVA, 2010). Antes de se efetivar o planejamento, devem-se considerar suas diferentes etapas: implantação; produção e colheita; reposição de recurso e/ou recomposição do solo. Cada uma das etapas tem que ser subdividida em tarefas e para cada tarefa é necessário descrever os recursos de produção necessários, podendo, este processo, ser feito através de um planejamento semanal de atividades (BATALHA, 2007a). 17 Uma vez formulados os planos e os objetivos, a administração deve desenvolver um modo organizado de reunir os recursos físicos e humanos que são essenciais à realização das metas da empresa, assim como controlar os seus resultados. No caso da empresa rural, as organizações mais comumente usadas são por produto (ou atividade) e por base territorial. A por produto consiste em estruturar a empresa por setores (fruticultura, culturas anuais, bovinos, suínos, etc.), enquanto que a organização por base territorial, em fazenda A, fazenda B, fazenda C etc., normalmente encontrada em grandes propriedades (SILVA, 2010). Da mesma forma, o controle pode ser aplicado a todos os níveis de organização escolhida, seja ela, por produto ou por base territorial, pois cabe a ela devolver as informações ao planejamento a fim de que o ciclo administrativo tenha continuidade, de acordo com o que foi planejado. A atividade de controle apresenta quatro fases distintas: estabelecimento de padrões; mensuração do desempenho; comparação do desempenho obtido com o esperado; e ação corretiva, se necessário. Igualmente às demais funções administrativas, o controle pode ser feito em nível estratégico, onde se procura avaliar o desempenho global da empresa (relatórios contábeis, controle de lucros e perdas); gerencial – avalia-se cada unidade, departamento ou divisão; e operacional – cuida-se do nível mais baixo da empresa, dando a cada tarefa uma visão de curto prazo (ibidem). Observa-se que é no controle das operações agrícolas que muitas das tecnologias utilizadas na agricultura atuam, como o recolhimento das informações de produtividade nas máquinas equipadas com o Sistema de Posicionamento Global (GPS), para a elaboração de mapas de produtividade, na análise e correção de solo como o Sistema Inteligente de Apoio à Produção (SAGRI) desenvolvido pela Empresa Brasileira de Pesquisa Agropecuária (EMBRAPA), além de outras tecnologias que atuam em áreas bem específicas como a análise de imagens por satélite para determinar irregularidades de fertilidade de solo e focos de pragas que não podem ser vistas a campo. 2.3 Softwares Aplicados ao Agronegócio A resistência do produtor à adoção de inovações tecnológicas é comum a grande parte dos empreendimentos rurais, mesmo quando estas alterações são técnica ou economicamente necessárias. Esta situação está gradativamente sendo alterada, em razão do crescente nível de exigência dos mercados consumidores formados pela agroindústria e pelos canais de distribuição. A adoção de tecnologia se apresenta como uma necessidade para a permanência na atividade (BATALHA, 2007b). 18 Segundo a Embrapa Informática Agropecuária (2009), através de uma pesquisa realizada com 124 empresas ofertantes de software para a agropecuária, verifica-se que cerca de 88% das empresas estão instaladas nas regiões sul e sudeste, em especial na última, com mais de 63%, conforme Tabela 1. Tabela 1 – Distribuição das Empresas Ofertantes de software para a Agropecuária Segundo Região e Unidade da Federação de Localização da Sede Região Total % Estado % São Paulo 34,7% Minas Gerais 25,0% Sudeste 79 63,7% Rio de Janeiro 2,4% Espírito Santo 1,6% Paraná 12,1% Sul 30 24,2% Rio Grande do Sul 7,3% Santa Catarina 4,8% Mato Grosso 3,2% Mato Grosso do Sul 1,7% Centro-Oeste 9 7,3% Goiás 1,6% Distrito Federal 0,8% Pernambuco 3,2% Sergipe 0,8% Nordeste 6 4,8% Ceará 0,8% TOTAL TOTAL 124 100% 100% Fonte: Embrapa Informática Agropecuária (2009) Observa-se na Tabela 2, que apesar de haver empresas desenvolvedoras de software para o agronegócio em 65 municípios, um quarto delas estão instaladas em apenas quatro municípios e quase metade (49%) em 10 municípios, notadamente no eixo sul-sudeste (com exceção de Recife entre as 10 primeiras), com destaque para o estado de São Paulo, com cinco municípios. O estudo da Embrapa Informática Agropecuária (2009) mapeou um total de 180 empresas no Brasil ofertantes de softwares para o agronegócio, o que representa menos de 2,5% das 7.936 empresas declaradas pela Associação Brasileira das Empresas de Software (ABES) como integrante da indústria de software. Considerando o número de empresas de software mapeadas e a quantidade de estabelecimentos agropecuários identificada no Censo Agropecuário (IBGE, 2006), existem por volta de 25 mil estabelecimentos agropecuários para cada empresa ofertante de software para o agronegócio no Brasil. 19 Tabela 2 – Distribuição das Empresas Ofertantes de Software para a Agropecuária Segundo Município de Localização da Sede. % de Empresas em Município Total de Relação ao Total do % Empresas País Acumulada Viçosa 11 8,9% 8,9% Belo Horizonte 9 7,3% 16,1% São Paulo 7 5,6% 21,8% Campinas 7 5,6% 27,4% Curitiba 6 4,8% 32,3% Piracicaba 5 4,0% 36,3% Porto Alegre 5 4,0% 40,3% Recife 4 3,2% 43,5% São Carlos 4 3,2% 46,8% Ribeirão Preto 3 2,4% 49,2% Goiânia 2 1,6% 50,8% Rio de Janeiro 2 1,6% 52,4% Assis 2 1,6% 54,0% Cuiabá 2 1,6% 55,6% Juiz de Fora 2 1,6% 57,3% Londrina 2 1,6% 58,9% Florianópolis 2 1,6% 60,5% Uberlândia 2 1,6% 62,1% Outros Municípios 47 37,9% 100,0% Fonte: Embrapa Informática Agropecuária (2009) Hoje no mercado, existem diversos tipos de tecnologias aplicadas ao agronegócio, bem como sistemas de planejamento e controle de operações agrícolas, sistemas de controle de frotas, sistemas geográficos de informações, sistemas online de apontamentos de produção, sistemas de manutenção automotiva e industrial, sistemas de custos agrícolas, sistemas de pagamentos de contratos e muitas outras tecnologias de gestão como sistemas Enterprise Resouce Planning (ERP) e os Sistemas Integrados de Gestão Corporativa (SIGC) (PAULINO, 2009). Os 405 softwares declarados pelas empresas no estudo da Embrapa Informática Agropecuária (2009) foram divididos em 4 categorias (Tabela 3), que se subdividem em áreas de aplicação. Como os produtos podem ser aplicados a mais de uma área de aplicação, tal recontagem faz com que a Tabela 3 some mais de 405 softwares. As áreas de aplicação dos produtos listadas na Tabela 3 foram ordenadas segundo aquelas que mais têm softwares declarados pelas empresas, deixando claro que no setor administrativo e gerencial encontramse mais soluções em tecnologia da informação com 363 softwares. 20 Tabela 3 – Distribuição dos Softwares Segundo Categorias e Áreas de Aplicação. Total de Total de Categoria Área de Aplicação Softwares Softwares Administração rural 151 Gerenciamento de insumos 139 Comercialização 113 Base de dados 111 Administração / 363 Gerenciamento Contabilidade 97 Gerenciamento/manutenção de 94 maquinário e equipamentos Gerenciamento de pessoas 64 Rastreabilidade 82 Adubação e calagem 63 GIS/GPS (geoprocessamento) 60 Agricultura de precisão 47 Pós-colheita, processamento e 39 armazenamento Receituário agronômico 39 Manejo florestal/reflorestamento 38 Mecanização 38 Pecuária de precisão 37 Solos (análise química e física) 37 Agrimensura/topologia 35 Controle de Processos Previsão de safra 34 325 e/ou Atividade Rurais Irrigação 31 Manejo ambiental 31 Manejo integrado de pragas 26 Genético 25 Automação agropecuária 24 Inventário florestal 22 Agrometeorologia 20 Instrumentação agropecuária 18 Receituário veterinário 13 Zoneamento agrícola 12 Bioinformática 4 Fitossanidade 4 Fonte: Embrapa Informática Agropecuária (2009) 21 Tabela 3 (Continuação) – Distribuição dos Softwares Segundo Categorias e Áreas de Aplicação. Total de Total de Categoria Área de Aplicação Softwares Softwares Soja 84 Milho 77 Açúcar e álcool 76 Café 71 Frutas 64 Trigo 62 Algodão 62 Feijão 62 Cultivo Vegetal 288 Eucalipto 59 Arroz 58 Sistemas agroflorestais 57 Girassol 50 Hortaliças 48 Mamona 45 Dendê 35 Floricultura 23 Bovinos de corte 66 Bovinos de leite 55 Suínos 40 Ovinos (ovelhas) 30 Caprinos (cabras) 28 Aves 23 Manejo Animal 280 Bubalinos (búfalos) 23 Equídeos (cavalo, burro, jumento, 23 mula) Peixes 14 Frutos do mar (camarão, ostra, etc.) 8 Abelhas 4 Fonte: Embrapa Informática Agropecuária (2009) Destes 405 softwares que compõem os principais utilizados no agronegócio brasileiro se observa ainda que cerca de 35% utilizam a linguagem de programação Delphi e outros 21,1% utilizam Java. É principalmente através destas duas linguagens rodando em interface gráfica (89%) em ambiente Windows (Tabela 4) que são disponibilizadas a maioria das soluções para o agronegócio. Em comparação, os softwares que utilizam interface web, utilizando principalmente ASP e PHP, ocupam 28% dos softwares (EMBRAPA INFORMÁTICA AGROPECUÁRIA, 2009). 22 Tabela 4 - Distribuição dos Softwares Segundo Plataforma Plataforma % dentre os softwares próprios Windows XP 69,1% Windows 2000 62,6% Windows ME 50,4% Windows 98 48,4% Outros 22,6% Linux 13,9% Unix 7,7% MS-DOS 3,9% Free BSD 3,6% OS/2 1,5% Fonte: Embrapa Informática Agropecuária (2009) Há no mercado atualmente uma tendência de migrar diversas aplicações que antes só eram possíveis em nível de desktop para a nuvem, ou melhor, para servidores espalhados pelo mundo e acessíveis via rede mundial de computadores. De acordo com a Associação Brasileira das Empresas de Software (ABES) (2010), a computação em nuvem é umas das grandes tendências dos próximos anos, sendo que a oferta destes serviços deve crescer 45% em 2010 e triplicar nos próximos cinco anos. Esta tendência também deverá atingir o agronegócio, em que os softwares com esta tecnologia, como o proposto por este trabalho, tenderão a ser mais competitivos. Neste cenário, o desenvolvimento de softwares de qualidade passa a ter enorme importância, à medida que a quantidade não supera a qualidade. Para se alcançar a qualidade e suprir as necessidades dos clientes, normalmente são utilizados técnicas e métodos de desenvolvimento que englobam um único conceito chamado de engenharia de software. 23 3 ENGENHARIA DE SOFTWARE A Engenharia de Software se preocupa com o software enquanto produto. Como todo produto industrial, o software tem um ciclo de vida: ele é concebido a partir da percepção de uma necessidade; desenvolvido, transformando-se em um conjunto de itens entregue a um cliente; entra em operação, sendo usado dentro de um algum processo de negócio, e sujeito a atividades de manutenção, quando necessário; é retirado de operação, ao final de sua vida útil (PAULA FILHO, 2009). Todo projeto é iniciado por alguma necessidade do negócio – a necessidade de corrigir um defeito em uma aplicação existente; a necessidade de adaptar um sistema legado para mudar um ambiente do negócio; a necessidade de estender as funções e características de uma aplicação existente; ou a necessidade de criar um novo produto, serviço ou sistema. Efetivamente, a elaboração de software de computador é um processo iterativo de aprendizado, e o resultado, é uma incorporação de conhecimentos coletados, destilados e organizados, à medida que o processo é conduzido (PRESSMAN, 2006). O autor Paula Filho (2009, p. 23) comenta sobre a função do processo na engenharia de software: Em engenharia de software, processos podem ser definidos para atividades como desenvolvimento, manutenção, aquisição e contratação de software. Podem-se também definir subprocessos para cada um desses; por exemplo, um processo de desenvolvimento abrange subprocessos de determinação dos requisitos, análise, desenho, implementação e testes. Em um processo de desenvolvimento de software, o ponto de partida para a arquitetura de um processo é a escolha de um modelo de ciclo de vida ou método de engenharia de software. Um método de engenharia de software é uma abordagem estruturada para o desenvolvimento de software, cujo objetivo é facilitar a produção de software de alta qualidade, apresentando uma boa relação custo-benefício (SOMMERVILLE, 2003). Segundo Figueiredo (2005), a expansão vertiginosa do uso de Sistemas Web na última década e seu uso como ferramenta de negócio colocou grande pressão sobre o desenvolvimento de software, exigindo entrega de resultado tangível cada vez mais rápido, num ambiente altamente instável e dinâmico. Em resposta a essas necessidades, surgiu uma nova classe de metodologias de desenvolvimento de software, conhecidas como Metodologias Ágeis. 24 3.1 Desenvolvimento Ágil A metodologia de desenvolvimento ágil foi utilizada pela primeira vez em 1997, mas só foi lançada em 1999. Mais tarde em 2001, Kent Beck e 16 outros notáveis desenvolvedores, produtores e consultores de software assinaram o “Manifesto para o Desenvolvimento Ágil de Software”, e através deste manifesto eles declararam que estavam descobrindo melhores modos de desenvolvimento de software. Por meio deste trabalho eles ficaram conhecidos como “Aliança Ágil”, sendo que com esta nova metodologia eles passaram a valorizar (MANIFESTO, 2001, on-line): Indivíduos e interações em vez de processos e ferramentas. Softwares funcionando em vez de documentação abrangente. Colaboração do cliente em vez de negociação de contratos. Resposta a modificações em vez de seguir um plano. Isto é, ainda que haja valor nos itens à direita, valorizamos mais os itens à esquerda (idem). Segundo Nascimento (2008), “para um processo ser considerado ágil, ele deve realizar um conjunto de tarefas e seguir disciplinadamente um conjunto de regras, definidas pela metodologia. O não cumprimento dessas premissas, muitas vezes, faz com que um processo deixe de ser ágil para tornar-se “caótico”. Portanto, o termo “ser ágil” não significa negligenciar as atividades de engenharia de software, e sim praticá-las de forma diferente da tradicional”. A Aliança Ágil define 12 princípios para aqueles que querem alcançar agilidade (MANIFESTO, 2001, on-line): 1. Nossa maior prioridade é satisfazer ao cliente desde o início por meio de entrega contínua de software valioso. 2. Modificações de requisitos são bem vindas, mesmo que tardias no desenvolvimento. Os processos ágeis aproveitam as modificações como vantagens para a competitividade do cliente. 3. Entrega de softwares funcionando frequentemente, a cada duas semanas até dois meses, de preferência no menor espaço de tempo. 4. O pessoal de negócio e os desenvolvedores devem trabalhar juntos diariamente durante todo o projeto. 25 5. Construção de projetos em torno de indivíduos motivados. Forneça-lhes o ambiente e apoio que precisam e confie que eles farão o trabalho. 6. O método mais eficiente e efetivo de levar informação para e dentro de uma equipe de desenvolvimento é a conversa face a face. 7. Software funcionando é a principal medida de progresso. 8. Processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante, indefinidamente. 9. Atenção contínua a excelência técnica e ao bom projeto facilitam a agilidade. 10. Simplicidade – a arte de maximizar a quantidade de trabalho não efetuado – é essencial. 11. As melhores arquiteturas, requisitos e projetos surgem de equipes auto organizadas. 12. Em intervalos regulares, a equipe reflete sobre como se tornar mais efetiva, então sintoniza e ajusta adequadamente seu comportamento. Várias foram os modelos ágeis de processo que surgiram, como Extreme Programming (XP), Desenvolvimento Adaptativo de Software (Adaptative Software Development - ASD), Método de Desenvolvimento Dinâmico de Sistemas (Dynamic Systems Development Method - DSDM), Scrum, Crystal, Desenvolvimento Guiado por Características (Feature Driven Development - FDD), Modelagem Ágil (Agile Modeling - AM), entre outros. Há muitas semelhanças (em filosofia e prática) entre essas abordagens. É importante notar que todos os modelos ágeis satisfazem (em menor ou maior grau) ao Manifesto para o Desenvolvimento Ágil de Software e aos 12 princípios da Aliança Ágil (PRESSMAN, 2006). O XP é o processo ágil mais amplamente usado. Organizado como quatro atividades de arcabouço – planejamento, projeto, codificação e testes –, o XP sugere um número de técnicas inovadoras e potentes que permitem a equipes ágeis criar frequentemente versões de software que possuem características e funcionalidades descritas e priorizadas pelo cliente. Trabalha em função de estórias, que são descritas e priorizadas pelo cliente. No momento de sua implementação, a equipe pode fazer estimativas de custo de cada estória e planejar as releases3 e as iterações. Ao final de cada iteração é obtido um feedback do cliente e, com isso, pode-se planejar a próxima iteração. Ao final de cada ciclo é entregue uma versão funcional do software e o planejamento para o próximo release é realizado. A metodologia dá grande importância para testes e integração. Antes de qualquer implementação, um teste automatizado deve ser codificado, para que imediatamente após a codificação de alguma 3 Um realease é um conjunto de iterações responsável pela produção de uma versão do software 26 funcionalidade, ela possa ser validada. Além disso, XP sugere que a integração do sistema seja feita várias vezes ao dia, evitando complicações na hora de integrar as novas estórias desenvolvidas (NASCIMENTO, 2008). O Desenvolvimento Adaptativo de Software (ASD) ressalta a colaboração humana e a auto-organização da equipe. Organizado como três atividades de arcabouço – especulação, colaboração e aprendizado – o ASD é um processo iterativo que incorpora planejamento do ciclo adaptativo, métodos relativamente rigorosos para o levantamento de requisitos e um ciclo de desenvolvimento iterativo que incorpora grupos enfocados nos clientes e revisões técnicas formais como mecanismos de feedback em tempo real. O Método de Desenvolvimento Dinâmico de Sistemas (DSDM) define três diferentes ciclos iterativos – iteração do modelo funcional, iteração de projeto e construção e implementação – precedidos por duas atividades de ciclo de vida adicionais – estudo de viabilidade e estudo de negócio. O DSDM recomenda o uso de cronogramação a cada intervalo de tempo e sugere que, em cada incremento de software, é necessário apenas o trabalho suficiente a fim de facilitar o avanço para o incremento seguinte (PRESSMAN, 2006). A metodologia Scrum sugere a existência de equipes multidisciplinares e autoorganizáveis. Para isso, os indivíduos que compõem as equipes não possuem funções fixas. Todos os membros devem ter uma visão global do projeto e a equipe deve ser capaz de autoorganizar-se para atingir os objetivos pretendidos. O Scrum utiliza um processo que incorpora as seguintes atividades de arcabouço: requisitos, análise, projeto, evolução e entrega. Em cada atividade de arcabouço, as tarefas ocorrem dentro de um processo chamado sprint. O trabalho conduzido dentro de um Sprint (a quantidade de sprints necessária para cada atividade de arcabouço varia dependendo da complexidade e do tamanho do produto) é adaptado ao problema em mãos e é definido e, frequentemente, modificado em tempo real pela equipe Scrum (idem). Segundo Nascimento (2008), Crystal é uma família de processos aplicáveis a diferentes tipos de projetos. A ideia de ter múltiplos processos origina-se do fato de existir projetos que exigem diferentes níveis de controle. A metodologia Crystal funciona adequando-se a criticalidade e tamanho de um projeto, caso esses aspectos variem. Se um projeto aumenta de tamanho ou de nível crítico, mais processos Crystal podem ser adicionados a ele, e vice-versa. Em resumo, a família de processos Crystal pode ser classificada como uma metodologia ágil que possui um ciclo de desenvolvimento incremental, altamente adaptável, podendo adequar-se a diversos tipos e tamanhos de projetos, e altamente escalável, podendo trabalhar com equipes grandes ou pequenas. 27 A Modelagem Ágil (AM) sugere que a modelagem é essencial para todos os sistemas, mas que a complexidade, tipo e tamanho do modelo devem estar sintonizados com o software a ser construído. Por meio da prototipação de um conjunto de princípios de modelagem centrais e suplementares, a AM fornece um guia útil para os profissionais durante as tarefas de análise e do projeto (PRESSMAN, 2006). O Desenvolvimento Guiado por Características (FDD) é algo mais formal do que os outros métodos ágeis, mas ainda mantém a agilidade por concentrar a equipe no conceito de projetar e implementar por funcionalidades. No contexto do FDD, uma característica “é uma função valorizada pelo cliente que pode ser implementada em duas semanas ou menos” (PRESSMAN, 2006 apud DELUCA et al, 1999). Nesta monografia se optou por utilizar e adaptar o método FDD a uma pequena4 equipe de desenvolvimento de modo que as suas etapas sejam acompanhadas de perto facilitando a dispersão de informações a cerca do andamento do projeto e verificação de mudanças e/ou adaptações às funcionalidades. Isto torna as atividades altamente colaborativas, sendo esta uma característica do FDD. O modelo proposto se encaixa perfeitamente ao modelo de negócio dos processos agrícolas sendo divididos em funcionalidades bem definidas e às frequentes adaptações a cada safra, de modo a necessitar de um ciclo contínuo de desenvolvimento através das iterações, que neste caso poderão ser reativadas mesmo depois da funcionalidade ter sido entregue. 3.2 Desenvolvimento Guiado por Características A metodologia de Desenvolvimento Guiado por Características - Feature Driven Development (FDD) foi criada por Jeff De Luca e Peter Code como um modelo prático de processo para engenharia de software orientada a objetos. Mais tarde, Stephen Palmer e John Felsing publicaram uma versão aprimorada e detalhada da metodologia. FDD é uma metodologia ágil voltada a entregas frequentes de versões do software. Para isso, utiliza-se de um processo de desenvolvimento incremental e enfatiza mecanismos de controle e divulgação de informações sobre o projeto (NASCIMENTO, 2008 apud Feature-driven Development Web Site, 2006). Todas as atividades técnicas e gerenciais em FDD baseiam-se em funcionalidades, ou seja, em requisitos do sistema com valor percebido pelo cliente. O planejamento do 4 A equipe de desenvolvimento será formada por apenas três pessoas: Uma pessoa responsável por todos os processos de desenvolvimento e duas para gerar e avaliar as regras de negócio. 28 projeto, a ocupação técnica de atividades, o controle de andamento e divulgação de resultado do projeto se dá através de funcionalidades (FIGUEIREDO, 2005). Segundo Pressman (2006), a ênfase na definição de características fornece os seguintes benefícios: Como as características são pequenos blocos de funcionalidade passíveis de entrega, os usuários podem descrevê-las mais facilmente, entender como elas se relacionam umas com as outras prontamente e revisá-las melhor quanto a ambiguidades, erros ou omissões. As características podem ser organizadas em um agrupamento hierárquico relacionado ao negócio. Como uma característica é um incremento de software passível de entrega do FDD, a equipe desenvolve características operacionais a cada duas semanas. Como as características são pequenas, suas representações de projeto e de código são mais fáceis de inspecionar efetivamente. Planejamento de projeto, cronogramação e monitoração são guiados pela hierarquia de características em vez de por um conjunto de tarefas de engenharia de software arbitrariamente adotado. Os processo proposto por FDD consiste de cinco etapas que cobrem as fases de modelagem e implementação do software. As três primeiras são feitas no início do projeto instituindo um planejamento de nível médio, as duas últimas são repetidas iterativamente para construir o planejado (BASSI FILHO, 2008). As etapas do processo FDD, conforme Figura 1, são: Desenvolver um Modelo Global: Nessa fase, os especialistas do domínio direcionam a atenção para o escopo, o contexto e os requisitos do sistema a ser desenvolvido. Alguns documentos podem ser produzidos, além da visão global do projeto, para auxiliar a elicitação dos requisitos. Em seguida, este modelo é subdividido para que pequenos grupos formados por especialistas de negócio e desenvolvedores abordem cada uma das partes para chegar à modelagem de objetos. Por fim, os objetos são reunidos, revisados e integrados para chegar à versão inicial do modelo de objetos do sistema. Construir uma Lista de Características: Baseado nas explicações dos especialistas de negócio, nos artefatos da especificação e no modelo de objetos criado na fase anterior, é identificada uma lista de funcionalidades com valor de negócio que compreende todo o escopo do projeto. No fim, clientes e usuários revisam e validam a listagem. 29 Planejar por Característica: Visa criar um planejamento de alto nível para todo o projeto. Os gerentes e programadores chefes definem a ordem em que as funcionalidades serão implementadas baseadas no valor de negócios, dependências e volumes de trabalho. As funcionalidades podem ser agrupadas para formar versões potencialmente entregáveis e as classes do modelo atribuídas aos programadores, que passam a ser chamados de donos dessas classes. Projetar por Característica: Os programadores chefes selecionam conjuntos de funcionalidades para formar pacotes de trabalho com duração de dois dias a duas semanas. Para cada pacote de funcionalidades, os programadores donos das classes envolvidas são convocados para integrar a equipe. Dessa forma, diversas pequenas equipes trabalham em paralelo sob o comando de um programador chefe. Se precisar o modelo de objetos é refinado para comportar as funcionalidades de cada pacote. Construir por Característica: Para cada funcionalidade do pacote, a equipe implementa, testa e inspeciona o código. Quando o programador chefe autoriza, as funcionalidades são integradas ao repositório principal e novos pacotes e equipe são formados pelo programador chefe para a próxima iteração. Figura 1: Ciclo de vida de Feature Driven Development Fonte: NASCIMENTO, 2008 apud ABRAHAMSSON et al., 2002. A metodologia de desenvolvimento ágil enfatiza uma abordagem de desenvolvimento simples que incorpora ciclos rápidos de desenvolvimento. Esta metodologia esta sendo utilizada principalmente para a engenharia de sistemas baseados na web. Este tipo de engenharia de software voltada para sistemas web está sendo chamada de WebE (Web Engineering). Processos e métodos como o FDD, e tecnologias web (ferramentas) fornecem uma abordagem em camadas para WebE que é conceitualmente idêntica às camadas de software tradicionais (PRESSMAN, 2006). De certa forma, a Engenharia da Web pode ser considerada como uma subárea independente da Engenharia de Software, responsável pelo 30 estudo de abordagens sistemáticas e quantificáveis aplicadas ao desenvolvimento, operação e manutenção de aplicações Web (ZANIRO, 2008 apud KAPPEL et al., 2006). Depois de escolhidas às metodologias de desenvolvimento, parte-se para a escolha das ferramentas, de maneira mais específica, a linguagem de programação e o ambiente de desenvolvimento. Estas escolhas dependem muito da equipe de trabalho e do ambiente em que o futuro sistema irá operar. 31 4 FERRAMENTAS DE DESENVOLVIMENTO Existem no mercado várias tecnologias para aplicações web como exemplo de tecnologia proprietárias há o ambiente de desenvolvimento Visual Studio, da empresa Microsoft, que já possui integrada o framework .NET e a linguagem C#. Do outro lado, Flex, Java, PHP e Flash são exemplos de tecnologias não proprietárias que se destacam neste ramo. Neste projeto foram utilizadas as tecnologias compatíveis com o ambiente em que o sistema irá futuramente operar. Este ambiente caracteriza-se por ter 100% de seus sistemas operacionais Windows, inclusive os servidores, sendo um deles um servidor web através do Internet Information Services 7.5 (IIS 7.5) rodando pequenas aplicações como uma agenda de tarefas e de telefones. Buscando esta integração e devido à equipe de desenvolvimento já estar familiarizada com tecnologias para esta plataforma, optou-se por utilizar as seguintes ferramentas, sendo elas gratuitas e disponibilizadas pela Microsoft e comunidades paralelas para o desenvolvimento de aplicações web ricas e iterativas: Visual Web Development Express Edition 2008; .NET Framework 3.5; Linguagem de programação C#; ASP.NET AJAX Control Toolkit. 4.1 O Framework .Net Em Junho de 2000 a Microsoft anunciou a sua tecnologia .NET. A ideia básica por detrás desta iniciativa é uma mudança, radical, no modelo de desenvolvimento, comercialização e utilização de Software. A tecnologia .NET é a visão da Microsoft para um mundo em que o software passa a ser comercializado na forma de serviços, os quais são acessados através da Internet, utilizando-se protocolos padrão como Extensible Markup Language (XML) e Simple Object Access Protocol (SOAP). Essa nova perspectiva não é nenhuma novidade ou invenção da Microsoft. Empresas como IBM, Sun e ORACLE possuem suas próprias ferramentas e iniciativas nesta direção, algumas inclusive em estágios bastante avançados de desenvolvimento (BATTISTI, 2001). O .NET Framework tem dois componentes principais: o Common Language Runtime (CLR) (linguagem comum em tempo de execução) e o .NET Framework class library, que 32 inclui o ADO.NET, ASP.NET e o Windows Forms. O CLR é o mecanismo responsável pela execução das aplicações .NET Framework. O CLR suporta C#, assim como outras linguagens de programação da Microsoft. O código gerado pelo compilador para o suporte CLR é chamado de código gerenciado. O Common Language Runtime é o cérebro do .NET Framework. Ele é considerado como o agente que gerencia o código em tempo de execução, provendo serviços como, por exemplo, o gerenciamento de memória. O CLR proporciona: gerenciamento automático de memória; verificação de segurança de tipos; gerenciamento de exceções; segurança aprimorada; acesso a metadados (LOTAR, 2007). As linguagens da Microsoft suportadas pelo CLR são: Visual Basic, C#, Visual C++, Jscript, Visual J#, além de linguagens desenvolvidas por outras empresas como, por exemplo, Perl, C, Java e COBOL. Uma característica interessante do CLR é a interação entre as linguagens. Por exemplo, pode-se desenvolver um componente no Visual Basic e utilizá-lo com C#. Esta é uma característica muito interessante quando se trabalham com equipes que dominam várias linguagens de programação. Cada programador pode trabalhar usando a sua linguagem preferida e, no final, o projeto é integrado como se tivesse sido criado em uma única linguagem (LOTAR, 2007). As aplicações criadas em uma das linguagens habilitadas para o .NET (como VB.NET, C# ou ASP.NET), ao serem compiladas, geram um código intermediário conhecido como Microsoft Intermediate Language (MSIL), o qual é abreviado simplesmente como Intermediate Language (IL). Este código é que é executado pelo CRL conforme Figura 2. Código •ASP.NET •C# •VB.NET Compila MSIL CLR Aplicação Figura 2: Ambiente de execução do CLR Fonte: BATTISTI, 2001 O segundo elemento fundamental do Framework .NET. é o .NET Framework class library (biblioteca de classes do Framework .NET), como o próprio nome sugere, é uma coleção de classes ou tipos completamente integrada com o ambiente de execução – CLR. O Framework .NET é fortemente baseado nos conceitos de orientação a objetos, principalmente nos conceitos de Classes, Herança e Polimorfismo. Ao fornecer um conjunto de classes e tipos, estamos facilitando a vida do programador, uma vez que grande parte da funcionalidade 33 necessária é fornecida diretamente pelo Framework .NET e, o principal, é utilizada de uma maneira padronizada, pois a maneira de utilizar uma classe da biblioteca de classes do .NET é a mesma, independente da linguagem. A Figura 3 representa uma visão geral dos principais elementos que formam o Framework .NET. Figura 3: Visão geral dos principais elementos que formam o Framework .NET Fonte: BATTISTI, 2001 4.2 Linguagem C# C# (C Sharp) é uma linguagem de programação simples, mas poderosa, e ao mesmo, tempo ideal para desenvolver aplicações web com ASP.NET. É uma evolução do C e C++. Além de utilizar muitas características do C++, como, por exemplo, declarações, expressões e operadores, o C# possui um mecanismo chamado Garbage collector (Coletor de Lixo) que gerencia de forma automática a memória utilizada pelas aplicações e facilita o desenvolvimento de aplicações web e de aplicações para desktop (LOTAR, 2007). O C# é uma linguagem orientada a objetos com a qual podemos criar classes que podem ser utilizadas por outras linguagens como, por exemplo, o Visual Basic. Uma característica importante é que ainda é possível utilizar os componentes COM, facilitando assim uma rápida migração para um ambiente de desenvolvimento de alto nível sem precisar reescrever todas as aplicações que você possui (LOTAR, 2007). Por ser uma linguagem orientada a objeto, existe a capacidade de uma classe herdar certas características ou métodos de outras classes, sejam elas escritas em C# ou em VB. Todos os programas desenvolvidos devem ser compilados, gerando um arquivo com a 34 extensão DLL ou EXE. Isso torna a execução dos programas mais rápida se comparados com as linguagens de script (VBScript, JavaScript) que atualmente utilizamos na internet (LOTAR, 2007). 4.3 ASP.NET AJAX Control Toolkit A revolução na internet que acompanhamos nesses últimos 2 anos, com sites cada vez mais interativos e funcionais, se deve muito a expansão da utilização do conceito de Asynchronous Javascript And XML (AJAX) . A popularização da metodologia que utiliza técnicas javascript para realizar operações interativas como um sistema desktop tornou possível sistemas completos de empresas irem totalmente para grande rede (PEREIRA, 2010). O ASP.NET AJAX Control Toolkit é um projeto open-source construído em cima da estrutura do ASP.NET AJAX da Microsoft. É um esforço conjunto entre a Microsoft e a comunidade ASP.NET AJAX que fornece uma poderosa infraestrutura de controles reutilizáveis, personalizáveis e extensíveis do ASP.NET AJAX, bem como uma rica variedade de extensões para controles que podem ser utilizados para criar um experiência Web mais interativa (COMUNIDADE ASP.NET AJAX, 2010). 35 5 MATERIAL E MÉTODOS O trabalho foi desenvolvido na Fazenda Seis Irmãos, localizada no município de Riachão – MA. Para a pesquisa foi utilizado como meio técnico de investigação, o método observacional, através do nível de pesquisa exploratório, utilizando o delineamento da pesquisa documental. De acordo com Gil (1999) o delineamento da pesquisa documental, difere da pesquisa bibliográfica devido à pesquisa documental valer-se de materiais que ainda não receberam tratamento analítico, podendo ser reelaborados de acordo com o objetivo da pesquisa. Para o desenvolvimento do sistema foi utilizado Desenvolvimento Ágil5 como modelo de processo de Engenharia de Software que enfatiza uma abordagem de desenvolvimento simples e incorpora ciclos rápidos de desenvolvimento. De acordo com esse modelo, escolheu-se, o Desenvolvimento Guiado por Características (Feature Driven Development - FDD) como método, sendo que o mesmo busca entregar novas funcionalidades ao cliente em no máximo a cada duas semanas. Foram realizadas as seguintes atividades: Formulação e Coleta de requisitos – Foram coletadas todas as informações através de entrevista não estruturadas, ou melhor, entrevistas informais com os responsáveis pela gerência e operacionalização da Fazenda Seis Irmãos para cada característica desejada de modo a montar um modelo global do sistema. A entrevista informal é aquela menos estruturada possível e só se distingue da simples conversação porque tem como objetivo básico a coleta de dados. O que se pretende com este tipo de entrevista é a obtenção de uma visão geral do problema pesquisado (GIL, 1999); Projeto – Para cada característica formulada foram elaborados os casos de uso. Foi também elaborado o diagrama de entidade-relacionamento, utilizado para implementação do banco que persiste os dados, e as classes do sistema; Implementação do sistema – Foram utilizadas as seguintes tecnologias: o A linguagem C#, plataforma ASP.NET e a ferramenta Visual Web Development Express Edition para o desenvolvimento da aplicação web; o O banco de dados utilizado para a persistência dos dados é o MySQL 5 x64; 5 Manifesto para o Desenvolvimento Ágil de Software. Disponível em: < http://www.manifestoagil.com.br/ >. Acesso em: 06/06/2010. 36 o MySQL Connector 6.2.3 para a ligação entre o banco MySQL e o servidor web e o ambiente de programação Visual Studio; o O servidor web é o Internet Information Server 7.5 (IIS 7.5) rodando em um servidor com sistema operacional Windows Server 2008 SP2. Coleta de dados e avaliações do software – Foram realizadas avaliações com os funcionários da Fazenda Seis Irmãos ao ser entregue cada característica formulada, através de questionário dirigido, que avaliam as funcionalidades e a interface do sistema. Após estas avaliações foram feitas as modificações necessárias às características buscando a qualidade final do software, sendo que após serem feitas as modificações foram realizadas novamente as avaliações, até que a característica fosse aprovada pelo usuário final. 37 6 DESENVOLVIMENTO Baseado na metodologia de desenvolvimento ágil buscou-se adaptar o modelo FDD para um modelo onde se tem uma equipe muito pequena de desenvolvimento, sendo formada por uma pessoa responsável por todas as fases de desenvolvimento e duas responsáveis pelas regras de negócio, que são os gerentes da Fazenda Seis irmãos. O processo de desenvolvimento se iniciou em maio de 2010, sendo primeiramente desenvolvido um modelo global do sistema que representa a primeira etapa do modelo FDD. 6.1 Modelo Global do Sistema . Para o desenvolvimento do modelo global foram realizadas entrevistas informais ou não estruturadas com os gerentes e responsáveis por administrar a Fazenda Seis Irmãos e se registrou a necessidade das seguintes funcionalidades: Cadastro de Pessoas Físicas e Jurídicas; Cadastro de Funcionários; Cadastro de Fazendas e Matrículas; Cadastro de Safras; Cadastro de Talhões; Cadastro de Espécies; Cadastro de Variedades; Cadastro de Máquinas e Implementos; Cadastro de Marcas/Fabricantes; Cadastro de Unidades de Medida; Cadastro de Armazéns; Cadastro de Frota de Veículos; Cadastro de Bairros, Cidades e Estados; Cadastro de Peças e Materiais; Controle de Entrada e Saída de Peças e Materiais; Controle de Entrada e Saída de Equipamentos de Proteção Individual (EPI’s) e Ferramentas de Funcionários; Cadastro de Insumos e Produtos; Controle de Entrada e Saída de Insumos e produtos em Estoque; 38 Cadastro de Contratos; Controle de quantidade de Produtos entregues em cada contrato; Histórico de Cotações do Dólar e da soja conforme bolsa de Chicago; Controle da Pluviometria; Controle das Operações de Campo; Controle das Avaliações de Campo (Pragas, doenças, população de plantas); Manutenção de Máquinas e Equipamentos; Campos de Produção (Quais culturas em qual talhão); Planejamento das Operações de Campo; Anexar os Documentos de campo (Mapas de aplicação, produtividade, croquis); Gerar Projeto Técnico; Controle de Usuários; Permissões dos usuários por Perfis; Fazer o rastreamento interno de todos os processos dos Campos de Produção. Neste momento buscou-se compreender exatamente todas as funcionalidades que o protótipo deveria executar aliando o conhecimento do negócio dos gerentes e administradores com as possibilidades de desenvolvimento avaliadas pelo responsável pelo protótipo. Neste momento foram criados os documentos de requisitos já os separando em oito grupos ou módulos: Cadastros; Almoxarifado; Estoque; Comercialização; Produção; Planejamento; Sistema; Rastrear. Todos os documentos de requisitos foram elaborados utilizando o modelo do Apêndice A, que representa o documento de requisitos gerais do sistema. 6.1.1 Cadastros O documento de requisitos do módulo de cadastro foi o primeiro documento a ser criado, pois as informações de cadastro normalmente são utilizadas por todo o sistema e desta forma se tornou pré-requisito para as outras funcionalidades. Ao todo, foram gerados 72 requisitos que podem ser observados no apêndice C. Na sua primeira versão foram descritos os requisitos do cadastro de: Pessoas Físicas e Jurídicas: Cadastro de todas as pessoas do sistema, sendo estes utilizados como fornecedores, clientes e funcionários, sendo necessária a validação de CPF ou 39 CNPJ. Ficou definido que a validação desta informação seria realizada somente através de um algoritmo de validação numérica6. Funcionários: Vinculado ao cadastro de pessoas, ou seja, necessariamente para se cadastrar um funcionário o mesmo deve estar cadastrado como uma pessoa física e também possui as funções de admissão e demissão. Fazendas: Cadastro das fazendas indicando a cidade e estado. Matrículas: As matrículas são registros legais das delimitações das áreas das fazendas e proprietários. Este cadastro é vinculado às fazendas. Safras: Correspondente ao cadastro dos ciclos de produção das espécies. Talhões: Cadastro das áreas que são delimitadas dentro de uma fazenda sendo destinadas à produção. Espécies: Cadastro de espécies de plantas, pragas, doenças, ou seja, todos os tipos de espécies animais e vegetais ligados à produção. Variedades: Cadastro de variações de uma mesma espécie com características melhoradas, como maior produtividade, adaptação ao clima do norte/nordeste, etc.. Unidades de Medida: Cadastro de unidades de medida para serem usadas pelo sistema para ter controle de medidas. Tabela de Equivalência entre Unidades: Cadastro de equivalência entre unidades de medida para ser usado pelo sistema para converter valores e facilitar a visualização. Armazéns: Cadastro de locais onde a produção estará armazenada e quantidade suportada pelo local. Bairros, Cidades e Estados: Cadastro de todas as cidades, estados e bairros; Veículos: Cadastro de veículos com seu peso de balança padrão permitido pela legislação, se houver. Motoristas: Cadastro de motoristas vinculando os mesmos aos veículos e às pessoas físicas. Máquinas e Implementos: Cadastro de todas as máquinas e implementos ligados à produção, tanto de propriedade própria como de terceiros, no caso de aluguel. Marcas/Fabricantes: Cadastro de marcas e fabricantes para serem utilizados pelo sistema para os cadastros de máquinas e implementos, veículos, peças e materiais. 6 Algoritmos disponibilizados no website da empresa RA Digital Solutions: Algoritmo do CPF: http://www.rads.com.br/javascript_main.php?m=1&id=6 Algoritmo do CNPJ: http://www.rads.com.br/javascript_main.php?m=1&id=7; 40 6.1.2 Sistema O segundo documento de requisitos a ser elaborado, em paralelo ao documento de requisitos de cadastro, diz respeito ao módulo de administração do sistema conforme apêndice A. Neste documento, que possui nove requisitos funcionais e quatro não funcionais, estão descritos como o sistema irá fazer a administração de usuários e suas permissões. Será utilizado inicialmente um nível de segurança básica, com somente o uso de um login e senha para cada usuário e sendo atribuído este login e senha a um funcionário cadastrado. As permissões serão concedidas através do perfil do usuário, sendo que a definição de quais serão as permissões só serão estabelecidas na segunda versão do protótipo. Portanto, nesta versão todos os usuários são considerados administradores e tem acesso irrestrito a todas as funcionalidades. 6.1.3 Almoxarifado Posteriormente foi elaborado o módulo de almoxarifado, conforme apêndice B, com 22 requisitos que descrevem as funções de cadastro de peças e materiais e a entrada e saída das mesmas no almoxarifado. Como requisito, para facilitar a manipulação destas peças e materiais elas devem ser classificadas em grupos e subgrupos, por exemplo: um filtro responsável por filtrar o ar que irá ser misturado ao combustível no processo de combustão necessária para gerar o movimento de um trator, pode ser classificado no grupo de “Filtros” e subgrupo de “Filtros de ar”, paralelamente existem filtros de combustível, de óleo hidráulico e outros que também podem ser classificados em subgrupos. O mesmo acontece com ferramentas de trabalho, que podem ser classificadas e agrupadas da maneira que o cliente achar necessário. O documento de requisitos do módulo de almoxarifado também contempla a função de controle de equipamentos de proteção individual (EPI´s) e ferramentas entregues e devolvidas aos funcionários, assim como o estado de conservação das mesmas. Como requisito, esta função está integrada com a entrada e saída de peças e materiais do almoxarifado, de maneira que se tenha o total controle da entrada e saída das mesmas, assim como as datas e quantidades por funcionário. 41 6.1.4 Estoque O quarto documento de requisitos, que descreve o módulo de estoque, foi elaborado em duas partes: a primeira descreve o estoque de insumos utilizados na produção e a segunda diz respeito ao estoque da produção, cada uma com 11 requisitos cada, conforme apêndice E. O estoque de insumos contém os requisitos referentes ao cadastro dos insumos e sua entrada e saída em estoque. Da mesma forma que as peças e materiais, os insumos também podem ser classificados em grupos e subgrupos, como por exemplo, os agrotóxicos utilizados para o controle de ervas daninhas seletivas às gramíneas podem ser classificados no grupo “Herbicidas” e no subgrupo “Graminicidas”. A segunda parte do módulo de estoque descreve as entradas e saídas da produção, sendo que todas as entradas de produção em estoque têm como origem um ou mais campos de produção, e como destino um armazém próprio. E toda saída de produção em estoque deve pertencer a um ou mais contratos de venda de produção. Outra funcionalidade descrita pelo módulo de estoque da produção é o cadastro de tabelas de desconto por empresa compradora e espécie, utilizada para calcular os descontos como umidade, impureza, avariados, partidos e quebrados e esverdeados de cada carga da produção. As possibilidades de dividir uma carga vinda da lavoura em mais de um campo de produção e em mais de um contrato de venda tem por objetivo sanar as duas deficiências encontradas em um dos softwares testados pela Fazenda Seis Irmãos, o Prorural. Este por sua vez não possibilitava esta divisão tendo como resultado um engessamento das entradas e saídas da produção e aumento do erro no cálculo da produtividade por talhão no momento em que ocorria a situação de um caminhão carregar em dois talhões diferentes para formar uma carga. Outra deficiência sanada diz respeito ao calculo dos descontos neste software, pois o mesmo só possui o cadastro das tabelas por espécie, desconsiderando a empresa. Este fato traz enormes problemas, pois cada empresa utiliza uma tabela de descontos diferente fazendo com que estas tabelas por espécies não sirvam para calcular os descontos. 6.1.5 Planejamento O documento de requisitos do módulo de planejamento, quinto documento de requisitos elaborado, conforme apêndice G possui quatro subitens: campos de produção, documentos de campo, operações de campo e projeto técnico. No subitem campos de produção, com sete requisitos, está descrito a funcionalidade de cadastro dos campos de produção, que tem como conceito, uma área definida e delimitada dentro de um talhão 42 pertencente a uma fazenda, na qual será cultivada uma única espécie com uma única finalidade. Como requisito, este campo de produção foi designado através de um código que referencia todas estas informações. Por exemplo: Em uma fazenda chamada Fazenda Seis Irmãos, de sigla F6, com um talhão numerado em 01, na safra 2010/2011, que cultivou a espécie soja com a finalidade de venda de grãos, pode ter como designação do campo de produção o código “SOJA:S1011:T01:F6”, em paralelo na mesma fazenda podemos ter na mesma safra, no mesmo talhão a delimitação de duas ou mais áreas para ser realizado um teste com variedades diferentes teríamos vários códigos: “TESTE1:S1011:T01:F6”, “TESTE2:S1011:T01:F6”, “TESTE3:S1011:T01:F6” e ainda o restante da área do talhão com “SOJA:S1011:T01:F6”. Esta nomenclatura facilita o controle de todas as operações agrícolas realizadas, pois utiliza um único código de referência centralizando as informações. O conceito de campos de produção é utilizado pelo sistema principalmente para rastrear todas as informações de um campo no módulo de rastreabilidade e pode ser totalmente retratado e comparado à produção de sementes, onde há a necessidade de se isolar todos os campos de produção para ter controle específico e rígido dos seus processos e não ocorrer mistura varietal, que pode inviabilizar totalmente o campo de produção. No subitem de operações de campo no módulo de planejamento, estão descritos os requisitos referentes ao cadastramento das operações agrícolas para um campo de produção, na qual são cadastradas todas as operações, com suas datas e insumos previstos para serem utilizados. Por exemplo, neste módulo o usuário poderá inserir as operações de plantio, aplicação de fertilizantes, herbicidas, inseticidas, gradagem do solo e etc., para um campo de produção, assim como os produtos, doses e datas previstas que deverão ser utilizados no tratamento de sementes ou no controle de insetos e pragas. Tem por objetivo simular e facilitar o levantamento da quantidade de insumos a serem orçados e comprados e possui nove requisitos que o descrevem. Para facilitar a visualização de todas as operações de campo planejadas foi adicionada a funcionalidade de gerar um projeto técnico de um campo de produção, que corresponde ao subitem do projeto técnico. Neste subitem está descrito em quatro requisitos a funcionalidade de filtrar todas as informações a cerca das operações de campo planejadas e dos insumos e doses recomendadas para um campo de produção para que os operadores e técnicos responsáveis pela produção possam visualizar de forma simples e resumida as atividades que devem ser realizadas em campo. Outro subitem do módulo de planejamento é o de documentação de campo, com nove requisitos descritos. Neste subitem do documento de requisitos do módulo de 43 planejamento é apresentada a funcionalidade de salvar no sistema, ou melhor, fazer um upload dos arquivos que correspondem ao mapa de aplicação7 e mapa de produtividade8 de um campo de produção para serem acessadas por todos os usuários com permissão para isso. Estes tipos de arquivos normalmente são utilizados por fazendas que se beneficiam da agricultura de precisão. No subitem de documentos de campo também há a possibilidade de salvar arquivos referentes a manuais de máquinas e implementos e/ou outros arquivos que o usuário do sistema achar relevante. 6.1.6 Produção O sexto documento de requisitos elaborado, que são os requisitos do módulo de produção, possui quatro subitens que descrevem as operações de campo realizadas, as avaliações de campo, as manutenções em máquinas e implementos e a pluviometria, conforme Apêndice F. Do mesmo modo que as operações de campo planejadas, as operações de campo realizadas descrevem a maneira como o usuário cadastra e edita as operações de campo realizadas e seus insumos. O subitem avaliações de campo descreve em 12 requisitos a funcionalidade de controlar as avaliações de pragas, doenças, população de plantas e ervas daninhas, tendo como função o seu cadastro por amostras, ou seja, o funcionário irá no campo e levantará os resultados de várias amostras por campo de produção e o sistema irá calcular a média das amostras por parâmetro avaliado. Outro subitem encontrado no documento de requisitos do módulo de produção diz respeito à manutenção de máquinas e implementos, onde é descrito em nove requisitos, o cadastro de manutenções em máquina e/ou implementos assim como os materiais utilizados em cada manutenção e os responsáveis pela execução da manutenção. Este módulo é integrado com o módulo de almoxarifado de modo a permitir o controle de todas as entradas e saídas do mesmo. O último subitem encontrado e descrito pelo módulo de produção é a funcionalidade de controle da pluviometria. Esta funcionalidade está descrita em seis requisitos e tem por 7 Um mapa de aplicação é um arquivo eletrônico utilizado por um sistema de agricultura de precisão para realizar a aplicação de fertilizantes a um campo de produção utilizando taxas variadas do produto. 8 Um mapa de produtividade é um arquivo eletrônico gerado por sistemas embarcados em colheitadeiras que representam a mapa em gradiente da produtividade alcançada em um campo de produção. 44 finalidade cadastrar pluviômetros, talhões a serem monitorados, as ocorrências das chuvas por pluviômetro e a geração de gráficos temporais das chuvas. 6.1.7 Comercialização O documento de requisitos de comercialização, conforme apêndice D descreve os requisitos de cadastro de contratos de venda da produção, no qual são definidas as quantidades vendidas de cada produto para cada empresa. Outra funcionalidade diz respeito a manter um histórico de cotações do dólar que será utilizado pela tabela de equivalência pelo sistema para simular, por exemplo, o valor do preço do saco de soja atualizado para reais. Servirá também para consultar os valores do dólar no dia do fechamento de um contrato, sendo esta informação de grande importância no momento da comercialização dos produtos. Nos requisitos deste módulo também está descrito a necessidade de visualizar as cotações da soja na bolsa de Chicago assim como suas previsões para os períodos subsequentes, não sendo necessário a sua persistência no banco de dados. 6.1.8 Rastrear E por fim, o último documento de requisitos referente à rastreabilidade, que descreve em dois requisitos funcionais a característica de rastrear os campos de produção correlacionando todas as informações planejadas e realizadas do campo, como operações de campo, doses e produtos utilizados, a fim de obter um comparativo simples da situação de cada campo de produção no final do ciclo de produção. Este documento pode ser visualizado no apêndice H. 6.2 Lista de Características Com o modelo global do sistema realizado, se iniciou a segunda etapa da metodologia, que é a criação de uma lista de características. Esta lista foi ordenada hierarquicamente com base primeiramente nas dependências entre as funcionalidades e em segundo plano o valor de negócio da característica e ficou definida da seguinte forma: 1. Módulo de Cadastro 1.1. Estados 1.2. Cidades 45 1.3. Bairros; 1.4. Pessoas Físicas e Jurídicas; 1.5. Funcionários; 2. Módulo do Sistema 2.1. Cadastro de Perfis; 2.2. Cadastro de Usuários; 3. Módulo de Cadastro 3.1. Safras; 3.2. Fazendas; 3.3. Matrículas; 3.4. Talhões; 3.5. Unidades de Medida; 3.6. Tabela de Equivalência; 3.7. Simulação de Conversão entre Unidades de Medida; 3.8. Grupos de Espécies; 3.9. Famílias de Espécies; 3.10. Espécies 3.11. Detentores/Mantenedores de Variedades; 3.12. Hábitos de Crescimento de Variedades; 3.13. Cores de Hilo de Variedades; 3.14. Cores de Inflorescência de Variedades; 3.15. Variedades; 3.16. Marcas e Fabricantes; 3.17. Grupo de Máquinas e Implementos; 3.18. Máquinas e Implementos; 3.19. Tipos de Veículos; 3.20. Veículos na Frota; 3.21. Motoristas de Veículos da Frota; 3.22. Armazéns; 4. Módulo de Almoxarifado 4.1. Cadastro de Grupo de Peças/Materiais; 4.2. Cadastro de Subrupo de Peças/Materiais; 4.3. Cadastro de Peças/Materiais; 4.4. Controle de Peças/Materiais em Almoxarifado; 46 4.5. Controle de EPI’s e Ferramentas de Funcionários; 5. Módulo de Estoque 5.1. Cadastro de Grupos de Insumos; 5.2. Cadastro de Subgrupos de Insumos; 5.3. Cadastro de Insumos; 5.4. Controle de Insumos em Estoque; 6. Módulo de Planejamento 6.1. Cadastro de Campos de Produção; 6.2. Cadastro de Tipos de Operação de Campo; 6.3. Cadastro de Operações de Campo Planejadas; 6.4. Geração do Projeto Técnico; 7. Módulo de Produção 7.1. Cadastro de Operações de Campo Realizadas; 7.2. Cadastro de Avaliações de Campo; 7.3. Cadastro de Amostras de Avaliações de Campo; 7.4. Cadastro Tipos de Manutenção em Máquinas e Implementos; 7.5. Cadastro de Manutenção em Máquinas e Equipamentos; 7.6. Cadastro de Pluviômetros; 7.7. Cadastro de Talhões Monitorados; 7.8. Controle de Ocorrências de Chuvas; 7.9. Geração de Gráficos Temporais de Chuvas; 8. Módulo de Comercialização 8.1. Cadastro de Contratos de Venda da Produção; 8.2. Busca e Atualização de Valores do Dólar e Soja de Chicago; 8.3. Geração de Gráficos do Dólar 9. Módulo de Estoque 9.1. Controle das Tabelas de Descontos; 9.2. Controle de Estoque de Produção; 10. Módulo de Rastreabilidade 10.1. Geração de Rastreabilidade de Campos de Produção; 11. Módulo de Planejamento 11.1. Upload de Mapas de Aplicação; 11.2. Upload de Mapas de Produtividade; 11.3. Upload de Manuais de Máquinas e Implementos; 47 11.4. Upload de Outros Arquivos; Outra atividade desta etapa do método FDD diz respeito à divisão destas funcionalidades a pequenos grupos. Em cada grupo deverá existir um dono da classe, ou melhor, da funcionalidade. O dono de classe é um membro de uma equipe sob o comando de um programador chefe e está responsável pela arquitetura, implementação, teste e documentação de uma determinada classe. Em cada iteração fará parte das equipes cujas funcionalidades envolvam a sua classe. Mas, este tipo de abordagem diz respeito a uma equipe de desenvolvimento com vários integrantes, o que não é o caso deste projeto. A lista de características elaborada, antes de prosseguir para a próxima etapa, foi revista e confirmada pelo cliente, ou seja, pelos gerentes de negócio da Fazenda Seis Irmãos. 6.3 Planejamento por Característica Para refinar as funcionalidades do software foram desenvolvidos os casos de uso e diagrama de entidade-relacionamento. Usando a lista detalhada e ordenada por prioridade, criada no processo anterior foi desenvolvida para cada característica um ou mais casos de uso representando a maneira como o sistema irá interagir com o usuário e processar as informações. Por exemplo, um dos processos críticos, é o cadastro de campos de produção. Há duas possibilidades para isso, uma é a criação de um campo de produção que preencha toda a área de um talhão e a outra é a criação de dois ou mais campos de áreas diferentes na mesma área do talhão. Este processo gerou três casos de uso que podem ser observados abaixo: UC001 – Cadastrar Campo de Produção Descrição: Este caso de uso descreve o processo de cadastro de um campo de produção. Fluxo Principal 1 – O caso de uso se inicia quando um usuário precisar cadastrar um campo de produção no sistema; 2 – O sistema oferece a opção de cadastrar em área total ou em área parcial; 3 – O usuário aciona opção de desejada; 3.1 – Se o usuário acionou a opção de cadastrar em área total (Executa UC002); 3.2 – Se o usuário acionou a opção de cadastrar em área parcial (Executa UC003); Fim do Caso de Uso UC002 – Cadastrar Campo de Produção em Área Total Descrição: Este caso de uso descreve o processo de cadastro de um campo de produção em área total. Fluxo Principal 48 1 – O caso de uso se inicia quando um usuário precisar cadastrar um campo de produção em área total no sistema; 2 – O usuário irá selecionar o talhão desejado; 3 – O sistema buscará as informações de área total; 4 – O sistema irá pedir ao usuário a safra, a espécie, a variedade, a fazenda, o sistema de plantio, a finalidade do campo, o nome do campo de produção, a população de plantas (plantas/m) desejada e as observações; 5 – O usuário insere ou seleciona todos os valores acima citados; 6 – O sistema mostra na tela, a opção de adicionar o campo de produção à base de dados do sistema Rastrear; 7 – O usuário aciona a opção de salvar as informações no sistema (executa FE002); 8 – O sistema monta o código do campo de produção da seguinte forma: Nome do campo + ”:” + safra (usando a terminologia S1011) + “:” + talhão + “:” + fazenda; 9 – O sistema persiste as informações no banco; 10 – O sistema exibe uma mensagem confirmando que o procedimento ocorreu com sucesso. Fim Fluxo de Exceção FE002 – Informações não preenchidas 1 – O sistema exibe uma mensagem de erro ao usuário informando que um dos campos não foi devidamente preenchido; 2 – Retorna ao passo 2 do fluxo principal; Fim do caso de uso UC003 – Cadastrar Campo de Produção em Área Parcial Descrição: Este caso de uso descreve o processo de cadastro de um campo de produção em área parcial. Fluxo Principal 1 – O caso de uso se inicia quando um usuário precisar cadastrar um campo de produção em área parcial no sistema; 2 – O usuário irá selecionar a safra e o talhão desejado; 3 – O sistema buscará as informações de área total e outros campos já cadastrados no talhão; 4 – O sistema irá pedir ao usuário a espécie, a variedade, a fazenda, o sistema de plantio, a finalidade do campo, o nome do campo de produção, a área parcial, a população de plantas (plantas/m) desejada e as observações; 5 – O usuário insere ou seleciona todos os valores acima citados; 6 – O sistema mostra na tela, a opção de adicionar o campo de produção à lista de campos do talhão; 7 – O usuário aciona a opção de salvar as informações no sistema (executa FE002, FE003); 8 – O sistema monta o código do campo de produção da seguinte forma: Nome do campo + ”:” + safra (usando a terminologia S1011) + “:” + talhão + “:” + fazenda; 9 – O sistema persiste as informações no banco; 10 – O sistema exibe uma mensagem confirmando que o procedimento ocorreu com sucesso. Fim Fluxo de Exceção FE003 – Área Ultrapassa área total do Talhão 1 – O sistema exibe uma mensagem de erro ao usuário informando a soma das áreas informada e cadastrada na lista de campos do talhão ultrapassa a área total do talhão; 49 2 – Retorna ao passo 2 do fluxo principal; Fim do caso de uso Observa-se que no item 8 dos casos de uso UC002 e UC003 é feita a montagem do código que representa o campo de produção. Este código é usado para se rastrear cada campo de produção e vincular todas as operações agrícolas, sejam elas planejadas ou realizadas em campo. Traz também a vantagem de facilitar a visualização das informações agregadas como safra, talhão e fazenda e, ao mesmo tempo, manter um histórico de todos os processos. Outro caso de uso interessante é o caso que descreve a inserção de do planejamento de uma operação de campo a um campo de produção. O mesmo foi descrito em três casos de uso: UC031 – Inserir uma Operação de Campo Planejada Descrição: Esse caso descreve o processo em que o usuário irá inserir o planejamento de uma nova operação de campo. Fluxo principal 1 – O caso de uso se inicia quando o usuário acionar a opção de inserir uma nova operação de campo no menu de planejamento onde irão constar as operações com o status “Planejado”; 2 – O usuário irá selecionar a safra, a espécie ou a fazenda; 3 – O sistema irá buscar os campos de produção existentes na safra, ou na espécie, ou na fazenda e exibi-los ao usuário; 2 – O usuário irá selecionar os campos de produção desejados, o tipo de operação (plantio, dessecação pré-colheita, etc.), a forma de operação (terrestre, aérea, etc.), a data prevista para ser executada e as observações; 3 – Com estas informações o sistema calcula o tempo total previsto para aquela operação (UC032) e exibe ao usuário; 4 – O sistema oferece a opção de inserir insumos à operação de campo (UC033); 5 – O sistema oferece a opção de salvar estas informações; 6 – O usuário aciona a opção de salvar; 7 – O sistema salva as informações. Fim do Caso de Uso UC032 – Calcular Duração de Tempo de uma Operação de Campo Planejada Descrição: Esse caso descreve o processo em que o sistema calcula o tempo em que uma operação de campo durará. Fluxo principal 1 – O caso de uso se inicia quando o usuário selecionar o tipo de operação de campo no momento do cadastro de uma operação de campo; 2 – O sistema pega a informação de tamanho da área dos respectivos campos de produção e multiplica pelo rendimento médio do tipo de operação (FE008); 3 – O resultado é exibido ao usuário; Fim FE008 – Rendimento de Operação de Campo Inexistente 1 – O sistema exibe uma mensagem ao usuário que não há nenhum rendimento de campo da respectiva operação selecionada 50 2 – O sistema exibe a opção de alterar Operação de Campo. Fim do Fluxo de Exceção Fim do Caso de Uso UC033 – Inserir Insumos à Operação de Campo Descrição: Esse caso de uso descreve o processo em que o usuário irá inserir insumos a uma operação de campo. Fluxo principal 1 – O caso de uso se inicia quando o usuário acionar a opção de inserir insumos a operação de campo; 2 – O usuário irá selecionar o insumo desejado, a dose e a unidade de medida; 3 – O sistema calcula o total do insumo multiplicando a área total dos campos de produção pela dose informada e exibe ao usuário 3 – O sistema oferece a opção de salvar estas informações; 4 – O usuário aciona a opção de salvar; 5 – O sistema salva as informações. Fim do Caso de Uso Através dos casos de uso UC031, UC032 e UC033 se pode observar que a operação de inserir uma operação de campo planejada ocorre em duas etapas: escolha dos campos de produção e do tipo de operação e inserção de insumos na operação. Desta forma faz-se um link entre todos os insumos necessários para o cultivo do campo de produção podendo assim fazer uma simulação da quantidade necessária de insumos para se adquirir, podendo ser visualizada tanto para o campo de produção como para o talhão, fazenda, espécie ou safra inteira. Portanto, torna-se uma ferramenta de apoio à tomada de decisão. Os casos de uso UC001, UC002, UC003, UC031, UC032 e UC033 representam um exemplo padrão de como foram elaborados todos os casos de uso do protótipo, sendo que outros casos de uso podem ser vistos no apêndice I. Paralelamente aos casos de uso, foi projetado o diagrama de entidade-relacionamento que diz respeito à persistência dos dados, ou seja, como os dados vão estar organizados em tabelas e suas relações no banco de dados. Para isto foi utilizada a ferramenta MySQL WorkBench na sua versão 5.2.15, que facilita a criação e exportação do diagrama diretamente para o bando de dados MySQL na forma de script. Através da Figura 4 se pode observar, por exemplo, os diagramas responsáveis por descrever o modo como os dados referentes à pluviometria vão estar persistidos e relacionados. Nele há cinco tabelas: talhao, talhoes_pluviometro, pluviometro, chuva e chuva_talhoes. A tabela talhao e pluviometro são responsáveis por armazenar os talhões e pluviômetros. A tabela talhoes_pluviometro persiste os talhões que serão monitorados pelo pluviômetro. Neste caso, um pluviômetro pode monitorar vários talhões, sendo que cada 51 talhão pode ter vários pluviômetros que o monitoram. Do mesmo modo, a tabela chuva_talhoes persiste a ocorrência das chuvas em cada talhão, sendo que uma chuva registrada em um pluviômetro pode atingir um ou mais talhões monitorados e assim generalizar a quantidade de chuvas de um talhão a todos os campos de produção cadastrados neste talhão. Figura 4: Diagrama de ER – Pluviometria Outro exemplo de diagrama de entidade-relacionamento está na Figura 5. Ele representa a entidade do campo de produção, e como se pode verificar, esta entidade é um elemento central, pois interliga praticamente todas as entidades responsáveis por armazenar informações referentes à produção como safras, talhões, espécies, variedades, contratos de venda da produção, avaliações de campo, operações de campo e seus insumos. 52 Figura 5: Diagrama de ER – Campo de Produção e seus relacionamentos. A – Espécies; B – Variedades; C – Safras; D – Talhões; E – Contratos de Venda da Produção; F – Operações de Campo; G – Avaliações de Campo; Para persistir todas as informações necessárias foram elaboradas, até o momento para este protótipo, 79 tabelas com seus relacionamentos. Todas as tabelas que compõem o diagrama geral de entidades-relacionamentos seguiram o mesmo padrão observado nas Figuras 4 e 5. Nesta etapa do projeto também foram definidas as datas previstas para a entrega das funcionalidades seguindo a ordem estabelecida pelas prioridades no processo anterior. Buscou-se implementar as 61 funcionalidades em um tempo de 96 dias nos meses de junho, julho, agosto, setembro e outubro de 2010, tendo uma média de 1,57 dias por funcionalidade se levar em consideração somente os dias úteis. De acordo com a Tabela 5, que representa o tempo previsto para implementar cada um dos módulos, verifica-se a previsão inicial de 1 dia para cada funcionalidade do módulo de cadastro e 2 dias para as funcionalidades dos outros módulos. Já a Tabela 6 apresenta o cronograma previsto para a entrega de cada funcionalidade. 53 Tabela 5: Tempo previsto para implementação de cada Módulo Módulo Funcionalidades Cadastro 27 Sistema 2 Almoxarifado 5 Estoque 6 Planejamento 8 Produção 9 Comercialização 3 Rastrear 1 TOTAL 61 Dias Total de Dias 1 2 2 2 2 2 2 2 Tabela 6: Cronograma de Implementação das Funcionalidades FUNCIONALIDADE MÓDULO Estados Cidades Bairros; Pessoas Físicas e Jurídicas; Funcionários; Safras; Fazendas; Matrículas; Talhões; Unidades de Medida; Tabela de Equivalência; Simulação de Conversão entre Unidades de Medida; Grupos de Espécies; Módulo de Famílias de Espécies; Cadastro Espécies Detentores/Mantenedores de Variedades; Hábitos de Crescimento de Variedades; Cores de Hilo de Variedades; Cores de Inflorescência de Variedades; Variedades; Marcas e Fabricantes; Grupo de Máquinas e Implementos; Máquinas e Implementos; Tipos de Veículos; Veículos na Frota; Motoristas de Veículos da Frota; Armazéns; 27 4 10 12 16 18 6 2 95 PREVISÃO 21/06/2010 22/06/2010 23/06/2010 24/06/2010 25/06/2010 02/07/2010 05/07/2010 06/07/2010 07/07/2010 08/07/2010 09/07/2010 12/07/2010 13/07/2010 14/07/2010 15/07/2010 16/07/2010 19/07/2010 20/07/2010 21/07/2010 22/07/2010 23/07/2010 26/07/2010 27/07/2010 28/07/2010 29/07/2010 30/07/2010 02/08/2010 54 Tabela 6 (Continuação): Cronograma de Implementação das Funcionalidades FUNCIONALIDADE MÓDULO Cadastro de Perfis; Módulo do Sistema Cadastro de Usuários; Cadastro de Grupo de Peças/Materiais; Cadastro de Subrupo de Peças/Materiais; Módulo de Cadastro de Peças/Materiais; Almoxarifado Controle de Peças/Materiais em Almoxarifado; Controle de EPI’s e Ferramentas de Funcionários; Cadastro de Grupos de Insumos; Cadastro de Subgrupos de Insumos; Cadastro de Insumos; Módulo de Estoque Controle de Insumos em Estoque; Controle das Tabelas de Descontos; Controle de Estoque de Produção; Cadastro de Campos de Produção; Cadastro de Tipos de Operação de Campo; Cadastro de Operações de Campo Planejadas; Geração do Projeto Técnico; Módulo de Planejamento Upload de Mapas de Aplicação; Upload de Mapas de Produtividade; Upload de Manuais de Máquinas e Implementos; Upload de Outros Arquivos; Cadastro de Operações de Campo Realizadas; Cadastro de Avaliações de Campo; Cadastro de Amostras de Avaliações de Campo; Cadastro Tipos de Manutenção em Máquinas e Implementos; Módulo de Cadastro de Manutenção em Máquinas e Produção Equipamentos; Cadastro de Pluviômetros; Cadastro de Talhões Monitorados; Controle de Ocorrências de Chuvas; Geração de Gráficos Temporais de Chuvas; Cadastro de Contratos de Venda da Produção; Busca e Atualização de Valores do Dólar e Soja de Módulo de Comercialização Chicago; Geração de Gráficos do Dólar Módulo de Geração de Rastreabilidade de Campos de Produção; Rastreabilidade PREVISÃO 29/06/2010 01/07/2010 04/08/2010 06/08/2010 10/08/2010 12/08/2010 16/08/2010 18/08/2010 20/08/2010 24/08/2010 26/08/2010 05/10/2010 07/10/2010 30/08/2010 01/09/2010 03/09/2010 07/09/2010 21/10/2010 25/10/2010 27/10/2010 29/10/2010 09/09/2010 13/09/2010 15/09/2010 17/09/2010 21/09/2010 23/09/2010 27/09/2010 29/09/2010 01/10/2010 11/10/2010 13/10/2010 15/10/2010 19/10/2010 55 Este processo busca deixar um plano de implementação do projeto claro e previsto para a próxima etapa do modelo FDD, que é a etapa iterativa entre projetar e implementar por característica. 6.4 Implementação Para a implementação se utilizou o ambiente de programação Visual Web Development Express Edition, que é um ambiente gratuito oferecido pela Microsoft, juntamente com o .Net Framework na sua versão 3.5 e o Framework ASP.NET Ajax Control Toolkit. A interface do sistema foi toda construída através dos componentes do Framework ASP.NET Ajax Control Toolkit, e do recurso Master Page fornecida pelo .NET. Essa integração tornou o acesso às funcionalidades bem mais dinâmicas. A Figura 6 representa o layout das telas do sistema e como estão divididas em 3 áreas, por exemplo, a tela de cadastro da frota de veículos: A – Lateral esquerda – Menus (Figura 7); B – Topo – Identificação da página (Figura 8); e C – Centro – Conteúdo (Figura 9). B A Figura 6: Layout do Sistema C 56 Figura 7: Cadastro da Frota de Veículos – Menus. Figura 8: Cadastro da Frota de Veículos – Identificação da Página. Figura 9: Cadastro da Frota de Veículos – Conteúdo. 57 Através do .NET Framework também foi possível a geração de gráficos dinâmicos afim de facilitar a visualização de informações, como por exemplo, a geração de gráficos sobre a pluviometria. Os gráficos gerados são filtrados por pluviômetro, por talhão ou por tipo de gráfico, no qual possui mais de 30 opções, conforme Figura 10 e 11. Figura 10: Gráfico de Pluviometria tipo Coluna Figura 11: Gráfico de Pluviometria tipo Área 58 Já as funcionalidades foram implementadas utilizando principalmente o .NET Framework, que em “grosso modo” vincula cada página no formato .aspx a uma classe, sendo que esta classe herda os componentes da página .aspx. Desta forma, a cada formulário criado, uma nova classe também é criada. Utilizando-se desta ferramenta se buscou implementar um sistema utilizando duas camadas, uma de apresentação e negócios e outra de suporte, conforme Figura 12. Página Aspx Classe Vinculada Classes Auxiliares Regras de Negócio 1º CAMADA 2º CAMADA Base da Dados Figura 12: Estrutura das Camadas do Sistema A primeira camada compreende a manipulação dos eventos gerados pelo browser, como cliques do botão e seleção de um item em uma lista, que são implementados juntamente com a lógica de negócio nessas classes vinculadas às páginas. Para cada funcionalidade foram desenvolvidas as classes necessárias e em cada classe foram implementadas os seus métodos e atributos para depois ser implementada a página com seus componentes e eventos relacionados. Um exemplo desse tipo de vínculo pode ser visto na Figura 13, que representa a classe vinculada à página de Login do sistema. Nela, temos os atributos (Fields) e os Métodos (Methods). Observa-se que todos os componentes da página se tornam atributos como botões, painéis etc., e existem métodos relacionados a alguns destes componentes, como o clique em um botão (button2_click). Neste conceito toda página é um objeto e assim se pode incluir os métodos das regras de negócio na classe vinculada à página, como a atualização do último acesso do usuário (AtualizaUltimoAcesso), a verificação dos perfis e das permissões (VerificaPerfil) e o redirecionamento para a página principal (Redireciona). 59 Figura 13: Classe vinculada à Página de Login do Sistema. A segunda camada corresponde a classes auxiliares específicas que simplesmente dão suporte à camada de negócios, como por exemplo, uma classe responsável por fazer a 60 conexão com o banco de dados, outra para converter formatos de data e hora antes de persistilas no banco de dados, etc. conforme Figura 14. Figura 14: Classes Auxiliares. Houve a necessidade de se implementar um método para agendar tarefas em um horário específico, sendo este utilizado para buscar o valor da cotação do dólar e gravá-lo na base de dados de forma automática pelo sistema. Esta funcionalidade só foi possível através da tecnologia web services, pois este serviço deveria ser executado somente no servidor e não nos clientes. Através do próprio ambiente de programação, criou-se um web service e um Windows service. O web service foi implementado de forma a somente executar um método 61 público no sistema web para executar os agendamentos ativos, como a atualização da cotação do dólar. O Windows service foi criado com o objetivo de verificar os horários préestabelecidos e nos momentos certos chamar a função no web service para executar os agendamentos. Desta forma, às 19 horas de todos os dias úteis é feita a atualização da cotação do dólar sem a intervenção do usuário neste processo. Durante o processo iterativo de projetar as classes e implementar, inclui-se um terceiro processo, que foi a avaliação de cada funcionalidade após a implementação. 6.5 Avaliações Cada funcionalidade foi avaliada utilizando um questionário dirigido no momento da entrega da funcionalidade ao cliente, sendo através deste questionário levantada a necessidade de se alterar ou não a funcionalidade. O questionário, conforme apêndice L avalia a aparência da página que hospeda a funcionalidade, a facilidade de uso, a inserção, alteração e exclusão, os filtros e principalmente se a funcionalidade cumpre os requisitos levantados no projeto. Observou-se que praticamente em todas as funcionalidades implementadas foram encontradas pelo menos um problema, seja ele na aparência, facilidade de uso ou função propriamente dita, sendo nestes casos verificada as sugestões e observações transcritas pelos clientes. Muitas delas geraram alterações diretas em características do sistema, de forma a garantir uma efetiva resolução do problema a ser implementado pela funcionalidade. 6.6 Discussão A Fazenda Seis Irmãos buscou vários softwares no mercado para suprir as suas necessidades, dentre os observados, dois softwares foram adquiridos e testados. O primeiro deles, Super Safra, adquirido em 2007, oferecia suporte a administração financeira e dos processos da produção. Este software foi utilizado por duas safras (2007/2008 e 2008/2009), e foi abandonado, pois continha muitos erros de execução, sendo que durante o tempo de uso pela fazenda os desenvolvedores não conseguiram resolver estes erros. Além disso, existiam funcionalidades que a Fazenda Seis Irmãos precisava como o histórico de produção por talhões e o sistema não fornecia. A cada ciclo de produção havia a necessidade de cadastrar todos os talhões novamente, ou seja, não havia nenhum vínculo entre os ciclos de produção, o que levou a outro problema no momento de fazer as alterações pedidas pela Fazenda, os relatórios. Não havia a possibilidade de fazer comparativos entre safras ou talhões ao longo 62 dos anos. Além de outros problemas na área financeira, este software tinha dificuldades no controle de acesso, pois o mesmo se dava através dos usuários cadastrados no sistema operacional do servidor, que na época era um Windows Server 2003 Standard. E todos os funcionários que quisessem acessá-lo deveriam utilizar o serviço de área de trabalho remota do Windows, fazendo com que somente dois usuários pudessem acessar o sistema por vez, ao menos que fossem compradas mais licenças para todos os usuários do Windows. O segundo software a ser adquirido em 2009 se chama Prorural e ainda está em uso no momento. Este software, bem mais completo que o anterior, possui dois módulos distintos, pecuária e agricultura. Os dois módulos são totalmente integrados e seu acesso é baseado em arquitetura cliente-servidor, tendo como desvantagem a inexistência de um sistema que gerenciasse as atualizações em cada cliente que o sistema estivesse instalado. A principal dificuldade encontrada também diz respeito à vinculação dos talhões entre safras diferentes, pois neste também é necessário o cadastramento de novos talhões todo ciclo de produção. Outras dificuldades encontradas dizem respeito a relatórios errados que entravam em divergência com os lançamentos, além de outros problemas como erros de tempo de execução e com adaptações que não puderam ser realizadas pela equipe de desenvolvimento. Observa-se que as principais dificuldades encontradas na utilização dos antigos sistemas da Fazenda Seis Irmãos, que seria manter um histórico de todas as operações agrícolas ao longo dos anos, a possibilidade de dividir cargas na entrada em estoque por campo de produção e na saída por contrato de venda, e a necessidade de se fazer atualizações manuais em cada terminal que queira utilizar o sistema, foram sanadas pelo conceito de campo de produção utilizado e pelo sistema ser baseado em tecnologias web. Além disso, a utilização de um sistema web traz outras vantagens, principalmente: Aproveitamento da infraestrutura de hardware e rede atual, sem a necessidade de um upgrade; Fácil distribuição (somente a necessidade de um navegador); Fácil controle e distribuição de atualizações, visto que somente é necessário atualizar o projeto no servidor que todos os clientes já estarão atualizados; A Fazenda Seis Irmãos já possui o servidor web IIS 7.5 rodando pequenas aplicações intranet como agenda de telefones e de tarefas na propriedade, ou seja, facilidade de implantação e uma futura publicação de um sistema web, já que em um primeiro momento a aplicação rodará somente na intranet. 63 A infraestrutura de rede está em perfeitas condições, tendo como principal meio físico uma rede wireless de 2.4Ghz no padrão B/G com tráfego real chegando a 6 Mbps. 64 7 CONCLUSÃO Verificou-se que através da interação contínua durante todas as fases do projeto com a equipe de negócios da Fazenda Seis Irmãos, se fez o levantamento das características do sistema e a criação de um modelo global, ou melhor, uma visão do que o sistema se tornaria depois de implementado. Este modelo global serviu como guia para se criar a lista de funcionalidades do sistema, que por sua vez foi utilizado para o planejamento e criação dos casos de uso e demais artefatos se cumprindo a etapa linear da metodologia FDD, tendo como resultado final o projeto do sistema. Observou-se que o protótipo desenvolvido através do projeto possui as principais funcionalidades necessárias e exigidas pelo cliente para que se possa gerir a produção agrícola da Fazenda Seis Irmãos. O sistema contempla todas as etapas de produção, desde o planejamento da safra, das operações de campo necessárias e insumos até a comercialização da produção e entrega dos produtos finais. A qualidade final do protótipo pode ser alcançada através da coleta dos resultados e averiguação do cumprimento das funcionalidades. Verificou-se que aproximadamente 10% das funcionalidades do protótipo não puderam ser implementadas a tempo, como o upload de mapas de aplicação e produtividade, manuais de máquinas e equipamentos, e outros arquivos. Dos 90% das funcionalidades desenvolvidas, cerca de 40% delas ainda faltam ser ajustadas com relação a novas alterações observadas e erros de lógica de programação. Visto que o principal objetivo de desenvolver um protótipo de um sistema de informação para fazer a gestão dos processos da produção agrícola, e que o setor do agronegócio está cada vez mais competitivo, se observa que há a necessidade de uma solução mais ampla e complexa, que contemple também todos os processos administrativos e contábeis referentes à produção agrícola, além de uma diversidade de relatórios que não foram contemplados nesta primeira versão do protótipo. Por ser um sistema web existe a facilidade de possivelmente poder publicá-lo na internet, tendo como base a simples multiplicação de esquemas do banco de dados, deixando esta perspectiva para trabalhos futuros. 65 REFERÊNCIAS ASSOCIAÇÃO BRASILEIRA DAS EMPRESAS DE SOFTWARE (ABES). Mercado Brasileiro de Softwares: Panorama e Tendências 2010. São Paulo, 2008. Disponível em < http://www.abes.org.br/UserFiles/Image/PDFs/Mercado_BR2010.pdf>. Acesso em: 23/11/2010 AJAP – ASSOCIAÇÃO DOS JOVENS AGRICULTORES DE PORTUGAL. Gestão da Empresa Agrícola no Século XXI: Manual III – Tecnologias de Informação e Comunicação na Gestão da Empresa Agrícola. Lisboa – Portugal: Gazela, Artes Gráficas, Lda, 2007. ISBN 978-989-95613-2-8. Disponível em: < http://www.ajap.pt/media/MANUAL%20III.pdf >. Acesso em: 06/06/2010. BASSI FILHO, Dairton Luiz. Experiências com Desenvolvimento Ágil. Dissertação de Mestrado apresentada ao Instituto de Matemática e Estatística da Universidade de São Paulo. São Carlos – SP, 2008. Disponível em: < http://www.teses.usp.br/teses/disponiveis /45/45134/tde-06072008-203515/ >. Acesso em: 06/06/2010. BATALHA, Mário Otávio (Coord.). Gestão Agroindustrial. 3. ed. Vol.1. São Paulo: Atlas, 2007a. ISBN 978-85-224-4570-7. BATALHA, Mário Otávio (Coord.). Gestão Agroindustrial. 4. ed. Vol.2. São Paulo: Atlas, 2007b. ISBN 978-85-224-4569-1. BATTISTI, Júlio. ASP.NET: Uma Revolução na Construção de Sites e Aplicações Web. Axcel Books, 2001. 785 p. BEZERRA, Eduardo. Princípio de Análises e Projeto de Sistemas com UML. Rio de Janeiro: Ed. Elsevier., 2007. 369 p. ISBN 85-352-1696-0. CALLADO, Antônio André Cunha. Agronegócio. 2. Ed. São Paulo: Atlas, 2009. 184 p. ISBN 978-85-224-5054-1 COMUNIDADE ASP.NET AJAX. ASP.NET Ajax Control Toolkit. Disponível em: < http://www.asp.net/ajax/ajaxcontroltoolkit/samples/ >. Acesso em: 17/11/2010. DELUCA, J.; COAD, P.; LEFEBVRE, E.. Java Modeling in Color with UML. Prentice-Hall, 1999. EMBRAPA INFORMÁTICA AGROPECUÁRIA. Estudo do Mercado Brasileiro de Softwares para o Agronegócio - Relatório da Oferta de Softwares para o Agronegócio: Empresas Privadas. Embrapa Informática Agropecuária. Campinas: 2009. Disponível em: < http://www.swagro.cnptia.embrapa.br/projeto/swagro/oferta/oferta/empresas-privadas/analiseda-oferta/analise > Acesso em: 23/11/2010. FIGUEIREDO, André Luís Gouvêa de. ECO – Um Ecossistema para o Desenvolvimento Ágil de Sistemas Web. Dissertação de Mestrado apresentada ao Instituto de Ciências Matemáticas e de Computação – ICMC, USP. São Carlos - SP, 2005. Disponível em: < 66 http://www.teses.usp.br/teses/disponiveis/55/55134/tde-28092006-142845/ >. Acesso em: 06/06/2010. GIL, A. C. Métodos e técnicas de pesquisa social. 5. ed. São Paulo: Atlas, 1999. ISBN 85224-2270-2. LIMA, Edwin. C# e .Net para desenvolvedores. Rio de Janeiro: Campus, 2002. ISBN 85352-0954-9. LOTAR, Alfredo. Como Programar com ASP.NET e C#. Novatec, 2007. 608p. ISBN: 97885-7522-121-1. MANIFESTO. Manifesto para o Desenvolvimento Ágil de Software. Disponível em: < http://www.manifestoagil.com.br/ >. Acesso em: 06/06/2010. NASCIMENTO, Gustavo Vaz. Um Modelo de Referência para o Desenvolvimento Ágil de Software. Dissertação de mestrado apresentado ao Instituto de Ciências Matemáticas e de Computação – ICMC, USP. São Carlos - SP, 2008. Disponível em: < http://www.teses.usp.br/teses/disponiveis/55/55134/tde-07052008-170413/ >. Acesso em: 06/06/2010. PAULA FILHO, Wilson de Pádua. Engenharia de Software: fundamentos, métodos e padrões. 3. Ed.. Rio de Janeiro: LTC, 2009. PAULINO, Daniel Augusto; et al.. Inovações Tecnológicas da Gestão da Informação no Agronegócio. São Paulo, 2009. Disponível em: < http://www.unisalesiano.edu.br/ encontro2009/trabalho/aceitos/CC13096956871.pdf >. Acesso em: 23/11/2010. PEREIRA, Altieri. Porque usar e porque não usar o Ajax Control Toolkit. Disponível em: < http://www.devmedia.com.br/post-18534-Porque-usar-e-porque-nao-usar-o-AjaxControl Toolkit.html >. Acesso em: 17/11/2010. PRESSMAN, Roger S.. Engenharia de Software. 6. ed.. Tradução: Rosângela Delloso Penteado. São Paulo: McGraw-Hill, 2006. 720 p. ISBN 85-86804-57-6. SILVA, Roni Antonio Garcia da. Administração rural: teoria e prática. Curitiba: Juruá, 2010. 194p. SOMMERVILLE, Ian. Engenharia de Software. 6. ed.. Tradução: André Maurício de Andrade. São Paulo: Pearson Addison Wesley, 2003. 592 p. ISBN 85-88639-07-6. ZANIRO, Dênis Leonardo. WEB-SEMP: Método de Elicitação, Modelagem e Planejamento para Aplicações Web. Dissertação de mestrado apresentado ao Instituto de Ciências Matemáticas e de Computação – ICMC, USP. São Carlos - SP, 2008. Disponível em: < http://200.136.241.56/htdocs/tedeSimplificado/tde_arquivos/3/TDE-2010-01-08T094040Z2794/Publico/2734.pdf >. Acesso em: 06/06/2010.