CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTONIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS ISABELA DA SILVA BARBOZA LARAISA DA SILVA BARBOZA SISTEMA DE INFORMAÇÃO WEB PARA GERENCIAMENTO COMERCIAL APLICADO AO RAMO DE CONFECÇÕES LINS/SP 2º SEMESTRE/2014 CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTONIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS ISABELA DA SILVA BARBOZA LARAISA DA SILVA BARBOZA SISTEMA DE INFORMAÇÃO WEB PARA GERENCIAMENTO COMERCIAL APLICADO AO RAMO DE CONFECÇÕES Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins para obtenção do Título de Tecnólogo (a) em Banco de Dados. Orientador: Prof. Me. Anderson Pazin LINS/SP 2° SEMESTRE/2014 ISABELA DA SILVA BARBOZA LARAISA DA SILVA BARBOZA SISTEMA DE INFORMAÇÃO WEB PARA GERENCIAMENTO COMERCIAL APLICADO AO RAMO DE CONFECÇÕES Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins “Prof. Antonio Seabra”, como parte dos requisitos necessários para a obtenção do título de Tecnólogo em Banco de Dados sob orientação do Prof. Me. Anderson Pazin Data de aprovação: 02 de Dezembro de 2014 ________________________________________ Orientador: Prof. Me. Anderson Pazin ________________________________________ Prof. Me. Mário Henrique de Souza Pardo ________________________________________ Prof. Me. Marcel Santos Silva Dedico este trabalho a Deus, cuja misericórdia e graça sempre estiveram presentes em minha vida, e à minha família que não mediram esforços para que eu pudesse completar mais essa jornada. Isabela da Silva Barboza Dedico este trabalho a Deus, por sempre me iluminar e guiar pelo caminho certo, aos meus pais Reginaldo e Sônia e meus irmãos Isabela e Fabiano, que sempre estiveram me apoiando e incentivando, assim como ao meu namorado Thiago pelo companheirismo e paciência durante todo o tempo da minha formação. Laraisa da Silva Barboza AGRADECIMENTOS Primeiramente agradeço a Deus por me ajudar em todos os momentos de dificuldade e nunca ter me abandonado. Agradeço aos meus pais Reginaldo e Sônia e meus irmãos Fabiano e Laraisa por me apoiarem e incentivarem incondicionalmente durante todo o tempo da minha formação, a eles devo tudo que sou hoje. Meu sincero agradecimento ao meu orientador Prof. Me. Anderson Pazin pela paciência e orientação dada que tornaram possível a conclusão deste trabalho, a Prof. Me. Luciane Noronha do Amaral pelos seus conselhos e correções e aos demais professores que estiveram presentes nessa caminhada. Aos meus colegas do NIT que me ajudaram quando precisei e a todos que direta ou indiretamente colaboraram na minha formação, o meu muito obrigada. Isabela da Silva Barboza AGRADECIMENTOS Agradeço em primeiro lugar a Deus por sempre me iluminar e por ter me dado saúde e força para superar as dificuldades. Aos familiares, meus pais Reginaldo e Sônia que não mediram esforços para que eu chegasse até esta etapa de minha vida, meu irmão Fabiano pela amizade e atenção quando precisei e minha irmã e parceira de grupo Isabela, pela cooperação e companheirismo, que me auxiliou no desenvolvimento deste trabalho. Ao meu namorado Thiago pelo amor, carinho, apoio, incentivo e paciência durante todo tempo de minha formação. Aos meus colegas Jeison, Lucas e Ricardo por terem me ajudado quando precisei. Agradeço também a todos os professores pelo aprendizado que me proporcionaram, em especial ao meu orientador Prof. Me. Anderson Pazin pelas suas orientações que tornaram possível a conclusão desta monografia e a Prof. Me. Luciane Noronha do Amaral pelas dicas e correções ortográficas. À Fatec Lins por ter me proporcionado esta oportunidade valiosa. A todos que direta ou indiretamente participaram da minha formação, o meu muito obrigada. Laraisa da Silva Barboza RESUMO A informação é um dos principais motores da atividade humana e, sendo assim, independentemente do porte, atividade ou natureza de uma empresa, é inegável que há necessidade cada vez maior de informações para que possam prosseguir e alcançar os objetivos a que se propõem. Partindo deste princípio, sistemas de informação surgem como uma forma de garantir que todo fluxo de uma empresa no que diz respeito às informações, seja organizado em um sistema informatizado, com o intuito de auxiliar na automatização dos processos e tomada de decisões, para que se concretizem as intenções da empresa em ações. Sendo assim, este trabalho propõe o desenvolvimento de um sistema de informação web para o gerenciamento da empresa denominada Amanda Modas, cujo objetivo é o de proporcionar agilidade e controle eficaz em todos os seus processos de gestão, tais como entradas e saídas de produtos, relatórios, cadastros, controle de estoque e consultas. Para que fosse possível desenvolver o sistema, foram utilizados os frameworks Java Server Faces (JSF), PrimeFaces e Hibernate, além do banco de dados MySQL e a linguagem de programação Java, para mais também foram realizadas entrevistas com a proprietária da empresa a fim de levantar os requisitos necessários, como também pesquisas sobre as bases tecnológicas aplicadas para o desenvolvimento da aplicação. Palavras Chave: Sistema web. Java. JSF. PrimeFaces. Hibernate. MySQL. ABSTRACT Information is one of the main drivers of human activity and, as such, regardless of size, activity or nature of a company, it is undeniable that there is increasing need for information so they can pursue and achieve the goals proposed. On this basis, information systems arise as a way to ensure that all flow of a company with regard to information is organized in a computerized system, with the help of order in the automation of processes and decision-making, in order to fulfilling the company's intentions into actions. Thus, this work proposes the development of a web information system for the management of the company named Amanda Fashions, whose goal is to provide agility and effective control in all management processes, such as inputs and outgoing products, reports , registers, inventory control and consultations. To make it possible to develop the system, Java Server Faces frameworks (JSF) were used, PrimeFaces and Hibernate in addition to the MySQL database and the Java programming language, for more interviews were also held with the owner of the company in order to raise the necessary requirements, as well as research on the technological bases used for developing the application. Keywords: Web system. Java. JSF. PrimeFaces. Hibernate. MySQL. LISTA DE ILUSTRAÇÕES Figura 1.1 – Exemplo de uma tabela com suas respectivas tuplas e atributos ......... 19 Figura 2.1 – Diagrama de caso de uso...................................................................... 32 Figura 2.2 – Diagrama de classe............................................................................... 33 Figura 2.3 – Diagrama de atividade efetuar login ...................................................... 34 Figura 2.4 – Diagrama MVC efetuar login ................................................................. 34 Figura 2.5 – Diagrama de sequência efetuar login .................................................... 35 Figura 2.6 – Diagrama de atividade salvar funcionário ............................................. 35 Figura 2.7 – Diagrama de atividade editar funcionário .............................................. 36 Figura 2.8 – Diagrama de atividade excluir funcionário............................................. 36 Figura 2.9 – Diagrama de atividade visualizar detalhes do funcionário..................... 37 Figura 2.10 – Diagrama MVC manter funcionário ..................................................... 37 Figura 2.11 – Diagrama de sequência manter funcionário ........................................ 38 Figura 2.12 – Diagrama de atividade de entrada de produtos................................... 41 Figura 2.13 – Diagrama MVC de entrada de produtos .............................................. 42 Figura 2.14 – Diagrama de sequência de entrada de produtos................................. 42 Figura 2.15 – Diagrama de atividade de vendas ....................................................... 43 Figura 2.16 – Diagrama MVC de vendas .................................................................. 44 Figura 2.17 – Diagrama de sequência de vendas ..................................................... 44 Figura 2.18 – Diagrama de atividade de troca de produtos ....................................... 45 Figura 2.19 – Diagrama MVC de troca de produtos .................................................. 46 Figura 2.20 – Diagrama de sequência de troca de produtos ..................................... 46 Figura 2.21 – Diagrama de atividade de parcela ....................................................... 47 Figura 2.22 – Diagrama MVC de parcela .................................................................. 47 Figura 2.23 – Diagrama de sequência de parcela ..................................................... 48 Figura 2.24 – Diagrama de atividade gerar relatórios ............................................... 48 Figura 2.25 – Diagrama MVC gerar relatórios ........................................................... 49 Figura 2.26 – Diagrama de sequência gerar relatórios ............................................. 49 Figura 3.1 – Tela de login .......................................................................................... 51 Figura 3.2 – Tela principal ......................................................................................... 52 Figura 3.3 – Tela de listagem de funcionários ........................................................... 52 Figura 3.4 – Tela de cadastro de funcionário ............................................................ 53 Figura 3.5 – Tela de entrada de produtos ................................................................. 56 Figura 3.6 – Tela de entrada de produtos com a exibição de uma das mensagens . 56 Figura 3.7 – Tela de venda........................................................................................ 57 Figura 3.8 – Tela de venda com a exibição de uma das mensagens ........................ 57 Figura 3.9 – Tela de forma de pagamento a vista ..................................................... 58 Figura 3.10 – Tela de forma de pagamento a prazo ................................................. 58 Figura 3.11 – Tela de receber parcelas ..................................................................... 59 Figura 3.12 – Tela de troca de produtos.................................................................... 60 Figura 3.13 – Tela de troca de produtos com a exibição de uma das mensagens.... 61 Figura 3.14 – Tela relatório de contas a receber ....................................................... 62 Figura 3.15 – Relatório de contas a receber ............................................................. 62 Figura B.1 – Exemplo do componente calendar........................................................ 72 Figura B.2 – Exemplo do componente inputMask ..................................................... 72 Figura B.3 – Exemplo do componente inputText ....................................................... 72 Figura B.4 – Exemplo do componente inputTextarea ............................................... 73 Figura B.5 – Exemplo do componente outputLabel................................................... 73 Figura B.6 – Exemplo do componente password ...................................................... 73 Figura B.7 – Exemplo do componente selectOneMenu ............................................ 73 Figura B.8 – Exemplo do componente selectOneRadio ............................................ 74 Figura B.9 – Exemplo do componente commandButton ........................................... 74 Figura B.10 – Exemplo do componente growl ........................................................... 74 Figura B.11 – Exemplo do componente graphicImage.............................................. 74 Figura B.12 – Exemplo do componente dataTable ................................................... 75 Figura B.13 – Exemplo do componente separator .................................................... 75 Figura B.14 – Exemplo do componente fieldset ........................................................ 76 Figura B.15 – Exemplo do componente menubar ..................................................... 76 Figura B.16 – Exemplo dos componentes menu, submenu e menuitem................... 77 Figura B.17 – Exemplo dos componentes tabView e tab .......................................... 77 Figura B.18 – Exemplo dos componentes confirm e confirmDialog .......................... 78 Figura B.19 – Exemplo do componente dialog .......................................................... 78 LISTA DE ABREVIATURAS E SIGLAS API – Application Programming Interface CASE – Computer Aided Software Engineering CSS – Cascading Style Sheets DAO – Data Access Object GUI – Graphical User Interface HTML – HyperText Markup Language IDE – Integrated Development Environment JDBC – Java Database Connectivity JEE – Java Enterprise Edition JME – Java Micro Edition JPA – Java Persistence API JSE – Java Standard Edition JSF – Java Server Faces JSP – Java Server Pages MVC – Model View Controller ORM – Object-Relational Mapping PDF – Portable Document Format SGBD – Sistema Gerenciador de Banco de dados SI – Sistema de Informação SQL – Structured Query Language UML – Unified Modeling Language W3C – World Wide Web Consortium SUMÁRIO INTRODUÇÃO ......................................................................................... 15 1 FUNDAMENTAÇÃO TEÓRICA ............................................................ 17 1.2 MODELO DE SISTEMA ...................................................................................... 17 1.3 ORIENTAÇÃO A OBJETOS................................................................................ 18 1.4 MODELO RELACIONAL ..................................................................................... 19 1.5 TECNOLOGIAS UTILIZADAS ............................................................................. 20 1.5.1 UML .................................................................................................................. 20 1.5.2 NetBeans.......................................................................................................... 20 1.5.3 Java .................................................................................................................. 21 1.5.4 HTML................................................................................................................ 22 1.5.5 CSS .................................................................................................................. 23 1.5.6 JSF ................................................................................................................... 24 1.5.7 PrimeFaces ...................................................................................................... 25 1.5.8 Apache Tomcat ................................................................................................ 25 1.5.9 MySQL ............................................................................................................. 26 1.5.10 JDBC .............................................................................................................. 26 1.5.11 Hibernate ........................................................................................................ 27 1.5.12 iReport e JasperReport .................................................................................. 28 1.6 CONSIDERAÇÕES SOBRE O CAPÍTULO ......................................................... 29 2 ANÁLISE E PROJETO DO SISTEMA .................................................. 30 2.1 DESCRIÇÃO DO AMBIENTE ATUAL ................................................................. 30 2.2 INSTRUÇÃO DO PROBLEMA ............................................................................ 31 2.3 ATORES E ENVOLVIDOS NO PROCESSO ...................................................... 31 2.4 PERSPECTIVA DO PRODUTO .......................................................................... 31 2.5 DIAGRAMAS ....................................................................................................... 32 2.5.1 Diagrama de Caso de Uso ............................................................................... 32 2.5.2 Diagrama de Classe ......................................................................................... 33 2.5.3 Efetuar Login .................................................................................................... 34 2.5.4 Manter Funcionário........................................................................................... 35 2.5.5 Manter Cliente .................................................................................................. 38 2.5.6 Manter Fornecedor ........................................................................................... 38 2.5.7 Manter Dependente .......................................................................................... 39 2.5.8 Manter Produto................................................................................................. 39 2.5.9 Manter Fabricante ............................................................................................ 39 2.5.10 Manter Tipo de Produto .................................................................................. 40 2.5.11 Manter Cidade ................................................................................................ 40 2.5.12 Manter Despesa ............................................................................................. 40 2.5.13 Efetuar Entrada de Produtos .......................................................................... 41 2.5.14 Efetuar Venda ................................................................................................ 43 2.5.15 Efetuar Troca de Produtos ............................................................................. 45 2.5.16 Parcela ........................................................................................................... 47 2.5.17 Gerar Relatórios ............................................................................................. 48 2.6 CONSIDERAÇÕES SOBRE O CAPÍTULO ......................................................... 49 3 IMPLEMENTAÇÃO ............................................................................... 51 3.1 DESENVOLVIMENTO DO SISTEMA.................................................................. 51 3.1.1 Tela de Login .................................................................................................... 51 3.1.2 Tela Principal .................................................................................................... 51 3.1.3 Tela de Funcionário .......................................................................................... 52 3.1.4 Tela de Cliente ................................................................................................. 53 3.1.5 Tela de Fornecedor .......................................................................................... 54 3.1.6 Tela de Dependente ......................................................................................... 54 3.1.7 Tela de Produto ................................................................................................ 54 3.1.8 Tela de Fabricante............................................................................................ 54 3.1.9 Tela de Tipo de Produto ................................................................................... 54 3.1.10 Tela de Cidade ............................................................................................... 55 3.1.11 Tela de Despesa ............................................................................................ 55 3.1.12 Tela de Entrada de Produtos.......................................................................... 55 3.1.13 Tela de Venda ................................................................................................ 56 3.1.14 Tela Receber Parcela ..................................................................................... 59 2.1.15 Tela de Troca de Produtos ............................................................................. 59 2.1.16 Relatórios ....................................................................................................... 61 3.2 CONSIDERAÇÕES SOBRE O CAPÍTULO ......................................................... 63 CONCLUSÃO .......................................................................................... 64 REFERÊNCIAS BIBLIOGRÁFICAS ........................................................ 65 APÊNDICE A – Entrevista Realizada na Empresa Amanda Modas ....... 69 APÊNDICE B – Componentes do PrimeFaces Utilizados ...................... 72 15 INTRODUÇÃO De acordo com Serviço Brasileiro de Apoio às Micro e Pequenas Empresas – SEBRAE (2006), antes de abrir as portas para os clientes, a empresa precisa tomar decisões certeiras para a obtenção do sucesso. Sendo assim, para a consolidação do êxito comercial, torna-se essencial a realização de pesquisas de mercado e da formulação de um plano de negócio, o qual conterá análises de mercado, tecnologias a serem utilizadas e diversas características mercadológicas e financeiras. Logo, baseando-se neste contexto, acredita-se que um Sistema de Informação (SI) implantado de acordo com a necessidade de cada empresa proporcione mais segurança, agilidade e organização em suas atividades cotidianas. Segundo Laudon e Laudon (2011), SI tecnicamente fornecem diversos elementos destinados a auxiliar na tomada de decisões, a administrar e a controlar uma empresa. Além de dar apoio, os SI são utilizados para auxiliar os gerentes e trabalhadores para resolução de problemas e criação de novos produtos e serviços, assim como também possuem informações sobre pessoas, locais e itens significativos que ajudam a organização no seu ambiente de atuação. Com base nestas observações, o principal objetivo deste trabalho é desenvolver um SI para ajudar no gerenciamento da empresa denominada Amanda Modas e que atua no comércio de roupas masculinas, femininas, infantis e acessórios. Para o desenvolvimento do software será utilizada a ferramenta Integrated Development Environment (IDE) NetBeans, a linguagem de programação Java, HyperText Markup Language (HTML), Cascading Style Sheets (CSS), JSF, PrimeFaces, o servidor Tomcat, o banco de dados MySQL, o driver Java Database Connectivity (JDBC), Hibernate, iReport, JasperReport, e por fim a Unified Modeling Language (UML) que é um padrão para modelagem, o qual será usado para modelar o sistema. A questão problema, parte do princípio de que a empresa trabalha de forma manual para realizar suas atividades, o qual torna o controle precário, sem dados exatos e gera certa demora na hora de executar suas tarefas, devido à falta de informações, como por exemplo, entrada e saída de produtos, fechamento de estoque, emissão de relatórios e gerenciamento de cadastro dos clientes. 16 Diante disso, este trabalho justifica-se no desenvolvimento do sistema de informação web para gerenciamento comercial, aplicado ao ramo de confecções, o qual fornecerá diversos tipos de cadastros, consultas, movimentação que ocorrem como entradas e saídas de produtos e emissão de relatórios, para agilizar e facilitar os serviços da empresa. Metodologicamente, este trabalho adotou entrevistas com a proprietária da empresa (essa entrevista encontra-se no apêndice A) para a coleta de algumas informações necessárias para a construção do sistema, juntamente com o levantamento bibliográfico de todas as ferramentas, tecnologias e assuntos abordados. O trabalho está organizado em três capítulos. O primeiro capítulo tem como proposta explanar as bases conceituais e tecnológicas, por meio da contextualização de elementos fundamentais como o paradigma de programação orientada a objetos, modelo de sistema e modelo relacional, assim como as tecnologias aplicadas para o desenvolvimento do software. No segundo capítulo, são descritas as etapas de modelagem do sistema por meio de diagramas com o fim de especificar os principais requisitos. Por fim, no terceiro capítulo, são apresentadas as telas do sistema, assim como os resultados da aplicação web. 17 1 FUNDAMENTAÇÃO TEÓRICA Este primeiro capítulo visa propor uma explanação dos pilares conceituais abordados neste trabalho, através da contextualização de elementos fundamentais como o conceito de modelagem de sistemas, para mais, busca salientar o paradigma de orientação a objetos, por meio da sintetização de elementos oriundos desta visão de programação como, por exemplo, classes, objetos, encapsulamento, assim como, o conceito de herança. Por fim, este capítulo tem como objetivo elucidar o conceito de modelo relacional e expor os elementos que o compõem, bem como explanar sobre as tecnologias e ferramentas utilizadas para o desenvolvimento do sistema de informação web proposto neste trabalho monográfico. 1.2 MODELO DE SISTEMA Segundo Silva e Videira (2001), um modelo é a interpretação da abstração de fragmentos do mundo real, sobre os quais as etapas de modelagem e criação do sistema incidem, conforme uma determinada estrutura de conceitos, ou seja, é uma interpretação sintetizada da realidade. Silva e Videira (2001) ressaltam que um modelo de sistema é especificado por um esquema, o qual utiliza uma linguagem que pode ser informal ou formal como, por exemplo, linguagem textual, gráfica ou até mesmo natural. Ademais, quando o esquema é devidamente representado graficamente, é denominado usualmente por diagrama. Conforme Sommerville (2003), um modelo de processo de software descreve de maneira simplificada um processo de software, a partir de uma determinada perspectiva, ou seja, um modelo de sistema é a abstração do processo real e visa destacar o papel das pessoas que participam da engenharia de software. Um modelo mostra apenas um cenário de um fragmento da realidade, sendo assim, faz-se necessário a criação de diversos modelos para melhor representar e entender o sistema em questão. (SILVA; VIDEIRA, 2001) De acordo com Sommerville (2003), a modelagem de um sistema dá-se a partir de métodos e técnicas estruturados, cujo foco é facilitar o desenvolvimento e a 18 produção de um software de alta qualidade, o qual resulta em uma boa relação custo-benefício. Outrossim, o autor ainda salienta que os métodos e técnicas de modelagem de software procura identificar os componentes funcionais básicos de um sistema a ser desenvolvido, bem como incluir diversificada gama de componentes. Sommerville (2003) afirma que os métodos e técnicas de modelagem de aplicações foram inicialmente utilizados a partir da década de 70, e visava uma análise estruturada, como também, a metodologia de engenharia de software orientada a objetos, cuja aurora deu-se nas décadas de 80 e 90 e eram mais apropriados para sistemas interativos. Além disso, o autor ressalta que as diferentes vertentes metodológicas foram posteriormente integradas em uma única aglomeração de componentes, mais conhecida como Unified Modeling Language (UML). 1.3 ORIENTAÇÃO A OBJETOS O paradigma de orientação a objetos é baseado em uma série de técnicas, a fim de estruturar soluções para problemas computacionais, surgiu com o intuito de minimizar a complexidade do desenvolvimento de softwares tornando-os mais produtivos. (COELHO, 2012) Seguidamente, serão apresentados alguns dos principais termos que a orientação a objetos trabalha. Classe – Segundo Deitel e Deitel (2010), uma classe é o projeto do objeto, ou seja, ela representa o tipo de objeto construído a partir dela, além disso, uma classe pode conter atributos (estado e características de um objeto), assim como, um ou mais métodos que são construídos para executar tarefas da classe. Objeto – Conforme Coelho (2012), objeto é a instância de uma classe, o qual possuirá todas as características dela, como por exemplo, comportamentos que esse objeto pode executar. Para mais, Deitel e Deitel (2010) explicam que cada objeto mantém seus próprios atributos, porém não tem conhecimento dos atributos de outros objetos. Encapsulamento – De acordo com Coelho (2012), encapsulamento é um conceito aplicado para proteger atributos de um objeto de forma que 19 ninguém possa configurá-lo com um valor inapropriado, ou seja, encapsular significa que nem todas as características do objeto precisam estar publicamente visíveis e acessíveis, pois há elementos que são convenientes apenas para o próprio objeto. Herança – Para Deitel e Deitel (2010), herança é a criação de uma nova classe (chamada de subclasse) que herda características de uma classe específica (chamada de superclasse). Essa subclasse pode conter seus próprios atributos e métodos, além disso, a herança reduz o tempo de desenvolvimento do programa pelo fato de permitir a reutilização de códigos. 1.4 MODELO RELACIONAL Apresentado por Edgar Codd no ano 1970, o modelo relacional foi proposto para representar de uma maneira mais simples os dados, por meio de um conjunto de tabelas (também denominadas relações) inter-relacionadas, o qual cada tabela é composta por tuplas (linhas) e atributos (colunas), além de possuir um nome único para sua identificação. (CORREIA, 2014) A figura 1.1 ilustra de forma simples, uma tabela com suas respectivas linhas e colunas. Relação Livro Atributos Tuplas Código Título Ano de publicação 1 Java para Web 2010 2 Web Design 2011 3 Banco de Dados 2010 4 Algoritmos 2005 5 Sistema de Informação 2008 Figura 1.1 – Exemplo de uma tabela com suas respectivas tuplas e atributos Fonte: Elaborado pelas autoras, 2014 20 1.5 TECNOLOGIAS UTILIZADAS 1.5.1 UML A Unified Modeling Language (UML) teve seu surgimento no ano 1997, com o objetivo de especificar, construir, visualizar e documentar softwares por meio da aplicabilidade de diagramas. Ademais, UML não depende de linguagens de programação, assim como também de uma ferramenta Computer Aided Software Engineering (CASE), o qual são programas para auxiliar engenheiros de software, com o intuito de minimizar o esforço e a complexidade, para melhorar o gerenciamento do projeto. (SILVA; VIDEIRA, 2001) Silva e Videira (2001) ressaltam que dependendo do projeto que será desenvolvido, da ferramenta de suporte que será utilizada ou da organização que será abrangida, é mantida a utilização da mesma linguagem de modelação. A modelagem dos diagramas UML neste trabalho monográfico será elaborada com o auxílio do Astah Community, que segundo o site Astah (2014), é uma ferramenta gratuita que tem como propósito desenvolver diagramas UML de uma maneira mais simples, prático e ágil. 1.5.2 NetBeans Para Araújo (2011), o simples fato de um desenvolvedor dominar uma linguagem de programação, já não é mais o suficiente para que o trabalho seja produzido com eficácia, e partindo deste princípio considera-se de suma importância fazer a interconexão dos conhecimentos da linguagem com um ambiente integrado de desenvolvimento, cujo um dos principais é a ferramenta Integrated Development Environment (IDE) NetBeans. Segundo Gonçalves (2006), o NetBeans é open-source escrito completamente em Java, cujo projeto foi fundado em junho de 2000 pela Sun Microsystems e, pelo fato de evoluir constantemente torna-se competitiva, frente as melhores ferramentas de desenvolvimento Java, e permite que desenvolvedores possam criar plugins, integrar-se com banco de dados, bem como escrever, compilar e debugar códigos em diversas linguagens de programação. 21 De acordo com Araújo (2011), a Sun Microsystems foi comprada pela Oracle em 2009, que mesmo com a aquisição, manteve o NetBeans como um projeto de código aberto até os dias atuais. Conforme Gonçalves (2006), o NetBeans atrai desenvolvedores do mundo todo, fato que se deve a evolução rápida de cada versão que provém das altas exigências de produtividade. 1.5.3 Java Java é uma poderosa linguagem de programação orientada a objetos, foi desenvolvida em 1991 pela Sun Microsystems, e permite implementar aplicativos baseados na Internet, desenvolver aplicativos corporativos de grande porte, melhorar a funcionalidade de servidores, como também desenvolver software para dispositivos que se comunicam em rede, para mais, o Java consolida-se cada vez mais entre as linguagens de maior popularidade para o desenvolvimento de sistemas. (DEITEL; DEITEL, 2010) Segundo Gonçalves (2006), o Java é portável, ou seja, executa em diferentes sistemas operacionais, além disso, o Java é utilizado em diversas vertentes como, por exemplo, em grandes bancos, devido à segurança otimizada, bem como em grandes empresas que anseiam em trafegar por maciças coleções de dados. Outrossim, o Java pode ser encontrado em telefonia móvel, sistema de cartão de crédito, banco de dados relacionais, etc. Batra (2013) ressalta que o Java é devidamente compilado com a especificação Java Virtual Machine bytecode, o que permite que um programa Java seja executado em qualquer arquitetura ou sistema operacional, além de que, o Java utiliza uma sintaxe no estilo C/C++, a qual é amplamente usada e facilita a reutilização de códigos para programadores da linguagem em questão. De acordo com Niemeyer e Leuck (2013), inicialmente a linguagem de programação Java gerou enorme expectativa devido ao fato de que parte das suas capacidades permitia a construção de aplicações embarcadas na web, ou seja, aplicativos executados no contexto de outro programa que são mais conhecidos como applets. Além disso, os autores ressaltam que os applets eram limitados e a popularização do Java deu-se através do Java Swing, que consiste em conjuntos de ferramentas mais sofisticadas para a produção de interfaces gráficas de usuário. 22 Conforme Niemeyer e Leuck (2013), o Java tornou-se, em uma visão geral, a principal plataforma para serviços web e para sistemas que podem ser operados de qualquer lugar e a qualquer hora, chamadas de aplicações baseadas na web. Para mais, os autores salientam que a interconexão entre servidores em Java com plataformas Linux de código aberto são o âmago do mundo empresarial e financeiro atual e partindo deste princípio pode-se afirmar que o Java é a linguagem mais escolhida para aplicações de negócios modernos. Segundo Deitel e Deitel (2010), o Java possui três arquiteturas principais, sendo: Java Standard Edition (JSE) – Permite desenvolver e implementar aplicativos em desktop e servidores; Java Enterprise Edition (JEE) – Possibilita o desenvolvimento de aplicativos web e aplicativos distribuídos em rede em larga escala; Java Micro Edition (JME) – Adequada para o desenvolvimento de aplicativos para dispositivos com pouca capacidade de memória, como por exemplo, celulares, pagers, entre outros. 1.5.4 HTML Quando a web surgiu, tornou-se imprescindível a distribuição da informação de uma forma simples, todavia organizada, portanto fez-se necessária a criação de uma linguagem que fosse compreendida universalmente através de variados meios de acesso, e o Hyper Text Markup Language (HTML) vislumbra a ser esta linguagem. (EIS; FERREIRA, 2012) Segundo Eis e Ferreira (2012), o HTML foi desenvolvido por Tim Berners-Lee, e se baseia no conceito de hipertexto, que são conjuntos de elementos ligados por conexões, os quais podem ser palavras, imagens, vídeos, documentos, entre outros, que conectados formam uma grande rede de informação a fim de que as informações publicadas por meio de código HTML sejam acessíveis para dispositivos heterogêneos. De acordo com Silva (2012), o HTML foi criado para ser uma linguagem de marcação e estruturação de conteúdos, ou seja, não deve ser função do HTML a parte visual de um documento como, por exemplo, tamanho de fontes, cores de textos, posicionamento dos elementos, etc. 23 1.5.5 CSS Grannell (2007) ressalta que os arquivos HTML eram desnecessariamente grandes, o que por sua vez resultou em problemas como a incompatibilidade com diversos navegadores, e com base nesta visão, os web designers passaram a aplicar estilos em componentes individuais, fato este resultou em um processo demorado, que com o passar do tempo tornou-se de suma importância a criação de uma linguagem que trabalhasse em conjunto com o HTML de maneira a customizar o conteúdo de um documento, tal linguagem foi denominada de Cascading Style Sheet (CSS). Ainda conforme Grannell (2007), o CSS é o padrão World Wide Web Consortium (W3C) responsável por definir a estilização para páginas web, e tem como objetivo separar a apresentação visual do projeto de conteúdo conhecido como HTML, ademais, as folhas de estilo foram concebidas com o intuito de serem aplicadas a elementos individuais através de elementos denominados seletores, bem como ser uma linguagem de apoio e decoração da linguagem de marcação estrutural. Para Silva (2012), CSS tem como finalidade prover todas as funções de exibição de um documento, por meio da adição de estilos aos documentos web como, por exemplo, espaçamentos, cores, fontes, entre outros, ou seja, o CSS é responsável por tratar a parte visual de um documento tornando-o com um design atraente para o usuário. De acordo com Lie (2005), o CSS descreve todo o layout de documentos, bem como introduz novas características e funcionalidades para resolver as diferenças impostas pela web, como por exemplo, a renderização em diversos navegadores, além de que, os conceitos utilizados no CSS permitem que tanto autores dos estilos como os usuários tenham influencia sobre a apresentação do documento. Lie (2005) explana que todo processo de resolução de conflitos, bem como a união de várias folhas de estilos é conhecido como cascata, e com base neste princípio é possível afirmar que o CSS é atualmente utilizado em todos os principais navegadores e a maioria dos desenvolvedores web usam esta linguagem que é desde o advento da web, um conceito chave para a publicação de sites tanto estáticos como dinâmicos. 24 1.5.6 JSF Segundo Paganini (2010), o framework Java Server Faces (JSF) é um conjunto de soluções que visam potencializar a produtividade na criação e implementação de aplicações web, e devem permitir a conversão e validação de dados, integração com o banco de dados ou outra forma de persistência, mecanismos de segurança, localização, internacionalização, suporte a CSS, acessibilidade, manipulação de templates, bem como muitas outras funcionalidades, as quais tornam as tarefas dos desenvolvedores mais simplificadas. Silva e Foschini (2012) ressaltam que o JSF permite criar aplicações web através de componentes de interface chamados Graphical User Interface (GUI), e traz em suas funcionalidades o melhor dos universos desktop e web, fato que resulta na criação e implementação de uma interface com menor grau de complexidade e mais rica através do uso de bibliotecas de componentes que manipulam e gerenciam o controle de eventos, validação dos dados, bem como armazena os componentes automaticamente, para mais, pode-se afirmar que o JSF possibilita, por exemplo, a interação com os dispositivos denominados clientes, além de fornecer ferramentas para a apresentação visual. Para Faria (2013), uma característica marcante na arquitetura do JSF é a separação que é feita entre as camadas de apresentação, pois ele baseia-se no padrão de projetos Model View Controller (MVC), o qual facilita o desenvolvimento de aplicações. Outrossim, pode-se afirmar que o padrão MVC divide o sistema em três responsabilidades, denominadas modelo, visão e controle, onde o modelo é responsável por encapsular os dados e as funcionalidades da aplicação, a visão é responsável pela exibição de informações, cujos dados são obtidos do modelo e o controlador recebe as requisições do usuário e aciona o modelo e/ou a visão, além de possuir uma camada de visualização devidamente separada do conjunto das classes de modelo. De acordo com Faria (2013), o gerenciamento do JSF é realizado através de uma servlet denominada Faces Servlet, a qual tem a opção de ser controlada por arquivos XML de configuração e por outros manipuladores de ações, como também, por observadores de evento, além de que, possui a função de redirecionar todas as requisições que recebe dos usuários na web para o modelo, para enfim enviar uma resposta. 25 1.5.7 PrimeFaces Para Boekel (2011), o framework PrimeFaces disponibiliza um conjunto de componentes bem elaborados para o JSF, sendo que seus elementos possuem o objetivo de facilitar o esforço da tarefa do desenvolvedor, pois o PrimeFaces foi construído para trabalhar com Ajax, e assim não à necessidade de realizar chamadas assíncronas ao servidor, além disso, este framework oferece suporte à criação de funcionalidades que utilizam o Ajax Push, que é um mecanismo que possibilita ao servidor enviar dados para um browser do cliente sem que aja a necessidade de que o cliente faça uma requisição explicitamente, além de permitir a aplicação de temas, com o simples objetivo de alterar o visual dos componentes de forma mais fácil e rápida. A biblioteca PrimeFaces é uma das implementações mais completas do JSF e oferecem componentes mais atraentes e completos do que suas concorrentes, além de ser a biblioteca mais popular entre os desenvolvedores, pois está em constante evolução. (BRIGATTO, 2012) 1.5.8 Apache Tomcat Para Brittain e Darwin (2008), um servidor web é um programa fora das páginas web e tem como objetivo enviar respostas às solicitações de usuários realizadas em um navegador web, e com base nestas informações, pode-se afirmar que o Tomcat é um servidor web criado pela empresa Apache Software Foundation. Conforme o site Devmedia (2007), o Tomcat é um servidor cujas funcionalidades permitem que as aplicações web sejam executadas, e sua principal característica está concentrada na linguagem de programação Java, mais precisamente nas tecnologias Servlets e Java Server Pages (JSP), além disso, a organização Apache permite no caso do seu servidor em questão, que o Tomcat seja usado livremente para diversos fins. Brittain e Darwin (2008) ressaltam que um dos aspectos mais interessantes do Tomcat é permitir que as solicitações feitas pelo usuário sejam respondidas tanto em páginas estáticas como dinâmicas, ademais pode-se dizer que o Tomcat é uma ótima escolha para servidor web de aplicações, pois seu uso resulta em uma produção de alta performance. 26 1.5.9 MySQL Um sistema gerenciador de banco de dados (SGBD) é um conjunto de programas que possibilita aos usuários manter e criar uma base de dados, ou seja, pode-se dizer que o SGBD é um sistema de software de abrangência geral que visa facilitar diversos processos do banco de dados, como por exemplo, definição, manipulação, construção e compartilhamento de dados entre usuários e aplicações. (ELMASRI; NAVATHE, 2005) Segundo Gonçalves (2006), MySQL é um SGBD relacional que possui características como agilidade, confiabilidade e facilidade de uso, além de ser de código aberto, multiplataformas e nível corporativo, o MySQL é vagamente baseado em outro SGBD denominado mSQL. De acordo com DuBois (2009), o MySQL faz uso do Structured Query Language (SQL), que é uma linguagem de banco de dados padronizada que oferece suporte a diversos tipos de declarações, e tem como principal objetivo possibilitar a interação com a base de dados de maneira eficiente. 1.5.10 JDBC Uma das tecnologias mais importantes para um sistema de informação é o banco de dados relacional, que proporciona a criação de grandes aplicativos, o que por sua vez resulta em uma vasta quantidade de informações, tendo em vista este princípio faz-se necessário a interconexão entre uma linguagem de programação e o paradigma de modelagem em questão através de uma Application Programming Interface (API) denominada Java Database Connectivity (JDBC). (GONÇALVES, 2006) Conforme Gonçalves (2006), o JDBC é uma API introduzida dentro da linguagem Java para possibilitar o acesso ao banco de dados, e consiste em um conjunto de classes e interfaces para a programação com o banco de dados. Segundo Palmeira (2013) faz-se necessário um driver para realizar a conexão entre uma aplicação e um SGBD, e geralmente esses drivers são disponibilizados pelas empresas de SGBDs que seguem a especificação do JDBC, além de que o driver pode ser considerado um tradutor que auxilia na definição das mensagens binárias trocadas com um protocolo de um SGBD. 27 De acordo com Lozano (2008), o JDBC pode facilmente se comunicar com qualquer banco relacional, como também pode se submeter a comandos SQL, bem como recuperar os resultados gerados pela execução desses comandos, além de permitir o acesso aos metadados, também conhecidos como catálogo, o qual possibilita a construção de ferramentas para a administração do próprio banco e apóia o desenvolvimento do sistema, além de que, as primeiras versões dessa API sempre foram completas e atendem plenamente as necessidades da maioria das aplicações, além disso, a compatibilidade retroativa foi preservada ao contrário de outras APIs. Gonçalves (2006) salienta que o JDBC possui a vantagem de ser multiplataforma, pois foi desenvolvido especialmente para o acesso ao banco de dados através do Java, que se tornou sua linguagem nativa, sendo assim, não há necessidade de escrever um programa para cada tipo de banco, além de poder ser utilizado com diferentes tipos de SGBDs como Oracle, Sybase, SQLServer, MySQL, Firebird, PostgreSQL entre outros. 1.5.11 Hibernate De acordo com Gonçalves (2007), a persistência de dados foi por muitos anos um problema entre os desenvolvedores Java, pois de um lado tinham-se informações armazenadas em tabelas, e de outro a apresentação dessas informações em formato de objetos, ou seja, uma incompatibilidade de paradigmas, portanto, tornou-se necessária a criação de ferramentas de mapeamento com acesso às bases de dados, a fim de simplificar as classes Data Access Object (DAOs) desenvolvidas, para mais, dentre os mapeadores de bancos de dados com maior destaque no mercado, está o Hibernate. Segundo Antonio e Ferro (2009), o Hibernate é um framework de alto desempenho para persistência de dados e permite ao programador desenvolver a camada de persistência com base no paradigma de orientação a objetos, incluindo os conceitos de herança, polimorfismo, collections, entre outros, além do mais o Hibernate trabalha com o conceito de modelo relacional e também serviços de consulta denominada query. Gonçalves (2007) ressalta que o Hibernate é um framework que se relaciona com a base de dados, e essa relação é denominada como mapeamento 28 objeto/relacional, ou seja, o Hibernate é facilmente integrado com uma determinada aplicação, e se comunica com o banco de dados como se tal ação fosse feita pela própria aplicação, além disso, qualquer mudança de banco de dados não se torna dispendiosa, pois basta alterar apenas um ou outro detalhe nas configurações do Hibernate. Conforme Saab (2011), o Hibernate surgiu para ser uma ponte entre o paradigma de orientação a objetos e a persistência de dados em bases relacionais, e pode ser utilizado como um framework independente ou mesmo implementar especificações Java Persistence API (JPA), que trabalha com o conceito de anotações para o mapeamento de classes em tabelas. Para Araújo e Guizzo (2012), o Hibernate utiliza o conceito de ObjectRelational Mapping (ORM), que propõe a transformação de objetos e classes em tuplas e tabelas de forma invisível, assim ao invés do desenvolvedor ter que implementar todas as instruções SQL para as consultas e operações na base de dados, ele pode fazer uso de um framework que permita fazer essas operações de forma transparente sem deixar o paradigma de orientação a objetos, portanto toda codificação necessária para manter contato com o banco de dados se resume a algumas poucas configurações no framework. 1.5.12 iReport e JasperReport De acordo com Lopes (2011), o iReport pode ser definido como um IDE aplicado no desenvolvimento de layouts para relatórios, para mais, pode-se dizer que é neste ambiente de desenvolvimento que é feita a conexão com a base de dados e a definição de quais colunas vão ser visíveis no relatório, assim como a geração de um arquivo .jrxml que posteriormente será lido pelo JasperReport. Lopes (2011) ressalta que o JasperReport é uma API, ou seja, uma classe Java que faz a comunicação com o layout-relatório gerado no iReport, assim o usuário não tem a percepção de que algo foi feito fora do Java, pois a aplicação gera os relatórios em um único ambiente, outrossim, o JasperReport é responsável apenas por setar o layout .jrxml do iReport e na sequência é definido pelo desenvolvedor o tipo de relatório que será exportado, como por exemplo arquivos Portable Document Format (PDF), HTML, TEXT, eXtensible Markup Language (XML), entre outros. 29 Conforme Filho (2011), o iReport permite a elaboração de relatórios com maiores recursos gráficos sem utilizar o código XML diretamente, como também oferece atalhos para visualizar e compilar um relatório, bem como utilizar os recursos do JasperReport, que realizarão a compilação do arquivo .jrxml gerado pelo iReport para um arquivo .jasper, que será utilizado por objetos JasperReports para geração de relatórios como por exemplo, o JasperPrint, para enviar o relatório para impressão e o JasperViewer, para visualização do relatório. 1.6 CONSIDERAÇÕES SOBRE O CAPÍTULO Este capítulo enfatizou sobre os conceitos de modelo relacional, orientação a objetos e modelo de sistema, como também explanou sobre os pilares tecnológicos utilizados neste trabalho monográfico como UML, NetBeans, Java, HTML, CSS, JSF, PrimeFaces, Tomcat, MySQL, JDBC, Hibernate, iReport, JasperReport, assim como sintetizou os aspectos mais importantes condizentes a cada um. Para mais, pode-se dizer que a integração entre as tecnologias abordadas neste capítulo, visam formar o sistema de informação proposto nesta monografia. 30 2 ANÁLISE E PROJETO DO SISTEMA Este segundo capítulo tem como objetivo descrever as etapas de modelagem do sistema, composta por caso de uso, diagrama de classe, diagramas de atividades, diagramas MVC e por fim os diagramas de sequência. 2.1 DESCRIÇÃO DO AMBIENTE ATUAL Amanda Modas é uma empresa que está no mercado há quase dez anos, localizada na cidade de Tarumã, na Avenida Tarumã no número 397, Centro. A empresa atua no ramo de comercialização de roupas masculinas, femininas e infantis, além de acessórios. Atualmente, o gerenciamento da empresa Amanda Modas, não é informatizado, ou seja, todas as atividades que envolvem processos de gerenciamento ainda são realizadas de forma manual por meio de fichas cadastrais, cadernos e notas promissórias. A estrutura atual da empresa trabalha da seguinte forma, o cliente devidamente cadastrado por fichas, obtém a opção de dividir o pagamento de sua compra em, no máximo, quatro prestações, situação que atualmente é controlada via notas promissórias a serem pagas nos dias mensais determinados, contudo o não pagamento de alguma porção da compra resulta em cobrança feita por telefone por parte da proprietária, como também, no caso de atrasos que ultrapassam o prazo de 60 dias, a proprietária submete o atraso aos devidos órgãos de cobrança SPC/Serasa, mediante a intervenção de advogado. Cabe à proprietária e a todos os funcionários da loja, o controle dos pagamentos das notas promissórias, que é realizado através de um caderno de anotações que contém o nome dos clientes, as datas de vencimento, além do valor da nota a ser paga, neste processo específico cada vez que um cliente faz a quitação de sua promissória em dia, o funcionário em questão risca o registro atual e dá como paga a parcela, caso contrário, a situação é repassada para a proprietária que executa a devida cobrança. As atividades de saída de produtos também são realizadas manualmente por todos os funcionários da loja, que após cada venda efetuada anotam em um caderno específico o produto vendido, data, quantidade e o valor total da venda. 31 Em suma, pode-se dizer que a forma como as atividades são realizadas atualmente tornam-se exaustivas e de difícil controle, além de correr riscos com a perda de dados e informações que podem acarretar em prejuízo para a loja e seus colaboradores. 2.2 INSTRUÇÃO DO PROBLEMA Atualmente as atividades realizadas pela empresa Amanda Modas são feitas manualmente por meio de fichas e cadernos, o que torna o controle precário sem dados exatos, além de gerar certa demora para executar suas tarefas, e partindo deste princípio, o desenvolvimento de um simples sistema que agregue todas essas funções irá otimizar o controle e abrandar o serviço da proprietária e seus funcionários. 2.3 ATORES E ENVOLVIDOS NO PROCESSO A proprietária é responsável por manter todas as informações necessárias, como contas a receber, a entrada de produtos, efetuar venda, efetuar troca de produtos, controlar o estoque, emitir relatórios, manter os cadastros como, produtos, funcionários, clientes, fornecedores, dependentes, cidades, fabricantes, tipos de produtos e despesas, ou seja, por toda a manipulação do sistema. O funcionário é responsável pelos mesmos serviços da proprietária citados acima, exceto manter funcionário, fabricante, tipo de produto, produto, despesa, a entrada de produtos e gerar relatório de fechamento por período. 2.4 PERSPECTIVA DO PRODUTO O sistema desenvolvido tem como finalidade auxiliar a empresa a minimizar seus problemas, ou seja, buscar melhorar a organização e otimizar o controle de suas atividades, bem como agilizar e facilitar seus serviços através de soluções que afetam todos seus processos de gerenciamento, o que por sua vez culminará na centralização dos dados e informações de tal forma que, os usuários da aplicação em questão possam acessá-la de maneira eficiente. 32 2.5 DIAGRAMAS Neste tópico serão apresentados os diagramas de caso de uso, diagrama de classe, diagrama de atividade, diagrama MVC e por fim diagrama de sequência. 2.5.1 Diagrama de Caso de Uso Figura 2.1 – Diagrama de caso de uso Fonte: Elaborado pelas autoras, 2014 33 2.5.2 Diagrama de Classe Figura 2.2 – Diagrama de classe Fonte: Elaborado pelas autoras, 2014 34 2.5.3 Efetuar Login Nesta funcionalidade, o usuário que realizar o login deve inserir os dados necessários no qual o sistema verifica se estes são ou não verdadeiros. As figuras 2.3, 2.4 e 2.5 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 2.3 – Diagrama de atividade efetuar login Fonte: Elaborado pelas autoras, 2014 Figura 2.4 – Diagrama MVC efetuar login Fonte: Elaborado pelas autoras, 2014 35 Figura 2.5 – Diagrama de sequência efetuar login Fonte: Elaborado pelas autoras, 2014 2.5.4 Manter Funcionário Nesta funcionalidade, a proprietária realiza o cadastro do funcionário. Os dados necessários para a efetivação do cadastro são: nome, RG, CPF, tipo de funcionário, usuário e senha que devem ter preenchimento obrigatório, assim como data de nascimento, rua, número, bairro, CEP, cidade, salário, e-mail, telefone, celular e observação que devem ter preenchimento opcional. Cabe ressaltar que após o registro ser inserido na base de dados, a proprietária poderá visualizar detalhes, editar ou excluir o registro. As figuras 2.6, 2.7. 2.8, 2.9, 2.10 e 2.11 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 2.6 – Diagrama de atividade salvar funcionário Fonte: Elaborado pelas autoras, 2014 36 Figura 2.7 – Diagrama de atividade editar funcionário Fonte: Elaborado pelas autoras, 2014 Figura 2.8 – Diagrama de atividade excluir funcionário Fonte: Elaborado pelas autoras, 2014 37 Figura 2.9 – Diagrama de atividade visualizar detalhes do funcionário Fonte: Elaborado pelas autoras, 2014 Figura 2.10 – Diagrama MVC manter funcionário Fonte: Elaborado pelas autoras, 2014 38 Figura 2.11 – Diagrama de sequência manter funcionário Fonte: Elaborado pelas autoras, 2014 2.5.5 Manter Cliente Nesta funcionalidade, a proprietária ou funcionário efetua o cadastro de cliente. Os dados requeridos para a confirmação do cadastro são: nome, RG, CPF, data de nascimento, rua, número, bairro e cidade que devem possuir preenchimento obrigatório, como também CEP, e-mail, telefone, celular e observação que devem possuir preenchimento opcional. Após o registro ser inserido no banco de dados, a proprietária ou funcionário poderá visualizar detalhes, editar ou excluir o registro. Os diagramas desta funcionalidade não serão apresentados, pois são semelhantes aos diagramas representados na seção 2.5.4 Manter Funcionário. 2.5.6 Manter Fornecedor Nesta funcionalidade, a proprietária ou funcionário realiza o cadastro do fornecedor. Os dados necessários para a realização do cadastro são: fornecedor, CNPJ, rua, número, bairro e cidade que devem conter preenchimento obrigatório, além de CEP, telefone, e-mail e observação que devem conter preenchimento opcional. Posteriormente à inserção dos registros na base de dados, a proprietária ou funcionário poderá visualizar detalhes, editar ou excluir o registro. 39 Os diagramas desta funcionalidade serão suprimidos, pois são similares aos diagramas ilustrados no tópico 2.5.4 Manter Funcionário. 2.5.7 Manter Dependente Nesta funcionalidade, a proprietária ou funcionário efetua o cadastro de dependente. Os dados necessários para a efetivação do cadastro são: nome, data de nascimento, RG e cliente responsável pelo dependente, que devem possuir preenchimento obrigatório. Depois da inserção dos registros no banco de dados, a proprietária ou funcionário poderá visualizar detalhes, editar ou excluir o registro. Os diagramas desta funcionalidade serão omitidos, devido à verossimilhança com os diagramas exibidos na seção 2.5.4 Manter Funcionário, exceto que nesta funcionalidade a proprietária ou funcionário deve selecionar o cliente que corresponde ao respectivo dependente ao invés de cidade. 2.5.8 Manter Produto Nesta funcionalidade, a proprietária deve realizar o cadastro dos produtos. Os dados necessários para a confirmação do cadastro são: descrição do produto, tipo do produto, fabricante, gênero, sessão e tamanho que devem ter preenchimento obrigatório, bem como, estoque, preço de custo e preço de venda, os quais são inseridos pela proprietária na tela de “Entrada de produtos”, que será explanada no tópico 2.5.13 Efetuar Entrada de produtos. Na sequência, o produto será inserido na base de dados, e a proprietária poderá visualizar detalhes, editar ou excluir o registro. Os diagramas desta funcionalidade não serão ilustrados, devido à semelhança com os diagramas apresentados no tópico 2.5.4 Manter Funcionário, exceto que nesta funcionalidade a proprietária deve selecionar o tipo de produto e o fabricante que corresponde ao respectivo produto ao invés de cidade. 2.5.9 Manter Fabricante Nesta funcionalidade, a proprietária efetua o cadastro de fabricante. Os dados necessários para a realização do cadastro são: fabricante, o qual deve ter preenchimento obrigatório, e site que deve ter preenchimento opcional. Na 40 sequência o fabricante será inserido no banco de dados, e a proprietária poderá editar ou excluir o registro. Os diagramas desta funcionalidade não serão exibidos, devido à similaridade com os diagramas ilustrados na seção 2.5.4 Manter Funcionário. 2.5.10 Manter Tipo de Produto Nesta funcionalidade, a proprietária realiza o cadastro do tipo de produto. Os dados necessários para a efetivação do cadastro são: tipo de produto, que deve possuir preenchimento obrigatório. Posteriormente à inserção dos registros no banco de dados, a proprietária poderá editar ou excluir o registro. Os diagramas desta funcionalidade serão suprimidos, pois são semelhantes aos diagramas representados no tópico 2.5.4 Manter Funcionário. 2.5.11 Manter Cidade Nesta funcionalidade, a proprietária ou funcionário deve realizar o cadastro de cidades. Os dados necessários para a confirmação do cadastro são: nome e UF que devem conter preenchimento obrigatório. Após o registro ser inserido na base de dados, a proprietária ou funcionário poderá editar ou excluir o registro. Os diagramas desta funcionalidade serão omitidos, devido à verossimilhança com os diagramas representados na seção 2.5.4 Manter Funcionário. 2.5.12 Manter Despesa Nesta funcionalidade, a proprietária insere as despesas na base de dados. Os dados necessários para a realização do cadastro são: despesa referente, data a pagar, valor da despesa, e se a despesa já está paga, os quais devem ter preenchimento obrigatório, assim como, à data de pagamento da despesa e observação, que devem ter preenchimento opcional. Insta ressaltar que, após a despesa ser inserida no banco de dados, a proprietária poderá editar ou excluir o registro. Os diagramas desta funcionalidade não serão apresentados, pois são semelhantes aos diagramas representados no tópico 2.5.4 Manter Funcionário. 41 2.5.13 Efetuar Entrada de Produtos Nesta funcionalidade, a proprietária deve primeiramente selecionar o fornecedor e os produtos, logo após será efetuada a somatória dos valores dos produtos que irão compor a entrada de produtos, para em seguida efetivar o registro e atualizar o estoque. Os dados necessários para a efetivação da entrada de produtos são: data de entrada, fornecedor, número da nota, produto, quantidade a comprar, preço de custo do produto, preço de venda do produto e o total da entrada de produtos, que devem ter preenchimento obrigatório. As figuras 2.12, 2.13 e 2.14 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 2.12 – Diagrama de atividade de entrada de produtos Fonte: Elaborado pelas autoras, 2014 42 Figura 2.13 – Diagrama MVC de entrada de produtos Fonte: Elaborado pelas autoras, 2014 Figura 2.14 – Diagrama de sequência de entrada de produtos Fonte: Elaborado pelas autoras, 2014 43 2.5.14 Efetuar Venda Nesta funcionalidade, a proprietária ou funcionário deve primeiramente selecionar o cliente e os produtos requeridos pelo cliente, ademais, após a somatória dos valores dos produtos que irão compor a venda, o cliente deverá escolher a forma de pagamento, com as opções a vista e a prazo, caso for à vista, a venda é registrada e o estoque é atualizado, caso for a prazo, a venda é efetuada, o que resulta na geração das parcelas do cliente e atualização do estoque. Os dados necessários para a efetivação da venda são: data da venda, funcionário que realizou a venda, cliente, produto, quantidade a comprar, qual a forma de pagamento, se a venda teve desconto, o subtotal da venda e o total da venda, os quais devem possuir preenchimento obrigatório. As figuras 2.15, 2.16 e 2,17 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 2.15 – Diagrama de atividade de vendas Fonte: Elaborado pelas autoras, 2014 44 Figura 2.16 – Diagrama MVC de vendas Fonte: Elaborado pelas autoras, 2014 Figura 2.17 – Diagrama de sequência de vendas Fonte: Elaborado pelas autoras, 2014 45 2.5.15 Efetuar Troca de Produtos Nesta funcionalidade, a proprietária ou funcionário deve primeiramente selecionar a venda e os produtos referentes à venda, para então adicionar em uma lista de produtos extornados, posteriormente, deve selecionar os produtos e adicionar em uma lista de produtos trocados. Logo após será efetuada a somatória dos valores adicionados entre as duas listas para obter o valor parcial da troca, para em seguida efetivar a troca e atualizar o estoque. Os dados necessários para a efetivação da troca de produtos são: data da troca, código da venda, produtos da venda selecionada, quantidade, tipo (extornado ou trocado) e valor da troca, os quais devem possuir preenchimento obrigatório. As figuras 2.18, 2.19 e 2.20 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 2.18 – Diagrama de atividade de troca de produtos Fonte: Elaborado pelas autoras, 2014 46 Figura 2.19 – Diagrama MVC de troca de produtos Fonte: Elaborado pelas autoras, 2014 Figura 2.20 – Diagrama de sequência de troca de produtos Fonte: Elaborado pelas autoras, 2014 47 2.5.16 Parcela Nesta funcionalidade, a proprietária ou funcionário primeiramente deve selecionar o cliente e verificar se este possui contas a pagar, caso sim, realiza o pagamento e a quitação da parcela, caso contrário, finaliza a parcela. Os dados necessários para a efetivação da parcela são: código da venda, valor da parcela, vencimento da parcela e se a parcela está paga, que devem ter preenchimento obrigatório, além de, data de pagamento, que deve ter preenchimento opcional. As figuras 2.21, 2.22 e 2.23 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 2.21 – Diagrama de atividade de parcela Fonte: Elaborado pelas autoras, 2014 Figura 2.22 – Diagrama MVC de parcela Fonte: Elaborado pelas autoras, 2014 48 Figura 2.23 – Diagrama de sequência de parcela Fonte: Elaborado pelas autoras, 2014 2.5.17 Gerar Relatórios Nesta funcionalidade, a proprietária ou funcionário deve visualizar ou imprimir o relatório. As figuras 2.24, 2.25 e 2.26 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 2.24 – Diagrama de atividade gerar relatórios Fonte: Elaborado pelas autoras, 2014 49 Figura 2.25 – Diagrama MVC gerar relatórios Fonte: Elaborado pelas autoras, 2014 Figura 2.26 – Diagrama de sequência gerar relatórios Fonte: Elaborado pelas autoras, 2014 2.6 CONSIDERAÇÕES SOBRE O CAPÍTULO Este segundo capítulo teve como principal característica a ilustração e explanação da modelagem do sistema por meio de diagramas, que representam as 50 funcionalidades do sistema proposto neste trabalho monográfico, para mais, buscouse sintetizar acerca do atual ambiente da empresa alvo do trabalho e apresentou as principais dificuldades vivenciadas pela proprietária e pelos funcionários em questão. Em suma, o capítulo visou ressaltar a importância de informatizar os processos da empresa Amanda Modas, e os benefícios que trará a automatização de todo gerenciamento, bem como detalhar em cada diagrama os papéis que cada ator envolvido desempenhará no sistema. 51 3 IMPLEMENTAÇÃO Este terceiro capítulo tem como objetivo explanar toda a etapa de desenvolvimento do sistema proposto por meio de ilustrações das telas. O desenvolvimento do sistema teve como base o padrão de projeto MVC, juntamente com todas as tecnologias apresentadas no capítulo um, deste trabalho monográfico. 3.1 DESENVOLVIMENTO DO SISTEMA 3.1.1 Tela de Login A figura 3.1 representa a tela “Login” do sistema, onde deve-se informar os respectivos usuário e senha para acessar o sistema, caso as informações sejam corretas, o acesso será liberado para a tela “Principal”, contudo, se usuário ou senha estiverem incorretos é exibida uma mensagem que informa que usuário e/ou senha estão incorretos. Figura 3.1 – Tela de login Fonte: Elaborado pelas autoras, 2014 3.1.2 Tela Principal A figura 3.2 ilustra a tela “Principal” do sistema, a qual apresenta a estrutura de acesso às demais telas do sistema, por meio de um menu vertical de escolhas 52 divididos em “Cadastro”, “Movimentação”, “Relatório” e “Financeiro”, além de um menu horizontal que contém opções de “Sair” do sistema, “Informações” e retorno à tela “Principal”. Figura 3.2 – Tela principal Fonte: Elaborado pelas autoras, 2014 3.1.3 Tela de Funcionário A figura 3.3 representa a tela “Funcionário” do sistema, cujo acesso é realizado através da opção “Cadastro” no menu vertical da tela “Principal”, e exibe inicialmente um botão denominado “Novo Funcionário”, bem como uma lista com todos os funcionários previamente cadastrados. Sendo assim, se a lista for vazia, é exibida uma mensagem que informa que não há registro(s) de funcionários, contudo se a lista for apresentada com um ou mais funcionários, é exibida conjuntamente as opções de “Editar”, “Excluir” e “Visualizar detalhes”. Figura 3.3 – Tela de listagem de funcionários Fonte: Elaborado pelas autoras, 2014 53 A opção “Editar” exibe uma tela com os dados do funcionário selecionado para alteração, a opção “Excluir” exibe uma tela de confirmação de exclusão, já a opção “Visualizar detalhes” exibe uma tela que contém todos os dados do funcionário selecionado. Por fim, o botão “Novo Funcionário” é responsável por registrar um novo funcionário a partir de uma estrutura pré-definida de campos e dois botões chamados “Salvar” e “Cancelar”. Ao clicar em “Salvar” os campos são devidamente verificados a partir de sua obrigatoriedade, como também a validação de alguns campos, outrossim, o botão “Cancelar” é responsável por fechar a tela “Cadastro de Funcionário”. Figura 3.4 – Tela de cadastro de funcionário Fonte: Elaborado pelas autoras, 2014 3.1.4 Tela de Cliente A tela “Cliente” é similar à tela de “Funcionário” representada pelo tópico 3.1.3 Tela de Funcionário, exceto pelos campos relativos ao cliente, portanto não será realizada representação ilustrativa desta tela. 54 3.1.5 Tela de Fornecedor Esta tela não será representada por meio de ilustração, dada a sua similaridade com a tela “Funcionário” explanado na seção 3.1.3 Tela de Funcionário, contudo, cabe salientar que a tela “Fornecedor” possui os campos respectivos à fornecedores. 3.1.6 Tela de Dependente Esta tela não possuirá representação ilustrativa devido à semelhança com a tela “Funcionário” representada no tópico 3.1.3 Tela de Funcionário, porém, a tela “Dependente” possui campos referentes a dependentes. 3.1.7 Tela de Produto A tela “Produto”, não será representada devido à similaridade com a tela “Funcionário” explanado na seção 3.1.3 Tela de Funcionário, exceto pelos campos relativos a produto. 3.1.8 Tela de Fabricante A tela “Fabricante” é similar a tela “Funcionário” explanado na seção 3.1.3 Tela de Funcionário, exceto pelos campos referentes à fabricante e é acessada a partir de um botão na tela “Produto”. Portanto não será realizada representação ilustrativa desta tela. 3.1.9 Tela de Tipo de Produto Esta tela não será representada por meio de ilustração, dada sua similaridade com a tela “Funcionário” representado no tópico 3.1.3 Tela de Funcionário, contudo cabe salientar que a tela “Tipo de produto” possui campos relativos a tipo de produto e é acessada a partir de um botão na tela “Produto. 55 3.1.10 Tela de Cidade A tela “Cidade” possui campos respectivos á cidade e é acessada a partir de um botão nas telas “Funcionário”, “Cliente” e “Fornecedor”. Esta tela é similar à tela de “Funcionário” representada pelo tópico 3.1.3 Tela de Funcionário, portanto não terá ilustração. 3.1.11 Tela de Despesa Esta tela não possuirá representação ilustrativa devido à semelhança com a tela “Funcionário” representado pela seção 3.1.3 Tela de Funcionário, exceto pelos campos relativos à despesa, como também a forma de listagem inicial, que no caso de despesas só será exibida quando o usuário digitar uma data inicial e uma data final. 3.1.12 Tela de Entrada de Produtos A figura 3.5 e 3.6 ilustra a tela de “Entrada de produtos”, que é acessada por meio da opção “Movimentação” do menu vertical da tela “Principal”, e proporciona uma interface com campos relativos ao cadastro de entrada de produtos, bem como fornece uma lista de fornecedores e uma lista de produtos. Quando o usuário escolher um produto é exibido paralelamente à quantidade de estoque desse produto, na sequência o usuário deve informar a quantidade a comprar, o preço de custo e o preço de venda desse produto e acionar o botão “+”, logo após é verificada a obrigatoriedade de cada campo, bem como se o usuário tenha informado uma quantidade a comprar menor ou igual a zero, entre outros, para enfim adicionar esse produto em “Itens de entrada de produtos”, o qual disponibiliza as opções “Remover produto”, e “Editar produto”. Por fim, cabe ressaltar que a interface de “Entrada de produtos” possui dois botões, o de “Registrar entrada de produtos” e “Cancelar”, caso o usuário optar pela ação no botão “Registrar entrada de produtos”, a entrada de produtos é armazenada na base de dados e o estoque de produtos é devidamente atualizado, contudo, se o usuário escolher a opção “Cancelar”, a entrada de produtos é cancelada. 56 Figura 3.5 – Tela de entrada de produtos Fonte: Elaborado pelas autoras, 2014 Figura 3.6 – Tela de entrada de produtos com a exibição de uma das mensagens Fonte: Elaborado pelas autoras, 2014 3.1.13 Tela de Venda A figura 3.7 e 3.8 representa a tela de “Venda” que é acessada via menu vertical na opção “Movimentação”, esta tela contém campos respectivos a vendas e ao ser acessada fornece uma lista de clientes e uma lista de produtos. 57 Á medida que o usuário escolher um produto, é exibido paralelamente à quantidade de estoque desse produto, sequencialmente, o usuário deve informar à quantidade que deseja comprar e acionar o botão “+”, logo após, são verificados a obrigatoriedade de cada campo, bem como se o produto selecionado possui estoque disponível, entre outros, para enfim adicionar esse produto em “Itens de venda”, o qual fornece as opções “Remover produto”, e “Editar produto”. Para mais, a tela de “Venda” possui dois botões denominados “Confirmar venda” e “Cancelar”. Ao acionar o botão “Cancelar”, o usuário cancela a venda em questão, todavia, se o usuário optar pelo botão “Confirmar venda”, uma tela denominada “Forma de Pagamento” é exibida. Figura 3.7 – Tela de venda Fonte: Elaborado pelas autoras, 2014 Figura 3.8 – Tela de venda com a exibição de uma das mensagens Fonte: Elaborado pelas autoras, 2014 58 A tela “Forma de Pagamento” possui opções de pagamento à vista e a prazo, caso a escolha for por forma de pagamento à vista, serão exibidos os campos relativos à forma de pagamento à vista, caso contrário, ao optar pela forma de pagamento a prazo, serão apresentados os campos referentes à forma de pagamento a prazo. As figuras 3.9 e 3.10 ilustram as formas de pagamento opcionais ao usuário. Figura 3.9 – Tela de forma de pagamento a vista Fonte: Elaborado pelas autoras, 2014 Figura 3.10 – Tela de forma de pagamento a prazo Fonte: Elaborado pelas autoras, 2014 59 Por fim, a tela “Forma de pagamento” contém dois botões, “Registrar Venda” e “Cancelar”. Se o usuário acionar o botão “Registrar venda” a venda é armazenada no banco de dados e paralelamente o estoque de produtos é atualizado, bem como, o usuário deverá emitir o romaneio ao cliente, se o usuário acionar o botão “Cancelar”, a tela “Forma de pagamento” é fechada. 3.1.14 Tela Receber Parcela A Figura 3.11 representa a tela “Receber parcela” que é acessada por meio da opção “Financeiro”, localizada no menu vertical da tela “Principal” do sistema, assim como, a tela “Receber parcela” fornece uma lista de clientes, no qual permite o usuário selecionar um cliente para poder visualizar suas parcelas. Após a listagem das parcelas, o usuário tem a opção de receber a parcela que o cliente deseja pagar por meio do botão “Receber parcela”. Figura 3.11 – Tela de receber parcelas Fonte: Elaborado pelas autoras, 2014 2.1.15 Tela de Troca de Produtos A figura 3.12 e 3.13 representa a tela “Troca de Produtos” que é acessada através da opção “Movimentação” no menu vertical da tela “Principal” e proporciona uma interface com campos referentes a troca de produtos, bem como fornece uma lista de vendas e uma outra de produtos. Á medida que o usuário selecionar uma venda será carregado uma lista de itens dessa venda, posteriormente, ao selecionar um item da venda é exibida paralelamente à quantidade em que esse item foi adquirido, na sequência o usuário 60 deve informar a quantidade do item que deseja extornar e acionar o botão “Extornar produto”, logo após são verificados a obrigatoriedade de cada campo, caso o usuário tenha informado a quantidade a extornar maior que a quantidade vendida, entre outros, para enfim adicionar esse item em “Produtos extornados”, o qual fornece a opção “Remover produto”. Sequencialmente, o usuário deve selecionar um produto, o qual é exibido paralelamente à quantidade de estoque desse produto, depois de, o usuário deve informar à quantidade que deseja adquirir e acionar o botão “Adicionar produto”, posteriormente será verificado a obrigatoriedade de cada campo, entre outros, para enfim adicionar esse item em “Produtos trocados”, que fornece a opção “Remover produto”. Por fim, o usuário pode optar por acionar dois botões, “Registrar troca de produtos” ou “Cancelar”, caso a opção seja por “Registrar troca de produtos”, os dados serão devidamente salvos na base de dados e paralelamente o estoque do produto é atualizado, contudo, sê o botão “Cancelar” for acionado, a troca é cancelada. Figura 3.12 – Tela de troca de produtos Fonte: Elaborado pelas autoras, 2014 61 Figura 3.13 – Tela de troca de produtos com a exibição de uma das mensagens Fonte: Elaborado pelas autoras, 2014 2.1.16 Relatórios O acesso aos relatórios é realizado por meio da opção “Relatório” no menu vertical da tela “Principal”, e assim, por intermédio do menu “Relatório” o sistema provê as seguintes opções de relatórios: Histórico de produtos; Histórico de fornecedores; Produtos por fornecedor; Vendas; Contas a Receber. Ademais, existe um relatório denominado “Fechamento por período”, que é acessado através do menu “Financeiro” da tela “Principal”. Enfim, cabe ressaltar que além de poder acessar os relatórios para visualização em uma nova aba do navegador, o usuário pode ainda salvar ou imprimir os relatórios em formato de arquivo PDF. A figura 3.14 e 3.15 representa o relatório “Contas a Receber”, neste relatório serão exibidas as datas que possuem parcelas a serem pagas de acordo com a data inicial e a data final que o usuário digitar, conforme a figura 3.14. 62 Figura 3.14 – Tela relatório de contas a receber Fonte: Elaborado pelas autoras, 2014 Figura 3.15 – Relatório de contas a receber Fonte: Elaborado pelas autoras, 2014 63 3.2 CONSIDERAÇÕES SOBRE O CAPÍTULO O objetivo deste capítulo foi apresentar as funcionalidades do sistema por meio de ilustrações das principais telas, cabe ressaltar que todos os requisitos descritos no segundo capítulo foram devidamente implementados. 64 CONCLUSÃO As organizações da atualidade, com as constantes transformações do mundo globalizado, estão sendo desafiadas pela força da competição do mercado a buscar a informatização na organização e administração dos processos, produtos e serviços. Diante disto, neste trabalho, foi proposto a criação de um sistema web para o gerenciamento da empresa Amanda Modas, a fim de minimizar os problemas encontrados, tais como, demora na hora de executar suas tarefas, perda de informações, etc. O que mais dificultou a realização deste trabalho monográfico foi a falta de experiência em trabalhar com Hibernate, JSF e PrimeFaces e o não conhecimento das funcionalidades desses frameworks, que tiveram que ser vistas no decorrer do desenvolvimento, todavia insta salientar que, apesar das dificuldades comumente encontradas no desenvolvimento de um projeto desse porte, os objetivos do trabalho foram alcançados, assim, o sistema proposto foi desenvolvido e seu funcionamento está de acordo com as especificações e requisitos. Para mais, acredita-se que após a implantação do sistema na empresa em questão, haverá consequentemente uma otimização no processo de atividades cotidianas como a diminuição do tempo na realização de consultas, pagamentos, entrada e saída de produtos e geração de relatórios. Como trabalhos futuros podem ser inseridas novas funcionalidades como a implementação de nota fiscal eletrônica, instalação de leitor de código de barras, bem como conexão com empresas de cartão de crédito, além de que, podem ser realizadas melhorias no sistema, como por exemplo, a tela de troca de produtos, o qual será inserido a regra de negócio que o produto só poderá ser trocado no prazo máximo de 15 dias. 65 REFERÊNCIAS BIBLIOGRÁFICAS ANTONIO, E.R; FERRO, M. Análise comparativa entre os principais FRAMEWORKS de desenvolvimento Java. In: CONGRESSO NACIONAL DE AMBIENTES HIPERMÍDIA PARA APRENDIZAGEM, 4, 2009, Florianópolis. ARAÚJO, C. O IDE NetBeans – Artigo easy Java Magazine 5. 2011. Disponível em:<http://www.devmedia.com.br/o-ide-netbeans-artigo-easy-java-magazine5/20460> Acesso em: 23 abr. 2014. ARAÚJO, E. C; GUIZZO, G. JPA/Hibernate ou NoSQL, qual utilizar? – Revista Java Magazine 103. 2012. Disponível em: < http://www.devmedia.com.br/jpahibernate-ou-nosql-qual-utilizar-revista-java-magazine-103/24386> Acesso em: 29 jun. 2014. ASTAH. Astah Community. 2014. Disponível em: <http://astah.net/editions/community> Acesso em: 21 abr. 2014. BATRA, R. Essential Java. 1. ed. Open Publication License, 2013. BOEKEL, R. V. Por dentro do PrimeFaces 2.2 - Artigo Revista Java Magazine 93. 2011. Disponível em: <http://www.devmedia.com.br/por-dentro-do-primefaces-2-2artigo-revista-java-magazine-93/21651> Acesso em 05 mai. 2014. BRIGATTO, P. JSF 2 e o PrimeFaces - Revista Java Magazine 108 - Parte 1. 2012. Disponível em: <http://www.devmedia.com.br/jsf-2-e-o-primefaces-revista- java-magazine-108-parte-1/25958> Acesso em: 02 mai. 2014. BRITTAIN, J; DARWIN, I. F. Tomcat: The Definitive Guide. 2. ed Sebastopol: O’Reilly Media, 2008. COELHO, R. S; Fundamentos básicos de Orientação a Objetos – Revista easy .Net Magazine 26. 2012. Disponível em: <http://migre.me/mU6kD> Acesso em: 29 abr. 2014. 66 CORREIA, R. C. M. Banco de Dados I Modelo Relacional. 2014. Disponível em: <https://www.yumpu.com/pt/document/view/13738423/aula-4-modelo-relacional> Acesso em: 07 abr. 2014. DEITEL, P; DEITEL, H. Java: como programar. Tradução Edson Furmankiewicz. 8. ed. São Paulo: Pearson Prentice Hall, 2010. DEVMEDIA. Conheça o Apache Tomcat. 2007. Disponível em: <http://www.devmedia.com.br/conheca-o-apache-tomcat/4546> Acesso em: 10 mai. 2014. DUBOIS, P. MySQL: Developer’s Library. 4. Ed. Pearson Addison Wesley, 2009. EIS, D; FERREIRA, E. HTML5 e CSS3: com farinha e pimenta. São Paulo: Tableless, 2012. ELMASRI, R; NAVATHE, S. B. Sistemas de Banco de Dados. Tradução Marília Guimarães Pinheiro. et al. 4. ed. São Paulo: Pearson Addison Wesley, 2005. FARIA, T. Java EE 7 com JSF, PrimeFaces e CDI. AlgaWorks Softwares, Treinamento e Serviços Ltda, 2013. FILHO, E.L. Estratégias para o desenvolvimento de relatórios utilizando o JasperReports com iReport. Jun. 2011. GONÇALVES, E. Dominando NetBeans. Rio de Janeiro: Ciência Moderna, 2006. ______. Desenvolvendo Aplicações Web com JSP, Servlets, JavaServer Faces, Hibernate, EJB 3 Persistence e AJAX. Rio de Janeiro: Ciência Moderna, 2007. GRANNELL, C. The Essential Guide to CSS and HTML Web Design. New York: 2007. LAUDON, K; LAUDON, J; Sistemas de Informação Gerenciais. Tradução Luciana do Amaral Teixeira. 9. ed. São Paulo: Pearson Prentice Hall, 2011. 67 LIE, H. W. Cascading Style Sheets. 2005. Tese (Doutorado em Matemática e Ciências Naturais) – Faculty of Mathematics and Natural Sciences, Oslo. LOPES, C. Usando o iReport e o JasperReport para gerar um relatório. 2011. Disponível em: <http://imasters.com.br/artigo/22242/banco-de-dados/usando-o- ireport-e-o-jasperreport-para-gerar-um-relatorio/> Acesso em: 20 jun. 2014. LOZANO, F. Artigo Java Magazine 41 - JDBC de Ponta a Ponta: Parte 1. 2008. Disponível em: <http://www.devmedia.com.br/artigo-java-magazine-41-jdbc-de- ponta-a-ponta-parte-1/10187> Acesso em: 20 abr. 2014. NIEMEYER, P; LEUCK, D. Learning Java. 4. ed. Sebastopol: O’Reilly Media, 2013. PAGANINI, S. Artigo Java Magazine 78 - JSF 2.0. 2010. Disponível em: <http://www.devmedia.com.br/artigo-java-magazine-78-jsf-2-0/16559> Acesso em: 17 abr. 2014. PALMEIRA, T. V. V. Aprendendo Java com JDBC. 2013. Disponível em: <http://www.devmedia.com.br/aprendendo-java-com-jdbc/29116> Acesso em: 20 abr. 2014. SAAB, N F. Hibernate Annotations – Artigo Java Magazine 90. 2011. Disponível em: <http://www.devmedia.com.br/hibernate-annotations-artigo-java-magazine- 90/20433> Acesso em: 17 jun. 2014. SEBRAE. Ponto de Partida Para Início de Negócio: Loja de Roupa. 2006. Disponível em: < http://migre.me/mTVWE > Acesso em: 05 mar. 2014. SILVA, M. S. CSS3: Desenvolva aplicações web profissionais com uso dos poderosos recursos de estilização das CSS3. 1. ed. São Paulo: Novatec, 2012. SILVA, M. A. C; FOSCHINI, I. J. Implementação do padrão façade utilizando o framework JavaServer Faces: um estudo de caso. 2012. Disponível em: < http://migre.me/mU6Xm> Acesso em: 27 abr. 2014. 68 SILVA, A. M. R; VIDEIRA, C. A. E. UML: Metodologias e Ferramentas CASE. 1. ed. Lisboa: Centro Atlântico, 2001. SOMMERVILLE, I. Engenharia de Software. Tradução André Mauricio de Andrade. 6. ed. São Paulo: Pearson Addison Wesley, 2003. 69 APÊNDICE A – Entrevista Realizada na Empresa Amanda Modas a) Qual o segmento da empresa Amanda Modas? A empresa trabalha no ramo de compra e venda de roupas masculinas, femininas, infantis e acessórios. b) Quem são as pessoas responsáveis por realizar as atividades da empresa? Proprietária (gerente) e Funcionários (vendedores). c) Quais as atividades que os funcionários podem realizar dentro da empresa? Cadastrar cliente, dependente e fornecedores, assim como realizar vendas e receber parcelas do cliente. d) Como são realizados os cadastros? Todos os cadastros são realizados manualmente por meio de fichas ou cadernos, os dados necessários para a realização dos cadastros são: Funcionários: nome, RG, CPF, data de nascimento, endereço completo e telefone; Clientes: nome, RG, CPF, data de nascimento, endereço completo e telefone; Dependentes: para realizar o cadastro do dependente ele precisará de uma autorização de seu responsável e deve fornecer os seguintes dados, nome, data de nascimento, RG e o nome do cliente responsável; Fornecedores: não é realizado o cadastro de fornecedores, pois a proprietária apenas possui os cartões de apresentação dos fornecedores os quais possuem seus dados como, nome, CNPJ e telefone; Produtos: descrição do produto, fornecedor, quantidade, preço de custo, preço de venda, tamanho, tipo de produto (calça, camiseta, acessórios, etc.) e o fabricante (marca). e) Como é controlada a entrada de produtos? Sempre que um produto chega à empresa é feito um novo cadastro de produto mesmo se este já foi cadastrado uma vez. 70 f) Como é controlada a venda? Se a venda for à vista apenas são anotados os produtos que saíram e o preço de cada um deles em um caderno, como também é anotado o total da venda em outro caderno para poder saber quanto foi recebido no dia, se a venda for a prazo é verificado se o cliente possui uma ficha caso possuir é feitas as parcelas em notas promissórias. g) Como é feito o controle de pagamento das notas promissórias? O controle é realizado através de um caderno de anotações que contém o nome dos clientes, as datas de vencimento, além do valor da nota a ser paga, neste processo específico cada vez que um cliente faz a quitação de sua promissória em dia, o funcionário em questão risca o registro atual e dá como paga a parcela, caso contrário, a situação é repassada para a proprietária que executa a devida cobrança. h) Qual o problema enfrentado pela empresa por não possuir um sistema de gerenciamento? Devido à falta de um sistema de gerenciamento, as atividades realizadas atualmente dentro da empresa, geram certa demora na hora de sua execução, pois algumas vezes as informações não são precisas, devido a isso se torna difícil controlar o estoque, manter os produtos, clientes, entre outras atividades. i) Qual resultado que se espera com a implantação de um software gerenciador? Com a implantação do software gerenciador, espera-se que se tenha maior agilidade e praticidade nas tarefas cotidianas da empresa em relação aos cadastros, entrada e saída de produtos, controle de estoque e emissão de relatórios. j) Funcionalidades do sistema de acordo com as necessidades da empresa: Login de acesso ao sistema; Cadastros (funcionários, clientes, dependentes, fornecedores, produtos, fabricantes, tipos de produtos e cidades); Entrada e saída de produtos; Receber parcelas; 71 Consultas Relatórios (diversos); 72 APÊNDICE B – Componentes do PrimeFaces Utilizados Calendar: componente de entrada usado para fornecer uma data, bem como suporta paginação, localização, seleção Ajax, etc. Figura B.1 – Exemplo do componente calendar Fonte: Elaborado pelas autoras, 2014 InputMask: componente de entrada que formata um determinado conteúdo no padrão desejado Figura B.2 – Exemplo do componente inputMask Fonte: Elaborado pelas autoras, 2014 InputText: componente de entrada com capacidade de digitação. Figura B.3 – Exemplo do componente inputText Fonte: Elaborado pelas autoras, 2014 73 InputTextarea: componente de entrada que quando clicado se expande de acordo com a quantidade de texto. Figura B.4 – Exemplo do componente inputTextarea Fonte: Elaborado pelas autoras, 2014 OutputLabel: componente que exibe um texto por meio do seu atributo “value”. Figura B.5 – Exemplo do componente outputLabel Fonte: Elaborado pelas autoras, 2014 Password: componente de entrada de texto para inserir senhas. Figura B.6 – Exemplo do componente password Fonte: Elaborado pelas autoras, 2014 SelectOneMenu: componente utilizado para carregar listas, realizar busca, etc. Figura B.7 – Exemplo do componente selectOneMenu Fonte: Elaborado pelas autoras, 2014 74 SelectOneRadio: componente que permite escolher um único item de uma coleção. Figura B.8 – Exemplo do componente selectOneRadio Fonte: Elaborado pelas autoras, 2014 CommandButton: componente visual que exibe um botão. Figura B.9 – Exemplo do componente commandButton Fonte: Elaborado pelas autoras, 2014 Growl: componente que exibe mensagens em caixas de texto no estilo de alertas. Figura B.10 – Exemplo do componente growl Fonte: Elaborado pelas autoras, 2014 GraphicImage: componente utilizado para representar imagens. Figura B.11 – Exemplo do componente graphicImage Fonte: Elaborado pelas autoras, 2014 75 DataTable: componente que fornece soluções para muitos casos de uso em comum, como por exemplo, paginação, seleção, classificação, etc. Column: utilizado por vários componentes, como por exemplo, tabela de dados. Figura B.12 – Exemplo do componente dataTable Fonte: Elaborado pelas autoras, 2014 Separator: componente que exibe uma linha horizontal utilizado para separar conteúdos. Figura B.13 – Exemplo do componente separator Fonte: Elaborado pelas autoras, 2014 76 Fieldset: componente de agrupamento. Figura B.14 – Exemplo do componente fieldset Fonte: Elaborado pelas autoras, 2014 Menubar: componente de navegação horizontal Figura B.15 – Exemplo do componente menubar Fonte: Elaborado pelas autoras, 2014 77 Menu: componente de navegação. Submenu: componente relacionado ao menu e representa um item do submenu. Menuitem: componente utilizado por vários componentes do menu, como por exemplo, submenu. Figura B.16 – Exemplo dos componentes menu, submenu e menuitem Fonte: Elaborado pelas autoras, 2014 TabView: componente recipiente para conteúdo em grupos de abas. Tab: componente recipiente genérico utilizado por outros componentes, como por exemplo, tabView. Figura B.17 – Exemplo dos componentes tabView e tab Fonte: Elaborado pelas autoras, 2014 78 Confirm: elemento de comportamento utilizado para se integrar com confirmDialog. ConfirmDialog: componente visual que implementa uma janela de código, o qual contém um botão para confirmar e outro botão para cancelar. Figura B.18 – Exemplo dos componentes confirm e confirmDialog Fonte: Elaborado pelas autoras, 2014 Dialog: componente que cobre outros elementos e oferece personalização, redimensionamento, etc. Figura B.19 – Exemplo do componente dialog Fonte: Elaborado pelas autoras, 2014