biblioteca digital de monografias - universidade federal do … · 2019. 1. 31. · informação,...

82
CAPA UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE UNIDADE ESPECIALIZADA EM CIÊNCIAS AGRÁRIAS CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS André Gomes da Silva POPGESTOR: SISTEMA DISTRIBUÍDO PARA GESTÃO DE RECURSOS HUMANOS Componente Vital de um Sistema de Gestão Empresarial (ERP) Macaíba 2018

Upload: others

Post on 18-Feb-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • CAPA

    UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE

    UNIDADE ESPECIALIZADA EM CIÊNCIAS AGRÁRIAS

    CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE

    SISTEMAS

    André Gomes da Silva

    POPGESTOR: SISTEMA DISTRIBUÍDO PARA GESTÃO DE RECURSOS

    HUMANOS

    Componente Vital de um Sistema de Gestão Empresarial (ERP)

    Macaíba

    2018

  • FOLHA DE ROSTO

    André Gomes da Silva

    POPGESTOR: SISTEMA DISTRIBUÍDO PARA GESTÃO DE RECURSOS

    HUMANOS

    Componente Vital de um Sistema de Gestão Empresarial (ERP)

    Trabalho de conclusão de curso de graduação apresentado à

    Unidade Acadêmica Especializada em Ciências Agrárias da Universidade Federal do Rio Grande do Norte como

    requisito parcial para a obtenção do título de Tecnólogo (a)

    em Análise e Desenvolvimento de Sistemas.

    Orientador: Prof. Dr. Edson Moreira Silva Neto

    Macaíba

    2018

  • FICHA CATALOGRÁFICA

    Universidade Federal do Rio Grande do Norte – UFRN

    Sistema de Bibliotecas – SISBI

    Catalogação de Publicação na Fonte. UFRN – Biblioteca Central Zila Mamede – Escola

    Agrícola de Jundiaí – EAJ

  • FOLHA DE APROVAÇÃO

    André Gomes da Silva

    POPGESTOR: SISTEMA DISTRIBUÍDO PARA GESTÃO DE RECURSOS

    HUMANOS

    Componente Vital de um Sistema de Gestão Empresarial (ERP)

    Trabalho de conclusão de curso de graduação apresentado à Unidade Acadêmica Especializada

    em Ciências Agrárias da Universidade Federal do Rio Grande do Norte como requisito parcial

    para a obtenção do título de Tecnólogo (a) em Análise e Desenvolvimento de Sistemas.

    Aprovado em: ____ de _______ _____.

    BANCA EXAMINADORA

    __________________________________________

    Prof. Dr. Edson Moreira Silva Neto – EAJ/UFRN (Orientador)

    __________________________________________

    Prof.ª Dr.ª Laura Emmanuella Alves dos Santos Santana de Oliveira – EAJ/UFRN

    __________________________________________

    Prof. Dr. Carlos Henrique Grilo Diniz – EAJ/UFRN

    __________________________________________

    Eng. Helton Pierre Lucena de Medeiros – UFRN/NURA/PoP-RN

  • DEDICATÓRIA

    Dedico este trabalho primordialmente a Deus, por me conceder o dom da vida, aos meus pais

    e demais familiares, professores e amigos que unanimemente me acolheram em suas orações

    e apoio incondicional durante toda esta jornada.

  • AGRADECIMENTOS

    Agradeço em primeiro lugar à Deus pelo cuidado, por não me deixar esquecer que não

    estou só nesse caminho, por acalentar e acalmar a minha mente nas horas mais difíceis

    possibilitando que a mesma estivesse sã para que os objetivos pudessem ser alcançados.

    Aos meus pais, Everaldo Ferreira da Silva, Erivaldo Silva do Nascimento e Carmelúcia

    Gomes de Lira Nascimento, pelas orações incessantes, estímulos diários e por sempre

    acreditarem em mim, inclusive quando nem eu mesmo estava mais acreditando.

    À minha irmã Thatiane Cristina e ao meu filho primogênito Gabriel Henrique, que

    praticamente me obrigaram, no bom sentido da palavra, a prestar o ENEM no ano de 2015,

    praticamente 20 anos após ter concluído os estudos. Vocês me proporcionaram a realização de

    um sonho e assim me deram um bilhete premiado rumo ao conhecimento, ao crescimento

    pessoal e profissional.

    À minha companheira Samara Sousa Duarte pela paciência durante todo este processo

    (risos). Ao meu filho caçula Enzo Gabriel pelo sorriso inspirador que durante os intervalos das

    pesquisas e do desenvolvimento deste trabalho aliviaram e renovaram minhas forças.

    A todos os meus professores da EAJ/UFRN que desde o primeiro período do TADS me

    fizeram apaixonar pelo curso, passando conhecimentos com esmero, plantando junto comigo

    as sementes que hoje germinam e me possibilitam vislumbrar um futuro melhor. Me sinto

    orgulhoso em ter ao longo destes três anos usufruído do alto nível intelectual, profissional e

    humano de cada um destes virtuosos educadores que compõem esta honrosa casa de ensino.

    Em especial aos professores: Leonardo Rodrigues, por me apresentar ao mundo dos

    microcontroladores, mundo este que faz parte deste trabalho; Laura Emmanuella, por me

    ensinar como é fascinante o mundo da programação orientada a objetos, da leitura e da pesquisa;

    Alessandra Mendes, pelo ensinamento de que o meu limite é imposto apenas por mim mesmo

    e que no mundo do conhecimento mais vale uma derrota conquistada com coragem do que uma

    vitória cômoda. Ensinamento aprendido professora; Edson Moreira, pela amizade, confiança e

    apoio incondicionais, por disponibilizar toda infraestrutura do PoP-RN para que o

    desenvolvimento deste trabalho fosse possível.

    A todos os amigos distintos que fiz ao longo desta jornada na EAJ/UFRN e que levarei

    pra vida, bem como a todo corpo de bolsistas, funcionários e coordenação do PoP-RN (local

    onde estagiei por exatos dois anos). Em especial aos amigos Diego Amaral, Helton Pierre,

    Mário Rolim, Bruno Oliveira, Eduardo Rocha, Gabriel Macedo, Thiago Dantas e Nicole

    Rieckmann, que nos ajudaram no desenvolvimento direto deste trabalho atuando na construção

    de toda infraestrutura física e lógica necessária. Jamais esquecerei vocês.

    À Escola Agrícola de Jundiaí (EAJ) e Universidade Federal do Rio Grande do Norte

    (UFRN) por todo apoio institucional dispensado para que pudéssemos concluir mais esta etapa

    no dia de hoje.

  • EPÍGRAFE

    “Cedo ou tarde você descobrirá a diferença entre saber o

    caminho e percorrer o caminho.”

    (Morpheus – Matrix)

  • RESUMO

    Os avanços nas áreas de Internet e Tecnologia da Informação têm transformado a forma como

    pessoas e organizações tangem suas vidas e negócios. Diante dessas transformações as

    organizações têm se utilizado da Tecnologia da Informação como aliada no processo de

    organização, processamento, otimização da informação e apoio à tomada de decisões pela alta

    gestão. Essa tendência se consolida com o surgimento dos sistemas ERP (Enterprise Resource

    Planning), por condensarem características direcionadas ao planejamento e gestão dos recursos

    da organização, com base na informação gerada a partir da integração dos dados de todos os

    seus departamentos em forma de relatórios, visando o alcance de metas, aumento da

    produtividade e competitividade. O objetivo dessa monografia é apresentar o desenvolvimento

    do POPGESTOR: Sistema Distribuído para Gestão de Recursos Humanos, como módulo de

    controle do sistema ERP da organização PoP-RN. O POPGESTOR auxilia os profissionais de

    Recursos Humanos, bolsistas e funcionários da organização nos processos de gestão da

    informação, ponto eletrônico de bolsistas e meio de acesso ao prédio da organização, ambos

    por leitura e autenticação biométrica (impressão digital). O sistema foi modelado com base na

    linguagem UML (Unified Modeling Language), no modelo MER (Modelo Entidade

    Relacionamento) e implementa o padrão arquitetural MVC (Model, View e Controller) em seus

    artefatos de software, também é composto por cinco módulos distintos que trabalham

    integrados, dos quais: três encontram-se em pleno funcionamento (Módulo de Cadastro

    Biométrico – MCB, Módulo de Abertura de Porta Eletrônica – MAPE e Módulo Arduino de

    Acionamento de Relé – MAAR), um em fase final de testes (Módulo de Leitura de Ponto

    Eletrônico - MLPE), e o último em fase inicial de testes (Módulo Web de Gerenciamento –

    MWG). Os testes realizados produziram resultados satisfatórios indicando que o POPGESTOR

    atingiu os objetivos propostos.

    Palavras-chave: Biometria, Impressão Digital, Sistemas Distribuídos, Sistema ERP, Gestão de

    Recursos Humanos, Sistemas Embarcados.

  • ABSTRACT

    Advances in the areas of Internet and Information Technology have transformed the way people

    and organizations manage their lives and business. Considering these transformations,

    organizations have been using Information Technology as an ally in the process of organizing,

    processing, optimizing information and supporting decision-making by the board. This trend is

    reinforced by the emergence of ERP (Enterprise Resource Planning) systems, as they condense

    characteristics directed to the planning and management of the organization's resources, based

    on the information generated from the integration of the data of all its departments in the form

    of reports, aiming at the achievement of goals, increased productivity and competitiveness. The

    purpose of this monograph is to present the development of POPGESTOR: Distributed System

    for Human Resource Management, as a control module of the ERP system of the PoP-RN

    organization. POPGESTOR helps human resources professionals, trainees and employees of

    the organization in the information management processes, electronic point sheet of the trainees

    and access to the organization's building, both by biometric reading and authentication (digital

    printing). The system was modeled based on the UML (Unified Modeling Language) language,

    model MER (Relationship Entity Model) and implements the MVC (Model, View and

    Controller) architectural standard in its software artifacts, it is also composed of five distinct

    integrated modules, of which: three are fully functioning (Biometric Register Module - MCB,

    Electronic Gate Opening Module - MAPE and Arduino Relay Drive Module - MAAR), one is

    in it's final phase of testing (Electronic Point Reading Module - MLPE) and the last one on it's

    initial phase (Web Management Module - MWG). The tests performed produced satisfactory

    results indicating that the POPGESTOR reached the proposed objectives.

    Keywords: Biometrics, Digital Printing, Distributed Systems, ERP System, Human Resource

    Management, Embedded Systems.

  • LISTA DE FIGURAS

    Figura 1. Composição Modular do POPGESTOR. ............................................................... 18

    Figura 2. Fluxo de Dados do Padrão MVC. .......................................................................... 24

    Figura 3. Seis Características Biométricas mais Comuns ...................................................... 25

    Figura 4. Dedos de Silicone utilizados para Fraudar Sistemas Biométricos. .......................... 28

    Figura 5. Comparativo entre Sistemas de Virtualização. ....................................................... 29

    Figura 6. Arquitetura Docker. .............................................................................................. 30

    Figura 7. Diagrama de Sequência para Comunicação por Meio de Sockets. .......................... 31

    Figura 8. Arduino Uno REV3............................................................................................... 32

    Figura 9. Sketch de Exemplo do Arduino. ............................................................................ 33

    Figura 10. Organograma Inicial da Iniciativa POP-ERP. ...................................................... 39

    Figura 11. Diagrama de Casos de Uso do Funcionário.......................................................... 41

    Figura 12. Diagrama de Casos de Uso do Bolsista ................................................................ 42

    Figura 13. Diagrama de Classes MWG................................................................................. 43

    Figura 14. Diagrama de Classes do MCB ............................................................................. 44

    Figura 15. Diagrama de Classes do MLPE ........................................................................... 44

    Figura 16. Diagrama de Classes do MAPE. .......................................................................... 45

    Figura 17. Diagrama de Implantação do POPGESTOR ........................................................ 46

    Figura 18. Diagrama Conceitual. .......................................................................................... 47

    Figura 19. Diagrama Lógico Relacional. .............................................................................. 48

    Figura 20. Leitora Biométrica USB Hamster DX NITGEN. ................................................. 50

    Figura 21. Versão Simplificada do Diagrama de Implantação – Contexto MCB. .................. 53

    Figura 22. Diagrama de Atividades – Fluxo de Troca de Mensagens (Adaptação). ............... 54

    Figura 23. Tela de Cadastro Biométrico do POPGESTOR. .................................................. 55

    Figura 24. Fluxo de Processamento da Função Verify. ......................................................... 56

    Figura 25. Função Verify Iterando sobre a Base de Dados. ................................................... 56

    Figura 26. Módulo MLPE em Funcionamento Experimental no PoP-RN. ............................ 58

    Figura 27. Módulo Externo de Leitura Biométrica................................................................ 60

    Figura 28. Sketch do MAAR. ............................................................................................... 61

    Figura 29. Processo de Confecção de Placas de Circuito Impresso ....................................... 62

    Figura 30. Arduino Fixado sob Móvel .................................................................................. 62

    Figura 31. Dashboard do Módulo MWG. ............................................................................. 63

    Figura 32. View Consulta de Departamentos. ....................................................................... 65

    Figura 33. View Consulta de Projetos .................................................................................. 65

    Figura 34. Página de Teste de Conexão Socket. .................................................................... 69

  • LISTA DE TABELAS

    Tabela 1. Diferenças entre o Sistema Operacional comum e Virtualizado com Docker. ........ 30

    Tabela 2. Seleção dos Materiais ........................................................................................... 34

    Tabela 3. Requisitos Funcionais ........................................................................................... 39

    Tabela 4. Requisitos não-funcionais ..................................................................................... 40

    Tabela 5. HAMSTER DX NITGEN – Características. ......................................................... 50

    Tabela 6. HAMSTER DX NITGEN – Especificações Técnicas. ........................................... 52

    Tabela 7. Threads do Módulo MLPE ................................................................................... 59

    Tabela 8. Threads do Módulo MAPE ................................................................................... 60

    Tabela 9. Testes dos Módulos do POPGESTOR................................................................... 69

    Tabela 10. Dicionário de Dados – Tabela: autenticacao. ....................................................... 76

    Tabela 11. Dicionário de Dados – Tabela: popusers. ............................................................ 76

    Tabela 12. Dicionário de Dados – Tabela: departamentos..................................................... 77

    Tabela 13. Dicionário de Dados – Tabela: bolsistas. ............................................................. 78

    Tabela 14. Dicionário de Dados – Tabela: registros_ponto. .................................................. 78

    Tabela 15. Dicionário de Dados – Tabela: projetos. .............................................................. 79

    Tabela 16. Dicionário de Dados – Tabela: horários. ............................................................. 80

    Tabela 17. Dicionário de Dados – Tabela: registros_porta. ................................................... 80

    Tabela 18. Dicionário de Dados – Tabela: parametros. ......................................................... 81

    Tabela 19. Dicionário de Dados – Tabela: popusers_departamentos. .................................... 81

    Tabela 20. Dicionário de Dados – Tabela: credenciais. ......................................................... 82

  • LISTA DE SIGLAS

    AJAX – Asynchronous Javascript and XML

    CA – Computação Autonômica

    CASE – Computer-Aided Software Enginering

    CRUD – Create, Read, Update e Delete

    EAJ – Escola Agrícola de Jundiaí

    ERP – Enterprise Resource Planning

    GUI – Graphical User Interface

    IDE – Integrated Development Environment

    JDBC – Java™ EE Database Connectivity

    JSON – JavaScript Object Notation

    LDAP – Lightweight Directory Access Protocol

    LFD – Live Finger Detection

    MAAR – Módulo Arduino de Acionamento de Relé

    MAPE – Módulo de Abertura de Ponto Eletrônico

    MCB – Módulo de Cadastro Biométrico

    MER – Modelo Entidade Relacionamento

    MLPE – Módulo de Leitura de Ponto Eletrônico

    MRP II – Manufacturing Resource Planning II

    MVC – Model – View – Controller

    MWG – Módulo Web de Gerenciamento

    ODBC – Open Database Connectivity

    ORM – Object Relational Mapper

    PCB – Placa de Circuito Impresso

    PHP – Hypertext Preprocessor

    REST – Representational State Transfer

    RNP – Rede Nacional de Ensino e Pesquisa

    SDK – Software Development Kit

    SGBD – Sistema Gerenciador de Banco de Dados

    TCP – Transmission Control Protocol

    TI – Tecnologia da Informação

    UFRN – Universidade Federal do Rio Grande do Norte

    UML – Unified Modeling Language

    XML – Extensible Markup Language

  • SUMÁRIO

    1 INTRODUÇÃO ............................................................................................................... 15

    1.1 JUSTIFICATIVA........................................................................................................... 18

    1.2 OBJETIVOS .................................................................................................................. 19

    1.2.1 Objetivo geral ............................................................................................................ 19

    1.2.2 Objetivos Específicos ................................................................................................. 20

    1.3 ORGANIZAÇÃO DO TRABALHO .............................................................................. 20

    2 REFERENCIAL TEÓRICO .......................................................................................... 21

    2.1 SISTEMAS DISTRIBUIDOS ........................................................................................ 21

    2.2 MICROFRAMEWORK PYTHON FLASK ................................................................... 23

    2.3 PADRÃO ARQUITETURAL DE SOFTWARE – MVC ................................................ 23

    2.4 BIOMETRIA – IMPRESSÃO DIGITAL ....................................................................... 25

    2.4.1 Modos de autenticação .............................................................................................. 26

    2.4.2 Impressão digital ....................................................................................................... 26

    2.5 CONTÊINERES DOCKER ........................................................................................... 28

    2.6 COMUNICAÇÃO ENTRE PROCESSOS POR MEIO DE SOCKETS TCP .................. 31

    2.7 MICROCONTROLADOR ARDUINO UNO ................................................................. 32

    3 MATERIAIS E MÉTODOS ........................................................................................... 34

    3.1 MATERIAIS .................................................................................................................. 34

    3.2 MÉTODOS .................................................................................................................... 35

    4 DESENVOLVIMENTO ................................................................................................. 36

    4.1 SELEÇÃO DAS TECNOLOGIAS ................................................................................. 36

    4.1.1 Banco de dados .......................................................................................................... 36

    4.1.2 Linguagens de programação ..................................................................................... 36

    4.1.2.1 Java app (desktop) .................................................................................................... 37

    4.1.2.2 C++ .......................................................................................................................... 38

    4.1.2.3 Python (Microframework Web Flask)....................................................................... 38

    4.2 ANÁLISE DE REQUISITOS ......................................................................................... 38

    4.3 MODELAGENS ............................................................................................................ 40

    4.3.1 Modelagem UML ...................................................................................................... 40

    4.3.1.1 Diagrama de casos de uso ......................................................................................... 41

    4.3.1.2 Diagramas de classes ................................................................................................ 42

  • 4.3.1.3 Diagrama de implantação ......................................................................................... 45

    4.3.2 Modelagem de banco de dados ................................................................................. 47

    4.3.2.1 Modelo conceitual – MER ........................................................................................ 47

    4.3.2.2 Modelo lógico relacional .......................................................................................... 48

    4.3.2.3 Dicionário de dados .................................................................................................. 49

    4.4 IMPLEMENTAÇÃO DOS MÓDULOS DESKTOP, ARDUINO e web ......................... 49

    4.4.1 Implementação dos módulos Java ............................................................................ 49

    4.4.1.1 Dispositivo USB de leitura biométrica Nitgen .......................................................... 50

    4.4.1.2 Módulo de cadastro biométrico – MCB .................................................................... 53

    4.4.1.3 Módulos de leitura biométrica (MLPE – MAPE) ...................................................... 55

    4.4.1.3.1 Mecanismo de busca da biblioteca NBIOBSPJNI.DLL .......................................... 56

    4.4.1.3.2 Módulo de leitura de ponto eletrônico – MLPE ..................................................... 57

    4.4.1.3.3 Módulo de acionamento de porta eletrônica – MAPE ............................................ 59

    4.4.2 Implementação do módulo Arduino – MAAR ......................................................... 61

    4.4.3 Implementação do módulo web – MWG .................................................................. 63

    5 RESULTADOS E DISCUSSÕES ................................................................................... 67

    6 CONCLUSÃO ................................................................................................................. 71

    REFERÊNCIAS BIBLIOGRÁFICAS .............................................................................. 73

    APÊNDICE A – DICIONÁRIO DE DADOS.................................................................... 76

  • 15

    1 INTRODUÇÃO

    O advento da Internet e sua posterior difusão em escala global somados ao célere e

    contínuo avanço da tecnologia em suas inúmeras frentes, revolucionaram o modo como pessoas

    e organizações tangem suas vidas e negócios no mundo moderno.

    Tais mudanças trouxeram diversos benefícios para pessoas comuns e organizações. Este

    trabalho, portanto, insere-se no contexto do desenvolvimento da Tecnologia da Informação (TI)

    sobre as organizações.

    Independentemente do tamanho da organização e da natureza da mesma, pública ou

    privada, não basta instalar computadores, impressoras e aplicativos utilitários interligados em

    rede pelos diversos departamentos da organização para que a mesma se torne automaticamente

    organizada. Os recursos da TI resolvem problemas nas organizações quando bem planejados e

    utilizados, como destacam Rezende e Abreu (2003, p. 56) ao apresentarem a necessidade da

    realização de um trabalho prévio de organização interna e externa da empresa, que compreende

    singularmente as funções empresariais e os específicos procedimentos do negócio principal que

    abrangem as atividades de recursos humanos, produção, comercial, financeira, de materiais e

    respectivos aspectos legais e jurídicos, a fim de que somente a partir do alcance desse limiar,

    seja iniciado o processo de informatização da organização.

    Observou-se que para se manterem no mercado as organizações necessitam de muito

    mais do que o status de organização informatizada, ou seja, precisam ser competitivas, estarem

    a altura da concorrência, bem como atenderem as diversas necessidades de seus clientes, que

    são inúmeras e em constante mutação. Percebeu-se ainda que não apenas investimentos em

    tecnologia de produtos e/ou serviços e infraestrutura empresarial são fundamentais para garantir

    a sobrevivência da organização, e sim o investimento em Tecnologia da Informação. A TI tem

    se mostrado crucial para que as organizações possam estar inteiradas acerca do que ocorre ao

    seu redor de um modo proativo e com base em informações produzidas a partir da análise e do

    processamento de dados confiáveis, influenciar positivamente no processo de tomada de

    decisões da alta gestão da organização.

    Um sistema de informação (SI) pode ser definido tecnicamente como um conjunto de

    componentes inter-relacionados que coletam (ou recuperam), processam, armazenam

    e distribuem informações destinadas a apoiar a tomada de decisões, a coordenação e

    o controle de uma organização. Além de dar apoio à tomada de decisões, à

    coordenação e ao controle, esses sistemas também auxiliam os gerentes e

    trabalhadores a analisar problemas, visualizar assuntos complexos e criar novos

    produtos. (LAUDON, K. J., 2010, p. 12)

  • 16

    Assim, a tecnologia não mais figura apenas como sinônimo de infraestrutura

    empresarial moderna, ou ainda de automação de processos repetitivos outrora realizados

    manualmente. Dadas as mudanças provocadas pelo próprio mercado, e o desenvolvimento

    tecnológico dentre outros fatores, a Tecnologia por Tecnologia rendeu-se à Tecnologia da

    Informação, que protagoniza dentro das organizações um papel de coleta, análise e cruzamento

    de dados que objetiva manter a competitividade, sobrevivência e o poder empreendedor das

    organizações através da tomada de decisões assertivas por parte da alta gestão.

    E é neste contexto que surgiram a partir dos anos 90 os sistemas ERP, sigla para

    Enterprise Resource Planning (planejamento de recursos empresariais) como uma evolução

    dos sistemas MRP II sigla para Manufacturing Resource Planning (planejamento dos recursos

    de manufatura).

    Os sistemas ERP são sistemas de informação integrados adquiridos na forma de

    pacotes comerciais de software com a finalidade de dar suporte à maioria das

    operações de uma empresa industrial (suprimentos, manufatura, manutenção,

    administração financeira, contabilidade, recursos humanos, etc.). (ZWICKER;

    ZOUZA, 2003, p. 2)

    A importância da utilização de um sistema ERP em uma organização é justificada

    quando se analisa os seus benefícios em detrimento das necessidades de se integrar as

    informações de seus departamentos de forma segura e hierárquica, através de módulos de

    software distintos e interconectados que compartilham informações comuns, garantindo a

    unicidade e confiabilidade.

    Nesse sentido, para atender a essas necessidades o Ponto de Presença da Rede Nacional

    de Ensino e Pesquisa no Rio Grande do Norte (PoP-RN), que representa a Rede Nacional de

    Ensino e Pesquisa (RNP) no estado do RN atende às demandas operacionais da rede (Internet

    a nível acadêmico), às demandas de conectividade e informações aos usuários de todo o Estado,

    bem como coordena e opera serviços de Internet para as instituições acadêmicas e de pesquisa

    no estado (POP-RN, 2018), é sugerido como cenário experimental para a implementação de um

    sistema ERP.

    O PoP-RN tem em sua estrutura organizacional aproximadamente oito departamentos,

    cujo conjunto de atividades desenvolvidas atingem um alto grau de organização e

    documentação. O PoP-RN faz uso de diversos sistemas de informação que gerenciam suas

    atividades. Alguns destes artefatos utilizados são proprietários enquanto outros de iniciativa

    Open Source (código aberto).

    No entanto, devido a heterogeneidade desses sistemas, bem como do uso de tais

    artefatos se darem de maneira independente por cada departamento, salvo algumas exceções

  • 17

    (dentre elas o AtivPop1), foram observados alguns problemas tais como: redundância em

    informações utilizadas por alguns departamentos; ausência de homogeneidade na gerência das

    informações do departamento administrativo (Recursos Humanos) com os demais

    departamentos; controle ainda manual do movimento de ponto dos bolsistas da organização.

    Isto posto, uma iniciativa foi realizada pela coordenação do PoP-RN, com o objetivo de

    conceber um layout de projeto para o desenvolvimento de um sistema ERP customizado para a

    organização haja vista que os ERPs existentes no mercado são em sua maioria direcionados aos

    setores de indústria e comércio, além de demandarem alto custo de customização, implantação

    e manutenção.

    Tal iniciativa, provisoriamente denominada POP-ERP, objetiva integrar os

    departamentos, compartilhar informações comuns, extinguir retrabalhos, produzir relatórios

    gerenciais diversos com foco na gerência e tomada de decisões e ainda centralizar o controle

    de acesso por meio de níveis de permissões aos usuários através da ferramenta. Alguns módulos

    do sistema ERP já estão em desenvolvimento e serão entregues e integrados em breve.

    Uma dessas aplicações é o POP-INVENTÁRIO, nome dado ao Sistema de Controle

    Patrimonial de Ativos e Passivos de Rede da organização, desenvolvido por dois alunos do

    Curso Técnico em Informática Integrado ao Médio da Escola Agrícola de Jundiaí e também

    bolsistas do PoP-RN. A aplicação foi modelada e desenvolvida sob os mesmos paradigmas e

    tecnologias utilizados no objeto deste trabalho, bem como integra a ferramenta ERP.

    O cerne deste trabalho, denominado de POPGESTOR, é provavelmente um dos mais

    importantes pilares deste ERP. O POPGESTOR é um sistema distribuído que possui cinco

    módulos de softwares integrados que atuam no processo de gestão de recursos humanos com a

    finalidade de armazenar informações cadastrais de usuários (funcionários, bolsistas), gerenciar

    e controlar o acesso aos módulos do ERP, controlar o ponto eletrônico de bolsistas por leitura

    biométrica e realizar o controle de acesso à sede da organização (porta de entrada) por meio da

    junção da autenticação biométrica com um microcontrolador.

    A Figura 1 ilustra a composição modular do POPGESTOR com suas descrições.

    1 Sistema de gerência de projetos que utiliza a plataforma Open Source REDMINE SOLUTIONS para controle de

    projetos, cronogramas, agenda, arquivo on-line de documentações e de arquivos.

  • 18

    Figura 1. Composição Modular do POPGESTOR.

    FONTE: própria do autor.

    1.1 JUSTIFICATIVA

    Dada a ausência de um sistema de gestão de Recursos Humanos (RH) que concentre

    informações cadastrais de funcionários e bolsistas, e as atividades relacionadas aos bolsistas, o

    departamento administrativo tem se utilizado de ferramentas alternativas para manter o controle

    destas informações tais como: Microsoft Word, Microsoft Excel e o AtivPop. No entanto,

    apesar da finalidade de armazenamento desses dados ser feita na prática através destas

    aplicações, a atomicidade das informações armazenadas não é garantida, o que permite a

    existência de redundâncias e/ou duplicidade nos dados armazenados. Um outro ponto sensível

    é o controle manual do ponto dos bolsistas através do preenchimento de folha de ponto. A tarefa

    de computação e contabilização das horas de atividades dos mesmos, é exaustiva e demanda

    um trabalho manual, mensal e contínuo em uma tarefa que pode seguramente ser automatizada

    através de um sistema de informação com esta finalidade.

    Conforme apresentado na introdução, a iniciativa POP-ERP prevê o desenvolvimento

    de uma aplicação para gestão do departamento de recursos humanos, bem como de outras

    aplicações específicas aos demais departamentos, que visa centralizar informações comuns e

    reaproveita-las quando necessário. Como já apontado anteriormente, os Sistemas Integrados de

  • 19

    Gestão (SIG), que são sistemas ERPs existentes no mercado, possuem um alto custo de

    implantação e manutenção, sem contar que são mais comumente difundidos nos segmentos de

    indústria e comércio, ou seja, demandariam customizações para atender as necessidades do

    PoP-RN elevando significativamente os custos. Alguns dos principais sistemas ERPs mais

    utilizados pelas organizações no Brasil são: SAP; Microsiga; Retail Pro; Linx; Totvs; (o Linx

    e o Retail Pro atendem clientes de menor porte).

    Diante das necessidades expostas o POPGESTOR, sistema distribuído composto por

    cinco módulos integrados por meio de comunicação entre processos, surgiu como uma

    alternativa viável não só por sanar as questões que envolvem as necessidades diretas

    apresentadas acima relativas a implantação de um sistema ERP, com também pelo baixíssimo

    custo de aquisição de equipamentos/componentes eletrônicos, implementação e manutenção da

    ferramenta, uso de tecnologias Open Source, com destaque à solução integrada por meio de

    leitura biométrica no processo de verificações, validações, ponto eletrônico entre outras

    aplicabilidades possíveis, em detrimento a soluções existentes no mercado de empresas

    consolidadas que custam mais caro e não integram seus bancos de dados com o banco de dados

    da aplicação ERP, em alguns casos armazenam as credenciais biométricas no próprio

    dispositivo, o que não é aconselhável. Além dessas justificativas o POPGESTOR mostrou-se

    substancialmente viável em razão de ter sua implementação e manutenção de código fonte

    realizados pela própria organização, o que possibilita ainda a qualquer tempo vir a realizar

    modificações e/ou novas implementações graças a arquitetura aberta implementada.

    1.2 OBJETIVOS

    Nas subseções seguintes serão apresentados o objetivo geral e os objetivos específicos.

    1.2.1 Objetivo geral

    O objetivo deste trabalho é apresentar e implementar um sistema distribuído de gestão

    de Recursos Humanos como componente primordial de um sistema de organização empresarial

    (ERP).

  • 20

    1.2.2 Objetivos Específicos

    Como objetivos específicos podem ser estabelecidos os cinco módulos a seguir, que

    juntos compõem o POPGESTOR:

    Desenvolvimento do Módulo de Cadastro Biométrico (MCB);

    Desenvolvimento do Módulo de Leitura do Ponto Eletrônico (MLPE);

    Desenvolvimento do Módulo de Abertura da Porta Eletrônica (MAPE);

    Desenvolvimento do Módulo Arduino de Acionamento de Relé (MAAR);

    Desenvolvimento do Módulo Web de Gerenciamento (MWG);

    1.3 ORGANIZAÇÃO DO TRABALHO

    Os conteúdos dos capítulos a seguir estão divididos da seguinte forma:

    Capítulo 2: Apresenta o referencial teórico de embasamento do tema;

    Capítulo 3: Materiais e Métodos;

    Capítulo 4: Descreve o desenvolvimento do trabalho, organização e execução

    dos processos de seleção de materiais, tecnologias aplicadas, análise de

    requisitos, modelagens, processo de implementação dos módulos Desktop,

    Arduino e Web;

    Capítulo 5: Apresenta os resultados obtidos com o sistema desenvolvido;

    Capítulo 6: Apresenta as conclusões do trabalho, contribuições, bem como as

    propostas para trabalhos futuros;

  • 21

    2 REFERENCIAL TEÓRICO

    Este capítulo apresenta as definições utilizadas como base teórica para este trabalho

    acerca das tecnologias adotadas, arquitetura das aplicações, bem como do modelo de

    comunicação entre elas. O Capítulo 2 está disposto da seguinte forma: a seção 2.1 descreve as

    definições de sistemas distribuídos; a seção 2.2 apresenta o microframework Python Flask; a

    seção 2.3 apresenta o padrão arquitetural de software utilizado – MVC; a seção 2.4 descreve

    conceitos relacionados a biometria (impressão digital); a seção 2.5 apresenta conceitos de

    Contêineres Docker; a seção 2.6 descreve a comunicação entre processos por meio de Sockets

    TCP e, finalmente, a seção 2.7 apresenta o microcontrolador Arduino Uno.

    2.1 SISTEMAS DISTRIBUIDOS

    Segundo Coulouris et al. (2013), sistemas distribuídos são aqueles compostos por

    componentes de hardware e/ou software, localizados em computadores interligados em rede,

    que comunicam-se e coordenam a execução de ações por meio do envio de mensagens entre si.

    Tanenbaum e Steen (2008) definem sistemas distribuídos de uma forma interessante.

    Apontam que são aqueles sistemas que ao seu usuário final é apresentado como um sistema

    único e coerente abstraindo toda complexidade das trocas de mensagens existentes entre um

    conjunto de computadores independentes ligados em rede.

    A principal motivação de um sistema distribuído é o compartilhamento de recursos de

    maneira útil em um sistema de computadores interligados em redes. Estes recursos podem ser

    discos, arquivos, bancos de dados, impressoras, objetos de dados entre outros. O aprimoramento

    da abstração é explorado como um dos maiores objetivos dos sistemas distribuídos fazendo

    com que cada vez mais usuários utilizem recursos diversos sem que haja interesse em saber

    qualquer informação sobre como são implementados, ou seja, o que há nos bastidores dessas

    aplicações. São exemplos de sistemas distribuídos: internet; sistemas financeiros; jogos online;

    redes sociais e plataformas similares; sistemas de pesquisa (motores de busca) entre muitos

    outros.

    Ainda de acordo com Coulouris et al. (2013), constituem alguns dos maiores desafios

    na área de sistemas distribuídos:

  • 22

    Heterogeneidade – Hardwares, sistemas operacionais, redes, linguagens de

    programação implementados e produzidos por desenvolvedores diferentes2.

    Segurança – Confidencialidade, integridade e disponibilidade resumem este desafio.

    Dados mantidos em sistemas distribuídos são de importância incalculável para o

    usuário, tornando a rotina de envio de informações sensíveis um grande desafio.

    Escalabilidade – Um sistema é escalável quando se mantem eficiente quando há

    aumento significativo do número de usuários e operações realizados pelo sistema. Nisso

    implica-se controlar custos, perda de desempenho e manutenção dos recursos.

    Tratamento de falhas – São parciais, alguns componentes falham enquanto outros não.

    Os maiores desafios estão na detecção, tolerância e recuperação de falhas.

    Concorrência – Quando se tem um ambiente em que vários usuários tentam acessar

    determinado recurso ao mesmo tempo, há a necessidade de garantir devido tratamento

    a esta concorrência, bem como manter a coerência dos recursos.

    Transparência – Elevar o grau de abstração do usuário final para os programadores de

    aplicativos. Transparência de acesso, localização, concorrência, replicação etc.

    Qualidade de serviço – É a garantia de entrega dos serviços com qualidade atendendo a

    requisitos não funcionais tais como: segurança; confiabilidade e parâmetros de

    desempenho.

    Um exemplo prático de uma abordagem focada na superação dos desafios supracitados

    está presente na visão de Corneli Júnior (2016, p. 72), onde propõe soluções para a questão da

    concorrência de recursos em sua aplicação distribuída.

    Igualmente à procura de superar tais desafios, Prado (2017) eleva o nível da busca pela

    resolução dos desafios através da Computação Autonômica (CA). A ideia preconizada pela CA

    é de que os sistemas possam se auto gerenciar sem a intervenção do ser humano. Os sistemas

    autonômicos são fundamentados em quatro atributos segundo (JACOB; LANYON-HOGG;

    YASSIN, 2004).

    São eles:

    Autoconfiguração – Capacidade de se autoconfigurar dinamicamente;

    Autocura – Detecção de problemas e realização de ações corretivas;

    2 Embora a Internet seja heterogênea em sua composição física e lógica, suas diferenças são mascaradas pelo uso

    dos protocolos de comunicação que padronizam a comunicação e abstraem a heterogeneidade.

  • 23

    Auto-otimização – Habilidade de gerenciar e alocar seus recursos com eficiência;

    Autoproteção – Realiza o controle de acesso a dados a usuários devidamente

    credenciados;

    A seguir, a seção 2.2 apresenta o microframework Python Flask.

    2.2 MICROFRAMEWORK PYTHON FLASK

    O Flask é um Microframework Python utilizado para o desenvolvimento web criado em

    2010. É chamado de “Micro” por manter um núcleo simples, mas extensível. Em outras

    palavras é um framework que possui o essencial para gerar aplicações enxutas e compactas.

    Não possui uma camada de abstração do banco de dados (Object Relational Mapper – ORM),

    validação de formulários ou ainda integração com ferramentas Front-end como por exemplo o

    Bootstrap de forma nativa como alguns dos seus principais concorrentes (Django e Pyramid).

    No entanto, com o crescimento da comunidade Flask, hoje há uma vasta coleção de

    bibliotecas/extensões de terceiros que suprem estas e outras necessidades, o que torna sua curva

    de aprendizado mais suave.

    Em virtude de ser considerada ainda uma linguagem nova pelas comunidades Python, o

    Flask não contém muito suporte relativo a documentação e fóruns de discussão, quando

    comparado aos seus principais concorrentes, mas muitos materiais bibliográficos de excelente

    qualidade estão sendo desenvolvidos e lançados para aumentar esse aporte.

    A seguir, a seção 2.3 descreve o padrão arquitetural de software MVC.

    2.3 PADRÃO ARQUITETURAL DE SOFTWARE – MVC

    O MVC, sigla para Model – View – Controller, é um padrão de arquitetura muito

    utilizado no desenvolvimento web, mas pode ser aplicado a outros cenários que envolvem

    integração com o usuário.

    O padrão MVC preconiza a separação da aplicação em três camadas chamadas de

    Model, View e Controller. No entanto, o objetivo desta separação não é induzir ao significado

    literal da separação em camadas apenas como a separação dos códigos desenvolvidos em pastas

    diferentes. O propósito central do MVC se dá na definição de como essas camadas interagem.

    Luckow e Melo (2015, p. 185) apontam que, em outras palavras, a separação de

    responsabilidades é um conceito benéfico na implementação do MVC.

  • 24

    No MVC, as camadas View e Model não podem se conhecer, a comunicação entre as

    duas se dá através da camada Controller.

    Model – Pode ser confundida com modelo de dados, mas representa na verdade a

    camada de acesso aos dados e regra de negócio.

    View – Representa tudo que compõe a interface de um sistema. É na View que o

    usuário insere dados para utilização do sistema, bem como é nela que são exibidas

    as informações geradas pela camada Model.

    Controller – Como o próprio nome sugere é a camada de controle que estabelece e

    controla a comunicação entre a View e Model. É encarregado por buscar informações

    da camada Model para gerar a View e por receber informações da View e enviar para

    Model.

    A Figura 2 ilustra como as camadas conversam dentro do padrão MVC. É possível

    observar que o Model e a View não se relacionam diretamente, sendo intermediados pela

    camada Controller.

    Figura 2. Fluxo de Dados do Padrão MVC.

    FONTE: própria do autor3.

    A seguir, a seção 2.4 apresenta conceitos sobre Biometria e Impressão Digital.

    3 Com base na imagem original obtida no site TABLELESS.

  • 25

    2.4 BIOMETRIA – IMPRESSÃO DIGITAL

    É o estudo estático das características físicas e comportamentais dos seres vivos. O

    termo é também utilizado como forma de identificação de um indivíduo com base nas suas

    características fisiológicas ou comportamentais. Segundo Holanda (2009) é um ramo da ciência

    direcionado ao estudo da mensuração dos seres vivos.

    A Figura 3 mostra os tipos de métodos de identificação. Alguns mais utilizados que

    outros.

    Figura 3. Seis Características Biométricas mais Comuns

    FONTE: própria do autor a partir de (COSTA, L.; OBELHEIRO, R.; Fragra, J. 2006).

    A biometria tem sido utilizada amplamente em sistemas computacionais na área de

    segurança para reconhecimento, identificação criminal, controle de acessos a dados e aparelhos,

    entre outras áreas.

    Vale ressaltar que nessa área da segurança três propriedades são fundamentais:

    confidencialidade, que garante a revelação da informação mediante devida autorização; a

    integridade, que garante que a informação só será alterada com a devida autorização; e, a

    disponibilidade, que garante que a informação esteja disponível aos legítimos usuários

    (COSTA, L.; OBELHEIRO, R.; Fragra, J. 2006).

    Segundo Miller (2004), em uma requisição de acesso a um recurso, a entidade

    requisitante fornece uma credencial, o protocolo de autenticação é o responsável por aceitar as

    credenciais como prova da identidade dos requerentes. As credenciais apresentadas podem ser

    de três tipos:

  • 26

    Posse – Quem detém a posse de um objeto é capaz de utilizá-lo.

    Conhecimento – Indivíduos que possuem conhecimento diferenciado são aptos a

    utilizar um recurso, ou seja, a autenticação baseia-se em um conhecimento secreto. Ex:

    dados bancários tais como: agência, conta. Não são totalmente secretos mas nem todos

    possuem esta informação.

    Biometria – Traços de um indivíduo que pode ser mensurado e computado na forma de

    um identificador biométrico único, de modo a dificultar roubo, fraude ou

    compartilhamento.

    2.4.1 Modos de autenticação

    Dois modos de autenticação são usados pelos sistemas biométricos para autenticação de

    pessoas: VERIFICAÇÃO e a IDENTIFICAÇÃO.

    A verificação consiste numa busca fechada, chamada 1:1, onde o usuário não apenas

    passa a característica biométrica, mas uma identidade que se diz possuidor. Esse modo de

    autenticação busca responder a pergunta: “O usuário é quem diz ser?”. Por exemplo: O acesso

    de um cliente de banco feito por meio de um terminal de caixa eletrônico. Antes de qualquer

    solicitação de autenticação biométrica, o cliente deve inserir o cartão antes, ou seja, uma

    identificação que será atestada mediante a confirmação biométrica.

    A autenticação no modo identificação consiste numa busca aberta, chamada 1:N, onde

    o usuário passa apenas a característica biométrica e o sistema é quem passa a ter a competência

    de identificar o usuário analisando uma base de dados registro por registro. Nesse caso a

    pergunta que corresponde a essa identificação é: “Quem é o usuário?”. Por exemplo: Acesso de

    um cliente à sua academia de ginástica, onde na chegada fornece apenas a impressão digital, o

    sistema faz a busca e libera a catraca4.

    2.4.2 Impressão digital

    A impressão digital é uma das características biométricas mais estudadas e utilizada na

    área de segurança, possui inúmeras soluções maduras e eficientes que implementam esta

    característica. Segundo Pinheiro (2008) só perde no quesito segurança para o teste de DNA.

    4 As buscas chamadas 1:N tendem a ser mais demoradas e consumir mais recursos dos sistemas computacionais

    em razão do caráter da busca em toda a base de dados.

  • 27

    Mazi e Dal Pino Júnior (2009) apontam que estudos científicos acerca das impressões

    digitais se deram a partir de 1667 com comprovações da característica de identificação. Tal

    estudo foi chamado de Datiloscopia.

    Apontam ainda que as elevações da pele, chamadas de papilas dérmicas, pois localizam-

    se na derme são sobrepostas pela epiderme, que é uma camada superficial e transparente,

    realçando as papilas, também chamadas de linhas ou cristas. Estas papilas são separadas por

    sulcos ou vales o que caracterizam uma identificação. Os diferentes padrões de desenhos

    reforçam a característica de identificação:

    Unicidade – Improbabilidade de dois indivíduos diferentes com impressões

    idênticas;

    Imutabilidade – Do nascimento até a morte, salvo por fator externo tais como:

    acidentes, cortes, queimaduras entre outros, a característica biométrica se

    mantem igual;

    Praticabilidade – O processo de aquisição das imagens das papilas pode ser

    realizado com grande facilidade;

    Classificabilidade – Os desenhos papilares apesar de uma infinita variedade nas

    minúcias, atendem a um número limitado de tipos fundamentais, possibilitando

    sua classificação.

    Na análise das papilas, percebem-se variações das cristas tais como: cristas

    interrompidas, bifurcações, entre outros. Tais acidentes são chamados de minúcias.

    Algumas das vantagens do uso da autenticação biométrica por impressões digitais

    quando comparada com outras formas de autenticação biométrica são: baixo custo do

    hardware, tamanho reduzido dos dispositivos de captura e fácil integração dos dispositivos com

    a aplicação.

    Segundo Penteado (2009) mesmo diante de todas as incontestes vantagens da utilização

    de sistemas biométricos é necessário compreender que não são à prova de falhas que podem ir

    desde limitações na aquisição do traço biométrico até a classificação incorreta de indivíduos.

    Alerta ainda para a observância de certas propriedades nas etapas de projetos levando em

    consideração o contexto das aplicações.

    No caso específico das impressões digitais, podem ocorrer fraudes como por exemplo a

    confecção de dedos de silicone como mostra a Figura 4. Aparentemente algo difícil de se fazer,

  • 28

    mas infelizmente já existem tutoriais na internet mostrando como se faz um “dedo falso”. Como

    alternativa a este tipo de fraude existem dispositivos mais sofisticados no mercado que

    implementam a tecnologia LFD (Live Finger Detection), ou “detecção do dedo vivo”. Tais

    dispositivos antes de realizarem a captura de uma imagem experimentam diversos outros

    aspectos, tais como: temperatura, cor, carga eletrostática que apenas um dedo vivo possui

    (TOPDATA, 2016, online).

    Figura 4. Dedos de Silicone utilizados para Fraudar Sistemas Biométricos.

    FONTE: retirada do site https://www.topdata.com.br5.

    A seguir, a seção 2.5 apresenta as definições de Contêineres Docker.

    2.5 CONTÊINERES DOCKER

    Docker é um sistema de virtualização não tradicional onde recursos isolados utilizam o

    kernel em comum (entre o host e o container), ao contrário dos sistemas de virtualização

    tradicionais que utilizam um sistema operacional completo e isolado. Isto é possível porque o

    Docker tem como base o LXC Linux Container, que é um tipo de virtualização em nível de

    5 Disponível em Acessado em nov. 2018. A

    TOPDATA é uma das maiores empresas brasileiras fabricantes de relógios de ponto e catracas para controle de

    acesso.

  • 29

    sistema operacional que permite executar vários sistemas Linux isolados (contêineres) em um

    único host de controle principal (LCX host).

    A Figura 5 ilustra a arquitetura Docker e destaca sua principal diferença em relação a

    um virtualizador tradicional.

    Figura 5. Comparativo entre Sistemas de Virtualização.

    FONTE: retirada do site https://linux4sysadmin.wordpress.com6.

    O LXC não fornece uma máquina virtual e sim um ambiente virtual com suas próprias

    características de configuração distintas (CPU, memória, rede, espaço, entre outros). Ainda para

    reforçar o conceito, dentro do Container o Docker parece uma VM (Virtual Machine), enquanto

    fora do Container é apenas mais um processo para o sistema operacional.

    Algumas razões para utilização de Containers:

    Economia de recursos;

    Velocidade;

    Boot em segundos;

    Processos executados dentro de um container são vistos como um processo no

    sistema hosts.

    Possibilidade de subir vários containers ao mesmo tempo consumindo o mínimo

    de recursos;

    6 Disponível em: Acesso

    em nov. 2018.

  • 30

    As diferenças ficam mais evidentes quando se verifica que em um Container Docker a

    quantidade de camadas é bem menor, o que ressalta as razões para se utilizar o Docker como

    mostra a Tabela 1.

    Tabela 1. Diferenças entre o Sistema Operacional comum e Virtualizado com Docker.

    Sistema Operacional Container Docker

    Bootfs – Boot FileSystem Bootfs – (LXC, aufs/btrfs) – Mesmo Kernel da Máquina

    Bottloader e Kernel Rootfs – Sistema de Arquivos.

    Rootfs – Root FileSystem

    Restante dos Arquivos do Sistema

    FONTE: própria do autor.

    Um container é construído através de comandos (namespaces, chroot) entre outras

    funcionalidades do Kernel para construir uma área isolada para a aplicação.

    A Figura 6 mostra de forma objetiva a arquitetura cliente-servidor do Docker, formada

    por dois principais componentes: uma plataforma de conteinerização (Docker engine) que

    implementa tanto o Docker Client quando o Docker Daemon, bem como um serviço de registro

    (Registry), que trata-se de um repositório provido pelo Docker, se encontra na nuvem e realiza

    o download e compartilhamento de imagens de Containers.

    Figura 6. Arquitetura Docker.

    FONTE: retirada do site https://hahoangv.wordpress.com7.

    A seguir, a seção 2.6 descreve a comunicação entre processos por meio de sockets TCP.

    7 Disponível em: Acesso em nov. 2018.

  • 31

    2.6 COMUNICAÇÃO ENTRE PROCESSOS POR MEIO DE SOCKETS TCP

    A comunicação realizada por meio de SOCKETS TCP (Transmission Control Protocol),

    caracteriza-se pela troca de mensagens entre um par de processos. As operações básicas que

    envolvem esta troca são: SEND (enviar dados) e RECEIVE (receber dados). Para que a

    comunicação seja estabelecida entre estes dois processos distintos, remetente e destino

    respectivamente devem ter seus processos sincronizados (COULOURIS et al. 2013).

    O processo de comunicação consiste na transmissão de uma mensagem entre um

    soquete de um processo e um soquete de outro processo. Para que um processo receba

    mensagens, seu soquete deve estar vinculado a uma porta local e ao endereço IP do computador

    de execução. Um processo pode usar o mesmo soquete para enviar e receber mensagens.

    A comunicação pode ser síncrona ou assíncrona. A comunicação síncrona garante

    algumas características de confiabilidade, tais como: validade, que á a garantia de que a

    mensagem será entregue independente da perca de pacotes; integridade que garante que os

    dados não serão entregues corrompidos ou duplicados. Estas foram as razões que justificaram

    a escolha da comunicação síncrona neste trabalho, em detrimento da comunicação assíncrona,

    que não fornece tais garantias, apenas sendo preferida em casos específicos em razão do alto

    desempenho, menor utilização de recursos (exemplo: TV por streaming).

    Existem dois tipos de sockets comumente utilizados, que representam respectivamente

    os dois tipos de comunicação descritos anteriormente. O Socket TCP (Síncrono) e o Socket UDP

    (Assíncrono). A Figura 7 ilustra como se dá efetivamente a comunicação entre dois processos

    por essas duas abordagens TCP/UDP, e como os processos se comportam.

    Figura 7. Diagrama de Sequência para Comunicação por Meio de Sockets.

    FONTE: própria do autor.

  • 32

    Pode se observar que na comunicação realizada por meio de socket TCP, o processo

    MWG (remetente) fica congelado até que a resposta do processo MCB (destino) seja recebida

    com a confirmação de sucesso ou falha na transmissão da mensagem, enquanto no cenário por

    meio de socket UDP, o processo de origem apenas envia a mensagem e segue seu curso, sem

    aguardar algum tipo de retorno do processo de origem.

    A seguir, a seção 2.7 apresenta o microcontrolador Arduino Uno.

    2.7 MICROCONTROLADOR ARDUINO UNO

    O Arduino é um microcontrolador utilizado mundialmente para prototipar projetos

    envolvendo sistemas embarcados.

    Arduino é um pequeno computador que você pode programar para processar entradas

    e saídas entre o dispositivo e os componentes externos conectados a ele. O Arduino é

    o que chamamos de plataforma de computação física ou embarcada, ou seja, um

    sistema que pode interagir com seu ambiente por meio de hardware e software.

    (MCROBERTS, M., 2012, p. 22)

    Pode ser conectado a LEDs, displays, sensores diversos, motores, receptores GPS, relés,

    módulos Ethernet ou qualquer outro que emita ou possa receber dados. A sua versão mais

    recente, de acordo com o site do fabricante, é baseada no ATmega328P conforme mostra a

    Figura 8. Ele é conectado ao PC via cabo USB, que conduz a USB para serial.

    Figura 8. Arduino Uno REV3.

    FONTE: retirada do site https://www.arduino.cc/8.

    A plataforma conta com uma IDE para criação, compilação e upload dos códigos

    programados, que no Arduino denominam-se sketch, para o chipset do microcontrolador via

    cabo USB. A IDE padrão, encontra-se na versão 1.8.7 no momento deste trabalho e está

    8 Disponível em: < https://store.arduino.cc/usa/arduino-uno-rev3> Acesso em nov. 2018.

  • 33

    disponível para os três principais sistemas operacionais (Windows, MacOS X, Linux), o que

    possibilita que o usuário codifique seus sketches na linguagem C++ (padrão).

    A Figura 9 mostra um SKETCH Arduino responsável por fazer um LED piscar.

    Figura 9. Sketch de Exemplo do Arduino.

    FONTE: própria do autor - print screen da aplicação no sistema operacional Windows 10.

  • 34

    3 MATERIAIS E MÉTODOS

    Neste capítulo descreve de forma organizada o processo de seleção de materiais

    utilizados neste trabalho, bem como os passos seguidos no desenvolvimento do mesmo. O

    Capítulo 3 está organizado da seguinte forma: a seção 3.1 apresenta a lista de materiais

    utilizados, e, a seção 3.2 descreve sequencialmente os métodos executados para

    desenvolvimento.

    3.1 MATERIAIS

    A Tabela 2 apresenta a lista de materiais utilizados. Suas aplicabilidades e

    funcionalidades específicas estão descritas a partir da seção 4.4 IMPLEMENTAÇÃO DOS

    MÓDULOS DESKTOP, ARDUINO.

    Tabela 2. Seleção dos Materiais

    N Nome do Material Quant. Categoria Aplicação(ões)

    1 Leitor Biométrico Nitgen modelo Hamster

    DX9

    03 Dispositivo USB MCB/MLPE/MAPE

    2 Microcontrolador Arduino UNO c/ case. 01 Dispositivo USB MAAR

    3 Microcomputador AMD Athlon™ II X2

    B22 Processador 2.80 GHz – 4.00 GB –

    Sistema Operacional Windows 7 x64.

    01 Computador MLPE/MAPE/MAAR

    4 Relé de 5V para Arduino com

    Optoacoplador.

    01 Comp. Eletrônico MAAR

    5 Placa de circuito impresso (PCB) 02 Comp. Eletrônico MAAR

    6 Conector fêmea RJ45 02 Comp. Eletrônico MAAR

    7 Cabo Extensor USB amplificado com 10m 01 Cabo MAAR

    8 Led colorido 03 Comp. Eletrônico MAAR

    9 Resistores de 300 Ω 03 Comp. Eletrônico MAAR

    10 Pedaço de Eletrocalha 01 Diversos MAAR

    11 Cabo UTB com 10m 01 Cabo MAAR

    12 Jumpers de conexão com Arduino ≅15 Comp. Eletrônico MAAR

    FONTE: própria do autor.

    9 Modelo de leitora biométrica moderno, resistente e que dispões da função de autodetecção AUTO-ON.

  • 35

    3.2 MÉTODOS

    Para que o objetivo deste trabalho fosse alcançado com êxito, etapas de pesquisas,

    estudos e implementações foram seguidas cronologicamente a fim de construir um caminho

    para a execução ordenada das tarefas. Algumas dessas etapas se deram de forma simultânea

    tendo em vista o grau de complementação entre elas, outras em sequência.

    O início das pesquisas e estudos se concentraram no domínio das funcionalidades da

    biblioteca Nitgen NBioBSPJNI.jar. Uma vez que tais funcionalidades foram dominadas, as

    demais etapas do POPGESTOR foram executadas conforme os passos a seguir:

    Seleção de Tecnologias: A escolha das tecnologias (banco de dados, linguagens de

    programação e dispositivos a serem utilizados) se deu em observância a fatores diversos

    tais como: dispositivos de hardware envolvidos, requisitos técnicos da organização,

    domínio das tecnologias, curva de aprendizagem das ferramentas não dominadas entre

    outros.

    Análise de Requisitos: Foi estabelecida uma linha de contato com a alta gestão,

    departamento administrativo, bem como com bolsistas da organização com o objetivo

    de serem estabelecidas as funcionalidades que o POPGESTOR deveria implementar.

    Modelagens: Uma vez estabelecidas as funcionalidades da aplicação, foi iniciado o

    processo de modelagem do POPGESTOR. A modelagem se deu de forma simultânea,

    ou seja, modelagem UML e modelagem do banco de dados foram realizadas

    simultaneamente, o que resultou em uma maior integridade e consistência entre as duas

    modelagens.

    Implementação dos Módulos MCB / MLPE / MAPE / MAAR e MWG: Uma vez

    com todos os materiais necessários disponíveis, tecnologias selecionadas,

    funcionalidades da aplicação definidas e bem modeladas, foi dado início ao processo de

    implementação dos módulos na ordem MCB, MLPE, MAPE, MAAR e MWG.

    Testes das Aplicações: Os testes foram realizados em diversos estágios da

    implementação dos módulos, não apenas no final de cada implementação, mas ao longo

    da implementação, bem como não só o módulo implementado, mas outros módulos com

    necessidades de interação e comunicação entre si.

  • 36

    4 DESENVOLVIMENTO

    Este capítulo descreve como foi organizada e executada a tarefa de desenvolvimento da

    aplicação proposta e apresenta os processos de seleção das tecnologias utilizadas, análise de

    requisitos, modelagens necessárias, implementação dos módulos desktop, web e Arduino, bem

    como o modelo da comunicação entre os processos dos módulos desenvolvidos. O Capítulo 4

    está organizado da seguinte forma: a seção 4.1 apresenta o processo de seleção das tecnologias;

    a seção 4.2 descreve o processo de análise de requisitos; a seção 4.3 apresenta as modelagens

    realizadas e, finalmente, a seção 4.4 descreve o processo de desenvolvimento dos módulos que

    compõem o POPGESTOR e suas interações.

    4.1 SELEÇÃO DAS TECNOLOGIAS

    O processo de seleção das tecnologias e arquiteturas utilizadas nesse trabalho observou

    importantes fatores técnicos, institucionais, limitações de dispositivos, entre outros, os quais

    influenciaram direta ou indiretamente na definição das tecnologias e arquiteturas apresentadas.

    4.1.1 Banco de dados

    O Sistema Gerenciador de Banco de Dados (SGBD) escolhido para este trabalho foi o

    PostgreSQL versão 10. A escolha se deu por razão de requisito técnico da organização que já o

    utilizara em outras aplicações, bem como por considerar as diretrizes de segurança do

    PostgreSQL mais relevantes que outras opções de SGBDs semelhantemente analisadas.

    O banco de dados está armazenado em um dos servidores da organização com as devidas

    regras de firewall aplicadas o que garante o acesso qualificado. Foram utilizadas ferramentas

    de gerência tais como: PGADMIN4, Microsoft Access (via ODBC).

    4.1.2 Linguagens de programação

    As linguagens de programação adotadas neste trabalho foram selecionadas a partir da

    análise dos critérios a seguir:

    Linguagens de Iniciativa Open Source – Linguagens de programação oriundas de

    iniciativas de código aberto que não demandam custos e/ou investimentos em

    aquisições de licenças foram priorizadas;

  • 37

    Linguagens Consolidadas nas Universidades – Foram observadas as grades

    curriculares dos principais cursos de TI das universidades do estado, a fim de se

    estabelecer um mapa das tecnologias abordadas nestes cursos, bem como da sua junção

    com as tecnologias escolhidas pela organização haja vista que a mesma possui parte do

    seu quadro de bolsistas dedicado ao desenvolvimento e manutenção de artefatos de

    software.

    Linguagens com Baixa Curva de Aprendizado – Este critério foi um dos mais

    determinantes em razão da rotatividade natural de bolsistas da organização não permitir

    a permanência dos mesmos no quadro da mesma por tempo ilimitado, o que

    eventualmente pode causar uma substituição e por consequência a interrupção de um

    projeto. Em virtude disso, linguagens de fácil aprendizado foram priorizadas, pois

    formam novas equipes em menor tempo e dão sequência aos projetos da organização.

    Linguagens Multiplataforma focadas na Produtividade – Funcionar em qualquer

    plataforma (Windows, Linux, Mac OS X), bem como poder se utilizar de ferramentas

    que aceleram o desenvolvimento, tais como frameworks, camadas de abstração de

    banco de dados ORMs entre outras, também foram fatores observados.

    Conforme disposto na seção 1.2.2, foram desenvolvidos cinco módulos de software que

    compõe o sistema distribuído POPGESTOR. As linguagens de programação são comentadas

    a seguir.

    4.1.2.1 Java app (desktop)

    Três destes módulos foram escritos na linguagem Java Application (Java para desktop)

    na IDE NETBEANS 8.1, a saber:

    Módulo de Cadastro Biométrico (MCB);

    Módulo de Leitura de Ponto Eletrônico (MLPE);

    Módulo de Abertura de Porta Eletrônica (MAPE);

    Um ponto comum entre os três módulos acima foi a necessidade da implementação de

    uma interface gráfica para interação com o dispositivo de leitura biométrica Nitgen modelo

    Hamster DX utilizado neste trabalho. O fabricante do dispositivo, Nitgen, disponibiliza em seu

    site um kit de desenvolvimento de software (SDK) que contém bibliotecas e código fonte básico

    para as seguintes linguagens de programação: C#, .Net, VB, Java, ASP e Delphi. O SDK

    disponibilizado dá suporte a aplicações 32/64 bits, bem como aos sistemas operacionais

  • 38

    Windows e Linux. No entanto, segundo a documentação, algumas das importantes funções da

    leitora não possuem implementação para ambientes Linux10, e em virtude desta limitação foram

    selecionadas para este trabalho as bibliotecas suportadas em ambientes Windows. A linguagem

    Java foi escolhida em função dos critérios: Linguagem Open Source e Multiplataforma.

    4.1.2.2 C++

    O Módulo Arduino de Acionamento de Relé (MAAR), foi desenvolvido na IDE própria

    do Arduino11, que é distribuída gratuitamente no site do fabricante e utiliza por padrão a

    linguagem C++ na escrita de seus programas (Sketch).

    4.1.2.3 Python (Microframework Web Flask)

    O Módulo Web de Gerenciamento (MWG) foi escrito na linguagem Python, utilizando

    o Microframework Flask e a IDE Microsoft Visual Code. A seleção da linguagem foi

    estabelecida em virtude da reformulação da estrutura de sistemas do PoP-RN e também em

    função da implementação de uma infraestrutura ágil voltada para abordagem de aplicações

    oferecidas em contêineres Docker, integração com ferramentas de testes e versionamento de

    código. Outro fator preponderante foi a curva de aprendizado suave do Python em relação a

    outras linguagens de alto nível e sua abordagem crescente nas grades curriculares das

    instituições de ensino.

    A seleção do Microframework Flask ocorreu em observância a uma das principais

    características do framework que o distingue de seus iguais, que é um núcleo simples, ou seja,

    além desse núcleo que permite as principais funcionalidades do framework, somente são

    adicionadas bibliotecas e/ou extensões sob demanda na aplicação.

    4.2 ANÁLISE DE REQUISITOS

    Todo processo de modelagem do sistema levou em consideração a inserção do

    POPGESTOR no contexto do POP-ERP como componente fundamental de acesso aos demais

    sistemas de informação já em desenvolvimento, bem como os que anexarão futuramente este

    ERP, conforme detalhado na introdução deste trabalho e ilustrado na Figura 10.

    10 A documentação completa do SDK Java está disponível em:

    11 IDE Arduino distribuída gratuitamente e disponível em:

  • 39

    Figura 10. Organograma Inicial da Iniciativa POP-ERP.

    FONTE: própria do autor.

    A concepção do trabalho, bem como a análise de requisitos ocorreram desde o início de

    modo conjunto e envolveu a alta gestão da organização, usuários dos sistemas, bem como

    funcionários do departamento administrativo (Recursos Humanos) do PoP-RN, sob a égide de

    que a aplicação seria construída para atender todas as demandas propostas, bem como garantir

    uma estrutura aberta de modo a comportar futuras implementações oriundas da iniciativa POP-

    ERP.

    Foram levantados os requisitos preliminares do sistema e após o refinamento dos

    mesmos, estabelecidos os requisitos funcionais, que correspondem as funcionalidades diretas

    do sistema, bem como os requisitos não-funcionais, que descrevem o uso da aplicação

    atendendo a critérios e/ou restrições em termos de desempenho tais como: confiabilidade,

    escalabilidade, usabilidade e segurança. As Tabela 3 e Tabela 4 apresentam respectivamente

    os principais requisitos funcionais e não-funcionais levantados.

    Tabela 3. Requisitos Funcionais

    Código Descrição

    RF001 Fazer login e autenticar usuário no sistema web.

    RF002 Permitir abertura da porta eletrônica de entrada do PoP-RN mediante autenticação

    biométrica.

    RF003 Inclusão, exclusão, consulta e atualização de projetos.

    RF004 Inclusão, exclusão, consulta e atualização de departamentos.

    RF005 Inclusão, exclusão, consulta e atualização de feriados.

    RF006 Consulta e atualização de parâmetros do sistema.

    RF007 Inclusão, exclusão, consulta e atualização de horários de exceção de expediente para

    bolsistas.

    RF008 Inclusão, exclusão, consulta e atualização de funcionários.

    RF009 Inclusão, exclusão, consulta e atualização de bolsistas.

    FONTE: própria do autor.

    Sistemas em Desenvolvimento

    Sistemas Futuros

  • 40

    Tabela 4. Requisitos não-funcionais

    Código Descrição

    RNF001 Requisito de segurança. O sistema web só poderá ser acessado por usuário previamente

    cadastrado, autorizado e por meio de login.

    RNF002 Requisito de segurança. O sistema deve armazenar as credenciais de usuário utilizando

    criptografia.

    RNF003 Escalabilidade e Desempenho. O sistema deverá ser executado em uma infraestrutura de

    conteinerização docker, para facilitar o desenvolvimento, implantação (deploy) de

    funcionalidades, garantia de bom desempenho e acesso concorrente de usuários.

    RNF004 Segurança. O Banco de dados da aplicação deverá estar hospedado em um servidor do PoP-

    RN com regras de firewall específicas para garantir a segurança dos dados.

    RNF005 Usabilidade. Os sistemas devem possuir uma interface amigável e intuitiva aos usuários.

    RNF006 Desempenho. Os módulos em Java APP devem ter seus modelos otimizados ao máximo,

    bem como o modo de utilização das bibliotecas JDBC e NBioBSPJNI.jar12 a fim de garantir

    o desempenho das aplicações.

    FONTE: própria do autor.

    4.3 MODELAGENS

    Dois tipos específicos de modelagem foram realizadas neste trabalho. A primeira,

    Modelagem UML, apresenta as funcionalidades do sistema de forma clara e objetiva a alta

    gestão da organização e desenvolvedores. A segunda, Modelagem de Banco de Dados, utiliza

    representação conceitual e lógica para chancelar toda modelagem UML realizada

    anteriormente, e cumprir seu objetivo principal que é gerar o banco de dados físico da aplicação.

    4.3.1 Modelagem UML

    Após o refinamento de todos os requisitos levantados, foi realizado o processo de

    Modelagem UML (Unified Modeling Language), que consistiu na representação em uma

    linguagem para especificação, construção, visualização e documentação de artefatos de

    software. (SILVA; VIDEIRA, 2001, p. 117)

    A Modelagem UML desse trabalho foi realizada através da ferramenta Astah

    Community13 utilizando algumas de suas principais visões (diagramas) que melhor ilustram os

    cenários existentes nesse trabalho.

    12 Biblioteca proprietária da empresa NITGEN, fabricante da Leitora Biométrica modelo Hamster DX. 13 Versão gratuita de software de modelagem UML descontinuada em 26 de setembro de 2018. Apenas versões

    proprietárias estão disponíveis no site da empresa.

  • 41

    4.3.1.1 Diagrama de casos de uso

    Foram elaborados diagramas de casos de usos para ilustrar as funcionalidades

    estabelecidas para seus principais atores: funcionários e bolsistas do PoP-RN. A Figura 11

    mostra o diagrama de casos de uso do ator Funcionário, e lista a sequência de ações a ele

    atribuída, ou seja, toda parte de gerenciamento do POPGESTOR.

    Figura 11. Diagrama de Casos de Uso do Funcionário

    FONTE: própria do autor.

  • 42

    A Figura 12 mostra o diagrama de casos de uso do bolsista, e lista de igual forma as

    ações associadas ao ator Bolsista no contexto da aplicação.

    Figura 12. Diagrama de Casos de Uso do Bolsista

    FONTE: própria do autor.

    4.3.1.2 Diagramas de classes

    Os diagramas de classes permitem aprofundar a visão de modelagem de uma aplicação

    ou mesmo sua compreensão por um prisma lógico. Nesse sentido, foram elaborados quatro

    diagramas de classes que contém as classes implementadas no POPGESTOR, separadas por

    módulos conforme definido na seção 1.2.2 deste trabalho.

    A aplicação Módulo Web de Gerenciamento é ilustrada na Figura 13 abrangendo toda

    estrutura do POPGESTOR na sua forma mais ampla e completa.

  • 43

    Figura 13. Diagrama de Classes MWG

    FONTE: própria do autor.

  • 44

    A Figura 14 apresenta a classe Popuser no contexto da aplicação Módulo de Cadastro

    Biométrico, que sintetiza em sua composição apenas os atributos vitais ao propósito da

    aplicação que é o cadastro da informação biométrica do usuário.

    Figura 14. Diagrama de Classes do MCB

    FONTE: própria do autor.

    O Módulo de Leitura do Ponto Eletrônico14 é responsável pela leitura e computação

    efetiva do ponto eletrônico diário dos bolsistas do PoP-RN, conforme mostra a Figura 15.

    Figura 15. Diagrama de Classes do MLPE

    FONTE: própria do autor.

    14 As aplicações menores MCB, MLPE e MAPE tiveram seus modelos reduzidos e/ou adaptados em

    conformidade com o requisito não funcional RNF006, constante na seção 3.1 deste documento.

  • 45

    O modelo do Módulo de Abertura da Porta Eletrônica está representado na Figura 16.

    Uma estrutura resumida que contém apenas as classes e atributos necessários para a

    identificação do usuário e acionamento da porta eletrônica.

    Figura 16. Diagrama de Classes do MAPE.

    FONTE: própria do autor.

    4.3.1.3 Diagrama de implantação

    Um diagrama de implantação foi elaborado para mostrar como se deu o processo de

    modelagem da arquitetura física do POPGESTOR, ou seja, do relacionamento entre os nós

    deste sistema distribuído (componentes de hardware e software, bem como a distribuição física

    do processamento, descrição de protocolos e portas de comunicação utilizados).

    O diagrama de implantação do POPGESTOR é ilustrado na Figura 17. Nele, estão

    dispostos todos os componentes de hardware, software, protocolos e portas utilizados que

    compõem o sistema. Nesse diagrama, cada retângulo corresponde a um nó (node), que é

    identificado pelo atributo stereotype (da ferramenta) que predispõe uma lista de identificação

    dos nós que podem ser dos tipos: device; software; entity; component; ou uma identificação

    personalizada pelo usuário. As linhas representam as ligações entre os nós e sempre com uma

    seta indicando a direção do fluxo, bem como uma legenda que descreve os tipos de

    comunicação implementados (protocolos, tipos de conexão, portas utilizadas, entre outros). O

    diagrama de implantação é flexível e objetiva ilustrar como as estruturas de hardware e software

    estão dispostas e como se comunicam em uma aplicação.

  • 46

    Figura 17. Diagrama de Implantação do POPGESTOR

    FONTE: própria do autor.

  • 47

    4.3.2 Modelagem de banco de dados

    A modelagem do banco de dados foi realizada por meio da ferramenta CASE (sigla para

    Computer-Aided Software Engineering) Open Source BRModelo 3.0, que fornece uma

    representação conceitual e lógica da aplicação.

    4.3.2.1 Modelo conceitual – MER

    A Figura 18 apresenta o Modelo Conceitual – MER (Modelo Entidade-

    Relacionamento) da aplicação POPGESTOR, que contém todas entidades e relacionamentos

    necessários à aplicação representados por um modelo mais próximo do mundo real, abstrato e

    que descreve a estrutura do banco de dados de forma independente de um SGDB específico.

    Figura 18. Diagrama Conceitual.

    FONTE: própria do autor.

  • 48

    4.3.2.2 Modelo lógico relacional

    A representação lógica da aplicação foi gerada automaticamente a partir de uma

    conversão do Modelo Conceitual apresentado na seção anterior. Essa representação é dada na

    forma de tabelas já definidas, relacionamentos estabelecidos, cardinalidades, criação de chaves

    primárias, chaves estrangeiras, tipos de dados conhecidos do SGDB adotado por este trabalho

    (PostgreSQL) conforme ilustra a Figura 19. O modelo lógico relacional gerou o script para a

    criação física do banco de dados.

    Figura 19. Diagrama Lógico Relacional.

    FONTE: própria do autor.

  • 49

    4.3.2.3 Dicionário de dados

    O dicionário de dados é uma coleção de metadados que contém definições e

    representações de elementos de dados que permitem que analistas tenham acesso a informações

    de todos os objetos do modelo de forma textual. Toda essa representação em observância ao

    diagrama do Modelo Lógico Relacional apresentado na seção anterior pode ser encontrada no

    APÊNDICE A – DICIONÁRIO DE DADOS.

    4.4 IMPLEMENTAÇÃO DOS MÓDULOS DESKTOP, ARDUINO E WEB

    Os módulos especificados nessa seção foram escritos em observância a técnicas de boas

    práticas de programação, versionamento completo dos códigos com git (Gitlab15), orientação a

    objetos e utilização do padrão arquitetural MVC, com exceção do módulo Arduino, escrito em

    C++ sob paradigma estruturado.

    4.4.1 Implementação dos módulos Java

    Três módulos do POPGESTOR foram escritos na linguagem Java App (desktop),

    conforme critérios de seleção descritos na seção 4.1.2.1 Java app (desktop), deste documento.

    Os módulos apresentados a seguir estão dispostos na ordem cronológica de seus

    desenvolvimentos. Alguns padrões e bibliotecas foram utilizados em todas as aplicações Java

    desenvolvidas nesta seção tais como:

    Padrão de projeto (Design Pattern) Singleton16 – Foi implementado na classe

    Conexao.java para garantir uma única instância da mesma em todos os pontos

    da aplicação;

    Biblioteca Java de Acesso a Banco de Dados JDBC – O acesso à base de dados

    PostgreSQL foi realizado de forma direta, sem utilização de bibliotecas ou

    ferramentas ORM em virtude da observância ao requisito não funcional de

    desempenho RNF006.

    Biblioteca Java NBioBSPJNI.jar – Esta biblioteca é fornecida pelo fabricante

    das leitoras biométricas adotadas neste trabalho (NITGEN, modelo Hamster

    DX).

    15 Gerenciador de repositórios de software baseado em git. 16 Padrão de projeto criacional que lida com mecanismos de criação de objetos. Na prática é uma classe que tem

    apenas uma instância e fornece um ponto de acesso global a ela.

  • 50

    4.4.1.1 Dispositivo USB de leitura biométrica Nitgen

    A leitora biométrica utilizada neste trabalho é o modelo HAMSTER DX da NITGEN,

    como mostra a Figura 20. A escolha do dispositivo foi determinada por dois fatores: a

    existência de um dispositivo já comprado pela organização e disponível para testes;

    características técnicas satisfatórias do dispositivo, as quais foram atestadas somente depois dos

    primeiros testes com o equipamento.

    Figura 20. Leitora Biométrica USB Hamster DX NITGEN.

    FONTE: retirada do site https://www.automacaoglobal.com.br17.

    A Tabela 5 apresenta no detalhe as características do dispositivo.

    Tabela 5. HAMSTER DX NITGEN – Características.

    Características Descrição

    Conexão USB Interface compatível com USB 2.0.

    Dispositivo plug and play Suporta vários dispositivos.

    Motor de Combinação Superior 1º no FVC (Competição da Verificação de

    Impressão Digital).

    Função Auto-on™ (Detecção de presença de dedo).

    Avançada Tecnologia Óptica Sensor resistente a arranhões, impacto, vibração e choque eletrostático.

    continua

    17 Disponível em: < https://cdnv2.moovin.com.br/automacaoglobal/imagens/produtos/original/leitor-biometrico-

    fingkey-hamster-dx-nitgen-e40f42f3cd480eb196bd105e14e631e2.png> Acesso em nov. 2018.

  • 51

    Tabela 5. HAMSTER DX NITGEN – Características.

    continuação

    Características Descrição

    Formato internacional de imagem padrão e

    interfaces

    Compressão WSQ.

    ISO 19794-2/4, ANSI 378, NFIQ.

    Captura de Imagem de Alta Qualidade -

    Forte desempenho para dedo molhado / seco

    -

    FONTE: própria do autor com dados retirados do site http://www.nitgen.com18

    Uma das principais características do dispositivo é a função Auto On. Ela atua com uma

    espécie de sensoriamento que detecta a presença de um dedo no dispositivo, para só então