Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DE SANTA CATARINA Sistema web de suporte ao processo de voluntariado da Iniciativa Computação na Escola Gabriel Stedile Florianópolis - SC 2019/2 UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE SISTEMAS DE INFORMAÇÃO Sistema web de suporte ao processo de voluntariado da Iniciativa Computação na Escola Gabriel Stedile Trabalho de conclusão de curso apresentado como parte dos requisitos para obtenção do grau de Bacharel em Sistemas de Informação Florianópolis - SC 2019/2 Gabriel Stedile Sistema web de suporte ao processo de voluntariado da Iniciativa Computação na Escola Trabalho de conclusão de curso apresentado como parte dos requisitos para obtenção do grau de Bacharel em Sistemas de Informação Orientador(a): Dr. Jean Carlo Rossa Hauck Banca examinadora Prof. José Eduardo De Lucca, Dr. Nathalie Ferreira, M.a Resumo A área da tecnologia da informação tem evoluído rapidamente e se faz presente nas mais diversas áreas da sociedade. No entanto percebe-se um déficit quantitativo e qualitativo de profissionais da área, dentre vários motivos, pela alta demanda de conhecimento técnico inerente da área, rápida expansão do setor no país e das constantes inovações associadas ao mercado de tecnologia. Uma medida possível para se alterar essa situação é gerar interesse e curiosidade pela área ainda na Educação Básica, com matérias relacionadas a tecnologia, como programação e segurança. Para isso, iniciativas com apoio de voluntariado, como a iniciativa Computação na Escola, fortalecem o ensino de computação no ensino fundamental e médio. No entanto, a gestão do processo de voluntariado é complexa. Nesse contexto, o presente trabalho tem como objetivo desenvolver um sistema web com a finalidade de apoiar a gestão do processo de voluntariado. Com base em fundamentação teórica, estado da arte e entrevista com responsáveis, o sistema foi idealizado, desenvolvido, testado e implantado. Palavras-chave: Sistema Web, Computação na Escola, Gestão de Processos, Voluntariado, Ensino de Programação. Abstract The area of information technology has evolved fast and is present in the most diverse areas of society. However, there is a quantitative and qualitative deficit of professionals in the area, among many reasons, due to the high demand for inherent technical knowledge of the area, fast expansion of the sector in the country and the constant innovations associated with the technology market. A possible measure to change this situation is to generate interest and curiosity for the area still in basic education, with technology-related subjects, such as programming and security. To this end, volunteer initiatives such as the Computation at School initiative strengthen the teaching of computing in elementary and high school. However managing the volunteering process is complex. In this context, this paper aims to develop and implement a web system to support the management of the volunteering process. Through theoretical foundation and interview with managers, the system was designed and will be developed, tested and implemented. Keywords: Web System, School Computing, Process Management, Volunteering, Programming Teaching. Lista de Figuras Figura 1 - Fases do ciclo de gestão do voluntariado Figura 2 - Comunicação request-response Figura 3 - Representação de request HTTP Figura 4 - Representação de response HTTP Figura 5 - Interface do aplicativo Ivolunteer Figura 6 - Interface do aplicativo Samaritan Figura 7 - Interface do aplicativo SignUp Figura 8 - Interface do aplicativo Whentohelp Figura 9 - Interface do aplicativo Yourvolunteers Figura 10 - Fluxograma do processo de voluntariado - Parte 1 Figura 11 - Fluxograma do processo de voluntariado - Parte 2 Figura 12 - Diagrama de casos de uso Figura 13 - Protótipo de tela inicial Figura 14 - Protótipo de tela de Voluntários Figura 15 - Protótipo de tela de edição de Voluntários Figura 16 - Diagrama Entidade Relacional do CnE - Volunteer Figura 17 - Mapa mental de concepção do nome da aplicação Figura 18 - Logo com título Figura 19 - Logo sem título Figura 20 - Arquitetura geral do sistema Doate Figura 21 - Estrutura de pastas do projeto Figura 22 - Formik Figura 23 - Yup Figura 24 - Axios Figura 25 - Interface:Typescript Figura 26 - Tipagem de parâmetros: Typescript Figura 27 - Celebrate Figura 28 - Nodemailer Figura 29 - Email service Figura 30 - Express Figura 31 - TypeORM Figura 32 - Doate: Tela Inicial Figura 33 - Doate: Tela de contato Figura 34 - Doate: Email de contato Figura 35 - Doate: Página de login Figura 36 - Doate: Página de Calendário Figura 37 - Doate: RCnE menu Figura 38 - Doate: CRUD de Instituições Figura 39 - Doate: Nova Instituição Figura 40 - Doate: Email de cadastro de instituição Figura 41 - Doate: Editar Instituição Figura 42 - Doate: Novo projeto Figura 43 - Doate: Exemplo de tabelas Figura 44 - Doate: Novo material Figura 45 - Doate: Novo material do tipo arquivo Figura 46 - Doate: Novo material do tipo link externo Figura 47 - Doate: Novo usuário Figura 48 - Doate: Email novo usuário Figura 49 - Doate: Email novo usuário voluntário Figura 50 - Doate: Tela de cadastro de voluntário Figura 51 - Doate: Tela de cadastro de voluntário: empresa selecionada Figura 52 - Doate: Tela de cadastro de voluntário: empresa CnE Figura 53 - Doate: Email de confirmação de cadastro Figura 54 - Doate: Aviso de confirmação de cadastro Figura 55 - Doate: Tela de confirmar cadastro Figura 56 - Doate: Formulário de cadastro de voluntário Figura 57 - Doate: Exemplo de validação de formulários Figura 58 - Doate: Tela de captura de assinatura Figura 59 - Doate: Pdf Formulário de cadastro de voluntário Figura 60 - Doate: Primeira etapa de validação concluida Figura 61 - Doate: Badge de sinalização de validação de voluntário Figura 62 - Doate: Voluntário aguardando instituição Figura 63 - Doate: Revisão do formulário de cadastro de voluntário Figura 64 - Doate: Formulário de recomendação do voluntário Figura 65 - Doate: Tela de termo de responsabilidade do voluntário Figura 66 - Doate: Terceira etapa de validação concluida Figura 67 - Doate: Abas de documentos do voluntário Figura 68 - Doate: Calendário inicial do voluntário ativado Figura 69 - Doate: Tela de profile do usuário Figura 70 - Doate: Novo evento a partir do calendário Figura 71 - Doate: Exemplos de eventos no calendário Figura 72 - Doate: Novo evento a partir do CRUD de eventos Figura 73 - Doate: Tela de edição de evento Figura 74 - Doate: Visualizar evento Figura 75 - Doate: Visualizar materiais do evento Figura 76 - Doate: Avaliar evento Figura 77 - Doate: Visualizar avaliação de evento Figura 78 - Interface do aplicativo Insomnia Figura 79 - Interface do aplicativo Notion Figura 80 - Resultados primeira pergunta avaliação: utilidade Figura 81 - Resultados segunda pergunta avaliação: utilidade Figura 82 - Resultados avaliação: SUS Lista de Tabelas Tabela 1 - Termos de busca Tabela 2 - Strings de busca Tabela 3 - Resultado das strings de busca executadas Tabela 4 - Análise de atendimento as funcionalidades Tabela 5 - Requisitos Funcionais Tabela 6 - Requisitos Não-Funcionais Tabela 7 - Atores e Permissões Tabela 8 - Rastreabilidade entre os casos de usoe requisitos funcionais Tabela 9 - Detalhamento de caso de uso: UC4 - CRUD de voluntários Tabela 10 - Detalhamento de caso de uso: UC10 - Avaliar mentoria Tabela 11 - Mapeamento Casos de uso e protótipos de tela Tabela 12 - Cores da identidade visual da CnE Tabela 13 - Cores selecionadas do blog QuickSprout Tabela 14 - Cor selecionada da identidade visual da UFSC Tabela 15 - Lista de avaliadores Tabela 16 - Respostas da primeira pergunta avaliação: funcionalidade Tabela 17 - Respostas da segunda pergunta avaliação: funcionalidade Tabela 18 - SUS: Pontuação por avaliador Tabela 19 - SUS: Pontuação geral do sistema Doate Lista de abreviaturas e siglas CnE - Computação na Escola CRUD - Create, Read, Update and Delete RCnE - Responsável pela Computação na Escola RF - Requisitos funcionais RFN - Requisitos não funcionais HTTP - Hypertext transfer protocol MVP - Minimum Viable Product UFSC - Universidade Federal de Santa Catarina AJAX - Asynchronous Javascript and XML JS - Javascript MIT - Massachussetts Institute of Technology URL - Uniform Resource Locator ORM - Object Relational Mapping DOM - Document Object Model SUMÁRIO SUMÁRIO 12 1. INTRODUÇÃO 14 1.2 Objetivos 19 1.2.1 Objetivo Geral 19 1.2.2 Objetivos Específicos 19 1.3 Metodologia 20 2. FUNDAMENTAÇÃO TEÓRICA 22 2.1 Voluntariado 22 2.2 Aplicação web 25 2.2.1 Tecnologias 27 Esta seção trata da apresentação de algumas das principais tecnologias utilizadas no desenvolvimento da solução. 27 2.2.1.1 Servidor 27 2.2.1.1.1 PostgreSQL 27 2.2.1.1.2 Node.js 28 2.2.1.2 Cliente 28 2.2.1.2.1 React 28 3.1 Protocolo de pesquisa 29 3.2 Execução das buscas 32 3.3 Resultados das buscas: Ferramentas selecionadas 34 3.4 Análise dos resultados 41 4 PROPOSTA DE SOLUÇÃO 44 4.1 Requisitos 44 4.2 Casos de uso 50 4.3 Prototipação de Telas 55 4.4 Modelagem do banco de dados 58 5 DESENVOLVIMENTO 59 5.1 - Processo criativo de concepção do nome 59 5.2 - Identidade visual 61 5.2.1 - Logo 61 5.2.2 - Paleta de cores e fontes 63 5.2.3 - Elementos de interface 64 5.3 - Arquitetura geral do sistema 65 5.3.1 - Cliente: React 67 5.3.2 - Servidor: NodeJS 73 5.3.2 - Banco de dados: Postgres 82 5.4 - Fluxo de telas do sistema Doate 82 5.5 - Insomnia 118 5.6 - Notion 119 6 AVALIAÇÃO DO SISTEMA DOATE 120 6.1 - Definição da avaliação por usuários 120 6.1 - Teste de utilidade 122 6.2 - Teste de funcionalidade 124 6.3 - Teste de usabilidade 127 6.4 - Ameaças a validade da avaliação 129 7 CONCLUSÃO 130 REFERÊNCIAS 133 APÊNDICE A - DETALHAMENTO DOS CASOS DE USO 139 APÊNDICE B - PROTÓTIPO DAS TELAS 146 APÊNDICE C - TERMO DE RESPONSABILIDADE DO VOLUNTÁRIO 150 APÊNDICE D - FORMULÁRIO DE RECOMENDAÇÃO DE CADASTRO DE VOLUNTÁRIO 153 APÊNDICE E - FORMULÁRIO DE CADASTRO DE VOLUNTÁRIO 154 APÊNDICE F - AVALIAÇÃO DA PLATAFORMA DOATE 155 APÊNDICE G - CÓDIGO DA PLATAFORMA DOATE 157 APÊNDICE H - ARTIGO 158 1. INTRODUÇÃO A área da tecnologia da informação tem evoluído em uma velocidade sem precedentes e se faz presente nas mais diversas áreas da sociedade. Cientistas e empresários renomados como Stephen Hawking e Bill Gates já haviam feito previsões sobre impactos negativos na sociedade, como aumento do desemprego devido à ascensão das tecnologias “Inteligentes”, robótica e algoritmos (BROUGHAM, 2017). Muitas ocupações profissionais que se encontram em risco devido a automação não são necessariamente posições de baixa qualificação: mas sim trabalhos às vezes bem pagos da classe média, muitos desses relacionados ao setor de serviços e/ou associados a tarefas rotineiras que possam ser facilmente automatizadas. Este processo é conhecido como polarização de mercado, com a valorização e disponibilidade crescente de ocupações mais complexas e também de ocupações de baixa habilidade. Em contrapartida, ocupações de média habilidade, que exigem menor formação, registram contração no número de empregados (MACHADO, 2017). Por consequência, o desenvolvimento da ciência e tecnologia exige desenvolvimento humano para se adequar à própria transformação que o meio vem sofrendo. Torna-se assim necessário que cada vez mais a população não só tenha acesso a informação e tecnologia, como usuário e/ou consumidor, como também tenha condições de avaliar e participar ativamente dessas mudanças (PINHEIRO, 2007). A Softex publicou artigo apontando um déficit aproximado de 408 mil profissionais de TI até 2020 (SOFTEX, 2018). Esta carência, tanto qualitativa quanto quantitativa por profissionais da área, gera perdas bilionárias para a indústria do setor. Além disso, esta necessidade é observada tanto no nível nacional como internacional, onde a grande maioria da participação nesse setor é do sexo masculino (SOFTEX, 2018). O desinteresse por parte do sexo feminino é observado desde o momento da escolha do curso de graduação até a conclusão de cursos na área (NUNES, 2015). Nesse contexto entende-se que é necessário entender melhor e desenvolver estratégias diversas e complementares para os diferentes sexos, a fim de se alcançar maiores taxas de inclusão e interesse pela área tecnológica. Percebe-se que a insuficiência do setor é quantitativa e qualitativa, em virtude, dentre vários motivos, da alta demanda de conhecimento técnico inerente da área, da rápida expansão do setor no país e das inovações constantes que estão associadas ao mercado de tecnologia (BORTOLUZZI, 2018). A baixa qualificação de profissionais se manifesta por exemplo na dificuldade de se trazer resultados satisfatórios para as empresas (OTTE, 2018), além destes não possuírem competências que possibilitem às corporações se inserirem em cenários de negócios com alta competitividade. Uma medida possível para se alterar essa situação, gerando interesse e curiosidade pela área, seria o contato precoce desde a Educação Básica com assuntos relacionados à tecnologia, como programação, segurança e suporte técnico (WANGENHEIM, 2017). No entanto, outro problema se apresenta diante disso: a disponibilidade de profissionais capacitados para ensinar computação nas escolas (ALVES, 2016). Diversas iniciativas, desde publico-privadas como voluntárias, se apresentam com o intuito de suprir e desenvolver pessoas para o futuro mercado de trabalho. A iniciativa Computação na Escola (CnE) é realizada por professores e 1 pesquisadores do departamento de Informática e Estatística da Universidade Federal de Santa Catarina (INE/UFSC), com o apoio de profissionais voluntários de diversas empresas. A principal meta da iniciativa é ampliar o ensino de computação no ensino fundamental e médio, tornando real a oportunidade de se aprender computação prematuramente . Para tal feito, a CnE realiza o papel de gestão e 2 mediação entre as partes interessadas nesse contexto: empresas que desejam contribuir e recomendar seus colaboradores para tais iniciativas; escolas que buscam estimular seus alunos a terem a oportunidade de complementar seu aprendizado com conhecimento tecnológico e inovador; voluntários tanto vinculados a empresas ou até mesmo pessoas que desejam atuar no programa por si própria e que tenham conhecimento ou interesse para participar, sendo neste caso possível se filiar diretamente a iniciativa CnE. Os eventos que a iniciativa promove vãodesde treinamentos e geração de conteúdo para todas as partes, como também mentoria e a ação propriamente dita de voluntariado. O voluntariado é a ação de pessoas que doam seu trabalho e talento para realização de ações de natureza social, possuindo um forte caráter de justiça e equidade social (RAMOS, 2016). Já pela lei brasileira, encontra-se uma definição de voluntariado no decreto Nº 9.906 : “considera-se atividade voluntária a iniciativa não remunerada de pessoas físicas, isolada ou conjuntamente, prestada à pessoa física, a órgão ou à entidade da 1 http://www.computacaonaescola.ufsc.br/ 2 http://www.computacaonaescola.ufsc.br/?page_id=1656 http://www.computacaonaescola.ufsc.br/ http://www.computacaonaescola.ufsc.br/?page_id=1656 administração pública ou entidade privada sem fins lucrativos, que tenha objetivos cívicos, culturais, educacionais, científicos, recreativos ou de assistência à pessoa, que vise ao benefício e à transformação da sociedade por meio de ações cívicas, de desenvolvimento sustentável, culturais, educacionais, científicas, recreativas, ambientais, de assistência à pessoa ou de promoção e defesa dos direitos humanos e dos animais.”(BRASIL, 2019) No entanto, gerenciar um processo de voluntariado para estas iniciativas pode se tornar um desafio, por ser burocrático, demandar tempo e possuir diversas etapas. Além disso, estudos (RAMOS, 2016) sobre voluntariado apontam que, para resultados mais eficazes e retenção dos voluntários nos projetos, uma boa gestão é fundamental e deve ser muito semelhante a uma empresa: deve se preocupar com a vinculação da organização e seus ambientes, além de facilitar os fluxos de informação. Existem atualmente sistemas para gerenciamento de voluntariado, como por exemplo: ivolunteer , samaritan , signup , whentohelp e yourvolunteers . 3 4 5 6 7 Entretanto, essas soluções disponíveis, de modo geral, são sistemas genéricos, desenvolvidos de modo a atingir o máximo de clientes possíveis para comercialização. Não foi encontrado um sistema que tivesse funcionalidades 3 https://ivolunteer.com/ 4 https://samaritan.com/ 5 https://signup.com/ 6 https://whentohelp.com/ 7 https://yourvolunteers.com específicas para as necessidades da CnE e que também se preocupasse em ter um interface moderna de fácil usabilidade. Além disso, todos os sistemas mais robustos encontrados são de código fechado e com diversas funcionalidades pagas. No intuito de desenvolver um sistema que supra essas necessidades expostas acima, foi desenvolvido um trabalho prévio de TCC (MAESTRI, 2018) onde foi levantado um conjunto de funcionalidades e produzido um protótipo de sistema. No entanto, o resultado desse trabalho produziu um protótipo inicial de sistema, sem contemplar as necessidades de robustez e usabilidade de um sistema para ser colocado em produção e sem abranger todos os requisitos necessários. Assim, é necessário implementar um sistema completo para ser colocado em produção, atendendo a todos os requisitos aprovados pelos responsáveis da CnE, interface web com boa experiência do usuário, e principalmente preocupado com usabilidade e robustez. A vista disso, espera-se que a existência de uma ferramenta web que automatize o processo completo de voluntariado da CnE facilite a interação empresa-escola como também aumente e retenha o interesse de voluntários nessa iniciativa. 1.2 Objetivos 1.2.1 Objetivo Geral Analisar, desenvolver e implantar uma aplicação web de gerência do processo de voluntariado para a iniciativa Computação na Escola. A aplicação deve contemplar o cadastro de: empresas, escolas e voluntários; funcionalidade de avaliação de eventos pelas entidades participantes; e a administração geral do processo de voluntariado. 1.2.2 Objetivos Específicos a) Analisar a literatura e o estado da arte dos sistemas de suporte ao voluntariado; b) Analisar e modelar uma solução técnica para um sistema de suporte ao processo de voluntariado; c) Desenvolver módulos web responsáveis pelo cadastro de empresas, escolas e voluntários; avaliação de eventos e administração geral dos processos da computação na escola. c) Implantar em produção e avaliar os resultados do uso. 1.3 Metodologia Com o objetivo de alcançar o escopo deste trabalho, foi adotada uma metodologia de pesquisa e desenvolvimento em 5 etapas: Etapa 1: Investigação da literatura sobre os conceitos essenciais ao tema deste trabalho. Essa etapa é composta pelas seguintes atividades: Atividade 1.1: Análise da literatura sobre conceitos de gestão de voluntariado. Atividade 1.2: Análise da literatura sobre as tecnologias utilizadas no desenvolvimento de sistemas web, como JavaScript, HTML5, CSS e NodeJS. Etapa 2: Levantamento e mapeamento sistemático do estado da arte sobre conceitos e gestão do voluntariado. Essa etapa é composta pelas seguintes atividades: Atividade 1.1: Definição dos termos e estrutura das buscas. Atividade 1.2: Execução das buscas e seleção de trabalhos relevantes. Atividade 1.3: Análise da apuração dos trabalhos. Etapa 3: Análise e engenharia de requisitos que atendam as necessidades dos usuários do sistema de voluntariado. Essa etapa é composta pelas seguintes atividades: Atividade 1.1: Realização de entrevistas com membros e ex-membros da CnE. Atividade 1.2: Análise dos dados obtidos nas entrevistas e reformulação dos requisitos do sistema. Etapa 4: Modelar e implementar o sistema web de auxílio ao processo de voluntariado da iniciativa CnE. Essa etapa é composta pelas seguintes atividades: Atividade 1.1: Modelagem do banco de dados, classes e funções utilizando diagramas UML. Atividade 1.2: Modelagem e definição dos protótipos de tela. Atividade 1.3: Desenvolvimento e implementação dos módulos do sistema. Atividade 1.4: Testes exploratórios para detecção de problemas no sistema . Etapa 5: Implantação e avaliação da usabilidade e funcionalidades do sistema. Essa etapa é composta pelas seguintes atividades: Atividade 1.1: Implantação do sistema em ambiente de produção. Atividade 1.2: Planejamento dos métodos de avaliação. Atividade 1.3: Execução da avaliação e validação com os responsáveis da iniciativa CnE. Atividade 1.4: Análise dos resultados do processo de avaliação. 2. FUNDAMENTAÇÃO TEÓRICA São abordados neste capítulo conceitos teóricos centrais e necessários para compreensão do domínio deste trabalho. Em primeiro momento é apresentado o conceito de voluntariado. Em um segundo momento é debatido aspectos técnicos relacionados a implementação da solução proposta por este trabalho. 2.1 Voluntariado Tomando base a lei nº 9608/1998 (BRASIL, 1998), o serviço de voluntariado é definido por algumas diretrizes: 1 - É uma atividade não remunerada; 2 - Pode ser prestada por pessoa física ou instituição privada, mas que não tenha fins lucrativos; 3 - Possua caráter e objetivos cívicos, culturais, educacionais, científicos, recreativos ou de assistência social. Como resultado, tal serviço não gera vínculo empregatício, nem obrigação de natureza trabalhista. No Brasil, aproximadamente 7.4 milhões de pessoas realizam algum tipo de trabalho voluntário, sendo equivalente a 4.4% da população com mais de 14 anosde idade (DE OLIVEIRA, 2018). Ainda nessa pesquisa, o perfil dos voluntários é prioritariamente de mulheres, 5,1% comparado a 3,5% dos homens. Além disso, a dedicação ao trabalho voluntário é maior entre as pessoas que possuem alguma ocupação comparado a outros que não são ocupados e existe uma maior porcentagem de participação entre pessoas mais velhas. Algumas grandes empresas que adotam programas de voluntariado no Brasil pode-se citar: Santander, Bosch e Nextel. Alguns benefícios citados, tanto por empresas como pelos funcionários que participam de ações de voluntariado, são o desenvolvimento de noções de trabalho em equipe, integração e solidariedade. Tais pontos contribuem para um melhor clima organizacional e consequentemente uma melhor produtividade e saúde organizacional (INÁCIA, 2019). No entanto, assim como existe uma tendência de crescimento do número de pessoas que desejam participar de ações voluntárias, existe um elevado índice de evasão em atividades de voluntariado, que entre alguns fatores, pesquisam apontaram que a principal e possível causa é a utilização de uma gestão não apropriada (OLIVEIRA, 2007). A gestão do voluntariado é o ato de estabelecer objetivos para atingir a finalidade proposta, se comprometendo com eficácia, eficiência e efetividade de seu voluntariado (RAMOS, 2016). Para que isso ocorra é essencial que a gestão implemente um sistema de regras, supervisão e motivação, tornando possível aproveitar de forma otimizada o potencial do trabalho voluntário. De acordo com Marcos e Amador (2014), a gestão do voluntariado pode ser analisada com um conjunto de fases bem definidas onde cada uma possui objetivos e atividades consideradas como práticas promotoras de gestão eficaz e eficiente de voluntariado: Figura 1 - Fases do ciclo de gestão do voluntariado (MARCOS; AMADOR, 2014). 1 - Tem como objetivo contextualizar o voluntário na organização e na estrutura de sua gestão, tendo como boas práticas a elaboração de um plano de voluntariado e criação de uma ferramenta de gestão que permita replicar os procedimentos em toda a organização. 2 - Define as funções do voluntário, através do mapeamento de perfis sociodemográficos, escolares e profissionais. 3 - Entrada e onboarding do voluntário na organização, realizado através do compromisso de colaboração, definindo direitos e deveres de ambas as partes. 4 - Acompanhamento das atividades do voluntário durante suas ações, onde boas práticas de comunicação com líderes e integrantes do grupo possibilitam um acompanhamento contínuo e a manutenção da satisfação e expectativas e necessidades dos integrantes. 5 - Desenvolvimento de ações de reconhecimento e valorização do desempenho de voluntários, manifestadas de inúmeras formas como certificados, prêmios ou atos públicos. 6 - Consolidação de todas as etapas anteriores e manutenção da relação posterior entre a organização e o voluntário, através processos de orientação da saída e avaliação do voluntariado, além de comunicação regular divulgando novas atividades e convocações. 2.2 Aplicação web Uma aplicação web pode ser definida como um sistema de informática que utiliza um navegador para acesso e emprega tecnologias web como HTML, Javascript e CSS (APLICAÇÃO WEB, 2019). Se organiza em uma estrutura de arquitetura denominada cliente-servidor, onde o browser é o cliente que solicita requisições ao servidor web, que possui a responsabilidade de processar e devolver esta determinada resposta (DEVMEDIA, 2012). Figura 2 - Comunicação request-response. (DEVMEDIA, 2012) O protocolo de comunicação utilizado entre cliente e servidor é o protocolo HTTP, que define a estrutura dos pacotes de comunicação, em outras palavras, quais dados e metadados podem ser inseridos em cada mensagem de request ou response (ALURA, 2019). Na figura 3 e 4 pode-se observar uma representação das estruturas de request e response respectivamente: Figura 3 - Representação de request HTTP Figura 4 - Representação de response HTTP 2.2.1 Tecnologias Esta seção trata da apresentação de algumas das principais tecnologias utilizadas no desenvolvimento da solução. 2.2.1.1 Servidor 2.2.1.1.1 PostgreSQL PostgreSQL é um sistema de gerenciamento de banco de dados objeto-relacional que usa e estende a linguagem SQL. Algumas de suas principais características e pontos fortes são: arquitetura e conjunto de recursos robustos; integridade de dados, manutenção e evolução por parte da comunidade de código aberto . O serviço utiliza a linguagem SQL, popularmente conhecida para inserir, 8 acessar e gerenciar o conteúdo armazenado no banco de dados. 8 https://www.postgresql.org/ 2.2.1.1.2 Node.js O Node.js é um ambiente de execução javascript, que no contexto de modelo de aplicação cliente-servidor, se encontra do lado do servidor. Entre algumas vantagens de sua utilização estão: flexibilidade em instalar dependências para situações específicas; leveza pelo fato de seu ambiente não necessitar de grandes recursos computacionais e utilização de mesma linguagem no frontend e backend, já que javascript é a linguagem padrão para desenvolvimento web (OPUS, 2018). 2.2.1.2 Cliente 2.2.1.2.1 React O React é uma biblioteca javascript declarativa, eficiente e flexível criada em 2011 pelo Facebook, com a principal função de criar interfaces através da estruturação da aplicação em componentes reutilizáveis. (MEDIUM, 2018) . Outro diferencial é o uso do conceito de Virtual DOM: uma representação de uma árvore de objetos que são comparados com a DOM real no browser nos processos de renderização. Apenas os componentes que tiveram seus estados modificados são re-renderizados, tornando o carregamento e atualização de páginas webs muito mais rápidas e elemento-específicas (IMASTERS, 2019). Está é a definição de Single Page Application - SPA - onde o aplicativo web reage a interação do usuário reescrevendo dinamicamente apenas elementos necessários, ao invés do padrão do navegador carregar páginas novas inteiras após receber ações ou novos dados de um servidor da web (SINGLE PAGE APPLICATION, 2020). Com isso se atinge o principal objetivo que é realizar transições mais rápidas e que façam o site se comportar como se fosse um aplicativo nativo, oferecendo uma melhor experiência ao usuário. 3. ESTADO DA ARTE O mapeamento do estado da arte foi realizado por meio de ferramentas de busca na web. Foi utilizado como base de pesquisa o Google Scholar , pois realiza 9 suas buscas em uma grande variedade de bases de dados e possui uma boa funcionalidade de filtros que facilitam a triagem de resultados. Apenas termos em português e inglês foram usados nas buscas, sendo que somente resultados nesses dois idiomas foram analisados. O período de pesquisa está compreendido entre 2015 até 2019. 3.1 Protocolo de pesquisa De forma a planejar a realização da busca pelo estado da arte, é definido um protocolo de pesquisa, que busca responder a seguinte pergunta de pesquisa: quais e como são as ferramentas de apoio ao processo de voluntariadoatualmente disponíveis? Critérios de inclusão - O material encontrado deve apresentar features do sistema que possibilitam a análise e enquadramento na resolução das necessidades do sistema de apoio para voluntariado da iniciativa Computação na Escola. 9 https://scholar.google.com.br - O material encontrado deve ser específico para gestão de processos de voluntariado em iniciativas de responsabilidade social. Critérios de exclusão - Os estudos que não possibilitem o acesso ao sistema serão desconsiderados devido a impossibilidade de se testar funções e interface. Critérios de qualidade - Os estudos devem preferencialmente dar soluções e se relacionar com todas as necessidades que o sistema de apoio para voluntariado da iniciativa Computação na Escola deve atender. - O material encontrado deve utilizar tecnologias recentes (até 5 anos) e levarem em consideração interface e usabilidade do sistema. Tabela 1 - Termos de busca Termo Sinônimos Traduções Sistema Web Aplicativo, Aplicação, Sistema Informatizado, Software Web System, Application, Computerized System, Software, Gerenciamento de Processos Gestão, Controle Process Management, Management Voluntariado Responsabilidade Social, Terceiro Setor Social Responsibility, Corporate Social Responsibility / CSR, Voluntary, Voluntary Sector / Community Sector Tabela 2 - Strings de busca Nº String de Busca Pesquisas por palavras chaves apenas nos títulos 1 allintitle:(("Sistema Web" OR "Aplicativo" OR "Aplicação" OR "Sistema Informatizado") AND ("Gerenciamento de Processos" OR "Gestão" OR "Controle") AND ("Voluntariado" OR "Responsabilidade Social" OR "Terceiro Setor")) PERIOD (2015 to 2019) 2 allintitle:(("Sistema Web" OR "Aplicativo" OR "Aplicação" OR "Sistema Informatizado") AND ("Gerenciamento de Processos" OR "Gestão" OR "Controle")) PERIOD (2015 to 2019) 3 allintitle:(("Sistema Web" OR "Aplicativo" OR "Aplicação" OR "Sistema Informatizado") AND ("Voluntariado" OR "Responsabilidade Social" OR "Terceiro Setor")) PERIOD (2015 to 2019) 4 allintitle:(volunteer management system) PERIOD (2015 to 2019) Pesquisas por palavras chaves livre 5 ("Sistema Web" OR "Aplicativo" OR "Aplicação" OR "Sistema Informatizado" OR "Web System" OR "Application" OR "Computerized System" OR "Software") AND ("Gerenciamento de Processos" OR "Gestão" OR "Controle" OR "Process Management" OR "Management") AND ("Voluntariado" OR "Responsabilidade Social" OR "Terceiro Setor" OR "Social Responsibility" OR "Corporate Social Responsibility/ CSR" OR "Voluntary" OR "Voluntary Sector/ Community Sector") PERIOD (2015 to 2019) 6 ("Sistema Web" OR "Aplicativo" OR "Aplicação" OR "Sistema Informatizado") AND ("Gerenciamento de Processos" OR "Gestão" OR "Controle") AND ("Voluntariado" OR "Responsabilidade Social" OR "Terceiro Setor") PERIOD (2015 to 2019) 7 ( "Web System" OR "Application" OR "Computerized System" OR "Software") AND ( "Process Management" OR "Management") AND ("Social Responsibility" OR "Corporate Social Responsibility/ CSR" OR "Voluntary" OR "Voluntary Sector/ Community Sector") Pesquisas por frases específicas livre 8 Sistema web de apoio a gestão de voluntariado PERIOD (2015 to 2019) 9 Web system to support volunteer management PERIOD (2015 to 2019) 3.2 Execução das buscas As buscas foram realizadas durante os meses de Maio a Julho de 2019, gerando um total de 11 iterações de buscas. Tabela 3 - Resultado das strings de busca executadas Primeira a Nona Execução A tabela 3 apresenta o resultado das 9 primeiras interações realizadas no google scholar. Foram utilizadas 3 formas de pesquisa: Nº String de Busca Pesquisas por palavras chaves apenas nos títulos 1 0 2 7 3 0 4 7 Pesquisas por palavras chaves livre 5 * 1.110.000 6 14.600 7 64.300 Pesquisas por frases específicas livre 8 9.960 9 18.900 1 - Palavras chaves apenas nos títulos dos artigo, onde se mostrou bastante escasso o retorno das buscas - no máximo de 7 resultados, sendo que nenhum destes atendeu aos critérios de inclusão. 2 - Palavras chaves localizadas em qualquer parte do artigo, no qual retornou uma quantidade de artigos na casa dos milhares devido ao fato que muitas das palavras chaves serem comuns nos textos dos artigos, tornando o resultado desse tipo de estratégia de filtragem pouco eficiente. 3 - A pesquisa por frases específicas encontradas de forma livre no artigo se mostrou também pouco eficiente, ao retornar um grande número de resultados que não se adequavam especificamente ao contexto do trabalho. Tanto o resultado escasso como o retorno de uma grande quantidade de resultados não específicos reforça a dificuldade de encontrar artigos que em seu conteúdo desenvolveram ou analisaram ferramentas de gestão neste setor. Décima e décima primeira interação Em razão do escasso resultado retornado pelo google scholar, foi realizado duas iterações de busca no Google , utilizando os termos definidos na tabela 1. A 10 décima interação foi com os termos em inglês e décimo primeiro com os termos em português, buscando por ferramentas correlatas. 10 https://www.google.com/ https://www.google.com/ Após análise da documentação e uso quando possível de versões free ou trials, foi elencada para análise mais profunda 5 ferramentas atuais no mercado: 1 - ivolunteer 11 2 - samaritan 12 3 - signup 13 4 - whentohelp 14 5 - yourvolunteers 15 3.3 Resultados das buscas: Ferramentas selecionadas Nesta seção são apresentadas as ferramentas encontradas que atendem os critérios de inclusão. 11 https://ivolunteer.com/ 12 https://samaritan.com/ 13 https://signup.com/ 14 https://whentohelp.com/ 15 https://yourvolunteers.com https://ivolunteer.com/ https://samaritan.com/ https://signup.com/ https://whentohelp.com/ https://yourvolunteers.com/ 1 - Ivolunteer Figura 5 - Interface do aplicativo Ivolunteer. O aplicativo possui período gratuito de 30 dias. Como pontos positivos possui um CRUD com muitas opções de configuração, tornando flexível a diversos cenários de gestão de voluntários. Durante a utilização no período free, foi constatado alguns limites de funcionalidade, como máximo de 15 voluntários, caixa de email com espaço de 250 mensagens e possibilidade de apenas 1 administrador. Ivolunteer apresenta uma alta complexidade, pois possui amplo espectro de funções e opções de configuração, exigindo um alto grau de entendimento das opções da plataforma a fim de dominá-la. Algumas funções relevantes são: possui diversos níveis de perfil de acesso; geração de QR code e upload de arquivos de apoio para eventos; controle de aviso de eventos; Log de atividade desde administrados até voluntários; envio e controle de emails customizáveis através de uma plataforma própria. Trabalha com 3 níveis de assinatura: Free, Standard e Premium, e nas duas últimas faz-se o acesso a mais funcionalidades avançadas, como por exemplo recebimento de pagamentos e doações. Como pontos negativos as contas de voluntários não possuem ids, passwords, sendo que basta cadastrar nome e email se tem acesso a plataforma. Isso pode tornar menos seguro por não possuir tantas informações obrigatórias dos voluntários. Outro pontoé que a aplicação é pseudo responsiva, pois apesar de em janelas e telas menores o site não ter apresentado quebras drásticas de elementos e interfaces, gerou muitas barras de rolagem e distribuição da informação de uma forma pouco efetiva ou atraente. Por fim, não possui visão de acesso das instituições parceiras e avaliação quantitativa dos voluntários e ou dos eventos. 2 - Samaritan Figura 6 - Interface do aplicativo Samaritan. O sistema possui 3 níveis de assinatura: Simples, Standard e PRO. Como funcionalidades relevantes possui: número ilimitado de voluntários; envio de email em massa; busca por oportunidades de voluntariado através de diversos filtros e interesses; upload de documentos necessários; controle de horas disponibilizadas em eventos de voluntariado; função intuitiva de controle de agenda utilizando drag and drop. Em versões pagas adiciona algumas opções avançadas como verificação de antecedentes criminais e log de atividades. Como ponto negativo é necessário se submeter a um processo relativamente burocrático apenas para testar a versão free, sendo obrigatório solicitar o demo enviando uma grande quantidade de dados sobre o interessado. 3 - Signup Figura 7 - Interface do aplicativo SignUp. O aplicativo possui 3 formas de assinatura: Starter, Plus e Max. Possui uma interface semi responsiva por não demonstrar quebras de elementos em tamanhos de janela menores em browsers ou acesso mobile, mas que gera uma redistribuição da informação e de alguns elementos em tela pouco intuitivos ou agradáveis à experiência do usuário. Como funcionalidades positivas e relevantes têm-se: dashboard com calendário de eventos; envio de email; controle de participantes em cada evento de voluntariado; envio de email como forma de convite e cadastro na plataforma; geração de link compartilhável do evento de voluntariado; função de coleta de contribuições e fundos monetários. Nas versões pagas possui serviço de permissão digital com intuito de minimizar burocracia e a utilização de documentos físicos e também possui o serviço de geração de relatórios dos projetos de voluntariado. Como pontos negativos sua versão free possui muitos anúncios distribuídos pela interface e o cadastro de usuário é realizado de uma forma pouco segura, necessitando apenas de email, nome e telefone. 4 - Whentohelp Figura 8 - Interface do aplicativo Whentohelp. O aplicativo possui duas formas de assinatura: Lite version e Full version. A versão Lite possui um período de 30 dias free e depois possui também um pequeno valor para continuar a utilização. Existem poucas diferenças de funcionalidade entre as duas assinaturas, sendo a diferença maior é no tempo disponível para cada versão: limite de 250 voluntários cadastrados e histórico de no máximo 18 meses na versão Lite. Já sua versão Full estas funções se tornam ilimitadas e ao usuário é permitido salvar mensagens internas por mais de 30 dias, exportar seus dados em diversos formatos de arquivo, entre outras. Algumas funcionalidades relevantes em comum são: perfis de acesso para gerenciadores de eventos e voluntários; sistema de email e notificações de alertas de mensagens; sistema de like e deslike de eventos; função para voluntários adicionar suas habilidades e características em seu perfil pessoal; possibilidade de acesso de login mobile tanto para coordenadores como para voluntários; analisador de conflito de data e hora entre eventos. Seus principais pontos negativos é que sua versão free possui um limite baixo para quantidade máxima de voluntários, 250 por conta, e também o fato de seu histórico ser de apenas até 18 meses. 5 - Yourvolunteers Figura 9 - Interface do aplicativo Yourvolunteers. A plataforma possui 3 planos de assinatura: Free, Premium e Custom. Disponibiliza voluntários ilimitados; possui um tutorial no moldes step-by-steps na primeira vez que um usuário se cadastrar e logar no sistema; apresenta aceite de termos de uso e resumo de atividades dos usuários além de integração e visualização do calendário do voluntário. A versão free no entanto apresenta muitos anúncios distribuídos pela interface, tornando a experiência do usuário incomoda e poluída. Por fim, o sistema de email está disponível apenas nas versões pagas. 3.4 Análise dos resultados A fim de analisar os aplicativos elencados, foram especificados alguns requisitos iniciais, tomando como base o TCC anterior da ferramenta (MAESTRI, 2018) e por meio de entrevista presencial com um dos coordenadores da CnE. Abaixo segue a subdivisão destes em requisitos funcionais e não funcionais: • RF1 - O sistema deve permitir o cadastro de voluntários. • RF2 - O sistema deve possuir o cadastro de representantes das empresas. • RF3 - O sistema deve possuir o cadastro de representantes das instituições beneficiadas. • RF4 - O sistema deve permitir o cadastro de eventos de voluntariado. • RF5 - O sistema deve permitir o cadastro de treinamentos. • RF6 - O sistema deve permitir a avaliação dos eventos de voluntariado. • RNF1 - O sistema deve ter todas suas funcionalidades gratuitas. • RNF2 - O sistema deve ter seu código Open-Source. • RNF3 - O sistema deve ser uma Aplicação web responsiva. • RNF4 - O sistema deve ter uma interface amigável, norteada por boas práticas de UX Design. A tabela 4 expõe um quadro comparativo apontando a ocorrência ou ausência dos requisitos básicos acima nos aplicativos do mercado elencados. Temos 4 graus de atendimento de cada requisito: T - Totalmente atendido P - Parcialmente atendido N - Não atendido NT - Não testado Tabela 4 - Análise de atendimento as funcionalidades Ivolunteer, Signup e Whentohelp possuem RF1 parcialmente atendido por existir uma limitação de quantidade de voluntários cadastrados. RF2 se apresenta apenas parcialmente como uma funcionalidade possível no Whentohelp pois é possível definir um controle de perfil que possibilita simular um tipo de perfil diferente. A mesma situação ocorre para o caso da RF3. Todos os outros aplicativos trabalham apenas com a figura de um ou mais administradores que gerem os voluntários que se cadastram aos sistemas. RF1 RF2 RF3 RF4 RF5 RF6 RNF1 RNF2 RNF3 RNF4 Ivolunteer P N N T P N N N P P samaritan T NT NT T PT N N N P P signup P N N T N N N N P P whentohelp P P P T P T N N P P yourvolunteers T N N T N N N N P P Para o RF4, todos os sistemas apresentam a funcionalidade, inclusive em em suas versões gratuitas. Ivolunteer e whentohelp apresentam parcialmente a funcionalidade RF5 de cadastro de treinamentos, pois apesar de não terem a opção de criar eventos de diferentes tipos além do voluntariado, pode-se simular eventos treinamentos através da criação de eventos que tem como anexo de documentos e vídeos utilizados para treinamento. Das 5 ferramentas elencadas, apenas o Whentohelp apresenta funcionalidades de avaliação de eventos (RF6). Algumas funcionalidades não puderam ser testadas completamente devido o acesso destas apenas em versões pagas, como é o caso do aplicativo Samaritan. No entanto,para todos os casos, foi consultado nos sites e documentação oficial de cada ferramenta sobre a disponibilidade ou não das funcionalidades elencadas. Dentre todas as plataformas de gestão analisadas, pode-se observar que Whentohelp é a que mais se aproxima das necessidades da CnE. Ainda sim não atende uma série de requisitos básicos, como acesso a todos funcionalidades de forma gratuita e possuir interface intuitiva e responsiva. A análise da stack tecnológica de cada sistema não foi possível ser realizada pois nenhuma das plataformas são de código aberto e em sua documentação não havia material contendo informação sobre esse aspecto. Diante da análise das plataformas elencadas e de outras possibilidades não citadas no presente trabalho, mas que foram encontradas durante as pesquisas, tem-se o conhecimento de diversas aplicações no mercado que possuem o papel de auxiliar na gestão de processos de voluntariado. Porém nenhuma destas consegue atender tanto aos requisitos básicos citados acima como outros requisitos que serão adicionados e debatidos ao decorrer deste documento. Dessa forma chega-se à conclusão que é necessário o desenvolvimento e implementação de uma sistema específico para o contexto da iniciativa Computação na Escola. 4 PROPOSTA DE SOLUÇÃO O processo de elaboração da solução deste trabalho se desenvolve a partir de 4 fases: 1- definição de requisitos funcionais e não-funcionais através da análise do fluxo do processo de gestão de voluntários; 2- levantamento dos casos de uso e seus respectivos detalhamentos; 3 - definição de protótipos de tela; 4 - modelagem inicial de banco de dados. O objetivo principal da solução é a implementação de um sistema web que tenha o papel de apoiar o processo de gestão de todas as partes que compõem o processo de voluntariado, no contexto da iniciativa Computação na Escola. Para o desenvolvimento deste sistema foi adotado a stack de tecnologia javascript, devido a sua importância no cenário atual de tecnologia web e sua alta capacidade de tornar as páginas interativas (DA SILVA, 2019). 4.1 Requisitos O levantamento de requisitos da solução foi realizado em 3 etapas distintas. A primeira etapa foi executada por meio de entrevista com o coordenador do projeto, onde foi exposto o domínio geral da necessidade a ser sanada. Além disso, foram apresentadas as expectativas da iniciativa CnE com relação às funcionalidades que o sistema deve atender, principalmente no que tange a implementação de produto com caráter profissional de uso. Em um segundo momento foi realizado mapeamento bibliográfico e levantamento de ferramentas existentes no mercado, descritas e elencadas na seção 4.1 deste documento, além do próprio TCC produzido anteriormente que se relaciona com essa solução (MAESTRI, 2018). Logo após, essas fontes foram utilizadas como material de apoio para identificação de novas funcionalidades ou aperfeiçoamento de requisitos previamente levantados na primeira etapa. Na terceira etapa, com os requisitos e protótipos de telas produzidos através de anotações reunidas na segunda etapa, foram feitas entrevistas com uma pessoa relacionada a CnE e com o coordenador do projeto a fim de validar e confirmar as propostas desenvolvidas. Ao fim dessas etapas foi produzido o fluxograma de gestão do processo de voluntariado, apresentado em duas partes nas figuras 10 e 11 logo abaixo: Figura 10 - Fluxograma do processo de voluntariado - Parte 1. Figura 11 - Fluxograma do processo de voluntariado - Parte 2. O resultado das 3 etapas foi a definição dos requisitos funcionais apresentado na tabela 5 e dos requisitos não funcionais apresentado na tabela 6: Tabela 5 - Requisitos Funcionais Identificação Descrição RF1 O sistema deve permitir o cadastro do representante da escola na plataforma. RF2 O sistema deve permitir ao RCnE avaliar o formulário de cadastro do representante da escola. RF3 O sistema deve permitir o cadastro do representante da empresa na plataforma. RF4 O sistema deve permitir ao RCnE avaliar o formulário de cadastro do representante da empresa. RF5 O sistema deve permitir ao representante da empresa convidar por email potenciais voluntários. RF6 O sistema deve permitir o cadastro do voluntário na plataforma. RF7 O sistema deve permitir ao representante da empresa avaliar a solicitação de vínculo do voluntário à empresa. RF8 O sistema deve permitir ao voluntário enviar arquivos necessários. RF9 O sistema deve permitir ao representante da empresa recomendar a inscrição de voluntários. RF10 O sistema deve permitir ao RCnE avaliar a inscrição de voluntário recomendada. RF11 O sistema deve permitir ao RCnE criar, editar, deletar e acessar empresas. RF12 O sistema deve permitir ao RCnE criar, editar, deletar e acessar voluntários. RF13 O sistema deve permitir ao RCnE criar, editar, deletar e acessar projetos. RF14 O sistema deve permitir ao RCnE criar, editar, deletar e acessar eventos. RF15 O sistema deve permitir ao RCnE criar, editar, deletar e acessar escolas. RF16 O sistema deve permitir ao RCnE anexar documentos aos eventos. RF17 O sistema deve permitir ao RCnE e Voluntários avaliar treinamentos. RF18 O sistema deve permitir ao RCnE, representante da escola e voluntários avaliar mentorias. RF19 O sistema deve permitir ao RCnE acessar histórico de projetos e eventos. Tabela 6 - Requisitos Não-Funcionais 4.2 Casos de uso Por meio da análise dos requisitos definidos e do fluxograma apresentado nas figuras 10 e 11, foram identificadas quatro entidades externas que irão interagir com a solução, representando 4 papéis de atores no diagrama de casos de uso. São esses: Responsável na Computação na Escola (RCnE), Representante da escola, Representante da empresa e Voluntário. Além da identificação dos atores, foram analisados os requisitos funcionais de forma a identificar os casos de uso e, a partir desses, elaborar o diagrama de casos de uso. A figura 12 apresenta o diagrama de caso de uso da plataforma de gestão do voluntariado. Identificação Descrição RNF1 O sistema deve ter todas suas funcionalidades gratuitas. RNF2 O sistema deve ser Open-Source. RNF3 O sistema deve ser uma aplicação web. RNF4 O sistema deve possuir design responsivo nas interfaces gráficas. Figura 12 - Diagrama de casos de uso. A tabela 7 apresenta o que cada ator representa no mundo real e quais são os casos de uso que cada um respectivamente poderá acessar no sistema. Tabela 7 - Atores e Permissões A tabela 8 exibe a relação entre os casos de uso e quais requisitos funcionais estes atendem. Pode-se observar que todos os requisitos nomeados na tabela 5 foram atendidos pelo grupo de casos de uso apresentados na imagem 7: Ator Descrição Casos de Uso Permitidos RCnE Representa coordenadores ou pessoas responsáveis pela gestão da CnE. UC1 - CRUD de Empresa. UC2 - CRUD de projetos. UC3 - CRUD de eventos. UC4 - CRUD de voluntários. UC6 - Alocar voluntários. UC7 - Avaliar recomendação de voluntário. UC8 - Avaliar eventos e projetos. UC9 - CRUD de escola. Representante da escola Representa a pessoa responsávelna escola pela comunicação e decisões oficiais relacionadas à relação com a CnE. UC9 - CRUD escola. UC10 - Avaliar mentoria. Representante da empresa Representa a pessoa responsável na empresa pela comunicação e decisões oficiais relacionadas à relação com a CnE. UC1 - CRUD de empresa. UC13 - Avalia solicitação de vínculo de voluntário. UC5 - Recomendar voluntário. Voluntário Representa a pessoa que irá executar mentorias através das iniciativas da CnE. UC4 - CRUD de voluntários. UC12 - Gerar termo de voluntariado. UC11 - Gerar termo de responsabilidade. UC10 - Avaliar mentoria. Tabela 8 - Rastreabilidade entre os casos de uso e requisitos funcionais As tabelas 9 e 10 a seguir evidenciam com mais detalhamento os casos de uso “CRUD de voluntários” e “Avaliar mentoria”. Demais detalhamento dos casos de uso se encontram no apêndice A. Casos de uso Requisitos UC1 RF11, RF4 UC2 RF13 UC3 RF14, RF13, RF16 UC4 RF12, RF5, RF6, RF8 UC5 RF9 UC6 RF9, RF10 UC7 RF10 UC8 RF17 UC9 RF15, RF1, RF2 UC10 RF18, RF19 UC11 RF8 UC12 RF8 UC13 RF7 Tabela 9 - Detalhamento de caso de uso: UC4 - CRUD de voluntários. Nome do Caso de Uso UC4 - CRUD de voluntários Pré-Condições Ter a empresa ao qual se vincula cadastrada e solicitação de vínculo aceita. Atores Envolvidos Voluntário. Resumo Descreve os passos necessários para que o usuário cadastre um voluntário. Fluxo Principal - Criar Voluntário 1. O usuário clica em “novo” na página de dashboard de Voluntários. 2. O sistema apresenta uma modal contendo o formulário de cadastro de voluntário. 3. O usuário preenche os dados necessários. 4. O usuário clica em “salvar”. 5. O sistema salva os dados no banco de dados e envia um e-mail avisando sobre o novo acesso. Fluxo de Exceção I - Campos obrigatórios não preenchidos 1. No passo 4 do fluxo principal o sistema emite uma mensagem informando que há campos obrigatórios não preenchidos. 2. O sistema retorna para o passo 3 do fluxo principal. Tabela 10 - Detalhamento de caso de uso: UC10 - Avaliar mentoria. 4.3 Prototipação de Telas Esta seção apresenta alguns protótipos de tela, sendo a relação com seus respectivos casos de uso mapeados na tabela abaixo: Nome do Caso de Uso UC10 - Avaliar mentoria Pré-Condições Ter evento com o status “aguardando avaliação”. Atores Envolvidos RCnE, Representantes da escola e Voluntários. Resumo Descreve os passos necessários para que RCnE, Representantes da escola e Voluntários possam avaliar o evento de voluntariado. Fluxo Principal - Avaliar Mentoria 1. O usuário clica no evento a ser avaliado no dashboard de Eventos. 2. O sistema apresenta uma modal contendo os dados do evento, onde um dos campos é a avaliação do evento. 3. O usuário preenche os dados necessários. 4. O usuário clica em “Avaliar”. 5. O sistema salva a avaliação no banco de dados e retorna uma mensagem de sucesso para o usuário. Fluxo de Exceção I - Campos obrigatórios não preenchidos 1. No passo 6 do fluxo principal o sistema emite uma mensagem informando que há campos obrigatórios não preenchidos. 2. O sistema retorna para o passo 5 do fluxo principal. Tabela 11 - Mapeamento Casos de uso e protótipos de tela Logo abaixo são apresentados os protótipos da “Tela inicial” para UC3, “Tela de Voluntários” e “Tela de edição de Voluntários” para UC4. Demais protótipos de tela se encontram no apêndice B. Figura 13 - Protótipo de tela inicial Caso de Uso Protótipo de tela UC3 Figura 13 UC4 Figura 14 e 15 UC2 Figura 21 (Apêndice B) UC3 Figura 22 E 23 (Apêndice B) UC1, UC9 Figura 24 (Apêndice B) Figura 14 - Protótipo de tela de Voluntários Figura 15 - Protótipo de tela de edição de Voluntários 4.4 Modelagem do banco de dados Esta seção apresenta o mapeamento das entidades relacionadas ao sistema CnE - Volunteer através do diagrama ER abaixo. O sistema de gerenciamento de banco de dados adotado para o desenvolvimento desta solução foi o MYSQL. Figura 16 - Diagrama Entidade Relacional do CnE - Volunteer 5 DESENVOLVIMENTO Este capítulo apresenta passo a passo todo o processo de concepção, desenvolvimento e implementação da plataforma Doate. Esclarece decisões de projeto, como por exemplo: seleção da tecnologia empregada; utilização de Designs Patterns; processo criativo do nome; origem das cores e logo empregados na interface visual da web; apresentação da versão final das principais telas referentes ao fluxo central do programa. 5.1 - Processo criativo de concepção do nome Para criar o nome para a plataforma foi utilizado o aplicativo Whimsical . 16 Esta plataforma é um workspace online que possibilita a criação de wireframes, flowcharts e mind maps, sendo este último, utilizado como apoio na concepção do nome selecionado neste trabalho. Na figura 17 logo abaixo, pode-se observar que a palavra "Voluntário" é o ponto inicial, e a partir dela realizou-se um processo de brainstorm de outras palavras e ideias correlatas ao contexto do sistema, considerando que a relação "escolas - empresas - Cne/UFSC" fosse adotada como ideia basal e que fosse remetida no nome final. Tal ideia foi plotada separadamente, ao lado direto no mapa mental, em amarelo. 16 https://whimsical.com Figura 17 - Mapa mental de concepção do nome da aplicação O próximo passo foi uma rodada de novas palavras e ideias correlatas, onde entre algumas possibilidades, optou-se pelo conceito do nome ser uma sigla "simples" e "sonora", o que contribuiria para os usuários lembrarem e reconhecerem facilmente o sistema. Por fim, realizou-se uma última rodada, utilizando anagramas e conexões com base nas palavras previamente plotadas das etapas anteriores. Gerou-se um grande número de opções - a maioria omitidas neste documento devido a sua não relevância - até ser selecionado 4 possibilidades. Em um primeiro momento, optou-se por selecionar um nome internacional, utilizando a língua inglesa. Dessa forma o sistema foi batizado de "CNE Volunteers". No entanto, mais tarde, durante o desenvolvimento do projeto, buscando encontrar um nome que expressasse mais o significado e conexão com o objetivo da plataforma, executou-se uma nova rodada de reavaliação. Dessa vez, foi considerado também o próprio contexto local de influência e atuação do sistema proposto. Como conclusão optou-se por um nome na língua nativa brasileira que carregava como principal significado a ideia e sigla para "Doar-se para escola". Assim, o sistema foi rebatizado de Doate. 5.2 - Identidade visual 5.2.1 - Logo Para criação do logo foi contratado um serviço de designer para criar e entregar um produto profissional. O designer contratado foi Thiago Martins Machado. Primeiro ocorreu uma reunião de alinhamento e explicação do panorama geral do projeto. Além disso, foi repassado quais eram as ideias norteadoras para sua concepção e com qual paleta de cores da identidade visual estariam disponíveis. Após algumas reuniões de ajustes interativos, foi produzido duas versões finais do logo, uma com título (Figura 18) e outra contendo apenas o logo (Figura 19). Figura 18 - Logo com título Figura 19 - Logo sem título O significado principal que a configuração do logo tem como objetivo passar é a união e comunicação das pessoas envolvidas, o que remete ao processo completo de gestão realizada pelo sistema. 5.2.2- Paleta de cores e fontes Para seleção da paleta de cores que foram utilizadas no sistema, foi considerado como base um documento interno oficial da identidade visual da iniciativa computação na escola. Após mapear-se qual grupo de cores que seria necessário para atender todas as demandas da interface, foram elencadas 9 cores. 5 foram retiradas da identidade visual da CnE e mostradas na tabela abaixo: Tabela 12 - Cores da identidade visual da CnE Outras 3 cores que eram necessárias e não existiam referência oficial na identidade visual da CnE, foram selecionadas de um artigo no blog QuickSprout, sobre tendências para 2020 de cores para web sites (PATEL, Neil, 2019). Patel é uma das maiores referências na área e mantém esse blog que reúne as principais tendências e novidades sobre marketing digital e websites. Do artigo foram elencadas as seguintes cores: Tabela 13 - Cores selecionadas do blog QuickSprout Vermelho Azul claro Verde Laranja Roxo Branco Cinza Preto A última cor foi retirada do manual de identidade visual da UFSC, como referência do sistema a própria instituição: Tabela 14 - Cor selecionada da identidade visual da UFSC Para seleção da fonte utilizada no sistema foi respeitada a fonte utilizada na identidade visual da CnE, a Roboto. Esta fonte faz parte de uma família de fontes sem serifa, desenvolvida pela Google que a descreve como "moderna, mas acessível e emocional" (ROBOTO, 2020). É até hoje a fonte padrão no sistema operacional Android. 5.2.3 - Elementos de interface Com relação ao estilo e efeitos de interação dos elementos web em tela, optou-se a Material-UI , uma das bibliotecas de componentes React mais utilizados 17 para desenvolvimento de aplicativos web responsivos e com base no padrão de design da google, o Material Design . Os motivos para a escolha dessa biblioteca 18 foram : ● Implementa um modelo padronizado e mundialmente conhecido; 17 https://material-ui.com/pt/ 18 https://material.io/design Azul escuro ● Facilidade e agilidade no processo de desenvolvimento; ● Vasta documentação e possibilidade de estilização dos componentes; ● Experiência do autor com esta tecnologia, a fim de minimizar eventuais problemas ou curva de aprendizado para sua implementação. 5.3 - Arquitetura geral do sistema Figura 20 - Arquitetura geral do sistema Doate A plataforma Doate foi desenvolvida utilizando a arquitetura cliente-servidor, como mostrado na Figura 20. É considerado uma estrutura de aplicação distribuída, ou seja, as tarefas e cargas de trabalho são distribuídas entre o fornecedor de um recurso/serviço, nesse caso sendo responsabilidade do servidor, e os requerentes desses serviços, o cliente. Observando a figura pode-se notar a visão geral do fluxo de dados: 1 - O usuário acessa o sistema web que para carregar a página inicia o processo de renderização dos componentes. Durante este processo, são necessários dados que estão no servidor. O React então realiza requisição HTTP através do Axios (5.3.1.3), com o objetivo de carregar estes dados. No contexto de um formulário sendo preenchido pelo usuário, é utilizado o Formik (5.3.1.1) e o Yup(5.3.1.2) respectivamente para controle e validação dos formulários. 2 - O servidor Node recebe e analisa a requisição onde o celebrate (5.3.2.1) realiza a validação dos atributos dentro do corpo da requisição. Caso esteja tudo certo o servidor continua o processamento separando e destinando para a rota correta de serviços disponíveis. 3 - O serviço requerido realiza conexão com o banco de dados PostegreSQL, através do express (5.3.2.3) e do TypeORM (5.3.2.4). 4 - Realizado a query no banco, os dados requisitados são retornados e novamente processados no servidor Node pelo express e pelo TypeORM. 5- Uma vez prontos para serem retornados ao cliente, o servidor retorna a requisição. No caso deste trabalho existem cenários onde nesse momento são enviados emails pelo nodemailer (5.3.2.2) para certos destinatários. 6 - Por fim, o cliente React recebe a resposta da requisição, se necessário este realiza algum processamento ou limpeza nos dados, termina o processo de renderização dos componentes e mostra em tela para o usuário. Para escolha e utilização de cada tecnologia e solução foram levados em consideração três requisitos por ordem de importância: - Ferramenta free; - Documentação abrangente e de fácil acesso e - Domínio de conhecimento prévio ou que tinha baixa curva de aprendizado por parte do autor do trabalho a fim de manter um processo de desenvolvimento ágil e efetivo. Nos próximos tópicos será desenvolvido as principais partes e tecnologias do sistema, elucidando suas respectivas funções e responsabilidades. 5.3.1 - Cliente: React O projeto front end foi desenvolvido com a biblioteca Javascript React. Tem como principal função facilitar a criação de elementos das páginas e seu controle de renderização de acordo com a necessidade. Na figura abaixo apresenta-se a estrutura básica de pastas do projeto: Figura 21 - Estrutura de pastas do projeto ● node_modules -> Pasta que contém as dependências e bibliotecas instaladas e utilizadas no projeto. ● public -> Contém a página html principal que será carregada no browser e outros arquivos como o favicon do site. ● src/assets -> Contém todas as imagens e recursos locais utilizados no site, como por exemplo o logo. ● src/components -> Pasta referente a todos os componentes React criados ou separados para utilização e/ou re-utilização. Como exemplo temos nessa pasta as modais e o componente de calendário encontrado na página de dashboard. ● src/core -> Contém recursos diversos mas que são utilizados ou referenciados por toda aplicação. Por exemplo, aqui se encontra constantes, dicionário e chamada de serviços. ● src/documents -> Contém os templates de renderização dos documentos pdfs do sistema. ● src/pages -> Pasta referente às páginas do sistema. ● src/Theme -> contém todos os arquivos e valores usados nas estilizações de componentes, como por exemplo paleta de cores e fonte de texto. Além disso, contém o objeto tema, utilizado pela biblioteca Material-ui para aplicar os estilos configurados em todos os componentes do sistema. 5.3.1.1 - Formik O Formik é uma biblioteca Javascript responsável por facilitar a criação e 19 controle de formulários em React. Normalmente isso é um processo bastante verboso e que envolve várias questões como validação dos inputs, gestão do estado do formulário e manipulação da submissão do formulário. Porém, o Formik reúne todas essas características com sintaxe simples e intuitiva. A figura 22 apresenta um exemplo de utilização do Formik na tela de criação de eventos no sistema Doate. Através do objeto formikProps que é acessível como parâmetro do formulário, é possível ter acesso a diversos atributos e funções interessante, como 19 https://formik.org/docs/overview por exemplos ao "values" que contém o valor de todos os atributos relacionados ao formulário, fazendo o papel de um controlador de estados. Além disso com o "touched" é possível informar quais campos sofreram alguma interação;"errors" contém cada erro de validação dos campos que são obrigatórios e validados pelo Yup; "handleChange" realiza o papel de setter para mudanças de valor nos campos; "handleReset" permite resetar todos os valores dos campos e assim retornar o formulário ao seu estado inicial, entre outros. Figura 22 - Formik 5.3.1.2 - Yup O Yup é um construtor de schemas javascripts voltado para analisar e 20 validar valores. Permite construir validações complexas e interdependentes, com sintaxe intuitiva. A API Yup possui bastante inspiração no Joi, todavia é mais concisa e possui sua atuação em validar no lado do cliente. Além disso possui a vantagem de ser facilmente acoplada ao controle de formulário do Formik, gerando uma poderosa combinação de controle e validação de formulário. Na figura 23 abaixo pode-se observar um fragmento da utilização do Yup como schema de validação ao ser passado como objeto validador nas configurações do Formik, através do atributo "validationSchema". "InitialValues" define o estado inicial do formulário; "onSubmit" recebe a função que será chamada ao submeter o formulário. Com relação a validação realizada pelo Yup, ele permite uma ampla variedade de possibilidades de validação, como por exemplo definir que o campo "end_date" do formulário precisa ser do tipo string. Caso tenha um erro de tipagem é retornado para o usuário uma mensagem definida para isso - nesse caso a mensagem guardada no dicionário em sua constante "REQUIRED_FIELD". Além disso define que esse campo é obrigatório e que além disso sofre uma segunda validação passada como parâmetro do ".test" que verifica se a data final é depois da data inicial. 20 https://github.com/jquense/yup Figura 23 - Yup 5.3.1.3 - Axios Axios é um cliente HTTP que utiliza Promises para realizar requisições. É 21 um projeto open source, que realiza em sua camada base requisições Ajax no browser via XMLHttpRequests. Permite a interceptação de requests e responses e a transformação dos dados em JSON automaticamente. Na figura abaixo é demonstrado um exemplo de utilização do axios, no serviço para criação de um usuário. 21 https://github.com/axios/axios Figura 24 - Axios O objeto "API" é um objeto contendo uma instância do axios configurada por exemplo com a url base para o back end e também contendo alguns headers requeridos. Acho chamar a função .post() está define o verbo HTTP que será utilizado e recebe dois parâmetros: a url específica da rota de usuários que será concatenada com a url base e o "data", o objeto json passado ao body com os dados necessários para criação de um usuário. 5.3.2 - Servidor: NodeJS O NodeJS foi utilizado para desenvolver a plataforma do back-end. Seu 22 cerne é construído em cima do V8, um motor de interpretação javascript com origens do C++, onde sua principal função é permitir a utilização de scripts javascripts no contexto do servidor. Uma grande vantagem de se utilizar node para 22 https://nodejs.org/en/ o back end é que torna possível utilizar uma única linguagem tanto para o front como para o back. O Javascript é uma linguagem interpretada e estruturada, com tipagem dinâmica fraca e multi paradigma. Para o JS oferecer as vantagens de uma linguagem tipada, como segurança, performance e auxílio em tempo de desenvolvimento, é necessário adicionar uma camada que extenderá a linguagem básica, possibilitando suportar tal característica. Para isso, foi utilizado o Typescript, um super set ou conjunto de ferramentas que expandem novas funcionalidades para o JS, como por exemplo tipagens, classes e interfaces e contribui para futuramente o projeto ser escalável, conciso e com a possibilidade de identificar bugs durante o tempo de compilação. Na figura 25 é mostrado um exemplo de definição de interface do objeto "ICreateEventRequest": Figura 25 - Interface:Typescript Esta interface define todos os atributos que um objeto desse tipo é permitido ter e quais são seus respectivos valores. Os atributos com ?: significa que o campo é opcional. Na figura 26 pode-se verificar que o objeto que deve ser passado como parâmetro do medo de criação de um evento é do tipo "ICreateEventRequest": Figura 26 - Tipagem de parâmetros: Typescript Dessa forma é garantido um contrato de tipagem e validação dos dados que chegam, a fim de tornar mais seguro e correto o processamento e criação de uma entidade do tipo Evento. 5.3.2.1 - Celebrate O celebrate é um middleware que utiliza Joi para realizar validação das 23 rotas do servidor. Assim se garante a corretude tanto dos parâmetros como também de suas respectivas tipagens, podendo analisar tanto params, headers, querys e body. Na figura 27 é mostrado um exemplo de uso do celebrate como um middleware para validar os dados que estão chegando pela requisição http. Nesse caso o celebrate define que a rota post dos materiais, no back end denominada como artifacts, pode receber um único arquivo dentro de um atributo "file" e que em seu corpo apenas deve existir três atributos: title, sendo obrigatório; description, sendo um parâmetro opcional e que permite valores null ou ""; e o "file" que pode ser de qualquer tipo. Caso o celebrate encontre alguma inconsistência o back end já retorna uma response contendo o erro de validação. Em caso de tudo estar conforme o contrato, ele passa a chamar a função "create" da camada controller dos artefatos e assim continua o processamento da requisição. 23 https://github.com/arb/celebrate Figura 27 - Celebrate 5.3.2.2 - Nodemailer O Nodemailer é um módulo no node que permite facilmente enviar emails. 24 Uma das principais vantagens para se optar por utilizá-lo é o fato de sua licença ser MIT, ou seja, de software livre. Na figura 28, é possível verificar a utilização do nodemailer como serviço de envio de emails. É injetado como uma dependência onde pode-se configurar o serviço a ser utilizado, neste caso gmail, a autenticação para se utilizar o email o qual enviará e receberá mensagens, sendo o user e pass do email. Foi necessário configurações adicionar no próprio email para permitir redirecionamentos e acessos por parte de um aplicativo externo, que no caso o Doate faz esse papel. 24 https://nodemailer.com/about/ Figura 28 - Nodemailer A figura 29 apresenta um fragmento do serviço sendo configurado para ser usado. A variável "welcomeEmailTemplate" carrega um template de email em formato handlebars (.hbs). logo após o serviço de envio propriamente dito é chamado com a função .sendMail que recebe alguns parâmetros importantes como destinatário (to: name e email); o assunto do email (subject); configuração do template de email, sendo o arquivo do template (file) e os valores que vão popular as variáveis respectivas dentro do arquivo .hbs (nesse caso name e link); Figura 29 - Email service 5.3.2.3 - Express O Express é o framework Node mais popular que oferece diversas 25
Compartilhar