Sistema de Informação para Produção · sua composição, o que torna mais ... analisado e...

88
FACULDADE DE E NGENHARIA DA UNIVERSIDADE DO P ORTO Sistema de Informação para Produção Tiago José Gonçalves Cascão Mestrado Integrado em Engenharia Eletrotécnica e de Computadores Orientador: Prof. Mário Jorge Rodrigues de Sousa Co-orientador: Eng. Nelson da Costa Silva 24 de Julho de 2014

Transcript of Sistema de Informação para Produção · sua composição, o que torna mais ... analisado e...

  • FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO

    Sistema de Informao para Produo

    Tiago Jos Gonalves Casco

    Mestrado Integrado em Engenharia Eletrotcnica e de Computadores

    Orientador: Prof. Mrio Jorge Rodrigues de Sousa

    Co-orientador: Eng. Nelson da Costa Silva

    24 de Julho de 2014

  • c Tiago Casco, 2014

  • Resumo

    O presente trabalho foi realizado aps proposta da empresa Nibble - Engenharia Lda. parao desenvolvimento de uma plataforma Web que permitisse o registo dos processos de produode vrios produtos. Dada a j existncia de um sistema implementado na empresa, optou-se porcentrar atenes na melhoria do mesmo, aproveitando as suas funcionalidades mais importantes.

    Desta forma, seriam, no s, cumpridos os critrios de qualidade impostos, como tambm ha-veria uma melhoria do sistema de controlo e monitorizao da produo da empresa.

    As vantagens passam por isso pela obteno de um processo de produo mais rpido e qua-lificado, ao qual acresce o aumento da qualidade do mtodo de trabalho. Alm disso, possvelhaver uma maior rastreabilidade dos produtos, sendo obtidos dados mais exatos e precisos sobre asua composio, o que torna mais eficiente o processo quer de produo quer de reparao.

    Inicialmente, foi realizado um estudo do processo de produo da Nibble, tendo sido tambmanalisado e documentado o sistema informtico. Ainda antes da execuo do trabalho, foi feito,conjuntamente com a empresa, o levantamento de requisitos a implementar.

    Aps estas etapas, procedeu-se implementao das novas funcionalidades a adicionar ao sis-tema e das melhorias a que este foi sujeito, tendo, por fim, sido testadas a propsito de verificar aexequibilidade e a utilidade das mesmas.

    Considero que este trabalho constituiu uma mais-valia quer para mim quer para a empresa,havendo, no entanto, possibilidade de, no futuro, o sistema j utilizado ser alvo de mais aperfeio-amentos, detetados j durante o desenvolvimento deste projeto e descritos neste documento.

    i

  • ii

  • Abstract

    This project was carried out after a proposal of the company Nibble Engineering Lda. Forthe development of a Web platform that allowed the registration of the productions processes ofseveral products. There was already a system implanted in the company, so we choose to focusour attention in the improvement of this system, appropriating their most important features.

    In this way, there would be, fulfilled, not only the criterion of quality imposed, but also wouldbe an improvement of the control system and the motoring of the companys production.

    The advantages are the obtainment of a faster and qualified production process, to which isadded the increase of the quality of the work method. Moreover, it is possible to have a greatertraceability of the products, being obtained more accurate and precise data on their composition,what makes the process of the production and of the repair more efficient.

    Initially, it was executed a study of the process of Nibbles production, the computer systemwas analyzed and documented too. Before the execution of the project, it was done, together withthe company, the survey of the requisites to implement.

    After these steps, we proceeded to the implementation of new features to add to the system andits improvements, having finally been tested in order to verify the practicability and usefulness ofthe same.

    I consider that this project is an added value both for me and for the company, having, however,the possibility, in the future, the system already used be targeted for more improvements, alreadydetected during the development of this project and described in this document.

    iii

  • iv

  • Agradecimentos

    O desenvolvimento desta Tese foi, para mim, um grande desafio. Ao trabalho dirio que tive,tenho de adicionar todo o apoio que me foi dado e que contribuiu para que, por fim, surgisse esteprojeto tal como o apresento. Assim, pela importncia que de uma ou outra forma tiveram duranteestes ltimos meses, deixo aqui o meu agradecimento.

    Ao Prof. Mrio Sousa, pelos conselhos e apoio prestados na elaborao deste projeto;

    Ao Engo Nelson Silva, pela disponibilidade e ajuda que me prestou em todos os momentos;

    empresa Nibble e a todos os seus colaboradores, pelo modo como me receberam e pelo bomambiente criado ao longo destes meses;

    Aos meus pais, por todas as condies que me proporcionaram e apoio incondicional dado aolongo deste percurso acadmico;

    minha restante famlia, pelo incentivo e nimo que me transmitiram durante estes 5 anos;

    Mafalda, um especial agradecimento por todo o companheirismo e dedicao que teve,mesmo nos momentos menos bons e em que parecia impossvel alcanar os objetivos. comextrema alegria que partilho com ela mais este importante momento na minha vida;

    Aos meus colegas e amigos, por todo o companheirismo e apoio;

    A todos vs, um sentido obrigado!

    Tiago Casco

    v

  • vi

  • If money is your hope for independence you will never have it.The only real security that a man will have in this world

    is a reserve of knowledge, experience, and ability.

    Henry Ford

    vii

  • viii

  • Contedo

    1 Introduo 11.1 mbito do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 A Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.2.1 Sistema de Produo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.2 Sistema de Informao para Produo . . . . . . . . . . . . . . . . . . . 5

    1.3 Estrutura da Dissertao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    2 Estado da Arte 102.1 Padro de Arquitetura MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4 HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2.4.1 Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.5 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.6 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2.6.1 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.7 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    2.7.1 Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.7.2 JQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3 Levantamento de Requisitos 23

    4 Arquitetura do Sistema de Informao 294.1 Viso de Alto Nvel do SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.2 Modelo MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.2.1 Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.2.2 Controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2.3 Viso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4.3 Principais Diferenas na Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . 35

    5 Implementao dos Requisitos 36

    6 Testes e Validaes 48

    7 Concluses e Trabalho Futuro 687.1 Concluses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687.2 Trabalho Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    Referncias 70

    ix

  • x CONTEDO

  • Lista de Figuras

    1.1 Produtos e Servios Nibble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 GSM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Sirene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.5 Fluxo do processo de fabrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.6 Fluxo do processo de reparao . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.7 Viso sobre as tabelas presentes no sistema . . . . . . . . . . . . . . . . . . . . 61.8 Interface para a escolha do produto . . . . . . . . . . . . . . . . . . . . . . . . 71.9 Exemplo de uma pgina de testes . . . . . . . . . . . . . . . . . . . . . . . . . . 71.10 Exemplo da pgina de montagem . . . . . . . . . . . . . . . . . . . . . . . . . 81.11 Exemplo da pgina de entrada de produtos para reparao . . . . . . . . . . . . 8

    2.1 Fluxo MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Logotipo MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3 Sintaxe de uma query SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.4 Funcionamento PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5 Logotipo PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.6 Logotipo HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.7 Logotipo Css . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.8 Logotipo JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.9 Funcionamento Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.10 Logotipo Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.11 Logotipo JQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    4.1 Viso Alto Nvel da SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.2 Modelo Relacional da BD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.3 Diagrama de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.4 Controlador Tipo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.5 Controlador Tipo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.6 Viso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.7 Fluxo MVC do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    5.1 Opes de Estatsticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.2 Exemplo de Detalhes de um Item . . . . . . . . . . . . . . . . . . . . . . . . . . 395.3 Formulrio para Adicionar Nova Falha . . . . . . . . . . . . . . . . . . . . . . . 405.4 Formulrio para Adicionar Nova Verso de Hardware . . . . . . . . . . . . . . . 425.5 Formulrio para Adicionar Nova Verso de Software . . . . . . . . . . . . . . . 425.6 Produo da Pgina de Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.7 Produo da Pgina de Montagem . . . . . . . . . . . . . . . . . . . . . . . . . 46

    xi

  • xii LISTA DE FIGURAS

    6.1 BD- Falhas associadas aos Tipos de Produtos . . . . . . . . . . . . . . . . . . . 486.2 Estatstica da opo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.3 BD- Falhas associadas aos Testes . . . . . . . . . . . . . . . . . . . . . . . . . . 496.4 Estatstica da opo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.5 BD- Falhas associadas ao Modelo do Produto . . . . . . . . . . . . . . . . . . . 506.6 Estatstica da opo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506.7 BD- Falhas mais recorrentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506.8 Estatstica da opo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506.9 Exemplo ficheiro Excel (Opo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 516.10 Anterior Associao dos Extras . . . . . . . . . . . . . . . . . . . . . . . . . . . 526.11 Formulrio para Montagem de Produto . . . . . . . . . . . . . . . . . . . . . . . 526.12 Exemplo de Montagem de Produtos com Extras . . . . . . . . . . . . . . . . . . 526.13 Lista de Produtos Montados com o Item inserido . . . . . . . . . . . . . . . . . 536.14 Detalhes do Item adicionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536.15 Detalhes do Item adicionado na BD . . . . . . . . . . . . . . . . . . . . . . . . 536.16 Adicionar Detalhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546.17 Confirmao Detalhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546.18 Alterao do Extra definido como Padro . . . . . . . . . . . . . . . . . . . . . 546.19 BD- Extras associados ao Produto Montado . . . . . . . . . . . . . . . . . . . . 546.20 BD- Tipos de Extras para cada Modelo do Produto . . . . . . . . . . . . . . . . 556.21 BD-Modelo do Produto de cada Servio . . . . . . . . . . . . . . . . . . . . . . 556.22 Extras a associar ao Modelo do Produto . . . . . . . . . . . . . . . . . . . . . . 566.23 Exemplo de Adio de uma Falha . . . . . . . . . . . . . . . . . . . . . . . . . 576.24 BD - Falhas inseridas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576.25 Pgina de Testes com Falhas existentes . . . . . . . . . . . . . . . . . . . . . . . 586.26 BD - Resultado do relatrio efetuado . . . . . . . . . . . . . . . . . . . . . . . . 596.27 Reviso do relatrio com as devidas falhas associadas . . . . . . . . . . . . . . . 596.28 Formulrio para adicionar novo Tipo de Produtos . . . . . . . . . . . . . . . . . 606.29 Adio de Novo Tipo de Produto . . . . . . . . . . . . . . . . . . . . . . . . . . 616.30 Pgina Produtos com Novo Tipo de Produto inserido . . . . . . . . . . . . . . 616.31 BD - Tipos de Produtos existentes . . . . . . . . . . . . . . . . . . . . . . . . . 616.32 Adio de Nova Verso de Hw . . . . . . . . . . . . . . . . . . . . . . . . . . . 626.33 Adio de Nova Verso de Sw . . . . . . . . . . . . . . . . . . . . . . . . . . . 626.34 Dados do relatrio do servio TJC21 . . . . . . . . . . . . . . . . . . . . . . . 636.35 BD- Confirmar Introduo das Verses . . . . . . . . . . . . . . . . . . . . . . . 636.36 Pesquisa por Nmero de Servio . . . . . . . . . . . . . . . . . . . . . . . . . . 636.37 Resultado da Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646.38 Reviso do Relatrio Pesquisado . . . . . . . . . . . . . . . . . . . . . . . . . . 646.39 Menu de Utilizador: Tcnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656.40 Menu de Utilizador: Administrador . . . . . . . . . . . . . . . . . . . . . . . . 656.41 Tempo Anterior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666.42 Tempo Atual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666.43 Tempo Anterior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666.44 Tempo Atual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666.45 Anterior Histrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676.46 Histrico Atual com Paginao . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

  • Abreviaturas e Smbolos

    AJAX Asynchronous Javascript and XMLAPI Application Programming InterfaceBD Base de DadosCSS Cascading Style SheetsFW FirmwareGPS Global Positioning SystemGSM Global System for MobileHW HardwareHTML HyperText Markup LanguageHTTP HyperText Transfer ProtocolJS JavaScriptJSON JavaScript Object NotationLED Light Emitting DiodeMVC Model-View-ControllerNASA National Aeronautics and Space AdministrationPCB Printed Circuit BoardPDF Portable Document FormatPHP Hypertext PreprocessorPOP3 Post Office Protocol 3SGBD Sistemas de Gerenciamento de Base de DadosSI Sistema de InformaoSQL Structured Query LanguageSW SoftwareWWW World Wide WebXML eXtensible Markup LanguageXLS MS Excel file extension

    xiii

  • Captulo 1

    Introduo

    A elaborao deste trabalho foi proposta pela empresa Nibble Engenharia Lda, no mbito da

    disciplina Dissertao do 5o ano do Mestrado Integrado em Engenharia Eletrotcnica e Computa-

    dores da Faculdade de Engenharia da Universidade do Porto.

    A Nibble Engenharia Lda uma empresa portuguesa sediada na Trofa, que est presente no

    mercado desde 2004 e marca registada desde 2009, tendo, mais recentemente em 2013, obtido

    o registo de marca internacional. Deste modo, a Nibble projeta-se para um mercado mais amplo

    e no qual se pretende implementar e ganhar notoriedade, atravs dos projetos desenvolvidos pelos

    seus colaboradores.

    Esta empresa, tem como principal objetivo o fornecimento de um conjunto de produtos e servi-

    os de qualidade nas reas da Segurana e Domtica, Gps e Comunicaes Mveis e Ilumi-

    nao LED e Eletrnica, sendo uma referncia no mercado nacional. Esta empresa distingue-se,

    tambm, pela especializao na Gesto e Desenvolvimento de Projetos de Engenharia Eletr-

    nica, atuando desde a ideia inicial at ao produto final, passando pelo desenvolvimento e controlo

    de todo o processo de Gesto do Produto.

    A "Consultadoria e Projeto" uma grande aposta da empresa e constitui uma vantagem com-

    petitiva no mercado, adquirida pela j longa experincia no ramo, que j deu frutos de relevo quer

    nacional quer internacional. Esta rea permite ao cliente conceber uma soluo para uma ideia

    inicialmente pensada pelo mesmo e executada em conjunto com os colaboradores da Nibble.

    1.1 mbito do Projeto

    O sistema de produo da Nibble abrange dois tipos de processos, a saber o de fabrico e o

    de reparao. O primeiro contempla as etapas de testes aos componentes, para o cumprimento

    de critrios de qualidade, necessrios atividade de qualquer empresa, montagem dos mesmos e

    posterior confirmao da sua correta execuo. J o segundo, importante essencialmente para

    a reparao de produtos com anomalias detetadas pelos clientes. Dado o relevo de ambos os

    processos e a impossibilidade de os dissociar, este projeto surge como um suporte bastante til aos

    mesmos. Considera-se essencial ter um sistema de informao, seja manual ou automatizado, onde

    1

  • 2 Introduo

    Figura 1.1: Produtos e Servios Nibble

    fique registado e haja um simples e eficaz acesso a todas as tarefas realizadas durante estas fases.

    Comeando pelos testes a produtos, documentos enviados e recebidos dos clientes, abrangendo

    tambm produtos que estejam prontos a ser montados, componentes utilizados em cada produto

    e no esquecendo a capacidade de utilizar, gerir e distribuir dados, com a finalidade de melhorar

    o controlo, planeamento e anlise dos processos da empresa. De referir ainda que, apesar de

    j existir um sistema de informao na empresa, a presena de algumas limitaes constitui um

    estmulo e uma maior motivao para este trabalho, para que no final estas j estejam colmatadas

    e a empresa possa usufruir de um sistema de maior qualidade.

    Neste caso em particular, o sistema consiste numa plataforma web que permite o registo dos

    processos de produo para vrios produtos, nomeadamente uma Firewall (Figura 1.2 - sistema de

    deteo de incndios), um comunicador GSM (Figura 1.3 - dispositivo de controlo e monitorizao

    do que acontece distncia, por exemplo em casa ou no escritrio) e ainda uma Sirene de Alarme

    Exterior (Figura 1.4 - responsvel por gerar sinais de alerta sonoros contra incndios ou intruses).

    Figura 1.2: Firewall Figura 1.3: GSM Figura 1.4: Sirene

    Todos os componentes destes produtos, como os mdulos de GSM, as PCBs, entre outros so

    submetidos a testes antes de ficarem aptos para montagem, de modo a que o produto final no

    tenha problemas quando for entregue aos distribuidores, que os iro por fim vender aos clientes

  • 1.2 A Empresa 3

    finais. No processo de montagem, os componentes so agregados de forma a constituir o produto

    final e nessa altura fundamental ter um sistema que permita ter acesso ao estado atual do nvel

    de produo (se est pronto para montagem ou se est em fase de testes), rastrear os componentes

    utilizados e gerir todo o seu histrico a nvel de produo, transportes/encomendas e ainda de

    possveis processos de reparaes.

    1.2 A Empresa

    Este captulo pretende explicar o modo de funcionamento dos dois sistemas utilizados pela

    empresa, a saber o sistema de produo e o sistema de informao para produo. O primeiro

    sistema engloba a elaborao fsica dos produtos e ser explicado o modo como a empresa tra-

    balha nas suas etapas, as quais incluem as suas reparaes. J o segundo sistema funciona como

    apoio produo e permite informatizar todo o processo de produo, de forma a que quando for

    necessrio reparar um produto ou obter alguma informao sobre o mesmo seja mais fcil e eficaz.

    Nessa parte do captulo, sero explicadas as suas potencialidades antes da implementao deste

    projeto.

    1.2.1 Sistema de Produo

    No sistema de produo da empresa, podem ser identificados dois processos, o processo de

    fabrico, onde esto agregadas todas etapas de testes aos componentes vindos dos fornecedores,

    montagem e testes etapa de montagem, e o processo de reparao dos produtos acabados, que

    passa pela recolha dos produtos entregues e a sua incluso do sistema, testes s falhas referidas

    pelo cliente, etapa de reparao dessas falhas e entrega novamente aos clientes.

    O processo de fabrico comea na entrega dos vrios elementos, printed circuit boards (PCBs),

    fontes de alimentao, caixas exteriores, entre outros, por parte dos fornecedores para ser possvel

    a construo dos produtos finais, isto , da Firewall, do Comunicador GSM e da Sirene. De

    seguida, efetuado um conjunto de testes unitrios aos componentes mais importantes, como a

    fonte de alimentao, o mdulo GSM e as PCBs, para os viabilizar para a zona de montagem. A

    estas operaes tem de ser atribudo um nmero de servio, que inclui o operador responsvel (ex.

    ABC1234 - nmero de servio 1234, em que o operador responsvel foi o ABC).

    A fase seguinte passa por acoplar e interligar os vrios componentes para constituir o produto

    final. Concluda esta fase, necessrio simular o ambiente real e testar o produto, de forma a

    certificar que o produto funciona conforme o previsto. Quando estiver tudo testado necessrio

    colocar os produtos nas embalagens de comercializao juntamente com os componentes adicio-

    nais (como sejam os parafusos, os fusveis e as resistncias), os manuais e o certificado de garantia

    e por fim realizada a selagem da embalagem.

    Neste momento, o produto est pronto a receber um nmero de srie que ir ser necessrio

    para intervenes futuras no mesmo. Em seguida, criado um documento de sada que contm

    informaes sobre os produtos expedidos, bem como os respetivos nmeros de srie. Aqui, pode-

    se dar por terminado o processo de fabrico.

  • 4 Introduo

    Para facilitar o entendimento do processo, este encontra-se representado atravs do seguinte

    diagrama de fluxo.

    Figura 1.5: Fluxo do processo de fabrico

    O outro processo aquele que engloba a reparao dos produtos acabados, ou seja, se houver

    alguma anomalia com o produto, o cliente devolve o produto para reparao com a respetiva guia,

    onde especificado o nmero de srie do produto e o seu problema. Quando recebido, introdu-

    zido no sistema e ir ser posteriormente reparado pelo tcnico, associado a um novo nmero de

    servio. Aqui, confirmado que os nmeros de srie dos componentes correspondem aos iniciais

    e verificado se esse produto est coberto por garantia. Se tudo estiver dentro das conformidades,

    o produto reparado, com novo nmero de servio e o produto volta a ser expedido, junto de um

    documento de sada, para o cliente.

    Assim como foi feito para o processo anterior, podemos apresentar o processo de reparao

    atravs do seguinte diagrama de fluxo.

  • 1.2 A Empresa 5

    Figura 1.6: Fluxo do processo de reparao

    1.2.2 Sistema de Informao para Produo

    A plataforma existente capaz de, para cada produto, apresentar o registo de diversas infor-

    maes, como sejam os testes efetuados aos componentes principais (sendo, no entanto, apenas

    possvel aceder a um componente por produto), o seu nmero de srie, a data em que foi produ-

    zido, qual a verso de firmware e hardware que possui e ainda se a garantia continua vlida.

    possvel tambm agrupar os produtos em listas, que englobam envios e/ou recees com nmeros

    de guia e/ou fatura, moradas, datas e nomes relevantes. Todos os dados introduzidos so associ-

    ados a um utilizador responsvel, atravs de um nmero de servio. Por seu turno, a mercadoria

    devolvida para reparao inserida manualmente no sistema aquando da receo dos produtos.

    Este sistema permite ainda fazer pesquisas atravs do nmero de srie do produto, obtendo assim

    acesso aos testes, reparaes e relatrios feitos ao produto. Assim sendo, pode-se indicar como

    principais formas de utilizao do sistema a realizao de testes aos produtos, a montagem dos

    mesmos e a emisso e receo de guias de material.

    No entanto, este sistema apresenta algumas limitaes. Com a expanso da empresa e o au-

    mento da quantidade de produtos presentes na base de dados, o sistema demora mais tempo a

    responder, nomeadamente nos processos de testes aos produtos. Diminui, deste modo, a sua qua-

    lidade e usabilidade, pois pretende-se uma resposta rpida do sistema, para que este seja um com-

    plemento importante para a empresa e no uma fonte de atrasos e perdas de tempo no que diz

  • 6 Introduo

    respeito sua produtividade.

    1.2.2.1 Base de Dados

    A Base de Dados (BD) do sistema constituda por 21 tabelas, a salientar a tabela Product

    (onde so guardados os produtos existentes), Test Category (onde esto includos todos os testes

    a fazer a produtos), Test Result (onde constam os resultados dos testes efetuados) e ainda o Re-

    pair Report e Test Report Entry (onde esto presentes os relatrios de teste e de reparao dos

    produtos, que se pretende obter quando se realiza a consulta do histrico do produto na empresa)

    e ainda por 31 vistas sobre tabelas, que servem para gerar tabelas virtuais com junes de outras

    tabelas, de modo a que a informao a utilizar nas diferentes solicitaes ao servidor esteja toda

    na mesma forma de apresentao.

    Estas tabelas e vistas podem ser visualizadas e manipuladas atravs do mysqlWorkbench,

    que se trata de uma ferramenta que permite gerir todas as tabelas e vistas de uma forma mais

    intuitiva e fcil, como pode ser visto na figura seguinte.

    Figura 1.7: Viso sobre as tabelas presentes no sistema

  • 1.2 A Empresa 7

    1.2.2.2 Interface

    Quanto interface do sistema, no separador "Produto"podemos selecionar o produto em que

    queremos trabalhar (Firewall, Comunicador GSM ou Sirene), como pode ser visto na figura 1.8

    Figura 1.8: Interface para a escolha do produto

    Depois de selecionado o produto, podemos aceder pgina de testes, lista de produtos a

    reparar, lista de componentes prontos para a montagem e ainda dar entrada e sada de materiais.

    Figura 1.9: Exemplo de uma pgina de testes

    Na figura 1.9, podemos ver um exemplo de uma pgina de testes para uma Firewall. Depois do

    tcnico preencher todos os campos do relatrio, submete o boto Guardar e este armazenado.

  • 8 Introduo

    Figura 1.10: Exemplo da pgina de montagem

    A figura 1.10 ilustrativa da pgina de montagem, onde aparecem os vrios produtos que

    esto prontos para serem submetidos a montagem e os que j o foram, com os nmeros de srie

    dos componentes (que surgem ocultados, pois so dados confidenciais da empresa), o lote, data de

    montagem e ainda um nmero de servio, que, como foi abordado anteriormente, obrigatrio.

    Figura 1.11: Exemplo da pgina de entrada de produtos para reparao

    Na figura 1.11, possvel ver um exemplo da entrada de produtos para reparao, efetuada por

    parte do cliente. Este processo acompanhado do nome do cliente, nmero de guia, o motivo pelo

    qual o material est a ser enviado, qual o seu nmero de srie e ainda se est includo no prazo da

    garantia (G).

  • 1.3 Estrutura da Dissertao 9

    1.3 Estrutura da Dissertao

    Para alm da Introduo, na qual so apresentados os sistemas com os quais tive oportunidade

    de lidar durante o desenvolvimento deste projeto e nos quais est includo tanto o sistema de

    produo da empresa, como o sistema de informao para produo previamente implementado

    na Nibble Engenharia Lda, esta dissertao contm ainda mais seis captulos.

    No captulo 2, abordado o padro de desenvolvimento a aplicar na reformulao da ar-

    quitetura do Sistema de Informao da Empresa e so sucintamente explicadas as tecnologias

    e linguagens de programao usadas na realizao deste projeto e que iro permitir uma melhor

    compreenso do restante trabalho.

    No 3o captulo, est presente o levantamento de requisitos que foi realizado em conjunto com

    a empresa, com o intuito de diminuir as limitaes do sistema e assim melhorar a sua performance.

    A cada requisito est associada uma breve descrio, os testes necessrios para a sua validao e

    ainda o modo em que cada um poder contribuir para o aperfeioamento do sistema e consequente

    enriquecimento do trabalho desenvolvido pela empresa.

    No captulo 4, est desenvolvida a arquitetura do Sistema de Informao, que inicialmente

    necessitou de um estudo aprofundado, posteriormente completado com a sua documentao. Desta

    forma, foi possvel colmatar a falta de informao pr-existente acerca da arquitetura do sistema.

    Dentro deste captulo, primeiramente ser apresentada uma arquitetura de alto nvel e em seguida

    o modelo Model-View-Controller (MVC), no qual est includo o modelo entidade-relao.

    No captulo 5, apresentado o modo de desenvolvimento e de implementao do trabalho

    realizado no sistema, atravs da explicao do processo baseada em diagramas demonstrativos das

    sequncias de execuo dos scripts.

    No captulo 6, so apresentados os testes realizados para a validao dos requisitos implemen-

    tados. Nele esto includos printscreens dos mesmos, acompanhados da explicao da utilizao

    dos dados em questo e do modo em que os testes so considerados vlidos.

    No ltimo captulo, esto presentes as concluses, bem como ideias para o trabalho a desen-

    volver no futuro, de forma a aumentar, ainda mais, a qualidade do sistema.

  • Captulo 2

    Estado da Arte

    Para a elaborao desta melhoria no Sistema de Informao (SI) em questo, foi necessrio

    implementar algumas mudanas ao nvel da arquitetura de desenvolvimento do mesmo, sendo que

    o padro de arquitetura que mais se aproxima do utilizado at ento o Model-View-Controller

    (MVC). Assim ir ser feita, em seguida, uma breve abordagem para um melhor entendimento das

    suas caratersticas e funcionamento.

    Foi tambm fundamental realizar um estudo sobre as tecnologias que estavam a ser utilizadas,

    pois apesar de algumas delas serem conhecidas, a sua prtica no tinha sido muito explorada, pelo

    que foi necessrio aprofundar o conhecimento do seu funcionamento. Assim sendo, sero feitas

    breves abordagens s diferentes tecnologias utilizadas, o que ir facilitar o alcance do objetivo do

    trabalho.

    2.1 Padro de Arquitetura MVC

    O MVC um padro de arquitetura muito utilizado em inmeras aplicaes, das quais faz

    parte a criao de aplicaes Web e de vrias frameworks para o desenvolvimento web, em PHP

    ou outras linguagens. Este padro de arquitetura separa o cdigo fonte das aplicaes em trs

    grandes grupos, definindo as interaes entre elas:

    ModeloContm no s todo o cdigo que permite o acesso base de dados, como tambm os dados

    presentes na mesma. No Modelo, mantm-se a mxima abstrao da complexidade da base

    de dados e criam-se, apenas, funes para receber, inserir, atualizar ou apagar informao

    das tabelas.

    Os fatores a ter em conta no Modelo sero o tipo de BD utilizado e as tabelas que devem ser

    criadas, bem como as suas relaes.

    As funes de chamadas base de dados devem ser mantidas no mesmo ficheiro, fato que

    ir permitir invoc-las em qualquer parte do cdigo. De seguida, o Modelo fica encarregue

    de as processar, de acordo com um conjunto de regras que contm.

    10

  • 2.1 Padro de Arquitetura MVC 11

    VisoResponsvel por codificar e manter a apresentao final da aplicao vista pelo utilizador.

    Isto , na Viso deve estar includo todo o cdigo HTML, CSS, JS e outros que tm como

    funo gerar a pgina idealizada pelo utilizador. Na prtica, a Viso no se restringe

    criao de pginas web, uma vez que tambm possvel criar outra sada para enviar ao

    utilizador em formatos ou linguagens diferentes, como sejam o JSON ou XML. Aqui

    tambm includo o Browser que permite ao utilizador ver o que foi produzido pela Viso e

    ainda a interao com a aplicao.

    ControladorEste pode ser visto como a parte mais importante da aplicao, dado que funciona como

    ligao entre o Modelo, a Viso e qualquer outro recurso a ser processado pelo servidor, a

    fim de gerar a pgina web.

    Como foi dito, uma das muitas aplicaes onde se utiliza o MVC o desenvolvimento de apli-

    caes para Web. Neste caso, a Viso normalmente corresponde a pginas HTML, o Controlador

    contm o cdigo que valida os inputs do utilizador e que gera os dados dinmicos para incluir

    no HTML e o Modelo inclui o contedo geralmente armazenado em bases de dados ou arquivos

    XML.

    Figura 2.1: Fluxo MVC

    O fluxo MVC pode ser resumido a:

    1. O utilizador interage com o Browser, como por exemplo atravs do preenchimento de um

    formulrio;

    2. O Controlador manipula o evento da interface do utilizador, atravs de uma rotina pr-

    definida;

    3. O Controlador comunica com o Modelo atualizando-o, de acordo com a informao inserida

    pelo utilizador, como seja a atualizao dos dados de um dado produto;

  • 12 Estado da Arte

    4. A Viso obtm os dados necessrios do Modelo e gera uma nova Viso, no tendo o Modelo

    um conhecimento direto do que se passa na Viso;

    5. A Viso espera por prximas interaes, o que ir iniciar um novo ciclo.

    Estudo das Tecnologias Utilizadas

    2.2 MySQL

    O MySQL um sistema de gesto de bases de dados (SGBD) relacionais, um dos mais popula-

    res a nvel mundial, sendo utilizado por grupos como a NASA, a Nokia, entre outros. Isto significa

    que pode conter grandes quantidades de dados em tabelas separadas e no numa s tabela. Este

    sistema d uma maior flexibilidade e rapidez ao sistema e tem como grande vantagem o fato de

    ser muito veloz e de fcil utilizao, dada a sua arquitetura. Este sistema o nico SGBD que faz

    uma separao entre o servidor base e o motor de busca, o que permite um acesso extremamente

    rpido ou muito controlado ao disco, conforme a situao.

    Um SGBD permite criar e gerir bases de dados, seja apenas uma simples BD ou uma BD

    relacional, que se podem definir como:

    Base de dados : coleo de dados estruturados numa nica tabela. Pode ser simplesmente umalista de compras;

    Base de dados relacional : armazena dados em tabelas separadas e no apenas numa tabela. Estetipo de BD aumenta a velocidade e a flexibilidade do sistema.

    Uma base de dados constituda por entidades (grupo de elementos, como por exemplo Alu-

    nos, sobre os quais necessrio guardar informao), atributos (elementos ou propriedades que

    permitem caracterizar uma entidade, como por exemplo Disciplinas) e ainda relaes (utiliza-

    das para relacionar as entidades, correspondendo normalmente a um verbo, como por exemplo

    Inscrito).

    Os tipos de relao possveis neste tipo de modelo so:

    Relao 1..1 (l-se "relao um para um") - indica que as tabelas tm uma relao inequ-voca entre si, isto , as chaves primrias das entidades envolvidas so iguais (mesmo nome

    e tipo). possvel escolher a tabela que vai receber a chave estrangeira;

    Relao 1..n (l-se "um para muitos") - a chave primria da tabela que tem o lado 1 vaipara a tabela do lado n. No lado n, esta chamada de chave estrangeira;

    Relao n..n (l-se "muitos para muitos") - quando as tabelas tm entre si uma relaon..n, necessrio criar uma nova tabela com as chaves primrias das tabelas envolvidas,

    ficando assim uma chave composta, isto , formada por diversos campos-chave de outras

    tabelas.

  • 2.3 SQL 13

    Um servidor como o MySQL disponibiliza uma interface, para que seus clientes possam adi-

    cionar, alterar ou consultar dados previamente armazenados. Nas bases de dados relacionais, a

    interface constituda pelas APIs ou drivers do SGBD, que executam comandos na linguagem

    Structured Query Language (SQL).

    possvel tambm a juno de informao de vrias tabelas atravs das vistas (que funcio-

    nam como tabelas virtuais, no armazenando, portanto, fisicamente os dados). Para gerir todo este

    processo, a soluo utilizada neste sistema foi o mysqlWorkbench, uma ferramenta que permite

    gerir todas as tabelas e vistas de forma mais intuitiva e fcil e tambm ter uma viso mais organi-

    zada e detalhada da arquitetura da BD. A linguagem de programao utilizada para a criao das

    vistas (que no mais que uma pesquisa na BD) tambm o SQL. Esta linguagem destaca-se pela

    sua simplicidade e facilidade de uso, uma vez que de acessvel aprendizagem e a sua finalidade

    selecionar a informao desejada para mostrar ao utilizador do sistema.

    Figura 2.2: Logotipo MySQL

    2.3 SQL

    O SQL uma linguagem de consulta a BD, em que no se especifica como, nem em que

    ordem so executados os processos que iro fornecer os resultados pretendidos. O SGBD res-

    ponsvel por escolher o melhor procedimento a executar para que os resultados sejam obtidos o

    mais eficientemente possvel. Trata-se de uma linguagem de interrogao de BD relacionais que

    permite a um gestor a realizao de tarefas cruciais em base de dados como criar/alterar/eliminar

    tabelas e ainda inserir/consultar/atualizar/apagar os dados presentes nas mesmas. Esta linguagem

    constituda por palavras-chave, que permitem a execuo das tarefas referidas. Primeiramente,

    para criao/alterao/eliminao de tabelas da base de dados temos comandos como:

    Create Table, cria uma tabela;

    Alter Table, altera uma tabela;

    Drop Table, elimina uma tabela.

    Em seguida, as principais tarefas de manipulao de dados nas tabelas referidas atrs podem

    ser divididas em:

    Tarefas de atualizao de dados, que podem ser executadas atravs de comandos como:

    Insert, adiciona dados a uma tabela;

  • 14 Estado da Arte

    Update, altera dados de uma tabela ;

    Delete, elimina dados de uma tabela.

    Tarefas de consulta que so realizadas como o comando "Select", que tem como funorecolher a informao que cumpre todos os critrios da interrogao;

    As tarefas de interrogao do tipo "Select", as quais tm o nome de "Query" seguem uma

    sintaxe que assente em seis clausulas, embora apenas duas sejam obrigatrias, o "Select" e o

    "From". Qualquer uma das outras acrescenta critrios a cumprir.

    A sintaxe de uma query resume-se a:

    Figura 2.3: Sintaxe de uma query SQL

    onde,

    Select, indica o nome das colunas a selecionar para a tabela resultado;

    From, indica o nome das tabelas de onde se extrai as informaes ;

    Where, indicam-se condies de seleo e so eliminadas todas as linhas da tabela obtidado "From" que no cumpram as condies ;

    Group By, agrupa os resultados baseando-se em determinadas colunas a fim de todas as li-nhas desse grupo tenham o mesmo valor para as colunas que so passadas como argumento;

    Having, funciona da mesma forma que a condio "Where" e tem como funo filtrar ainformao obtida com o "Group By".

    Outra das funcionalidades do SQL que ser muito til neste sistema o fato de permitir cons-

    truir vistas, "Views". Tratam-se de tabelas virtuais que obtm direta ou indiretamente informaes

    de tabelas base, atravs de "queries" que so expressadas atravs do comando "Create View". Este

    tipo de tabela pode ser atualizvel se for apenas uma viso sobre uma tabela base, caso contrrio

    a tabela est apenas disponvel para leitura.

  • 2.4 HTTP 15

    2.4 HTTP

    O HyperText Transfer Protocol (HTTP) um protocolo de comunicao utilizado para sis-

    temas de informao. Este a base da comunicao de dados da WWW e responsvel pelo

    tratamento de pedidos e respostas entre cliente e servidor.

    O HTTP surgiu pela necessidade de enviar informao, quer texto, quer imagens, pela internet

    e, para que essa distribuio fosse possvel, foi necessrio criar um padro de comunicao. Assim

    sendo, passou a ser utilizado para a comunicao entre computadores na internet e para especificar

    o modo de realizao das transaes entre clientes e servidores.

    Esta comunicao ocorre em duas etapas, sendo a primeira aquela em que o cliente envia o

    pedido (HTTP Request) e a segunda a que o servidor processa o pedido e envia uma resposta

    (HTTP Response). O HTTP Request enviado pelo cliente e inclui:

    1. Uma linha que especifica o tipo de documento, o mtodo aplicado e a verso;

    2. Os campos do cabealho, que so facultativos, mas que permitem ao servidor saber qual o

    browser ou o sistema operativo a utilizar.

    3. O corpo do pedido que tambm opcional, sendo nele inseridos os dados submetidos pelo

    cliente.

    O HTTP Response enviado pelo servidor ao cliente e ter de conter:

    1. O estado no qual dever estar indicada a verso do protocolo utilizada;

    2. O estado do pedido;

    3. O significado do estado, podendo estar apresentado sob a forma de texto, como por exemplo

    OK ou NOT OK;

    4. Os campos do cabealho para o cliente ser avisado de informaes extras que no esto

    includas no estado;

    5. O corpo da resposta que representa o ficheiro que o cliente pediu.

    2.4.1 Cookies

    O cookie um grupo de dados que o servidor troca com o browser e que colocado num

    ficheiro de texto criado no computador do utilizador. A informao que fica contida no cookie

    pode ser encriptada para garantir a sua privacidade e segurana.

    O cookie enviado pelo servidor Web para um browser como um cabealho HTTP. Este

    cabealho reenviado pelo cliente sem alteraes de cada vez que acede ao servidor, sendo assim

    possvel a sua utilizao para autenticao em alguns sites, sem que seja preciso repetir a palavra-

    passe, registar preferncias, como por exemplo a cor de fundo da pgina do cliente, entre outras

    possibilidades que possam estar armazenadas num ficheiro de texto.

  • 16 Estado da Arte

    Os Cookies no se tratam de ficheiros executveis, da no constiturem perigo para o cliente,

    como os vrus. No entanto, os processos utilizados pelo browser para manipul-los podem ser

    usados como spyware.

    A maioria dos browsers modernos permite que os utilizadores decidam se pretendem aceitar

    cookies, bem como o prazo para mant-los, mas rejeitar cookies torna alguns sites inutilizveis.

    2.5 PHP

    O Hypertext Preprocessor (PHP) uma linguagem de scripts que utilizada principalmente

    para desenvolver pginas Web dinmicas, podendo ser incorporada no HyperText Markup Lan-

    guage (HTML).

    Esta uma linguagem interpretada pelo que no precisa de ser compilada, necessitando apenas

    de um interpretador para a sua execuo.

    A grande diferena dos scripts em PHP e programas em C, ou outra linguagem do gnero,

    que no necessrio escrever comandos que disponibilizem o HTML, uma vez que o PHP

    inserido no cdigo HTML entre tags que permitem ao interpretador saber, facilmente, que aquele

    cdigo PHP ().

    O PHP permite recolher dados de formulrios HTML que foram inseridos pelo utilizador,

    gerar contedo dinmico das pginas, enviar ou receber cookies, efetuar estatsticas, gerar grficos

    ou ficheiros PDF e ainda animaes. Outro ponto forte do PHP consiste na possibilidade de

    efetuar ligaes base de dados que ir permitir, consoante inputs dos utilizadores, obter respostas

    imediatas em formas de pginas HTML.

    Esta linguagem executada, predominantemente, no lado do servidor. Isto significa que o

    cliente recebe os resultados da execuo do script sem aceder ao cdigo fonte, ao contrrio do que

    acontece no JavaScript (JS).

    Resumidamente, o dinamismo que pretendido na criao destas pginas obtido atravs de

    um cliente Web (browser), servidor Web (ex. Apache), SGBD (ex. MySQL) e uma ferramenta

    que capaz de fazer interagir estes servidores (ex. PHP).

    O processo, para que o script armazenado no servidor Web consiga aceder e manusear os

    dados contidos na BD, resume-se a:

    1. O utilizador introduz os dados no formulrio HTML do browser;

    2. Os dados so enviados para o servidor;

    3. O servidor verifica as ligaes base de dados e confirma a ligao;

    4. Os dados so processados no servidor de acordo com as instrues do script;

    5. O servidor envia a pgina HTML resultante da execuo do PHP ao browser.

    Esta tecnologia est a ser cada vez mais utilizada, pois muito prtica e flexvel, funcionando

    ainda em praticamente todos os servidores web, bem como em sistemas operativos, sendo todos

  • 2.6 HTML 17

    Figura 2.4: Funcionamento PHP

    estes fatores que agradam a grande parte dos programadores web na criao de pginas dinmicas.

    Outra caraterstica fundamental a sua capacidade de suportar uma grande variedade de bases de

    dados, como MYSQL e Oracle e ainda de permitir a utilizao de protocolos como HTTP, POP3,

    entre outros.

    Figura 2.5: Logotipo PHP

    2.6 HTML

    O HTML uma linguagem de marcao baseada em marcas (tags), atravs das quais

    formatado o contedo das pginas.

    Inicialmente, o HTML tinha regras de sintaxe mais flexveis, o que facilitava a publicao de

    contedos na Web. Hoje em dia essa sintaxe muito mais rgida, o que leva a um cdigo mais

    preciso e mais complexo. Por isso mesmo, ao longo do tempo, a utilizao de ferramentas para

    criao de pginas de HTML aumentou, assim como a tendncia em tornar a sintaxe cada vez mais

    rgida para diminuir as faltas de compatibilidades nos browsers e tornar o cdigo cada vez mais

    padronizado, sem que a facilidade de criao de pginas Web fosse afetada.

    Os documentos em HTML so ficheiros de texto simples que podem ser criados e editados em

    qualquer editor de texto comum, como o bloco de notas. No entanto, para ajudar na criao deste

    tipo de pginas, existem no mercado editores de texto orientados para a sua construo que, com

    recursos sofisticados, facilitam a repetio de tarefas, insero de objetos, elaborao de tabelas e

    outros recursos.

  • 18 Estado da Arte

    Todos os ficheiros HTML so compostos por um cabealho (header) e por um corpo (body).

    Neste tipo de linguagem cada tag corresponde a um comando e est contida entre os caracteres

    . Qualquer outro caractere que no se encontre entre tratado como texto e

    inserido diretamente na pgina.

    Os comandos ficam ativos desde que so abertos at serem fechados atravs do caractere /.

    O HTML dispe dos comandos de formatao de texto, tal como os que se encontram nos

    processadores de texto, como por exemplo:

    . . .

    - introduz um pargrafo;


    - introduz uma quebra de linha;

    ... - itlico;

    ... - negrito;

    ... - sublinhado.

    As funcionalidades do HTML so muito diversificadas e outra das competncias introduzir,

    dentro de um documento, ligaes (links) para outros documentos. Estas so introduzidas atravs

    da marca ... .

    Como elementos fundamentais do HTML devem-se apontar as tabelas e as divises que podem

    ser utilizadas com finalidades distintas, isto , as divises servem para ajudar a definir a estrutura

    da pgina Web, definindo o layout dos vrios elementos, como textos e figuras. As tabelas tam-

    bm podem ter esta finalidade e ainda a de apresentar os dados na forma tabular, o que facilita a

    compreenso dos mesmos por parte dos utilizadores da aplicao.

    Figura 2.6: Logotipo HTML

    2.6.1 CSS

    O CSS (Cascading Style Sheets) foi o nome atribudo s folhas de estilo. Estas definem um

    conjunto de regras que determinam a forma em que o browser deve apresentar os documentos

    HTML.

  • 2.7 JavaScript 19

    Atravs das CSS, possvel separar o contedo do documento (HTML) e o estilo da apresen-

    tao (CSS).

    As regras de estilo so formadas por um elemento (por exemplo um elemento HTML como

    body, p ou table) e um estilo a ser aplicado a esse mesmo elemento.

    Atravs do CSS, possvel definir um grande conjunto de propriedades, como por exemplo

    o tipo e/ou tamanho de letra a utilizar quando a tag do elemento for invocada (font-family, font-

    size, font-weight), as cores do texto e do respetivo fundo e possveis imagens a utilizar como

    fundo (color, background-color, background-image). igualmente possvel definir o alinhamento

    do texto (text-align), as margens e as bordas para tabelas (margin, border), alm de uma imensa

    quantidade de propriedades que o CSS nos permite utilizar. As folhas de estilos, normalmente, so

    definidas em ficheiros externos aos ficheiros HTML, o que permite utilizar as mesmas definies

    de estilo em diferentes pginas. Desta forma, possvel mudar completamente o estilo de uma

    aplicao, que poder ser constituda por dezenas ou centenas de pginas, modificando apenas um

    nico ficheiro. As folhas de estilo tambm podem estar contidas nos cabealhos dos documentos

    HTML, atravs do elemento "STYLE", ou at mesmo includas no interior de qualquer elemento

    do corpo body.

    Figura 2.7: Logotipo Css

    2.7 JavaScript

    O JavaScript (JS) uma linguagem de programao utilizada para o desenvolvimento de

    scripts do lado do cliente (client-side) de aplicaes Web, o que permite que haja mais intera-

    tividade com o utilizador.

    A execuo do cdigo JS juntamente com a pgina HTML efetuada pelo browser. O JS

    frequentemente utilizado para validar os dados introduzidos por utilizadores num formulrio,

    ou seja, os dados inseridos so analisados, sendo posteriormente possvel concluir se cumprem

    todas as condies do campo que est a ser preenchido. No caso de os dados no cumprirem as

    condies, o preenchimento do formulrio no prosseguir at que os erros sejam corretamente

    corrigidos.

    Esta funcionalidade importante, principalmente quando os servidores esto disponveis para

    muitas pginas por minuto, uma vez que deixam de precisar de validar os dados do formulrio e

    reenviar a pgina com uma notificao de erro ao utilizador.

  • 20 Estado da Arte

    Alm da validao dos dados de formulrios, o JS permite detetar eventos, ou seja, quando o

    utilizador carrega num determinado elemento, como seja um boto ou uma opo de uma lista, ao

    qual esto associadas aes como onclick, onchange, entre outras. O JS permite ainda atuar

    sobre os valores e/ou atributos dos elementos HTML da pginas Web, expandir divises ocultas

    ou compactadas, carregar documentos, entre muitas outras possibilidades.

    Esta linguagem baseada em objetos, embora no seja orientada a objetos, dado que permite

    declarar objetos com as suas prprias propriedades e mtodos, mas no podem ser utilizados

    mecanismos de herana e especializao que so tipicamente utilizados em linguagens orientadas

    a objetos. As propriedades dos objetos podem ser obtidas atravs do nome, de um nmero de

    ordem (ndice) ou de uma notao mista, por exemplo (item[nome]).

    Este sistema em particular usado, por exemplo, para ampliar a ficha de testes, selecionar

    produtos e expandir as suas informaes, sem recarregar todo o contedo da pgina, o que melhora

    significativamente a performance e o tempo de resposta do sistema.

    Figura 2.8: Logotipo JavaScript

    2.7.1 Ajax

    O Ajax (Asynchronous Javascript And XML) uma tcnica de desenvolvimento que possibi-

    lita que as pginas Web sejam atualizadas de forma assncrona com um pequeno nmero de trocas

    de dados com o servidor. Isto significa que possvel atualizar partes de uma pgina Web, sem ter

    que recarregar a pgina inteira, ao contrrio das pginas Web que no usam esta tecnologia.

    Quando ocorre um evento, criado um objeto XMLHttpRequest, que se trata do componente

    fundamental do Ajax e que enviado para o servidor. O servidor analisa o pedido, processa e cria a

    resposta, enviando-a para o browser. A informao recebida pode ser processada em background e

    usada para, dinamicamente, atualizar elementos numa pgina Web, sem necessidade de recarregar

    toda a pgina. O funcionamento desta ferramenta est ilustrado na figura abaixo apresentada.

  • 2.7 JavaScript 21

    Figura 2.9: Funcionamento Ajax

    O AJAX assncrono, pois o browser no vai esperar pela informao devolvida pelo servidor,

    mas vai process-la somente quando esta for enviada pelo servidor. Esta caracterstica impor-

    tante, dado que a aplicao Web no fica em estado de espera, aguardando o retorno da informao

    do servidor.

    Figura 2.10: Logotipo Ajax

    2.7.2 JQuery

    O jQuery uma biblioteca JS muito completa e que permite aos programadores adicionar ele-

    mentos dinmicos e interativos s suas pginas, atenuar as diferenas de processamento dos vrios

    browsers e reduzir o tempo de desenvolvimento das aplicaes, aumentando assim a produtivi-

    dade.

    um projeto open-source, que possibilita uma maneira diferente de escrever cdigo em JS e

    que se torna num instrumento essencial para fornecer uma grande compatibilidade entre os brow-

    sers. Tem ainda a capacidade de simplificar a forma como so percorridas as pginas HTML,

    manipulados os eventos e o acrscimo de interaes AJAX numa pgina Web. Nesta biblioteca,

    possvel encontrar seletores de elementos HTML, funes para manipular os eventos associa-

    dos ao HTML, efeitos e animaes. Atravs dos seletores, possvel modificar elementos HTML

    como um grupo ou como um nico elemento. As funes de tratamento permitem executar um

    cdigo que surge atravs de um evento, com instrues como "onclick" ou "onchange" e que fa-

    zem com que, aps um clique sobre uma rea da pgina ou numa mudana do input de uma lista,

    corra um script que vai ser responsvel, por exemplo pela a atualizao uma tabela.

  • 22 Estado da Arte

    Tambm permite, de forma fcil, alterar o CSS da pgina de acordo com eventos, como por

    exemplo a mudana de cor de uma determinada rea aps um clique sobre a mesma, sendo possvel

    enumerar muitas outras vantagens.

    Perante tudo isto acima descrito, so facilmente percetveis as inmeras vantagens que esta

    biblioteca oferece aos programadores na criao de pginas Web.

    Figura 2.11: Logotipo JQuery

  • Captulo 3

    Levantamento de Requisitos

    Para a melhoria deste SI, um dos pontos essenciais foi o levantamento de requisitos, os quais

    iro permitir que o produto final se encontre de acordo com o idealizado pela empresa. Depois

    de algumas trocas de impresses, de forma a compreender o que era pretendido, e aps analisar

    o SI j existente, foi possvel elaborar uma lista de requisitos fundamentais. Estando esta etapa

    concluda, foi mais fcil fazer uma calendarizao e organizao de prioridades de implementao

    para se atingir um SI mais completo e robusto que cubra as necessidades de produo da Nibble

    Engenharia Lda. Assim sendo, esses requisitos foram divididos em Melhorias ao Sistema (M,

    que so aspetos que j esto implementados e apenas sofrero aperfeioamentos) e Novas Funci-

    onalidades (NF, aspetos que a empresa considera importantes ter no SI, depois da experincia que

    teve at ento com o SI atual). Cada requisito apresenta um id, que no ter em conta a prioridade

    de implementao, um ttulo, uma descrio que inclui um resumo do que se pretende com esse

    requisito e ainda os testes, onde esto especificados os conjuntos de testes que foram realizados

    a fim de verificar se tal requisito foi, ou no, cumprido. A cada um segue-se tambm uma breve

    explicao do modo de contribuio da implementao do requisito para a melhoria do SI e do

    sistema de produo e como tal para o rendimento da empresa.

    23

  • 24 Levantamento de Requisitos

    A correo de avarias dos produtos essencial para a melhoria do desempenho de qualquer

    empresa, sendo, por isso, de extrema importncia para a Nibble - Engenharia Lda. que haja uma

    rpida deteo dos erros mais frequentes ao nvel da produo, o que facilita, naturalmente, a sua

    correo. Desta forma, esta nova funcionalidade a acrescentar ao SI j usado pela empresa, vai

    permitir aperfeioar a produo e melhorar o seu rendimento.

    A associao de todos os componentes ao produto permite uma mais correta anlise do pro-

    duto em questo. essencial alargar o nmero de componentes atualmente associados ao produto,

    de forma a que quando seja efetuada uma pesquisa acerca do mesmo se obtenham todas as infor-

    maes necessrias. Assim, esta nova funcionalidade vai melhorar a listagem de componentes de

    um dado produto, o que muito importante no caso de necessidade de conhecimento de detalhes

    do produto (como seja a realizao de prvias alteraes aos vrios componentes). Deste modo,

    a empresa beneficia da existncia de dados mais completos, o que, naturalmente, melhora todo o

    processo.

  • Levantamento de Requisitos 25

    Com a implementao do requisito abordado em 2, surgiu a oportunidade de pr-definir uma

    lista com os extras a associar aos respetivos modelos, tornando assim mais fcil a realizao da

    associao de componentes a produtos. Desta forma, para cada modelo de produto, possvel

    adicionar variados componentes j presentes na base de dados, fazendo deste um processo mais

    clere e completo.

    A lista de falhas importante para a sua posterior anlise e correo, devendo, por isso, ser

    atualizada logo aquando do processo de testes, o que permite, imediatamente, uma poupana de

    tempo e ganho de qualidade. Da mesma forma, no processo de reparao, esta funcionalidade

    permite o acesso imediato falha ocorrida em determinado teste. Assim, fica garantida a realizao

  • 26 Levantamento de Requisitos

    de uma lista de falhas mais correta e associada a um processo significativamente mais rpido.

    Esta nova funcionalidade permite um mais fcil manuseamento do SI, sendo possvel a qual-

    quer tcnico adicionar novos produtos. A linguagem da base de dados no de simples enten-

    dimento, no sendo, por isso, acessvel a todos. No entanto, com a implementao desta funcio-

    nalidade, poder ser possvel, atravs de uma linguagem bsica e de etapas facilmente realizadas,

    melhorar a performance da empresa, diminuindo o tempo at ento despendido na introduo de

    novos produtos.

    Analogamente ao anteriormente descrito, atravs desta nova funcionalidade, as novas verses

    de Firmware e Hardware podero ser introduzidas de uma forma consideravelmente mais simples e

    rpida, no sendo necessria a sua realizao por um profissional especializado. Tudo isto aumenta

    a eficcia e a celeridade do processo, constituindo bvias vantagens para a empresa.

  • Levantamento de Requisitos 27

    A pesquisa atravs do nmero de servio permitir um mais simples e clere acesso a toda

    a informao do servio previamente realizado, presente sob a forma de relatrio de testes ou

    relatrio de reparao, o que agiliza todo o processo e melhora, significativamente, a sua qualidade.

    Esta funcionalidade permite fazer a distino entre os dois tipos de utilizadores do SI. Desta

    forma, os administradores podem, a partir de agora, ter acesso diferencial a tarefas e informaes

    importantes, distinguindo-se assim dos tcnicos.

    Assim, os tcnicos tm acesso aos dados e tarefas importantes para a produo, como por

    exemplo a realizao dos testes, processos de montagem e reparao e a gesto da lista de falhas

    dos testes realizados. As informaes mais especficas, como os resultados das estatsticas reali-

    zadas e a introduo de novos produtos e novas verses de hardware e software, ficam somente

    acessveis a quem estiver designado como administrador.

    A implementao desta melhoria no SI bastante importante, uma vez que permite aos tcni-

    cos acelerar os processos de testes e reparaes e ainda de insero de produtos montados.

    A partir de agora, com a diminuio do tempo de resposta do SI, est melhorada a sua usabi-

    lidade e acrescentada qualidade aos processos realizados.

    Este aperfeioamento constitui uma grande mais-valia para a empresa, pois dar origem a um

    processo mais rpido e eficaz.

  • 28 Levantamento de Requisitos

    A implementao da paginao do histrico facilita o acesso aos servios que foram realizados

    mais recentemente. Anteriormente, eram disponibilizados apenas os ltimos dez servios, o que

    limitava, um pouco, o acesso aos relatrios de teste recentes. Tal aperfeioamento garante tambm

    uma maior comodidade para os tcnicos e contribui para um trabalho mais rpido e eficiente.

  • Captulo 4

    Arquitetura do Sistema de Informao

    Neste captulo ser apresentado o estudo da arquitetura e as respetivas mudanas que foram

    realizadas neste Sistema de Informao (SI) ao longo deste projeto, dado que no existia docu-

    mentao que permitisse obter uma viso sobre a sua estrutura. De referir que a arquitetura inicial

    sofreu pequenas alteraes, pois existiam partes da aplicao que eram de difcil compreenso

    e no seguiam uma estrutura muito bem definida. O padro de arquitetura utilizado para a re-

    formulao desta arquitetura foi o Model-View-Controller (MVC). De seguida ser apresentada

    a arquitetura reformulada desta aplicao e sero apresentadas as principais diferenas existentes

    em relao a arquitetura inicial.

    4.1 Viso de Alto Nvel do SI

    Depois de uma breve anlise desta aplicao, possvel apresentar uma viso de alto nvel, re-

    presentada na Fig.4.1, que ilustra de um modo geral os grandes blocos desta aplicao. Isto , uma

    BD onde guardada toda a informao utilizada, como tipos de produtos, produtos montados,

    operadores, relatrios de teste e guias de transaes de produtos, uma aplicao Web respons-

    vel por manusear e processar os dados contidos na BD e ainda uma interface Web onde sero

    apresentados ao utilizador os resultados do processamento dos dados.

    Figura 4.1: Viso Alto Nvel da SI

    29

  • 30 Arquitetura do Sistema de Informao

    4.2 Modelo MVC

    Depois de reformulado, podemos afirmar que este SI segue o padro de arquitetura MVC. Em

    seguida, sero explicados como so compostos os blocos deste padro para o SI em estudo e por

    fim ir ser explicado tanto o funcionamento como as diferenas existentes entre a arquitetura atual

    e a inicial.

    4.2.1 Modelo

    Como foi referido anteriormente, o modelo contm no s a BD, como tambm o conjunto de

    funes/mtodos que permitem o acesso aos dados. Comecemos ento por estudar a estrutura da

    BD atual.

    Base de Dados

    Neste trabalho, muito importante manter uma base de dados bem estruturada e organizada,

    uma vez que se a informao no estiver bem organizada, a sua utilizao torna-se muito com-

    plicada e demorada. Nesta BD da aplicao so armazenados os tipos e modelos de produtos e

    operadores existentes, a composio de cada item (produto montado), todos os testes com a sua

    respetiva categoria que podem ser feitos aos produtos, os relatrios realizados e respetivos resul-

    tados, assim como relatrios de reparao e documentos de entrada e sada de material.

    Esta informao est armazenada em diferentes tabelas. Essas tabelas esto apresentadas na

    Figura 4.2 que apresenta as tabelas existentes e a sua relao, bem como a cardinalidade da mesma.

    Figura 4.2: Modelo Relacional da BD

  • 4.2 Modelo MVC 31

    Fazendo uma breve abordagem ao contedo das tabelas presentes na BD de salientar:

    Operator: armazena os dados relativos a cada utilizador do sistema;

    ProductModel: contm todos os modelos possveis para os diferentes tipos de produtos.Estes tipos de produtos esto presentes na tabela Product;

    ProductItem: corresponde a cada produto fsico j montado. Um productItem j tem asso-ciado, entre outras coisas, um nmero de srie;

    Extras: armazena todos os componentes e respetiva informao, como o nmero de sriee o tipo de componente a que pertence, que so adicionados aos diferentes productItem. O

    tipo de componente est guardado na tabela ExtraType;

    TestReport: guarda a informao referente a cada relatrio de testes submetido, como sejaqual o modelo do produto, a verso de SW e HW utilizada, o operador responsvel e o

    resultado (positivo ou negativo) do teste;

    TestResult: contm o resultado de cada teste realizado em cada relatrio. Em caso defalha, identifica o id da falha associada. A informao sobre as falhas, como o nome e

    descrio, encontra-se na tabela TestFail;

    Test: esto presentes todos os testes possveis de fazer aos produtos. Aqui, pode-se en-contrar o nome do teste, os critrios para validar ou no o teste realizado, a descrio e

    ainda a categoria de testes a que pertence. Por sua vez, estas categorias permanecem na

    tabela TestCategory, na qual ser possvel agrupar os testes em vrias categorias e para

    diferentes tipos e modelos de produtos;

    RepairReport: guarda a informao do item que vai ser reparado, o cliente que o envioupara reparao e depois, caso seja submetido novo relatrio de testes (depois de reparado),

    guarda tambm o relatrio que ficou associado a esta reparao e o operador responsvel

    pelo mesmo;

    Document e DocumentItem: so tabelas que contm informao sobre o estado atual dositens, ou seja, informam se estes j foram enviados, em que guia foram enviados, para que

    cliente ou se j retornaram empresa para reparao, entre outras tantas informaes. Cada

    documento tem de ter um operador associado.

    Acesso aos Dados

    Alm da BD, o modelo contm tambm as funes para aceder mesma. Estas funes esto

    contidas em classes, que possuem mtodos getters e setters que permitem aceder aos dados pre-

    sentes em cada tabela. Cada tabela tem uma classe associada formando deste modo uma camada

    de abstrao da BD.

  • 32 Arquitetura do Sistema de Informao

    O diagrama de classes do sistema pode ser visto na Figura 4.3, onde se pode constatar que

    existe uma classe MySQLDbObject que funciona como uma classe me e que responsvel pe-

    las funes de ligao e trmino de ligao com a BD e de validao da sintaxe das queries. Dessa

    classe deriva a classe DbObject que faz a abstrao das funes de insero, atualizao e elimi-

    nao de dados para qualquer objeto, contm os mtodos para obter o nome da tabela, vista ou

    chave-primria e ainda dos mtodos Get e Post, sendo criada uma funo readRequest() que per-

    mite obter um parmetro enviado atravs destes mtodos, utilizando readRequest(parmetro).

    No nvel abaixo surgem quase todas as tabelas do sistema que j possuem atributos privados, que

    correspondem aos campos da BD e permitem a criao dos mtodos getters e setters para mani-

    pulao dos mesmos. Assim sendo, quando na aplicao forem utilizados objetos de uma dada

    classe possvel atravs destes mtodos obt-los.

    No ltimo nvel do diagrama de classes surgem as classes de SwVersion e HwVersion,

    pois derivam de uma classe Version, dado que so muito idnticas. Estas classes apresentam

    diferenas ao nvel da tabela que representam.

    Figura 4.3: Diagrama de Classes

  • 4.2 Modelo MVC 33

    4.2.2 Controlador

    Neste sistema existem 2 tipos de controladores. O primeiro tipo representa os controladores

    mais comuns nos sistemas que contm formulrios. Estes controladores recebem os dados intro-

    duzidos nos formulrios atravs da funo readRequest(), sendo em seguida verificado se todos os

    inputs que so necessrios para a rotina a executar foram recolhidos com sucesso, caso contrrio

    devolve uma mensagem de erro. Por ltimo executa a rotina pr-definida, que no caso destes con-

    troladores passa por criar um objeto da classe, cujos dados vo ser manipulados na BD, utilizar os

    mtodos setters para atribuir os novos valor e no fim invocar a funo de insero ou atualizao

    da tabela.

    Para a melhor compreenso, este funcionamento est representado na Figura 4.4.

    Figura 4.4: Controlador Tipo 1

    O outro tipo de controladores presentes so os que permitem recolher os dados que vo ser

    utilizados pela viso que ir ser apresentada mais abaixo. Assim sendo, depois de solicitada uma

    pgina pelo utilizador, o controlador executa as funes adequadas de cada classe para obter os

    dados do modelo que iro ser armazenados em variveis ou vetores que vo ser enviados para a

    viso, como possvel verificar na Figura 4.5.

    Figura 4.5: Controlador Tipo 2

  • 34 Arquitetura do Sistema de Informao

    4.2.3 Viso

    Quanto Viso, esta formada por um conjunto de ficheiros que so responsveis por criar as

    interfaces para o utilizador da aplicao, que sero reproduzidas no browser. Estes ficheiros con-

    tm o cdigo HTML da pgina a gerar e o cdigo JS que executado no caso de haver interaes

    com alguns dados HTML. Estes ficheiros possuem tambm ciclos PHP para apresentar os dados

    presentes nas variveis ou vetores que o controlador envia. Seguindo o exemplo apresentado no

    esquema da Figura 4.5 usada na demonstrao do controlador, a Viso recebe o vetor de objetos da

    classe Product, executa um ciclo para percorrer o vetor utilizando PHP e apresenta sob a forma

    de tabela os dados relativos a cada produto. Isto, pode ser verificado atravs do seguinte esquema.

    Figura 4.6: Viso

    Neste momento, possvel perceber, de forma genrica, como funciona o MVC nesta aplica-

    o.

    Figura 4.7: Fluxo MVC do Sistema

  • 4.3 Principais Diferenas na Arquitetura 35

    0. O utilizador interage com o Browser, como por exemplo atravs do preenchimento de um

    formulrio;

    1. O browser envia o pedido ao Controlador;

    2. O Controlador manipula o evento da Viso do utilizador, atravs de uma rotina pr-definida,

    e comunica com o Modelo, podendo atualiz-lo de acordo com a informao inserida pelo

    utilizador, como seja a atualizao dos dados de um dado produto;

    3. O Modelo executa as trocas na BD;

    4. So enviados ao Modelo os dados atualizados;

    5. O Controlador executa as funes presentes nas classes e guarda os dados;

    6. A Viso recebe os dados do Controlador e gera uma nova Viso;

    7. O Browser apresenta a Viso criada e aguarda novas interaes para reiniciar o ciclo;

    4.3 Principais Diferenas na Arquitetura

    As principais diferenas existentes entre a arquitetura do SI atual e a do SI inicial prendem-se

    com o fato de agora haver uma separao bem marcada entre o Controlador e a Viso, tanto em

    termos de cdigo como de diretrio de ficheiros. Assim, cada ficheiro responsvel pela criao de

    uma interface para o utilizador tem na pasta "controllers"um ficheiro com o mesmo nome, para que

    a associao entre os dois seja mais acessvel e simplifique uma posterior utilizao do SI. Outra

    diferena a realar de que ao nvel da BD existe um modelo relacional devidamente interligado

    e com a devida cardinalidade das relaes entre entidades. Desta forma, e contrariamente ao que

    se verificava no incio deste projeto, o entendimento das relaes existentes entre as tabelas da BD

    tornou-se significativamente mais simples, o que facilita a utilizao da BD em todo o SI.

  • Captulo 5

    Implementao dos Requisitos

    Neste captulo ser abordado o modo como os requisitos levantados no inicio do trabalho

    foram implementados no SI existente na Empresa.

    1. Realizar Estatsticas de Falhas

    Foi criada uma pgina stats.php qual possvel aceder atravs da pgina de administrador,

    tendo esta ltima sido criada aquando do cumprimento do requisito Introduzir Privilgios nos

    Utilizadores. Na pgina de estatsticas, foi tambm criada uma caixa de seleo, na qual foram

    introduzidas as quatro opes de estatsticas (Fig 5.1) explicadas mais adiante, e qual est asso-

    ciada uma funo JS que executada quando ocorre um evento onChange, ou seja, a opo for

    trocada, e que tem como parmetro o valor da opo.

    Figura 5.1: Opes de Estatsticas

    No momento em que a opo selecionada, essa funo recebe o valor associado opo

    escolhida e identifica a opo escolhida, interrompendo o script e enviando um objeto XMLHtt-

    pRequest. Atravs deste, abre-se um ficheiro em background, sendo passados os parmetros

    necessrios para a sua execuo, e aguarda-se uma resposta. Quando esta resposta estiver dispo-

    nvel, o servidor envia um objeto XMLHttpResponse que, neste caso, contm o cdigo HTML

    que ir permitir apresentar a tabela correspondente estatstica pedida. Neste caso, o script que

    ocorre em background, recebe como parmetro a opo escolhida e executa a funo associada a

    cada estatstica, obtendo uma resposta para enviar ao browser.

    36

  • Implementao dos Requisitos 37

    A soluo escolhida para organizar o cdigo passou pela criao de uma funo que fosse

    acumulando numa varivel o cdigo HTML que ir dar origem tabela final com os respetivos

    dados e no final apresentasse essa varivel, recorrendo ao comando echo.

    Esses dados resultam da execuo de funes, que utilizam a informao contida nas tabelas

    TestFail, ProductModel e TestResult, pelo que foi necessrio agreg-las, atravs da criao

    da vista StatFailView".

    Com a criao da vista concluda, iniciou-se a abordagem a cada opo de estatstica indivi-

    dualmente.

    Para a opo Qual o produto com mais falhas? foi criada uma funo que agrupa os dados

    presentes na vista, atravs do id do produto, e da qual retirada a informao do nome do produto

    e ainda uma contagem do nmero de tipos de falhas diferentes existentes em cada produto. Esta

    informao guardada na forma de vetor, associando em cada posio o produto ao nmero total

    de falhas.

    Atravs da funo array_ column() possvel extrair de um vetor a informao dos campos,

    utilizando para isso o nome da coluna selecionada na query, isto , executando $result1 = array_

    column($re,coluna). Sendo $re o vetor que contm os resultados, obtm-se um vetor result1,

    o qual conter os dados da coluna do vetor re. Por fim, quando obtiver as vrias colunas pre-

    tendidas, atravs de um ciclo foreach possvel obter os dados para expor na tabela, pois a

    informao contida na posio 0 do vetor result1 tem correspondncia informao da posio 0

    do vetor result2. Por exemplo, se na posio 0 result1 contm Firewall, na posio 0 do vetor

    result2 ter o total de falhas associadas Firewall. Na tabela, ainda mostrada qual percentagem

    correspondente ao nmero de falhas de cada produto atendendo, para isso, ao nmero total de

    falhas. Este nmero total obtido atravs de uma contagem de diferentes tipos de falhas presentes

    na tabela TestFail.

    Para a opo Qual o teste em que ocorrem mais falhas? todo o processo ocorre similarmente

    em relao ao explicado anteriormente, sendo apenas mudada a funo a executar para a obteno

    dos dados. Para este caso, obtm-se o teste correspondente, o nome do produto e a soma das falhas

    que sero agrupadas, tendo em conta o id do teste.

    Para a opo Qual as falhas que ocorrem mais vezes? igualmente utilizado o mesmo pro-

    cesso, sendo o agrupamento de dados feito atravs do nome da falha.

    Para a opo Qual o modelo que contm mais falhas? foi criada uma nova vista ModelS-

    tatFailView que agrega a informao da tabela das falhas TestFailureType, responsvel pela

    associao da falha ao teste e modelo do produto, sendo de seguida utilizada a mesma lgica,

    mudando apenas a varivel de agregao, que neste caso o id do modelo do produto.

    Para completar este requisito, foi tambm adicionado um script que recebe a informao de

    qual a opo selecionada pelo utilizador e executa a funo correspondente, copiando a varivel

    que a funo retorna e na qual est contido o HTML da tabela. Esta varivel contm tambm os

    cabealhos (headers) que permitem ao browser interpretar aquela pgina como um ficheiro Excel,

    fazendo download do mesmo.

  • 38 Implementao dos Requisitos

    2. Associar mais que um Componente a um Produto

    Anteriormente, no SI, estava includa a associao de apenas um componente para cada item,

    sendo que esse componente se encontrava guardado num campo da tabela ProductItem, re-

    presentado pelo seu nmero de srie. Assim, e para que fosse possvel associar a cada produto

    mais que um componente, foi inicialmente necessrio definir os tipos de componentes disponveis.

    Essa informao fica guardada na tabela ExtraType e engloba o id, o nome e uma descrio do

    mesmo. Para que haja a associao de cada extra a um item, foi criada a tabela Extras, que

    contm o id do componente, o id do tipo de componente (para se saber qual o tipo de compo-

    nente que estamos a associar), o id do item (para ser percetvel qual o item que est a receber o

    componente em questo), um identificador ou um nmero de srie, que nico no SI, e ainda um

    campo "default", que definido pelo utilizador e essencial na indicao de qual dos componen-

    tes o padro de cada item, podendo este padro ser alterado. Esta informao muito relevante

    aquando da listagem dos produtos montados, na qual aparecer o item e o componente associado

    (o padro). Os restantes que podero ser adicionados surgem aquando da solicitao dos detalhes

    do produto, como ser explicado em seguida.

    Aps a realizao das mudanas ao nvel da base de dados, no cdigo foi necessrio criar

    as classes ExtraType e Extras e os respetivos mtodos get e set, para ser possvel obter e

    editar os valores dos dados, criar os construtores de cada classe e ainda as respetivas funes de

    insertDB e updateDB. Posto isto, na pgina details.php, na qual se encontra o formulrio

    que inclui os detalhes do produto (o nmero de srie do produto, os vrios componentes que o

    compe, a devida identificao do padro e ainda o lote no qual est includo o dado item), quando

    o utilizador clica no con da lupa presente na listagem dos produtos montados so apresentados os

    detalhes do item. Estes surgem, sob a forma de formulrio, numa janela popup, isto , uma janela

    que passa para primeiro plano na interface, criada atravs da funo presente na biblioteca JQuery

    (# div).dialog() e que responsvel por dimensionar a janela e configurar as aes dos botes

    Ok e Cancelar presentes na mesma. Foi definido que o Cancelar responsvel pelo fecho da

    janela e o OK realiza a submisso dos dados nos inputs do formulrio. O formulrio invocado

    atravs de outra funo JQuery, (# div).load() que ir carregar o script details.php.

    Depois de executado o script so apresentados vrios inputs no formulrio, que podem ser

    editveis ou apenas alvo de consulta. Os campos apresentados so o nmero de srie do produto,

    os vrios extras que o compe, a devida identificao do padro e ainda o lote no qual est includo

    o dado item.

    No script details.php utilizado como parmetro o id do item selecionado. Com este id,

    invocada a funo GetById() da classe ProductItem, que cria o objeto desta classe com

    os respetivos parmetros obtidos da BD. Destes, so utilizados o nmero de srie do produto

    e o lote do qual advm, sendo estes dados apresentados nos respetivos inputs. Em seguida, so

    executadas duas funes da classe Extra, a primeira que permite a obteno do nmero de extras

    associados ao item em questo e a segunda que obtm um vetor de objetos da classe Extra que

    esto associados ao item. Os nomes dos tipos de componentes so adquiridos atravs do objeto

  • Implementao dos Requisitos 39

    ExtraType associado ao parmetro extra_ extraTypeld, presente na tabela Extra. De referir

    ainda que os inputs dos extras so dinmicos, isto , surgem de acordo com o nmero obtido

    na funo GetCoutforProductItem(). Estes aparecem dentro de um ciclo que itera tantas vezes

    quantos extras existirem no item. Os ids dos inputs associados aos nmeros de srie dos extras so

    obtidos sobre a forma de vetor, a fim de obter um nmero diferente de inputs, consoante o item e

    a informao do extra padro, que recebida tambm na forma de vetor e na qual indicado, na

    posio [0], o id do componente no qual o radio option est selecionado, ou seja, se o componente

    selecionado tiver o id igual a 3, o vetor default[] ter na posio [0] o valor 3. So enviados

    ainda dois campos do tipo hidden, ou seja, que no aparecem na interface, estando num contida a

    informao do nmero de componentes e no outro o id do componente presente em cada posio

    do vetor.

    Com tudo isto acima explicado, o formulrio surge na forma:

    Figura 5.2: Exemplo de Detalhes de um Item

    Foi ainda criada a ao que permite receber e manipular os dados introduzidos no formulrio e

    que ocorre se os campos forem alterados e o boto OK for submetido. A ao deste formulrio

    est contida no update.php na pasta ProductItem, que primeiramente recebe os parmetros

    do formulrio. Os parmetros do nmero de srie do produto e do lote so recebidos e, atravs

    dos mtodos setSerialNumber e setLot, so alterados no construtor, que depois invocado na

    funo updateDB(), presente na mesma classe. Feita esta atualizao executado um ciclo com

    um nmero de componentes que foi passado como hidden, que a cada iterao atualiza o nmero

    identificativo do mesmo e compara a posio do valor do vetor extrald[], tambm enviado como

    hidden, com o nmero presente na primeira posio do vetor default[]. Caso sejam iguais, o

    parmetro default desse item alterado para 1, caso contrrio o valor 0. Esta condio permite

    alterar o componente padro escolhido, pois como s um pode ser escolhido, temos, no s de pr

    o escolhido a 1, como tambm o que estava escolhido anteriormente a 0.

    Ainda neste requisito, foi alterada a listagem de produtos montados. Onde anteriormente

    aparecia o campo presente na tabela productItem como productItemComposite, uma vez que

  • 40 Implementao dos Requisitos

    era s um, agora executada uma funo que verifica qual o extra padro de cada item e o

    apresenta na respetiva coluna.

    2.1. Definir Tipos de Componentes para cada Modelo

    Para pr-definir a lista de componentes que podero ser associados a cada modelo de produto,

    foi criada na BD uma tabela ProductModelExtraType que composta pelo id do tipo de com-

    ponente e do modelo do produto. Neste momento, os dados desta tabela tero de ser inseridos

    diretamente na BD.

    Foi criada ainda uma vista ProductModelExtraTypeView, que associa a informao existente

    nas tabelas dos tipos de extras, dos extras e do modelo do produto e permite, de forma fcil, saber

    quantos e quais os tipos de componentes que possvel associar a um item, assim como obter tanto

    o nmero identificativo do componente como qual dos componentes foi escolhido como padro.

    3. Associar uma Lista de Falhas aos Testes

    Ao nvel da BD j existia previamente uma tabela para as falhas TestFail, contudo de nada

    servia, uma vez que ainda no era utilizada no SI. Existia tambm uma tabela TestFailureType,

    na qual esto contidas as chaves primrias, correspondentes aos ids, das tabelas Test, TestFail

    e ProductModel. Para a tabela TestFailureType, foi criada uma classe CallFailTest, onde

    declarado o seu construtor, e uma funo para inserir os valores na BD.

    Esta funcionalidade foi adicionada pgina de testes, atravs do smbolo + presente a seguir

    a cada teste apresentado. Cada teste tem tambm uma caixa de seleo, na qual esto apresentadas

    as falhas correspondentes ao mesmo.

    Para adicionar uma nova falha, foi criado um formulrio HTML, utilizando o mesmo mtodo

    de criao de formulrios da associao de produtos referida anteriormente, isto , utilizando a

    funo JS invocada atravs do evento onClick.

    Figura 5.3: Formulrio para Adicionar Nova Falha

  • Implementao dos Requisitos 41

    Neste formulrio, pedido um nome para a falha e uma descrio da mesma, que possibi-

    lita, por exemplo, identificar qual componente associado aquela falha para posteriormente obter

    a informao sobre o componente que falha mais vezes, mas tambm pode servir apenas para

    descrever os sinais necessrios para assumir aquela falha. igualmente necessrio atribuir um

    nmero de ordem, que ser utilizado para a ordenao da lista de falhas apresentadas.

    Depois de submetidos os dados introduzidos, a ao faz a leitura dos mesmos e ainda recebe

    o id do teste em questo, assim como o modelo do produto, ambos enviados como inputs do

    tipo hidden. Em seguida, criado um objeto da classe TestFail e, atravs dos mtodos set,

    so atribudos os valores aos parmetros corretos. Por fim, invocada a funo responsvel pela

    insero na BD.

    Depois de inserida a falha, criado um objeto da classe CallFailTest que utiliza o id da

    falha que acabou de ser inserida, o modelo do produto e o id do teste utilizados como parmetros

    hidden, sendo estes dados inseridos tambm na BD. S depois se d por concluda a insero da

    falha.

    O passo seguinte foi a criao de uma vista que permitisse associar e obter, numa nica tabela,

    a informao sobre os testes que contm uma ou mais falhas, quais os parmetros dessa falha e

    ainda qual o modelo do produto a que pertence esse tipo de falhas. Esta vista ser utilizada na

    funo responsvel pela pesquisa na BD das falhas que existem associadas ao id do teste e do

    modelo do produto, que so enviados como parmetros da funo. Estes parmetros so utilizados

    nas clusulas Where da query.

    Por ltimo, quando o relatrio submetido, enviado, para a ao de insero do relatrio na

    BD, um vetor com os ids das falhas assinaladas em cada teste, o que ir permitir carregar as falhas

    selecionadas quando o relatrio for solicitado.

    4. Adicionar Novos Tipos de Produtos atravs da Interface

    Na pgina product.php, responsvel pela produo da interface do separador Produto pre-

    sente no menu, foi adicionado um con que aps ser clicado, abre uma janela popup, que cri-

    ada com o mesmo mtodo das anteriores. O formulrio que carregado atravs da funo (#

    div).load(), responsvel pelo contedo HTML est presente no ficheiro addProduct.php. Neste

    ficheiro, foram criados os dois inputs necessrios para a elaborao de um novo produto, a saber

    o nome do produto e o nome da imagem do produto com a respetiva extenso, que dever estar

    contida na pasta de imagens presente no diretrio de pastas do SI.

    Depois de ser submetido o formulrio, foi ainda criada uma ao de insert que ir receber

    os dados inseridos pelo utilizador e elaborar um objeto da classe Product (new Product),

    utilizando os mtodos setName($value) e setIcon($value), onde $value substitudo pelos

    dados inseridos.

    No final, regressa pgina inicial, apresentando a mensagem Produto Inserido com Sucesso

    no caso de todo este processo ter sido bem sucedido ou Falha a Inserir Produto, no caso da

    ocorrncia de algum erro.

  • 42 Implementao dos Requisitos

    5. Adicionar Verses de Firmware (FW) e Hardware (HW) atravs daInterface

    Quando feito o acesso pgina de administrador, so expostas duas opes: aceder p-

    gina de estatsticas, como j foi anterior