diff --git a/relatorioEstagio.pdf b/relatorioEstagio.pdf index 81a4621..f511f33 100644 Binary files a/relatorioEstagio.pdf and b/relatorioEstagio.pdf differ diff --git a/relatorioEstagio.tex b/relatorioEstagio.tex index cd5deff..ba651f4 100644 --- a/relatorioEstagio.tex +++ b/relatorioEstagio.tex @@ -154,7 +154,11 @@ \textbf{AGRADECIMENTOS} \end{center} -Meus agradecimentos são voltados à agência Cadaris, principalmente a Diretora Comercial, que propôs essa oportunidade de alinhar meus conhecimentos obtidos na UFABC - Universidade Federal do ABC no ambiente corporativo, além de crescimento pessoal e profissional. +Aos meus pais pela confiança e apoio nas dificuldades enfrentadas durante todo o período da graduação. + +Meus agradecimentos à agência Cadaris, principalmente a Diretora Comercial, que propôs essa oportunidade de alinhar meus conhecimentos obtidos na Universidade Federal do ABC no ambiente corporativo, além de crescimento pessoal e profissional. + +A Ingrid Ferreira Costa pela paciência e força em sempre me ajudar a revisar este relatório. \end{titlepage} @@ -181,9 +185,9 @@ \textbf{RESUMO} \end{center} -O presente relatório descreve as atividades realizadas durante o período de Estágio Curricular Obrigatório do Curso Superior de Bacharelado em Ciências da Computação oferecido pela UFABC - Universidade Federal do ABC. O objetivo geral do estágio consistiu no desenvolvimento completo de um sistema ERP (Planejamento dos Recursos da Empresa), da Proposta Comercial e de outros processos administrativos, para a empresa Cadaris Comunicação. +O presente relatório descreve as atividades realizadas durante o período de Estágio Curricular Obrigatório do Curso Superior de Bacharelado em Ciências da Computação oferecido pela UFABC - Universidade Federal do ABC. O objetivo geral do estágio consistiu no desenvolvimento completo de um sistema ERP (Planejamento dos Recursos da Empresa), da Proposta Comercial e de outros processos administrativos para a empresa Cadaris Comunicação. -A justificativa para o projeto é que o sistema atual contratado pela organização é ineficiente, desta forma, há necessidade do desenvolvimento de um novo sistema exclusivo que possa suportar os novos moldes da empresa, a fim de substituir esta ferramenta defasada. O novo sistema será desenvolvido em PHP em conjunto com o \textit{framework} Laravel. +A justificativa para o projeto é que o sistema atual contratado pela organização é ineficiente, desta forma, há necessidade do desenvolvimento de um novo sistema exclusivo que possa suportar os novos moldes da empresa, a fim de substituir esta ferramenta defasada. O novo sistema foi desenvolvido em PHP em conjunto com o \textit{framework} Laravel. Iniciou-se o estágio com reuniões periódicas com a intenção de apresentar todas as regras de negócio da empresa e projetar o novo sistema para apoiar os processos administrativos. Após isso, houve o estudo necessário para a implementação do sistema, implantação e treinamento de seus usuários na empresa. @@ -200,7 +204,7 @@ This report describes how the developed activities during the period of Internship Required of the Computer Science Bachelor Course offered by UFABC - Federal University of ABC. The general objective of the internship consisted in the complete development of a ERP system (Enterprise Resource Planning), of the Commercial Proposal and other administrative processes, for the company Cadaris Comunicação. -The justification for the project is that the actual system hired by the organization is inefficient, thereby, there is a need of a new exclusive system that can be supported by the new molds of the company in order to replace this outdated tool. The new system will be developed in PHP in conjunction with the Laravel framework. +The justification for the project is that the actual system hired by the organization is inefficient, thereby, there is a need of a new exclusive system that can be supported by the new molds of the company in order to replace this outdated tool. The new system was developed in PHP in conjunction with the Laravel framework. It started the intership with periodic meetings with the intention of presenting all the company's business rules and design the new system to support the administrative processes. After this, there was the necessary study for the implementation of the system, deployment and training of its users in the company. @@ -252,7 +256,7 @@ \section{INTRODUÇÃO} \subsection{CARACTERÍSTICAS DO ESTÁGIO} -A modalidade deste estágio é em \textit{Home Office}\footnote{Escritório em casa, em uma tradução livre do inglês, trabalho que é realizado em espaço alternativo ao escritório de uma empresa.}, que também pode ser definido com um trabalho remoto ou teletrabalho, para a Cadaris Comunicação~\cite{cadaris}. A jornada de trabalho é de segunda à sexta-feira, desempenhando 6 horas diárias, totalizando 30 horas semanais, com a gratificação de uma bolsa de R\$ 1.100,00 por mês. +A modalidade deste estágio foi realizado em \textit{Home Office}\footnote{Escritório em casa, em uma tradução livre do inglês, trabalho que é realizado em espaço alternativo ao escritório de uma empresa.}, que também pode ser definido como um trabalho remoto ou teletrabalho. O estágio foi realizado na Cadaris Comunicação~\cite{cadaris}. A jornada de trabalho é de segunda à sexta-feira, desempenhando 6 horas diárias, totalizando 30 horas semanais, com a gratificação de uma bolsa de R\$ 1.100,00 por mês. Por se tratar de um \textit{Home Office}, proporcionou ao discente um horário flexível de trabalho fazendo com que ele tenha autonomia para conciliar seu trabalho com as suas outras atividades. A comunicação com a empresa foi mantida através de e-mails e ligações via telefone e \textit{Skype}. @@ -294,7 +298,7 @@ \subsection{CARACTERIZAÇÃO E ANÁLISE DA EMPRESA} \begin{description} \item [EDITORIAL] Desenvolvimento de conteúdos editoriais baseado em planejamento, organização e processos de jornalismo, como produtos: revistas, informativos, enews, jornal-mural, guias e relatórios, manuais, cartilhas, etc. \item [ESTRATÉGIA] Criação de campanhas e peças de comunicação dirigida, comunicação interna, incentivo de vendas e marketing de relacionamento. - \item [PUBLICIDADE] Assertividade em briefing, agilidade e criatividade, produzindo: Anúncios, materiais de ponto de venda, materiais promocionais, apresentações de produtos e campanhas, hotsites, etc. + \item [PUBLICIDADE] Assertividade em briefing, agilidade e criatividade, produzindo: Anúncios, materiais de ponto de venda, materiais promocionais, apresentações de produtos e campanhas, hotsites, e entre outros. \item [WEB] Levantamento de requisitos e necessidades, arquitetura da informação, design de projeto e desenvolvimento web. \end{description} @@ -304,7 +308,7 @@ \subsection{CARACTERIZAÇÃO E ANÁLISE DA EMPRESA} \subsection{VISÃO GERAL DO ESTÁGIO} -Durante o primeiro mês, o estagiário foi introduzido ao funcionamento da agência com a familiarização das regras do negócio e foram apresentadas as ferramentas atuais utilizadas para apoiar a administração da empresa. A fim de desenvolver um \textit{software} de Sistema de Gestão Empresarial substituto, para uso interno da Cadaris. +Durante o primeiro mês, o estagiário foi introduzido ao funcionamento da agência com a familiarização das regras do negócio e foram apresentadas as ferramentas atuais utilizadas para apoiar a administração da empresa. A fim de desenvolver um \textit{software} de Sistema de Gestão Empresarial substituto para uso interno da Cadaris. Após este período, foi feito o estudo das tecnologias que seriam utilizadas para o desenvolvimento deste sistema proposto que já estavam sendo discutidas desde o início do estágio. @@ -362,15 +366,15 @@ \subsection{APRESENTAÇÃO DAS REGRAS DE NEGÓCIO} Portanto, o desenvolvimento deste novo sistema foi a principal responsabilidade dada neste estágio. Iniciando pela sua concepção e formalização, com o apoio de documentações como diagramas e modelos de processos. -O processo de Propostas Comerciais é realizado utilizando um sistema contratado desde 2013, este é instalado localmente em um servidor nas dependências da empresa, para somente acesso local dos funcionários. O sistema foi desenvolvido em \textit{ASP}\footnote{ASP, abreviação para \textit{Active Server Pages}, também conhecido atualmente como ASP Clássico, é uma estrutura de bibliotecas básicas (e não uma linguagem) para processamento de linguagens de script no lado servidor para geração de conteúdo dinâmico na Web.} com integração ao banco de dados \textit{Microsoft SQL Server}\footnote{Sistema gerenciador de Banco de dados relacional desenvolvido pela Microsoft.}. E este apresenta muitos problemas, pois não se adapta aos novos padrões de desenvolvimento WEB, assim prejudicando, e muito, a experiência do usuário, por motivos que serão espanados a seguir. +O processo de Propostas Comerciais é realizado utilizando um sistema contratado desde 2013, este é instalado localmente em um servidor nas dependências da empresa para somente acesso local dos funcionários. O sistema foi desenvolvido em \textit{ASP}\footnote{ASP, abreviação para \textit{Active Server Pages}, também conhecido atualmente como ASP Clássico, é uma estrutura de bibliotecas básicas (e não uma linguagem) para processamento de linguagens de script no lado servidor para geração de conteúdo dinâmico na Web.} com integração ao banco de dados \textit{Microsoft SQL Server}\footnote{Sistema gerenciador de Banco de dados relacional desenvolvido pela Microsoft.}. E este apresenta muitos problemas, pois não se adapta aos novos padrões de desenvolvimento WEB, assim prejudicando, e muito, a experiência do usuário, por motivos que serão espanados a seguir. Uma proposta comercial é iniciada com o contato do cliente para o setor de atendimento da Cadaris, no qual, o atendente irá realizar o cadastro de um \textit{job}\footnote{Trabalho, em inglês, trata-se do projeto a ser desenvolvido pela agência.}, preenchendo os dados necessários, em seguida é confeccionado o \textit{briefing}\footnote{O \textit{briefing} é um documento onde constam as informações do cliente com seus requisitos, a descrição do público-alvo e dos objetivos do cliente.} com um cronograma estimado sobre a produção deste \textit{job}. E por fim, o atendimento requisita um orçamento para o departamento responsável pelo financeiro da empresa. Um funcionário do financeiro é encarregado de elaborar uma estimativa de custo para a realização deste \textit{job}. A estimativa é composta por dois tipos de custos: Internos e de Operacionalização. A estimativa de Custos Internos é montada com base em horas por tipo de serviço (Planejamento, Atendimento, Redação, Arte, Tráfego e Estratégia). A estimativa de Custos de Operacionalização refere-se à contratação de serviços de terceiros. Também é especificado o prazo e as condições de pagamento. -Logo após, é gerado um documento PDF\footnote{PDF (Portable Document Format) é um formato de arquivo, desenvolvido pela Adobe Systems, para representar documentos de maneira independente do aplicativo.} com esta estimativa e outros dados importantes à respeito do orçamento em que é enviado para a diretoria comercial aprovar e assim retornar para o atendimento. Caso contrário, será devolvido para o financeiro para realizar as alterações exigidas pela diretoria. +Logo após, é gerado um documento PDF\footnote{PDF (Portable Document Format) é um formato de arquivo, desenvolvido pela Adobe Systems para representar documentos de maneira independente do aplicativo.} com esta estimativa e outros dados importantes à respeito do orçamento em que é enviado para a diretoria comercial aprovar e assim retornar para o atendimento. Caso contrário, será devolvido para o financeiro para realizar as alterações exigidas pela diretoria. -Para concluir a etapa de Proposta Comercial, o atendimento retorna ao cliente com o orçamento, para este ser aprovado por ele, a fim de dar início à produção do \textit{job}. Caso contrário, é solicitado alterações retornando para o \textit{briefing}, ou então o \textit{job} é arquivado se haver desistência do cliente em contratar a agência. +Para concluir a etapa de Proposta Comercial, o atendimento retorna ao cliente com o orçamento para este ser aprovado por ele, a fim de dar início à produção do \textit{job}. Caso contrário, é solicitado alterações retornando para o \textit{briefing}, ou então o \textit{job} é arquivado se haver desistência do cliente em contratar a agência. Pode-se ver na Figura a seguir, o modelo de processo da Proposta Comercial. @@ -421,9 +425,9 @@ \subsubsection{PROBLEMAS ATUAIS E O PROJETO DE UM NOVO SISTEMA} Para compor a Proposta Comercial, este sistema contratado apresenta muitos problemas pelo qual os funcionários devem enfrentar. Resultando em empecilhos para a boa usabilidade e atrapalhando a performance do funcionário. Nesta seção será apontado defeitos do sistema atual e melhorias de recursos necessárias que o novo sistema deverá ter. -O sistema atual tenta ser generalista para suportar inúmeras áreas da empresa e agências com regras de negócio distintas. Assim, muitos de seus módulos se tornam ineficientes para atuar nos novos modelos de negócio, com muitos campos redundantes, ou sem funcionalidade, e não conta com operações automatizas. Um dos problemas mais comuns e sérios que ocorrem é que elementos importantes tem sua relação baseada na inserção manual de códigos identificadores, para realizar a vinculação de um objeto a outro. Assim, de um ponto de vista da experiência do usuário, atrapalha a usabilidade do sistema e facilita o erro humano. +O sistema atual tenta ser generalista para suportar inúmeras áreas da empresa e agências com regras de negócio distintas. Assim, muitos de seus módulos se tornam ineficientes para atuar nos novos modelos de negócio, com muitos campos redundantes, ou sem funcionalidade, e não conta com operações automatizas. Um dos problemas mais comuns e sérios que ocorrem é que elementos importantes tem sua relação baseada na inserção manual de códigos identificadores para realizar a vinculação de um objeto a outro. Assim, de um ponto de vista da experiência do usuário, atrapalha a usabilidade do sistema e facilita o erro humano. -Para o preenchimento do \textit{Briefing}, além de um campo para a escrita livre, são necessários formulários especializados para os tipos de \textit{jobs} que a agência realiza, facilitando e padronizando a confecção destes \textit{Briefings}. O Cronograma é elaborado manualmente, então se faz necessário a incorporação de alguma ferramenta de simples utilização para a elaboração do cronograma estimado, pelo atendente, para a realização do \textit{job}. +Para o preenchimento do \textit{Briefing}, além de um campo para a escrita livre, são necessários formulários especializados para os tipos de \textit{jobs} que a agência realiza, facilitando e padronizando a confecção destes \textit{Briefings}. O Cronograma é elaborado manualmente, então se faz necessário a incorporação de alguma ferramenta de simples utilização para a elaboração do cronograma estimado, pelo atendente para a realização do \textit{job}. Para a transferência do \textit{job} cadastrado de um departamento para outro, durante a passagem das etapas, no sistema atual é necessário realizar um \textit{PIT}\footnote{Abreviação para Pedido Interno de Trabalho, é um documento com todas as informações necessárias para solicitar a realização de algum trabalho.}, que é livre para enviar para qualquer pessoa. Mas, visto que a Proposta Comercial da Cadaris segue uma ordem pré-estabelecida de etapas e departamentos envolvidos, então a adoção de um sistema mais especializado é uma ótima solução para agilizar o processo e impedir possíveis erros. @@ -479,7 +483,7 @@ \subsection{ESTUDO DAS TECNOLOGIAS DE DESENVOLVIMENTO WEB} \subsection{DESENVOLVIMENTO DO SISTEMA} -Após numerosas reuniões, com a Diretora Comercial e de Planejamento da Agência Cadaris e outros funcionários do departamento financeiro, para apresentar e detalhar as necessitadas da empresa foi então iniciada a implementação do sistema. +Após numerosas reuniões, com a Diretora Comercial e de Planejamento da Agência Cadaris e outros funcionários do departamento financeiro para apresentar e detalhar as necessitadas da empresa foi então iniciada a implementação do sistema. Como relatado anteriormente, o novo sistema visa dar total suporte ao processo de Propostas Comerciais, e também a administração Financeira da empresa, gerando Relatórios e controlando o Fluxo de Caixa. Mas inicialmente, foi necessário o desenvolvimento dos cadastros de todos os recursos da empresa, que se relacionarão com outras funcionalidades. @@ -502,7 +506,7 @@ \subsubsubsection{Funcionários} O histórico do funcionário armazena os acontecimentos profissionais ordenados cronologicamente, e tais eventos são: contratação, mérito, dissídio, promoção, reajuste do vale refeição, reajuste do vale transporte, modificação do seguro de vida, aquisição de período aquisitivo e gozo de férias. -Algumas tarefas administrativas foram implementadas sobre este módulo, como a adição em lote de eventos no histórico dos funcionários, para quando houver férias coletivas por exemplo, calculo do valor de dissídio, e controle de pontos do banco de horas para gestão de faltas e horas extras. E ainda a visualização de alguns relatórios como: a férias acumulada e a faixa salarial de cada funcionário. +Algumas tarefas administrativas foram implementadas sobre este módulo, como a adição em lote de eventos no histórico dos funcionários para quando houver férias coletivas, por exemplo, calculo do valor de dissídio, e controle de pontos do banco de horas para gestão de faltas e horas extras. E ainda a visualização de alguns relatórios como: a férias acumulada e a faixa salarial de cada funcionário. \subsubsubsection{Departamentos} @@ -624,9 +628,9 @@ \subsubsubsection{Etapa B - Orçamento e Condição de Pagamento} Nesta etapa, o usuário poderá compor a Estimativa de Custo do \textit{Job} e cadastrar as condições de pagamento que será realizada pela cliente após a entrega do mesmo. -A composição da Estimativa de Custo é um estágio muito importante, ela é essencialmente a Proposta Comercial a ser entregue ao Cliente com a finalidade dele comprar o \textit{Job} da Agência. E também é umas das etapas mais criticadas no sistema anteriormente contratado pela agência, como foi discutida na seção ~\hyperref[sec:2.1.1]{2.1.1 - Problemas Atuais e o Projeto de um Novo Sistema}. Assim houve grande atenção ao projetar e desenvolver essa ferramenta de criação de Estimativas de Custo, para atender eficientemente as necessidades da Cadaris. +A composição da Estimativa de Custo é um estágio muito importante, ela é essencialmente a Proposta Comercial a ser entregue ao Cliente com a finalidade dele comprar o \textit{Job} da Agência. E também é umas das etapas mais criticadas no sistema anteriormente contratado pela agência, como foi discutida na seção ~\hyperref[sec:2.1.1]{2.1.1 - Problemas Atuais e o Projeto de um Novo Sistema}. Assim houve grande atenção ao projetar e desenvolver essa ferramenta de criação de Estimativas de Custo para atender eficientemente as necessidades da Cadaris. -Esta etapa possibilita a criação de inúmeras Estimativas de Custo, para na etapa seguinte serem analisadas pela diretória. O formulário para confeccionar as estimativas são divididas em 3 níveis, em telas diferentes. A primeira tela tem-se a listas de todas as Estimativas de Custo deste \textit{Job}, possibilitando criar uma nova estimativa, editar-la, duplica-la, e duplicar a estimativa a partir de outra estimativa de um \textit{Job} diferente. +Esta etapa possibilita a criação de inúmeras Estimativas de Custo para na etapa seguinte serem analisadas pela diretória. O formulário para confeccionar as estimativas são divididas em três níveis, em telas diferentes. A primeira tela tem-se a listas de todas as Estimativas de Custo deste \textit{Job}, possibilitando criar uma nova estimativa, editar-la, duplica-la, e duplicar a estimativa a partir de outra estimativa de um \textit{Job} diferente. Editar uma estimativa, tem-se a segunda tela, na qual é listado os itens de Custo Interno da Agência e os Custos de Operacionalização relacionado a fornecedores. @@ -658,7 +662,7 @@ \subsubsubsection{Etapa C - Aprovação do Diretor} \subsubsubsection{Etapa D - Geração do PDF e Aprovação do Cliente} -Mesta etapa, o Funcionário do Planejamento, que também faz o atendimento ao cliente, irá gerar um PDF\footnote{O PDF é um formato de arquivo, desenvolvido pela Adobe Systems em 1993, para representar documentos de maneira independente do aplicativo, do hardware e do sistema operacional usados para criá-los.} para cada Estimativa de Custo, selecionando os Contatos cadastrados no Departamento do Cliente que irá receber a proposta, a Estimativa aprovada, e dentre os seguintes modelos de PDF: +Mesta etapa, o Funcionário do Planejamento, que também faz o atendimento ao cliente, irá gerar um PDF para cada Estimativa de Custo, selecionando os Contatos cadastrados no Departamento do Cliente que irá receber a proposta, a Estimativa aprovada, e dentre os seguintes modelos de PDF: \begin{itemize} \item Descrição geral e o Custos Internos; @@ -701,7 +705,7 @@ \subsubsection{RELATÓRIOS E CONTROLE FINANCEIRO} \subsubsubsection{Contas Bancárias} -Inicialmente é cadastrado as Contas Bancárias da empresa, e seu valor inicial naquela data, para a partir desta data o sistema irá calcular todos os fluxo de entradas e saídas desta conta. +Inicialmente é cadastrado as Contas Bancárias da empresa e seu valor inicial naquela data para a partir desta data o sistema irá calcular todos os fluxo de entradas e saídas desta conta. Todo este módulo financeiro visa ser o mais flexível e abrangente para apoiar todos as atividades envolvidas na gestão da empresa. Uma das possibilidade é haver contas de investimento, que rendem com o tempo, entrando valores para a conta. Então, um componente para registar os rendimentos é conveniente. Nele é possível cadastrar o valor do rendimento, o impostos a serem recolhidos, a data e apontar qual a conta que será creditada o valor líquido. @@ -716,7 +720,7 @@ \subsubsubsection{Contas a Receber} A partir do valor das Propostas Comercias contatadas, o Sistema possibilita o parcelamento deste valor em datas e valores configuráveis. O Funcionário do Financeiro entra no componente de Faturamento de Jobs, na qual sua primeira tela é a listagem de todos os \textit{Jobs} que estão na etapa de faturamento indicada lá no Módulo Comercial. Ao selecionar um \textit{Job}, entra-se na sua lista de parcelas, e o funcionário irá inserir parcelas que totalizam o valor total da proposta. -Além de poder inserir manualmente o valor e a data de uma parcela, para a conveniência do usuário, nesta tela possibilita a inserção de parcelas na qual o valor é uma porcentagem do valor total. Por exemplo, pode-se inserir uma parcela de 40\% e outra parcela de 60\% do valor total. +Além de poder inserir manualmente o valor e a data de uma parcela para a conveniência do usuário, nesta tela possibilita a inserção de parcelas na qual o valor é uma porcentagem do valor total. Por exemplo, pode-se inserir uma parcela de 40\% e outra parcela de 60\% do valor total. Em cada parcela é cadastrado a data de pagamento, a conta bancária que receberá o valor no fluxo de caixa, o valor bruto, o valor retido, valor líquido, a nota fiscal e a data de sua emissão. @@ -752,7 +756,7 @@ \subsubsubsection{Folhas de Pagamento} \subsubsubsection{Fluxo de Caixa} -Por intermédio dos cadastros de entradas e saídas, o Sistema deve calcular todo o Fluxo de Caixa ocorrido. Este é o módulo mais importante do financeiro, já que é nele que fica registrado todo o cruzamento dos dados cadastrados e a demonstração do fluxo do caixa por completo em um certo período. +Por intermédio dos cadastros de entradas e saídas, o Sistema deve calcular todo o Fluxo de Caixa ocorrido, por esse é o módulo mais importante do financeiro, pois é nele que fica registrado todo o cruzamento dos dados cadastrados e a demonstração do fluxo do caixa por completo em um certo período. A primeira tela é um calendário em que é possível selecionar o período, na tela seguinte é escolhido a Conta Bancária, assim o sistema retorna à todas atividades registradas da conta e neste período especificado. @@ -766,11 +770,11 @@ \subsubsubsection{Fluxo de Caixa} \subsection{PROVISIONAMENTO} -Nas seções anteriores foram descritos os componentes do sistema, mas o provisionamento deste tem grande importância também. O sistema foi hospedado em um \textit{Amazon Elastic Compute Cloud} da \textit{Amazon Web Services}, que é uma plataforma de computação em nuvem, que permite rodar qualquer aplicação diretamente em computadores virtuais, com uma instância de configuração básicas para suportar o sistema. +Nas seções anteriores foram descritos os componentes do sistema, mas o provisionamento deste tem grande importância também. O sistema foi hospedado em um \textit{Amazon Elastic Compute Cloud} da \textit{Amazon Web Services} que é uma plataforma de computação em nuvem, que permite rodar qualquer aplicação diretamente em computadores virtuais com uma instância de configuração básicas para suportar o sistema. Na máquina virtual foi aplicada uma solução de contêineres com \textit{Docker}, provendo uma camada de abstração para automatizar a implantação em qualquer hospedagem. Deste modo, facilita uma rápida e automatizada configuração de todos os requisitos do sistema, como: PHP-FPM 7.0, MySQL, Nginx, \textit{daemon} para fila de execução assíncrona, e outros. -O sistema provem backups do banco de dados duas vezes ao dia, pois em caso de falha, os contêineres do \textit{Docker} facilitarão a fácil reconfiguração do provisionamento, para que em menos de 5 minutos o sistema volte a estar \textit{online} com os dados restaurados. Com essa infraestrutura o sistema está bem condicionado para seu correto funcionamento e uma ótima performance . +O sistema realiza \textit{backups} do banco de dados duas vezes ao dia, pois em caso de falha, os contêineres do \textit{Docker} facilitarão a fácil reconfiguração do provisionamento para que em menos de cinco minutos o sistema volte a estar \textit{online} com os dados restaurados. Com essa infraestrutura o sistema está bem condicionado para seu correto funcionamento e uma ótima performance . \subsection{ENTREGA DO SISTEMA} @@ -779,7 +783,7 @@ \subsection{ENTREGA DO SISTEMA} A segunda entrega foi na finalização do Módulo Financeiro, possibilitando a migração dos dados financeiros de todas as contas pagas e recebidas desde o inicio do ano de 2017. E também a necessidade de adicionar novos componentes antes não ponderado, como a Rescisão e o 13º Salário. -Todo desenvolvimento do projeto foi o acompanhado pela diretora para validar e homologar funcionalidades, indicando as alterações e as melhorias necessárias. A utilização do Sistema foi de fácil adaptação e aprendizado por toda equipe, as ferramentas de trabalho e os dados necessários para realizar certas ações foram otimizados com relação ao sistema que era utilizado anteriormente. +Todo desenvolvimento do projeto foi acompanhado pela diretora para validar e homologar funcionalidades, indicando as alterações e as melhorias necessárias. A utilização do Sistema foi de fácil adaptação e aprendizado por toda equipe, as ferramentas de trabalho e os dados necessários para realizar certas ações foram otimizados com relação ao sistema que era utilizado anteriormente. O Sistema foi muito bem recebido, pois demonstrou sua grande eficiência logo no inicio, quando houve a inserção de todo o histórico de transações no Módulo Financeiro, ao ponto dos valores calculado pelo sistema se tornarem síncronos com as Contas Bancárias reais da empresa. @@ -960,20 +964,20 @@ \section{FUNDAMENTAÇÃO TEÓRICA} \subsection{ENGENHARIA DE SOFTWARE E SISTEMAS DE INFORMAÇÃO} Para garantir que um \textit{software} seja bem sucedido é necessário seguir determinadas especificações descritas pela Engenharia de Software, verificando assim qual iria atender melhor as necessidades dos usuários e os evitariam de futuras falhas. -Como descrito por Pressman~\cite{pressman}, ter o planejamento completo do projeto antes da própria implementação é extremamente importante. Com um bom planejamento, o sistema irá reduzir drasticamente o impacto de suas falhas, enquanto o \textit{software} estiver em larga utilização. +Como descrito por Pressman~\cite{pressman} ter o planejamento completo do projeto antes da própria implementação é importante, pois com um bom planejamento, o sistema irá reduzir drasticamente o impacto de suas falhas, enquanto o \textit{software} estiver em larga utilização. -Diversas especificações foram abordadas na disciplina \textbf{Engenharia de software}, e o discente as colocou em prática ao desenvolver este sistema. Até nas reuniões iniciais na empresa as técnicas aprendidas em aula foram aplicadas com o apoio de diagramas e modelos para documentar o \textit{software} a ser implementado. +Diversas especificações foram abordadas na disciplina \textbf{Engenharia de software} e o discente as colocou em prática ao desenvolver este sistema. Até nas reuniões iniciais na empresa, as técnicas aprendidas em aula foram aplicadas com o apoio de diagramas e modelos para documentar o \textit{software} a ser implementado. -Conceitos importantes, sobre a aplicação de um \textit{software} para o apoio da regra de negócio de uma empresa, foram discutidos na disciplina \textbf{Sistemas de informação}, com embasamento no livros de Stair~\cite{SI_principios} e Turban~\cite{SI_turban}. Desta forma, aplicar estes conceitos para idealizar e projetar uma ferramenta capaz de sanar as dificuldades atuais, substituir outras ferramentas defasadas e obter a centralização de todos os dados, se tornaram os objetivos primordiais para o desenvolvimento deste sistema. +Conceitos importantes sobre a aplicação de um \textit{software} para o apoio da regra de negócio de uma empresa foram discutidos na disciplina \textbf{Sistemas de informação} com embasamento no livros de Stair~\cite{SI_principios} e Turban~\cite{SI_turban}. Desta forma, aplicar estes conceitos para idealizar e projetar uma ferramenta capaz de sanar as dificuldades atuais, substituir outras ferramentas defasadas e obter a centralização de todos os dados se tornaram os objetivos primordiais para o desenvolvimento deste sistema. \subsection{DESENVOLVIMENTO WEB} Como um dos principais requisitos do sistema é estar \textit{online}, criar um \textit{WebApp} pode ser considerado complexo, pois utilizam diferentes tecnologias para criar uma aplicação semelhante ao de \textit{desktop}, porém em um navegador de internet. Esta aplicação é executada em um servidor que receberá requisições do cliente e retornará respostas a ele conforme as ações desejadas. Enquanto no navegador, haverá a exibição das informações necessárias, além de suportar as interações do usuário. -Pode-se então separar uma \textit{WebApp} em duas camadas: \textit{Back-end} e \textit{Front-end}. Em que o \textit{Front-end} é o responsável por interagir com o usuário, a fim de coletar os nados necessários e transmiti-los ao \textit{Back-end}, para que estes dados possam ser processados para retornar uma resposta. +Pode-se então separar uma \textit{WebApp} em duas camadas: \textit{Back-end} e \textit{Front-end}. Em que o \textit{Front-end} é o responsável por interagir com o usuário, a fim de coletar os nados necessários e transmiti-los ao \textit{Back-end} para que estes dados possam ser processados para retornar uma resposta. -Na disciplina \textbf{Programação para Web}, que já cursada pelo discente, foram apresentados todos os fundamentos e conceitos de aplicações Web~\cite{pWeb_sebesta}, modelagem de aplicações Web interativas em modelo MVC, e outras técnicas. Nesta disciplinas foi utilizado a Plataforma Java\footnote{Plataforma Java é o nome dado ao ambiente que permite desenvolver aplicativos utilizando a linguagem de programação Java, que é uma linguagem de programação interpretada orientada a objetos e executada por uma máquina virtual.} para o desenvolvimento, porém para este sistema foi escolhido a plataforma PHP. Assim houve a necessidade de buscar outras referências bibliográficas, tais como: Orientação a Objetos no PHP~\cite{PHP_Novatec_poo}; Comunicação do PHP com o Banco de Dados~\cite{PHP_Novatec_dev}~\cite{PHP_Novatec_appWeb}~\cite{PHP_mysql}; e interação cliente-servidor utilizando AJAX~\cite{PHP_Novatec_ajax}. +Na disciplina \textbf{Programação para Web} que já cursada pelo discente, foram apresentados todos os fundamentos e conceitos de aplicações Web~\cite{pWeb_sebesta}, modelagem de aplicações Web interativas em modelo MVC e outras técnicas. Nesta disciplina foi utilizado a Plataforma Java\footnote{Plataforma Java é o nome dado ao ambiente que permite desenvolver aplicativos utilizando a linguagem de programação Java, que é uma linguagem de programação interpretada orientada a objetos e executada por uma máquina virtual.} para o desenvolvimento, porém para este sistema foi escolhido a plataforma PHP. Assim houve a necessidade de buscar outras referências bibliográficas, tais como: Orientação a Objetos no PHP~\cite{PHP_Novatec_poo}; Comunicação do PHP com o Banco de Dados~\cite{PHP_Novatec_dev}~\cite{PHP_Novatec_appWeb}~\cite{PHP_mysql}; e interação cliente-servidor utilizando AJAX~\cite{PHP_Novatec_ajax}. -Outros fundamentos importantes são discutidos em outras disciplinas, já antes cursados pelo discente, que foram de grande valia para o desenvolvimento deste sistema. +Outros fundamentos importantes também foram discutidos em outras disciplinas que já antes cursados pelo discente que foram de grande valia para o desenvolvimento deste sistema. Na disciplina \textbf{Processamento da Informação} é apresentado os principais conceitos envolvendo programação~\cite{BCC1}~\cite{BCC2}, como: introdução à algoritmos, variáveis e tipos de dados, operadores aritméticos, lógicos e precedência, funções, estruturas de controle e repetição, vetores e matrizes, entre outros. @@ -985,25 +989,25 @@ \subsection{DESENVOLVIMENTO WEB} Na disciplina \textbf{Banco de Dados} é apresentado conceitos sobre a arquitetura de um Sistema de Banco de Dados, modelagem de dados relacionais, linguagem de definição e manipulação de dados e SQL~\cite{BD}. -A disciplina de \textbf{Segurança de Dados} também contribuiu para os conceitos referentes à segurança de um sistema~\cite{SegDados}, que foram necessários para o desenvolvimento deste projeto. +A disciplina de \textbf{Segurança de Dados} também contribuiu para os conceitos referentes à segurança de um sistema~\cite{SegDados} que foram necessários para o desenvolvimento deste projeto. -Nas subseções seguintes, será descrito as tecnologias utilizadas. +Nas subseções seguintes será descrito as tecnologias utilizadas. \subsubsection{BACK-END} -Do lado do servidor, sua principal função é receber requisições e devolver respostas. Além de ter acesso ao banco de dados e realizar todo o processamento dos dados necessários. +Do lado do servidor, a principal função do back-end é receber requisições e devolver respostas. Além de ter acesso ao banco de dados e realizar todo o processamento dos dados necessários. Para desenvolver o \textit{Back-end} foi necessário o estudo da arquitetura das tecnologias utilizadas no servidor, os livros~\cite{PHP_Novatec_poo}~\cite{PHP_Novatec_dev}~\cite{PHP_Novatec_appWeb}~\cite{PHP_mysql}~\cite{PHP_Novatec_ajax} cumpriu o papel de instruir o discente a estas tecnologias, visto que a utilização da linguagem PHP não foi abordada na grade curricular do Bacharel em Ciências da Computação na UFABC. \subsubsubsection{PHP} -O PHP\footnote{PHP é um acrônimo recursivo para \textit{PHP: Hypertext Preprocessor}, originalmente \textit{Personal Home Page}.} é uma linguagem interpretada capaz de gerar uma página web a ser visualizada no lado do cliente. Suas principais características são sua velocidade e robustez, orientada a objetos, independente de plataforma e tipagem dinâmica. +O PHP\footnote{PHP é um acrônimo recursivo para \textit{PHP: Hypertext Preprocessor}, originalmente \textit{Personal Home Page}.} é uma linguagem interpretada capaz de gerar uma página web a ser visualizada no lado do cliente. Suas principais características são a sua velocidade e sua robustez orientada a objetos, independente de plataforma e tipagem dinâmica. Há várias extensões que possibilita o PHP se conectar com outras ferramentas, como: inúmeros Bancos de Dados, \textit{socket}, geração de PDF, OpenSLL e outros. Por isto, foi considerada a melhor escolha para ser utilizada no \textit{Back-end}, principalmente por ser gratuita sua utilização, diminuindo assim, os custos para o desenvolvimento e execução do sistema. \subsubsubsection{LARAVEL} -Laravel é um \textit{framework} PHP livre e \textit{open-source} para o desenvolvimento de sistemas web~\cite{laravel5}~\cite{laravel_kiliccdaugi}, utilizando o padrão MVC\footnote{Abreviação para \textit{Model-view-controller}, em português modelo-visão-controlador, é um padrão de arquitetura de software que separa em camadas, cada uma com suas responsabilidades.}. O Laravel possui recursos e características que sobressaem dos demais \textit{framework}, como: +Laravel é um \textit{framework} PHP livre e \textit{open-source} para o desenvolvimento de sistemas web~\cite{laravel5}~\cite{laravel_kiliccdaugi}, utilizando o padrão MVC\footnote{Abreviação para \textit{Model-view-controller}, em português modelo-visão-controlador, é um padrão de arquitetura de software que separa em camadas, cada uma com suas responsabilidades.}. Recursos e características que se sobressaem dos demais: {\singlespacing \begin{itemize} @@ -1016,7 +1020,7 @@ \subsubsubsection{LARAVEL} \item Roteamento de links; \item Controladores \textit{Restful}; \item Carregamento automático de classes sob demanda; - \item Compositores de \textit{View}, como o \textit{Blade}, para compor a visão e fornecer estruturas de controle e utiliza o cache para melhor desempenho; + \item Compositores de \textit{View}, como o \textit{Blade} para compor a visão e fornecer estruturas de controle e utiliza o cache para melhor desempenho; \item \textit{Database Migration} para versionar a estrutura do banco de dados, facilitando o desenvolvimento e a manutenção do sistema; \item \textit{Database seeding} para popular o banco de dado com dados a serem utilizados em testes. \item Paginação automática nas listagens de dados; @@ -1031,7 +1035,7 @@ \subsubsubsection{BANCO DE DADOS} Banco de dado é o conjunto organizado de dados que se relacionam entre si, desta forma, permite que informações importantes sejam armazenadas. -Os Banco de Dados são operados por um SGBD\footnote{Abreviação para Sistema Gerenciador de Banco de Dados.}, este gerenciador disponibiliza uma interface para que os clientes possam incluir, alterar ou consultar dados previamente armazenados. Em bancos de dados relacionais, esta interface é constituída por um driver do SGBD que executam comandos na linguagem SQL\footnote{Abreviação de \textit{Structured Query Language}, ou me português, Linguagem de Consulta Estruturada} +Os Banco de Dados são operados por um SGBD\footnote{Abreviação para Sistema Gerenciador de Banco de Dados.}, esse gerenciador disponibiliza uma interface para que os clientes possam incluir, alterar ou consultar dados previamente armazenados. Em bancos de dados relacionais, essa interface é constituída por um driver do SGBD que executam comandos na linguagem SQL\footnote{Abreviação de \textit{Structured Query Language}, ou me português, Linguagem de Consulta Estruturada} O SGBD utilizado no sistema foi o MySQL e a disciplina \textbf{Banco de Dados} instruiu em como desenvolver a uma estrutura sólida e coerente conforme as formas normais. @@ -1045,7 +1049,7 @@ \subsubsubsection{BANCO DE DADOS} \subsubsection{FRONT-END} O \textit{Front-end} é o lado do cliente, no qual fornece uma interface amigável para o usuário, a fim de exibir dados e coletar informações vindas da interação do usuário com o sistema. -Em relação à interface do usuário foi necessário a aplicação de conceitos discutidos na disciplina \textbf{Interação Humano-Computador}, que aborda os fundamentos para criar uma interface com melhor acessibilidade e usabilidade nas suas funcionalidades, para garantir uma melhor experiência de uso pelo usuário~\cite{IHC_benyon}~\cite{IHC_preece}. +Em relação à interface do usuário foi necessário a aplicação de conceitos discutidos na disciplina \textbf{Interação Humano-Computador} que aborda os fundamentos para criar uma interface com melhor acessibilidade e usabilidade nas suas funcionalidades para garantir uma melhor experiência de uso pelo usuário~\cite{IHC_benyon}~\cite{IHC_preece}. Para desenvolver esta interface, são utilizadas diversas ferramentas, e as principais serão apresentados a seguir. @@ -1094,13 +1098,13 @@ \subsection{CONTRIBUIÇÕES PARA A FORMAÇÃO} As ferramentas estudadas pelo discente nas disciplinas contribuíram para a facilidade do desenvolvimento do estágio, mas também alguns assuntos abordados foram aplicados em menor proporção nas atividades, enquanto outros foram necessários um aprimoramento mais aprofundado, considerando que o aprendizado em um ambiente acadêmico acontece em um cenário ideal e pequeno em relação ao mercado de trabalho. -O período total do estágio foi suficiente para perceber a diferença entre a teoria e a prática. Na teoria todo o assunto é passado ao discente, os conceitos, maneiras de resoluções de problemas, os exercícios e projetos são grandes desafios e são os que colocam à prova de tudo o que foi aprendido nas aulas. Porém, quando o aluno se depara com a realidade do mercado de trabalho, nota a diferença do que foi visto nas aulas teóricas, apesar de aparentar um projeto grande, é apenas um pequeno exemplo que pode acontecer no dia a dia do trabalho. Esse alinhamento entre a teoria e a prática faz com o que o discente amadureça os conhecimentos teóricos obtidos na sala de aula e os apliques em situações reais contribuindo no crescimento profissional. +O período total do estágio foi suficiente para perceber a diferença entre a teoria e a prática. Na teoria todo o assunto é passado ao discente, os conceitos, modos de resoluções de problemas, os exercícios e projetos são grandes desafios e são os que colocam à prova de tudo o que foi aprendido nas aulas. Porém, quando o aluno se depara com a realidade do mercado de trabalho, nota a diferença do que foi visto nas aulas teóricas, apesar de aparentar um projeto grande, é apenas um pequeno exemplo que pode acontecer no dia a dia do trabalho. Esse alinhamento entre a teoria e a prática faz com o que o discente amadureça os conhecimentos teóricos obtidos na sala de aula e os apliques em situações reais contribuindo no crescimento profissional. \subsection{DIFICULDADES ENCONTRADAS} -O desenvolvimento de aplicações no ambiente de produção exige muita disciplina do profissional. O código deve ser bem estruturado, pois será mantido por uma equipe. Deve haver um planejamento do projeto antes de iniciar qualquer programação para evitar erros e trabalhos desnecessários. O profissional necessita pesquisar muito sobre como realizar a tarefa, e analisar qual seria a melhor solução, quais seriam as melhores ferramentas, conversar com outros desenvolvedores para adquirir experiência e criar uma solução ideal para o problema. +O desenvolvimento de aplicações no ambiente de produção exige muita disciplina do profissional. O código deve ser bem estruturado, pois será mantido por uma equipe. Deve haver um planejamento do projeto antes de iniciar qualquer programação para evitar erros e trabalhos desnecessários. O profissional necessita pesquisar muito sobre como realizar a tarefa e analisar qual seria a melhor solução, quais seriam as melhores ferramentas, conversar com outros desenvolvedores para adquirir experiência e criar uma solução ideal para o problema. Algumas ferramentas utilizadas no decorrer do estágio não foram ensinadas nos cursos de formação do aluno, como os \textit{frameworks}, dificultando inicialmente o desenvolvimento dos projetos. Porém, tal fato implicou em um maior empenho e dedicação em estudos e pesquisas, gerando ótimos resultados nos projetos e amadurecendo o aluno profissionalmente.