Trabalho de Concluso de Curso submetido Universidade do Planalto Catarinense para obteno dos crditos de disciplina com nome equivalente no curso de Sistemas de Informao - Bacharelado.
Orientao: Prof. Sabrina Bet Koerich, M.Sc.
LAGES (SC) 2011
THIAGO LUIZ NUNES DE SOUZA
SISTEMA DE INFORMAO PARA PACKI NG HOUSE
ESTE RELATRIO, DO TRABALHO DE CONCLUSO DE CURSO, FOI JULGADO ADEQUADO PARA OBTENO DOS CRDITOS DA DISCIPLINA DE TRABALHO DE CONCLUSO DE CURSO, DO 8. SEMESTRE, OBRIGATRIA PARA OBTENO DO TTULO DE:
BACHAREL EM SISTEMAS DE INFORMAO
Lages (SC), Dia de Ms de Ano (data da defesa)
Prof.Sabrina Bet Koerich, M.Sc. Orientador Prof. Alexandre Perin de Souza, M.Sc. Co-Orientador
BANCA EXAMINADORA:
Prof. Willian Padilha, Bel. UNIPLAC Prof. Claiton Camargo, Bel. UNIPLAC
Prof. Sabrina Bet Koerich, M.Sc. Professor de TCC Prof. Sabrina Bet Koerich, M.Sc. Coordenador de Curso
Dedico este trabalho para minha famlia e meus amigos, onde todos de alguma forma me ajudaram a concluir esse trabalho.
Agradeo em especial ao Jorge Hamilton de Souza pelo incentivo e pelas ideias propostas.
Agradeo a minha famlia, meus amigos, minha namorada e todas as pessoas que estiverem sempre presentes nas minhas conquistas.
Muitas pessoas devem a grandeza de suas vidas aos problemas e obstculos que tiveram que vencer. (Baden Powell) LISTA DE ILUSTRAES FIGURA 1 - Leiaute Packing House ......................................................................... 19 FIGURA 2 - Arquitetura MVC .................................................................................. 23 FIGURA 3 - Aplicaes em trs camadas ................................................................. 24 FIGURA 4 - Tela padro do Scaffolding. .................................................................. 25 FIGURA 5 - Tela com alerta de Validao ................................................................ 26 FIGURA 6 - Pgina de Download CakePHP 1.3.8 ................................................... 28 FIGURA 7 - Estrutura de Pasta CakePHP. ................................................................ 29 FIGURA 8 - Modelagem do Banco de Dados ........................................................... 38 FIGURA 9 - Estrutura banco de dados ...................................................................... 42 FIGURA 10 - Estrutura de pasta framework CakePHP ............................................. 43 FIGURA 11 - Tela do framework informando sobre a conexo com o banco. ......... 45 FIGURA 12 - Tela principal editada .......................................................................... 47 FIGURA 13 - Tela referente ao arquivo index.ctp .................................................... 52 FIGURA 14 - Tela referente ao arquivo view.ctp ...................................................... 53 FIGURA 15 - Tela referente arquivo add.ctp ............................................................ 55 FIGURA 16 - Tela apresentao referente arquivo edit.ctp ...................................... 56 FIGURA 17 - Tela de validao de dados ................................................................. 57 FIGURA 18 - Aplicaes em trs camadas ............................................................... 64 FIGURA 19 - Tela padro do Scaffolding. ................................................................ 64 FIGURA 20 - Tela com alerta de Validao .............................................................. 65 FIGURA 21 - Tela pasta CakePHP descompactada .................................................. 67 FIGURA 22 - Tela informando dados CakePHP ...................................................... 67 FIGURA 23 - Tela de index dos cadastros de noticias .............................................. 69 FIGURA 24 - Tela de insero de noticias ................................................................ 69 FIGURA 25 - Tela de edio de notcias ................................................................... 70 FIGURA 26 - Aviso ao excluir notcia ...................................................................... 70
QUADRO 1 - Cdigo arquivo Scaffolding ................................................................ 25 QUADRO 2 - Codificao Validao de dados ......................................................... 26 QUADRO 3 - Requisitos manter cadastro de Produtores .......................................... 35 QUADRO 4 - Requisitos manter cadastro de compradores ....................................... 35 QUADRO 5 - Requisitos manter cadastro de funcionrios ....................................... 35 QUADRO 6 - Requisitos manter cadastro de tipos. ................................................... 36 QUADRO 7 - Requisitos manter cadastro de grupos. ............................................... 36
QUADRO 8 - Requisitos manter cadastro de tamanhos. ........................................... 36 QUADRO 9 - Requisitos manter cadastro de entradas. ............................................. 36 QUADRO 10 - Requisitos manter cadastro de quantidade de entrada ...................... 36 QUADRO 11 - Requisitos manter cadastro de processamento .................................. 37 QUADRO 12 - Requisitos manter cadastro de quantidade de processamento .......... 37 QUADRO 13 - Script gerado pela ferramenta DBDesigner4 .................................... 41 QUADRO 14 - Alterao cdigo inflector.php.......................................................... 44 QUADRO 15 - Configurao com o banco de dados ................................................ 45 QUADRO 16 - Trecho de cdigo layout pgina principal ......................................... 46 QUADRO 17 - Codificao arquivo funcionario.php ............................................... 47 QUADRO 18 - Codificao de index do arquivo funcionarios_controller.php ......... 48 QUADRO 19 - Codificao de view do arquivo funcionarios_controller.php .......... 48 QUADRO 20 - Codificao de insert do arquivo funcionarios_controller.php ......... 48 QUADRO 21 - Codificao de edit do arquivo funcionarios_controller.php ........... 49 QUADRO 22 - Codificao de edit do arquivo funcionarios_controller.php ........... 49 QUADRO 23 - Codificao arquivo index.ctp .......................................................... 50 QUADRO 24 - Trecho de cdigo do arquivo view.ctp .............................................. 52 QUADRO 25 - Cdigo do arquivo add.ctp ................................................................ 54 QUADRO 26 - Cdigo do arquivo edit.ctp ................................................................ 55 QUADRO 27 - Validao de dados arquivo funcionario.php ................................... 57 QUADRO 28 - Cdigo arquivo Scaffolding .............................................................. 64 QUADRO 29 - Codificao Validao de dados ....................................................... 65 QUADRO 30 - Codificao da configurao com banco de dados ........................... 67 QUADRO 31 - Script criao tabela de posts ............................................................ 68 QUADRO 32 - Codificao arquivo post.php ........................................................... 68 QUADRO 33 - Codificao arquivo posts_controller.php ........................................ 69
LISTA DE ABREVIATURAS E SIGLAS ACL - Access Control List ACO - Acess Control Object AJAX - Asynchronous Javascript and XML ARO - Acess Object Request CRUD - Create, Retrieve, Update Delete HTML - HyperText Markup Language HTTP - HyperText TranferProtocol secure JSON - JavaScript Object Notation MVC - Model View Controller MIT - Massachusetts Institute of Technology ODBC - Open Database Connectivity ORM - Object-relational mapping PHP - Hypertext Preprocessor RSS - Really Simple Syndication SI - Sistemas de Informao SMTP - Simple Mail Tranfer Protocol SQL - Structured Query Language TI - Tecnologia de Informao URL - Uniform Resource Locator XML - Extensible Markup Language
RESUMO Este trabalho teve como principal objetivo implantar um sistema de informao dentro de um Packing House, local onde se destina a recepo, classificao, estocagem e expedio de frutos, mais especificamente para mas. Produtores autnomos e microempresas no segmento agrcola encontram dificuldades em gerenciar e armazenar informaes, causando assim, mais contrataes de pessoas, um custo alto e informaes coletadas atrasadas comparadas ao atual, pois o recebimento, o processamento e a expedio dos frutos nunca param. Para solucionar esse problema, implantar um sistema de informao seria ideal, pois assim reduziria os custos do controle do estoque e informaes coletadas em tempo real. Porm, gestores desse segmento encontram dificuldades em encontrar tecnologias voltadas para esse ramo, tendo como base informaes disponibilizadas por Jorge Hamilton de Souza, Tcnico Agrnomo e gerente do Packing House que foi estudado. Tendo como principal objetivo reduzir custos e simplificar o gerenciamento e armazenamento de informaes, foi realizado um levantamento com base nesses requisitos para que fosse possvel implementar um sistema de informao. A implementao do sistema foi desenvolvida com a linguagem PHP juntamente com um framework chamado CakePHP, que auxilia na codificao do sistema, foi usado como armazenamento de dados o banco de dados MySQL juntamente com o servidor Apache.
Palavras-chave: PHP, Packing House; tomada de deciso, controle de estoque.
ABSTRACT This work aimed to establish an information system within a packing house, where they intended to reception, classification, storage and shipment of fruit, more specifically for apples. autonomous producers and micro enterprises in the agricultural sector find it difficult to manage and store information, thus causing more hiring of people, a cost high and late information collected compared to the current, because the receipt, processing and shipment of fruits never stop. To solve this problem, implement an information system would be ideal, as well as reduce the costs of inventory control and information collected in real time. However, managers of that segment are difficulties in finding technologies for this branch, based on information provided by George Hamilton de Souza, Technical Agricultural Engineer and manager of the Packing House was studied. with the main objective to reduce costs and simplify management and storage information, a survey was conducted based on these requirements for could implement an information system. The implementation of the system was developed with the PHP language and a framework called CakePHP which assists in the coding system, was used as data storage MySQL database along with Apache server.
Keywords: PHP, Packing House; tomada de deciso, controle de estoque.
SUMRIO 1 INTRODUO ........................................................................................................ 13 1.1 Apresentao ........................................................................................................... 13 1.2 Descrio do problema ............................................................................................ 14 1.3 Justificativa .............................................................................................................. 14 1.4 Objetivo geral .......................................................................................................... 15 1.5 Objetivos especficos ............................................................................................... 16 1.6 Metodologia ............................................................................................................. 16 1.7 Cronograma .............................................................. Erro! Indicador no definido. 2 PACKING HOUSE .................................................................................................. 18 2.1 Caractersticas .......................................................................................................... 18 2.1.1 Recepo .......................................................................................................................... 19 2.1.2 Estocagem ........................................................................................................................ 19 2.1.3 Processamento ................................................................................................................. 19 2.1.4 Estocagem ........................................................................................................................ 20 2.1.5 Expedio ........................................................................................................................ 20 2.2 Tecnologia de Informao ....................................................................................... 20 3 FRAMEWORK CAKEPHP .................................................................................... 22 3.1 Definio ................................................................................................................. 22 3.2 Caractersticas principais ......................................................................................... 23 3.2.1 Model View Controller .................................................................................................... 23 3.2.2 Licena MIT ..................................................................................................................... 24 3.2.3 Scaffolding e Bake Console ............................................................................................. 24 3.2.4 Validao de dados ......................................................................................................... 25 3.3 Recursos necessrios para seu uso .......................................................................... 26 3.3.1 Hardware ......................................................................................................................... 26 3.3.2 Software ........................................................................................................................... 27 3.4 Instalao e configurao ........................................................................................ 27 3.4.1 Instalao ........................................................................................................................ 28 3.4.2 Configurao ................................................................................................................... 29 3.5 Principais Mdulos .................................................................................................. 30 3.5.1 Helper .............................................................................................................................. 30 3.5.2 Componentes de Segurana............................................................................................. 31 3.6 Concluses ............................................................................................................... 32
4 LEVANTAMENTO DE REQUISITOS/MODELAGEM .... ERRO! INDICADOR NO DEFINIDO. 4.1 Levantamento de Requisitos .................................................................................... 34 4.2 Modelagem .............................................................................................................. 38 5 CONSIDERAES FINAIS ................................................................................... 40 REFERNCIAS BIBLIOGRFICAS ...................................................................... 61 APNDICES ................................................................................................................ 62
13 1 INTRODUO 1.1 Apresentao A cultura de cultivo de ma forte referncia na regio da serra catarinense, sendo um dos pontos principais de renda em algumas das cidades. Para poder potencializar a fruta e conseguir melhores preos no momento da venda so necessrias cmaras frias para armazenar as frutas e mquinas para fazer sua classificao, em um processo chamado de Packing House. Empresas de Packing House vm utilizando tcnicas inadequadas para o auxlio no controle do estoque das frutas, e, com isso, acabam tornando os resultados obtidos inconsistentes, gerando trabalho desnecessrio. Dessa maneira, foi idealizado um projeto para gerenciar estes processos, e para sua realizao foi escolhido a linguagem PHP (PHP Hypertext Preprocessor), juntamente com o framework CakePHP, como banco de dados foi utilizado o MySQL e o servidor Web Apache. Essas ferramentas foram escolhidas por serem de cdigo livre e necessitarem poucos recursos de hardware para operarem. O desenvolvimento deste trabalho ficou dividido em 6 captulos. No captulo 1 foi exposto o proposito do projeto juntamente com os objetivos e demais informaes para o desenvolvimento restante do trabalho. No captulo 2 foi apresentado qual o objetivo de um Packing House, contendo tambm processos decorrente da logica de negocio do Packing House, em seguida, no captulo 3, foi abordado sobre o framework CakePHP, qual foi base para o desenvolvimento do sistema. No captulo 4 foi realizada a modelagem do sistema, juntamente com o levantamento de requisitos. No captulo 5 foi demonstrado com cdigos e figuras ilustrativas como o sistema foi 14 desenvolvido. Por fim no captulo 6 foi apresentados as consideraes finais do trabalho. 1.2 Descrio do problema O controle de estoque uma necessidade de qualquer ramo que contenha armazenamento de produtos, e isso no diferente nos sistemas de Packing House. Alm da necessidade do controle de estoque fsico, essencial um controle especfico para processamento de mas que passam por uma mquina classificadora. Sem este controle h perda de informaes, que impossibilita os gestores de gerenciar a quantidade de fruta estocada e processada. A falta de um sistema funcional dificulta o controle de estoque de mas dentro do Packing House, levando em considerao que esse controle deve ser realizado desde a recepo do fruto, o armazenamento dos mesmos, posteriormente passando pela classificao e por fim a expedio, ocasionando alto custo. 1.3 Justificativa A utilizao de Tecnologia de Informao est cada vez mais presente em qualquer rea de negcio, facilitando toda a troca e apresentao de informaes para os usurios do sistema, e at mesmo auxiliando na segurana do sistema, com caractersticas, como backup dos dados inseridos e restries de acesso. O estoque de uma empresa todo bem fsico produzido ou em fase de produo e os bens necessrios para a produo, direta ou indiretamente, que so armazenados por um determinado espao de tempo (PORTALBRASIL, 2004). Segundo Martins (2000), o estudo do papel dos estoques nas empresas to antigo quanto o estudo da prpria Administrao, e sempre foi alvo da ateno dos gerentes. O estoque de uma empresa quer dizer dinheiro, e por esse motivo deve-se tomar cuidados para que a empresa no tenha um estoque demasiadamente grande e tampouco um estoque escasso, evitando um volume de capital empregado parado e 15 tambm no deixando acontecer falta do produto. A administrao do controle de estoque uma das reas que mais roubam tempo dos profissionais, onde se costumava gerar dados inconsistentes, causando a contratao de mais pessoas, para que pudessem amenizar falhas geradas por falta de um sistema para realizar esse controle. A deficincia na gerao de informaes do estoque e a necessidade de uma ferramenta no auxilio desse controle, est presente em um Packing House, onde preciso recolher informaes sobre quantidades processadas, quantidades produzidas, que tipo de frutas, entre outras informaes essenciais. O especialista do caso Jorge Hamilton de Souza, diz que o sistema viabiliza todo o processo administrativo do Packing House de beneficiamento de frutas com foco principal no controle de recebimento de frutas; classificao/produo de rea e logstica para o processamento de frutas de produo prpria e tambm na prestao de servios para terceiros. Segundo o especialista do caso existe uma escassez de sistemas focados para esse ramo de negcio e que seria importante o desenvolvimento do mesmo. Surgindo a partir do desenvolvimento de sistema uma elaborao de testes e hipteses variadas para encontrar falhas possveis, registrando sugestes para as melhorias do sistema. Uma vez que a deteco de erros um propulsor importante do teste software, ela responsvel pelo aumento no interesse no desenvolvimento de conjunto de dados de testes adequados para sensibilizar erros (PETERS e PEDRYCZ, 2001). Diante do exposto, percebe-se que h a necessidade de um sistema de informao, que possa ajudar a controlar o estoque, gerando relatrios que auxiliem nas tomadas de decises e oferea segurana dos dados, entre outras funes que so necessitadas pelos usurios. 1.4 Objetivo geral Desenvolver um aplicativo que auxilie no controle e monitoramento do Packing House, oferecendo relatrios para ajuda em tomadas de decises. 16 1.5 Objetivos especficos a) Identificar a lgica de negcio presente em Packing House; b) Definir a arquitetura do sistema; c) Identificar funcionalidades do framework CakePHP; d) Implementar o sistema utilizando as funcionalidades do framework; e) Implantar o sistema;
1.6 Metodologia O trabalho inicia com a identificao da lgica de negcio do sistema. Para isso, foi realizada uma entrevista com o Tcnico Agrnomo e Gerente do Packing House Jorge Hamilton de Souza. Foi aplicado um questionrio para tomar cincia sobre, tendo como foco em perguntas sobre os principais problemas enfrentados e quais resultados iriam ajudar nas tomadas de decises do negcio. Depois da lgica de negcio estar identificada, foi feito a definio da arquitetura do sistema, como padro de arquiteturas foi estabelecida a Cliente- Servidor, qual designa separar computadores clientes de servidores, ligados por uma rede que de uma maneira o varias instancias de clientes possam requisitar informaes ao servidor, recebendo assim uma resposta. No prximo passo foi feito um estudo aprofundado no framework CakePHP na verso 1.3.8, foi levantado funcionalidades que o framework disponibiliza e que pudesse de alguma forma auxiliar no desenvolvimento do sistema. O passo posterior foi codificao do sistema. A linguagem usada PHP juntamente com o framework CakePHP, utilizando o banco de dados MySQL e o servidor web Apache. Estas ferramentas foram escolhidas por trabalharem de forma integrada, serem de cdigo livre e precisarem de poucos recursos de hardware (memria, processador, etc.) para operarem. O trabalho foi concludo com a instalao e implantao do sistema no 17 cliente final para validao do mesmo. Por fim, um relatrio e um artigo foram desenvolvidos.
18 2 PACKING HOUSE A quantidade de frutos gerados em uma colheita no instantaneamente consumida pela populao, precisa-se de um ambiente preparado para o armazenamento, apresentando condies adequadas de conservao dos mesmos, fazendo com que a sada dos frutos possa ser administrada conforme a necessidade. Esse ambiente chamado de Packing House. Este captulo ter como objetivo mostrar o que um Packing House, apresentando tambm seus objetivos principais, cada etapa percorrida pelos frutos, os problemas enfrentados e o que a Tecnologia de Informao pode acrescentar. 2.1 Caractersticas Packing House (casa de embalagem) tem como principal objetivo receber o fruto, armazenar em uma cmara fria com condies adequadas para que no perca a qualidade, passando depois pelo processamento, onde definido a qual grupo o fruto pertence e para que tipo de mercado ele deve ser enviado, cobrando assim pelos servios prestados. A qualidade do fruto para comercializao depende diretamente de todos os processos que englobam a colheita at a ps-colheita. Segundo Chitarra (1994), as caractersticas de qualidade dos frutos so resultantes da relao de fatores genticos, climticos, estado de maturao e tratamentos ps-colheita. Conforme Awad (1993), o intervalo da colheita entre a colheita e a estocagem deve ser o menor possvel, aumentando assim a longevidade da vida ps- colheita dos frutos. 19 Os principais estgios que o fruto percorre so: recepo, estocagem, processamento, estocagem e por final a expedio, conforme mostra a figura 1.
FIGURA 1 - Leiaute Packing House
A Figura 1 apresenta o leiaute do Packing House estudado, ilustrando as etapas por onde o fruto vai passar. 2.1.1 Recepo Na recepo onde os frutos chegam da colheita, nessa etapa so coletadas informaes de quantidade, tipo, produtor, entre outras informaes, aps essa coleta feito a estocagem dos frutos. 2.1.2 Estocagem Nesta etapa feito o armazenamento dos frutos, mantendo-se sempre organizado por produtor e tipo, este ambiente deve manter a qualidade interna e externa dos frutos. 2.1.3 Processamento No processamento os frutos so retirados da estocagem e lavados para a esteira, onde feito a classificao, podendo assim definir qual o valor para ser 20 comercializado. A classificao se resume separando pelos seguintes requisitos: Tipo: Gala, Fuji, etc; Tamanho: P, M, G; Categoria: Cat1, Cat2, Cat3, Industrial; 2.1.4 Estocagem Novamente o processo de estocagem acionado, porm, esses frutos so armazenados em outro ambiente, pronto para serem embalados e expedidos. 2.1.5 Expedio A expedio a ltima etapa que os frutos percorrem dentro do Packing House, onde feito o carregamento dos mesmos e enviados para os compradores. 2.2 Tecnologia de Informao Dentro de qualquer empresa dados so gerados frequentemente, e esses dados devem ser armazenados, para posteriormente transforma-los em informaes, e poder ter uma anlise detalhada dos mesmos, oferecendo assim um controle eficaz e tomadas de decises em cima de informaes geradas a partir de fatos. Dentro de um Packing House se tornou indispensvel tecnologias que auxiliem no controle e administrao do mesmo, essas tecnologias so chamadas de Tecnologia de Informao (TI). Segundo Branco(2007), a TI a parte fundamental dos sistemas de informao (SI) presentes nas atividades de negcio de uma organizao, cita tambm que SI no apenas composto por um computador, mas conta tambm com tecnologia, pessoas e organizaes. Para que funcionrios registrassem todas as entradas e sadas de cada processo em um papel, e posteriormente fosse feito um controle de estoque geral e um rastreamento de cada produtor, gerando quantidade de frutos estocados, processados e expedidos, para s assim gerar informaes do tipo: rendimento de equipe, o quanto 21 cobrar pelos servios, quais decises a serem tomadas, estava se tornando uma atividade com um custo alto, inconsistncia nos dados, e dificuldade para armazenamento dessas informaes. A SI permite que tarefas complexas se tornem algo simples, seria possvel manter um controle atualizado do estoque, de quantidade processada, quais as caractersticas de cada lote processado, entre outras informaes. Implantando um SI nessa estrutura, tornaria todos os processos com um custo menor, consistncia nos dados e facilidade para armazenamento informaes, facilitando a administrao e tomadas de decises dos gestores. 2.3 Concluses Neste captulo foram apresentadas as principais caractersticas de um Packing House, explanando a importncia do mesmo para a qualidade final dos frutos. Foi apresentado tambm as dificuldades para o controle de informaes e os benefcios que um Sistema de Informao pode fornecer.
22 3 FRAMEWORK CAKEPHP Nesse captulo ser apresentado o cakePHP, o framework escolhido para ser utilizado neste trabalho, quais suas principais caractersticas, vantagens e desvantagens em relao a outros frameworks similares, alguns de seus principais mdulos e, por fim, seu funcionamento e processo bsico de implantao. 3.1 Definio Em 2005 Michal Tatarynowicz desenvolveu um framework simples em PHP, chamando-o de Cake. Posteriormente percebendo que o framework tinha uma base interessante, publicou o cdigo sob a licena Massachusetts Institute of Technology (MIT) onde agregou ao seu trabalho uma comunidade de programadores que mantm o framework at hoje chamado de CakePHP. CakePHP um framework gratuito de cdigo aberto, desenvolvido em PHP baseado nos conceitos de Ruby on Rails. O objetivo principal permitir o desenvolvimento robusto de aplicaes para qualquer nvel de programadores e deixando de lado a monotonia tradicional da implementao(COOKBOOK, 2010). CakePHP traz consigo uma equipe de desenvolvedores e uma grande comunidade, agregando e potencializando o crescimento do framework. O framework usa design patterns conhecidos como Model View Controller (MVC) e Object Relational Mapping ( ORM) com conveno sobre paradigma da configurao. A vantagem maior do uso dos padres permitir, reduo d o custo do desenvolvimento, bem como ajudar os desenvolvedores a escreverem menos cdigos, facilitando a manuteno (CAKEPHP, 2010). 23 3.2 Caractersticas principais Nesta seo sero apresentadas as principais caractersticas do CakePHP, bem como seu funcionamento geral e a definio de sua utilidade para um projeto desenvolvido nesse framework. 3.2.1 Model View Controller Segundo Gonalves (2007) MVC um padro de projeto que separa uma aplicao em trs partes distintas, conforme mostra a Figura 2.
FIGURA 2 - Arquitetura MVC (Fonte: LEMOS, 2009) A Figura 2 apresenta o padro de projeto MVC. O passo 1 apresenta um browser que faz requisio para o servidor web. O controller identifica qual regra de negcio acionar ou usar (ver passo 2 da Figura 2). O controller utiliza o model para ter acesso aos dados da aplicao, em seguida no passo 3 o controller encaminha os dados para a view, no passo 4. A view formata a apresentao e retorna para o browser. Como o framework CakePHP utiliza o padro de projeto MVC, ele prope uma diviso de camadas tornando a lgica de negcio separada da interface de apresentao para o usurio, separando tambm do fluxo de informao. Isto facilita o 24 desenvolvimento e a manuteno do cdigo do aplicativo, pois se poupa esforos e tempo de desenvolvimento quando manutenes adaptativas e corretivas necessitam ser realizadas. Segundo Macoratti (2002), a chave para a independncia entre os componentes a organizao em camadas e esta independncia visa atingir eficincia, escabilidade, reutilizao e facilidade de manuteno.
FIGURA 3 - Aplicaes em trs camadas (Fonte: MACORATTI, 2002) A Figura 3 exemplifica a separao entre a interface de apresentao representada pela lgica de apresentao, a lgica de negcio, e o fluxo de informao que esta representada pelo acesso a dados, permitindo assim que qualquer parte possa ser alterada independentemente (MACORATTI, 2002). 3.2.2 Licena MIT O CakePHP distribudo sob a licena MIT. MIT, uma licena de programas de computadores usada em softwares de cdigo livre, criada pelo Massachusetts Institute of Technology. Ela Permite a utilizao, a cpia, a modificao, a distribuio e a venda do software, com a condio que a nota de copyright seja conservada em todas as cpias, e que o nome MIT no seja utilizado como publicidade sem permisso escrita previa (MARTINI, 2000). 3.2.3 Scaffolding e Bake Console Outra importante caracterstica o Scaffolding de aplicao. E ela permite ao desenvolvedor definir e criar uma aplicao bsica com funcionalidades Create Retrieve Insert Delete (CRUD), onde o usurio poder adicionar, selecionar, atualizar e deletar objetos a partir de uma base de dados. No CakePHP essa tcnica possibilita 25 tambm para que os desenvolvedores definam as relaes entre os objetos, podendo criar e destruir essas relaes. Mas o Scaffolding apenas para aplicativos simples, sem permitir customizao da interface de apresentao.
FIGURA 4 - Tela padro do Scaffolding. QUADRO 1 - Cdigo arquivo Scaffolding 1 2 3 4 5
<?php Class AtividadesController extends AppController { Var $scaffold; } ?>
A Figura 4 ilustra um exemplo de aplicao CRUD, gerada pelo Scaffolding. No Quadro 2 mostra, a simplicidade da codificao do arquivo de controle de atividades para a gerao da interface grfica ilustrada na Figura 4. Para uma maior produtividade sem o uso do Scaffolding que no aceita alteraes, CakePHP conta com o Bake console, onde o desenvolvedor necessita apenas informar parmetros sobre a base de dados, que o bake gera toda a codificao dos arquivos MVC, permitindo ainda as customizaes conforme preciso no desenvolvimento. 3.2.4 Validao de dados Em qualquer aplicao a validao de dados um fator importante. Ela consiste em verificar se os dados digitados respeitam a lgica de negcio da aplicao. Por exemplo, limitar que algum campo aceite apenas um tipo de valor, ou ento que esse campo no aceite valor vazio(COOKBOOK, 2010). 26
FIGURA 5 - Tela com alerta de Validao QUADRO 2 - Codificao Validao de dados 1 2 3 4 5
7 <?php class Atividade extends AppModel { var $name = 'Atividade';
public $validate = array('acao' => array('rule' => 'notEmpty', 'message' => 'Campo deve ser preenchido!')); }
A Figura 5 ilustra alerta de validao, levando em considerao que foi realizada uma tentativa de salvar os dados sem preencher o campo Acao. O quadro 3 a codificao do model da Atividade, na linha 5 mostra como as regras de validao so adicionadas, criando um array $validate com o nome do campo, o tipo de regra e a mensagem a ser apresentada para o usurio. 3.3 Recursos necessrios para seu uso Para o CakePHP funcionar e obter um melhor desempenho de usabilidade e tambm de velocidade, necessrio ter alguns recursos tanto de hardware quanto de software. 3.3.1 Hardware Como o sistema foi executado em um ambiente web. O nico recurso necessrio para o lado cliente uma mquina que rode um navegador de internet compatvel. J para o servidor da aplicao o mnimo para um desempenho 27 considervel : Memria RAM de 512 Mb ou mais; Processador Intel Pentium IV, AMD Athlon 64 ou superior; 50 Gb de Disco Rgido ou mais; 3.3.2 Software Alm dos recursos de hardware, o CakePHP necessita de alguns software. No lado cliente necessrio apenas um navegador, j no servidor da aplicao, os seguintes recursos so obrigatrios: Servidor HTTP. Indicado Apache com mod_rewrite. PHP 4.3.2 ou superior. O CakePHP no necessita obrigatoriamente de um banco de dados para funcionar. Entretanto, a maioria das aplicaes desenvolvidas utilizam uma base de dados. O CakePHP da suporte para vrios sistemas de gerencia de bancos de dados, so: MySQL (4 ou superior); PostgreSQL; Firebird DB2; Microsoft SQL Server; Oracle; SQLite; ODBC; ADOdb; 3.4 Instalao e configurao Nesta seo, sero apresentados procedimentos adequados para a instalao e alteraes para a configurao correta. 28 3.4.1 Instalao O primeiro passo a ser executado fazer o download do CakePHP 1.3.8. A verso mais atual e estvel pode ser obtida em HTTPS://github.com/cakephp/cakephp/downloads.
FIGURA 6 - Pgina de Download CakePHP 1.3.8 (Fonte: GITHUB, 2011). A Figura 6 mostra a pgina de downloads do site do GitHub, onde encontra- se o link para fazer o download do arquivo. O prximo passo extrair o arquivo para uma pasta no servidor Apache. No Linux usa-se extrair para /var/www ou /srv/http, enquanto, c:/apache/htdocs para Windows(COMPJUNIOR, 2011). 29
FIGURA 7 - Estrutura de Pasta CakePHP. (Fonte: COMPJUNIOR, 2011). Na Figura 7 mostra a estrutura de pasta que o CakePHP assume depois de extrado para a pasta raiz do seu servidor.Com o CakePHP instalado, existem algumas configuraes que devem ser feitas, para torn-lo pronto para o desenvolvimento de aplicaes. 3.4.2 Configurao A configurao consiste em executar duas alteraes dentro do arquivo de configurao do Apache. A primeira liberar o mod_rewrite, qual responsvel pela reescrita de URL`s em pginas web, acessando o arquivo httpd.conf. No arquivo http.conf basta localizar a linha #LoadModule rewrite_module modules/mod_rewrite.so, e retirar o comentrio dessa linha (extrai-se o smbolo #). Ainda dentro do mesmo arquivo httpd.conf contm a propriedade AllowOverride, 30 que pode ser definida como none ou all, preciso alterar AllowOverride none para: AllowOverride All, pois se a propriedade AllowOverride estiver como none o Apache ir bloquear a reescrita de configuraes do CakePHP sobre a padro do Apache, logo para poder trabalhar com CakePHP, ter que habilitar AllowOverride para All. 3.5 Principais Mdulos 3.5.1 Helper Somada as demais caractersticas do CakePHP, contm um componente que ajuda na criao das views, chamado de Helper. Esse componente facilita a formatao de textos, horrios e nmeros alm de agilizar o desenvolvimento de funes com Ajax. Entre os Helpers que o CakePHP disponibiliza por padro tem-se: Ajax Usado em conjunto com a biblioteca Javascript Prototype para criar funcionalidade Ajax nas views. Contm mtodos de atalho para recursos de arrastar/soltar, formulrios e links Ajax, observadores e mais. Cache Usado pelo ncleo do CakePHP para fazer cachs de contedo das views. Form Cria formulrios HTML e elementos de formulrios auto preenchveis e que manipulam problemas de validao. Html Mtodos de convenincia para a criao de marcaes bem-formadas em HTML. Imagens, links, tabelas, tags de cabealho e mais. Javascript Usado para escapar valores para uso em scripts JavaScript, escrever dados para objetos JSON e formatar blocos de cdigo. Number Formatao de nmeros e moedas. Paginator Paginao de dados do model e ordenao. Rss Mtodos de convenincia para exibio de dados XML para criao de feeds RSS. Session Acesso a escrita de variveis de sesso nas views. Text Criao automtica de links (smart linking), colorao de sintaxe, truncagem 31 de palavras. Time Deteco de proximidade, formatao para strings(Hoje, 10:30 am) e converso de fusos horrios. Xml Mtodos de convenincia para criao de cabealhos e elementos XML.(COOKBOOK, 2010) 3.5.2 Componentes de Segurana Por padro o CakePHP oferece alguns componentes embutidos, esses componentes trazem mtodos capazes de tratar tarefas comumente usadas, desde a parte de segurana at mesmo funes para envio de emails. Esta seo se dedica a apresentar estes componentes. 3.5.2.1 Acess Control List Access Control List (ACL) basicamente uma lista de permisso, para definir o que cada objeto ter de permisso para acessar. Isto, facilita a manuteno e o gerenciamento de acessos de aplicaes. Deve-se lembrar de que ACL no nenhum tipo de autenticao (IBM ,2009). ACL composto por Access Object Request (ARO) e por Acess Control Object (ACO): ARO: o objeto que faz a requisio para acessar a aplicao; ACO: o objeto de controle que determina o que cada ARO poder acessar; 3.5.2.2 Auth Um fator essencial em uma aplicao web autenticao de usurios, tornando a aplicao mais confivel. A maneira que o CakePHP trata autenticao com o componente Auth, podendo ser mesclado com o componente ACL, criando nveis complexos de acessos(COOKBOOK, 2010). 3.5.2.3 Cookie 32 Cookies so informaes trocadas entre o servidor e o navegador, armazenando um arquivo texto no computador do usurio, mantendo a persistncia de sesses HTTP. 3.5.2.4 Email O componente email responsvel funo de envios de email de aplicaes em CakePHP, enviando mensagens em formato texto, HTML ou ambos, suportando anexo de arquivos juntamente com algumas configuraes de cabealhos. Esse componente por ser enviado por servidor Simple Mail Tranfer Protocol (SMTP)(COOKBOOK, 2010). 3.5.2.5 RequestHandler As informaes contidas nas requisies HTTP feitas para a aplicao podem ser capturadas pelo componente RequestHandler. Podendo tambm obter informaes adicionais do cliente(COOKBOOK, 2010). 3.5.2.6 Security O componente Security tem como funcionalidade gerenciar requisies HTTP autenticadas, por padro quando alguma solicitao for bloqueada pelo Security, apresentar para o usurio um pgina com erro 404(COOKBOOK, 2010). 3.5.2.7 Session Para a persistncia de dados do cliente entre as requisies usado o componente Session, funcionando como encapsulador da varivel $_SESSION, oferecendo tambm mtodos relacionados a mesma(COOKBOOK, 2010). 3.6 Concluses Neste captulo foram explanadas informaes sobre o framework CakePHP, 33 apresentando como se deu inicio ao framework, como se deve proceder a instalao e configurao, apresentando tambm, quais as suas principais caractersticas e mdulos. Explanando suas vantagens e desvantagens, explicando porque o framework CakePHP adequado para o desenvolvimento dessa aplicao.
34 4 MODELAGEM DO SISTEMA Neste capitulo ser apresentado a modelagem do sistema, como ao todo a produo de requisitos e o diagrama de caso de uso, apresentando o que o sistema deve conter e suas funcionalidades. 4.1 Produo de Requisitos Neste tpico ser explanado a produo de requisitos, qual se designa em obter informaes e documentar as mesmas. 4.1.1 Descrio geral do sistema O sistema tem como objetivo auxiliar no controle de informaes, sabendo que funcionalidades especficas foram definidas pelo especialista de caso. 4.1.2 Elicitao de Requisitos Elicitao de requisitos relaciona-se a obteno de requisitos dos softwares, das tcnicas utilizadas pela elicitao foram utilizadas duas delas, uma delas foi a entrevista, onde consiste em perguntas e respostas entre linhas de dilogos entre o entrevistador e o entrevistado, podendo mudar a sequncia das perguntas conforme anexo A, e a outra tcnica o questionrio, que resume-se em uma sequncia de perguntas sem logica e sem interveno de ningum conforme anexo B. 4.1.3 Registro de Requisitos 35 Nesta seo ser feito o levantamento de requisitos, baseando-se em entrevistas feitas ao Jorge Hamilton de Souza e em um arquivo em formato .xls, elaborado pelo mesmo que esta disponvel no anexo C os prints das telas. QUADRO 3 - Requisitos manter cadastro de Produtores F1 Manter informaes sobre produtores Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta de produtores. As informaes dos produtores so: id, cidade, pessoa fsica ou jurdica, nome, CPF/CNPJ, logradouro, nmero residncia, CEP, bairro, telefone, celular, observaes, data de cadastro e se esta ativo ou no. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF11.1 Identificao do produtor. O produtor deve ser identificado pelo Nome. Especifica o () (X) NF 1.2 Cidade A cidade escolhida de uma lista. Interface () (X) NF 1.3 Validao CPF/CNPJ Ser feito validao de CPF/CNPJ. Segurana () (X) NF 1.4 Ativo Apenas produtores ativos estaro disponveis no sistema. Especifica o () (X) QUADRO 4 - Requisitos manter cadastro de compradores F2 Manter informaes sobre compradores Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta de compradores. As informaes dos compradores so: id, cidade, pessoa fsica ou jurdica, nome, CPF/CNPJ, logradouro, nmero residncia, CEP, bairro, telefone, celular, observaes, data de cadastro e se o produtor esta ativo ou no. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF 2.1 Identificao do comprador. O comprador deve ser identificado pelo Nome. Especifica o () (X) NF 2.2 Cidade A cidade escolhida de uma lista. Interface () (X) NF 2.3Validao CPF/CNPJ Ser feito validao dos de CPF/CNPJ. Segurana () (X) NF 2.4 Ativo Apenas compradores ativos estaro disponveis no sistema. Especifica o () (X) QUADRO 5 - Requisitos manter cadastro de funcionrios F3 Manter informaes sobre funcionrios Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta de funcionrios. As informaes dos funcionrios so: id, nome, CPF, RG, data de nascimento, telefone, logradouro, nmero da residncia e data de admisso. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF 3.1 Identificao do funcionrio. O funcionrio deve ser identificado pelo Nome. Especifica o () (X) NF 3.2Validao CPF Ser feito validao do CPF. Segurana () (X) NF 3.3 Validao de RG Ser feito validao do RG. Segurana () (X)
36 QUADRO 6 - Requisitos manter cadastro de tipos. F4 Manter informaes sobre tipos Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta dos tipos. As informaes dos tipos so: id e nome. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF 4.1 Identificao do tipo. O tipo deve ser identificado pelo ID. Especifica o () (X) QUADRO 7 - Requisitos manter cadastro de grupos. F5 Manter informaes sobre grupos Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta dos grupos. As informaes dos grupos so: id, nome. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF 5.1 Identificao do grupo. O grupo deve ser identificado pelo ID. Especifica o () (X)
QUADRO 8 - Requisitos manter cadastro de tamanhos. F6 Manter informaes sobre tamanhos. Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta dos tamanhos. As informaes dos tamanhos so: id, tamanho e grupo. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF 6.1 Identificao do tamanho. O tamanho de fruta deve ser identificado pelo ID. Especifica o () (X) NF 6.2 Grupo O grupo escolhido de uma lista. Interface () (X) QUADRO 9 - Requisitos manter cadastro de entradas. F7 Manter informaes sobre entradas Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta das entradas. As informaes das entradas so: id, produtor, responsvel, data, motorista, placa, quantidade de bins 1 . Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF 7.1 Identificao da entrada da fruta. A entrada da fruta ser identificada por um ID. Especifica o () (X) NF 7.2 Produtor O produtor escolhido de uma lista. Interface () (X) NF 7.3 Responsvel O responsvel escolhido de uma lista. Interface () (X) 1 Bins refere-se ao suporte onde armazenado as frutas. QUADRO 10 - Requisitos manter cadastro de quantidade de entrada F8 Manter informaes sobre quantidade de entrada Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta sobre quantidades de entrada. As informaes quantidades das entradas so: id, registro, tipo de fruta e quantidade. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente 37 NF 8.1 Identificao quantidade de entrada de fruta. A quantidade de entrada da fruta ser identificada por um ID. Especifica o () (X) NF 8.2 Tipo de Fruta O tipo de fruta ser escolhido de uma lista Interface () (X) NF 8.3 Consulta As consultas apenas sero apresentadas referentes ao registro, que vinculada com a entrada de frutas. Interface () (X)
QUADRO 11 - Requisitos manter cadastro de processamento F9 Manter informaes sobre processamento Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta das entradas. As informaes sobre processamento so: id, produtor, responsvel e data de processamento. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF 9.1 Identificao de processamento. O processamento da fruta ser identificado por um ID. Especifica o () (X) NF 9.2 Produtor O produtor ser escolhido de uma lista Interface () (X) NF 9.3 Responsvel O responsvel ser escolhido de uma lista. Interface () (X)
QUADRO 12 - Requisitos manter cadastro de quantidade de processamento F10 Manter informaes sobre quantidade de processamento Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta da quantidade de processamento. As informaes sobre quantidade processamento so: id,registro, categoria, tamanho e quantidade. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF 10.1 Identificao da quantidade do processamento. A quantidade do processamento da fruta ser identificada por um ID. Especifica o () (X) NF 10.2 Categoria A categoria ser escolhida de uma lista Interface () (X) NF 10.3 Tamanho O tamanho ser escolhido de uma lista. Interface () (X) NF 10.4 Consulta As consultas apensa sero apresentadas referentes ao registro, que vinculado com o processamento das frutas. Interface () (X)
QUADRO 13 - Requisitos manter cadastro de entradas de bins. F7 Manter informaes sobre entradas de bins Oculto ( ) Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e consulta das entradas de bins. As informaes das entradas so: id, fornecedor, quantidade, valor e data. Requisitos No-Funcionais Nome Restrio Categoria Desejvel Permanente NF 7.1 Identificao da entrada da fruta. A entrada de bins ser identificada por um ID. Especifica o () (X) NF 7.2 Produtor O fornecedor escolhido de uma lista. Interface () (X) 1 Bins refere-se ao suporte onde armazenado as frutas. 38
4.1.4 Modelo de dados A partir dos dados coletados a partir do levantamento de requisitos, foi feito a modelagem do banco de dados. A figura 8 apresenta a modelagem juntamente com as relaes entre as tabelas.
FIGURA 8 - Modelagem do Banco de Dados 4.2 Diagrama de caso de uso Neste tpico ser apresente o diagrama de caso de uso, quais so especficos para mostrar um relacionamento o relacionamento entre usurio, gerente, vendedor e 39 os casos de uso.
FIGURA 9 - Diagrama de caso de uso
A figura 9 apresenta o diagrama de caso de uso. 4.3 Concluso Neste captulo foi apresentado todas as informaes necessrias da parte lgica do negocio para que o desenvolvimento do sistema seja implementado. Foram realizados entrevista e questionrios, coletados arquivos, feito o levantamento de requisito juntamente com o diagrama de caso de uso. 40 5 IMPLEMENTAO Neste captulo ser apresentado como a implementao do sistema foi desenvolvida juntamente com a IDE Zend Studio, sendo demonstrado as tcnicas de implementao do framework CakePHP. 5.1 Tecnologias Utilizadas Para se desenvolver qualquer tipo de sistema de informao, de supra importncia a escolha adequada de tecnologias para o auxilio na codificao, e ate mesmo na escolha de linguagens a se usar para programar. Ao se tornar necessrio a implementao em um ambiente Web, foi definidas as seguintes tecnologias: Servidor Apache verso 2.0; Linguagem PHP verso 5.1.1; Banco de Dados MySQL verso 5.0.16; Framework CakePHP verso 1.3.8; IDE Zend Studio verso 8.0.1; dbForce Studio Express for MySQL verso 5.0.54; DBDesigner4 verso 4.0.5.6; 5.2 Apresentao do sistema Neste tpico ser explanado todo os cdigos que foram escritos para que o sistema fosse desenvolvido, juntamente com as telas de apresentao. 41 5.2.1 Estrutura Como ponto de partida para o desenvolvimento do sistema foi definido a estrutura do banco de dados para que se pudesse ser executado a modelagem do banco de dados, a figura 8 demonstra como ficou a modelagem. Para realizar esse processo foi utilizado o software DBDesigner4, qual j me possibilita a criao do script para que assim pudesse ser inserido a tabela no banco de dados juntamente com chaves primrios e chaves estrangeiras, conforme demonstra o quadro 14. QUADRO 14 - Script gerado pela ferramenta DBDesigner4 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 CREATE TABLE compradores ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, tpessoa INTEGER NOT NULL, nome VARCHAR(128) NOT NULL, cpf_cnpj VARCHAR(22) NOT NULL, logradouro VARCHAR(256) NULL, numero INTEGER(4) UNSIGNED NULL, cep VARCHAR(12) NULL, bairro VARCHAR(128) NULL, telefone VARCHAR(16) NOT NULL, celular VARCHAR(16) NULL, obs VARCHAR(256) NULL, cadastro DATE NULL, ativo BOOL NULL DEFAULT true, cidade VARCHAR(128) NULL, PRIMARY KEY(id) ) TYPE=InnoDB;
42
FIGURA 10 - Estrutura banco de dados
Depois de inserir todas as tabelas no banco de dados, a figura 9 mostra como ficou estrutura as tabelas no banco de dados. Pelo fato do sistema ser desenvolvido baseado em um framework que tem como padro de projeto o MVC e por j ter uma estrutura de pasta pr-definida, o sistema foi codificado conforme esta estrutura. 43
FIGURA 11 - Estrutura de pasta framework CakePHP
Conforme a figura 9 demonstra a estrutura de pasta, onde: app: pasta com arquivos da lgica da sua aplicao; cake: pasta com arquivos do framework; plugins: pasta com plugins; vendors: pasta com bibliotecas PHP desenvolvidas por terceiro; Dentro da pasta app contm as subpastas onde se encontram toda a implementao toda para a lgica do negcio, dentre as pastas de importncia para esta aplicao temos: config: encontra-se arquivo com configurao para conexo com o banco de dados; controllers: encontram-se arquivos da camada de controle; model: encontram-se arquivos da camada de modelo; 44 view: encontram-se arquivos da camada de viso; 5.2.2 Desenvolvimento Depois da estrutura do sistema estar definida foi momento de dar inicio ao desenvolvimento do aplicativo, deve-se citar que o framework esta preparado para trabalhar com nomenclaturas em ingls, logo devemos alterar o arquivo chamado de inflector.php qual esta dentro da pasta cake/lib, este arquivo se responsvel por todo o padro de nomenclatura do framework. Logo foi necessrio inserir linhas de cdigos definindo nomes em singular e seu respectivo em plural em portugus como mostra o quadro 15. QUADRO 15 - Alterao cdigo inflector.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 'irregular' => array( 'mythos' => 'mythoi', 'niche' => 'niches', 'numen' => 'numina', 'occiput' => 'occiputs', 'octopus' => 'octopuses', 'opus' => 'opuses', 'ox' => 'oxen', 'person' => 'people', 'sex' => 'sexes', 'soliloquy' => 'soliloquies', 'testis' => 'testes', 'trilby' => 'trilbys', 'turf' => 'turfs', 'produtor' => 'produtores', 'comprador' => 'compradores', 'entrada' => 'entradas', 'fentrada' => 'fentradas', 'bin' => 'bins', 'funcionario' => 'funcionarios', 'fornecedor' => 'fornecedores', 'tipo' => 'tipos', 'tamanho' => 'tamanhos', 'categoria' => 'categorias', 'grupo' => 'grupos', 'classificacao' => 'classificacoes', 'fclassificacao' => 'fclassificacoes', )
Depois desse processo no tratamento de nomenclaturas foi iniciado a implementao com o arquivo de configurao do banco de dados, necessrio 45 informar apenas alguns parmetros de conexo que o framework se encarrega por todo o restante do trabalho de conexo, os parmetros so demonstrado no quadro 16. QUADRO 16 - Configurao com o banco de dados 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php class DATABASE_CONFIG {
FIGURA 12 - Tela do framework informando sobre a conexo com o banco.
A figura 11 mostra a tela de abertura padro do framework, informando ao usurio sobre o status das configuraes gerais do framework, fornecendo tambm um help sobre onde se encontram os arquivos para alterar o cdigo da pgina, essa pagina ser acessada como padro no link http://servidor/pasta raiz/, no meu caso http://localhost/PackingHouse/. Para alterar a interface do sistema e inserir os menus foi alterado o arquivo default.ctp dentro de app/views/layouts/ sendo inserido linhas de cdigo conforme o 46 quadro 17, linkando um arquivo css para dar um efeito mais amigvel aos menus. QUADRO 17 - Trecho de cdigo layout pgina principal 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 <ul id="menu" class="topmenu"> <li class="topfirst"><a href="http://localhost/PackingHouse/" title="Incio" style="height:18px;line-height:18px;">Incio</a></li> <li class="topmenu"><a href="#" title="Cadastro" style="height:18px;line-height:18px;"><span>Cadastro</span></a> <ul> <li><a href="#" title="Parmetros Gerais"><span>Parmetros Gerais</span></a> <ul> <li><a href="http://localhost/PackingHouse/tipos" title="Tipos">Tipos</a></li> <li><a href="http://localhost/PackingHouse/categorias" title="Categorias">Categorias</a></li> <li><a href="http://localhost/PackingHouse/grupos" title="Grupos">Grupos</a></li> <li><a href="http://localhost/PackingHouse/tamanhos" title="Tamanho">Tamanho</a></li> </ul>
A figura 12 mostra como a tela principal ficou depois de editado o padro do framework. O prximo passo a criao de cadastro de informaes do sistema, esse cadastro vai seguir um padro para todos os outros, logo ser explicado como foi desenvolvido o cadastro de funcionrios. Como o sistema foi desenvolvido com o padro de projeto MVC, temos trs camadas para tratar, primeiramente vamos tratar a camada de modelo, na pasta app/models foi criado o arquivo funcionario.php, conforme mostra o quadro 18. QUADRO 18 - Codificao arquivo funcionario.php 1 2 3 4 5 <?php class Funcionario extends AppModel { var $name = 'Funcionario'; } ?>
Depois de criar a camada de modelo para o cadastro de funcionrios deve-se criar a camada de controle, onde ter todo das aes de insero, edio, remoo e 48 viso do cliente. Por padro de nomenclatura devemos criar o arquivo funcionarios_controlle.php dentro da pasta app/controllers/, o quadro 19 demonstra como fica a codificao para a visualizao geral de registro de funcionrios, qual ser responsvel pela function index. QUADRO 19 - Codificao de index do arquivo funcionarios_controller.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?php class FuncionariosController extends AppController {
var $name = 'Funcionarios';
// Added by Jason Wydro: Simple Auth CakePHP v1.0 function beforeFilter() { parent::beforeFilter(); $this->Auth->allow('index','view'); } // End
Para se adicionar a ao de viso para visualizar registros especficos deve-se inserir a function view como demonstra o quadro 20. QUADRO 20 - Codificao de view do arquivo funcionarios_controller.php 1 2 3 4 5 6 7 8 9 function view($id = null) { if (!$id) { $this->Session->setFlash(__('Funcionario invlido', true)); $this->redirect(array('action' => 'index')); } $this->set('funcionario', $this->Funcionario- >read(null, $id)); }
Para se adicionar a ao de insero para inserir registros deve-se inserir a function add como demonstra o quadro 21. QUADRO 21 - Codificao de insert do arquivo funcionarios_controller.php 49 1 2 3 4 5 6 7 8 9 10 11 12 13 14 function add() { if (!empty($this->data)) { $this->Funcionario->create(); if ($this->Funcionario->save($this->data)) { $this->Session->setFlash(__('Funcionario salvo com sucesso', true)); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('Funcionario no foi salvo. Por favor, tente novamente.', true)); } } }
Para se adicionar a ao de edio para editar registros deve-se inserir a function edit como demonstra o quadro 22. QUADRO 22 - Codificao de edit do arquivo funcionarios_controller.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 function edit($id = null) { if (!$id && empty($this->data)) { $this->Session->setFlash(__('Funcionario invlido', true)); $this->redirect(array('action' => 'index')); } if (!empty($this->data)) { if ($this->Funcionario->save($this->data)) { $this->Session->setFlash(__('Funcionario salvo com sucesso', true)); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('Funcionario no foi salvo. Por favor, tente novamente.', true)); } } if (empty($this->data)) { $this->data = $this->Funcionario->read(null, $id); } }
Para se adicionar a ao de excluso para excluir registros deve-se inserir a function edit como demonstra o quadro 23. QUADRO 23 - Codificao de edit do arquivo funcionarios_controller.php 50 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 function delete($id = null) { if (!$id) { $this->Session->setFlash(__('ID invlido para funcionario', true)); $this->redirect(array('action'=>'index')); } if ($this->Funcionario->delete($id)) { $this->Session->setFlash(__('Funcionario deletado', true)); $this->redirect(array('action'=>'index')); } $this->Session->setFlash(__('No foi possvel deletar funcionario', true)); $this->redirect(array('action' => 'index')); } if (!empty($this->data)) { if ($this->Funcionario->save($this->data)) { $this->Session->setFlash(__('Funcionario salvo com sucesso', true)); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('Funcionario no foi salvo. Por favor, tente novamente.', true)); } } if (empty($this->data)) { $this->data = $this->Funcionario->read(null, $id); } }
Percebe-se que para todo caso, j est includo as mensagens que sero apresentadas para o usurio na camada de viso, cada funo tem mensagens especificas e tambm informando a situao da ao. Prximo passo depois da implementao da camada de controle por fim a camada da viso, onde ser tratado a interface apresentada para o usurio. Na pasta app/views/ ser criado uma pasta com o nome de funcionrios, para dentro dessa pasta criar trs arquivos diferentes, o arquivo index.ctp, ,view.ctp, add.ctp, edit.ctp. Para o arquivo index.ctp, informado quais campos voc deseja que aparea juntamente com as aes que o usurio pode tomar a partir dessa pgina, temos conforme demonstra o quadro 24. QUADRO 24 - Codificao arquivo index.ctp 51 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 <tr> <th><?php echo $this->Paginator- >sort('id');?></th> <th><?php echo $this->Paginator- >sort('nome');?></th> <th><?php echo $this->Paginator- >sort('cpf_cnpj');?></th> <th><?php echo $this->Paginator- >sort('celular');?></th> <th><?php echo $this->Paginator- >sort('cadastro');?></th> <th class="actions"><?php __('Aes');?></th> </tr> <?php $i = 0; foreach ($funcionarios as $funcionario): $class = null; if ($i++ % 2 == 0) { $class = ' class="altrow"'; } ?> <tr<?php echo $class;?>> <td><?php echo $funcionario['Funcionario']['id']; ?> </td> <td><?php echo $funcionario['Funcionario']['nome']; ?> </td> <td><?php echo $funcionario['Funcionario']['cpf']; ?> </td> <td><?php echo $funcionario['Funcionario']['telefone']; ?> </td> <td><?php echo $funcionario['Funcionario']['admissao']; ?> </td> <td class="actions"> <?php echo $this->Html->link(__('Visualizar', true), array('action' => 'view', $funcionario['Funcionario']['id'])); ?> <?php echo $this->Html->link(__('Editar', true), array('action' => 'edit', $funcionario['Funcionario']['id'])); ?> <?php echo $this->Html->link(__('Deletar', true), array('action' => 'delete', $funcionario['Funcionario']['id']), null, sprintf(__('Tem certeza de que deseja excluir # %s?', true), $funcionario['Funcionario']['nome'])); ?> </td>
52
FIGURA 14 - Tela referente ao arquivo index.ctp
A figura 13 apresenta como a tela de apresentao para o usurio referente ao arquivo index.ctp foi formada. Para o arquivo view.ctp voc deve informar todos os casos do registro, conforme mostra o trecho de cdigo no quadro 25. QUADRO 25 - Trecho de cdigo do arquivo view.ctp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <div class="funcionarios view"> <h2><?php __('Funcionrio');?></h2> <dl><?php $i = 0; $class = ' class="altrow"';?> <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Id'); ?></dt> <dd<?php if ($i++ % 2 == 0) echo $class;?>> <?php echo $funcionario['Funcionario']['id']; ?> </dd> <dt<?php if ($i % 2 == 0) echo $class;?>><?php __('Nome'); ?></dt> <dd<?php if ($i++ % 2 == 0) echo $class;?>> <?php echo $funcionario['Funcionario']['nome']; ?> </dd> <dt<?php if ($i % 2 == 0) echo $class;?>><?php 53 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 __('CPF'); ?></dt> <dd<?php if ($i++ % 2 == 0) echo $class;?>> <?php echo ($funcionario['Funcionario']['cpf']); ?> </dd> </dl> </div> <div class="actions"> <h3><?php __('Aes'); ?></h3> <ul> <li><?php echo $this->Html->link(__('Editar', true), array('action' => 'edit', $funcionario['Funcionario']['id'])); ?> </li> <li><?php echo $this->Html->link(__('Deletar', true), array('action' => 'delete', $funcionario['Funcionario']['id']), null, sprintf(__('Tem certeza que desejar excluir o funcionario: # %s?', true), $funcionario['Funcionario']['nome'])); ?> </li> <li><?php echo $this->Html->link(__('Lista', true), array('action' => 'index')); ?> </li> <li><?php echo $this->Html->link(__('Novo', true), array('action' => 'add')); ?> </li> </ul> </div>
FIGURA 15 - Tela referente ao arquivo view.ctp
A figura 14 apresenta como a tela de apresentao para o usurio referente 54 ao arquivo view.ctp foi formada. Para o arquivo add.ctp necessrio informar os dados que o usurio dever registrar, conforme o quadro 26. QUADRO 26 - Cdigo do arquivo add.ctp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <div class="funcionarios form"> <?php echo $this->Form->create('Funcionario');?> <fieldset> <legend><?php __('Adicionando Funcionrio'); ?></legend> <?php echo $this->Form->input('nome'); echo $this->Form->input('cpf'); echo $this->Form->input('rg'); echo $this->Form->input('nascimento', array('dateFormat'=>'DMY','timeFormat'=>'NONE')); echo $this->Form->input('logradouro'); echo $this->Form->input('numero'); echo $this->Form->input('telefone'); echo $this->Form->input('admissao', array('dateFormat'=>'DMY','timeFormat'=>'NONE')); echo $this->Form->input('ativo'); echo $this->Form->input('obs', array('type' => 'textarea', 'escape' => false)); ?> </fieldset> <?php echo $this->Form->end(__('Salvar', true));?>
FIGURA 16 - Tela referente arquivo add.ctp A figura 15 mostra como a tela de apresentao para o usurio referente ao arquivo add.ctp foi formada. Para o arquivo edit.ctp necessrio informar os dados que o usurio dever editar, seguindo um mesmo padro de codificao que o arquivo add.ctp, conforme o quadro 27. QUADRO 27 - Cdigo do arquivo edit.ctp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <div class="funcionarios form"> <?php echo $this->Form->create('Funcionario');?> <fieldset> <legend><?php __('Editando Funcionrio'); ?></legend> <?php echo $this->Form->input('nome'); echo $this->Form->input('cpf'); echo $this->Form->input('rg'); echo $this->Form->input('nascimento', array('dateFormat'=>'DMY','timeFormat'=>'NONE')); echo $this->Form->input('logradouro'); echo $this->Form->input('numero'); echo $this->Form->input('telefone'); echo $this->Form->input('admissao', array('dateFormat'=>'DMY','timeFormat'=>'NONE')); echo $this->Form->input('ativo'); echo $this->Form->input('obs', array('type' => 'textarea', 'escape' => false)); 56 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ?> </fieldset> <?php echo $this->Form->end(__('Salvar', true));?> </div> <div class="actions"> <h3><?php __('Aes'); ?></h3> <ul> <li><?php echo $this->Html->link(__('Deletar', true), array('action' => 'delete', $this->Form- >value('Funcionario.id')), null, sprintf(__('Tem certeza que desejar excluir o funcionario: %s?', true), $this->Form- >value('Funcionario.nome'))); ?></li> <li><?php echo $this->Html->link(__('Lista', true), array('action' => 'index'));?></li> </ul> </div>
FIGURA 17 - Tela apresentao referente arquivo edit.ctp
A figura 16 mostra como a tela de apresentao para o usurio referente ao arquivo add.ctp foi formada. Ainda para este modelo temos algumas funcionalidades que pode ser adicionada, como de grande importncia a validao de dados, essa validao ser tratada na camada de modelo, conforme mostra o quadro 28. 57 QUADRO 28 - Validao de dados arquivo funcionario.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <?php class Funcionario extends AppModel { var $name = 'Funcionario'; var $displayField = 'nome';
var $validate = array( 'nome' => array( 'rule' => 'notEmpty', 'message' => 'Campo Obrigatrio'), 'cpf' => array( 'rule' => 'numeric', 'required' => true, 'message' => 'Este campo aceita apenas nmero'), 'rg' => array( 'rule' => 'numeric', 'allowEmpty' => true, 'message' => 'Este campo aceita apenas numrico'), 'numero' => array( 'rule' => 'numeric', 'allowEmpty' => true, 'message' => 'Este campo aceita apenas numrico'), 'telefone' => array( 'rule' => 'numeric', 'allowEmpty' => true, 'message' => 'Este campo aceita apenas numrico')); } ?>
FIGURA 18 - Tela de validao de dados Segundo a figura 17, temos a validao de dados para o campo cnpj, que permiti apenas nmeros e foi tentando inserir um registro com valor alfanumrico, 58 assim o sistema apresenta o erro e continua com os dados nos campos. Temos o cadastro completo de funcionrios, para realizar os outros cadastros seguindo apenas esse padro.
5.3 Concluso Neste captulo foi demonstrado passo a passo de todo o processo de codificao do sistema, desde a definio da base de dados e sua criao, modificaes no arquivo do prprio framework, criao de configurao com banco de dados, criao de cadastro. Importante citar que foi encontrado dificuldades ao desenvolver o sistema, onde ficou concentrado basicamente no entendimento do framework. Tratando de um framework fundamentado no padro de projeto MVC, houve a necessidade primeiramente de um estudo sobre esse padro de projeto, posteriormente foram encontradas dificuldades no momento da configurao do framework, dificuldades durante o desenvolvimento foram surgindo, porm essas dificuldades foram ultrapassadas, e chego assim ao desenvolvimento total do sistema.
59 6 CONSIDERAES FINAIS Este trabalho teve como principal objetivo desenvolver um sistema para auxiliar gestores de Packing House, sendo utilizado o framework CakePHP, especfico para linguagem PHP. Durante o trabalho foi realizado um estudo para entendimento da regra de negcio do sistema e do framework CakePHP, conhecendo assim mtodos e funes que pudessem auxiliar no desenvolvimento. Durante a realizao deste trabalho dvidas e dificuldades foram encontradas, a maior dificuldade para o desenvolvimento do sistema foi o entendimento do funcionamento do framework CakePHP, dessa maneira, foi feito um estudo aprofundado de todas as propriedades e recursos que o framework disponibiliza ou no. O primeiro Objetivo Especfico foi alcanado com sucesso ao aplicar questionrios, realizar entrevistas e coletar materiais com o especialista no caso Jorge Hamilton de Souza. Aps concluir o primeiro Objetivo Especfico, o segundo Objetivo foi iniciado, tambm sendo alcanado com sucesso, quando foi definida a arquitetura do sistema. O terceiro Objetivo Especfico foi alcanado em grande parte do proposto, para a implementao no foi possvel codificar a parte de gerao de relatrios, pois para esse objetivo era necessrio que o especialista no caso definisse quais os relatrios desejados. Para o quarto Objetivo Especfico, foi alcanado com sucesso, juntamente com o desenvolvimento eram feito paralelamente testes focados a encontrar erros e 60 quando encontrados eram solucionados e por fim foi implantado o sistema. Importante esclarecer neste trabalho a eficincia e o rendimento do framework CakePHP, mas para que se possa aproveitar o mximo do framework de extrema importncia o estudo aprofundado primeiramente. Alm do fato de CakePHP trabalhar com orientao a objeto e com padro de projeto MVC. Um ponto negativo encontrado no framework CakePHP a ausncia, ao menos por enquanto, de classes para auxiliar gerao de relatrios. Como sugesto de trabalhos futuros, indico estudar o CakePHP com a ltima verso, desenvolvendo um sistema que auxilie agricultores na plantao frutos .
REFERNCIAS BIBLIOGRFICAS MARTINS, Petrnio Garcia; ALT, Paulo Renato Campos. Administrao de materiais e recursos patrimoniais. So Paulo: Saraiva, 2000. 353 p. PETERS, J.E.; PEDRYCZ, W. Engenharia de Software Teoria e Prtica: Editora Campus, 2001. 438 p. COOKBOOK. O manual do CakePHP. Disponvel em: <http://www.book.cakephp.org>. Acessado em 11 mai. 2011. PORTALBRASIL, A sua biblioteca virtual. Disponvel em: < http://www.portalbrasil.net/2005/colunas/administracao/julho.html>. Acessado em 14 jun. 2010. CAKEPHP. Framework PHP de desenvolvimento rpido. Disponvel em: <http://www.cakephp.org>. Acessado em: 11 mai. 2011. GONALVES, E. Desenvolvendo aplicaes web com JSP, Servlet, JavaServer Faces, Hibernate, EJB3 persistence, Ajax. Rio de Janeiro: Cincia Moderna, 2007. LEMOS, T. O que o MVC - Model View Controller. Disponvel em:< http://www.tiagolemos.com.br/2009/07/10/o-que-e-o-mvc-model-view-controller/>. Acessado em: 20 jun. 2010. MACORATTI. Padres de Projeto: O modelo MVC Model View Controller. Disponvel em: <http://www.macoratti.net/vbn_mvc.htm>. Acessado em: 11 mai. 2011. MARTINI. Licenas e Copyrights. Disponvel em: <http://www.torradeira.net/licencas-e- copyrights>. Acessado em: 11 mai. 2011. GITHUB. Social Coding. Disponvel em: <http://www.github.com/cakephp/cakephp/downloads>. Acessado em: 17 mai. 2011. COMPJUNIOR. Tutorial de Instalao do CakePHP. Disponvel em: <http://http://blog.compjunior.com.br/artigos/desenvolvimento/tutorial-de-instalacao-do- cakephp/>. Acessado em: 17 mai. 2011. IBM, Crie Web sites rapidamente com CakePHP, Parte 2: Faa mais e melhor com CakePHP. Disponvel em: <http://www.ibm.com/developerworks/br/library/os-php- cake2/section5.html>. Acessado em: 23 de Jun. 2011. CHITARRA, M.I.F. Ps-colheita de frutos e hortalias: fisiologia e manuseio. Lavras: ESAL/FAEPE, 1994, 289p. AWAD, M. Fisiologia ps-colheita de frutos. So Paulo: Nobel, 1993, 114p.
APNDICES APNDICE A - ARTIGO ......................................................................................... 41
APNDICE A - ARTIGO Aplicaes Web com framework CakePHP
Thiago Luiz Nunes de Souza Universidade do Planalto Catarinense (UNIPLAC) Lages SC Brasil lnsthiago@gmail.com Abstract. This article aims to briefly describe the CakePHP framework, from its history to the development of a system, thus demonstrating how the technology works in practice and what it has to offer. The example is used to develop a system of news. The CakePHP framework provides a robust application development, reliable, graphical interfaces friendly and independent of the level of the developer, leaving the tedious hand-side programs out. Resumo. Este artigo tem como objetivo descrever brevemente o framework CakePHP, desde sua histria at o desenvolvimento de um sistema, demonstrando assim como a tecnologia funciona na prtica e o que ela tem para oferecer. O exemplo usado para o desenvolvimento um cadastro de notcias. O framework CakePHP oferece um desenvolvimento de aplicaes robustas, confiveis, com interfaces grficas amigveis e independente do nvel do desenvolvedor, deixando o lado montono de programar de fora. 1. Introduo Em 2005 Michal Tatarynowicz desenvolveu um framework simples em PHP, chamando-o de Cake. Posteriormente percebendo que o framework tinha uma base interessante, publicou o cdigo sob a licena Massachusetts Institute of Technology (MIT) onde agregou ao seu trabalho uma comunidade de programadores que matm o framework at hoje chamado de CakePHP. CakePHP um framework gratuito de cdigo aberto, desenvolvido em PHP baseado nos conceitos de Ruby on Rails. O objetivo principal permitir o desenvolvimento robusto de aplicaes para qualquer nvel de programadores e deixando de lado a monotonia tradicional da implementao(COOKBOOK, 2010). CakePHP traz consigo uma equipe de desenvolvedores e uma grande comunidade, agregando e potencializando o crescimento do framework. O framework usa design patterns conhecidos como Model View Controller (MVC) e Object Relational Mapping (ORM) com conveno sobre paradigma da configurao. A vantagem maior do uso dos padres permitir, reduo d o custo do desenvolvimento, bem como ajudar os desenvolvedores a escreverem menos cdigos, facilitando a manuteno (CAKEPHP, 2010).
2. Caractersticas O framework utiliza o padro de projeto MVC, ele prov uma diviso de camadas tornando a lgica de negcio separada da interface de apresentao para o usurio, separando tambm do fluxo de informao. Isto facilita o desenvolvimento e a manuteno do cdigo do aplicativo, pois se poupa esforo e tempo de desenvolvimento quando manutenes adaptativas e corretivas necessitam ser realizadas. Segundo Macoratti (2002), a chave para a independncia entre os componentes a organizao em camadas e esta independncia visa atingir eficincia, escabilidade, reutilizao e facilidade de manuteno.
FIGURA 19 - Aplicaes em trs camadas (Fonte: MACORATTI, 2002) A Figura 18 exemplifica a separao entre a interface de apresentao representada pela lgica de apresentao, a lgica de negcio, e o fluxo de informao que esta representada pelo acesso a dados, permitindo assim que qualquer parte possa ser alterada independentemente (MACORATTI, 2002). O CakePHP distribudo sob a licena MIT. MIT, uma licena de programas de computadores usada em softwares de cdigo livre, criada pelo Massachusetts Institute of Technology. Ela Permite a utilizao, a cpia, a modificao, a distribuio e a venda do software, com a condio que a nota de copyright seja conservada em todas as cpias, e que o nome MIT no seja utilizado como publicidade sem permisso escrita previa (MARTINI, 2000). Outra importante caracterstica o Scaffolding de aplicao. E ela permite ao desenvolvedor definir e criar uma aplicao bsica com funcionalidades Create Retrieve Insert Delete (CRUD), onde o usurio poder adicionar, selecionar, atualizar e deletar objetos a partir de uma base de dados. No CakePHP essa tcnica possibilita tambm os desenvolvedores definirem as relaes entre os objetos, podendo criar e destruir essas relaes. Mas o Scaffolding apenas para aplicativos simples, sem permitir customizao da interface de apresentao.
FIGURA 20 - Tela padro do Scaffolding. QUADRO 29 - Cdigo arquivo Scaffolding
1 2 3 4 5
<?php Class AtividadesController extends AppController { Var $scaffold; } ?>
A Figura 19 ilustra um exemplo de aplicao CRUD, gerada pelo Scaffolding. No Quadro 29 mostra, a simplicidade da codificao do arquivo de controle de atividades para a gerao da interface grfica ilustrada na Figura 4. Para uma maior produtividade sem o uso do Scaffolding que no aceita alteraes, CakePHP conta com o Bake console, onde o desenvolvedor necessita apenas informar parmetros sobre a base de dados, que o bake gera toda a codificao dos arquivos MVC, permitindo ainda as customizaes conforme o desenvolver precise. Em qualquer aplicao a validao de dados um fator importante. Ela consiste em verificar se os dados digitados respeitam a lgica de negcio da aplicao. Por exemplo, limitar que algum campo aceite apenas um tipo de valor, ou ento que esse campo no aceite valor vazio(COOKBOOK, 2010).
FIGURA 21 - Tela com alerta de Validao QUADRO 30 - Codificao Validao de dados 1 2 3 4 5
7 <?php class Atividade extends AppModel { var $name = 'Atividade';
public $validate = array('acao' => array('rule' => 'notEmpty', 'message' => 'Campo deve ser preenchido!')); }
A Figura 20 ilustra alerta de validao, levando em considerao que foi realizado uma tentativa de salvar os dados sem preencher o campo Acao. O quadro 30 a codificao do model da Atividade, na linha 5 mostra como as regras de validao so adicionadas, criando um array $validate com o nome do campo, o tipo de regra e a mensagem a ser apresentada para o usurio.
Somada as demais caractersticas do CakePHP, o mesmo contm um componente que ajuda na criao das views, chamado de Helper. Esse componente facilita a formatao de textos, horrios e nmeros alm de agilizar o desenvolvimento de funes com Ajax. Entre os Helpers que o CakePHP disponibiliza por padro tem-se: Ajax, Cache, Form, Html, Javascript, Number, Paginator, Rss, Session, Tex, Time, Xml. Por padro o CakePHP oferece alguns componentes embutidos, esses componentes trazem mtodos capazes de tratar tarefas comumente usadas, desde a parte de segurana at mesmo funes para envio de emails. Esta seo se dedica a apresentar estes componentes. Access Control List (ACL) basicamente uma lista de permisso, para definir o que cada objeto ter permisso para acessar. Isto, facilita a manuteno e o gerenciamento de acessos. Deve-se lembrar que ACL no nenhum tipo de autenticao (IBM ,2009). ACL composto por Access Object Request (ARO) e por Acess Control Object (ACO): ARO o objeto que faz a requisio para acessar a aplicao, enquanto, ACO o objeto de controle que determina o que cada ARO poder acessar; Um fator essencial em uma aplicao web autenticao de usurios, tornando a aplicao mais confivel. A maneira que o CakePHP trata autenticao com o componente Auth, podendo ser mesclado com o componente ACL, criando nveis complexos de acessos(COOKBOOK, 2010). Cookies so informaes trocadas entre o servidor e o navegador, armazenando um arquivo texto no computador do usurio, mantendo a persistncia de sesses HTTP. O componente email responsvel funo de envios de email de aplicaes em CakePHP, enviando mensagens em formato texto, HTML ou ambos, suportando anexo de arquivos juntamente com algumas configuraes de cabealhos. Esse componente por ser enviado por servidor Simple Mail Tranfer Protocol (SMTP) (COOKBOOK, 2010). As informaes contidas nas requisies HTTP feitas para a aplicao podem ser capturadas pelo componente RequestHandler. Podendo tambm obter informaes adicionais do cliente (COOKBOOK, 2010). O componente Security tem como funcionalidade gerenciar requisies HTTP autenticadas, por padro quando alguma solicitao for bloqueada pelo Security, apresentar para o usurio uma pgina com erro 404(COOKBOOK, 2010). Para a persistncia de dados do cliente entre as requisies usado o componente Session, funcionando como encapsulador da varivel $_SESSION, oferecendo tambm mtodos relacionados mesma (COOKBOOK, 2010).
3. Desenvolvimento Para o desenvolvimento com CakePHP necessrio um servidor HTTP, preferencialmente o Apache, PHP 4 ou posterior e uma base de dados, podendo ser: MySQL, PostGres, SQL Server, Oracle, SQLite, ODBC, ADOdb e Firebird BD2. Baixe o pacote com os arquivos necessrios do caminho http://cakephp.org, descompacte os arquivos dentro da pasta de servidor Web.
FIGURA 22 - Tela pasta CakePHP descompactada Na figura 21 demonstra como fica a disposio de pasta ao descompactar a pasta do framework CakePHP. Digitando em um navegador qualquer o endereo: http://localhost/cakephp deve aparecer a seguinte pgina:
FIGURA 23 - Tela informando dados CakePHP A figura 22 apresenta a tela inicial da pgina local com CakePHP acessado por um navegador. Temos para a aplicao trs operaes bsicas que o sistema deve realizar, entre elas esto: Listar, Adicionar, Editar e Deletar. A partir dessas informaes deve-se configurar a conexo com o banco de dados, esta configurao encontra-se dentro do arquivo database.php.default na pasta app/config, aps a configuracao alterar o nome para database.php. QUADRO 31 - Codificao da configurao com banco de dados
O quadro 31 ilustra a codificao do arquivo de configurao com o banco de dados, onde voc precisa apenas definir as informaes para o banco que quer acessar. Depois de configurado o arquivo de configurao com o banco o momento de voc criar a tabela de noticias, vamos chamar essa tabela de posts. QUADRO 32 - Script criao tabela de posts 1 2 3 4 5 6 7 CREATE TABLE posts( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), body VARCHAR(512), created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL );
No quadro 31 esta o script para criar a tabela dentro do banco de dados definido no arquivo de configurao. Prximo passo criar um arquivo chamado post.php dentro da pasta app/models. QUADRO 33 - Codificao arquivo post.php 1 2 3 4 5 <?php class Post extends AppModel { var $name = 'Post'; } ?>
No quadro 33 contm a codificao do arquivo da parte do model, prximo passo codificar o arquivo do pots_controller.php dentro da pasta app/controller. QUADRO 34 - Codificao arquivo posts_controller.php 1 2 3 4 5 6 <?php class PostsController extends AppController { var $name = 'Posts'; var $scaffold; } ?>
No quadro 34 esta a codificao do arquivo posts_controller.php, como foi definido nesse arquivo o scaffold, o framework cria automaticamente a parte de interface grfica e deixando teu sistema pronto, basta apenas acessar o endereo http://localhost/cakephp/posts.
FIGURA 24 - Tela de index dos cadastros de noticias A figura 23 apresenta a tela de index dos cadastro de notcias.
FIGURA 25 - Tela de insero de noticias
A figura 24 apresenta a tela de insero de notcias.
FIGURA 26 - Tela de edio de notcias
A figura 25 apresenta a tela de edio de notcias.
FIGURA 27 - Aviso ao excluir notcia
Na figura 26 mostra um aviso apresentado para o usurio no momento de excluso de notcias. 4. Concluso Este artigo teve como objetivo realizar um estudo sobre o framework CakePHP e, posteriormente, desenvolver uma aplicao proposta como intuito de exemplificar a simplicidade na codificao. Durante o desenvolvimento do artigo foram apresentadas dados histricos do framework, as suas caracterstica juntamente com seus principais mdulos, foi explanado tambm a maneira de como desenvolver um aplicao simples. Importante ressaltar a facilidade com que se pode desenvolver um sistema web robusto, alm da mnima quantidade de linhas necessrias para se desenvolver.
5. Referencia Bibliogrfica COOKBOOK. O manual do CakePHP. Disponvel em: <http://www.book.cakephp.org>. Acessado em 11 mai. 2011. CAKEPHP. Framework PHP de desenvolvimento rpido. Disponvel em: <http://www.cakephp.org>. Acessado em: 11 mai. 2011. MACORATTI. Padres de Projeto: O modelo MVC Model View Controller. Disponvel em: <http://www.macoratti.net/vbn_mvc.htm>. Acessado em: 11 mai. 2011. MARTINI. Licenas e Copyrights. Disponvel em: <http://www.torradeira.net/licencas-e- copyrights>. Acessado em: 11 mai. 2011.
ANEXOS ANEXO A - ENTREVISTA ...................... ERRO! INDICADOR NO DEFINIDO. ANEXO B - QUESTIONRIO .................................................................................. 3 ANEXO C - PRINT ARQUIVO XLS ........................................................................ 4
ANEXO A - ENTREVISTA 1) Qual a importncia do aplicativo para o Packing House? O aplicativo ir facilitar o controle de estoque, ir fornecer informaes conforme a necessidade, disponibilizar o acesso s informaes.
2) Qual o objetivo da implementao do sistema? A implementao do sistema deve possibilitar a incluso de registro feitos hoje em papel, salvando as informaes em um banco de dados. Podendo ser visualizado e alterado de qualquer computador no domnio da empresa.
3) Quais os principais dados de entrada so necessrios? necessrio ter a entrada de dados referente aos seguintes tipos: funcionrios, fornecedores, compradores, produtores, tipos, tamanhos, categorias, grupos, entrada de bins, entrada de carga, classificao e a sada de frutos.
ANEXO B - QUESTIONRIO 1) Qual o principal objetivo de um Packing House? Agregar valor s frutas atravs do beneficiamento, logstica e desconcentrao da oferta do perodo de colheita.
2) Quais so os principais processos executados dentro do Packing House?
Expedio de vasilhames (bins) para colheita, recebimento das frutas vindas do campo, estocagem das frutas em cmaras frigorficas, separao das frutas por calibre e qualidade, empacotamento e expedio de frutas para o mercado.
3) Quais os principais problemas encontrados na gesto de um Packing House? A dificuldade em estabelecer sistemas de registros apropriados para acompanhamento e controle dos processos em packing de frutas.
4) Tem alguma soluo em vista para esse(s) problema(s)? Temos expectativas do surgimento de ferramentas, na rea de TI especficas para o setor que estejam ao alcance das pequenas e mdias empresas.
5) Qual sua opinio sobre Tecnologia de Informao dentro da sua rea de gesto?
Um sistema informatizado que seja gil na alimentao de dados e principalmente prtico na obteno de relatrios, sem duvida alguma , traria maior clareza na leitura e gesto da empresa
6) Acredita que um aplicativo possa trazer benefcios para a gesto? Sim, acreditamos que atravs um aplicativo adequado poderamos ter melhoria na gesto.